20c5df105ad2bbc4de65b38582fefec45f352529
[oota-llvm.git] / test / CodeGen / AArch64 / fast-isel-cbz.ll
1 ; RUN: llc -fast-isel -fast-isel-abort -aarch64-atomic-cfg-tidy=0 -verify-machineinstrs -mtriple=aarch64-apple-darwin < %s | FileCheck %s
2
3 define i32 @icmp_eq_i1(i1 %a) {
4 ; CHECK-LABEL: icmp_eq_i1
5 ; CHECK:       and [[REG:w[0-9]+]], w0, #0x1
6 ; CHECK:       cbz [[REG]], {{LBB.+_2}}
7   %1 = icmp eq i1 %a, 0
8   br i1 %1, label %bb1, label %bb2
9 bb2:
10   ret i32 1
11 bb1:
12   ret i32 0
13 }
14
15 define i32 @icmp_eq_i8(i8 %a) {
16 ; CHECK-LABEL: icmp_eq_i8
17 ; CHECK:       uxtb [[REG:w[0-9]+]], w0
18 ; CHECK:       cbz [[REG]], {{LBB.+_2}}
19   %1 = icmp eq i8 %a, 0
20   br i1 %1, label %bb1, label %bb2
21 bb2:
22   ret i32 1
23 bb1:
24   ret i32 0
25 }
26
27 define i32 @icmp_eq_i16(i16 %a) {
28 ; CHECK-LABEL: icmp_eq_i16
29 ; CHECK:       uxth [[REG:w[0-9]+]], w0
30 ; CHECK:       cbz [[REG]], {{LBB.+_2}}
31   %1 = icmp eq i16 %a, 0
32   br i1 %1, label %bb1, label %bb2
33 bb2:
34   ret i32 1
35 bb1:
36   ret i32 0
37 }
38
39 define i32 @icmp_eq_i32(i32 %a) {
40 ; CHECK-LABEL: icmp_eq_i32
41 ; CHECK:       cbz w0, {{LBB.+_2}}
42   %1 = icmp eq i32 %a, 0
43   br i1 %1, label %bb1, label %bb2
44 bb2:
45   ret i32 1
46 bb1:
47   ret i32 0
48 }
49
50 define i32 @icmp_eq_i64(i64 %a) {
51 ; CHECK-LABEL: icmp_eq_i64
52 ; CHECK:       cbz x0, {{LBB.+_2}}
53   %1 = icmp eq i64 %a, 0
54   br i1 %1, label %bb1, label %bb2
55 bb2:
56   ret i32 1
57 bb1:
58   ret i32 0
59 }
60
61 define i32 @icmp_eq_ptr(i8* %a) {
62 ; CHECK-LABEL: icmp_eq_ptr
63 ; CHECK:       cbz x0, {{LBB.+_2}}
64   %1 = icmp eq i8* %a, null
65   br i1 %1, label %bb1, label %bb2
66 bb2:
67   ret i32 1
68 bb1:
69   ret i32 0
70 }
71