diff options
-rw-r--r-- | lib/Target/X86/X86InstrBuilder.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/Target/X86/X86InstrBuilder.h b/lib/Target/X86/X86InstrBuilder.h index 9f6ae1b7a8..17dc38eb6d 100644 --- a/lib/Target/X86/X86InstrBuilder.h +++ b/lib/Target/X86/X86InstrBuilder.h @@ -49,7 +49,9 @@ struct X86AddressMode { GlobalValue *GV; X86AddressMode() : BaseType(RegBase), Scale(1), IndexReg(0), Disp(0), - GV(NULL) {} + GV(NULL) { + Base.Reg = 0; + } }; /// addDirectMem - This function is used to add a direct memory reference to the @@ -73,6 +75,13 @@ inline const MachineInstrBuilder &addRegOffset(const MachineInstrBuilder &MIB, return MIB.addReg(Reg).addZImm(1).addReg(0).addSImm(Offset); } +/// addRegReg - This function is used to add a memory reference of the form: +/// [Reg + Reg]. +inline const MachineInstrBuilder &addRegReg(const MachineInstrBuilder &MIB, + unsigned Reg1, unsigned Reg2) { + return MIB.addReg(Reg1).addZImm(1).addReg(Reg2).addSImm(0); +} + inline const MachineInstrBuilder &addFullAddress(const MachineInstrBuilder &MIB, const X86AddressMode &AM) { assert (AM.Scale == 1 || AM.Scale == 2 || AM.Scale == 4 || AM.Scale == 8); |