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