xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll (revision b1f9440fa9286638bb1fe72a14d220770d1987cc)
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2; RUN: llc -global-isel -mtriple aarch64 -aarch64-min-jump-table-entries=4 -O0 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -simplify-mir -verify-machineinstrs %s -o - 2>&1 | FileCheck %s
3
4define i32 @switch(i32 %argc) {
5  ; CHECK-LABEL: name: switch
6  ; CHECK: bb.1.entry:
7  ; CHECK-NEXT:   liveins: $w0
8  ; CHECK-NEXT: {{  $}}
9  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
10  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 100
11  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 200
12  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
13  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
14  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
15  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
16  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
17  ; CHECK-NEXT:   G_BR %bb.6
18  ; CHECK-NEXT: {{  $}}
19  ; CHECK-NEXT: bb.6.entry:
20  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
21  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.4
22  ; CHECK-NEXT:   G_BR %bb.2
23  ; CHECK-NEXT: {{  $}}
24  ; CHECK-NEXT: bb.2.default:
25  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C4]]
26  ; CHECK-NEXT:   G_BR %bb.5
27  ; CHECK-NEXT: {{  $}}
28  ; CHECK-NEXT: bb.3.case100:
29  ; CHECK-NEXT:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C3]]
30  ; CHECK-NEXT:   G_BR %bb.5
31  ; CHECK-NEXT: {{  $}}
32  ; CHECK-NEXT: bb.4.case200:
33  ; CHECK-NEXT:   [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]
34  ; CHECK-NEXT:   G_BR %bb.5
35  ; CHECK-NEXT: {{  $}}
36  ; CHECK-NEXT: bb.5.return:
37  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[ADD]](s32), %bb.2, [[ADD1]](s32), %bb.3, [[ADD2]](s32), %bb.4
38  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)
39  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
40entry:
41  switch i32 %argc, label %default [
42    i32 100, label %case100
43    i32 200, label %case200
44  ]
45
46default:
47  %tmp0 = add i32 %argc, 0
48  br label %return
49
50case100:
51  %tmp1 = add i32 %argc, 1
52  br label %return
53
54case200:
55  %tmp2 = add i32 %argc, 2
56  br label %return
57
58return:
59  %res = phi i32 [ %tmp0, %default ], [ %tmp1, %case100 ], [ %tmp2, %case200 ]
60  ret i32 %res
61}
62
63define i32 @test_cfg_remap(i32 %in) {
64  ; CHECK-LABEL: name: test_cfg_remap
65  ; CHECK: bb.1.entry:
66  ; CHECK-NEXT:   liveins: $w0
67  ; CHECK-NEXT: {{  $}}
68  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
69  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
70  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57
71  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
72  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
73  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
74  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2
75  ; CHECK-NEXT:   G_BR %bb.5
76  ; CHECK-NEXT: {{  $}}
77  ; CHECK-NEXT: bb.5.entry:
78  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
79  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.3
80  ; CHECK-NEXT:   G_BR %bb.4
81  ; CHECK-NEXT: {{  $}}
82  ; CHECK-NEXT: bb.2.next:
83  ; CHECK-NEXT:   G_BR %bb.4
84  ; CHECK-NEXT: {{  $}}
85  ; CHECK-NEXT: bb.3.other:
86  ; CHECK-NEXT:   $w0 = COPY [[DEF]](s32)
87  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
88  ; CHECK-NEXT: {{  $}}
89  ; CHECK-NEXT: bb.4.phi.block:
90  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.5, [[C2]](s32), %bb.2
91  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)
92  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
93entry:
94  switch i32 %in, label %phi.block [i32 1, label %next
95                                    i32 57, label %other]
96
97next:
98  br label %phi.block
99
100other:
101  ret i32 undef
102
103phi.block:
104  %res = phi i32 [1, %entry], [42, %next]
105  ret i32 %res
106}
107
108define i32 @test_cfg_remap_multiple_preds(i32 %in) {
109  ; CHECK-LABEL: name: test_cfg_remap_multiple_preds
110  ; CHECK: bb.1.entry:
111  ; CHECK-NEXT:   liveins: $w0
112  ; CHECK-NEXT: {{  $}}
113  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
114  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
115  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57
116  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 128
117  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
118  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
119  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
120  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
121  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
122  ; CHECK-NEXT:   G_BR %bb.6
123  ; CHECK-NEXT: {{  $}}
124  ; CHECK-NEXT: bb.6.entry:
125  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]]
126  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.4
127  ; CHECK-NEXT:   G_BR %bb.7
128  ; CHECK-NEXT: {{  $}}
129  ; CHECK-NEXT: bb.7.entry:
130  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C2]]
131  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.5
132  ; CHECK-NEXT:   G_BR %bb.8
133  ; CHECK-NEXT: {{  $}}
134  ; CHECK-NEXT: bb.8.entry:
135  ; CHECK-NEXT:   G_BR %bb.5
136  ; CHECK-NEXT: {{  $}}
137  ; CHECK-NEXT: bb.2.odd:
138  ; CHECK-NEXT:   successors:
139  ; CHECK-NEXT: {{  $}}
140  ; CHECK-NEXT: bb.3.next:
141  ; CHECK-NEXT:   G_BR %bb.5
142  ; CHECK-NEXT: {{  $}}
143  ; CHECK-NEXT: bb.4.other:
144  ; CHECK-NEXT:   $w0 = COPY [[DEF]](s32)
145  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
146  ; CHECK-NEXT: {{  $}}
147  ; CHECK-NEXT: bb.5.phi.block:
148  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.7, [[C]](s32), %bb.8, [[C4]](s32), %bb.3
149  ; CHECK-NEXT:   $w0 = COPY [[C3]](s32)
150  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
151entry:
152  switch i32 %in, label %odd [i32 1, label %next
153                              i32 57, label %other
154                              i32 128, label %phi.block
155                              i32 256, label %phi.block]
156odd:
157  unreachable
158
159next:
160  br label %phi.block
161
162other:
163  ret i32 undef
164
165phi.block:
166  %res = phi i32 [1, %entry], [1, %entry], [42, %next]
167  ret i32 12
168}
169
170define i32 @jt_test(i32 %x) {
171  ; CHECK-LABEL: name: jt_test
172  ; CHECK: bb.1.entry:
173  ; CHECK-NEXT:   liveins: $w0
174  ; CHECK-NEXT: {{  $}}
175  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
176  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 71
177  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
178  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
179  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
180  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
181  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C4]]
182  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[SUB]](s32)
183  ; CHECK-NEXT:   [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)
184  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[ZEXT]](s64), [[ZEXT1]]
185  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4
186  ; CHECK-NEXT: {{  $}}
187  ; CHECK-NEXT: bb.5.entry:
188  ; CHECK-NEXT:   successors: %bb.3, %bb.4, %bb.2
189  ; CHECK-NEXT: {{  $}}
190  ; CHECK-NEXT:   [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.0
191  ; CHECK-NEXT:   G_BRJT [[JUMP_TABLE]](p0), %jump-table.0, [[ZEXT]](s64)
192  ; CHECK-NEXT: {{  $}}
193  ; CHECK-NEXT: bb.2.sw.bb:
194  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = nsw G_ADD [[COPY]], [[C2]]
195  ; CHECK-NEXT:   G_BR %bb.4
196  ; CHECK-NEXT: {{  $}}
197  ; CHECK-NEXT: bb.3.sw.bb1:
198  ; CHECK-NEXT:   [[MUL:%[0-9]+]]:_(s32) = nsw G_MUL [[COPY]], [[C1]]
199  ; CHECK-NEXT:   G_BR %bb.4
200  ; CHECK-NEXT: {{  $}}
201  ; CHECK-NEXT: bb.4.return:
202  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[MUL]](s32), %bb.3, [[ADD]](s32), %bb.2, [[C3]](s32), %bb.1, [[C3]](s32), %bb.5
203  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)
204  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
205entry:
206  switch i32 %x, label %return [
207    i32 75, label %sw.bb
208    i32 34, label %sw.bb
209    i32 56, label %sw.bb
210    i32 35, label %sw.bb
211    i32 40, label %sw.bb
212    i32 4, label %sw.bb1
213    i32 5, label %sw.bb1
214    i32 6, label %sw.bb1
215  ]
216
217sw.bb:
218  %add = add nsw i32 %x, 42
219  br label %return
220
221sw.bb1:
222  %mul = mul nsw i32 %x, 3
223  br label %return
224
225return:
226  %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
227  ret i32 %retval.0
228}
229
230%0 = type { i32, ptr }
231%1 = type { ptr, i32, i32 }
232
233@global = external hidden constant [55 x %0], align 8
234
235define void @jt_multiple_jump_tables(ptr %arg, i32 %arg1, ptr %arg2) {
236  ; CHECK-LABEL: name: jt_multiple_jump_tables
237  ; CHECK: bb.1.bb:
238  ; CHECK-NEXT:   liveins: $w1, $x0, $x2
239  ; CHECK-NEXT: {{  $}}
240  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
241  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
242  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
243  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
244  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
245  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
246  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
247  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
248  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
249  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
250  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
251  ; CHECK-NEXT:   [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
252  ; CHECK-NEXT:   [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 13
253  ; CHECK-NEXT:   [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 14
254  ; CHECK-NEXT:   [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
255  ; CHECK-NEXT:   [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
256  ; CHECK-NEXT:   [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 17
257  ; CHECK-NEXT:   [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 18
258  ; CHECK-NEXT:   [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
259  ; CHECK-NEXT:   [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
260  ; CHECK-NEXT:   [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 21
261  ; CHECK-NEXT:   [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 22
262  ; CHECK-NEXT:   [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
263  ; CHECK-NEXT:   [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
264  ; CHECK-NEXT:   [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 25
265  ; CHECK-NEXT:   [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 26
266  ; CHECK-NEXT:   [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 27
267  ; CHECK-NEXT:   [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 28
268  ; CHECK-NEXT:   [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 29
269  ; CHECK-NEXT:   [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 30
270  ; CHECK-NEXT:   [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
271  ; CHECK-NEXT:   [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
272  ; CHECK-NEXT:   [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 33
273  ; CHECK-NEXT:   [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 34
274  ; CHECK-NEXT:   [[C31:%[0-9]+]]:_(s32) = G_CONSTANT i32 35
275  ; CHECK-NEXT:   [[C32:%[0-9]+]]:_(s32) = G_CONSTANT i32 36
276  ; CHECK-NEXT:   [[C33:%[0-9]+]]:_(s32) = G_CONSTANT i32 37
277  ; CHECK-NEXT:   [[C34:%[0-9]+]]:_(s32) = G_CONSTANT i32 38
278  ; CHECK-NEXT:   [[C35:%[0-9]+]]:_(s32) = G_CONSTANT i32 39
279  ; CHECK-NEXT:   [[C36:%[0-9]+]]:_(s32) = G_CONSTANT i32 41
280  ; CHECK-NEXT:   [[C37:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
281  ; CHECK-NEXT:   [[C38:%[0-9]+]]:_(s32) = G_CONSTANT i32 43
282  ; CHECK-NEXT:   [[C39:%[0-9]+]]:_(s32) = G_CONSTANT i32 44
283  ; CHECK-NEXT:   [[C40:%[0-9]+]]:_(s32) = G_CONSTANT i32 45
284  ; CHECK-NEXT:   [[C41:%[0-9]+]]:_(s32) = G_CONSTANT i32 46
285  ; CHECK-NEXT:   [[C42:%[0-9]+]]:_(s32) = G_CONSTANT i32 47
286  ; CHECK-NEXT:   [[C43:%[0-9]+]]:_(s32) = G_CONSTANT i32 48
287  ; CHECK-NEXT:   [[C44:%[0-9]+]]:_(s32) = G_CONSTANT i32 49
288  ; CHECK-NEXT:   [[C45:%[0-9]+]]:_(s32) = G_CONSTANT i32 50
289  ; CHECK-NEXT:   [[C46:%[0-9]+]]:_(s32) = G_CONSTANT i32 51
290  ; CHECK-NEXT:   [[C47:%[0-9]+]]:_(s32) = G_CONSTANT i32 52
291  ; CHECK-NEXT:   [[C48:%[0-9]+]]:_(s32) = G_CONSTANT i32 53
292  ; CHECK-NEXT:   [[C49:%[0-9]+]]:_(s32) = G_CONSTANT i32 54
293  ; CHECK-NEXT:   [[C50:%[0-9]+]]:_(s32) = G_CONSTANT i32 55
294  ; CHECK-NEXT:   [[C51:%[0-9]+]]:_(s32) = G_CONSTANT i32 4352
295  ; CHECK-NEXT:   [[C52:%[0-9]+]]:_(s32) = G_CONSTANT i32 4353
296  ; CHECK-NEXT:   [[C53:%[0-9]+]]:_(s32) = G_CONSTANT i32 4354
297  ; CHECK-NEXT:   [[C54:%[0-9]+]]:_(s32) = G_CONSTANT i32 4355
298  ; CHECK-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global
299  ; CHECK-NEXT:   [[C55:%[0-9]+]]:_(p0) = G_CONSTANT i64 0
300  ; CHECK-NEXT:   [[C56:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
301  ; CHECK-NEXT:   [[C57:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
302  ; CHECK-NEXT:   [[C58:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
303  ; CHECK-NEXT:   [[C59:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
304  ; CHECK-NEXT:   [[C60:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
305  ; CHECK-NEXT:   [[C61:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
306  ; CHECK-NEXT:   [[C62:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
307  ; CHECK-NEXT:   [[C63:%[0-9]+]]:_(s64) = G_CONSTANT i64 7
308  ; CHECK-NEXT:   [[C64:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
309  ; CHECK-NEXT:   [[C65:%[0-9]+]]:_(s64) = G_CONSTANT i64 9
310  ; CHECK-NEXT:   [[C66:%[0-9]+]]:_(s64) = G_CONSTANT i64 10
311  ; CHECK-NEXT:   [[C67:%[0-9]+]]:_(s64) = G_CONSTANT i64 11
312  ; CHECK-NEXT:   [[C68:%[0-9]+]]:_(s64) = G_CONSTANT i64 12
313  ; CHECK-NEXT:   [[C69:%[0-9]+]]:_(s64) = G_CONSTANT i64 13
314  ; CHECK-NEXT:   [[C70:%[0-9]+]]:_(s64) = G_CONSTANT i64 14
315  ; CHECK-NEXT:   [[C71:%[0-9]+]]:_(s64) = G_CONSTANT i64 15
316  ; CHECK-NEXT:   [[C72:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
317  ; CHECK-NEXT:   [[C73:%[0-9]+]]:_(s64) = G_CONSTANT i64 17
318  ; CHECK-NEXT:   [[C74:%[0-9]+]]:_(s64) = G_CONSTANT i64 18
319  ; CHECK-NEXT:   [[C75:%[0-9]+]]:_(s64) = G_CONSTANT i64 19
320  ; CHECK-NEXT:   [[C76:%[0-9]+]]:_(s64) = G_CONSTANT i64 20
321  ; CHECK-NEXT:   [[C77:%[0-9]+]]:_(s64) = G_CONSTANT i64 21
322  ; CHECK-NEXT:   [[C78:%[0-9]+]]:_(s64) = G_CONSTANT i64 22
323  ; CHECK-NEXT:   [[C79:%[0-9]+]]:_(s64) = G_CONSTANT i64 23
324  ; CHECK-NEXT:   [[C80:%[0-9]+]]:_(s64) = G_CONSTANT i64 24
325  ; CHECK-NEXT:   [[C81:%[0-9]+]]:_(s64) = G_CONSTANT i64 25
326  ; CHECK-NEXT:   [[C82:%[0-9]+]]:_(s64) = G_CONSTANT i64 26
327  ; CHECK-NEXT:   [[C83:%[0-9]+]]:_(s64) = G_CONSTANT i64 27
328  ; CHECK-NEXT:   [[C84:%[0-9]+]]:_(s64) = G_CONSTANT i64 28
329  ; CHECK-NEXT:   [[C85:%[0-9]+]]:_(s64) = G_CONSTANT i64 29
330  ; CHECK-NEXT:   [[C86:%[0-9]+]]:_(s64) = G_CONSTANT i64 30
331  ; CHECK-NEXT:   [[C87:%[0-9]+]]:_(s64) = G_CONSTANT i64 31
332  ; CHECK-NEXT:   [[C88:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
333  ; CHECK-NEXT:   [[C89:%[0-9]+]]:_(s64) = G_CONSTANT i64 33
334  ; CHECK-NEXT:   [[C90:%[0-9]+]]:_(s64) = G_CONSTANT i64 34
335  ; CHECK-NEXT:   [[C91:%[0-9]+]]:_(s64) = G_CONSTANT i64 35
336  ; CHECK-NEXT:   [[C92:%[0-9]+]]:_(s64) = G_CONSTANT i64 36
337  ; CHECK-NEXT:   [[C93:%[0-9]+]]:_(s64) = G_CONSTANT i64 37
338  ; CHECK-NEXT:   [[C94:%[0-9]+]]:_(s64) = G_CONSTANT i64 38
339  ; CHECK-NEXT:   [[C95:%[0-9]+]]:_(s64) = G_CONSTANT i64 39
340  ; CHECK-NEXT:   [[C96:%[0-9]+]]:_(s64) = G_CONSTANT i64 40
341  ; CHECK-NEXT:   [[C97:%[0-9]+]]:_(s64) = G_CONSTANT i64 41
342  ; CHECK-NEXT:   [[C98:%[0-9]+]]:_(s64) = G_CONSTANT i64 42
343  ; CHECK-NEXT:   [[C99:%[0-9]+]]:_(s64) = G_CONSTANT i64 43
344  ; CHECK-NEXT:   [[C100:%[0-9]+]]:_(s64) = G_CONSTANT i64 44
345  ; CHECK-NEXT:   [[C101:%[0-9]+]]:_(s64) = G_CONSTANT i64 45
346  ; CHECK-NEXT:   [[C102:%[0-9]+]]:_(s64) = G_CONSTANT i64 46
347  ; CHECK-NEXT:   [[C103:%[0-9]+]]:_(s64) = G_CONSTANT i64 47
348  ; CHECK-NEXT:   [[C104:%[0-9]+]]:_(s64) = G_CONSTANT i64 48
349  ; CHECK-NEXT:   [[C105:%[0-9]+]]:_(s64) = G_CONSTANT i64 49
350  ; CHECK-NEXT:   [[C106:%[0-9]+]]:_(s64) = G_CONSTANT i64 50
351  ; CHECK-NEXT:   [[C107:%[0-9]+]]:_(s64) = G_CONSTANT i64 51
352  ; CHECK-NEXT:   [[C108:%[0-9]+]]:_(s64) = G_CONSTANT i64 52
353  ; CHECK-NEXT:   [[C109:%[0-9]+]]:_(s64) = G_CONSTANT i64 53
354  ; CHECK-NEXT:   [[C110:%[0-9]+]]:_(s64) = G_CONSTANT i64 54
355  ; CHECK-NEXT:   [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.tmp
356  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]]
357  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.56
358  ; CHECK-NEXT:   G_BR %bb.61
359  ; CHECK-NEXT: {{  $}}
360  ; CHECK-NEXT: bb.61.bb:
361  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C1]]
362  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.2
363  ; CHECK-NEXT:   G_BR %bb.62
364  ; CHECK-NEXT: {{  $}}
365  ; CHECK-NEXT: bb.62.bb:
366  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C2]]
367  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.3
368  ; CHECK-NEXT:   G_BR %bb.63
369  ; CHECK-NEXT: {{  $}}
370  ; CHECK-NEXT: bb.63.bb:
371  ; CHECK-NEXT:   [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C3]]
372  ; CHECK-NEXT:   G_BRCOND [[ICMP3]](s1), %bb.4
373  ; CHECK-NEXT:   G_BR %bb.64
374  ; CHECK-NEXT: {{  $}}
375  ; CHECK-NEXT: bb.64.bb:
376  ; CHECK-NEXT:   [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C4]]
377  ; CHECK-NEXT:   G_BRCOND [[ICMP4]](s1), %bb.5
378  ; CHECK-NEXT:   G_BR %bb.65
379  ; CHECK-NEXT: {{  $}}
380  ; CHECK-NEXT: bb.65.bb:
381  ; CHECK-NEXT:   [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C5]]
382  ; CHECK-NEXT:   G_BRCOND [[ICMP5]](s1), %bb.6
383  ; CHECK-NEXT:   G_BR %bb.66
384  ; CHECK-NEXT: {{  $}}
385  ; CHECK-NEXT: bb.66.bb:
386  ; CHECK-NEXT:   [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C6]]
387  ; CHECK-NEXT:   G_BRCOND [[ICMP6]](s1), %bb.7
388  ; CHECK-NEXT:   G_BR %bb.67
389  ; CHECK-NEXT: {{  $}}
390  ; CHECK-NEXT: bb.67.bb:
391  ; CHECK-NEXT:   [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C7]]
392  ; CHECK-NEXT:   G_BRCOND [[ICMP7]](s1), %bb.8
393  ; CHECK-NEXT:   G_BR %bb.68
394  ; CHECK-NEXT: {{  $}}
395  ; CHECK-NEXT: bb.68.bb:
396  ; CHECK-NEXT:   [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C8]]
397  ; CHECK-NEXT:   G_BRCOND [[ICMP8]](s1), %bb.9
398  ; CHECK-NEXT:   G_BR %bb.69
399  ; CHECK-NEXT: {{  $}}
400  ; CHECK-NEXT: bb.69.bb:
401  ; CHECK-NEXT:   [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C9]]
402  ; CHECK-NEXT:   G_BRCOND [[ICMP9]](s1), %bb.10
403  ; CHECK-NEXT:   G_BR %bb.70
404  ; CHECK-NEXT: {{  $}}
405  ; CHECK-NEXT: bb.70.bb:
406  ; CHECK-NEXT:   [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C10]]
407  ; CHECK-NEXT:   G_BRCOND [[ICMP10]](s1), %bb.11
408  ; CHECK-NEXT:   G_BR %bb.71
409  ; CHECK-NEXT: {{  $}}
410  ; CHECK-NEXT: bb.71.bb:
411  ; CHECK-NEXT:   [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C11]]
412  ; CHECK-NEXT:   G_BRCOND [[ICMP11]](s1), %bb.12
413  ; CHECK-NEXT:   G_BR %bb.72
414  ; CHECK-NEXT: {{  $}}
415  ; CHECK-NEXT: bb.72.bb:
416  ; CHECK-NEXT:   [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C12]]
417  ; CHECK-NEXT:   G_BRCOND [[ICMP12]](s1), %bb.13
418  ; CHECK-NEXT:   G_BR %bb.73
419  ; CHECK-NEXT: {{  $}}
420  ; CHECK-NEXT: bb.73.bb:
421  ; CHECK-NEXT:   [[ICMP13:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C13]]
422  ; CHECK-NEXT:   G_BRCOND [[ICMP13]](s1), %bb.14
423  ; CHECK-NEXT:   G_BR %bb.74
424  ; CHECK-NEXT: {{  $}}
425  ; CHECK-NEXT: bb.74.bb:
426  ; CHECK-NEXT:   [[ICMP14:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C14]]
427  ; CHECK-NEXT:   G_BRCOND [[ICMP14]](s1), %bb.15
428  ; CHECK-NEXT:   G_BR %bb.75
429  ; CHECK-NEXT: {{  $}}
430  ; CHECK-NEXT: bb.75.bb:
431  ; CHECK-NEXT:   [[ICMP15:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C15]]
432  ; CHECK-NEXT:   G_BRCOND [[ICMP15]](s1), %bb.16
433  ; CHECK-NEXT:   G_BR %bb.76
434  ; CHECK-NEXT: {{  $}}
435  ; CHECK-NEXT: bb.76.bb:
436  ; CHECK-NEXT:   [[ICMP16:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C16]]
437  ; CHECK-NEXT:   G_BRCOND [[ICMP16]](s1), %bb.17
438  ; CHECK-NEXT:   G_BR %bb.77
439  ; CHECK-NEXT: {{  $}}
440  ; CHECK-NEXT: bb.77.bb:
441  ; CHECK-NEXT:   [[ICMP17:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C17]]
442  ; CHECK-NEXT:   G_BRCOND [[ICMP17]](s1), %bb.18
443  ; CHECK-NEXT:   G_BR %bb.78
444  ; CHECK-NEXT: {{  $}}
445  ; CHECK-NEXT: bb.78.bb:
446  ; CHECK-NEXT:   [[ICMP18:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C18]]
447  ; CHECK-NEXT:   G_BRCOND [[ICMP18]](s1), %bb.19
448  ; CHECK-NEXT:   G_BR %bb.79
449  ; CHECK-NEXT: {{  $}}
450  ; CHECK-NEXT: bb.79.bb:
451  ; CHECK-NEXT:   [[ICMP19:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C19]]
452  ; CHECK-NEXT:   G_BRCOND [[ICMP19]](s1), %bb.20
453  ; CHECK-NEXT:   G_BR %bb.80
454  ; CHECK-NEXT: {{  $}}
455  ; CHECK-NEXT: bb.80.bb:
456  ; CHECK-NEXT:   [[ICMP20:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C20]]
457  ; CHECK-NEXT:   G_BRCOND [[ICMP20]](s1), %bb.21
458  ; CHECK-NEXT:   G_BR %bb.81
459  ; CHECK-NEXT: {{  $}}
460  ; CHECK-NEXT: bb.81.bb:
461  ; CHECK-NEXT:   [[ICMP21:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C21]]
462  ; CHECK-NEXT:   G_BRCOND [[ICMP21]](s1), %bb.22
463  ; CHECK-NEXT:   G_BR %bb.82
464  ; CHECK-NEXT: {{  $}}
465  ; CHECK-NEXT: bb.82.bb:
466  ; CHECK-NEXT:   [[ICMP22:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C22]]
467  ; CHECK-NEXT:   G_BRCOND [[ICMP22]](s1), %bb.23
468  ; CHECK-NEXT:   G_BR %bb.83
469  ; CHECK-NEXT: {{  $}}
470  ; CHECK-NEXT: bb.83.bb:
471  ; CHECK-NEXT:   [[ICMP23:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C23]]
472  ; CHECK-NEXT:   G_BRCOND [[ICMP23]](s1), %bb.24
473  ; CHECK-NEXT:   G_BR %bb.84
474  ; CHECK-NEXT: {{  $}}
475  ; CHECK-NEXT: bb.84.bb:
476  ; CHECK-NEXT:   [[ICMP24:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C24]]
477  ; CHECK-NEXT:   G_BRCOND [[ICMP24]](s1), %bb.25
478  ; CHECK-NEXT:   G_BR %bb.85
479  ; CHECK-NEXT: {{  $}}
480  ; CHECK-NEXT: bb.85.bb:
481  ; CHECK-NEXT:   [[ICMP25:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C25]]
482  ; CHECK-NEXT:   G_BRCOND [[ICMP25]](s1), %bb.26
483  ; CHECK-NEXT:   G_BR %bb.86
484  ; CHECK-NEXT: {{  $}}
485  ; CHECK-NEXT: bb.86.bb:
486  ; CHECK-NEXT:   [[ICMP26:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C26]]
487  ; CHECK-NEXT:   G_BRCOND [[ICMP26]](s1), %bb.27
488  ; CHECK-NEXT:   G_BR %bb.87
489  ; CHECK-NEXT: {{  $}}
490  ; CHECK-NEXT: bb.87.bb:
491  ; CHECK-NEXT:   [[ICMP27:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C27]]
492  ; CHECK-NEXT:   G_BRCOND [[ICMP27]](s1), %bb.28
493  ; CHECK-NEXT:   G_BR %bb.88
494  ; CHECK-NEXT: {{  $}}
495  ; CHECK-NEXT: bb.88.bb:
496  ; CHECK-NEXT:   [[ICMP28:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C28]]
497  ; CHECK-NEXT:   G_BRCOND [[ICMP28]](s1), %bb.29
498  ; CHECK-NEXT:   G_BR %bb.89
499  ; CHECK-NEXT: {{  $}}
500  ; CHECK-NEXT: bb.89.bb:
501  ; CHECK-NEXT:   [[ICMP29:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C29]]
502  ; CHECK-NEXT:   G_BRCOND [[ICMP29]](s1), %bb.30
503  ; CHECK-NEXT:   G_BR %bb.90
504  ; CHECK-NEXT: {{  $}}
505  ; CHECK-NEXT: bb.90.bb:
506  ; CHECK-NEXT:   [[ICMP30:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C30]]
507  ; CHECK-NEXT:   G_BRCOND [[ICMP30]](s1), %bb.31
508  ; CHECK-NEXT:   G_BR %bb.91
509  ; CHECK-NEXT: {{  $}}
510  ; CHECK-NEXT: bb.91.bb:
511  ; CHECK-NEXT:   [[ICMP31:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C31]]
512  ; CHECK-NEXT:   G_BRCOND [[ICMP31]](s1), %bb.32
513  ; CHECK-NEXT:   G_BR %bb.92
514  ; CHECK-NEXT: {{  $}}
515  ; CHECK-NEXT: bb.92.bb:
516  ; CHECK-NEXT:   [[ICMP32:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C32]]
517  ; CHECK-NEXT:   G_BRCOND [[ICMP32]](s1), %bb.33
518  ; CHECK-NEXT:   G_BR %bb.93
519  ; CHECK-NEXT: {{  $}}
520  ; CHECK-NEXT: bb.93.bb:
521  ; CHECK-NEXT:   [[ICMP33:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C33]]
522  ; CHECK-NEXT:   G_BRCOND [[ICMP33]](s1), %bb.34
523  ; CHECK-NEXT:   G_BR %bb.94
524  ; CHECK-NEXT: {{  $}}
525  ; CHECK-NEXT: bb.94.bb:
526  ; CHECK-NEXT:   [[ICMP34:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C34]]
527  ; CHECK-NEXT:   G_BRCOND [[ICMP34]](s1), %bb.35
528  ; CHECK-NEXT:   G_BR %bb.95
529  ; CHECK-NEXT: {{  $}}
530  ; CHECK-NEXT: bb.95.bb:
531  ; CHECK-NEXT:   [[ICMP35:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C35]]
532  ; CHECK-NEXT:   G_BRCOND [[ICMP35]](s1), %bb.36
533  ; CHECK-NEXT:   G_BR %bb.96
534  ; CHECK-NEXT: {{  $}}
535  ; CHECK-NEXT: bb.96.bb:
536  ; CHECK-NEXT:   [[ICMP36:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C36]]
537  ; CHECK-NEXT:   G_BRCOND [[ICMP36]](s1), %bb.37
538  ; CHECK-NEXT:   G_BR %bb.97
539  ; CHECK-NEXT: {{  $}}
540  ; CHECK-NEXT: bb.97.bb:
541  ; CHECK-NEXT:   [[ICMP37:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C37]]
542  ; CHECK-NEXT:   G_BRCOND [[ICMP37]](s1), %bb.38
543  ; CHECK-NEXT:   G_BR %bb.98
544  ; CHECK-NEXT: {{  $}}
545  ; CHECK-NEXT: bb.98.bb:
546  ; CHECK-NEXT:   [[ICMP38:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C38]]
547  ; CHECK-NEXT:   G_BRCOND [[ICMP38]](s1), %bb.39
548  ; CHECK-NEXT:   G_BR %bb.99
549  ; CHECK-NEXT: {{  $}}
550  ; CHECK-NEXT: bb.99.bb:
551  ; CHECK-NEXT:   [[ICMP39:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C39]]
552  ; CHECK-NEXT:   G_BRCOND [[ICMP39]](s1), %bb.40
553  ; CHECK-NEXT:   G_BR %bb.100
554  ; CHECK-NEXT: {{  $}}
555  ; CHECK-NEXT: bb.100.bb:
556  ; CHECK-NEXT:   [[ICMP40:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C40]]
557  ; CHECK-NEXT:   G_BRCOND [[ICMP40]](s1), %bb.41
558  ; CHECK-NEXT:   G_BR %bb.101
559  ; CHECK-NEXT: {{  $}}
560  ; CHECK-NEXT: bb.101.bb:
561  ; CHECK-NEXT:   [[ICMP41:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C41]]
562  ; CHECK-NEXT:   G_BRCOND [[ICMP41]](s1), %bb.42
563  ; CHECK-NEXT:   G_BR %bb.102
564  ; CHECK-NEXT: {{  $}}
565  ; CHECK-NEXT: bb.102.bb:
566  ; CHECK-NEXT:   [[ICMP42:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C42]]
567  ; CHECK-NEXT:   G_BRCOND [[ICMP42]](s1), %bb.43
568  ; CHECK-NEXT:   G_BR %bb.103
569  ; CHECK-NEXT: {{  $}}
570  ; CHECK-NEXT: bb.103.bb:
571  ; CHECK-NEXT:   [[ICMP43:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C43]]
572  ; CHECK-NEXT:   G_BRCOND [[ICMP43]](s1), %bb.44
573  ; CHECK-NEXT:   G_BR %bb.104
574  ; CHECK-NEXT: {{  $}}
575  ; CHECK-NEXT: bb.104.bb:
576  ; CHECK-NEXT:   [[ICMP44:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C44]]
577  ; CHECK-NEXT:   G_BRCOND [[ICMP44]](s1), %bb.45
578  ; CHECK-NEXT:   G_BR %bb.105
579  ; CHECK-NEXT: {{  $}}
580  ; CHECK-NEXT: bb.105.bb:
581  ; CHECK-NEXT:   [[ICMP45:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C45]]
582  ; CHECK-NEXT:   G_BRCOND [[ICMP45]](s1), %bb.46
583  ; CHECK-NEXT:   G_BR %bb.106
584  ; CHECK-NEXT: {{  $}}
585  ; CHECK-NEXT: bb.106.bb:
586  ; CHECK-NEXT:   [[ICMP46:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C46]]
587  ; CHECK-NEXT:   G_BRCOND [[ICMP46]](s1), %bb.47
588  ; CHECK-NEXT:   G_BR %bb.107
589  ; CHECK-NEXT: {{  $}}
590  ; CHECK-NEXT: bb.107.bb:
591  ; CHECK-NEXT:   [[ICMP47:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C47]]
592  ; CHECK-NEXT:   G_BRCOND [[ICMP47]](s1), %bb.48
593  ; CHECK-NEXT:   G_BR %bb.108
594  ; CHECK-NEXT: {{  $}}
595  ; CHECK-NEXT: bb.108.bb:
596  ; CHECK-NEXT:   [[ICMP48:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C48]]
597  ; CHECK-NEXT:   G_BRCOND [[ICMP48]](s1), %bb.49
598  ; CHECK-NEXT:   G_BR %bb.109
599  ; CHECK-NEXT: {{  $}}
600  ; CHECK-NEXT: bb.109.bb:
601  ; CHECK-NEXT:   [[ICMP49:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C49]]
602  ; CHECK-NEXT:   G_BRCOND [[ICMP49]](s1), %bb.50
603  ; CHECK-NEXT:   G_BR %bb.110
604  ; CHECK-NEXT: {{  $}}
605  ; CHECK-NEXT: bb.110.bb:
606  ; CHECK-NEXT:   [[ICMP50:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C50]]
607  ; CHECK-NEXT:   G_BRCOND [[ICMP50]](s1), %bb.51
608  ; CHECK-NEXT:   G_BR %bb.111
609  ; CHECK-NEXT: {{  $}}
610  ; CHECK-NEXT: bb.111.bb:
611  ; CHECK-NEXT:   [[ICMP51:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C51]]
612  ; CHECK-NEXT:   G_BRCOND [[ICMP51]](s1), %bb.52
613  ; CHECK-NEXT:   G_BR %bb.112
614  ; CHECK-NEXT: {{  $}}
615  ; CHECK-NEXT: bb.112.bb:
616  ; CHECK-NEXT:   [[ICMP52:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C52]]
617  ; CHECK-NEXT:   G_BRCOND [[ICMP52]](s1), %bb.53
618  ; CHECK-NEXT:   G_BR %bb.113
619  ; CHECK-NEXT: {{  $}}
620  ; CHECK-NEXT: bb.113.bb:
621  ; CHECK-NEXT:   [[ICMP53:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C53]]
622  ; CHECK-NEXT:   G_BRCOND [[ICMP53]](s1), %bb.54
623  ; CHECK-NEXT:   G_BR %bb.114
624  ; CHECK-NEXT: {{  $}}
625  ; CHECK-NEXT: bb.114.bb:
626  ; CHECK-NEXT:   [[ICMP54:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C54]]
627  ; CHECK-NEXT:   G_BRCOND [[ICMP54]](s1), %bb.55
628  ; CHECK-NEXT:   G_BR %bb.60
629  ; CHECK-NEXT: {{  $}}
630  ; CHECK-NEXT: bb.2.bb3:
631  ; CHECK-NEXT:   G_BR %bb.56
632  ; CHECK-NEXT: {{  $}}
633  ; CHECK-NEXT: bb.3.bb4:
634  ; CHECK-NEXT:   G_BR %bb.56
635  ; CHECK-NEXT: {{  $}}
636  ; CHECK-NEXT: bb.4.bb5:
637  ; CHECK-NEXT:   G_BR %bb.56
638  ; CHECK-NEXT: {{  $}}
639  ; CHECK-NEXT: bb.5.bb6:
640  ; CHECK-NEXT:   G_BR %bb.56
641  ; CHECK-NEXT: {{  $}}
642  ; CHECK-NEXT: bb.6.bb7:
643  ; CHECK-NEXT:   G_BR %bb.56
644  ; CHECK-NEXT: {{  $}}
645  ; CHECK-NEXT: bb.7.bb8:
646  ; CHECK-NEXT:   G_BR %bb.56
647  ; CHECK-NEXT: {{  $}}
648  ; CHECK-NEXT: bb.8.bb9:
649  ; CHECK-NEXT:   G_BR %bb.56
650  ; CHECK-NEXT: {{  $}}
651  ; CHECK-NEXT: bb.9.bb10:
652  ; CHECK-NEXT:   G_BR %bb.56
653  ; CHECK-NEXT: {{  $}}
654  ; CHECK-NEXT: bb.10.bb11:
655  ; CHECK-NEXT:   G_BR %bb.56
656  ; CHECK-NEXT: {{  $}}
657  ; CHECK-NEXT: bb.11.bb12:
658  ; CHECK-NEXT:   G_BR %bb.56
659  ; CHECK-NEXT: {{  $}}
660  ; CHECK-NEXT: bb.12.bb13:
661  ; CHECK-NEXT:   G_BR %bb.56
662  ; CHECK-NEXT: {{  $}}
663  ; CHECK-NEXT: bb.13.bb14:
664  ; CHECK-NEXT:   G_BR %bb.56
665  ; CHECK-NEXT: {{  $}}
666  ; CHECK-NEXT: bb.14.bb15:
667  ; CHECK-NEXT:   G_BR %bb.56
668  ; CHECK-NEXT: {{  $}}
669  ; CHECK-NEXT: bb.15.bb16:
670  ; CHECK-NEXT:   G_BR %bb.56
671  ; CHECK-NEXT: {{  $}}
672  ; CHECK-NEXT: bb.16.bb17:
673  ; CHECK-NEXT:   G_BR %bb.56
674  ; CHECK-NEXT: {{  $}}
675  ; CHECK-NEXT: bb.17.bb18:
676  ; CHECK-NEXT:   G_BR %bb.56
677  ; CHECK-NEXT: {{  $}}
678  ; CHECK-NEXT: bb.18.bb19:
679  ; CHECK-NEXT:   G_BR %bb.56
680  ; CHECK-NEXT: {{  $}}
681  ; CHECK-NEXT: bb.19.bb20:
682  ; CHECK-NEXT:   G_BR %bb.56
683  ; CHECK-NEXT: {{  $}}
684  ; CHECK-NEXT: bb.20.bb21:
685  ; CHECK-NEXT:   G_BR %bb.56
686  ; CHECK-NEXT: {{  $}}
687  ; CHECK-NEXT: bb.21.bb22:
688  ; CHECK-NEXT:   G_BR %bb.56
689  ; CHECK-NEXT: {{  $}}
690  ; CHECK-NEXT: bb.22.bb23:
691  ; CHECK-NEXT:   G_BR %bb.56
692  ; CHECK-NEXT: {{  $}}
693  ; CHECK-NEXT: bb.23.bb24:
694  ; CHECK-NEXT:   G_BR %bb.56
695  ; CHECK-NEXT: {{  $}}
696  ; CHECK-NEXT: bb.24.bb25:
697  ; CHECK-NEXT:   G_BR %bb.56
698  ; CHECK-NEXT: {{  $}}
699  ; CHECK-NEXT: bb.25.bb26:
700  ; CHECK-NEXT:   G_BR %bb.56
701  ; CHECK-NEXT: {{  $}}
702  ; CHECK-NEXT: bb.26.bb27:
703  ; CHECK-NEXT:   G_BR %bb.56
704  ; CHECK-NEXT: {{  $}}
705  ; CHECK-NEXT: bb.27.bb28:
706  ; CHECK-NEXT:   G_BR %bb.56
707  ; CHECK-NEXT: {{  $}}
708  ; CHECK-NEXT: bb.28.bb29:
709  ; CHECK-NEXT:   G_BR %bb.56
710  ; CHECK-NEXT: {{  $}}
711  ; CHECK-NEXT: bb.29.bb30:
712  ; CHECK-NEXT:   G_BR %bb.56
713  ; CHECK-NEXT: {{  $}}
714  ; CHECK-NEXT: bb.30.bb31:
715  ; CHECK-NEXT:   G_BR %bb.56
716  ; CHECK-NEXT: {{  $}}
717  ; CHECK-NEXT: bb.31.bb32:
718  ; CHECK-NEXT:   G_BR %bb.56
719  ; CHECK-NEXT: {{  $}}
720  ; CHECK-NEXT: bb.32.bb33:
721  ; CHECK-NEXT:   G_BR %bb.56
722  ; CHECK-NEXT: {{  $}}
723  ; CHECK-NEXT: bb.33.bb34:
724  ; CHECK-NEXT:   G_BR %bb.56
725  ; CHECK-NEXT: {{  $}}
726  ; CHECK-NEXT: bb.34.bb35:
727  ; CHECK-NEXT:   G_BR %bb.56
728  ; CHECK-NEXT: {{  $}}
729  ; CHECK-NEXT: bb.35.bb36:
730  ; CHECK-NEXT:   G_BR %bb.56
731  ; CHECK-NEXT: {{  $}}
732  ; CHECK-NEXT: bb.36.bb37:
733  ; CHECK-NEXT:   G_BR %bb.56
734  ; CHECK-NEXT: {{  $}}
735  ; CHECK-NEXT: bb.37.bb38:
736  ; CHECK-NEXT:   G_BR %bb.56
737  ; CHECK-NEXT: {{  $}}
738  ; CHECK-NEXT: bb.38.bb39:
739  ; CHECK-NEXT:   G_BR %bb.56
740  ; CHECK-NEXT: {{  $}}
741  ; CHECK-NEXT: bb.39.bb40:
742  ; CHECK-NEXT:   G_BR %bb.56
743  ; CHECK-NEXT: {{  $}}
744  ; CHECK-NEXT: bb.40.bb41:
745  ; CHECK-NEXT:   G_BR %bb.56
746  ; CHECK-NEXT: {{  $}}
747  ; CHECK-NEXT: bb.41.bb42:
748  ; CHECK-NEXT:   G_BR %bb.56
749  ; CHECK-NEXT: {{  $}}
750  ; CHECK-NEXT: bb.42.bb43:
751  ; CHECK-NEXT:   G_BR %bb.56
752  ; CHECK-NEXT: {{  $}}
753  ; CHECK-NEXT: bb.43.bb44:
754  ; CHECK-NEXT:   G_BR %bb.56
755  ; CHECK-NEXT: {{  $}}
756  ; CHECK-NEXT: bb.44.bb45:
757  ; CHECK-NEXT:   G_BR %bb.56
758  ; CHECK-NEXT: {{  $}}
759  ; CHECK-NEXT: bb.45.bb46:
760  ; CHECK-NEXT:   G_BR %bb.56
761  ; CHECK-NEXT: {{  $}}
762  ; CHECK-NEXT: bb.46.bb47:
763  ; CHECK-NEXT:   G_BR %bb.56
764  ; CHECK-NEXT: {{  $}}
765  ; CHECK-NEXT: bb.47.bb48:
766  ; CHECK-NEXT:   G_BR %bb.56
767  ; CHECK-NEXT: {{  $}}
768  ; CHECK-NEXT: bb.48.bb49:
769  ; CHECK-NEXT:   G_BR %bb.56
770  ; CHECK-NEXT: {{  $}}
771  ; CHECK-NEXT: bb.49.bb50:
772  ; CHECK-NEXT:   G_BR %bb.56
773  ; CHECK-NEXT: {{  $}}
774  ; CHECK-NEXT: bb.50.bb51:
775  ; CHECK-NEXT:   G_BR %bb.56
776  ; CHECK-NEXT: {{  $}}
777  ; CHECK-NEXT: bb.51.bb52:
778  ; CHECK-NEXT:   G_BR %bb.56
779  ; CHECK-NEXT: {{  $}}
780  ; CHECK-NEXT: bb.52.bb53:
781  ; CHECK-NEXT:   G_BR %bb.56
782  ; CHECK-NEXT: {{  $}}
783  ; CHECK-NEXT: bb.53.bb54:
784  ; CHECK-NEXT:   G_BR %bb.56
785  ; CHECK-NEXT: {{  $}}
786  ; CHECK-NEXT: bb.54.bb55:
787  ; CHECK-NEXT:   G_BR %bb.56
788  ; CHECK-NEXT: {{  $}}
789  ; CHECK-NEXT: bb.55.bb56:
790  ; CHECK-NEXT:   G_BR %bb.56
791  ; CHECK-NEXT: {{  $}}
792  ; CHECK-NEXT: bb.56.bb57:
793  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s64) = G_PHI [[C56]](s64), %bb.1, [[C57]](s64), %bb.2, [[C58]](s64), %bb.3, [[C59]](s64), %bb.4, [[C60]](s64), %bb.5, [[C61]](s64), %bb.6, [[C62]](s64), %bb.7, [[C63]](s64), %bb.8, [[C64]](s64), %bb.9, [[C65]](s64), %bb.10, [[C66]](s64), %bb.11, [[C67]](s64), %bb.12, [[C68]](s64), %bb.13, [[C69]](s64), %bb.14, [[C70]](s64), %bb.15, [[C71]](s64), %bb.16, [[C72]](s64), %bb.17, [[C73]](s64), %bb.18, [[C74]](s64), %bb.19, [[C75]](s64), %bb.20, [[C76]](s64), %bb.21, [[C77]](s64), %bb.22, [[C78]](s64), %bb.23, [[C79]](s64), %bb.24, [[C80]](s64), %bb.25, [[C81]](s64), %bb.26, [[C82]](s64), %bb.27, [[C83]](s64), %bb.28, [[C84]](s64), %bb.29, [[C85]](s64), %bb.30, [[C86]](s64), %bb.31, [[C87]](s64), %bb.32, [[C88]](s64), %bb.33, [[C89]](s64), %bb.34, [[C90]](s64), %bb.35, [[C91]](s64), %bb.36, [[C92]](s64), %bb.37, [[C93]](s64), %bb.38, [[C94]](s64), %bb.39, [[C95]](s64), %bb.40, [[C96]](s64), %bb.41, [[C97]](s64), %bb.42, [[C98]](s64), %bb.43, [[C99]](s64), %bb.44, [[C100]](s64), %bb.45, [[C101]](s64), %bb.46, [[C102]](s64), %bb.47, [[C103]](s64), %bb.48, [[C104]](s64), %bb.49, [[C105]](s64), %bb.50, [[C106]](s64), %bb.51, [[C107]](s64), %bb.52, [[C108]](s64), %bb.53, [[C109]](s64), %bb.54, [[C110]](s64), %bb.55
794  ; CHECK-NEXT:   [[C111:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
795  ; CHECK-NEXT:   [[MUL:%[0-9]+]]:_(s64) = G_MUL [[PHI]], [[C111]]
796  ; CHECK-NEXT:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[GV]], [[MUL]](s64)
797  ; CHECK-NEXT:   [[C112:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
798  ; CHECK-NEXT:   %120:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C112]](s64)
799  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(p0) = G_LOAD %120(p0) :: (load (p0) from %ir.tmp59)
800  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
801  ; CHECK-NEXT:   $x0 = COPY [[COPY]](p0)
802  ; CHECK-NEXT:   $x1 = COPY [[LOAD]](p0)
803  ; CHECK-NEXT:   BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1
804  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
805  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
806  ; CHECK-NEXT:   G_BR %bb.59
807  ; CHECK-NEXT: {{  $}}
808  ; CHECK-NEXT: bb.57.bb62:
809  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
810  ; CHECK-NEXT:   $x0 = COPY [[COPY]](p0)
811  ; CHECK-NEXT:   $x1 = COPY [[COPY2]](p0)
812  ; CHECK-NEXT:   BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1
813  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
814  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
815  ; CHECK-NEXT:   G_BR %bb.59
816  ; CHECK-NEXT: {{  $}}
817  ; CHECK-NEXT: bb.58.bb64:
818  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
819  ; CHECK-NEXT:   $w0 = COPY [[COPY1]](s32)
820  ; CHECK-NEXT:   $x1 = COPY [[FRAME_INDEX]](p0)
821  ; CHECK-NEXT:   BL @baz, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit $x1
822  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
823  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
824  ; CHECK-NEXT:   $x0 = COPY [[COPY]](p0)
825  ; CHECK-NEXT:   $x1 = COPY [[FRAME_INDEX]](p0)
826  ; CHECK-NEXT:   BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1
827  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
828  ; CHECK-NEXT:   [[COPY5:%[0-9]+]]:_(p0) = COPY [[COPY]](p0)
829  ; CHECK-NEXT:   G_BR %bb.59
830  ; CHECK-NEXT: {{  $}}
831  ; CHECK-NEXT: bb.59.bb68:
832  ; CHECK-NEXT:   RET_ReallyLR
833  ; CHECK-NEXT: {{  $}}
834  ; CHECK-NEXT: bb.60.bb69:
835  ; CHECK-NEXT:   [[ICMP55:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](p0), [[C55]]
836  ; CHECK-NEXT:   G_BRCOND [[ICMP55]](s1), %bb.58
837  ; CHECK-NEXT:   G_BR %bb.57
838bb:
839  %tmp = alloca [16 x i32], align 4
840  switch i32 %arg1, label %bb69 [
841    i32 3, label %bb57
842    i32 4, label %bb3
843    i32 6, label %bb4
844    i32 7, label %bb5
845    i32 8, label %bb6
846    i32 9, label %bb7
847    i32 10, label %bb8
848    i32 11, label %bb9
849    i32 12, label %bb10
850    i32 13, label %bb11
851    i32 14, label %bb12
852    i32 15, label %bb13
853    i32 16, label %bb14
854    i32 17, label %bb15
855    i32 18, label %bb16
856    i32 19, label %bb17
857    i32 20, label %bb18
858    i32 21, label %bb19
859    i32 22, label %bb20
860    i32 23, label %bb21
861    i32 24, label %bb22
862    i32 25, label %bb23
863    i32 26, label %bb24
864    i32 27, label %bb25
865    i32 28, label %bb26
866    i32 29, label %bb27
867    i32 30, label %bb28
868    i32 31, label %bb29
869    i32 32, label %bb30
870    i32 33, label %bb31
871    i32 34, label %bb32
872    i32 35, label %bb33
873    i32 36, label %bb34
874    i32 37, label %bb35
875    i32 38, label %bb36
876    i32 39, label %bb37
877    i32 41, label %bb38
878    i32 42, label %bb39
879    i32 43, label %bb40
880    i32 44, label %bb41
881    i32 45, label %bb42
882    i32 46, label %bb43
883    i32 47, label %bb44
884    i32 48, label %bb45
885    i32 49, label %bb46
886    i32 50, label %bb47
887    i32 51, label %bb48
888    i32 52, label %bb49
889    i32 53, label %bb50
890    i32 54, label %bb51
891    i32 55, label %bb52
892    i32 4352, label %bb53
893    i32 4353, label %bb54
894    i32 4354, label %bb55
895    i32 4355, label %bb56
896  ]
897
898bb3:                                              ; preds = %bb
899  br label %bb57
900
901bb4:                                              ; preds = %bb
902  br label %bb57
903
904bb5:                                              ; preds = %bb
905  br label %bb57
906
907bb6:                                              ; preds = %bb
908  br label %bb57
909
910bb7:                                              ; preds = %bb
911  br label %bb57
912
913bb8:                                              ; preds = %bb
914  br label %bb57
915
916bb9:                                              ; preds = %bb
917  br label %bb57
918
919bb10:                                             ; preds = %bb
920  br label %bb57
921
922bb11:                                             ; preds = %bb
923  br label %bb57
924
925bb12:                                             ; preds = %bb
926  br label %bb57
927
928bb13:                                             ; preds = %bb
929  br label %bb57
930
931bb14:                                             ; preds = %bb
932  br label %bb57
933
934bb15:                                             ; preds = %bb
935  br label %bb57
936
937bb16:                                             ; preds = %bb
938  br label %bb57
939
940bb17:                                             ; preds = %bb
941  br label %bb57
942
943bb18:                                             ; preds = %bb
944  br label %bb57
945
946bb19:                                             ; preds = %bb
947  br label %bb57
948
949bb20:                                             ; preds = %bb
950  br label %bb57
951
952bb21:                                             ; preds = %bb
953  br label %bb57
954
955bb22:                                             ; preds = %bb
956  br label %bb57
957
958bb23:                                             ; preds = %bb
959  br label %bb57
960
961bb24:                                             ; preds = %bb
962  br label %bb57
963
964bb25:                                             ; preds = %bb
965  br label %bb57
966
967bb26:                                             ; preds = %bb
968  br label %bb57
969
970bb27:                                             ; preds = %bb
971  br label %bb57
972
973bb28:                                             ; preds = %bb
974  br label %bb57
975
976bb29:                                             ; preds = %bb
977  br label %bb57
978
979bb30:                                             ; preds = %bb
980  br label %bb57
981
982bb31:                                             ; preds = %bb
983  br label %bb57
984
985bb32:                                             ; preds = %bb
986  br label %bb57
987
988bb33:                                             ; preds = %bb
989  br label %bb57
990
991bb34:                                             ; preds = %bb
992  br label %bb57
993
994bb35:                                             ; preds = %bb
995  br label %bb57
996
997bb36:                                             ; preds = %bb
998  br label %bb57
999
1000bb37:                                             ; preds = %bb
1001  br label %bb57
1002
1003bb38:                                             ; preds = %bb
1004  br label %bb57
1005
1006bb39:                                             ; preds = %bb
1007  br label %bb57
1008
1009bb40:                                             ; preds = %bb
1010  br label %bb57
1011
1012bb41:                                             ; preds = %bb
1013  br label %bb57
1014
1015bb42:                                             ; preds = %bb
1016  br label %bb57
1017
1018bb43:                                             ; preds = %bb
1019  br label %bb57
1020
1021bb44:                                             ; preds = %bb
1022  br label %bb57
1023
1024bb45:                                             ; preds = %bb
1025  br label %bb57
1026
1027bb46:                                             ; preds = %bb
1028  br label %bb57
1029
1030bb47:                                             ; preds = %bb
1031  br label %bb57
1032
1033bb48:                                             ; preds = %bb
1034  br label %bb57
1035
1036bb49:                                             ; preds = %bb
1037  br label %bb57
1038
1039bb50:                                             ; preds = %bb
1040  br label %bb57
1041
1042bb51:                                             ; preds = %bb
1043  br label %bb57
1044
1045bb52:                                             ; preds = %bb
1046  br label %bb57
1047
1048bb53:                                             ; preds = %bb
1049  br label %bb57
1050
1051bb54:                                             ; preds = %bb
1052  br label %bb57
1053
1054bb55:                                             ; preds = %bb
1055  br label %bb57
1056
1057bb56:                                             ; preds = %bb
1058  br label %bb57
1059
1060bb57:                                             ; 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
1061  %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 ]
1062  %tmp59 = getelementptr inbounds [55 x %0], ptr @global, i64 0, i64 %tmp58, i32 1
1063  %tmp60 = load ptr, ptr %tmp59, align 8
1064  %tmp61 = call ptr @wibble(ptr %arg, ptr %tmp60)
1065  br label %bb68
1066
1067bb62:                                             ; preds = %bb69
1068  %tmp63 = call ptr @wibble(ptr %arg, ptr nonnull %arg2)
1069  br label %bb68
1070
1071bb64:                                             ; preds = %bb69
1072  call void @baz(i32 %arg1, ptr %tmp)
1073  %tmp67 = call ptr @wibble(ptr %arg, ptr  %tmp)
1074  br label %bb68
1075
1076bb68:                                             ; preds = %bb64, %bb62, %bb57
1077  ret void
1078
1079bb69:                                             ; preds = %bb
1080  %tmp70 = icmp eq ptr %arg2, null
1081  br i1 %tmp70, label %bb64, label %bb62
1082}
1083
1084declare ptr @wibble(ptr returned, ptr)
1085
1086declare void @baz(i32, ptr)
1087
1088
1089; Check that with 2 jump tables, the phi node doesn't lose the edge from the
1090; second one.
1091define void @jt_2_tables_phi_edge_from_second() {
1092  ; CHECK-LABEL: name: jt_2_tables_phi_edge_from_second
1093  ; CHECK: bb.1.entry:
1094  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
1095  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 123
1096  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 263
1097  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 265
1098  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 270
1099  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 279
1100  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1101  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 37
1102  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 43
1103  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 45
1104  ; CHECK-NEXT:   [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 60
1105  ; CHECK-NEXT:   [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 278
1106  ; CHECK-NEXT:   [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 280
1107  ; CHECK-NEXT:   [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 281
1108  ; CHECK-NEXT:   [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 283
1109  ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:_(s1) = G_IMPLICIT_DEF
1110  ; CHECK-NEXT:   [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1111  ; CHECK-NEXT:   [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1112  ; CHECK-NEXT:   [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1113  ; CHECK-NEXT:   [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
1114  ; CHECK-NEXT:   [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
1115  ; CHECK-NEXT:   [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
1116  ; CHECK-NEXT:   [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
1117  ; CHECK-NEXT:   [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
1118  ; CHECK-NEXT:   [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
1119  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[DEF]](p0) :: (load (s32) from `ptr undef`, align 8)
1120  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C]]
1121  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.6
1122  ; CHECK-NEXT:   G_BR %bb.19
1123  ; CHECK-NEXT: {{  $}}
1124  ; CHECK-NEXT: bb.19.entry:
1125  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C1]]
1126  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.4
1127  ; CHECK-NEXT:   G_BR %bb.20
1128  ; CHECK-NEXT: {{  $}}
1129  ; CHECK-NEXT: bb.20.entry:
1130  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C2]]
1131  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.7
1132  ; CHECK-NEXT:   G_BR %bb.21
1133  ; CHECK-NEXT: {{  $}}
1134  ; CHECK-NEXT: bb.21.entry:
1135  ; CHECK-NEXT:   [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C3]]
1136  ; CHECK-NEXT:   G_BRCOND [[ICMP3]](s1), %bb.2
1137  ; CHECK-NEXT:   G_BR %bb.22
1138  ; CHECK-NEXT: {{  $}}
1139  ; CHECK-NEXT: bb.22.entry:
1140  ; CHECK-NEXT:   [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C4]]
1141  ; CHECK-NEXT:   G_BRCOND [[ICMP4]](s1), %bb.5
1142  ; CHECK-NEXT:   G_BR %bb.23
1143  ; CHECK-NEXT: {{  $}}
1144  ; CHECK-NEXT: bb.23.entry:
1145  ; CHECK-NEXT:   G_BR %bb.3
1146  ; CHECK-NEXT: {{  $}}
1147  ; CHECK-NEXT: bb.2.if.then:
1148  ; CHECK-NEXT:   successors:
1149  ; CHECK-NEXT: {{  $}}
1150  ; CHECK-NEXT: bb.3.sw.bb2.i41:
1151  ; CHECK-NEXT:   successors:
1152  ; CHECK-NEXT: {{  $}}
1153  ; CHECK-NEXT: bb.4.sw.bb7.i44:
1154  ; CHECK-NEXT:   successors:
1155  ; CHECK-NEXT: {{  $}}
1156  ; CHECK-NEXT: bb.5.sw.bb8.i45:
1157  ; CHECK-NEXT:   successors:
1158  ; CHECK-NEXT: {{  $}}
1159  ; CHECK-NEXT: bb.6.sw.bb13.i47:
1160  ; CHECK-NEXT:   successors:
1161  ; CHECK-NEXT: {{  $}}
1162  ; CHECK-NEXT: bb.7.sw.bb14.i48:
1163  ; CHECK-NEXT:   [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C5]]
1164  ; CHECK-NEXT:   G_BRCOND [[ICMP5]](s1), %bb.10
1165  ; CHECK-NEXT:   G_BR %bb.24
1166  ; CHECK-NEXT: {{  $}}
1167  ; CHECK-NEXT: bb.24.sw.bb14.i48:
1168  ; CHECK-NEXT:   [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C6]]
1169  ; CHECK-NEXT:   G_BRCOND [[ICMP6]](s1), %bb.16
1170  ; CHECK-NEXT:   G_BR %bb.25
1171  ; CHECK-NEXT: {{  $}}
1172  ; CHECK-NEXT: bb.25.sw.bb14.i48:
1173  ; CHECK-NEXT:   [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C7]]
1174  ; CHECK-NEXT:   G_BRCOND [[ICMP7]](s1), %bb.9
1175  ; CHECK-NEXT:   G_BR %bb.26
1176  ; CHECK-NEXT: {{  $}}
1177  ; CHECK-NEXT: bb.26.sw.bb14.i48:
1178  ; CHECK-NEXT:   [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C8]]
1179  ; CHECK-NEXT:   G_BRCOND [[ICMP8]](s1), %bb.14
1180  ; CHECK-NEXT:   G_BR %bb.27
1181  ; CHECK-NEXT: {{  $}}
1182  ; CHECK-NEXT: bb.27.sw.bb14.i48:
1183  ; CHECK-NEXT:   [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C9]]
1184  ; CHECK-NEXT:   G_BRCOND [[ICMP9]](s1), %bb.11
1185  ; CHECK-NEXT:   G_BR %bb.28
1186  ; CHECK-NEXT: {{  $}}
1187  ; CHECK-NEXT: bb.28.sw.bb14.i48:
1188  ; CHECK-NEXT:   [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C10]]
1189  ; CHECK-NEXT:   G_BRCOND [[ICMP10]](s1), %bb.13
1190  ; CHECK-NEXT:   G_BR %bb.29
1191  ; CHECK-NEXT: {{  $}}
1192  ; CHECK-NEXT: bb.29.sw.bb14.i48:
1193  ; CHECK-NEXT:   [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C11]]
1194  ; CHECK-NEXT:   G_BRCOND [[ICMP11]](s1), %bb.15
1195  ; CHECK-NEXT:   G_BR %bb.30
1196  ; CHECK-NEXT: {{  $}}
1197  ; CHECK-NEXT: bb.30.sw.bb14.i48:
1198  ; CHECK-NEXT:   [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C12]]
1199  ; CHECK-NEXT:   G_BRCOND [[ICMP12]](s1), %bb.12
1200  ; CHECK-NEXT:   G_BR %bb.18
1201  ; CHECK-NEXT: {{  $}}
1202  ; CHECK-NEXT: bb.8.sw.default.i49:
1203  ; CHECK-NEXT:   successors:
1204  ; CHECK-NEXT: {{  $}}
1205  ; CHECK-NEXT: bb.9.sw.bb1.i:
1206  ; CHECK-NEXT:   G_BR %bb.16
1207  ; CHECK-NEXT: {{  $}}
1208  ; CHECK-NEXT: bb.10.sw.bb4.i:
1209  ; CHECK-NEXT:   G_BR %bb.16
1210  ; CHECK-NEXT: {{  $}}
1211  ; CHECK-NEXT: bb.11.sw.bb6.i:
1212  ; CHECK-NEXT:   G_BR %bb.16
1213  ; CHECK-NEXT: {{  $}}
1214  ; CHECK-NEXT: bb.12.sw.bb7.i:
1215  ; CHECK-NEXT:   G_BR %bb.16
1216  ; CHECK-NEXT: {{  $}}
1217  ; CHECK-NEXT: bb.13.sw.bb8.i:
1218  ; CHECK-NEXT:   G_BR %bb.16
1219  ; CHECK-NEXT: {{  $}}
1220  ; CHECK-NEXT: bb.14.sw.bb9.i:
1221  ; CHECK-NEXT:   G_BR %bb.16
1222  ; CHECK-NEXT: {{  $}}
1223  ; CHECK-NEXT: bb.15.sw.bb12.i:
1224  ; CHECK-NEXT:   G_BR %bb.16
1225  ; CHECK-NEXT: {{  $}}
1226  ; CHECK-NEXT: bb.16.land.rhs.lr.ph:
1227  ; CHECK-NEXT:   [[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
1228  ; CHECK-NEXT:   G_BRCOND [[DEF2]](s1), %bb.17
1229  ; CHECK-NEXT:   G_BR %bb.18
1230  ; CHECK-NEXT: {{  $}}
1231  ; CHECK-NEXT: bb.17.while.body:
1232  ; CHECK-NEXT:   successors:
1233  ; CHECK-NEXT: {{  $}}
1234  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1235  ; CHECK-NEXT:   BL @jt_2_tables_phi_edge_from_second, csr_aarch64_aapcs, implicit-def $lr, implicit $sp
1236  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1237  ; CHECK-NEXT: {{  $}}
1238  ; CHECK-NEXT: bb.18.while.end:
1239  ; CHECK-NEXT:   [[PHI1:%[0-9]+]]:_(s32) = G_PHI [[C21]](s32), %bb.30, [[PHI]](s32), %bb.16
1240  ; CHECK-NEXT:   RET_ReallyLR
1241entry:
1242  %0 = load i32, ptr undef, align 8
1243  switch i32 %0, label %sw.default.i49 [
1244    i32 270, label %if.then
1245    i32 265, label %sw.bb14.i48
1246    i32 123, label %sw.bb13.i47
1247    i32 279, label %sw.bb8.i45
1248    i32 286, label %sw.bb2.i41
1249    i32 263, label %sw.bb7.i44
1250  ]
1251
1252if.then:                                          ; preds = %entry
1253  unreachable
1254
1255sw.bb2.i41:                                       ; preds = %entry
1256  unreachable
1257
1258sw.bb7.i44:                                       ; preds = %entry
1259  unreachable
1260
1261sw.bb8.i45:                                       ; preds = %entry
1262  unreachable
1263
1264sw.bb13.i47:                                      ; preds = %entry
1265  unreachable
1266
1267sw.bb14.i48:                                      ; preds = %entry
1268  switch i32 undef, label %while.end [
1269    i32 43, label %land.rhs.lr.ph
1270    i32 45, label %sw.bb1.i
1271    i32 280, label %sw.bb8.i
1272    i32 60, label %sw.bb9.i
1273    i32 37, label %sw.bb4.i
1274    i32 281, label %sw.bb12.i
1275    i32 278, label %sw.bb6.i
1276    i32 283, label %sw.bb7.i
1277  ]
1278
1279sw.default.i49:                                   ; preds = %entry
1280  unreachable
1281
1282sw.bb1.i:                                         ; preds = %sw.bb14.i48
1283  br label %land.rhs.lr.ph
1284
1285sw.bb4.i:                                         ; preds = %sw.bb14.i48
1286  br label %land.rhs.lr.ph
1287
1288sw.bb6.i:                                         ; preds = %sw.bb14.i48
1289  br label %land.rhs.lr.ph
1290
1291sw.bb7.i:                                         ; preds = %sw.bb14.i48
1292  br label %land.rhs.lr.ph
1293
1294sw.bb8.i:                                         ; preds = %sw.bb14.i48
1295  br label %land.rhs.lr.ph
1296
1297sw.bb9.i:                                         ; preds = %sw.bb14.i48
1298  br label %land.rhs.lr.ph
1299
1300sw.bb12.i:                                        ; preds = %sw.bb14.i48
1301  br label %land.rhs.lr.ph
1302
1303land.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
1304  %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 ]
1305  br i1 undef, label %while.body, label %while.end
1306
1307while.body:                                       ; preds = %land.rhs.lr.ph
1308  call void @jt_2_tables_phi_edge_from_second()
1309  unreachable
1310
1311while.end:                                        ; preds = %land.rhs.lr.ph, %sw.bb14.i48
1312  %op.0.lcssa = phi i32 [ 15, %sw.bb14.i48 ], [ %retval.0.i.ph, %land.rhs.lr.ph ]
1313  ret void
1314}
1315
1316
1317define i32 @range_test(i32 %x) {
1318  ; CHECK-LABEL: name: range_test
1319  ; CHECK: bb.1.entry:
1320  ; CHECK-NEXT:   liveins: $w0
1321  ; CHECK-NEXT: {{  $}}
1322  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
1323  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
1324  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
1325  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1326  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
1327  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
1328  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]]
1329  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
1330  ; CHECK-NEXT:   G_BR %bb.5
1331  ; CHECK-NEXT: {{  $}}
1332  ; CHECK-NEXT: bb.5.entry:
1333  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C1]]
1334  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1335  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ule), [[SUB]](s32), [[C5]]
1336  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.2
1337  ; CHECK-NEXT:   G_BR %bb.4
1338  ; CHECK-NEXT: {{  $}}
1339  ; CHECK-NEXT: bb.2.sw.bb:
1340  ; CHECK-NEXT:   [[ADD:%[0-9]+]]:_(s32) = nsw G_ADD [[COPY]], [[C3]]
1341  ; CHECK-NEXT:   G_BR %bb.4
1342  ; CHECK-NEXT: {{  $}}
1343  ; CHECK-NEXT: bb.3.sw.bb1:
1344  ; CHECK-NEXT:   [[MUL:%[0-9]+]]:_(s32) = nsw G_MUL [[COPY]], [[C2]]
1345  ; CHECK-NEXT:   G_BR %bb.4
1346  ; CHECK-NEXT: {{  $}}
1347  ; CHECK-NEXT: bb.4.return:
1348  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[MUL]](s32), %bb.3, [[ADD]](s32), %bb.2, [[C4]](s32), %bb.5
1349  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)
1350  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
1351entry:
1352  switch i32 %x, label %return [
1353    i32 24, label %sw.bb
1354    i32 25, label %sw.bb
1355    i32 26, label %sw.bb
1356    i32 6, label %sw.bb1
1357  ]
1358
1359sw.bb:
1360  %add = add nsw i32 %x, 42
1361  br label %return
1362
1363sw.bb1:
1364  %mul = mul nsw i32 %x, 3
1365  br label %return
1366
1367return:
1368  %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
1369  ret i32 %retval.0
1370}
1371
1372define ptr @test_range_phi_switch_cycle() {
1373  ; CHECK-LABEL: name: test_range_phi_switch_cycle
1374  ; CHECK: bb.1.bb:
1375  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1376  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 305
1377  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 307
1378  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 497
1379  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
1380  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1381  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1382  ; CHECK-NEXT:   G_BR %bb.2
1383  ; CHECK-NEXT: {{  $}}
1384  ; CHECK-NEXT: bb.2.bb1:
1385  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s32) = G_PHI [[DEF]](s32), %bb.1, [[C3]](s32), %bb.3, [[C4]](s32), %bb.4, [[C5]](s32), %bb.2
1386  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C]]
1387  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2
1388  ; CHECK-NEXT:   G_BR %bb.6
1389  ; CHECK-NEXT: {{  $}}
1390  ; CHECK-NEXT: bb.6.bb1:
1391  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C1]]
1392  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.3
1393  ; CHECK-NEXT:   G_BR %bb.7
1394  ; CHECK-NEXT: {{  $}}
1395  ; CHECK-NEXT: bb.7.bb1:
1396  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C2]]
1397  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.4
1398  ; CHECK-NEXT:   G_BR %bb.5
1399  ; CHECK-NEXT: {{  $}}
1400  ; CHECK-NEXT: bb.3.bb2:
1401  ; CHECK-NEXT:   G_BR %bb.2
1402  ; CHECK-NEXT: {{  $}}
1403  ; CHECK-NEXT: bb.4.bb3:
1404  ; CHECK-NEXT:   G_BR %bb.2
1405  ; CHECK-NEXT: {{  $}}
1406  ; CHECK-NEXT: bb.5.bb4:
1407  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1408  ; CHECK-NEXT:   $w0 = COPY [[PHI]](s32)
1409  ; CHECK-NEXT:   BL @ham, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit-def $x0
1410  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1411  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
1412bb:
1413  br label %bb1
1414
1415bb1:                                              ; preds = %bb3, %bb2, %bb1, %bb
1416  %tmp = phi i32 [undef, %bb ], [ 4, %bb2 ], [ 3, %bb3 ], [ 1, %bb1]
1417  switch i32 undef, label %bb4 [
1418    i32 305, label %bb1
1419    i32 497, label %bb3
1420    i32 307, label %bb2
1421  ]
1422
1423bb2:                                              ; preds = %bb1
1424  br label %bb1
1425
1426bb3:                                              ; preds = %bb1
1427  br label %bb1
1428
1429bb4:                                              ; preds = %bb1
1430  %tmp5 = tail call ptr @ham(i32 %tmp)
1431  unreachable
1432}
1433
1434declare ptr @ham(i32)
1435
1436define internal void @bar() unnamed_addr #1 {
1437  ; CHECK-LABEL: name: bar
1438  ; CHECK: bb.1 (%ir-block.0):
1439    unreachable
1440}
1441
1442define i1 @i1_value_cmp_is_signed(i1) {
1443  ; CHECK-LABEL: name: i1_value_cmp_is_signed
1444  ; CHECK: bb.1.Entry:
1445  ; CHECK-NEXT:   liveins: $w0
1446  ; CHECK-NEXT: {{  $}}
1447  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0
1448  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
1449  ; CHECK-NEXT:   [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[TRUNC]], 1
1450  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_ZEXT]](s8)
1451  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
1452  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
1453  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(sle), [[TRUNC1]](s1), [[C1]]
1454  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3
1455  ; CHECK-NEXT:   G_BR %bb.2
1456  ; CHECK-NEXT: {{  $}}
1457  ; CHECK-NEXT: bb.2.BadValue:
1458  ; CHECK-NEXT:   successors:
1459  ; CHECK-NEXT: {{  $}}
1460  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
1461  ; CHECK-NEXT:   BL @bar, csr_aarch64_aapcs, implicit-def $lr, implicit $sp
1462  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
1463  ; CHECK-NEXT: {{  $}}
1464  ; CHECK-NEXT: bb.3.OkValue:
1465  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s8) = G_ZEXT [[TRUNC1]](s1)
1466  ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ZEXT]](s8)
1467  ; CHECK-NEXT:   $w0 = COPY [[ANYEXT]](s32)
1468  ; CHECK-NEXT:   RET_ReallyLR implicit $w0
1469Entry:
1470  switch i1 %0, label %BadValue [
1471    i1 false, label %OkValue
1472    i1 true, label %OkValue
1473  ]
1474
1475BadValue:
1476  call fastcc void @bar()
1477  unreachable
1478
1479OkValue:
1480  ret i1 %0
1481}
1482
1483