Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LLVM compiler infrastructure for VLIW architectures [closed]

Do you know how strong VLIW architectures (or EPIC, like Itanium) support exists in LLVM compiler infrastructure?

Are there good documents/slides materials on this?

like image 662
osgx Avatar asked Nov 12 '10 15:11

osgx


1 Answers

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

like image 155
osgx Avatar answered Dec 26 '22 02:12

osgx