diff options
Diffstat (limited to 'test/CodeGen/AArch64/cond-sel.ll')
-rw-r--r-- | test/CodeGen/AArch64/cond-sel.ll | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/test/CodeGen/AArch64/cond-sel.ll b/test/CodeGen/AArch64/cond-sel.ll index 9c1dfeb..5f81cba 100644 --- a/test/CodeGen/AArch64/cond-sel.ll +++ b/test/CodeGen/AArch64/cond-sel.ll @@ -1,25 +1,25 @@ -; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s +; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -mcpu=cyclone | FileCheck %s --check-prefix=CHECK ; 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) { +define void @test_csel(i32 %lhs32, i32 %rhs32, i64 %lhs64) minsize { ; CHECK-LABEL: test_csel: %tst1 = icmp ugt i32 %lhs32, %rhs32 %val1 = select i1 %tst1, i32 42, i32 52 store i32 %val1, i32* @var32 -; CHECK-DAG: movz [[W52:w[0-9]+]], #52 -; CHECK-DAG: movz [[W42:w[0-9]+]], #42 +; CHECK-DAG: movz [[W52:w[0-9]+]], #{{52|0x34}} +; CHECK-DAG: movz [[W42:w[0-9]+]], #{{42|0x2a}} ; 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-DAG: cmp [[LHS:x[0-9]+]], [[RHS:w[0-9]+]], sxtw -; CHECK-DAG: sxtw [[EXT_RHS:x[0-9]+]], [[RHS]] +; CHECK: sxtw [[EXT_RHS:x[0-9]+]], {{[wx]}}[[RHS:[0-9]+]] +; CHECK: cmp [[LHS:x[0-9]+]], w[[RHS]], sxtw ; CHECK: csel {{x[0-9]+}}, [[LHS]], [[EXT_RHS]], le ret void @@ -34,8 +34,8 @@ define void @test_floatcsel(float %lhs32, float %rhs32, double %lhs64, double %r ; CHECK-NOFP-NOT: fcmp %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: movz [[W52:w[0-9]+]], #{{52|0x34}} +; CHECK: movz [[W42:w[0-9]+]], #{{42|0x2a}} ; CHECK: csel [[MAYBETRUE:w[0-9]+]], [[W42]], [[W52]], mi ; CHECK: csel {{w[0-9]+}}, [[W42]], [[MAYBETRUE]], gt @@ -45,17 +45,17 @@ define void @test_floatcsel(float %lhs32, float %rhs32, double %lhs64, double %r ; CHECK-NOFP-NOT: fcmp %val2 = select i1 %tst2, i64 9, i64 15 store i64 %val2, i64* @var64 -; CHECK: movz [[CONST15:x[0-9]+]], #15 -; CHECK: movz [[CONST9:x[0-9]+]], #9 -; CHECK: csel [[MAYBETRUE:x[0-9]+]], [[CONST9]], [[CONST15]], eq -; CHECK: csel {{x[0-9]+}}, [[CONST9]], [[MAYBETRUE]], vs +; CHECK: orr w[[CONST15:[0-9]+]], wzr, #0xf +; CHECK: movz {{[wx]}}[[CONST9:[0-9]+]], #{{9|0x9}} +; CHECK: csel [[MAYBETRUE:x[0-9]+]], x[[CONST9]], x[[CONST15]], eq +; CHECK: csel {{x[0-9]+}}, x[[CONST9]], [[MAYBETRUE]], vs ret void ; CHECK: ret } -define void @test_csinc(i32 %lhs32, i32 %rhs32, i64 %lhs64) { +define void @test_csinc(i32 %lhs32, i32 %rhs32, i64 %lhs64) minsize { ; CHECK-LABEL: test_csinc: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). @@ -95,7 +95,7 @@ define void @test_csinc(i32 %lhs32, i32 %rhs32, i64 %lhs64) { ; CHECK: ret } -define void @test_csinv(i32 %lhs32, i32 %rhs32, i64 %lhs64) { +define void @test_csinv(i32 %lhs32, i32 %rhs32, i64 %lhs64) minsize { ; CHECK-LABEL: test_csinv: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). @@ -135,7 +135,7 @@ define void @test_csinv(i32 %lhs32, i32 %rhs32, i64 %lhs64) { ; CHECK: ret } -define void @test_csneg(i32 %lhs32, i32 %rhs32, i64 %lhs64) { +define void @test_csneg(i32 %lhs32, i32 %rhs32, i64 %lhs64) minsize { ; CHECK-LABEL: test_csneg: ; Note that commuting rhs and lhs in the select changes ugt to ule (i.e. hi to ls). @@ -184,13 +184,13 @@ define void @test_cset(i32 %lhs, i32 %rhs, i64 %lhs64) { %val1 = zext i1 %tst1 to i32 store i32 %val1, i32* @var32 ; CHECK: cmp {{w[0-9]+}}, {{w[0-9]+}} -; CHECK: csinc {{w[0-9]+}}, wzr, wzr, ne +; CHECK: cset {{w[0-9]+}}, eq %rhs64 = sext i32 %rhs to i64 %tst2 = icmp ule i64 %lhs64, %rhs64 %val2 = zext i1 %tst2 to i64 store i64 %val2, i64* @var64 -; CHECK: csinc {{w[0-9]+}}, wzr, wzr, hi +; CHECK: cset {{w[0-9]+}}, ls ret void ; CHECK: ret @@ -203,13 +203,13 @@ define void @test_csetm(i32 %lhs, i32 %rhs, i64 %lhs64) { %val1 = sext i1 %tst1 to i32 store i32 %val1, i32* @var32 ; CHECK: cmp {{w[0-9]+}}, {{w[0-9]+}} -; CHECK: csinv {{w[0-9]+}}, wzr, wzr, ne +; CHECK: csetm {{w[0-9]+}}, eq %rhs64 = sext i32 %rhs to i64 %tst2 = icmp ule i64 %lhs64, %rhs64 %val2 = sext i1 %tst2 to i64 store i64 %val2, i64* @var64 -; CHECK: csinv {{x[0-9]+}}, xzr, xzr, hi +; CHECK: csetm {{x[0-9]+}}, ls ret void ; CHECK: ret |