1 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 ; RUN: llc -mtriple aarch64 -O0 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -global-isel -verify-machineinstrs %s -o - 2>&1 | FileCheck %s
4 define i32 @switch(i32 %argc) {
5 ; CHECK-LABEL: name: switch
7 ; CHECK: successors: %bb.3(0x40000000), %bb.6(0x40000000)
9 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
10 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 100
11 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 200
12 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
13 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
14 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
15 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
16 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.3
19 ; CHECK: successors: %bb.4(0x40000000), %bb.2(0x40000000)
20 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
21 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.4
23 ; CHECK: bb.2.default:
24 ; CHECK: successors: %bb.5(0x80000000)
25 ; CHECK: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C4]]
27 ; CHECK: bb.3.case100:
28 ; CHECK: successors: %bb.5(0x80000000)
29 ; CHECK: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C3]]
31 ; CHECK: bb.4.case200:
32 ; CHECK: successors: %bb.5(0x80000000)
33 ; CHECK: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]
35 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[ADD]](s32), %bb.2, [[ADD1]](s32), %bb.3, [[ADD2]](s32), %bb.4
36 ; CHECK: $w0 = COPY [[PHI]](s32)
37 ; CHECK: RET_ReallyLR implicit $w0
39 switch i32 %argc, label %default [
40 i32 100, label %case100
41 i32 200, label %case200
45 %tmp0 = add i32 %argc, 0
49 %tmp1 = add i32 %argc, 1
53 %tmp2 = add i32 %argc, 2
57 %res = phi i32 [ %tmp0, %default ], [ %tmp1, %case100 ], [ %tmp2, %case200 ]
61 define i32 @test_cfg_remap(i32 %in) {
62 ; CHECK-LABEL: name: test_cfg_remap
64 ; CHECK: successors: %bb.2(0x40000000), %bb.5(0x40000000)
66 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
67 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
68 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57
69 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
70 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
71 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
72 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.2
75 ; CHECK: successors: %bb.3(0x40000000), %bb.4(0x40000000)
76 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
77 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.3
80 ; CHECK: successors: %bb.4(0x80000000)
83 ; CHECK: $w0 = COPY [[DEF]](s32)
84 ; CHECK: RET_ReallyLR implicit $w0
85 ; CHECK: bb.4.phi.block:
86 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.5, [[C2]](s32), %bb.2
87 ; CHECK: $w0 = COPY [[PHI]](s32)
88 ; CHECK: RET_ReallyLR implicit $w0
90 switch i32 %in, label %phi.block [i32 1, label %next
100 %res = phi i32 [1, %entry], [42, %next]
104 define i32 @test_cfg_remap_multiple_preds(i32 %in) {
105 ; CHECK-LABEL: name: test_cfg_remap_multiple_preds
107 ; CHECK: successors: %bb.3(0x40000000), %bb.6(0x40000000)
108 ; CHECK: liveins: $w0
109 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
110 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
111 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57
112 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 128
113 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
114 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
115 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
116 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
117 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.3
120 ; CHECK: successors: %bb.4(0x40000000), %bb.7(0x40000000)
121 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
122 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.4
125 ; CHECK: successors: %bb.5(0x40000000), %bb.8(0x40000000)
126 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C2]]
127 ; CHECK: G_BRCOND [[ICMP2]](s1), %bb.5
130 ; CHECK: successors: %bb.5(0x80000000)
135 ; CHECK: successors: %bb.5(0x80000000)
138 ; CHECK: $w0 = COPY [[DEF]](s32)
139 ; CHECK: RET_ReallyLR implicit $w0
140 ; CHECK: bb.5.phi.block:
141 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.7, [[C]](s32), %bb.8, [[C4]](s32), %bb.3
142 ; CHECK: $w0 = COPY [[C3]](s32)
143 ; CHECK: RET_ReallyLR implicit $w0
145 switch i32 %in, label %odd [i32 1, label %next
147 i32 128, label %phi.block
148 i32 256, label %phi.block]
159 %res = phi i32 [1, %entry], [1, %entry], [42, %next]
163 define i32 @jt_test(i32 %x) {
164 ; CHECK-LABEL: name: jt_test
166 ; CHECK: successors: %bb.4(0x40000000), %bb.5(0x40000000)
167 ; CHECK: liveins: $w0
168 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
169 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 71
170 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
171 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
172 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
173 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
174 ; CHECK: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C4]]
175 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[SUB]](s32)
176 ; CHECK: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)
177 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[ZEXT]](s64), [[ZEXT1]]
178 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.4
180 ; CHECK: successors: %bb.3(0x2aaaaaab), %bb.4(0x2aaaaaab), %bb.2(0x2aaaaaab)
181 ; CHECK: [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.0
182 ; CHECK: G_BRJT [[JUMP_TABLE]](p0), %jump-table.0, [[ZEXT]](s64)
184 ; CHECK: successors: %bb.4(0x80000000)
185 ; CHECK: %11:_(s32) = nsw G_ADD [[COPY]], [[C2]]
187 ; CHECK: bb.3.sw.bb1:
188 ; CHECK: successors: %bb.4(0x80000000)
189 ; CHECK: %9:_(s32) = nsw G_MUL [[COPY]], [[C1]]
190 ; CHECK: bb.4.return:
191 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI %9(s32), %bb.3, %11(s32), %bb.2, [[C3]](s32), %bb.1, [[C3]](s32), %bb.5
192 ; CHECK: $w0 = COPY [[PHI]](s32)
193 ; CHECK: RET_ReallyLR implicit $w0
195 switch i32 %x, label %return [
207 %add = add nsw i32 %x, 42
211 %mul = mul nsw i32 %x, 3
215 %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
219 %0 = type { i32, i32* }
220 %1 = type { i32*, i32, i32 }
222 @global = external hidden constant [55 x %0], align 8
224 define void @jt_multiple_jump_tables(%1* %arg, i32 %arg1, i32* %arg2) {
225 ; CHECK-LABEL: name: jt_multiple_jump_tables
227 ; CHECK: successors: %bb.56(0x40000000), %bb.61(0x40000000)
228 ; CHECK: liveins: $w1, $x0, $x2
229 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
230 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
231 ; CHECK: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
232 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
233 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
234 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
235 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
236 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
237 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
238 ; CHECK: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
239 ; CHECK: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
240 ; CHECK: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
241 ; CHECK: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 13
242 ; CHECK: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 14
243 ; CHECK: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
244 ; CHECK: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
245 ; CHECK: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 17
246 ; CHECK: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 18
247 ; CHECK: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
248 ; CHECK: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
249 ; CHECK: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 21
250 ; CHECK: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 22
251 ; CHECK: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
252 ; CHECK: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
253 ; CHECK: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 25
254 ; CHECK: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 26
255 ; CHECK: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 27
256 ; CHECK: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 28
257 ; CHECK: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 29
258 ; CHECK: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 30
259 ; CHECK: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
260 ; CHECK: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
261 ; CHECK: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 33
262 ; CHECK: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 34
263 ; CHECK: [[C31:%[0-9]+]]:_(s32) = G_CONSTANT i32 35
264 ; CHECK: [[C32:%[0-9]+]]:_(s32) = G_CONSTANT i32 36
265 ; CHECK: [[C33:%[0-9]+]]:_(s32) = G_CONSTANT i32 37
266 ; CHECK: [[C34:%[0-9]+]]:_(s32) = G_CONSTANT i32 38
267 ; CHECK: [[C35:%[0-9]+]]:_(s32) = G_CONSTANT i32 39
268 ; CHECK: [[C36:%[0-9]+]]:_(s32) = G_CONSTANT i32 41
269 ; CHECK: [[C37:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
270 ; CHECK: [[C38:%[0-9]+]]:_(s32) = G_CONSTANT i32 43
271 ; CHECK: [[C39:%[0-9]+]]:_(s32) = G_CONSTANT i32 44
272 ; CHECK: [[C40:%[0-9]+]]:_(s32) = G_CONSTANT i32 45
273 ; CHECK: [[C41:%[0-9]+]]:_(s32) = G_CONSTANT i32 46
274 ; CHECK: [[C42:%[0-9]+]]:_(s32) = G_CONSTANT i32 47
275 ; CHECK: [[C43:%[0-9]+]]:_(s32) = G_CONSTANT i32 48
276 ; CHECK: [[C44:%[0-9]+]]:_(s32) = G_CONSTANT i32 49
277 ; CHECK: [[C45:%[0-9]+]]:_(s32) = G_CONSTANT i32 50
278 ; CHECK: [[C46:%[0-9]+]]:_(s32) = G_CONSTANT i32 51
279 ; CHECK: [[C47:%[0-9]+]]:_(s32) = G_CONSTANT i32 52
280 ; CHECK: [[C48:%[0-9]+]]:_(s32) = G_CONSTANT i32 53
281 ; CHECK: [[C49:%[0-9]+]]:_(s32) = G_CONSTANT i32 54
282 ; CHECK: [[C50:%[0-9]+]]:_(s32) = G_CONSTANT i32 55
283 ; CHECK: [[C51:%[0-9]+]]:_(s32) = G_CONSTANT i32 4352
284 ; CHECK: [[C52:%[0-9]+]]:_(s32) = G_CONSTANT i32 4353
285 ; CHECK: [[C53:%[0-9]+]]:_(s32) = G_CONSTANT i32 4354
286 ; CHECK: [[C54:%[0-9]+]]:_(s32) = G_CONSTANT i32 4355
287 ; CHECK: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global
288 ; CHECK: [[C55:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
289 ; CHECK: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C55]](s64)
290 ; CHECK: [[C56:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
291 ; CHECK: [[C57:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
292 ; CHECK: [[C58:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
293 ; CHECK: [[C59:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
294 ; CHECK: [[C60:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
295 ; CHECK: [[C61:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
296 ; CHECK: [[C62:%[0-9]+]]:_(s64) = G_CONSTANT i64 7
297 ; CHECK: [[C63:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
298 ; CHECK: [[C64:%[0-9]+]]:_(s64) = G_CONSTANT i64 9
299 ; CHECK: [[C65:%[0-9]+]]:_(s64) = G_CONSTANT i64 10
300 ; CHECK: [[C66:%[0-9]+]]:_(s64) = G_CONSTANT i64 11
301 ; CHECK: [[C67:%[0-9]+]]:_(s64) = G_CONSTANT i64 12
302 ; CHECK: [[C68:%[0-9]+]]:_(s64) = G_CONSTANT i64 13
303 ; CHECK: [[C69:%[0-9]+]]:_(s64) = G_CONSTANT i64 14
304 ; CHECK: [[C70:%[0-9]+]]:_(s64) = G_CONSTANT i64 15
305 ; CHECK: [[C71:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
306 ; CHECK: [[C72:%[0-9]+]]:_(s64) = G_CONSTANT i64 17
307 ; CHECK: [[C73:%[0-9]+]]:_(s64) = G_CONSTANT i64 18
308 ; CHECK: [[C74:%[0-9]+]]:_(s64) = G_CONSTANT i64 19
309 ; CHECK: [[C75:%[0-9]+]]:_(s64) = G_CONSTANT i64 20
310 ; CHECK: [[C76:%[0-9]+]]:_(s64) = G_CONSTANT i64 21
311 ; CHECK: [[C77:%[0-9]+]]:_(s64) = G_CONSTANT i64 22
312 ; CHECK: [[C78:%[0-9]+]]:_(s64) = G_CONSTANT i64 23
313 ; CHECK: [[C79:%[0-9]+]]:_(s64) = G_CONSTANT i64 24
314 ; CHECK: [[C80:%[0-9]+]]:_(s64) = G_CONSTANT i64 25
315 ; CHECK: [[C81:%[0-9]+]]:_(s64) = G_CONSTANT i64 26
316 ; CHECK: [[C82:%[0-9]+]]:_(s64) = G_CONSTANT i64 27
317 ; CHECK: [[C83:%[0-9]+]]:_(s64) = G_CONSTANT i64 28
318 ; CHECK: [[C84:%[0-9]+]]:_(s64) = G_CONSTANT i64 29
319 ; CHECK: [[C85:%[0-9]+]]:_(s64) = G_CONSTANT i64 30
320 ; CHECK: [[C86:%[0-9]+]]:_(s64) = G_CONSTANT i64 31
321 ; CHECK: [[C87:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
322 ; CHECK: [[C88:%[0-9]+]]:_(s64) = G_CONSTANT i64 33
323 ; CHECK: [[C89:%[0-9]+]]:_(s64) = G_CONSTANT i64 34
324 ; CHECK: [[C90:%[0-9]+]]:_(s64) = G_CONSTANT i64 35
325 ; CHECK: [[C91:%[0-9]+]]:_(s64) = G_CONSTANT i64 36
326 ; CHECK: [[C92:%[0-9]+]]:_(s64) = G_CONSTANT i64 37
327 ; CHECK: [[C93:%[0-9]+]]:_(s64) = G_CONSTANT i64 38
328 ; CHECK: [[C94:%[0-9]+]]:_(s64) = G_CONSTANT i64 39
329 ; CHECK: [[C95:%[0-9]+]]:_(s64) = G_CONSTANT i64 40
330 ; CHECK: [[C96:%[0-9]+]]:_(s64) = G_CONSTANT i64 41
331 ; CHECK: [[C97:%[0-9]+]]:_(s64) = G_CONSTANT i64 42
332 ; CHECK: [[C98:%[0-9]+]]:_(s64) = G_CONSTANT i64 43
333 ; CHECK: [[C99:%[0-9]+]]:_(s64) = G_CONSTANT i64 44
334 ; CHECK: [[C100:%[0-9]+]]:_(s64) = G_CONSTANT i64 45
335 ; CHECK: [[C101:%[0-9]+]]:_(s64) = G_CONSTANT i64 46
336 ; CHECK: [[C102:%[0-9]+]]:_(s64) = G_CONSTANT i64 47
337 ; CHECK: [[C103:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
338 ; CHECK: [[C104:%[0-9]+]]:_(s64) = G_CONSTANT i64 49
339 ; CHECK: [[C105:%[0-9]+]]:_(s64) = G_CONSTANT i64 50
340 ; CHECK: [[C106:%[0-9]+]]:_(s64) = G_CONSTANT i64 51
341 ; CHECK: [[C107:%[0-9]+]]:_(s64) = G_CONSTANT i64 52
342 ; CHECK: [[C108:%[0-9]+]]:_(s64) = G_CONSTANT i64 53
343 ; CHECK: [[C109:%[0-9]+]]:_(s64) = G_CONSTANT i64 54
344 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.tmp
345 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
346 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.56
349 ; CHECK: successors: %bb.2(0x40000000), %bb.62(0x40000000)
350 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C1]]
351 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.2
354 ; CHECK: successors: %bb.3(0x40000000), %bb.63(0x40000000)
355 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C2]]
356 ; CHECK: G_BRCOND [[ICMP2]](s1), %bb.3
359 ; CHECK: successors: %bb.4(0x40000000), %bb.64(0x40000000)
360 ; CHECK: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C3]]
361 ; CHECK: G_BRCOND [[ICMP3]](s1), %bb.4
364 ; CHECK: successors: %bb.5(0x40000000), %bb.65(0x40000000)
365 ; CHECK: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C4]]
366 ; CHECK: G_BRCOND [[ICMP4]](s1), %bb.5
369 ; CHECK: successors: %bb.6(0x40000000), %bb.66(0x40000000)
370 ; CHECK: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C5]]
371 ; CHECK: G_BRCOND [[ICMP5]](s1), %bb.6
374 ; CHECK: successors: %bb.7(0x40000000), %bb.67(0x40000000)
375 ; CHECK: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C6]]
376 ; CHECK: G_BRCOND [[ICMP6]](s1), %bb.7
379 ; CHECK: successors: %bb.8(0x40000000), %bb.68(0x40000000)
380 ; CHECK: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C7]]
381 ; CHECK: G_BRCOND [[ICMP7]](s1), %bb.8
384 ; CHECK: successors: %bb.9(0x40000000), %bb.69(0x40000000)
385 ; CHECK: [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C8]]
386 ; CHECK: G_BRCOND [[ICMP8]](s1), %bb.9
389 ; CHECK: successors: %bb.10(0x40000000), %bb.70(0x40000000)
390 ; CHECK: [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C9]]
391 ; CHECK: G_BRCOND [[ICMP9]](s1), %bb.10
394 ; CHECK: successors: %bb.11(0x40000000), %bb.71(0x40000000)
395 ; CHECK: [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C10]]
396 ; CHECK: G_BRCOND [[ICMP10]](s1), %bb.11
399 ; CHECK: successors: %bb.12(0x40000000), %bb.72(0x40000000)
400 ; CHECK: [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C11]]
401 ; CHECK: G_BRCOND [[ICMP11]](s1), %bb.12
404 ; CHECK: successors: %bb.13(0x40000000), %bb.73(0x40000000)
405 ; CHECK: [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C12]]
406 ; CHECK: G_BRCOND [[ICMP12]](s1), %bb.13
409 ; CHECK: successors: %bb.14(0x40000000), %bb.74(0x40000000)
410 ; CHECK: [[ICMP13:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C13]]
411 ; CHECK: G_BRCOND [[ICMP13]](s1), %bb.14
414 ; CHECK: successors: %bb.15(0x40000000), %bb.75(0x40000000)
415 ; CHECK: [[ICMP14:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C14]]
416 ; CHECK: G_BRCOND [[ICMP14]](s1), %bb.15
419 ; CHECK: successors: %bb.16(0x40000000), %bb.76(0x40000000)
420 ; CHECK: [[ICMP15:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C15]]
421 ; CHECK: G_BRCOND [[ICMP15]](s1), %bb.16
424 ; CHECK: successors: %bb.17(0x40000000), %bb.77(0x40000000)
425 ; CHECK: [[ICMP16:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C16]]
426 ; CHECK: G_BRCOND [[ICMP16]](s1), %bb.17
429 ; CHECK: successors: %bb.18(0x40000000), %bb.78(0x40000000)
430 ; CHECK: [[ICMP17:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C17]]
431 ; CHECK: G_BRCOND [[ICMP17]](s1), %bb.18
434 ; CHECK: successors: %bb.19(0x40000000), %bb.79(0x40000000)
435 ; CHECK: [[ICMP18:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C18]]
436 ; CHECK: G_BRCOND [[ICMP18]](s1), %bb.19
439 ; CHECK: successors: %bb.20(0x40000000), %bb.80(0x40000000)
440 ; CHECK: [[ICMP19:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C19]]
441 ; CHECK: G_BRCOND [[ICMP19]](s1), %bb.20
444 ; CHECK: successors: %bb.21(0x40000000), %bb.81(0x40000000)
445 ; CHECK: [[ICMP20:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C20]]
446 ; CHECK: G_BRCOND [[ICMP20]](s1), %bb.21
449 ; CHECK: successors: %bb.22(0x40000000), %bb.82(0x40000000)
450 ; CHECK: [[ICMP21:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C21]]
451 ; CHECK: G_BRCOND [[ICMP21]](s1), %bb.22
454 ; CHECK: successors: %bb.23(0x40000000), %bb.83(0x40000000)
455 ; CHECK: [[ICMP22:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C22]]
456 ; CHECK: G_BRCOND [[ICMP22]](s1), %bb.23
459 ; CHECK: successors: %bb.24(0x40000000), %bb.84(0x40000000)
460 ; CHECK: [[ICMP23:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C23]]
461 ; CHECK: G_BRCOND [[ICMP23]](s1), %bb.24
464 ; CHECK: successors: %bb.25(0x40000000), %bb.85(0x40000000)
465 ; CHECK: [[ICMP24:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C24]]
466 ; CHECK: G_BRCOND [[ICMP24]](s1), %bb.25
469 ; CHECK: successors: %bb.26(0x40000000), %bb.86(0x40000000)
470 ; CHECK: [[ICMP25:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C25]]
471 ; CHECK: G_BRCOND [[ICMP25]](s1), %bb.26
474 ; CHECK: successors: %bb.27(0x40000000), %bb.87(0x40000000)
475 ; CHECK: [[ICMP26:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C26]]
476 ; CHECK: G_BRCOND [[ICMP26]](s1), %bb.27
479 ; CHECK: successors: %bb.28(0x40000000), %bb.88(0x40000000)
480 ; CHECK: [[ICMP27:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C27]]
481 ; CHECK: G_BRCOND [[ICMP27]](s1), %bb.28
484 ; CHECK: successors: %bb.29(0x40000000), %bb.89(0x40000000)
485 ; CHECK: [[ICMP28:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C28]]
486 ; CHECK: G_BRCOND [[ICMP28]](s1), %bb.29
489 ; CHECK: successors: %bb.30(0x40000000), %bb.90(0x40000000)
490 ; CHECK: [[ICMP29:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C29]]
491 ; CHECK: G_BRCOND [[ICMP29]](s1), %bb.30
494 ; CHECK: successors: %bb.31(0x40000000), %bb.91(0x40000000)
495 ; CHECK: [[ICMP30:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C30]]
496 ; CHECK: G_BRCOND [[ICMP30]](s1), %bb.31
499 ; CHECK: successors: %bb.32(0x40000000), %bb.92(0x40000000)
500 ; CHECK: [[ICMP31:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C31]]
501 ; CHECK: G_BRCOND [[ICMP31]](s1), %bb.32
504 ; CHECK: successors: %bb.33(0x40000000), %bb.93(0x40000000)
505 ; CHECK: [[ICMP32:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C32]]
506 ; CHECK: G_BRCOND [[ICMP32]](s1), %bb.33
509 ; CHECK: successors: %bb.34(0x40000000), %bb.94(0x40000000)
510 ; CHECK: [[ICMP33:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C33]]
511 ; CHECK: G_BRCOND [[ICMP33]](s1), %bb.34
514 ; CHECK: successors: %bb.35(0x40000000), %bb.95(0x40000000)
515 ; CHECK: [[ICMP34:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C34]]
516 ; CHECK: G_BRCOND [[ICMP34]](s1), %bb.35
519 ; CHECK: successors: %bb.36(0x40000000), %bb.96(0x40000000)
520 ; CHECK: [[ICMP35:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C35]]
521 ; CHECK: G_BRCOND [[ICMP35]](s1), %bb.36
524 ; CHECK: successors: %bb.37(0x40000000), %bb.97(0x40000000)
525 ; CHECK: [[ICMP36:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C36]]
526 ; CHECK: G_BRCOND [[ICMP36]](s1), %bb.37
529 ; CHECK: successors: %bb.38(0x40000000), %bb.98(0x40000000)
530 ; CHECK: [[ICMP37:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C37]]
531 ; CHECK: G_BRCOND [[ICMP37]](s1), %bb.38
534 ; CHECK: successors: %bb.39(0x40000000), %bb.99(0x40000000)
535 ; CHECK: [[ICMP38:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C38]]
536 ; CHECK: G_BRCOND [[ICMP38]](s1), %bb.39
539 ; CHECK: successors: %bb.40(0x40000000), %bb.100(0x40000000)
540 ; CHECK: [[ICMP39:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C39]]
541 ; CHECK: G_BRCOND [[ICMP39]](s1), %bb.40
542 ; CHECK: G_BR %bb.100
544 ; CHECK: successors: %bb.41(0x40000000), %bb.101(0x40000000)
545 ; CHECK: [[ICMP40:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C40]]
546 ; CHECK: G_BRCOND [[ICMP40]](s1), %bb.41
547 ; CHECK: G_BR %bb.101
549 ; CHECK: successors: %bb.42(0x40000000), %bb.102(0x40000000)
550 ; CHECK: [[ICMP41:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C41]]
551 ; CHECK: G_BRCOND [[ICMP41]](s1), %bb.42
552 ; CHECK: G_BR %bb.102
554 ; CHECK: successors: %bb.43(0x40000000), %bb.103(0x40000000)
555 ; CHECK: [[ICMP42:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C42]]
556 ; CHECK: G_BRCOND [[ICMP42]](s1), %bb.43
557 ; CHECK: G_BR %bb.103
559 ; CHECK: successors: %bb.44(0x40000000), %bb.104(0x40000000)
560 ; CHECK: [[ICMP43:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C43]]
561 ; CHECK: G_BRCOND [[ICMP43]](s1), %bb.44
562 ; CHECK: G_BR %bb.104
564 ; CHECK: successors: %bb.45(0x40000000), %bb.105(0x40000000)
565 ; CHECK: [[ICMP44:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C44]]
566 ; CHECK: G_BRCOND [[ICMP44]](s1), %bb.45
567 ; CHECK: G_BR %bb.105
569 ; CHECK: successors: %bb.46(0x40000000), %bb.106(0x40000000)
570 ; CHECK: [[ICMP45:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C45]]
571 ; CHECK: G_BRCOND [[ICMP45]](s1), %bb.46
572 ; CHECK: G_BR %bb.106
574 ; CHECK: successors: %bb.47(0x40000000), %bb.107(0x40000000)
575 ; CHECK: [[ICMP46:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C46]]
576 ; CHECK: G_BRCOND [[ICMP46]](s1), %bb.47
577 ; CHECK: G_BR %bb.107
579 ; CHECK: successors: %bb.48(0x40000000), %bb.108(0x40000000)
580 ; CHECK: [[ICMP47:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C47]]
581 ; CHECK: G_BRCOND [[ICMP47]](s1), %bb.48
582 ; CHECK: G_BR %bb.108
584 ; CHECK: successors: %bb.49(0x40000000), %bb.109(0x40000000)
585 ; CHECK: [[ICMP48:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C48]]
586 ; CHECK: G_BRCOND [[ICMP48]](s1), %bb.49
587 ; CHECK: G_BR %bb.109
589 ; CHECK: successors: %bb.50(0x40000000), %bb.110(0x40000000)
590 ; CHECK: [[ICMP49:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C49]]
591 ; CHECK: G_BRCOND [[ICMP49]](s1), %bb.50
592 ; CHECK: G_BR %bb.110
594 ; CHECK: successors: %bb.51(0x40000000), %bb.111(0x40000000)
595 ; CHECK: [[ICMP50:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C50]]
596 ; CHECK: G_BRCOND [[ICMP50]](s1), %bb.51
597 ; CHECK: G_BR %bb.111
599 ; CHECK: successors: %bb.52(0x40000000), %bb.112(0x40000000)
600 ; CHECK: [[ICMP51:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C51]]
601 ; CHECK: G_BRCOND [[ICMP51]](s1), %bb.52
602 ; CHECK: G_BR %bb.112
604 ; CHECK: successors: %bb.53(0x40000000), %bb.113(0x40000000)
605 ; CHECK: [[ICMP52:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C52]]
606 ; CHECK: G_BRCOND [[ICMP52]](s1), %bb.53
607 ; CHECK: G_BR %bb.113
609 ; CHECK: successors: %bb.54(0x40000000), %bb.114(0x40000000)
610 ; CHECK: [[ICMP53:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C53]]
611 ; CHECK: G_BRCOND [[ICMP53]](s1), %bb.54
612 ; CHECK: G_BR %bb.114
614 ; CHECK: successors: %bb.55(0x40000000), %bb.60(0x40000000)
615 ; CHECK: [[ICMP54:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C54]]
616 ; CHECK: G_BRCOND [[ICMP54]](s1), %bb.55
619 ; CHECK: successors: %bb.56(0x80000000)
622 ; CHECK: successors: %bb.56(0x80000000)
625 ; CHECK: successors: %bb.56(0x80000000)
628 ; CHECK: successors: %bb.56(0x80000000)
631 ; CHECK: successors: %bb.56(0x80000000)
634 ; CHECK: successors: %bb.56(0x80000000)
637 ; CHECK: successors: %bb.56(0x80000000)
640 ; CHECK: successors: %bb.56(0x80000000)
643 ; CHECK: successors: %bb.56(0x80000000)
646 ; CHECK: successors: %bb.56(0x80000000)
649 ; CHECK: successors: %bb.56(0x80000000)
652 ; CHECK: successors: %bb.56(0x80000000)
655 ; CHECK: successors: %bb.56(0x80000000)
658 ; CHECK: successors: %bb.56(0x80000000)
661 ; CHECK: successors: %bb.56(0x80000000)
664 ; CHECK: successors: %bb.56(0x80000000)
667 ; CHECK: successors: %bb.56(0x80000000)
670 ; CHECK: successors: %bb.56(0x80000000)
673 ; CHECK: successors: %bb.56(0x80000000)
676 ; CHECK: successors: %bb.56(0x80000000)
679 ; CHECK: successors: %bb.56(0x80000000)
682 ; CHECK: successors: %bb.56(0x80000000)
685 ; CHECK: successors: %bb.56(0x80000000)
688 ; CHECK: successors: %bb.56(0x80000000)
691 ; CHECK: successors: %bb.56(0x80000000)
694 ; CHECK: successors: %bb.56(0x80000000)
697 ; CHECK: successors: %bb.56(0x80000000)
700 ; CHECK: successors: %bb.56(0x80000000)
703 ; CHECK: successors: %bb.56(0x80000000)
706 ; CHECK: successors: %bb.56(0x80000000)
709 ; CHECK: successors: %bb.56(0x80000000)
712 ; CHECK: successors: %bb.56(0x80000000)
715 ; CHECK: successors: %bb.56(0x80000000)
718 ; CHECK: successors: %bb.56(0x80000000)
721 ; CHECK: successors: %bb.56(0x80000000)
724 ; CHECK: successors: %bb.56(0x80000000)
727 ; CHECK: successors: %bb.56(0x80000000)
730 ; CHECK: successors: %bb.56(0x80000000)
733 ; CHECK: successors: %bb.56(0x80000000)
736 ; CHECK: successors: %bb.56(0x80000000)
739 ; CHECK: successors: %bb.56(0x80000000)
742 ; CHECK: successors: %bb.56(0x80000000)
745 ; CHECK: successors: %bb.56(0x80000000)
748 ; CHECK: successors: %bb.56(0x80000000)
751 ; CHECK: successors: %bb.56(0x80000000)
754 ; CHECK: successors: %bb.56(0x80000000)
757 ; CHECK: successors: %bb.56(0x80000000)
760 ; CHECK: successors: %bb.56(0x80000000)
763 ; CHECK: successors: %bb.56(0x80000000)
766 ; CHECK: successors: %bb.56(0x80000000)
769 ; CHECK: successors: %bb.56(0x80000000)
772 ; CHECK: successors: %bb.56(0x80000000)
775 ; CHECK: successors: %bb.56(0x80000000)
778 ; CHECK: successors: %bb.56(0x80000000)
780 ; CHECK: successors: %bb.59(0x80000000)
781 ; CHECK: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[C55]](s64), %bb.1, [[C56]](s64), %bb.2, [[C57]](s64), %bb.3, [[C58]](s64), %bb.4, [[C59]](s64), %bb.5, [[C60]](s64), %bb.6, [[C61]](s64), %bb.7, [[C62]](s64), %bb.8, [[C63]](s64), %bb.9, [[C64]](s64), %bb.10, [[C65]](s64), %bb.11, [[C66]](s64), %bb.12, [[C67]](s64), %bb.13, [[C68]](s64), %bb.14, [[C69]](s64), %bb.15, [[C70]](s64), %bb.16, [[C71]](s64), %bb.17, [[C72]](s64), %bb.18, [[C73]](s64), %bb.19, [[C74]](s64), %bb.20, [[C75]](s64), %bb.21, [[C76]](s64), %bb.22, [[C77]](s64), %bb.23, [[C78]](s64), %bb.24, [[C79]](s64), %bb.25, [[C80]](s64), %bb.26, [[C81]](s64), %bb.27, [[C82]](s64), %bb.28, [[C83]](s64), %bb.29, [[C84]](s64), %bb.30, [[C85]](s64), %bb.31, [[C86]](s64), %bb.32, [[C87]](s64), %bb.33, [[C88]](s64), %bb.34, [[C89]](s64), %bb.35, [[C90]](s64), %bb.36, [[C91]](s64), %bb.37, [[C92]](s64), %bb.38, [[C93]](s64), %bb.39, [[C94]](s64), %bb.40, [[C95]](s64), %bb.41, [[C96]](s64), %bb.42, [[C97]](s64), %bb.43, [[C98]](s64), %bb.44, [[C99]](s64), %bb.45, [[C100]](s64), %bb.46, [[C101]](s64), %bb.47, [[C102]](s64), %bb.48, [[C103]](s64), %bb.49, [[C104]](s64), %bb.50, [[C105]](s64), %bb.51, [[C106]](s64), %bb.52, [[C107]](s64), %bb.53, [[C108]](s64), %bb.54, [[C109]](s64), %bb.55
782 ; CHECK: [[C110:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
783 ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[C110]], [[PHI]]
784 ; CHECK: [[GEP:%[0-9]+]]:_(p0) = G_GEP [[GV]], [[MUL]](s64)
785 ; CHECK: [[C111:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
786 ; CHECK: [[GEP1:%[0-9]+]]:_(p0) = G_GEP [[GEP]], [[C111]](s64)
787 ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[GEP1]](p0) :: (load 8 from %ir.tmp59)
788 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
789 ; CHECK: $x0 = COPY [[COPY]](p0)
790 ; CHECK: $x1 = COPY [[LOAD]](p0)
791 ; CHECK: BL @wibble, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $x0
792 ; CHECK: [[COPY3:%[0-9]+]]:_(p0) = COPY $x0
793 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
796 ; CHECK: successors: %bb.59(0x80000000)
797 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
798 ; CHECK: $x0 = COPY [[COPY]](p0)
799 ; CHECK: $x1 = COPY [[COPY2]](p0)
800 ; CHECK: BL @wibble, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $x0
801 ; CHECK: [[COPY4:%[0-9]+]]:_(p0) = COPY $x0
802 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
805 ; CHECK: successors: %bb.59(0x80000000)
806 ; CHECK: [[COPY5:%[0-9]+]]:_(p0) = COPY [[FRAME_INDEX]](p0)
807 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
808 ; CHECK: $w0 = COPY [[COPY1]](s32)
809 ; CHECK: $x1 = COPY [[COPY5]](p0)
810 ; CHECK: BL @baz, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit $x1
811 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
812 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
813 ; CHECK: $x0 = COPY [[COPY]](p0)
814 ; CHECK: $x1 = COPY [[COPY5]](p0)
815 ; CHECK: BL @wibble, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit-def $x0
816 ; CHECK: [[COPY6:%[0-9]+]]:_(p0) = COPY $x0
817 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
819 ; CHECK: RET_ReallyLR
821 ; CHECK: successors: %bb.58(0x40000000), %bb.57(0x40000000)
822 ; CHECK: [[ICMP55:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](p0), [[INTTOPTR]]
823 ; CHECK: G_BRCOND [[ICMP55]](s1), %bb.58
826 %tmp = alloca [16 x i32], align 4
827 switch i32 %arg1, label %bb69 [
879 i32 4352, label %bb53
880 i32 4353, label %bb54
881 i32 4354, label %bb55
882 i32 4355, label %bb56
1047 bb57: ; preds = %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50, %bb49, %bb48, %bb47, %bb46, %bb45, %bb44, %bb43, %bb42, %bb41, %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb
1048 %tmp58 = phi i64 [ 0, %bb ], [ 1, %bb3 ], [ 2, %bb4 ], [ 3, %bb5 ], [ 4, %bb6 ], [ 5, %bb7 ], [ 6, %bb8 ], [ 7, %bb9 ], [ 8, %bb10 ], [ 9, %bb11 ], [ 10, %bb12 ], [ 11, %bb13 ], [ 12, %bb14 ], [ 13, %bb15 ], [ 14, %bb16 ], [ 15, %bb17 ], [ 16, %bb18 ], [ 17, %bb19 ], [ 18, %bb20 ], [ 19, %bb21 ], [ 20, %bb22 ], [ 21, %bb23 ], [ 22, %bb24 ], [ 23, %bb25 ], [ 24, %bb26 ], [ 25, %bb27 ], [ 26, %bb28 ], [ 27, %bb29 ], [ 28, %bb30 ], [ 29, %bb31 ], [ 30, %bb32 ], [ 31, %bb33 ], [ 32, %bb34 ], [ 33, %bb35 ], [ 34, %bb36 ], [ 35, %bb37 ], [ 36, %bb38 ], [ 37, %bb39 ], [ 38, %bb40 ], [ 39, %bb41 ], [ 40, %bb42 ], [ 41, %bb43 ], [ 42, %bb44 ], [ 43, %bb45 ], [ 44, %bb46 ], [ 45, %bb47 ], [ 46, %bb48 ], [ 47, %bb49 ], [ 48, %bb50 ], [ 49, %bb51 ], [ 50, %bb52 ], [ 51, %bb53 ], [ 52, %bb54 ], [ 53, %bb55 ], [ 54, %bb56 ]
1049 %tmp59 = getelementptr inbounds [55 x %0], [55 x %0]* @global, i64 0, i64 %tmp58, i32 1
1050 %tmp60 = load i32*, i32** %tmp59, align 8
1051 %tmp61 = call %1* @wibble(%1* %arg, i32* %tmp60)
1054 bb62: ; preds = %bb69
1055 %tmp63 = call %1* @wibble(%1* %arg, i32* nonnull %arg2)
1058 bb64: ; preds = %bb69
1059 %tmp65 = bitcast [16 x i32]* %tmp to i8*
1060 %tmp66 = getelementptr inbounds [16 x i32], [16 x i32]* %tmp, i64 0, i64 0
1061 call void @baz(i32 %arg1, i32* %tmp66)
1062 %tmp67 = call %1* @wibble(%1* %arg, i32* %tmp66)
1065 bb68: ; preds = %bb64, %bb62, %bb57
1069 %tmp70 = icmp eq i32* %arg2, null
1070 br i1 %tmp70, label %bb64, label %bb62
1073 declare %1* @wibble(%1* returned, i32*)
1075 declare void @baz(i32, i32*)
1078 ; Check that with 2 jump tables, the phi node doesn't lose the edge from the
1080 define void @jt_2_tables_phi_edge_from_second() {
1081 ; CHECK-LABEL: name: jt_2_tables_phi_edge_from_second
1082 ; CHECK: bb.1.entry:
1083 ; CHECK: successors: %bb.6(0x40000000), %bb.19(0x40000000)
1084 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
1085 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 123
1086 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 263
1087 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 265
1088 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 270
1089 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 279
1090 ; CHECK: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1091 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 37
1092 ; CHECK: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 43
1093 ; CHECK: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 45
1094 ; CHECK: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 60
1095 ; CHECK: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 278
1096 ; CHECK: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 280
1097 ; CHECK: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 281
1098 ; CHECK: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 283
1099 ; CHECK: [[DEF2:%[0-9]+]]:_(s1) = G_IMPLICIT_DEF
1100 ; CHECK: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1101 ; CHECK: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1102 ; CHECK: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1103 ; CHECK: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
1104 ; CHECK: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
1105 ; CHECK: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
1106 ; CHECK: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
1107 ; CHECK: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
1108 ; CHECK: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
1109 ; CHECK: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[DEF]](p0) :: (load 4 from `i32* undef`, align 8)
1110 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C]]
1111 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.6
1112 ; CHECK: G_BR %bb.19
1113 ; CHECK: bb.19.entry:
1114 ; CHECK: successors: %bb.4(0x40000000), %bb.20(0x40000000)
1115 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C1]]
1116 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.4
1117 ; CHECK: G_BR %bb.20
1118 ; CHECK: bb.20.entry:
1119 ; CHECK: successors: %bb.7(0x40000000), %bb.21(0x40000000)
1120 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C2]]
1121 ; CHECK: G_BRCOND [[ICMP2]](s1), %bb.7
1122 ; CHECK: G_BR %bb.21
1123 ; CHECK: bb.21.entry:
1124 ; CHECK: successors: %bb.2(0x40000000), %bb.22(0x40000000)
1125 ; CHECK: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C3]]
1126 ; CHECK: G_BRCOND [[ICMP3]](s1), %bb.2
1127 ; CHECK: G_BR %bb.22
1128 ; CHECK: bb.22.entry:
1129 ; CHECK: successors: %bb.5(0x40000000), %bb.23(0x40000000)
1130 ; CHECK: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C4]]
1131 ; CHECK: G_BRCOND [[ICMP4]](s1), %bb.5
1132 ; CHECK: G_BR %bb.23
1133 ; CHECK: bb.23.entry:
1134 ; CHECK: successors: %bb.3(0x80000000)
1136 ; CHECK: bb.2.if.then:
1137 ; CHECK: successors:
1138 ; CHECK: bb.3.sw.bb2.i41:
1139 ; CHECK: successors:
1140 ; CHECK: bb.4.sw.bb7.i44:
1141 ; CHECK: successors:
1142 ; CHECK: bb.5.sw.bb8.i45:
1143 ; CHECK: successors:
1144 ; CHECK: bb.6.sw.bb13.i47:
1145 ; CHECK: successors:
1146 ; CHECK: bb.7.sw.bb14.i48:
1147 ; CHECK: successors: %bb.10(0x40000000), %bb.24(0x40000000)
1148 ; CHECK: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C5]]
1149 ; CHECK: G_BRCOND [[ICMP5]](s1), %bb.10
1150 ; CHECK: G_BR %bb.24
1151 ; CHECK: bb.24.sw.bb14.i48:
1152 ; CHECK: successors: %bb.16(0x40000000), %bb.25(0x40000000)
1153 ; CHECK: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C6]]
1154 ; CHECK: G_BRCOND [[ICMP6]](s1), %bb.16
1155 ; CHECK: G_BR %bb.25
1156 ; CHECK: bb.25.sw.bb14.i48:
1157 ; CHECK: successors: %bb.9(0x40000000), %bb.26(0x40000000)
1158 ; CHECK: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C7]]
1159 ; CHECK: G_BRCOND [[ICMP7]](s1), %bb.9
1160 ; CHECK: G_BR %bb.26
1161 ; CHECK: bb.26.sw.bb14.i48:
1162 ; CHECK: successors: %bb.14(0x40000000), %bb.27(0x40000000)
1163 ; CHECK: [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C8]]
1164 ; CHECK: G_BRCOND [[ICMP8]](s1), %bb.14
1165 ; CHECK: G_BR %bb.27
1166 ; CHECK: bb.27.sw.bb14.i48:
1167 ; CHECK: successors: %bb.11(0x40000000), %bb.28(0x40000000)
1168 ; CHECK: [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C9]]
1169 ; CHECK: G_BRCOND [[ICMP9]](s1), %bb.11
1170 ; CHECK: G_BR %bb.28
1171 ; CHECK: bb.28.sw.bb14.i48:
1172 ; CHECK: successors: %bb.13(0x40000000), %bb.29(0x40000000)
1173 ; CHECK: [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C10]]
1174 ; CHECK: G_BRCOND [[ICMP10]](s1), %bb.13
1175 ; CHECK: G_BR %bb.29
1176 ; CHECK: bb.29.sw.bb14.i48:
1177 ; CHECK: successors: %bb.15(0x40000000), %bb.30(0x40000000)
1178 ; CHECK: [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C11]]
1179 ; CHECK: G_BRCOND [[ICMP11]](s1), %bb.15
1180 ; CHECK: G_BR %bb.30
1181 ; CHECK: bb.30.sw.bb14.i48:
1182 ; CHECK: successors: %bb.12(0x40000000), %bb.18(0x40000000)
1183 ; CHECK: [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C12]]
1184 ; CHECK: G_BRCOND [[ICMP12]](s1), %bb.12
1185 ; CHECK: G_BR %bb.18
1186 ; CHECK: bb.8.sw.default.i49:
1187 ; CHECK: successors:
1188 ; CHECK: bb.9.sw.bb1.i:
1189 ; CHECK: successors: %bb.16(0x80000000)
1190 ; CHECK: G_BR %bb.16
1191 ; CHECK: bb.10.sw.bb4.i:
1192 ; CHECK: successors: %bb.16(0x80000000)
1193 ; CHECK: G_BR %bb.16
1194 ; CHECK: bb.11.sw.bb6.i:
1195 ; CHECK: successors: %bb.16(0x80000000)
1196 ; CHECK: G_BR %bb.16
1197 ; CHECK: bb.12.sw.bb7.i:
1198 ; CHECK: successors: %bb.16(0x80000000)
1199 ; CHECK: G_BR %bb.16
1200 ; CHECK: bb.13.sw.bb8.i:
1201 ; CHECK: successors: %bb.16(0x80000000)
1202 ; CHECK: G_BR %bb.16
1203 ; CHECK: bb.14.sw.bb9.i:
1204 ; CHECK: successors: %bb.16(0x80000000)
1205 ; CHECK: G_BR %bb.16
1206 ; CHECK: bb.15.sw.bb12.i:
1207 ; CHECK: successors: %bb.16(0x80000000)
1208 ; CHECK: bb.16.land.rhs.lr.ph:
1209 ; CHECK: successors: %bb.17(0x40000000), %bb.18(0x40000000)
1210 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C13]](s32), %bb.24, [[C14]](s32), %bb.9, [[C15]](s32), %bb.10, [[C16]](s32), %bb.11, [[C17]](s32), %bb.12, [[C18]](s32), %bb.13, [[C19]](s32), %bb.14, [[C20]](s32), %bb.15
1211 ; CHECK: G_BRCOND [[DEF2]](s1), %bb.17
1212 ; CHECK: G_BR %bb.18
1213 ; CHECK: bb.17.while.body:
1214 ; CHECK: successors:
1215 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1216 ; CHECK: BL @jt_2_tables_phi_edge_from_second, csr_aarch64_aapcs, implicit-def $lr, implicit $sp
1217 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1218 ; CHECK: bb.18.while.end:
1219 ; CHECK: [[PHI1:%[0-9]+]]:_(s32) = G_PHI [[C21]](s32), %bb.30, [[PHI]](s32), %bb.16
1220 ; CHECK: RET_ReallyLR
1222 %0 = load i32, i32* undef, align 8
1223 switch i32 %0, label %sw.default.i49 [
1224 i32 270, label %if.then
1225 i32 265, label %sw.bb14.i48
1226 i32 123, label %sw.bb13.i47
1227 i32 279, label %sw.bb8.i45
1228 i32 286, label %sw.bb2.i41
1229 i32 263, label %sw.bb7.i44
1232 if.then: ; preds = %entry
1235 sw.bb2.i41: ; preds = %entry
1238 sw.bb7.i44: ; preds = %entry
1241 sw.bb8.i45: ; preds = %entry
1244 sw.bb13.i47: ; preds = %entry
1247 sw.bb14.i48: ; preds = %entry
1248 switch i32 undef, label %while.end [
1249 i32 43, label %land.rhs.lr.ph
1250 i32 45, label %sw.bb1.i
1251 i32 280, label %sw.bb8.i
1252 i32 60, label %sw.bb9.i
1253 i32 37, label %sw.bb4.i
1254 i32 281, label %sw.bb12.i
1255 i32 278, label %sw.bb6.i
1256 i32 283, label %sw.bb7.i
1259 sw.default.i49: ; preds = %entry
1262 sw.bb1.i: ; preds = %sw.bb14.i48
1263 br label %land.rhs.lr.ph
1265 sw.bb4.i: ; preds = %sw.bb14.i48
1266 br label %land.rhs.lr.ph
1268 sw.bb6.i: ; preds = %sw.bb14.i48
1269 br label %land.rhs.lr.ph
1271 sw.bb7.i: ; preds = %sw.bb14.i48
1272 br label %land.rhs.lr.ph
1274 sw.bb8.i: ; preds = %sw.bb14.i48
1275 br label %land.rhs.lr.ph
1277 sw.bb9.i: ; preds = %sw.bb14.i48
1278 br label %land.rhs.lr.ph
1280 sw.bb12.i: ; preds = %sw.bb14.i48
1281 br label %land.rhs.lr.ph
1283 land.rhs.lr.ph: ; preds = %sw.bb12.i, %sw.bb9.i, %sw.bb8.i, %sw.bb7.i, %sw.bb6.i, %sw.bb4.i, %sw.bb1.i, %sw.bb14.i48
1284 %retval.0.i.ph = phi i32 [ 0, %sw.bb14.i48 ], [ 1, %sw.bb1.i ], [ 4, %sw.bb4.i ], [ 6, %sw.bb6.i ], [ 7, %sw.bb7.i ], [ 8, %sw.bb8.i ], [ 9, %sw.bb9.i ], [ 12, %sw.bb12.i ]
1285 br i1 undef, label %while.body, label %while.end
1287 while.body: ; preds = %land.rhs.lr.ph
1288 call void @jt_2_tables_phi_edge_from_second()
1291 while.end: ; preds = %land.rhs.lr.ph, %sw.bb14.i48
1292 %op.0.lcssa = phi i32 [ 15, %sw.bb14.i48 ], [ %retval.0.i.ph, %land.rhs.lr.ph ]
1297 define i32 @range_test(i32 %x) {
1298 ; CHECK-LABEL: name: range_test
1299 ; CHECK: bb.1.entry:
1300 ; CHECK: successors: %bb.3(0x40000000), %bb.5(0x40000000)
1301 ; CHECK: liveins: $w0
1302 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
1303 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
1304 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
1305 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1306 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
1307 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1308 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
1309 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.3
1311 ; CHECK: bb.5.entry:
1312 ; CHECK: successors: %bb.2(0x40000000), %bb.4(0x40000000)
1313 ; CHECK: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C1]]
1314 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1315 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ule), [[SUB]](s32), [[C5]]
1316 ; CHECK: [[C6:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
1317 ; CHECK: [[XOR:%[0-9]+]]:_(s1) = G_XOR [[ICMP1]], [[C6]]
1318 ; CHECK: G_BRCOND [[XOR]](s1), %bb.4
1320 ; CHECK: bb.2.sw.bb:
1321 ; CHECK: successors: %bb.4(0x80000000)
1322 ; CHECK: %12:_(s32) = nsw G_ADD [[COPY]], [[C3]]
1324 ; CHECK: bb.3.sw.bb1:
1325 ; CHECK: successors: %bb.4(0x80000000)
1326 ; CHECK: %10:_(s32) = nsw G_MUL [[COPY]], [[C2]]
1327 ; CHECK: bb.4.return:
1328 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI %10(s32), %bb.3, %12(s32), %bb.2, [[C4]](s32), %bb.5
1329 ; CHECK: $w0 = COPY [[PHI]](s32)
1330 ; CHECK: RET_ReallyLR implicit $w0
1332 switch i32 %x, label %return [
1333 i32 24, label %sw.bb
1334 i32 25, label %sw.bb
1335 i32 26, label %sw.bb
1336 i32 6, label %sw.bb1
1340 %add = add nsw i32 %x, 42
1344 %mul = mul nsw i32 %x, 3
1348 %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
1352 define i64* @test_range_phi_switch_cycle() {
1353 ; CHECK-LABEL: name: test_range_phi_switch_cycle
1355 ; CHECK: successors: %bb.2(0x80000000)
1356 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1357 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 305
1358 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 307
1359 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 497
1360 ; CHECK: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1361 ; CHECK: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1362 ; CHECK: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1364 ; CHECK: successors: %bb.2(0x40000000), %bb.6(0x40000000)
1365 ; CHECK: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[DEF]](s32), %bb.1, [[C3]](s32), %bb.3, [[C4]](s32), %bb.4, [[C5]](s32), %bb.2
1366 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C]]
1367 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.2
1370 ; CHECK: successors: %bb.3(0x40000000), %bb.7(0x40000000)
1371 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C1]]
1372 ; CHECK: G_BRCOND [[ICMP1]](s1), %bb.3
1375 ; CHECK: successors: %bb.4(0x40000000), %bb.5(0x40000000)
1376 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C2]]
1377 ; CHECK: G_BRCOND [[ICMP2]](s1), %bb.4
1380 ; CHECK: successors: %bb.2(0x80000000)
1383 ; CHECK: successors: %bb.2(0x80000000)
1386 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1387 ; CHECK: $w0 = COPY [[PHI]](s32)
1388 ; CHECK: BL @ham, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit-def $x0
1389 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
1390 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1394 bb1: ; preds = %bb3, %bb2, %bb1, %bb
1395 %tmp = phi i32 [undef, %bb ], [ 4, %bb2 ], [ 3, %bb3 ], [ 1, %bb1]
1396 switch i32 undef, label %bb4 [
1409 %tmp5 = tail call i64* @ham(i32 %tmp)
1413 declare i64* @ham(i32)
1415 define internal void @bar() unnamed_addr #1 {
1416 ; CHECK-LABEL: name: bar
1417 ; CHECK: bb.1 (%ir-block.0):
1421 define i1 @i1_value_cmp_is_signed(i1) {
1422 ; CHECK-LABEL: name: i1_value_cmp_is_signed
1423 ; CHECK: bb.1.Entry:
1424 ; CHECK: successors: %bb.3(0x40000000), %bb.2(0x40000000)
1425 ; CHECK: liveins: $w0
1426 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
1427 ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
1428 ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
1429 ; CHECK: [[C1:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
1430 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(sle), [[TRUNC]](s1), [[C1]]
1431 ; CHECK: G_BRCOND [[ICMP]](s1), %bb.3
1433 ; CHECK: bb.2.BadValue:
1434 ; CHECK: successors:
1435 ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1436 ; CHECK: BL @bar, csr_aarch64_aapcs, implicit-def $lr, implicit $sp
1437 ; CHECK: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1438 ; CHECK: bb.3.OkValue:
1439 ; CHECK: [[ZEXT:%[0-9]+]]:_(s8) = G_ZEXT [[TRUNC]](s1)
1440 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ZEXT]](s8)
1441 ; CHECK: $w0 = COPY [[ANYEXT]](s32)
1442 ; CHECK: RET_ReallyLR implicit $w0
1444 switch i1 %0, label %BadValue [
1445 i1 false, label %OkValue
1446 i1 true, label %OkValue
1450 call fastcc void @bar()