InstCombine: Don't assume that m_ZExt matches an Instruction
[oota-llvm.git] / test / Transforms / InstCombine / fpextend.ll
index c212128eb99ad6a9f7aa3b54dfb736ea3fa851b6..8640cd2b6f5c5ca2963ace7c209acba4a967bc5d 100644 (file)
@@ -1,4 +1,5 @@
-; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep fpext
+
+; RUN: opt < %s -instcombine -S | not grep fpext
 @X = external global float 
 @Y = external global float
 
@@ -12,6 +13,18 @@ entry:
        ret void
 }
 
+define void @test2() nounwind  {
+entry:
+       %tmp = load float* @X, align 4          ; <float> [#uses=1]
+       %tmp1 = fpext float %tmp to double              ; <double> [#uses=1]
+       %tmp2 = load float* @Y, align 4         ; <float> [#uses=1]
+       %tmp23 = fpext float %tmp2 to double            ; <double> [#uses=1]
+       %tmp5 = fmul double %tmp1, %tmp23               ; <double> [#uses=1]
+       %tmp56 = fptrunc double %tmp5 to float          ; <float> [#uses=1]
+       store float %tmp56, float* @X, align 4
+       ret void
+}
+
 define void @test3() nounwind  {
 entry:
        %tmp = load float* @X, align 4          ; <float> [#uses=1]
@@ -33,4 +46,3 @@ entry:
        store float %tmp34, float* @X, align 4
        ret void
 }
-