mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 08:46:23 +00:00
Added getTiedToSrcOperand() to check for two-address'ness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31360 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1dabb68ab4
commit
981b5bd708
@ -230,7 +230,7 @@ public:
|
||||
/// getOperandConstraint - Returns the value of the specific constraint if
|
||||
/// it is set. Returns -1 if it is not set.
|
||||
int getOperandConstraint(MachineOpCode Opcode, unsigned OpNum,
|
||||
OperandConstraint Constraint) {
|
||||
OperandConstraint Constraint) const {
|
||||
assert(OpNum < get(Opcode).numOperands &&
|
||||
"Invalid operand # of TargetInstrInfo");
|
||||
if (get(Opcode).OpInfo[OpNum].Constraints & (1 << Constraint)) {
|
||||
@ -240,6 +240,10 @@ public:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// getTiedToSrcOperand - Returns the operand that is tied to the specified
|
||||
/// dest operand. Returns -1 if there isn't one.
|
||||
int getTiedToSrcOperand(MachineOpCode Opcode, unsigned OpNum) const;
|
||||
|
||||
/// getDWARF_LABELOpcode - Return the opcode of the target's DWARF_LABEL
|
||||
/// instruction if it has one. This is used by codegen passes that update
|
||||
/// DWARF line number info as they modify the code.
|
||||
|
@ -38,6 +38,18 @@ TargetInstrInfo::~TargetInstrInfo() {
|
||||
TargetInstrDescriptors = NULL; // reset global variable
|
||||
}
|
||||
|
||||
int
|
||||
TargetInstrInfo::getTiedToSrcOperand(MachineOpCode Opc, unsigned OpNum) const {
|
||||
for (unsigned i = 0, e = getNumOperands(Opc); i != e; ++i) {
|
||||
if (i == OpNum)
|
||||
continue;
|
||||
int ti = getOperandConstraint(Opc, i, TIED_TO);
|
||||
if (ti == (int)OpNum)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
// commuteInstruction - The default implementation of this method just exchanges
|
||||
// operand 1 and 2.
|
||||
|
Loading…
Reference in New Issue
Block a user