diff options
author | Craig Topper <craig.topper@intel.com> | 2018-02-26 19:36:37 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-02-26 19:36:37 +0000 |
commit | 43fb1cdef78a17bed21369cc334913f2393cc15c (patch) | |
tree | 3f8f7b98e7bb55ff4ee28b9434a7f336616b2e92 | |
parent | b284e8b9b46375c8b1ab55e3a8746242a8284535 (diff) | |
download | bcm5719-llvm-43fb1cdef78a17bed21369cc334913f2393cc15c.tar.gz bcm5719-llvm-43fb1cdef78a17bed21369cc334913f2393cc15c.zip |
[InstCombine] Add test cases with vector constants to fpextend.ll
llvm-svn: 326115
-rw-r--r-- | llvm/test/Transforms/InstCombine/fpextend.ll | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/fpextend.ll b/llvm/test/Transforms/InstCombine/fpextend.ll index 4f5e8e121a3..30930ff71c2 100644 --- a/llvm/test/Transforms/InstCombine/fpextend.ll +++ b/llvm/test/Transforms/InstCombine/fpextend.ll @@ -3,6 +3,7 @@ @X = external global float @Y = external global float +@Z = external global <2 x float> define void @test() nounwind { ; CHECK-LABEL: @test( @@ -77,3 +78,43 @@ entry: store float %tmp34, float* @X, align 4 ret void } + +; Test with vector splat constant +define void @test5() nounwind { +; CHECK-LABEL: @test5( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[TMP:%.*]] = load <2 x float>, <2 x float>* @Z, align 8 +; CHECK-NEXT: [[TMP1:%.*]] = fpext <2 x float> [[TMP]] to <2 x double> +; CHECK-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], zeroinitializer +; CHECK-NEXT: [[TMP34:%.*]] = fptrunc <2 x double> [[TMP3]] to <2 x float> +; CHECK-NEXT: store <2 x float> [[TMP34]], <2 x float>* @Z, align 8 +; CHECK-NEXT: ret void +; +entry: + %tmp = load <2 x float>, <2 x float>* @Z, align 4 + %tmp1 = fpext <2 x float> %tmp to <2 x double> + %tmp3 = fadd <2 x double> %tmp1, <double 0.000000e+00, double 0.000000e+00> + %tmp34 = fptrunc <2 x double> %tmp3 to <2 x float> + store <2 x float> %tmp34, <2 x float>* @Z, align 4 + ret void +} + +; Test with a non-splat constant +define void @test6() nounwind { +; CHECK-LABEL: @test6( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[TMP:%.*]] = load <2 x float>, <2 x float>* @Z, align 8 +; CHECK-NEXT: [[TMP1:%.*]] = fpext <2 x float> [[TMP]] to <2 x double> +; CHECK-NEXT: [[TMP3:%.*]] = fadd <2 x double> [[TMP1]], <double 0.000000e+00, double -0.000000e+00> +; CHECK-NEXT: [[TMP34:%.*]] = fptrunc <2 x double> [[TMP3]] to <2 x float> +; CHECK-NEXT: store <2 x float> [[TMP34]], <2 x float>* @Z, align 8 +; CHECK-NEXT: ret void +; +entry: + %tmp = load <2 x float>, <2 x float>* @Z, align 4 + %tmp1 = fpext <2 x float> %tmp to <2 x double> + %tmp3 = fadd <2 x double> %tmp1, <double 0.000000e+00, double -0.000000e+00> + %tmp34 = fptrunc <2 x double> %tmp3 to <2 x float> + store <2 x float> %tmp34, <2 x float>* @Z, align 4 + ret void +} |