[LLVMdev] Assembly Printer
mmms1841 at gmail.com
Fri Jan 1 12:51:34 PST 2010
I am trying to understand how LLVM does code generation and I have a couple
I am using LLVM 2.6.
if I want to change the name of an instruction, all I need to do is to
modify the XXXInstrInfo.td, right?
Using Sparc as an example, if I wanted to output "mysra" instead of "sra",
in SparcInstrInfo.td, I would write,
defm SRA : F3_12<"mysra", 0b100111, sra>;
Is this correct?
When I run llc with option -march=sparc, after I make the modification, it
still outputs "sra", not "mysra". I looked into SparcGenAsmWriter.inc, and
made sure that string AsmStrs includes "mysra". However, when I run gdb and
do "print AsmStrs + (Bits & 1023)", it prints "sra".
Does this make sense or am I just overlooking something?
The second question is about pattern matching of instructions.
I found that some of the target instructions do not have corresponding
patterns to match.
For example, in SparcInstrInfo.td, "udiv" and "sdiv" don't seem to have any
defm UDIV : F3_12np<"udiv", 0b001110>;
defm SDIV : F3_12np<"sdiv", 0b001111>;
Is this because these instructions are handled differently from other
instructions in SparcISelDAGToDAG.cpp?
In function SparcDAGToDAGISel::Select(SDValue Op), instruction selection for
"sdiv" and "udiv" is done in the switch-case statement, while SelectCode(Op)
takes care of the other instructions*.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev