summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-02-26 19:36:37 +0000
committerCraig Topper <craig.topper@intel.com>2018-02-26 19:36:37 +0000
commit43fb1cdef78a17bed21369cc334913f2393cc15c (patch)
tree3f8f7b98e7bb55ff4ee28b9434a7f336616b2e92
parentb284e8b9b46375c8b1ab55e3a8746242a8284535 (diff)
downloadbcm5719-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.ll41
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
+}
OpenPOWER on IntegriCloud