[llvm-commits] CVS: llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sat Dec 17 14:30:12 PST 2005
Changes in directory llvm/lib/Target/SparcV8:
SparcV8ISelDAGToDAG.cpp updated: 1.7 -> 1.8
---
Log message:
implement MULHU/MULHS for 64-bit multiplies
---
Diffs of the changes: (+11 -0)
SparcV8ISelDAGToDAG.cpp | 11 +++++++++++
1 files changed, 11 insertions(+)
Index: llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
diff -u llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.7 llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.8
--- llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.7 Sat Dec 17 15:25:27 2005
+++ llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp Sat Dec 17 16:30:00 2005
@@ -278,6 +278,17 @@
switch (N->getOpcode()) {
default: break;
+ case ISD::MULHU:
+ case ISD::MULHS: {
+ SDOperand MulLHS = Select(N->getOperand(0));
+ SDOperand MulRHS = Select(N->getOperand(1));
+ unsigned Opcode = N->getOpcode() == ISD::MULHU ? V8::UMULrr : V8::SMULrr;
+ SDOperand Mul = CurDAG->getTargetNode(Opcode, MVT::i32, MVT::Flag,
+ MulLHS, MulRHS);
+ // The high part is in the Y register.
+ return CurDAG->SelectNodeTo(N, V8::RDY, MVT::i32, Mul.getValue(1));
+ }
+
case ISD::RET: {
if (N->getNumOperands() == 2) {
SDOperand Chain = Select(N->getOperand(0)); // Token chain.
More information about the llvm-commits
mailing list