[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcOptInfo.cpp
Vikram Adve
vadve at cs.uiuc.edu
Sat Oct 12 19:21:01 PDT 2002
Changes in directory llvm/lib/Target/Sparc:
SparcOptInfo.cpp updated: 1.2 -> 1.3
---
Log message:
Test both operands of ADD or OR for zero to find useless copies.
---
Diffs of the changes:
Index: llvm/lib/Target/Sparc/SparcOptInfo.cpp
diff -u llvm/lib/Target/Sparc/SparcOptInfo.cpp:1.2 llvm/lib/Target/Sparc/SparcOptInfo.cpp:1.3
--- llvm/lib/Target/Sparc/SparcOptInfo.cpp:1.2 Fri Sep 27 09:30:49 2002
+++ llvm/lib/Target/Sparc/SparcOptInfo.cpp Sat Oct 12 19:20:15 2002
@@ -29,19 +29,29 @@
}
else if (MI->getOpCode() == ADD || MI->getOpCode() == OR)
{
- return (/* operand 0 are operand 2 are allocated to the same register */
- (MI->getOperand(0).getAllocatedRegNum() ==
- MI->getOperand(2).getAllocatedRegNum()) &&
-
- (/* and: either operand 1 is register %g0 */
- (MI->getOperand(1).hasAllocatedReg() &&
- MI->getOperand(1).getAllocatedRegNum() ==
- target.getRegInfo().getZeroRegNum()) ||
-
- /* or operand 1 == 0 */
- (MI->getOperand(1).getOperandType()
- == MachineOperand::MO_SignExtendedImmed &&
- MI->getOperand(1).getImmedValue() == 0)));
+ unsigned srcWithDestReg;
+
+ for (srcWithDestReg = 0; srcWithDestReg < 2; ++srcWithDestReg)
+ if (MI->getOperand(srcWithDestReg).hasAllocatedReg() &&
+ MI->getOperand(srcWithDestReg).getAllocatedRegNum()
+ == MI->getOperand(2).getAllocatedRegNum())
+ break;
+
+ if (srcWithDestReg == 2)
+ return false;
+ else
+ {/* else source and dest are allocated to the same register */
+ unsigned otherOp = 1 - srcWithDestReg;
+ return (/* either operand otherOp is register %g0 */
+ (MI->getOperand(otherOp).hasAllocatedReg() &&
+ MI->getOperand(otherOp).getAllocatedRegNum() ==
+ target.getRegInfo().getZeroRegNum()) ||
+
+ /* or operand otherOp == 0 */
+ (MI->getOperand(otherOp).getOperandType()
+ == MachineOperand::MO_SignExtendedImmed &&
+ MI->getOperand(otherOp).getImmedValue() == 0));
+ }
}
else
return false;
More information about the llvm-commits
mailing list