mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +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
|
/// getOperandConstraint - Returns the value of the specific constraint if
|
||||||
/// it is set. Returns -1 if it is not set.
|
/// it is set. Returns -1 if it is not set.
|
||||||
int getOperandConstraint(MachineOpCode Opcode, unsigned OpNum,
|
int getOperandConstraint(MachineOpCode Opcode, unsigned OpNum,
|
||||||
OperandConstraint Constraint) {
|
OperandConstraint Constraint) const {
|
||||||
assert(OpNum < get(Opcode).numOperands &&
|
assert(OpNum < get(Opcode).numOperands &&
|
||||||
"Invalid operand # of TargetInstrInfo");
|
"Invalid operand # of TargetInstrInfo");
|
||||||
if (get(Opcode).OpInfo[OpNum].Constraints & (1 << Constraint)) {
|
if (get(Opcode).OpInfo[OpNum].Constraints & (1 << Constraint)) {
|
||||||
@ -240,6 +240,10 @@ public:
|
|||||||
return -1;
|
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
|
/// getDWARF_LABELOpcode - Return the opcode of the target's DWARF_LABEL
|
||||||
/// instruction if it has one. This is used by codegen passes that update
|
/// instruction if it has one. This is used by codegen passes that update
|
||||||
/// DWARF line number info as they modify the code.
|
/// DWARF line number info as they modify the code.
|
||||||
|
@ -38,6 +38,18 @@ TargetInstrInfo::~TargetInstrInfo() {
|
|||||||
TargetInstrDescriptors = NULL; // reset global variable
|
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
|
// commuteInstruction - The default implementation of this method just exchanges
|
||||||
// operand 1 and 2.
|
// operand 1 and 2.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user