FP EXTLOAD is not support on all archs, expand to LOAD and FP_EXTEND
authorAndrew Lenharth <andrewl@lenharth.org>
Thu, 30 Jun 2005 19:22:37 +0000 (19:22 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Thu, 30 Jun 2005 19:22:37 +0000 (19:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22319 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 0f168435da4200c2518525f23bed04a7b9aa92fc..bf97fea2a45572ee0678350bfec4110276bcc8e0 100644 (file)
@@ -522,6 +522,15 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
       AddLegalizedOperand(SDOperand(Node, 1), Result.getValue(1));
       return Result.getValue(Op.ResNo);
     case TargetLowering::Expand:
+      //f64 = EXTLOAD f32 should expand to LOAD, FP_EXTEND
+      if (SrcVT == MVT::f32 && Node->getValueType(0) == MVT::f64) {
+        SDOperand Load = DAG.getLoad(SrcVT, Tmp1, Tmp2, Node->getOperand(2));
+        Result = 
+          DAG.getNode(ISD::FP_EXTEND, Node->getValueType(0), Load, SrcVT);
+        if (Op.ResNo)
+          return Load.getValue(1);
+        return Result;
+      }
       assert(Node->getOpcode() != ISD::EXTLOAD &&
              "EXTLOAD should always be supported!");
       // Turn the unsupported load into an EXTLOAD followed by an explicit