diff options
Diffstat (limited to 'test/CodeGen/AArch64/cond-sel.ll')
-rw-r--r-- | test/CodeGen/AArch64/cond-sel.ll | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/test/CodeGen/AArch64/cond-sel.ll b/test/CodeGen/AArch64/cond-sel.ll index 3051cf53fdf8f..9c1dfeb3c8d3f 100644 --- a/test/CodeGen/AArch64/cond-sel.ll +++ b/test/CodeGen/AArch64/cond-sel.ll @@ -1,24 +1,25 @@ ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s +; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP %s @var32 = global i32 0 @var64 = global i64 0 define void @test_csel(i32 %lhs32, i32 %rhs32, i64 %lhs64) { -; CHECK: test_csel: +; CHECK-LABEL: test_csel: %tst1 = icmp ugt i32 %lhs32, %rhs32 %val1 = select i1 %tst1, i32 42, i32 52 store i32 %val1, i32* @var32 -; CHECK: movz [[W52:w[0-9]+]], #52 -; CHECK: movz [[W42:w[0-9]+]], #42 +; CHECK-DAG: movz [[W52:w[0-9]+]], #52 +; CHECK-DAG: movz [[W42:w[0-9]+]], #42 ; CHECK: csel {{w[0-9]+}}, [[W42]], [[W52]], hi %rhs64 = sext i32 %rhs32 to i64 %tst2 = icmp sle i64 %lhs64, %rhs64 %val2 = select i1 %tst2, i64 %lhs64, i64 %rhs64 store i64 %val2, i64* @var64 -; CHECK: cmp [[LHS:x[0-9]+]], [[RHS:w[0-9]+]], sxtw -; CHECK: sxtw [[EXT_RHS:x[0-9]+]], [[RHS]] +; CHECK-DAG: cmp [[LHS:x[0-9]+]], [[RHS:w[0-9]+]], sxtw +; CHECK-DAG: sxtw [[EXT_RHS:x[0-9]+]], [[RHS]] ; CHECK: csel {{x[0-9]+}}, [[LHS]], [[EXT_RHS]], le ret void @@ -26,10 +27,11 @@ define void @test_csel(i32 %lhs32, i32 %rhs32, i64 %lhs64) { } define void @test_floatcsel(float %lhs32, float %rhs32, double %lhs64, double %rhs64) { -; CHECK: test_floatcsel: +; CHECK-LABEL: test_floatcsel: %tst1 = fcmp one float %lhs32, %rhs32 ; CHECK: fcmp {{s[0-9]+}}, {{s[0-9]+}} +; CHECK-NOFP-NOT: fcmp %val1 = select i1 %tst1, i32 42, i32 52 store i32 %val1, i32* @var32 ; CHECK: movz [[W52:w[0-9]+]], #52 @@ -40,6 +42,7 @@ define void @test_floatcsel(float %lhs32, float %rhs32, double %lhs64, double %r %tst2 = fcmp ueq double %lhs64, %rhs64 ; CHECK: fcmp {{d[0-9]+}}, {{d[0-9]+}} +; CHECK-NOFP-NOT: fcmp %val2 = select i1 %tst2, i64 9, i64 15 store i64 %val2, i64* @var64 ; CHECK: movz [[CONST15:x[0-9]+]], #15 @@ -53,7 +56,7 @@ define void @test_floatcsel(float %lhs32, float %rhs32, double %lhs64, double %r define void @test_csinc(i32 %lhs32, i32 %rhs32, i64 %lhs64) { -; CHECK: test_csinc: +; CHECK-LABEL: test_csinc: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). %tst1 = icmp ugt i32 %lhs32, %rhs32 @@ -93,7 +96,7 @@ define void @test_csinc(i32 %lhs32, i32 %rhs32, i64 %lhs64) { } define void @test_csinv(i32 %lhs32, i32 %rhs32, i64 %lhs64) { -; CHECK: test_csinv: +; CHECK-LABEL: test_csinv: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). %tst1 = icmp ugt i32 %lhs32, %rhs32 @@ -133,7 +136,7 @@ define void @test_csinv(i32 %lhs32, i32 %rhs32, i64 %lhs64) { } define void @test_csneg(i32 %lhs32, i32 %rhs32, i64 %lhs64) { -; CHECK: test_csneg: +; CHECK-LABEL: test_csneg: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). %tst1 = icmp ugt i32 %lhs32, %rhs32 @@ -173,7 +176,7 @@ define void @test_csneg(i32 %lhs32, i32 %rhs32, i64 %lhs64) { } define void @test_cset(i32 %lhs, i32 %rhs, i64 %lhs64) { -; CHECK: test_cset: +; CHECK-LABEL: test_cset: ; N.b. code is not optimal here (32-bit csinc would be better) but ; incoming DAG is too complex @@ -194,7 +197,7 @@ define void @test_cset(i32 %lhs, i32 %rhs, i64 %lhs64) { } define void @test_csetm(i32 %lhs, i32 %rhs, i64 %lhs64) { -; CHECK: test_csetm: +; CHECK-LABEL: test_csetm: %tst1 = icmp eq i32 %lhs, %rhs %val1 = sext i1 %tst1 to i32 |