[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Dec 22 17:00:11 PST 2005



Changes in directory llvm/lib/Target/PowerPC:

PPCISelLowering.cpp updated: 1.52 -> 1.53
---
Log message:

Simplify some code by using BIT_CONVERT


---
Diffs of the changes:  (+10 -21)

 PPCISelLowering.cpp |   31 ++++++++++---------------------
 1 files changed, 10 insertions(+), 21 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp
diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.52 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.53
--- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.52	Mon Dec 19 18:26:01 2005
+++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp	Thu Dec 22 18:59:59 2005
@@ -158,39 +158,28 @@
     if (Src.getValueType() == MVT::f32)
       Src = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Src);
     
+    SDOperand Tmp;
     switch (Op.getValueType()) {
     default: assert(0 && "Unhandled FP_TO_SINT type in custom expander!");
     case MVT::i32:
-      Op = DAG.getNode(PPCISD::FCTIWZ, MVT::f64, Src);
+      Tmp = DAG.getNode(PPCISD::FCTIWZ, MVT::f64, Src);
       break;
     case MVT::i64:
-      Op = DAG.getNode(PPCISD::FCTIDZ, MVT::f64, Src);
+      Tmp = DAG.getNode(PPCISD::FCTIDZ, MVT::f64, Src);
       break;
     }
    
-    int FrameIdx =
-      DAG.getMachineFunction().getFrameInfo()->CreateStackObject(8, 8);
-    SDOperand FI = DAG.getFrameIndex(FrameIdx, MVT::i32);
-    SDOperand ST = DAG.getNode(ISD::STORE, MVT::Other, DAG.getEntryNode(),
-                               Op, FI, DAG.getSrcValue(0));
-    if (Op.getOpcode() == PPCISD::FCTIDZ) {
-      Op = DAG.getLoad(MVT::i64, ST, FI, DAG.getSrcValue(0));
-    } else {
-      FI = DAG.getNode(ISD::ADD, MVT::i32, FI, DAG.getConstant(4, MVT::i32));
-      Op = DAG.getLoad(MVT::i32, ST, FI, DAG.getSrcValue(0));
-    }
-    return Op;
+    // Convert the FP value to an int value through memory.
+    SDOperand Bits = DAG.getNode(ISD::BIT_CONVERT, MVT::i64, Tmp);
+    if (Op.getValueType() == MVT::i32)
+      Bits = DAG.getNode(ISD::TRUNCATE, MVT::i32, Bits);
+    return Bits;
   }
   case ISD::SINT_TO_FP: {
     assert(MVT::i64 == Op.getOperand(0).getValueType() && 
            "Unhandled SINT_TO_FP type in custom expander!");
-    int FrameIdx =
-      DAG.getMachineFunction().getFrameInfo()->CreateStackObject(8, 8);
-    SDOperand FI = DAG.getFrameIndex(FrameIdx, MVT::i32);
-    SDOperand ST = DAG.getNode(ISD::STORE, MVT::Other, DAG.getEntryNode(),
-                               Op.getOperand(0), FI, DAG.getSrcValue(0));
-    SDOperand LD = DAG.getLoad(MVT::f64, ST, FI, DAG.getSrcValue(0));
-    SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, LD);
+    SDOperand Bits = DAG.getNode(ISD::BIT_CONVERT, MVT::f64, Op.getOperand(0));
+    SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Bits);
     if (MVT::f32 == Op.getValueType())
       FP = DAG.getNode(ISD::FP_ROUND, MVT::f32, FP);
     return FP;






More information about the llvm-commits mailing list