1 //===-- PPCInstrBuilder.h - Aides for building PPC insts --------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file exposes functions that may be used with BuildMI from the 11 // MachineInstrBuilder.h file to simplify generating frame and constant pool 12 // references. 13 // 14 // For reference, the order of operands for memory references is: 15 // (Operand), Dest Reg, Base Reg, and either Reg Index or Immediate 16 // Displacement. 17 // 18 //===----------------------------------------------------------------------===// 19 20 #ifndef POWERPC_INSTRBUILDER_H 21 #define POWERPC_INSTRBUILDER_H 22 23 #include "llvm/CodeGen/MachineInstrBuilder.h" 24 25 namespace llvm { 26 27 /// addFrameReference - This function is used to add a reference to the base of 28 /// an abstract object on the stack frame of the current function. This 29 /// reference has base register as the FrameIndex offset until it is resolved. 30 /// This allows a constant offset to be specified as well... 31 /// 32 static inline const MachineInstrBuilder& 33 addFrameReference(const MachineInstrBuilder &MIB, int FI, int Offset = 0, 34 bool mem = true) { 35 if (mem) 36 return MIB.addImm(Offset).addFrameIndex(FI); 37 else 38 return MIB.addFrameIndex(FI).addImm(Offset); 39 } 40 41 } // End llvm namespace 42 43 #endif 44