[AArch64] Fix bug in prolog clobbering live reg when shrink wrapping.
[oota-llvm.git] / test / CodeGen / AArch64 / cmp-const-max.ll
1 ; RUN: llc -verify-machineinstrs -aarch64-atomic-cfg-tidy=0 < %s -mtriple=aarch64-none-eabihf -fast-isel=false | FileCheck %s
2
3
4 define i32 @ule_64_max(i64 %p) {
5 entry:
6 ; CHECK-LABEL: ule_64_max:
7 ; CHECK: cmn x0, #1
8 ; CHECK: b.hi [[RET_ZERO:.LBB[0-9]+_[0-9]+]]
9   %cmp = icmp ule i64 %p, 18446744073709551615 ; 0xffffffffffffffff
10   br i1 %cmp, label %ret_one, label %ret_zero
11
12 ret_one:
13   ret i32 1
14
15 ret_zero:
16 ; CHECK: [[RET_ZERO]]:
17 ; CHECK-NEXT: mov w0, wzr
18   ret i32 0
19 }
20
21 define i32 @ugt_64_max(i64 %p) {
22 entry:
23 ; CHECK-LABEL: ugt_64_max:
24 ; CHECK: cmn x0, #1
25 ; CHECK: b.ls [[RET_ZERO:.LBB[0-9]+_[0-9]+]]
26   %cmp = icmp ugt i64 %p, 18446744073709551615 ; 0xffffffffffffffff
27   br i1 %cmp, label %ret_one, label %ret_zero
28
29 ret_one:
30   ret i32 1
31
32 ret_zero:
33 ; CHECK: [[RET_ZERO]]:
34 ; CHECK-NEXT: mov w0, wzr
35   ret i32 0
36 }