diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/x86-sse2.ll')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/x86-sse2.ll | 124 |
1 files changed, 50 insertions, 74 deletions
diff --git a/llvm/test/Transforms/InstCombine/x86-sse2.ll b/llvm/test/Transforms/InstCombine/x86-sse2.ll index 0fb6af48e75..132239e05a7 100644 --- a/llvm/test/Transforms/InstCombine/x86-sse2.ll +++ b/llvm/test/Transforms/InstCombine/x86-sse2.ll @@ -130,11 +130,9 @@ define double @test_cmp_sd_0(double %a, double %b) { define i32 @test_comieq_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comieq_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -146,11 +144,9 @@ define i32 @test_comieq_sd_0(double %a, double %b) { define i32 @test_comige_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comige_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comige.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comige.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -162,11 +158,9 @@ define i32 @test_comige_sd_0(double %a, double %b) { define i32 @test_comigt_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comigt_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -178,11 +172,9 @@ define i32 @test_comigt_sd_0(double %a, double %b) { define i32 @test_comile_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comile_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comile.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comile.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -194,11 +186,9 @@ define i32 @test_comile_sd_0(double %a, double %b) { define i32 @test_comilt_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comilt_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -210,11 +200,9 @@ define i32 @test_comilt_sd_0(double %a, double %b) { define i32 @test_comineq_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_comineq_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -226,11 +214,9 @@ define i32 @test_comineq_sd_0(double %a, double %b) { define i32 @test_ucomieq_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomieq_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -242,11 +228,9 @@ define i32 @test_ucomieq_sd_0(double %a, double %b) { define i32 @test_ucomige_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomige_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -258,11 +242,9 @@ define i32 @test_ucomige_sd_0(double %a, double %b) { define i32 @test_ucomigt_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomigt_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -274,11 +256,9 @@ define i32 @test_ucomigt_sd_0(double %a, double %b) { define i32 @test_ucomile_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomile_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -290,11 +270,9 @@ define i32 @test_ucomile_sd_0(double %a, double %b) { define i32 @test_ucomilt_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomilt_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -306,11 +284,9 @@ define i32 @test_ucomilt_sd_0(double %a, double %b) { define i32 @test_ucomineq_sd_0(double %a, double %b) { ; CHECK-LABEL: @test_ucomineq_sd_0 ; CHECK-NEXT: %1 = insertelement <2 x double> undef, double %a, i32 0 -; CHECK-NEXT: %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 -; CHECK-NEXT: %3 = insertelement <2 x double> undef, double %b, i32 0 -; CHECK-NEXT: %4 = insertelement <2 x double> %3, double 2.000000e+00, i32 1 -; CHECK-NEXT: %5 = tail call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %2, <2 x double> %4) -; CHECK-NEXT: ret i32 %5 +; CHECK-NEXT: %2 = insertelement <2 x double> undef, double %b, i32 0 +; CHECK-NEXT: %3 = tail call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %1, <2 x double> %2) +; CHECK-NEXT: ret i32 %3 %1 = insertelement <2 x double> undef, double %a, i32 0 %2 = insertelement <2 x double> %1, double 1.000000e+00, i32 1 %3 = insertelement <2 x double> undef, double %b, i32 0 @@ -328,17 +304,17 @@ declare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) declare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) declare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) declare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) -
-declare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>)
-
-declare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>)
-declare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>)
+ +declare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) + +declare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) +declare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) |

