FP select improvements (and likely breakage), oh and crazy people might want to *return* floating point values.  Don't see why myself


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24658 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
index 910c85e..065cb11 100644
--- a/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
+++ b/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
@@ -287,6 +287,10 @@
       if (N->getOperand(1).getValueType() == MVT::i64) {
         Chain = CurDAG->getCopyToReg(Chain, Alpha::R0, Val, InFlag);
         InFlag = Chain.getValue(1);
+      } else if (N->getOperand(1).getValueType() == MVT::f64 ||
+                 N->getOperand(1).getValueType() == MVT::f32) {
+        Chain = CurDAG->getCopyToReg(Chain, Alpha::F0, Val, InFlag);
+        InFlag = Chain.getValue(1);
       }
     }
     Chain = CurDAG->getCopyToReg(Chain, Alpha::R26, getRASaveReg(), InFlag);
@@ -397,33 +401,6 @@
     }
     break;
 
-  case ISD::SELECT:
-    if (MVT::isFloatingPoint(N->getValueType(0))) {
-      //move int to fp
-      bool isDouble = N->getValueType(0) == MVT::f64;
-      SDOperand LD,
-        cond = Select(N->getOperand(0)),
-        TV = Select(N->getOperand(1)),
-        FV = Select(N->getOperand(2));
-      
-      if (AlphaLowering.hasITOF()) {
-        LD = CurDAG->getNode(AlphaISD::ITOFT_, MVT::f64, cond);
-      } else {
-        int FrameIdx =
-          CurDAG->getMachineFunction().getFrameInfo()->CreateStackObject(8, 8);
-        SDOperand FI = CurDAG->getFrameIndex(FrameIdx, MVT::i64);
-        SDOperand ST = CurDAG->getTargetNode(Alpha::STQ, MVT::Other, 
-                                             cond, FI, CurDAG->getRegister(Alpha::R31, MVT::i64));
-        LD = CurDAG->getTargetNode(Alpha::LDT, MVT::f64, FI, 
-                                   CurDAG->getRegister(Alpha::R31, MVT::i64),
-                                   ST);
-      }
-      SDOperand FP = CurDAG->getTargetNode(isDouble?Alpha::FCMOVEQT:Alpha::FCMOVEQS,
-                                           MVT::f64, TV, FV, LD);
-      return FP;
-    }
-    break;
-
   }
 
   return SelectCode(Op);