[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / cfi-fixup.mir
blobf522df6bb3fa063ba54b33a3ff54ab4a2436f001
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64 -run-pass=cfi-fixup %s -o - | FileCheck %s
3 --- |
4   define i32 @f0(i32 %x) #0 {
5   entry: br label %return
6   if.end: br label %return
7   if.then2: br label %return
8   if.else: br label %return
9   return:
10     ret i32 0
11   }
13   define i32 @f1(i32 %x) #0 {
14   entry: br label %return
15   if.end: br label %return
16   if.then2: br label %return
17   if.else: br label %return
18   return:
19     ret i32 0
20   }
22   define i32 @f2(i32 %x) #0 {
23   entry: br label %return
24   if.end: br label %return
25   if.then2: br label %return
26   if.else: br label %return
27   return:
28     ret i32 0
29   }
31   declare i32 @g(i32)
33   attributes #0 = { nounwind shadowcallstack uwtable "sign-return-address"="non-leaf" "target-features"="+reserve-x18" }
35 ...
36 ---
37 name:            f0
38 alignment:       4
39 exposesReturnsTwice: false
40 legalized:       false
41 regBankSelected: false
42 selected:        false
43 failedISel:      false
44 tracksRegLiveness: true
45 hasWinCFI:       false
46 failsVerification: false
47 registers:       []
48 liveins:
49   - { reg: '$w0', virtual-reg: '' }
50 frameInfo:
51   isFrameAddressTaken: false
52   isReturnAddressTaken: false
53   hasStackMap:     false
54   hasPatchPoint:   false
55   stackSize:       16
56   offsetAdjustment: 0
57   maxAlignment:    16
58   adjustsStack:    true
59   hasCalls:        true
60   stackProtector:  ''
61   maxCallFrameSize: 0
62   cvBytesOfCalleeSavedRegisters: 0
63   hasOpaqueSPAdjustment: false
64   hasVAStart:      false
65   hasMustTailInVarArgFunc: false
66   hasTailCall:     false
67   localFrameSize:  0
68   savePoint:       ''
69   restorePoint:    ''
70 fixedStack:      []
71 stack:
72   - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16,
73       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
74       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
75 callSites:       []
76 debugValueSubstitutions: []
77 constants:       []
78 machineFunctionInfo:
79   hasRedZone:      false
80 body:             |
81   ; CHECK-LABEL: name: f0
82   ; CHECK: bb.0.entry:
83   ; CHECK-NEXT:   successors: %bb.4(0x30000000), %bb.1(0x50000000)
84   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
85   ; CHECK-NEXT: {{  $}}
86   ; CHECK-NEXT:   CBZW renamable $w0, %bb.4
87   ; CHECK-NEXT: {{  $}}
88   ; CHECK-NEXT: bb.1.if.end:
89   ; CHECK-NEXT:   successors: %bb.3(0x30000000), %bb.2(0x50000000)
90   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
91   ; CHECK-NEXT: {{  $}}
92   ; CHECK-NEXT:   early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
93   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
94   ; CHECK-NEXT:   frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
95   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION negate_ra_sign_state
96   ; CHECK-NEXT:   early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
97   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
98   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $w30, -16
99   ; CHECK-NEXT:   CFI_INSTRUCTION remember_state
100   ; CHECK-NEXT:   TBNZW renamable $w0, 31, %bb.3
101   ; CHECK-NEXT: {{  $}}
102   ; CHECK-NEXT: bb.2.if.else:
103   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
104   ; CHECK-NEXT:   liveins: $w0
105   ; CHECK-NEXT: {{  $}}
106   ; CHECK-NEXT:   renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
107   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
108   ; CHECK-NEXT:   renamable $w8 = MOVZWi 1, 0
109   ; CHECK-NEXT:   $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
110   ; CHECK-NEXT:   B %bb.5
111   ; CHECK-NEXT: {{  $}}
112   ; CHECK-NEXT: bb.3.if.then2:
113   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
114   ; CHECK-NEXT:   liveins: $w0
115   ; CHECK-NEXT: {{  $}}
116   ; CHECK-NEXT:   renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
117   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
118   ; CHECK-NEXT:   renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
119   ; CHECK-NEXT:   B %bb.5
120   ; CHECK-NEXT: {{  $}}
121   ; CHECK-NEXT: bb.4.return:
122   ; CHECK-NEXT:   liveins: $w0
123   ; CHECK-NEXT: {{  $}}
124   ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $wsp, 0
125   ; CHECK-NEXT:   CFI_INSTRUCTION negate_ra_sign_state
126   ; CHECK-NEXT:   CFI_INSTRUCTION same_value $w18
127   ; CHECK-NEXT:   CFI_INSTRUCTION same_value $w30
128   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
129   ; CHECK-NEXT: {{  $}}
130   ; CHECK-NEXT: bb.5.return:
131   ; CHECK-NEXT:   successors: %bb.7(0x80000000)
132   ; CHECK-NEXT:   liveins: $w0
133   ; CHECK-NEXT: {{  $}}
134   ; CHECK-NEXT:   CFI_INSTRUCTION restore_state
135   ; CHECK-NEXT:   CFI_INSTRUCTION remember_state
136   ; CHECK-NEXT:   B %bb.7
137   ; CHECK-NEXT: {{  $}}
138   ; CHECK-NEXT: bb.6.return:
139   ; CHECK-NEXT:   liveins: $w0
140   ; CHECK-NEXT: {{  $}}
141   ; CHECK-NEXT:   early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
142   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION def_cfa_offset 0
143   ; CHECK-NEXT:   frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
144   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION negate_ra_sign_state
145   ; CHECK-NEXT:   early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
146   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION restore $w18
147   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION restore $w30
148   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
149   ; CHECK-NEXT: {{  $}}
150   ; CHECK-NEXT: bb.7.return:
151   ; CHECK-NEXT:   successors: %bb.6(0x80000000)
152   ; CHECK-NEXT:   liveins: $w0
153   ; CHECK-NEXT: {{  $}}
154   ; CHECK-NEXT:   CFI_INSTRUCTION restore_state
155   ; CHECK-NEXT:   B %bb.6
156   bb.0.entry:
157     successors: %bb.4(0x30000000), %bb.1(0x50000000)
158     liveins: $w0, $lr, $x18
160     CBZW renamable $w0, %bb.4
162   bb.1.if.end:
163     successors: %bb.3(0x30000000), %bb.2(0x50000000)
164     liveins: $w0, $lr, $x18
166     early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
167     frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
168     frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
169     frame-setup CFI_INSTRUCTION negate_ra_sign_state
170     early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
171     frame-setup CFI_INSTRUCTION def_cfa_offset 16
172     frame-setup CFI_INSTRUCTION offset $w30, -16
173     TBNZW renamable $w0, 31, %bb.3
175   bb.2.if.else:
176     successors: %bb.5(0x80000000)
177     liveins: $w0
179     renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
180     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
181     renamable $w8 = MOVZWi 1, 0
182     $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
183     B %bb.5
185   bb.3.if.then2:
186     successors: %bb.5(0x80000000)
187     liveins: $w0
189     renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
190     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
191     renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
192     B %bb.5
194   bb.4.return:
195     liveins: $w0
196     RET undef $lr, implicit killed $w0
198   bb.5.return:
199     liveins: $w0
200     B %bb.6
202   bb.7.return:
203     liveins: $w0
204     early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
205     frame-destroy CFI_INSTRUCTION def_cfa_offset 0
206     frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
207     frame-destroy CFI_INSTRUCTION negate_ra_sign_state
208     early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
209     frame-destroy CFI_INSTRUCTION restore $w18
210     frame-destroy CFI_INSTRUCTION restore $w30
211     RET undef $lr, implicit killed $w0
213   bb.6.return:
214     liveins: $w0
215     B %bb.7
220 name:            f1
221 alignment:       4
222 exposesReturnsTwice: false
223 legalized:       false
224 regBankSelected: false
225 selected:        false
226 failedISel:      false
227 tracksRegLiveness: true
228 hasWinCFI:       false
229 failsVerification: false
230 registers:       []
231 liveins:
232   - { reg: '$w0', virtual-reg: '' }
233 frameInfo:
234   isFrameAddressTaken: false
235   isReturnAddressTaken: false
236   hasStackMap:     false
237   hasPatchPoint:   false
238   stackSize:       16
239   offsetAdjustment: 0
240   maxAlignment:    16
241   adjustsStack:    true
242   hasCalls:        true
243   stackProtector:  ''
244   maxCallFrameSize: 0
245   cvBytesOfCalleeSavedRegisters: 0
246   hasOpaqueSPAdjustment: false
247   hasVAStart:      false
248   hasMustTailInVarArgFunc: false
249   hasTailCall:     false
250   localFrameSize:  0
251   savePoint:       ''
252   restorePoint:    ''
253 fixedStack:      []
254 stack:
255   - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16,
256       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
257       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
258 callSites:       []
259 debugValueSubstitutions: []
260 constants:       []
261 machineFunctionInfo:
262   hasRedZone:      false
263 body:             |
264   ; CHECK-LABEL: name: f1
265   ; CHECK: bb.0.entry:
266   ; CHECK-NEXT:   successors: %bb.5(0x30000000), %bb.1(0x50000000)
267   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
268   ; CHECK-NEXT: {{  $}}
269   ; CHECK-NEXT:   CBZW renamable $w0, %bb.5
270   ; CHECK-NEXT: {{  $}}
271   ; CHECK-NEXT: bb.1.if.end:
272   ; CHECK-NEXT:   successors: %bb.3(0x30000000), %bb.2(0x50000000)
273   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
274   ; CHECK-NEXT: {{  $}}
275   ; CHECK-NEXT:   early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
276   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
277   ; CHECK-NEXT:   frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
278   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION negate_ra_sign_state
279   ; CHECK-NEXT:   early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
280   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
281   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $w30, -16
282   ; CHECK-NEXT:   TBNZW renamable $w0, 31, %bb.3
283   ; CHECK-NEXT: {{  $}}
284   ; CHECK-NEXT: bb.2.if.else:
285   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
286   ; CHECK-NEXT:   liveins: $w0
287   ; CHECK-NEXT: {{  $}}
288   ; CHECK-NEXT:   renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
289   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
290   ; CHECK-NEXT:   renamable $w8 = MOVZWi 1, 0
291   ; CHECK-NEXT:   $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
292   ; CHECK-NEXT:   B %bb.4
293   ; CHECK-NEXT: {{  $}}
294   ; CHECK-NEXT: bb.3.if.then2:
295   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
296   ; CHECK-NEXT:   liveins: $w0
297   ; CHECK-NEXT: {{  $}}
298   ; CHECK-NEXT:   renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
299   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
300   ; CHECK-NEXT:   renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
301   ; CHECK-NEXT:   B %bb.4
302   ; CHECK-NEXT: {{  $}}
303   ; CHECK-NEXT: bb.4.return:
304   ; CHECK-NEXT:   liveins: $w0
305   ; CHECK-NEXT: {{  $}}
306   ; CHECK-NEXT:   early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
307   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION def_cfa_offset 0
308   ; CHECK-NEXT:   frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
309   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION negate_ra_sign_state
310   ; CHECK-NEXT:   early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
311   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION restore $w18
312   ; CHECK-NEXT:   frame-destroy CFI_INSTRUCTION restore $w30
313   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
314   ; CHECK-NEXT: {{  $}}
315   ; CHECK-NEXT: bb.5.return:
316   ; CHECK-NEXT:   liveins: $w0
317   ; CHECK-NEXT: {{  $}}
318   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
319   bb.0.entry:
320     successors: %bb.5(0x30000000), %bb.1(0x50000000)
321     liveins: $w0, $lr, $x18
323     CBZW renamable $w0, %bb.5
325   bb.1.if.end:
326     successors: %bb.3(0x30000000), %bb.2(0x50000000)
327     liveins: $w0, $lr, $x18
329     early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
330     frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
331     frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
332     frame-setup CFI_INSTRUCTION negate_ra_sign_state
333     early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
334     frame-setup CFI_INSTRUCTION def_cfa_offset 16
335     frame-setup CFI_INSTRUCTION offset $w30, -16
336     TBNZW renamable $w0, 31, %bb.3
338   bb.2.if.else:
339     successors: %bb.4(0x80000000)
340     liveins: $w0
342     renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
343     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
344     renamable $w8 = MOVZWi 1, 0
345     $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
346     B %bb.4
348   bb.3.if.then2:
349     successors: %bb.4(0x80000000)
350     liveins: $w0
352     renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
353     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
354     renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
355     B %bb.4
357   bb.4.return:
358     liveins: $w0
360     early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
361     frame-destroy CFI_INSTRUCTION def_cfa_offset 0
362     frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
363     frame-destroy CFI_INSTRUCTION negate_ra_sign_state
364     early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
365     frame-destroy CFI_INSTRUCTION restore $w18
366     frame-destroy CFI_INSTRUCTION restore $w30
367     RET undef $lr, implicit killed $w0
369   bb.5.return:
370     liveins: $w0
371     RET undef $lr, implicit killed $w0
375 name:            f2
376 alignment:       4
377 exposesReturnsTwice: false
378 legalized:       false
379 regBankSelected: false
380 selected:        false
381 failedISel:      false
382 tracksRegLiveness: true
383 hasWinCFI:       false
384 failsVerification: false
385 registers:       []
386 liveins:
387   - { reg: '$w0', virtual-reg: '' }
388 frameInfo:
389   isFrameAddressTaken: false
390   isReturnAddressTaken: false
391   hasStackMap:     false
392   hasPatchPoint:   false
393   stackSize:       16
394   offsetAdjustment: 0
395   maxAlignment:    16
396   adjustsStack:    true
397   hasCalls:        true
398   stackProtector:  ''
399   maxCallFrameSize: 0
400   cvBytesOfCalleeSavedRegisters: 0
401   hasOpaqueSPAdjustment: false
402   hasVAStart:      false
403   hasMustTailInVarArgFunc: false
404   hasTailCall:     false
405   localFrameSize:  0
406   savePoint:       ''
407   restorePoint:    ''
408 fixedStack:      []
409 stack:
410   - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16,
411       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
412       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
413 callSites:       []
414 debugValueSubstitutions: []
415 constants:       []
416 machineFunctionInfo:
417   hasRedZone:      false
418 body:             |
419   ; CHECK-LABEL: name: f2
420   ; CHECK: bb.0.entry:
421   ; CHECK-NEXT:   successors: %bb.5(0x30000000), %bb.1(0x50000000)
422   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
423   ; CHECK-NEXT: {{  $}}
424   ; CHECK-NEXT:   CBZW renamable $w0, %bb.5
425   ; CHECK-NEXT: {{  $}}
426   ; CHECK-NEXT: bb.1.if.end:
427   ; CHECK-NEXT:   successors: %bb.3(0x30000000), %bb.2(0x50000000)
428   ; CHECK-NEXT:   liveins: $w0, $lr, $x18
429   ; CHECK-NEXT: {{  $}}
430   ; CHECK-NEXT:   early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
431   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
432   ; CHECK-NEXT:   frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
433   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION negate_ra_sign_state
434   ; CHECK-NEXT:   early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
435   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
436   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $w30, -16
437   ; CHECK-NEXT:   TBNZW renamable $w0, 31, %bb.3
438   ; CHECK-NEXT: {{  $}}
439   ; CHECK-NEXT: bb.2.if.else:
440   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
441   ; CHECK-NEXT:   liveins: $w0
442   ; CHECK-NEXT: {{  $}}
443   ; CHECK-NEXT:   renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
444   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
445   ; CHECK-NEXT:   renamable $w8 = MOVZWi 1, 0
446   ; CHECK-NEXT:   $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
447   ; CHECK-NEXT:   B %bb.4
448   ; CHECK-NEXT: {{  $}}
449   ; CHECK-NEXT: bb.3.if.then2:
450   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
451   ; CHECK-NEXT:   liveins: $w0
452   ; CHECK-NEXT: {{  $}}
453   ; CHECK-NEXT:   renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
454   ; CHECK-NEXT:   BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
455   ; CHECK-NEXT:   renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
456   ; CHECK-NEXT:   B %bb.4
457   ; CHECK-NEXT: {{  $}}
458   ; CHECK-NEXT: bb.4.return:
459   ; CHECK-NEXT:   liveins: $w0
460   ; CHECK-NEXT: {{  $}}
461   ; CHECK-NEXT:   early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
462   ; CHECK-NEXT:   frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
463   ; CHECK-NEXT:   early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
464   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
465   ; CHECK-NEXT: {{  $}}
466   ; CHECK-NEXT: bb.5.return:
467   ; CHECK-NEXT:   liveins: $w0
468   ; CHECK-NEXT: {{  $}}
469   ; CHECK-NEXT:   CFI_INSTRUCTION def_cfa $wsp, 0
470   ; CHECK-NEXT:   CFI_INSTRUCTION negate_ra_sign_state
471   ; CHECK-NEXT:   CFI_INSTRUCTION same_value $w18
472   ; CHECK-NEXT:   CFI_INSTRUCTION same_value $w30
473   ; CHECK-NEXT:   RET undef $lr, implicit killed $w0
474   bb.0.entry:
475     successors: %bb.5(0x30000000), %bb.1(0x50000000)
476     liveins: $w0, $lr, $x18
478     CBZW renamable $w0, %bb.5
480   bb.1.if.end:
481     successors: %bb.3(0x30000000), %bb.2(0x50000000)
482     liveins: $w0, $lr, $x18
484     early-clobber $x18 = frame-setup STRXpost $lr, $x18, 8
485     frame-setup CFI_INSTRUCTION escape 0x16, 0x12, 0x02, 0x82, 0x78
486     frame-setup PACIASP implicit-def $lr, implicit killed $lr, implicit $sp
487     frame-setup CFI_INSTRUCTION negate_ra_sign_state
488     early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)
489     frame-setup CFI_INSTRUCTION def_cfa_offset 16
490     frame-setup CFI_INSTRUCTION offset $w30, -16
491     TBNZW renamable $w0, 31, %bb.3
493   bb.2.if.else:
494     successors: %bb.4(0x80000000)
495     liveins: $w0
497     renamable $w0 = nuw nsw ADDWri killed renamable $w0, 1, 0
498     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
499     renamable $w8 = MOVZWi 1, 0
500     $w0 = SUBWrs killed renamable $w8, killed renamable $w0, 0
501     B %bb.4
503   bb.3.if.then2:
504     successors: %bb.4(0x80000000)
505     liveins: $w0
507     renamable $w0 = nsw SUBWri killed renamable $w0, 1, 0
508     BL @g, csr_aarch64_aapcs_scs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit-def $sp, implicit-def $w0
509     renamable $w0 = nsw ADDWri killed renamable $w0, 1, 0
510     B %bb.4
512   bb.4.return:
513     liveins: $w0
515     early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)
516     frame-destroy AUTIASP implicit-def $lr, implicit killed $lr, implicit $sp
517     early-clobber $x18, $lr = frame-destroy LDRXpre $x18, -8
518     RET undef $lr, implicit killed $w0
520   bb.5.return:
521     liveins: $w0
522     RET undef $lr, implicit killed $w0