Implementing the MachineInstrBuilder class
The MachineInstrBuilder
class exposes a function called BuildMI()
. This function is used to build machine instructions.
How to do it…
Machine instructions are created by using the BuildMI
functions, located in the include/llvm/CodeGen/MachineInstrBuilder.h
file. The BuildMI
functions make it easy to build arbitrary machine instructions.
For example, you can use BuildMI
in code snippets for the following purposes:
To create a
DestReg = mov 42
(rendered in the x86 assembly asmov DestReg, 42
) instruction:MachineInstr *MI = BuildMI(X86::MOV32ri, 1, DestReg).addImm(42);
To create the same instruction, but insert it at the end of a basic block:
MachineBasicBlock &MBB = BuildMI(MBB, X86::MOV32ri, 1, DestReg).addImm(42);
To create the same instruction, but insert it before a specified iterator point:
MachineBasicBlock::iterator MBBI = BuildMI(MBB, MBBI, X86::MOV32ri, 1, DestReg).addImm(42)
To create a self-looping branch instruction:
BuildMI(MBB, X86::JNE,...