LLVM compiler infrastructure for VLIW architectures [closed]
We don’t allow questions seeking recommendations for books, tools, soft开发者_如何转开发ware libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this questionDo you know how strong VLIW architectures (or EPIC, like Itanium) support exists in LLVM compiler infrastructure?
Are there good documents/slides materials on this?
There is no good VLIW support in the base LLVM at the moment. / 2010-11
Some useful posts: http://old.nabble.com/VLIW-Scheduling-td857833.html
http://old.nabble.com/vliw-compatability-td27935919.html
UPDATE / 2012-01
LLVM added (seems after 3.0 release; by Anshuman Dasgupta) initial support of an "VLIW packetizer" aka DFApacketizer to target-independent codegenerator support infrastructure: http://llvm.org/docs/CodeGenerator.html#vliw_packetizer
To generate tables for a VLIW target, add TargetGenDFAPacketizer.inc as a target to the Makefile in the target directory. The exported API provides three functions:
- DFAPacketizer::clearResources(),
- DFAPacketizer::reserveResources(MachineInstr *MI), and
- DFAPacketizer::canReserveResources(MachineInstr *MI).
These functions allow a target packetizer to add an instruction to an existing packet and to check whether an instruction can be added to a packet. See
llvm/CodeGen/DFAPacketizer.h
for more information.
Machine Instruction Bundle in LLVM thread by Evan Cheng in mailing list com.googlegroups.llvm-dev from dec 2 2011, describing basic LLVM VLIW (Bundle) support. They are planned to be in LLVM 3.1, and are documented here.
Also, in 3.1 "new TableGen infrastructure to support bundling for Very Long Instruction Word (VLIW) architectures." is added.
There are some VLIW compilers based on LLVM today; but target-independent (generic) VLIW support is in the very beginning of its long path.
UPDATE 2012/12
There are some slides from Quic: http://llvm.org/devmtg/2012-11/Larin-Trick-Scheduling.pdf
精彩评论