| Chris Lattner | 9562add | 2002-11-17 21:03:35 +0000 | [diff] [blame] | 1 | //===-- X86InstrBuilder.h - Functions to aid building x86 insts -*- C++ -*-===// |
| 2 | // |
| 3 | // This file exposes functions that may be used with BuildMI from the |
| 4 | // MachineInstrBuilder.h file to handle X86'isms in a clean way. |
| 5 | // |
| 6 | // The BuildMem function may be used with the BuildMI function to add entire |
| 7 | // memory references in a single, typed, function call. X86 memory references |
| 8 | // can be very complex expressions (described in the README), so wrapping them |
| 9 | // up behind an easier to use interface makes sense. Descriptions of the |
| 10 | // functions are included below. |
| 11 | // |
| 12 | //===----------------------------------------------------------------------===// |
| 13 | |
| 14 | #ifndef X86INSTRBUILDER_H |
| 15 | #define X86INSTRBUILDER_H |
| 16 | |
| 17 | #include "llvm/CodeGen/MachineInstrBuilder.h" |
| 18 | |
| 19 | /// addDirectMem - This function is used to add a direct memory reference to the |
| 20 | /// current instruction. Because memory references are always represented with |
| 21 | /// four values, this adds: Reg, [1, NoReg, 0] to the instruction |
| 22 | /// |
| 23 | inline const MachineInstrBuilder &addDirectMem(const MachineInstrBuilder &MIB, |
| 24 | unsigned Reg) { |
| 25 | return MIB.addReg(Reg).addZImm(1).addMReg(0).addSImm(0); |
| 26 | } |
| 27 | |
| Misha Brukman | faf0b8c | 2002-11-22 22:42:12 +0000 | [diff] [blame] | 28 | |
| 29 | /// addRegOffset - |
| 30 | /// |
| 31 | /// |
| 32 | inline const MachineInstrBuilder &addRegOffset(const MachineInstrBuilder &MIB, |
| 33 | unsigned Reg, unsigned Offset) { |
| 34 | return MIB.addReg(Reg).addZImm(1).addMReg(0).addSImm(Offset); |
| 35 | } |
| 36 | |
| Chris Lattner | 9562add | 2002-11-17 21:03:35 +0000 | [diff] [blame] | 37 | #endif |