[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / shrinkwrap-split-restore-point.mir
blob5b43dde0ae25034ea5853c4d54b1745ad8f9193c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2 # RUN: llc -mtriple=aarch64 -run-pass=shrink-wrap -o - %s | FileCheck %s
4 --- |
5   define void @shrink_test1(i32 %a) {
6   entry:
7     %cmp5 = icmp sgt i32 %a, 0
8     br i1 %cmp5, label %BB0, label %exit
10   BB0:                                              ; preds = %entry
11     %call = call i32 @fun()
12     %c = icmp eq i32 %call, 0
13     br i1 %c, label %BB1, label %exit
15   BB1:                                              ; preds = %BB0
16     %call2 = call i32 @fun()
17     br label %exit
19   exit:                                             ; preds = %BB1, %BB0, %entry
20     ret void
21   }
23   define void @shrink_test2(i32 %a, ptr %P1, ptr %P2) {
24   BB00:
25     %cmp5 = icmp sgt i32 %a, 0
26     br i1 %cmp5, label %BB01, label %exit
28   BB01:                                             ; preds = %BB00
29     store i32 %a, ptr %P1, align 4
30     %c1 = icmp sgt i32 %a, 1
31     br i1 %c1, label %BB02, label %BB03
33   BB02:                                             ; preds = %BB01
34     store i32 %a, ptr %P2, align 4
35     br label %BB03
37   BB03:                                             ; preds = %BB02, %BB01
38     %call03 = call i32 @fun()
39     %c03 = icmp eq i32 %call03, 0
40     br i1 %c03, label %BB04, label %BB05
42   BB04:                                             ; preds = %BB03
43     %call04 = call i32 @fun()
44     br label %BB05
46   BB05:                                             ; preds = %BB04, %BB03
47     %call05 = call i32 @fun()
48     %c05 = icmp eq i32 %call05, 0
49     br i1 %c05, label %BB06, label %BB07
51   BB06:                                             ; preds = %BB05
52     %call06 = call i32 @fun()
53     br label %exit
55   BB07:                                             ; preds = %BB05
56     %call07 = call i32 @fun2()
57     br label %exit
59   exit:                                             ; preds = %BB07, %BB06, %BB00
60     ret void
61   }
63   define void @noshrink_test1(i32 %a, i32 %v, i32 %v2) {
64   entry:
65     %cmp5 = icmp sgt i32 %a, 0
66     br i1 %cmp5, label %BB0, label %exit
68   BB0:                                              ; preds = %entry
69     %c = icmp eq i32 %a, 10
70     %c1 = icmp eq i32 %v, 10
71     %or.cond = select i1 %c, i1 %c1, i1 false
72     br i1 %or.cond, label %BB3, label %BB2
74   BB2:                                              ; preds = %BB0
75     %c2 = icmp eq i32 %v2, 10
76     br i1 %c2, label %BB4, label %exit
78   BB3:                                              ; preds = %BB0
79     %call3 = call i32 @fun()
80     br label %exit
82   BB4:                                              ; preds = %BB2
83     %call4 = call i32 @fun2()
84     br label %exit
86   exit:                                             ; preds = %BB4, %BB3, %BB2, %entry
87     ret void
88   }
90   define void @noshrink_test2(i32 %a) {
91   BB00:
92     %cmp5 = icmp sgt i32 %a, 0
93     br i1 %cmp5, label %BB01, label %InfLoop.preheader
95   InfLoop.preheader:                                ; preds = %BB00
96     br label %InfLoop
98   BB01:                                             ; preds = %BB00
99     %call = call i32 @fun()
100     %c = icmp eq i32 %call, 0
101     br i1 %c, label %BB02, label %exit
103   BB02:                                             ; preds = %BB01
104     %call2 = call i32 @fun()
105     br label %exit
107   InfLoop:                                          ; preds = %InfLoop.preheader, %InfLoop
108     %call3 = call i32 @fun()
109     br label %InfLoop
111   exit:                                             ; preds = %BB02, %BB01
112     ret void
113   }
115   define void @noshrink_test3(i32 %a) {
116   BB00:
117     %cmp5 = icmp sgt i32 %a, 0
118     %call02 = call i32 @fun()
119     br i1 %cmp5, label %BB02, label %BB01
121   BB01:                                             ; preds = %BB00
122     %0 = icmp eq i32 %call02, 0
123     br i1 %0, label %BB01.1, label %exit
125   BB01.1:                                           ; preds = %BB01
126     call void @abort() #0
127     unreachable
129   BB02:                                             ; preds = %BB00
130     %1 = icmp eq i32 %call02, 0
131     br i1 %1, label %BB03, label %BB04
133   BB03:                                             ; preds = %BB02
134     %call03 = call i32 @fun()
135     %c03 = icmp eq i32 %call03, 0
136     br i1 %c03, label %BB04, label %exit
138   BB04:                                             ; preds = %BB03, %BB02
139     %call04 = call i32 @fun()
140     br label %exit
142   exit:                                             ; preds = %BB04, %BB03, %BB01
143     ret void
144   }
146   define void @noshrink_bb_as_inlineasmbr_target(i1 %cond) {
147   entry:
148     br i1 %cond, label %0, label %exit
150   0:                                                ; preds = %entry
151     callbr void asm sideeffect "", "!i,~{flags}"()
152       to label %1 [label %exit]
154   1:                                                ; preds = %0
155     call void @dosomething()
156     br label %exit
158   exit:                                             ; preds = %1, %0, %entry
159     ret void
160   }
162   declare i32 @fun()
163   declare i32 @fun2()
164   declare void @abort()
165   declare void @dosomething()
168 name:            shrink_test1
169 alignment:       4
170 tracksRegLiveness: true
171 tracksDebugUserValues: true
172 liveins:
173   - { reg: '$w0' }
174 frameInfo:
175   maxAlignment:    1
176   adjustsStack:    true
177   hasCalls:        true
178   maxCallFrameSize: 0
179 machineFunctionInfo: {}
180 body:             |
181   ; CHECK-LABEL: name: shrink_test1
182   ; CHECK: bb.0.entry:
183   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.3(0x30000000)
184   ; CHECK-NEXT:   liveins: $w0
185   ; CHECK-NEXT: {{  $}}
186   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w0, 1, 0, implicit-def $nzcv
187   ; CHECK-NEXT:   Bcc 11, %bb.3, implicit killed $nzcv
188   ; CHECK-NEXT:   B %bb.1
189   ; CHECK-NEXT: {{  $}}
190   ; CHECK-NEXT: bb.1.BB0:
191   ; CHECK-NEXT:   successors: %bb.2(0x30000000), %bb.4(0x50000000)
192   ; CHECK-NEXT: {{  $}}
193   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
194   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
195   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
196   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.4
197   ; CHECK-NEXT:   B %bb.2
198   ; CHECK-NEXT: {{  $}}
199   ; CHECK-NEXT: bb.2.BB1:
200   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
201   ; CHECK-NEXT: {{  $}}
202   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
203   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
204   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
205   ; CHECK-NEXT:   B %bb.4
206   ; CHECK-NEXT: {{  $}}
207   ; CHECK-NEXT: bb.3.exit:
208   ; CHECK-NEXT:   RET_ReallyLR
209   ; CHECK-NEXT: {{  $}}
210   ; CHECK-NEXT: bb.4:
211   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
212   ; CHECK-NEXT: {{  $}}
213   ; CHECK-NEXT:   B %bb.3
214   bb.0.entry:
215     successors: %bb.1(0x50000000), %bb.3(0x30000000)
216     liveins: $w0
218     dead $wzr = SUBSWri killed renamable $w0, 1, 0, implicit-def $nzcv
219     Bcc 11, %bb.3, implicit killed $nzcv
220     B %bb.1
222   bb.1.BB0:
223     successors: %bb.2(0x30000000), %bb.3(0x50000000)
225     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
226     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
227     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
228     CBNZW killed renamable $w0, %bb.3
229     B %bb.2
231   bb.2.BB1:
232     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
233     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
234     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
236   bb.3.exit:
237     RET_ReallyLR
241 name:            shrink_test2
242 alignment:       4
243 tracksRegLiveness: true
244 tracksDebugUserValues: true
245 liveins:
246   - { reg: '$w0' }
247   - { reg: '$x1' }
248   - { reg: '$x2' }
249 frameInfo:
250   maxAlignment:    1
251   adjustsStack:    true
252   hasCalls:        true
253   maxCallFrameSize: 0
254 machineFunctionInfo: {}
255 body:             |
256   ; CHECK-LABEL: name: shrink_test2
257   ; CHECK: bb.0.BB00:
258   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.8(0x30000000)
259   ; CHECK-NEXT:   liveins: $w0, $x1, $x2
260   ; CHECK-NEXT: {{  $}}
261   ; CHECK-NEXT:   dead $wzr = SUBSWri renamable $w0, 1, 0, implicit-def $nzcv
262   ; CHECK-NEXT:   Bcc 11, %bb.8, implicit killed $nzcv
263   ; CHECK-NEXT:   B %bb.1
264   ; CHECK-NEXT: {{  $}}
265   ; CHECK-NEXT: bb.1.BB01:
266   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.3(0x40000000)
267   ; CHECK-NEXT:   liveins: $w0, $x1, $x2
268   ; CHECK-NEXT: {{  $}}
269   ; CHECK-NEXT:   dead $wzr = SUBSWri renamable $w0, 2, 0, implicit-def $nzcv
270   ; CHECK-NEXT:   STRWui renamable $w0, killed renamable $x1, 0 :: (store (s32) into %ir.P1)
271   ; CHECK-NEXT:   Bcc 11, %bb.3, implicit killed $nzcv
272   ; CHECK-NEXT:   B %bb.2
273   ; CHECK-NEXT: {{  $}}
274   ; CHECK-NEXT: bb.2.BB02:
275   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
276   ; CHECK-NEXT:   liveins: $w0, $x2
277   ; CHECK-NEXT: {{  $}}
278   ; CHECK-NEXT:   STRWui killed renamable $w0, killed renamable $x2, 0 :: (store (s32) into %ir.P2)
279   ; CHECK-NEXT: {{  $}}
280   ; CHECK-NEXT: bb.3.BB03:
281   ; CHECK-NEXT:   successors: %bb.4(0x30000000), %bb.5(0x50000000)
282   ; CHECK-NEXT: {{  $}}
283   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
284   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
285   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
286   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.5
287   ; CHECK-NEXT:   B %bb.4
288   ; CHECK-NEXT: {{  $}}
289   ; CHECK-NEXT: bb.4.BB04:
290   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
291   ; CHECK-NEXT: {{  $}}
292   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
293   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
294   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
295   ; CHECK-NEXT: {{  $}}
296   ; CHECK-NEXT: bb.5.BB05:
297   ; CHECK-NEXT:   successors: %bb.6(0x30000000), %bb.7(0x50000000)
298   ; CHECK-NEXT: {{  $}}
299   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
300   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
301   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
302   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.7
303   ; CHECK-NEXT:   B %bb.6
304   ; CHECK-NEXT: {{  $}}
305   ; CHECK-NEXT: bb.6.BB06:
306   ; CHECK-NEXT:   successors: %bb.9(0x80000000)
307   ; CHECK-NEXT: {{  $}}
308   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
309   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
310   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
311   ; CHECK-NEXT:   B %bb.9
312   ; CHECK-NEXT: {{  $}}
313   ; CHECK-NEXT: bb.7.BB07:
314   ; CHECK-NEXT:   successors: %bb.9(0x80000000)
315   ; CHECK-NEXT: {{  $}}
316   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
317   ; CHECK-NEXT:   BL @fun2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
318   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
319   ; CHECK-NEXT:   B %bb.9
320   ; CHECK-NEXT: {{  $}}
321   ; CHECK-NEXT: bb.8.exit:
322   ; CHECK-NEXT:   RET_ReallyLR
323   ; CHECK-NEXT: {{  $}}
324   ; CHECK-NEXT: bb.9:
325   ; CHECK-NEXT:   successors: %bb.8(0x80000000)
326   ; CHECK-NEXT: {{  $}}
327   ; CHECK-NEXT:   B %bb.8
328   bb.0.BB00:
329     successors: %bb.1(0x50000000), %bb.8(0x30000000)
330     liveins: $w0, $x1, $x2
332     dead $wzr = SUBSWri renamable $w0, 1, 0, implicit-def $nzcv
333     Bcc 11, %bb.8, implicit killed $nzcv
334     B %bb.1
336   bb.1.BB01:
337     successors: %bb.2, %bb.3
338     liveins: $w0, $x1, $x2
340     dead $wzr = SUBSWri renamable $w0, 2, 0, implicit-def $nzcv
341     STRWui renamable $w0, killed renamable $x1, 0 :: (store (s32) into %ir.P1)
342     Bcc 11, %bb.3, implicit killed $nzcv
343     B %bb.2
345   bb.2.BB02:
346     liveins: $w0, $x2
348     STRWui killed renamable $w0, killed renamable $x2, 0 :: (store (s32) into %ir.P2)
350   bb.3.BB03:
351     successors: %bb.4(0x30000000), %bb.5(0x50000000)
353     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
354     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
355     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
356     CBNZW killed renamable $w0, %bb.5
357     B %bb.4
359   bb.4.BB04:
360     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
361     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
362     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
364   bb.5.BB05:
365     successors: %bb.6(0x30000000), %bb.7(0x50000000)
367     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
368     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
369     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
370     CBNZW killed renamable $w0, %bb.7
371     B %bb.6
373   bb.6.BB06:
374     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
375     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
376     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
377     B %bb.8
379   bb.7.BB07:
380     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
381     BL @fun2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
382     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
384   bb.8.exit:
385     RET_ReallyLR
389 name:            noshrink_test1
390 alignment:       4
391 tracksRegLiveness: true
392 tracksDebugUserValues: true
393 liveins:
394   - { reg: '$w0' }
395   - { reg: '$w1' }
396   - { reg: '$w2' }
397 frameInfo:
398   maxAlignment:    1
399   adjustsStack:    true
400   hasCalls:        true
401   maxCallFrameSize: 0
402 machineFunctionInfo: {}
403 body:             |
404   ; CHECK-LABEL: name: noshrink_test1
405   ; CHECK: bb.0.entry:
406   ; CHECK-NEXT:   successors: %bb.1(0x50000000), %bb.6(0x30000000)
407   ; CHECK-NEXT:   liveins: $w0, $w1, $w2
408   ; CHECK-NEXT: {{  $}}
409   ; CHECK-NEXT:   dead $wzr = SUBSWri renamable $w0, 1, 0, implicit-def $nzcv
410   ; CHECK-NEXT:   Bcc 11, %bb.6, implicit killed $nzcv
411   ; CHECK-NEXT:   B %bb.1
412   ; CHECK-NEXT: {{  $}}
413   ; CHECK-NEXT: bb.1.BB0:
414   ; CHECK-NEXT:   successors: %bb.2(0x60000000), %bb.3(0x20000000)
415   ; CHECK-NEXT:   liveins: $w0, $w1, $w2
416   ; CHECK-NEXT: {{  $}}
417   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w0, 10, 0, implicit-def $nzcv
418   ; CHECK-NEXT:   Bcc 1, %bb.3, implicit killed $nzcv
419   ; CHECK-NEXT:   B %bb.2
420   ; CHECK-NEXT: {{  $}}
421   ; CHECK-NEXT: bb.2.BB0:
422   ; CHECK-NEXT:   successors: %bb.4(0x55555555), %bb.3(0x2aaaaaab)
423   ; CHECK-NEXT:   liveins: $w1, $w2
424   ; CHECK-NEXT: {{  $}}
425   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w1, 10, 0, implicit-def $nzcv
426   ; CHECK-NEXT:   Bcc 0, %bb.4, implicit killed $nzcv
427   ; CHECK-NEXT:   B %bb.3
428   ; CHECK-NEXT: {{  $}}
429   ; CHECK-NEXT: bb.3.BB2:
430   ; CHECK-NEXT:   successors: %bb.5(0x40000000), %bb.6(0x40000000)
431   ; CHECK-NEXT:   liveins: $w2
432   ; CHECK-NEXT: {{  $}}
433   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w2, 10, 0, implicit-def $nzcv
434   ; CHECK-NEXT:   Bcc 0, %bb.5, implicit killed $nzcv
435   ; CHECK-NEXT:   B %bb.6
436   ; CHECK-NEXT: {{  $}}
437   ; CHECK-NEXT: bb.4.BB3:
438   ; CHECK-NEXT:   successors: %bb.6(0x80000000)
439   ; CHECK-NEXT: {{  $}}
440   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
441   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
442   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
443   ; CHECK-NEXT:   B %bb.6
444   ; CHECK-NEXT: {{  $}}
445   ; CHECK-NEXT: bb.5.BB4:
446   ; CHECK-NEXT:   successors: %bb.6(0x80000000)
447   ; CHECK-NEXT: {{  $}}
448   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
449   ; CHECK-NEXT:   BL @fun2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
450   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
451   ; CHECK-NEXT: {{  $}}
452   ; CHECK-NEXT: bb.6.exit:
453   ; CHECK-NEXT:   RET_ReallyLR
454   bb.0.entry:
455     successors: %bb.1(0x50000000), %bb.6(0x30000000)
456     liveins: $w0, $w1, $w2
458     dead $wzr = SUBSWri renamable $w0, 1, 0, implicit-def $nzcv
459     Bcc 11, %bb.6, implicit killed $nzcv
460     B %bb.1
462   bb.1.BB0:
463     successors: %bb.2(0x60000000), %bb.3(0x20000000)
464     liveins: $w0, $w1, $w2
466     dead $wzr = SUBSWri killed renamable $w0, 10, 0, implicit-def $nzcv
467     Bcc 1, %bb.3, implicit killed $nzcv
468     B %bb.2
470   bb.2.BB0:
471     successors: %bb.4(0x55555555), %bb.3(0x2aaaaaab)
472     liveins: $w1, $w2
474     dead $wzr = SUBSWri killed renamable $w1, 10, 0, implicit-def $nzcv
475     Bcc 0, %bb.4, implicit killed $nzcv
476     B %bb.3
478   bb.3.BB2:
479     liveins: $w2
481     dead $wzr = SUBSWri killed renamable $w2, 10, 0, implicit-def $nzcv
482     Bcc 0, %bb.5, implicit killed $nzcv
483     B %bb.6
485   bb.4.BB3:
486     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
487     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
488     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
489     B %bb.6
491   bb.5.BB4:
492     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
493     BL @fun2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
494     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
496   bb.6.exit:
497     RET_ReallyLR
501 name:            noshrink_test2
502 alignment:       4
503 tracksRegLiveness: true
504 tracksDebugUserValues: true
505 liveins:
506   - { reg: '$w0' }
507 frameInfo:
508   maxAlignment:    1
509   adjustsStack:    true
510   hasCalls:        true
511   maxCallFrameSize: 0
512 machineFunctionInfo: {}
513 body:             |
514   ; CHECK-LABEL: name: noshrink_test2
515   ; CHECK: bb.0.BB00:
516   ; CHECK-NEXT:   successors: %bb.2(0x50000000), %bb.1(0x30000000)
517   ; CHECK-NEXT:   liveins: $w0
518   ; CHECK-NEXT: {{  $}}
519   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w0, 0, 0, implicit-def $nzcv
520   ; CHECK-NEXT:   Bcc 12, %bb.2, implicit killed $nzcv
521   ; CHECK-NEXT: {{  $}}
522   ; CHECK-NEXT: bb.1:
523   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
524   ; CHECK-NEXT: {{  $}}
525   ; CHECK-NEXT:   B %bb.4
526   ; CHECK-NEXT: {{  $}}
527   ; CHECK-NEXT: bb.2.BB01:
528   ; CHECK-NEXT:   successors: %bb.3(0x30000000), %bb.5(0x50000000)
529   ; CHECK-NEXT: {{  $}}
530   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
531   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
532   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
533   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.5
534   ; CHECK-NEXT:   B %bb.3
535   ; CHECK-NEXT: {{  $}}
536   ; CHECK-NEXT: bb.3.BB02:
537   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
538   ; CHECK-NEXT: {{  $}}
539   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
540   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
541   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
542   ; CHECK-NEXT:   B %bb.5
543   ; CHECK-NEXT: {{  $}}
544   ; CHECK-NEXT: bb.4.InfLoop:
545   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
546   ; CHECK-NEXT: {{  $}}
547   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
548   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
549   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
550   ; CHECK-NEXT:   B %bb.4
551   ; CHECK-NEXT: {{  $}}
552   ; CHECK-NEXT: bb.5.exit:
553   ; CHECK-NEXT:   RET_ReallyLR
554   bb.0.BB00:
555     successors: %bb.2(0x50000000), %bb.1(0x30000000)
556     liveins: $w0
558     dead $wzr = SUBSWri killed renamable $w0, 0, 0, implicit-def $nzcv
559     Bcc 12, %bb.2, implicit killed $nzcv
561   bb.1:
562     B %bb.4
564   bb.2.BB01:
565     successors: %bb.3(0x30000000), %bb.5(0x50000000)
567     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
568     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
569     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
570     CBNZW killed renamable $w0, %bb.5
571     B %bb.3
573   bb.3.BB02:
574     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
575     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
576     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
577     B %bb.5
579   bb.4.InfLoop:
580     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
581     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
582     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
583     B %bb.4
585   bb.5.exit:
586     RET_ReallyLR
590 name:            noshrink_test3
591 alignment:       4
592 tracksRegLiveness: true
593 tracksDebugUserValues: true
594 liveins:
595   - { reg: '$w0' }
596 frameInfo:
597   maxAlignment:    1
598   adjustsStack:    true
599   hasCalls:        true
600   maxCallFrameSize: 0
601 machineFunctionInfo: {}
602 body:             |
603   ; CHECK-LABEL: name: noshrink_test3
604   ; CHECK: bb.0.BB00:
605   ; CHECK-NEXT:   successors: %bb.3(0x50000000), %bb.1(0x30000000)
606   ; CHECK-NEXT:   liveins: $w0
607   ; CHECK-NEXT: {{  $}}
608   ; CHECK-NEXT:   renamable $w19 = COPY $w0
609   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
610   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
611   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
612   ; CHECK-NEXT:   dead $wzr = SUBSWri killed renamable $w19, 0, 0, implicit-def $nzcv
613   ; CHECK-NEXT:   Bcc 12, %bb.3, implicit killed $nzcv
614   ; CHECK-NEXT:   B %bb.1
615   ; CHECK-NEXT: {{  $}}
616   ; CHECK-NEXT: bb.1.BB01:
617   ; CHECK-NEXT:   successors: %bb.2(0x00000800), %bb.6(0x7ffff800)
618   ; CHECK-NEXT:   liveins: $w0
619   ; CHECK-NEXT: {{  $}}
620   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.6
621   ; CHECK-NEXT:   B %bb.2
622   ; CHECK-NEXT: {{  $}}
623   ; CHECK-NEXT: bb.2.BB01.1:
624   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
625   ; CHECK-NEXT: {{  $}}
626   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
627   ; CHECK-NEXT:   BL @abort, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
628   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
629   ; CHECK-NEXT: {{  $}}
630   ; CHECK-NEXT: bb.3.BB02:
631   ; CHECK-NEXT:   successors: %bb.4(0x30000000), %bb.5(0x50000000)
632   ; CHECK-NEXT:   liveins: $w0
633   ; CHECK-NEXT: {{  $}}
634   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.5
635   ; CHECK-NEXT:   B %bb.4
636   ; CHECK-NEXT: {{  $}}
637   ; CHECK-NEXT: bb.4.BB03:
638   ; CHECK-NEXT:   successors: %bb.5(0x30000000), %bb.6(0x50000000)
639   ; CHECK-NEXT: {{  $}}
640   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
641   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
642   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
643   ; CHECK-NEXT:   CBNZW killed renamable $w0, %bb.6
644   ; CHECK-NEXT:   B %bb.5
645   ; CHECK-NEXT: {{  $}}
646   ; CHECK-NEXT: bb.5.BB04:
647   ; CHECK-NEXT:   successors: %bb.6(0x80000000)
648   ; CHECK-NEXT: {{  $}}
649   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
650   ; CHECK-NEXT:   BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
651   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
652   ; CHECK-NEXT: {{  $}}
653   ; CHECK-NEXT: bb.6.exit:
654   ; CHECK-NEXT:   RET_ReallyLR
655   bb.0.BB00:
656     successors: %bb.3(0x50000000), %bb.1(0x30000000)
657     liveins: $w0
659     renamable $w19 = COPY $w0
660     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
661     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
662     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
663     dead $wzr = SUBSWri killed renamable $w19, 0, 0, implicit-def $nzcv
664     Bcc 12, %bb.3, implicit killed $nzcv
665     B %bb.1
667   bb.1.BB01:
668     successors: %bb.2(0x00000800), %bb.6(0x7ffff800)
669     liveins: $w0
671     CBNZW killed renamable $w0, %bb.6
672     B %bb.2
674   bb.2.BB01.1:
676     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
677     BL @abort, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
678     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
680   bb.3.BB02:
681     successors: %bb.4(0x30000000), %bb.5(0x50000000)
682     liveins: $w0
684     CBNZW killed renamable $w0, %bb.5
685     B %bb.4
687   bb.4.BB03:
688     successors: %bb.5(0x30000000), %bb.6(0x50000000)
690     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
691     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0
692     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
693     CBNZW killed renamable $w0, %bb.6
694     B %bb.5
696   bb.5.BB04:
697     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
698     BL @fun, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0
699     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
701   bb.6.exit:
702     RET_ReallyLR
706 name:            noshrink_bb_as_inlineasmbr_target
707 registers:       []
708 liveins:
709   - { reg: '$w0', virtual-reg: '' }
710 frameInfo:
711   savePoint:       ''
712   restorePoint:    ''
713 body:             |
714   ; CHECK-LABEL: name: noshrink_bb_as_inlineasmbr_target
715   ; CHECK: bb.0.entry:
716   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.3(0x40000000)
717   ; CHECK-NEXT:   liveins: $w0
718   ; CHECK-NEXT: {{  $}}
719   ; CHECK-NEXT:   TBZW killed renamable $w0, 0, %bb.3
720   ; CHECK-NEXT:   B %bb.1
721   ; CHECK-NEXT: {{  $}}
722   ; CHECK-NEXT: bb.1 (%ir-block.0):
723   ; CHECK-NEXT:   successors: %bb.2(0x80000000), %bb.3(0x00000000)
724   ; CHECK-NEXT: {{  $}}
725   ; CHECK-NEXT:   INLINEASM_BR &"", 1 /* sideeffect attdialect */, 13 /* imm */, %bb.3
726   ; CHECK-NEXT:   B %bb.2
727   ; CHECK-NEXT: {{  $}}
728   ; CHECK-NEXT: bb.2 (%ir-block.1):
729   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
730   ; CHECK-NEXT: {{  $}}
731   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
732   ; CHECK-NEXT:   BL @dosomething, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
733   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
734   ; CHECK-NEXT: {{  $}}
735   ; CHECK-NEXT: bb.3.exit (machine-block-address-taken, inlineasm-br-indirect-target):
736   ; CHECK-NEXT:   RET_ReallyLR
737   bb.0.entry:
738     successors: %bb.1(0x40000000), %bb.3(0x40000000)
739     liveins: $w0
741     TBZW killed renamable $w0, 0, %bb.3
742     B %bb.1
744   bb.1 (%ir-block.0):
745     successors: %bb.2(0x80000000), %bb.3(0x00000000)
747     INLINEASM_BR &"", 1 /* sideeffect attdialect */, 13 /* imm */, %bb.3
748     B %bb.2
750   bb.2 (%ir-block.1):
751     successors: %bb.3(0x80000000)
753     ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp
754     BL @dosomething, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp
755     ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp
757   bb.3.exit (machine-block-address-taken, inlineasm-br-indirect-target):
758     RET_ReallyLR