| Nate Begeman | 6cca84e | 2005-10-16 05:39:50 +0000 | [diff] [blame] | 1 | //===-- PPCInstrBuilder.h - Aides for building PPC insts --------*- C++ -*-===// | 
| Misha Brukman | b440243 | 2005-04-21 23:30:14 +0000 | [diff] [blame] | 2 | // | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 3 | //                     The LLVM Compiler Infrastructure | 
|  | 4 | // | 
| Chris Lattner | f3ebc3f | 2007-12-29 20:36:04 +0000 | [diff] [blame] | 5 | // This file is distributed under the University of Illinois Open Source | 
|  | 6 | // License. See LICENSE.TXT for details. | 
| Misha Brukman | b440243 | 2005-04-21 23:30:14 +0000 | [diff] [blame] | 7 | // | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 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: | 
| Misha Brukman | 6ff6551 | 2004-07-07 20:01:36 +0000 | [diff] [blame] | 15 | // (Operand), Dest Reg, Base Reg, and either Reg Index or Immediate | 
|  | 16 | // Displacement. | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 17 | // | 
|  | 18 | //===----------------------------------------------------------------------===// | 
|  | 19 |  | 
| Misha Brukman | 6ff6551 | 2004-07-07 20:01:36 +0000 | [diff] [blame] | 20 | #ifndef POWERPC_INSTRBUILDER_H | 
|  | 21 | #define POWERPC_INSTRBUILDER_H | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 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 | /// | 
| Anton Korobeynikov | 12b4b7c | 2009-07-16 14:03:08 +0000 | [diff] [blame] | 32 | static inline const MachineInstrBuilder& | 
| Misha Brukman | b440243 | 2005-04-21 23:30:14 +0000 | [diff] [blame] | 33 | addFrameReference(const MachineInstrBuilder &MIB, int FI, int Offset = 0, | 
| Misha Brukman | 6ff6551 | 2004-07-07 20:01:36 +0000 | [diff] [blame] | 34 | bool mem = true) { | 
|  | 35 | if (mem) | 
| Chris Lattner | fef7a2d | 2006-05-04 17:21:20 +0000 | [diff] [blame] | 36 | return MIB.addImm(Offset).addFrameIndex(FI); | 
| Misha Brukman | 6ff6551 | 2004-07-07 20:01:36 +0000 | [diff] [blame] | 37 | else | 
| Chris Lattner | fef7a2d | 2006-05-04 17:21:20 +0000 | [diff] [blame] | 38 | return MIB.addFrameIndex(FI).addImm(Offset); | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 39 | } | 
|  | 40 |  | 
| Misha Brukman | e05203f | 2004-06-21 16:55:25 +0000 | [diff] [blame] | 41 | } // End llvm namespace | 
|  | 42 |  | 
|  | 43 | #endif |