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:

  1. To create a DestReg = mov 42 (rendered in the x86 assembly as mov DestReg, 42) instruction:
    MachineInstr *MI = BuildMI(X86::MOV32ri, 1, DestReg).addImm(42);
  2. 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); ...

Get LLVM Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.