aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/MachineInstr.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-12-25 05:00:49 +0000
committerChris Lattner <sabre@nondot.org>2002-12-25 05:00:49 +0000
commit56cf63f2f6db6ae47dec06489d09011ef6b0ee02 (patch)
tree94c0190b87281be72cb314ddd1b64cff7820c837 /include/llvm/CodeGen/MachineInstr.h
parent03ab7af4dec01a3003e469c458e37bbf4ce4f2f3 (diff)
*** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5138 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineInstr.h')
-rw-r--r--include/llvm/CodeGen/MachineInstr.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index b173d6a550..a7e00f7227 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -80,6 +80,7 @@ public:
MO_UnextendedImmed,
MO_PCRelativeDisp,
MO_MachineBasicBlock, // MachineBasicBlock reference
+ MO_FrameIndex, // Abstract Stack Frame Index
};
private:
@@ -182,28 +183,27 @@ public:
bool isImmediate() const {
return opType == MO_SignExtendedImmed || opType == MO_UnextendedImmed;
}
+ bool isFrameIndex() const { return opType == MO_FrameIndex; }
- inline Value* getVRegValue () const {
+ Value* getVRegValue() const {
assert(opType == MO_VirtualRegister || opType == MO_CCRegister ||
- opType == MO_PCRelativeDisp);
+ isPCRelativeDisp());
return value;
}
- inline Value* getVRegValueOrNull() const {
+ Value* getVRegValueOrNull() const {
return (opType == MO_VirtualRegister || opType == MO_CCRegister ||
- opType == MO_PCRelativeDisp)? value : NULL;
+ isPCRelativeDisp()) ? value : NULL;
}
- inline int getMachineRegNum() const {
+ int getMachineRegNum() const {
assert(opType == MO_MachineRegister);
return regNum;
}
- inline int64_t getImmedValue () const {
- assert(isImmediate());
- return immedVal;
- }
+ int64_t getImmedValue() const { assert(isImmediate()); return immedVal; }
MachineBasicBlock *getMachineBasicBlock() const {
assert(isMachineBasicBlock() && "Can't get MBB in non-MBB operand!");
return MBB;
}
+ unsigned getFrameIndex() const { assert(isFrameIndex()); return immedVal; }
bool opIsUse () const { return (flags & USEDEFMASK) == 0; }
bool opIsDef () const { return flags & DEFFLAG; }
@@ -214,20 +214,20 @@ public:
bool opLoBits64 () const { return flags & LOFLAG64; }
// used to check if a machine register has been allocated to this operand
- inline bool hasAllocatedReg() const {
+ bool hasAllocatedReg() const {
return (regNum >= 0 &&
(opType == MO_VirtualRegister || opType == MO_CCRegister ||
opType == MO_MachineRegister));
}
// used to get the reg number if when one is allocated
- inline int getAllocatedRegNum() const {
+ int getAllocatedRegNum() const {
assert(opType == MO_VirtualRegister || opType == MO_CCRegister ||
opType == MO_MachineRegister);
return regNum;
}
- inline unsigned getReg() const {
+ unsigned getReg() const {
assert(hasAllocatedReg() && "Cannot call MachineOperand::getReg()!");
return regNum;
}
@@ -511,6 +511,14 @@ public:
operands.push_back(MachineOperand(MBB));
}
+ /// addFrameIndexOperand - Add an abstract frame index to the instruction
+ ///
+ void addFrameIndexOperand(unsigned Idx) {
+ assert(!OperandsComplete() &&
+ "Trying to add an operand to a machine instr that is already done!");
+ operands.push_back(MachineOperand(Idx, MachineOperand::MO_FrameIndex));
+ }
+
unsigned substituteValue(const Value* oldVal, Value* newVal,
bool defsOnly = true);