1193323Sed//===-- PPCInstrBuilder.h - Aides for building PPC insts --------*- C++ -*-===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed// 10193323Sed// This file exposes functions that may be used with BuildMI from the 11193323Sed// MachineInstrBuilder.h file to simplify generating frame and constant pool 12193323Sed// references. 13193323Sed// 14193323Sed// For reference, the order of operands for memory references is: 15193323Sed// (Operand), Dest Reg, Base Reg, and either Reg Index or Immediate 16193323Sed// Displacement. 17193323Sed// 18193323Sed//===----------------------------------------------------------------------===// 19193323Sed 20193323Sed#ifndef POWERPC_INSTRBUILDER_H 21193323Sed#define POWERPC_INSTRBUILDER_H 22193323Sed 23193323Sed#include "llvm/CodeGen/MachineInstrBuilder.h" 24193323Sed 25193323Sednamespace llvm { 26193323Sed 27193323Sed/// addFrameReference - This function is used to add a reference to the base of 28193323Sed/// an abstract object on the stack frame of the current function. This 29193323Sed/// reference has base register as the FrameIndex offset until it is resolved. 30193323Sed/// This allows a constant offset to be specified as well... 31193323Sed/// 32198090Srdivackystatic inline const MachineInstrBuilder& 33193323SedaddFrameReference(const MachineInstrBuilder &MIB, int FI, int Offset = 0, 34193323Sed bool mem = true) { 35193323Sed if (mem) 36193323Sed return MIB.addImm(Offset).addFrameIndex(FI); 37193323Sed else 38193323Sed return MIB.addFrameIndex(FI).addImm(Offset); 39193323Sed} 40193323Sed 41193323Sed} // End llvm namespace 42193323Sed 43193323Sed#endif 44