Hi:
I want to pass some message of instructions from LLVM Internal
representation to backend code. For example, I make a flag for some
certain operands of certain instructions. How can it be passed to the
backend instructions? Which programs I should look into? Would someone
give me some idea? Thank you !
The easiest way to do this is to extend the LLVM IR itself. As a simple example of this, you can take a look at how the PHINode class has an extra 'reservedspace' member (ignore what it is used for though), or the load/store instructions track the 'isVolatile' flag.
-Chris
Hi:
I have extended the IR for adding flag. But I just want this flag to
pass through the backend machine code. I know there're several passes
like register relocation, schedualing, etc. But I think I just miss the
part which is used to "parser" the LLVM IR to machine code
instructions.
Would you give me some help? Thank you !
I have extended the IR for adding flag. But I just want this flag to
pass through the backend machine code. I know there're several passes
like register relocation, schedualing, etc. But I think I just miss the
part which is used to "parser" the LLVM IR to machine code
instructions.
The part of the code generator that converts LLVM IR to machine code IR is called the 'instruction selection' phase. You can find some documentation for it here:
http://llvm.cs.uiuc.edu/docs/CodeGenerator.html#instselect
Unfortunately the code generator is not as well documented as it should be (though this is slowly improving). The best way to see how this process works is to look at example instructions. Most of the code for lowering standard instructions is held in lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
-Chris
Hi,
In the directory of lib/CodeGen/SelectionDAG, I cann't find
SelectionDAGISel.cpp. I only have DAGBuilder.cpp and SelectionDAG.cpp.
I don't know why. My edtion is 1.4. Is it because of the edtion
difference? Thanks!
Yes, SelectionDAGISel.cpp was only added to LLVM in 1.5.
Reid.
Hi,
In the directory of lib/CodeGen/SelectionDAG, I cann't find
SelectionDAGISel.cpp. I only have DAGBuilder.cpp and SelectionDAG.cpp.
I don't know why. My edtion is 1.4. Is it because of the edtion
difference? Thanks!
Yes, please update to at least LLVM 1.5, using mainline CVS would be even better.
-Chris