aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp2
-rw-r--r--test/CodeGen/Generic/2011-02-27-Fpextend.ll7
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
index 182f8fcbfb..8e02e982eb 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ b/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -440,6 +440,7 @@ void DAGTypeLegalizer::SplitVectorResult(SDNode *N, unsigned ResNo) {
case ISD::FCEIL:
case ISD::FRINT:
case ISD::FNEARBYINT:
+ case ISD::FP_EXTEND:
case ISD::FP_TO_SINT:
case ISD::FP_TO_UINT:
case ISD::SINT_TO_FP:
@@ -2005,6 +2006,7 @@ bool DAGTypeLegalizer::WidenVectorOperand(SDNode *N, unsigned ResNo) {
case ISD::STORE: Res = WidenVecOp_STORE(N); break;
case ISD::FP_ROUND:
+ case ISD::FP_EXTEND:
case ISD::FP_TO_SINT:
case ISD::FP_TO_UINT:
case ISD::SINT_TO_FP:
diff --git a/test/CodeGen/Generic/2011-02-27-Fpextend.ll b/test/CodeGen/Generic/2011-02-27-Fpextend.ll
new file mode 100644
index 0000000000..38a1e4e414
--- /dev/null
+++ b/test/CodeGen/Generic/2011-02-27-Fpextend.ll
@@ -0,0 +1,7 @@
+; RUN: llc < %s
+; PR9309
+
+define <4 x double> @f_fu(<4 x float>) nounwind {
+ %float2double.i = fpext <4 x float> %0 to <4 x double>
+ ret <4 x double> %float2double.i
+}