[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-cbz.mir
blob0da29c9d0c110e8a08e0be33494f0d58a7f28ad7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            cbz_s32
6 legalized:       true
7 regBankSelected: true
9 body:             |
10   ; CHECK-LABEL: name: cbz_s32
11   ; CHECK: bb.0:
12   ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
13   ; CHECK-NEXT:   liveins: $w0
14   ; CHECK-NEXT: {{  $}}
15   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr32 = COPY $w0
16   ; CHECK-NEXT:   CBZW [[COPY]], %bb.1
17   ; CHECK-NEXT:   B %bb.0
18   ; CHECK-NEXT: {{  $}}
19   ; CHECK-NEXT: bb.1:
20   bb.0:
21     liveins: $w0
22     successors: %bb.0, %bb.1
24     %0:gpr(s32) = COPY $w0
25     %1:gpr(s32) = G_CONSTANT i32 0
26     %2:gpr(s32) = G_ICMP intpred(eq), %0, %1
27     G_BRCOND %2, %bb.1
28     G_BR %bb.0
30   bb.1:
31 ...
33 ---
34 name:            cbz_s64
35 legalized:       true
36 regBankSelected: true
38 body:             |
39   ; CHECK-LABEL: name: cbz_s64
40   ; CHECK: bb.0:
41   ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
42   ; CHECK-NEXT:   liveins: $x0
43   ; CHECK-NEXT: {{  $}}
44   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
45   ; CHECK-NEXT:   CBZX [[COPY]], %bb.1
46   ; CHECK-NEXT:   B %bb.0
47   ; CHECK-NEXT: {{  $}}
48   ; CHECK-NEXT: bb.1:
49   bb.0:
50     liveins: $x0
51     successors: %bb.0, %bb.1
53     %0:gpr(s64) = COPY $x0
54     %1:gpr(s64) = G_CONSTANT i64 0
55     %2:gpr(s32) = G_ICMP intpred(eq), %0, %1
56     G_BRCOND %2, %bb.1
57     G_BR %bb.0
59   bb.1:
60 ...
62 ---
63 name:            cbnz_s32
64 legalized:       true
65 regBankSelected: true
67 body:             |
68   ; CHECK-LABEL: name: cbnz_s32
69   ; CHECK: bb.0:
70   ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
71   ; CHECK-NEXT:   liveins: $w0
72   ; CHECK-NEXT: {{  $}}
73   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr32 = COPY $w0
74   ; CHECK-NEXT:   CBNZW [[COPY]], %bb.1
75   ; CHECK-NEXT:   B %bb.0
76   ; CHECK-NEXT: {{  $}}
77   ; CHECK-NEXT: bb.1:
78   bb.0:
79     liveins: $w0
80     successors: %bb.0, %bb.1
82     %0:gpr(s32) = COPY $w0
83     %1:gpr(s32) = G_CONSTANT i32 0
84     %2:gpr(s32) = G_ICMP intpred(ne), %0, %1
85     G_BRCOND %2, %bb.1
86     G_BR %bb.0
88   bb.1:
89 ...
91 ---
92 name:            cbnz_s64
93 legalized:       true
94 regBankSelected: true
96 body:             |
97   ; CHECK-LABEL: name: cbnz_s64
98   ; CHECK: bb.0:
99   ; CHECK-NEXT:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
100   ; CHECK-NEXT:   liveins: $x0
101   ; CHECK-NEXT: {{  $}}
102   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
103   ; CHECK-NEXT:   CBNZX [[COPY]], %bb.1
104   ; CHECK-NEXT:   B %bb.0
105   ; CHECK-NEXT: {{  $}}
106   ; CHECK-NEXT: bb.1:
107   bb.0:
108     liveins: $x0
109     successors: %bb.0, %bb.1
111     %0:gpr(s64) = COPY $x0
112     %1:gpr(s64) = G_CONSTANT i64 0
113     %2:gpr(s32) = G_ICMP intpred(ne), %0, %1
114     G_BRCOND %2, %bb.1
115     G_BR %bb.0
117   bb.1:
120 name:            test_rhs_inttoptr
121 alignment:       4
122 legalized:       true
123 regBankSelected: true
124 tracksRegLiveness: true
125 body:             |
126   ; CHECK-LABEL: name: test_rhs_inttoptr
127   ; CHECK: bb.0:
128   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
129   ; CHECK-NEXT:   liveins: $x0
130   ; CHECK-NEXT: {{  $}}
131   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64common = COPY $x0
132   ; CHECK-NEXT:   CBZX [[COPY]], %bb.2
133   ; CHECK-NEXT: {{  $}}
134   ; CHECK-NEXT: bb.1:
135   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
136   ; CHECK-NEXT: {{  $}}
137   ; CHECK-NEXT:   STRXui $xzr, [[COPY]], 0 :: (store (s64))
138   ; CHECK-NEXT: {{  $}}
139   ; CHECK-NEXT: bb.2:
140   ; CHECK-NEXT:   RET_ReallyLR
141   bb.1:
142     successors: %bb.2, %bb.3
143     liveins: $x0
145     %0:gpr(p0) = COPY $x0
146     %2:gpr(s64) = G_CONSTANT i64 0
147     %1:gpr(p0) = G_INTTOPTR %2(s64)
148     %4:gpr(s32) = G_ICMP intpred(eq), %0(p0), %1
149     G_BRCOND %4, %bb.3
151   bb.2:
152     %5:gpr(s64) = G_CONSTANT i64 0
153     G_STORE %5(s64), %0(p0) :: (store (s64))
155   bb.3:
156     RET_ReallyLR
160 name:            test_rhs_unknown
161 alignment:       4
162 legalized:       true
163 regBankSelected: true
164 tracksRegLiveness: true
165 body:             |
166   ; CHECK-LABEL: name: test_rhs_unknown
167   ; CHECK: bb.0:
168   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
169   ; CHECK-NEXT:   liveins: $x0
170   ; CHECK-NEXT: {{  $}}
171   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
172   ; CHECK-NEXT:   [[LDRXui:%[0-9]+]]:gpr64common = LDRXui [[COPY]], 0 :: (load (s64))
173   ; CHECK-NEXT:   [[SUBSXri:%[0-9]+]]:gpr64 = SUBSXri [[LDRXui]], 42, 0, implicit-def $nzcv
174   ; CHECK-NEXT:   Bcc 0, %bb.2, implicit $nzcv
175   ; CHECK-NEXT: {{  $}}
176   ; CHECK-NEXT: bb.1:
177   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
178   ; CHECK-NEXT: {{  $}}
179   ; CHECK-NEXT:   STRXui $xzr, [[COPY]], 0 :: (store (s64))
180   ; CHECK-NEXT: {{  $}}
181   ; CHECK-NEXT: bb.2:
182   ; CHECK-NEXT:   RET_ReallyLR
183   bb.1:
184     successors: %bb.2, %bb.3
185     liveins: $x0
187     %0:gpr(p0) = COPY $x0
188     %2:gpr(s64) = G_CONSTANT i64 42
189     %4:gpr(s64) = G_CONSTANT i64 0
190     %1:gpr(s64) = G_LOAD %0(p0) :: (load (s64))
191     %5:gpr(s32) = G_ICMP intpred(eq), %1(s64), %2
192     G_BRCOND %5, %bb.3
194   bb.2:
195     %6:gpr(s64) = G_CONSTANT i64 0
196     G_STORE %6(s64), %0(p0) :: (store (s64))
198   bb.3:
199     RET_ReallyLR