From 5dfe3a9c3bd9091f9adecc909665d52bdd4edd8c Mon Sep 17 00:00:00 2001 From: Misha Brukman Date: Mon, 21 Jun 2004 16:55:25 +0000 Subject: Initial revision git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14283 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCInstrBuilder.h | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/Target/PowerPC/PPCInstrBuilder.h (limited to 'lib/Target/PowerPC/PPCInstrBuilder.h') diff --git a/lib/Target/PowerPC/PPCInstrBuilder.h b/lib/Target/PowerPC/PPCInstrBuilder.h new file mode 100644 index 0000000000..704e17c49b --- /dev/null +++ b/lib/Target/PowerPC/PPCInstrBuilder.h @@ -0,0 +1,53 @@ +//===-- PowerPCInstrBuilder.h - Functions to aid building PPC insts -*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file exposes functions that may be used with BuildMI from the +// MachineInstrBuilder.h file to simplify generating frame and constant pool +// references. +// +// For reference, the order of operands for memory references is: +// (Operand), Dest Reg, Base Reg, and either Reg Index or Immediate Displacement. +// +//===----------------------------------------------------------------------===// + +#ifndef PPCINSTRBUILDER_H +#define PPCINSTRBUILDER_H + +#include "llvm/CodeGen/MachineInstrBuilder.h" + +namespace llvm { + +/// addFrameReference - This function is used to add a reference to the base of +/// an abstract object on the stack frame of the current function. This +/// reference has base register as the FrameIndex offset until it is resolved. +/// This allows a constant offset to be specified as well... +/// +inline const MachineInstrBuilder & +addFrameReference(const MachineInstrBuilder &MIB, int FI, int Offset = 0, bool mem = true) { + if (mem) + return MIB.addSImm(Offset).addFrameIndex(FI); + else + return MIB.addFrameIndex(FI).addSImm(Offset); +} + +/// addConstantPoolReference - This function is used to add a reference to the +/// base of a constant value spilled to the per-function constant pool. The +/// reference has base register ConstantPoolIndex offset which is retained until +/// either machine code emission or assembly output. This allows an optional +/// offset to be added as well. +/// +inline const MachineInstrBuilder & +addConstantPoolReference(const MachineInstrBuilder &MIB, unsigned CPI, + int Offset = 0) { + return MIB.addSImm(Offset).addConstantPoolIndex(CPI); +} + +} // End llvm namespace + +#endif -- cgit v1.2.3