TargetInstrDescriptors = NULL; // reset global variable
}
+/// findTiedToSrcOperand - Returns the operand that is tied to the specified
+/// dest operand. Returns -1 if there isn't one.
+int
+TargetInstrInfo::findTiedToSrcOperand(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.
assert(MI->getOperand(1).isRegister() && MI->getOperand(2).isRegister() &&
"This only knows how to commute register operands so far");
unsigned Reg1 = MI->getOperand(1).getReg();
- unsigned Reg2 = MI->getOperand(1).getReg();
+ unsigned Reg2 = MI->getOperand(2).getReg();
MI->getOperand(2).setReg(Reg1);
MI->getOperand(1).setReg(Reg2);
return MI;