[Alignment][NFC] migrate DataLayout internal struct to llvm::Align
[llvm-core.git] / test / CodeGen / AArch64 / GlobalISel / arm64-irtranslator-switch.ll
blobf5075216352fb7a847b79d4e40151838c007ce71
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
6   ; CHECK: bb.1.entry:
7   ; CHECK:   successors: %bb.3(0x40000000), %bb.6(0x40000000)
8   ; CHECK:   liveins: $w0
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
17   ; CHECK:   G_BR %bb.6
18   ; CHECK: bb.6.entry:
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
22   ; CHECK:   G_BR %bb.2
23   ; CHECK: bb.2.default:
24   ; CHECK:   successors: %bb.5(0x80000000)
25   ; CHECK:   [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C4]]
26   ; CHECK:   G_BR %bb.5
27   ; CHECK: bb.3.case100:
28   ; CHECK:   successors: %bb.5(0x80000000)
29   ; CHECK:   [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C3]]
30   ; CHECK:   G_BR %bb.5
31   ; CHECK: bb.4.case200:
32   ; CHECK:   successors: %bb.5(0x80000000)
33   ; CHECK:   [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]]
34   ; CHECK: bb.5.return:
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
38 entry:
39   switch i32 %argc, label %default [
40     i32 100, label %case100
41     i32 200, label %case200
42   ]
44 default:
45   %tmp0 = add i32 %argc, 0
46   br label %return
48 case100:
49   %tmp1 = add i32 %argc, 1
50   br label %return
52 case200:
53   %tmp2 = add i32 %argc, 2
54   br label %return
56 return:
57   %res = phi i32 [ %tmp0, %default ], [ %tmp1, %case100 ], [ %tmp2, %case200 ]
58   ret i32 %res
61 define i32 @test_cfg_remap(i32 %in) {
62   ; CHECK-LABEL: name: test_cfg_remap
63   ; CHECK: bb.1.entry:
64   ; CHECK:   successors: %bb.2(0x40000000), %bb.5(0x40000000)
65   ; CHECK:   liveins: $w0
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
73   ; CHECK:   G_BR %bb.5
74   ; CHECK: bb.5.entry:
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
78   ; CHECK:   G_BR %bb.4
79   ; CHECK: bb.2.next:
80   ; CHECK:   successors: %bb.4(0x80000000)
81   ; CHECK:   G_BR %bb.4
82   ; CHECK: bb.3.other:
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
89 entry:
90   switch i32 %in, label %phi.block [i32 1, label %next
91                                     i32 57, label %other]
93 next:
94   br label %phi.block
96 other:
97   ret i32 undef
99 phi.block:
100   %res = phi i32 [1, %entry], [42, %next]
101   ret i32 %res
104 define i32 @test_cfg_remap_multiple_preds(i32 %in) {
105   ; CHECK-LABEL: name: test_cfg_remap_multiple_preds
106   ; CHECK: bb.1.entry:
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
118   ; CHECK:   G_BR %bb.6
119   ; CHECK: bb.6.entry:
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
123   ; CHECK:   G_BR %bb.7
124   ; CHECK: bb.7.entry:
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
128   ; CHECK:   G_BR %bb.8
129   ; CHECK: bb.8.entry:
130   ; CHECK:   successors: %bb.5(0x80000000)
131   ; CHECK:   G_BR %bb.5
132   ; CHECK: bb.2.odd:
133   ; CHECK:   successors:
134   ; CHECK: bb.3.next:
135   ; CHECK:   successors: %bb.5(0x80000000)
136   ; CHECK:   G_BR %bb.5
137   ; CHECK: bb.4.other:
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
144 entry:
145   switch i32 %in, label %odd [i32 1, label %next
146                               i32 57, label %other
147                               i32 128, label %phi.block
148                               i32 256, label %phi.block]
149 odd:
150   unreachable
152 next:
153   br label %phi.block
155 other:
156   ret i32 undef
158 phi.block:
159   %res = phi i32 [1, %entry], [1, %entry], [42, %next]
160   ret i32 12
163 define i32 @jt_test(i32 %x) {
164   ; CHECK-LABEL: name: jt_test
165   ; CHECK: bb.1.entry:
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
179   ; CHECK: bb.5.entry:
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)
183   ; CHECK: bb.2.sw.bb:
184   ; CHECK:   successors: %bb.4(0x80000000)
185   ; CHECK:   %11:_(s32) = nsw G_ADD [[COPY]], [[C2]]
186   ; CHECK:   G_BR %bb.4
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
194 entry:
195   switch i32 %x, label %return [
196     i32 75, label %sw.bb
197     i32 34, label %sw.bb
198     i32 56, label %sw.bb
199     i32 35, label %sw.bb
200     i32 40, label %sw.bb
201     i32 4, label %sw.bb1
202     i32 5, label %sw.bb1
203     i32 6, label %sw.bb1
204   ]
206 sw.bb:
207   %add = add nsw i32 %x, 42
208   br label %return
210 sw.bb1:
211   %mul = mul nsw i32 %x, 3
212   br label %return
214 return:
215   %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
216   ret i32 %retval.0
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
226   ; CHECK: bb.1.bb:
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
347   ; CHECK:   G_BR %bb.61
348   ; CHECK: bb.61.bb:
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
352   ; CHECK:   G_BR %bb.62
353   ; CHECK: bb.62.bb:
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
357   ; CHECK:   G_BR %bb.63
358   ; CHECK: bb.63.bb:
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
362   ; CHECK:   G_BR %bb.64
363   ; CHECK: bb.64.bb:
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
367   ; CHECK:   G_BR %bb.65
368   ; CHECK: bb.65.bb:
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
372   ; CHECK:   G_BR %bb.66
373   ; CHECK: bb.66.bb:
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
377   ; CHECK:   G_BR %bb.67
378   ; CHECK: bb.67.bb:
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
382   ; CHECK:   G_BR %bb.68
383   ; CHECK: bb.68.bb:
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
387   ; CHECK:   G_BR %bb.69
388   ; CHECK: bb.69.bb:
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
392   ; CHECK:   G_BR %bb.70
393   ; CHECK: bb.70.bb:
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
397   ; CHECK:   G_BR %bb.71
398   ; CHECK: bb.71.bb:
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
402   ; CHECK:   G_BR %bb.72
403   ; CHECK: bb.72.bb:
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
407   ; CHECK:   G_BR %bb.73
408   ; CHECK: bb.73.bb:
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
412   ; CHECK:   G_BR %bb.74
413   ; CHECK: bb.74.bb:
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
417   ; CHECK:   G_BR %bb.75
418   ; CHECK: bb.75.bb:
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
422   ; CHECK:   G_BR %bb.76
423   ; CHECK: bb.76.bb:
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
427   ; CHECK:   G_BR %bb.77
428   ; CHECK: bb.77.bb:
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
432   ; CHECK:   G_BR %bb.78
433   ; CHECK: bb.78.bb:
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
437   ; CHECK:   G_BR %bb.79
438   ; CHECK: bb.79.bb:
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
442   ; CHECK:   G_BR %bb.80
443   ; CHECK: bb.80.bb:
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
447   ; CHECK:   G_BR %bb.81
448   ; CHECK: bb.81.bb:
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
452   ; CHECK:   G_BR %bb.82
453   ; CHECK: bb.82.bb:
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
457   ; CHECK:   G_BR %bb.83
458   ; CHECK: bb.83.bb:
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
462   ; CHECK:   G_BR %bb.84
463   ; CHECK: bb.84.bb:
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
467   ; CHECK:   G_BR %bb.85
468   ; CHECK: bb.85.bb:
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
472   ; CHECK:   G_BR %bb.86
473   ; CHECK: bb.86.bb:
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
477   ; CHECK:   G_BR %bb.87
478   ; CHECK: bb.87.bb:
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
482   ; CHECK:   G_BR %bb.88
483   ; CHECK: bb.88.bb:
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
487   ; CHECK:   G_BR %bb.89
488   ; CHECK: bb.89.bb:
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
492   ; CHECK:   G_BR %bb.90
493   ; CHECK: bb.90.bb:
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
497   ; CHECK:   G_BR %bb.91
498   ; CHECK: bb.91.bb:
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
502   ; CHECK:   G_BR %bb.92
503   ; CHECK: bb.92.bb:
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
507   ; CHECK:   G_BR %bb.93
508   ; CHECK: bb.93.bb:
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
512   ; CHECK:   G_BR %bb.94
513   ; CHECK: bb.94.bb:
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
517   ; CHECK:   G_BR %bb.95
518   ; CHECK: bb.95.bb:
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
522   ; CHECK:   G_BR %bb.96
523   ; CHECK: bb.96.bb:
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
527   ; CHECK:   G_BR %bb.97
528   ; CHECK: bb.97.bb:
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
532   ; CHECK:   G_BR %bb.98
533   ; CHECK: bb.98.bb:
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
537   ; CHECK:   G_BR %bb.99
538   ; CHECK: bb.99.bb:
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
543   ; CHECK: bb.100.bb:
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
548   ; CHECK: bb.101.bb:
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
553   ; CHECK: bb.102.bb:
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
558   ; CHECK: bb.103.bb:
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
563   ; CHECK: bb.104.bb:
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
568   ; CHECK: bb.105.bb:
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
573   ; CHECK: bb.106.bb:
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
578   ; CHECK: bb.107.bb:
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
583   ; CHECK: bb.108.bb:
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
588   ; CHECK: bb.109.bb:
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
593   ; CHECK: bb.110.bb:
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
598   ; CHECK: bb.111.bb:
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
603   ; CHECK: bb.112.bb:
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
608   ; CHECK: bb.113.bb:
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
613   ; CHECK: bb.114.bb:
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
617   ; CHECK:   G_BR %bb.60
618   ; CHECK: bb.2.bb3:
619   ; CHECK:   successors: %bb.56(0x80000000)
620   ; CHECK:   G_BR %bb.56
621   ; CHECK: bb.3.bb4:
622   ; CHECK:   successors: %bb.56(0x80000000)
623   ; CHECK:   G_BR %bb.56
624   ; CHECK: bb.4.bb5:
625   ; CHECK:   successors: %bb.56(0x80000000)
626   ; CHECK:   G_BR %bb.56
627   ; CHECK: bb.5.bb6:
628   ; CHECK:   successors: %bb.56(0x80000000)
629   ; CHECK:   G_BR %bb.56
630   ; CHECK: bb.6.bb7:
631   ; CHECK:   successors: %bb.56(0x80000000)
632   ; CHECK:   G_BR %bb.56
633   ; CHECK: bb.7.bb8:
634   ; CHECK:   successors: %bb.56(0x80000000)
635   ; CHECK:   G_BR %bb.56
636   ; CHECK: bb.8.bb9:
637   ; CHECK:   successors: %bb.56(0x80000000)
638   ; CHECK:   G_BR %bb.56
639   ; CHECK: bb.9.bb10:
640   ; CHECK:   successors: %bb.56(0x80000000)
641   ; CHECK:   G_BR %bb.56
642   ; CHECK: bb.10.bb11:
643   ; CHECK:   successors: %bb.56(0x80000000)
644   ; CHECK:   G_BR %bb.56
645   ; CHECK: bb.11.bb12:
646   ; CHECK:   successors: %bb.56(0x80000000)
647   ; CHECK:   G_BR %bb.56
648   ; CHECK: bb.12.bb13:
649   ; CHECK:   successors: %bb.56(0x80000000)
650   ; CHECK:   G_BR %bb.56
651   ; CHECK: bb.13.bb14:
652   ; CHECK:   successors: %bb.56(0x80000000)
653   ; CHECK:   G_BR %bb.56
654   ; CHECK: bb.14.bb15:
655   ; CHECK:   successors: %bb.56(0x80000000)
656   ; CHECK:   G_BR %bb.56
657   ; CHECK: bb.15.bb16:
658   ; CHECK:   successors: %bb.56(0x80000000)
659   ; CHECK:   G_BR %bb.56
660   ; CHECK: bb.16.bb17:
661   ; CHECK:   successors: %bb.56(0x80000000)
662   ; CHECK:   G_BR %bb.56
663   ; CHECK: bb.17.bb18:
664   ; CHECK:   successors: %bb.56(0x80000000)
665   ; CHECK:   G_BR %bb.56
666   ; CHECK: bb.18.bb19:
667   ; CHECK:   successors: %bb.56(0x80000000)
668   ; CHECK:   G_BR %bb.56
669   ; CHECK: bb.19.bb20:
670   ; CHECK:   successors: %bb.56(0x80000000)
671   ; CHECK:   G_BR %bb.56
672   ; CHECK: bb.20.bb21:
673   ; CHECK:   successors: %bb.56(0x80000000)
674   ; CHECK:   G_BR %bb.56
675   ; CHECK: bb.21.bb22:
676   ; CHECK:   successors: %bb.56(0x80000000)
677   ; CHECK:   G_BR %bb.56
678   ; CHECK: bb.22.bb23:
679   ; CHECK:   successors: %bb.56(0x80000000)
680   ; CHECK:   G_BR %bb.56
681   ; CHECK: bb.23.bb24:
682   ; CHECK:   successors: %bb.56(0x80000000)
683   ; CHECK:   G_BR %bb.56
684   ; CHECK: bb.24.bb25:
685   ; CHECK:   successors: %bb.56(0x80000000)
686   ; CHECK:   G_BR %bb.56
687   ; CHECK: bb.25.bb26:
688   ; CHECK:   successors: %bb.56(0x80000000)
689   ; CHECK:   G_BR %bb.56
690   ; CHECK: bb.26.bb27:
691   ; CHECK:   successors: %bb.56(0x80000000)
692   ; CHECK:   G_BR %bb.56
693   ; CHECK: bb.27.bb28:
694   ; CHECK:   successors: %bb.56(0x80000000)
695   ; CHECK:   G_BR %bb.56
696   ; CHECK: bb.28.bb29:
697   ; CHECK:   successors: %bb.56(0x80000000)
698   ; CHECK:   G_BR %bb.56
699   ; CHECK: bb.29.bb30:
700   ; CHECK:   successors: %bb.56(0x80000000)
701   ; CHECK:   G_BR %bb.56
702   ; CHECK: bb.30.bb31:
703   ; CHECK:   successors: %bb.56(0x80000000)
704   ; CHECK:   G_BR %bb.56
705   ; CHECK: bb.31.bb32:
706   ; CHECK:   successors: %bb.56(0x80000000)
707   ; CHECK:   G_BR %bb.56
708   ; CHECK: bb.32.bb33:
709   ; CHECK:   successors: %bb.56(0x80000000)
710   ; CHECK:   G_BR %bb.56
711   ; CHECK: bb.33.bb34:
712   ; CHECK:   successors: %bb.56(0x80000000)
713   ; CHECK:   G_BR %bb.56
714   ; CHECK: bb.34.bb35:
715   ; CHECK:   successors: %bb.56(0x80000000)
716   ; CHECK:   G_BR %bb.56
717   ; CHECK: bb.35.bb36:
718   ; CHECK:   successors: %bb.56(0x80000000)
719   ; CHECK:   G_BR %bb.56
720   ; CHECK: bb.36.bb37:
721   ; CHECK:   successors: %bb.56(0x80000000)
722   ; CHECK:   G_BR %bb.56
723   ; CHECK: bb.37.bb38:
724   ; CHECK:   successors: %bb.56(0x80000000)
725   ; CHECK:   G_BR %bb.56
726   ; CHECK: bb.38.bb39:
727   ; CHECK:   successors: %bb.56(0x80000000)
728   ; CHECK:   G_BR %bb.56
729   ; CHECK: bb.39.bb40:
730   ; CHECK:   successors: %bb.56(0x80000000)
731   ; CHECK:   G_BR %bb.56
732   ; CHECK: bb.40.bb41:
733   ; CHECK:   successors: %bb.56(0x80000000)
734   ; CHECK:   G_BR %bb.56
735   ; CHECK: bb.41.bb42:
736   ; CHECK:   successors: %bb.56(0x80000000)
737   ; CHECK:   G_BR %bb.56
738   ; CHECK: bb.42.bb43:
739   ; CHECK:   successors: %bb.56(0x80000000)
740   ; CHECK:   G_BR %bb.56
741   ; CHECK: bb.43.bb44:
742   ; CHECK:   successors: %bb.56(0x80000000)
743   ; CHECK:   G_BR %bb.56
744   ; CHECK: bb.44.bb45:
745   ; CHECK:   successors: %bb.56(0x80000000)
746   ; CHECK:   G_BR %bb.56
747   ; CHECK: bb.45.bb46:
748   ; CHECK:   successors: %bb.56(0x80000000)
749   ; CHECK:   G_BR %bb.56
750   ; CHECK: bb.46.bb47:
751   ; CHECK:   successors: %bb.56(0x80000000)
752   ; CHECK:   G_BR %bb.56
753   ; CHECK: bb.47.bb48:
754   ; CHECK:   successors: %bb.56(0x80000000)
755   ; CHECK:   G_BR %bb.56
756   ; CHECK: bb.48.bb49:
757   ; CHECK:   successors: %bb.56(0x80000000)
758   ; CHECK:   G_BR %bb.56
759   ; CHECK: bb.49.bb50:
760   ; CHECK:   successors: %bb.56(0x80000000)
761   ; CHECK:   G_BR %bb.56
762   ; CHECK: bb.50.bb51:
763   ; CHECK:   successors: %bb.56(0x80000000)
764   ; CHECK:   G_BR %bb.56
765   ; CHECK: bb.51.bb52:
766   ; CHECK:   successors: %bb.56(0x80000000)
767   ; CHECK:   G_BR %bb.56
768   ; CHECK: bb.52.bb53:
769   ; CHECK:   successors: %bb.56(0x80000000)
770   ; CHECK:   G_BR %bb.56
771   ; CHECK: bb.53.bb54:
772   ; CHECK:   successors: %bb.56(0x80000000)
773   ; CHECK:   G_BR %bb.56
774   ; CHECK: bb.54.bb55:
775   ; CHECK:   successors: %bb.56(0x80000000)
776   ; CHECK:   G_BR %bb.56
777   ; CHECK: bb.55.bb56:
778   ; CHECK:   successors: %bb.56(0x80000000)
779   ; CHECK: bb.56.bb57:
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
794   ; CHECK:   G_BR %bb.59
795   ; CHECK: bb.57.bb62:
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
803   ; CHECK:   G_BR %bb.59
804   ; CHECK: bb.58.bb64:
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
818   ; CHECK: bb.59.bb68:
819   ; CHECK:   RET_ReallyLR
820   ; CHECK: bb.60.bb69:
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
824   ; CHECK:   G_BR %bb.57
826   %tmp = alloca [16 x i32], align 4
827   switch i32 %arg1, label %bb69 [
828     i32 3, label %bb57
829     i32 4, label %bb3
830     i32 6, label %bb4
831     i32 7, label %bb5
832     i32 8, label %bb6
833     i32 9, label %bb7
834     i32 10, label %bb8
835     i32 11, label %bb9
836     i32 12, label %bb10
837     i32 13, label %bb11
838     i32 14, label %bb12
839     i32 15, label %bb13
840     i32 16, label %bb14
841     i32 17, label %bb15
842     i32 18, label %bb16
843     i32 19, label %bb17
844     i32 20, label %bb18
845     i32 21, label %bb19
846     i32 22, label %bb20
847     i32 23, label %bb21
848     i32 24, label %bb22
849     i32 25, label %bb23
850     i32 26, label %bb24
851     i32 27, label %bb25
852     i32 28, label %bb26
853     i32 29, label %bb27
854     i32 30, label %bb28
855     i32 31, label %bb29
856     i32 32, label %bb30
857     i32 33, label %bb31
858     i32 34, label %bb32
859     i32 35, label %bb33
860     i32 36, label %bb34
861     i32 37, label %bb35
862     i32 38, label %bb36
863     i32 39, label %bb37
864     i32 41, label %bb38
865     i32 42, label %bb39
866     i32 43, label %bb40
867     i32 44, label %bb41
868     i32 45, label %bb42
869     i32 46, label %bb43
870     i32 47, label %bb44
871     i32 48, label %bb45
872     i32 49, label %bb46
873     i32 50, label %bb47
874     i32 51, label %bb48
875     i32 52, label %bb49
876     i32 53, label %bb50
877     i32 54, label %bb51
878     i32 55, label %bb52
879     i32 4352, label %bb53
880     i32 4353, label %bb54
881     i32 4354, label %bb55
882     i32 4355, label %bb56
883   ]
885 bb3:                                              ; preds = %bb
886   br label %bb57
888 bb4:                                              ; preds = %bb
889   br label %bb57
891 bb5:                                              ; preds = %bb
892   br label %bb57
894 bb6:                                              ; preds = %bb
895   br label %bb57
897 bb7:                                              ; preds = %bb
898   br label %bb57
900 bb8:                                              ; preds = %bb
901   br label %bb57
903 bb9:                                              ; preds = %bb
904   br label %bb57
906 bb10:                                             ; preds = %bb
907   br label %bb57
909 bb11:                                             ; preds = %bb
910   br label %bb57
912 bb12:                                             ; preds = %bb
913   br label %bb57
915 bb13:                                             ; preds = %bb
916   br label %bb57
918 bb14:                                             ; preds = %bb
919   br label %bb57
921 bb15:                                             ; preds = %bb
922   br label %bb57
924 bb16:                                             ; preds = %bb
925   br label %bb57
927 bb17:                                             ; preds = %bb
928   br label %bb57
930 bb18:                                             ; preds = %bb
931   br label %bb57
933 bb19:                                             ; preds = %bb
934   br label %bb57
936 bb20:                                             ; preds = %bb
937   br label %bb57
939 bb21:                                             ; preds = %bb
940   br label %bb57
942 bb22:                                             ; preds = %bb
943   br label %bb57
945 bb23:                                             ; preds = %bb
946   br label %bb57
948 bb24:                                             ; preds = %bb
949   br label %bb57
951 bb25:                                             ; preds = %bb
952   br label %bb57
954 bb26:                                             ; preds = %bb
955   br label %bb57
957 bb27:                                             ; preds = %bb
958   br label %bb57
960 bb28:                                             ; preds = %bb
961   br label %bb57
963 bb29:                                             ; preds = %bb
964   br label %bb57
966 bb30:                                             ; preds = %bb
967   br label %bb57
969 bb31:                                             ; preds = %bb
970   br label %bb57
972 bb32:                                             ; preds = %bb
973   br label %bb57
975 bb33:                                             ; preds = %bb
976   br label %bb57
978 bb34:                                             ; preds = %bb
979   br label %bb57
981 bb35:                                             ; preds = %bb
982   br label %bb57
984 bb36:                                             ; preds = %bb
985   br label %bb57
987 bb37:                                             ; preds = %bb
988   br label %bb57
990 bb38:                                             ; preds = %bb
991   br label %bb57
993 bb39:                                             ; preds = %bb
994   br label %bb57
996 bb40:                                             ; preds = %bb
997   br label %bb57
999 bb41:                                             ; preds = %bb
1000   br label %bb57
1002 bb42:                                             ; preds = %bb
1003   br label %bb57
1005 bb43:                                             ; preds = %bb
1006   br label %bb57
1008 bb44:                                             ; preds = %bb
1009   br label %bb57
1011 bb45:                                             ; preds = %bb
1012   br label %bb57
1014 bb46:                                             ; preds = %bb
1015   br label %bb57
1017 bb47:                                             ; preds = %bb
1018   br label %bb57
1020 bb48:                                             ; preds = %bb
1021   br label %bb57
1023 bb49:                                             ; preds = %bb
1024   br label %bb57
1026 bb50:                                             ; preds = %bb
1027   br label %bb57
1029 bb51:                                             ; preds = %bb
1030   br label %bb57
1032 bb52:                                             ; preds = %bb
1033   br label %bb57
1035 bb53:                                             ; preds = %bb
1036   br label %bb57
1038 bb54:                                             ; preds = %bb
1039   br label %bb57
1041 bb55:                                             ; preds = %bb
1042   br label %bb57
1044 bb56:                                             ; preds = %bb
1045   br label %bb57
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)
1052   br label %bb68
1054 bb62:                                             ; preds = %bb69
1055   %tmp63 = call %1* @wibble(%1* %arg, i32* nonnull %arg2)
1056   br label %bb68
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)
1063   br label %bb68
1065 bb68:                                             ; preds = %bb64, %bb62, %bb57
1066   ret void
1068 bb69:                                             ; preds = %bb
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
1079 ; second one.
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)
1135   ; CHECK:   G_BR %bb.3
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
1221 entry:
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
1230   ]
1232 if.then:                                          ; preds = %entry
1233   unreachable
1235 sw.bb2.i41:                                       ; preds = %entry
1236   unreachable
1238 sw.bb7.i44:                                       ; preds = %entry
1239   unreachable
1241 sw.bb8.i45:                                       ; preds = %entry
1242   unreachable
1244 sw.bb13.i47:                                      ; preds = %entry
1245   unreachable
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
1257   ]
1259 sw.default.i49:                                   ; preds = %entry
1260   unreachable
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()
1289   unreachable
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 ]
1293   ret void
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
1310   ; CHECK:   G_BR %bb.5
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
1319   ; CHECK:   G_BR %bb.2
1320   ; CHECK: bb.2.sw.bb:
1321   ; CHECK:   successors: %bb.4(0x80000000)
1322   ; CHECK:   %12:_(s32) = nsw G_ADD [[COPY]], [[C3]]
1323   ; CHECK:   G_BR %bb.4
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
1331 entry:
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
1337   ]
1339 sw.bb:
1340   %add = add nsw i32 %x, 42
1341   br label %return
1343 sw.bb1:
1344   %mul = mul nsw i32 %x, 3
1345   br label %return
1347 return:
1348   %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ]
1349   ret i32 %retval.0
1352 define i64* @test_range_phi_switch_cycle() {
1353   ; CHECK-LABEL: name: test_range_phi_switch_cycle
1354   ; CHECK: bb.1.bb:
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
1363   ; CHECK: bb.2.bb1:
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
1368   ; CHECK:   G_BR %bb.6
1369   ; CHECK: bb.6.bb1:
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
1373   ; CHECK:   G_BR %bb.7
1374   ; CHECK: bb.7.bb1:
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
1378   ; CHECK:   G_BR %bb.5
1379   ; CHECK: bb.3.bb2:
1380   ; CHECK:   successors: %bb.2(0x80000000)
1381   ; CHECK:   G_BR %bb.2
1382   ; CHECK: bb.4.bb3:
1383   ; CHECK:   successors: %bb.2(0x80000000)
1384   ; CHECK:   G_BR %bb.2
1385   ; CHECK: bb.5.bb4:
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
1392   br label %bb1
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 [
1397     i32 305, label %bb1
1398     i32 497, label %bb3
1399     i32 307, label %bb2
1400   ]
1402 bb2:                                              ; preds = %bb1
1403   br label %bb1
1405 bb3:                                              ; preds = %bb1
1406   br label %bb1
1408 bb4:                                              ; preds = %bb1
1409   %tmp5 = tail call i64* @ham(i32 %tmp)
1410   unreachable
1413 declare i64* @ham(i32)