xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/cmp-const-max.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs -aarch64-atomic-cfg-tidy=0 < %s -mtriple=aarch64-none-eabihf -fast-isel=false | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine i32 @ule_64_max(i64 %p) {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ule_64_max:
7*9880d681SAndroid Build Coastguard Worker; CHECK: cmn x0, #1
8*9880d681SAndroid Build Coastguard Worker; CHECK: b.hi [[RET_ZERO:.LBB[0-9]+_[0-9]+]]
9*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ule i64 %p, 18446744073709551615 ; 0xffffffffffffffff
10*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %ret_one, label %ret_zero
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerret_one:
13*9880d681SAndroid Build Coastguard Worker  ret i32 1
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerret_zero:
16*9880d681SAndroid Build Coastguard Worker; CHECK: [[RET_ZERO]]:
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov w0, wzr
18*9880d681SAndroid Build Coastguard Worker  ret i32 0
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i32 @ugt_64_max(i64 %p) {
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ugt_64_max:
24*9880d681SAndroid Build Coastguard Worker; CHECK: cmn x0, #1
25*9880d681SAndroid Build Coastguard Worker; CHECK: b.ls [[RET_ZERO:.LBB[0-9]+_[0-9]+]]
26*9880d681SAndroid Build Coastguard Worker  %cmp = icmp ugt i64 %p, 18446744073709551615 ; 0xffffffffffffffff
27*9880d681SAndroid Build Coastguard Worker  br i1 %cmp, label %ret_one, label %ret_zero
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerret_one:
30*9880d681SAndroid Build Coastguard Worker  ret i32 1
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerret_zero:
33*9880d681SAndroid Build Coastguard Worker; CHECK: [[RET_ZERO]]:
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mov w0, wzr
35*9880d681SAndroid Build Coastguard Worker  ret i32 0
36*9880d681SAndroid Build Coastguard Worker}
37