*** empty log message ***

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5138 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner committed 2002-12-25 05:00:49 +00:00
1 parent 03ab7af4de
commit 56cf63f2f6
1 file changed
+20 -12
+20 -12
View File
@@ -80,6 +80,7 @@ public:
MO_UnextendedImmed, MO_UnextendedImmed,
MO_PCRelativeDisp, MO_PCRelativeDisp,
MO_MachineBasicBlock, // MachineBasicBlock reference MO_MachineBasicBlock, // MachineBasicBlock reference
MO_FrameIndex, // Abstract Stack Frame Index
}; };
private: private:
@@ -182,28 +183,27 @@ public:
bool isImmediate() const { bool isImmediate() const {
return opType == MO_SignExtendedImmed || opType == MO_UnextendedImmed; 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 || assert(opType == MO_VirtualRegister || opType == MO_CCRegister ||
opType == MO_PCRelativeDisp); isPCRelativeDisp());
return value; return value;
} }
inline Value* getVRegValueOrNull() const { Value* getVRegValueOrNull() const {
return (opType == MO_VirtualRegister || opType == MO_CCRegister || 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); assert(opType == MO_MachineRegister);
return regNum; return regNum;
} }
inline int64_t getImmedValue () const { int64_t getImmedValue() const { assert(isImmediate()); return immedVal; }
assert(isImmediate());
return immedVal;
}
MachineBasicBlock *getMachineBasicBlock() const { MachineBasicBlock *getMachineBasicBlock() const {
assert(isMachineBasicBlock() && "Can't get MBB in non-MBB operand!"); assert(isMachineBasicBlock() && "Can't get MBB in non-MBB operand!");
return MBB; return MBB;
} }
unsigned getFrameIndex() const { assert(isFrameIndex()); return immedVal; }
bool opIsUse () const { return (flags & USEDEFMASK) == 0; } bool opIsUse () const { return (flags & USEDEFMASK) == 0; }
bool opIsDef () const { return flags & DEFFLAG; } bool opIsDef () const { return flags & DEFFLAG; }
@@ -214,20 +214,20 @@ public:
bool opLoBits64 () const { return flags & LOFLAG64; } bool opLoBits64 () const { return flags & LOFLAG64; }
// used to check if a machine register has been allocated to this operand // used to check if a machine register has been allocated to this operand
inline bool hasAllocatedReg() const { bool hasAllocatedReg() const {
return (regNum >= 0 && return (regNum >= 0 &&
(opType == MO_VirtualRegister || opType == MO_CCRegister || (opType == MO_VirtualRegister || opType == MO_CCRegister ||
opType == MO_MachineRegister)); opType == MO_MachineRegister));
} }
// used to get the reg number if when one is allocated // 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 || assert(opType == MO_VirtualRegister || opType == MO_CCRegister ||
opType == MO_MachineRegister); opType == MO_MachineRegister);
return regNum; return regNum;
} }
inline unsigned getReg() const { unsigned getReg() const {
assert(hasAllocatedReg() && "Cannot call MachineOperand::getReg()!"); assert(hasAllocatedReg() && "Cannot call MachineOperand::getReg()!");
return regNum; return regNum;
} }
@@ -511,6 +511,14 @@ public:
operands.push_back(MachineOperand(MBB)); 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, unsigned substituteValue(const Value* oldVal, Value* newVal,
bool defsOnly = true); bool defsOnly = true);