From: Evan Cheng Date: Wed, 13 Dec 2006 03:19:57 +0000 (+0000) Subject: Expand (f64 extload f32) to (f64 fp_ext (load f32)) if f64 type action is expand. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=548f611baeb53e821e7e80f97722b048ab6b09b2;p=oota-llvm.git Expand (f64 extload f32) to (f64 fp_ext (load f32)) if f64 type action is expand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32527 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 246bbdc6a0f..6f54c19f3a0 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -4547,6 +4547,16 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){ std::swap(Lo, Hi); } else { MVT::ValueType EVT = LD->getLoadedVT(); + + if (VT == MVT::f64 && EVT == MVT::f32) { + // f64 = EXTLOAD f32 should expand to LOAD, FP_EXTEND + SDOperand Load = DAG.getLoad(EVT, Ch, Ptr, LD->getSrcValue(), + LD->getSrcValueOffset()); + // Remember that we legalized the chain. + AddLegalizedOperand(SDOperand(Node, 1), LegalizeOp(Load.getValue(1))); + ExpandOp(DAG.getNode(ISD::FP_EXTEND, VT, Load), Lo, Hi); + break; + } if (EVT == NVT) Lo = DAG.getLoad(NVT, Ch, Ptr, LD->getSrcValue(),