Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / ARM / codesize-ifcvt.mir
blob3acbcf127d8a368c5c8e8398b5ddde8e28ff5ae6
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv7 -run-pass=if-converter %s -o - | FileCheck %s --check-prefix=CHECK-V7
3 # RUN: llc -mtriple=thumbv8 -run-pass=if-converter %s -o - | FileCheck %s --check-prefix=CHECK-V8
4 --- |
5   define void @test_nosize() {
6     %c0 = icmp sgt i64 0, 0
7     br i1 %c0, label %b1, label %b6
9   b1:                                               ; preds = %0
10     br i1 undef, label %b3, label %b2
12   b2:                                               ; preds = %b1
13     %v0 = tail call i32 @extfunc()
14     br label %b5
16   b3:                                               ; preds = %b1
17     %v1 = load i32, ptr undef, align 4
18     %v2 = and i32 %v1, 256
19     br label %b5
21   b5:                                               ; preds = %b3, %b2
22     %v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
23     %c1 = icmp eq i32 %v3, 0
24     br i1 %c1, label %b8, label %b7
26   b6:                                               ; preds = %0
27     %1 = tail call i32 @extfunc()
28     ret void
30   b7:                                               ; preds = %b5
31     %2 = tail call i32 @extfunc()
32     ret void
34   b8:                                               ; preds = %b5
35     ret void
36   }
38   ; Function Attrs: optsize
39   define void @test_optsize() #0 {
40     %c0 = icmp sgt i64 0, 0
41     br i1 %c0, label %b1, label %b6
43   b1:                                               ; preds = %0
44     br i1 undef, label %b3, label %b2
46   b2:                                               ; preds = %b1
47     %v0 = tail call i32 @extfunc()
48     br label %b5
50   b3:                                               ; preds = %b1
51     %v1 = load i32, ptr undef, align 4
52     %v2 = and i32 %v1, 256
53     br label %b5
55   b5:                                               ; preds = %b3, %b2
56     %v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
57     %c1 = icmp eq i32 %v3, 0
58     br i1 %c1, label %b8, label %b7
60   b6:                                               ; preds = %0
61     %1 = tail call i32 @extfunc()
62     ret void
64   b7:                                               ; preds = %b5
65     %2 = tail call i32 @extfunc()
66     ret void
68   b8:                                               ; preds = %b5
69     ret void
70   }
72   ; Function Attrs: minsize
73   define void @test_minsize() #1 {
74     %c0 = icmp sgt i64 0, 0
75     br i1 %c0, label %b1, label %b6
77   b1:                                               ; preds = %0
78     br i1 undef, label %b3, label %b2
80   b2:                                               ; preds = %b1
81     %v0 = tail call i32 @extfunc()
82     br label %b5
84   b3:                                               ; preds = %b1
85     %v1 = load i32, ptr undef, align 4
86     %v2 = and i32 %v1, 256
87     br label %b5
89   b5:                                               ; preds = %b3, %b2
90     %v3 = phi i32 [ %v2, %b3 ], [ %v0, %b2 ]
91     %c1 = icmp eq i32 %v3, 0
92     br i1 %c1, label %b8, label %b7
94   b6:                                               ; preds = %0
95     %1 = tail call i32 @extfunc()
96     ret void
98   b7:                                               ; preds = %b5
99     %2 = tail call i32 @extfunc()
100     ret void
102   b8:                                               ; preds = %b5
103     ret void
104   }
106   declare i32 @extfunc()
108   ; Function Attrs: nounwind
109   declare void @llvm.stackprotector(ptr, ptr) #2
111   attributes #0 = { optsize }
112   attributes #1 = { minsize }
113   attributes #2 = { nounwind }
117 name:            test_nosize
118 alignment:       2
119 exposesReturnsTwice: false
120 legalized:       false
121 regBankSelected: false
122 selected:        false
123 failedISel:      false
124 tracksRegLiveness: true
125 hasWinCFI:       false
126 registers:       []
127 liveins:         []
128 frameInfo:
129   isFrameAddressTaken: false
130   isReturnAddressTaken: false
131   hasStackMap:     false
132   hasPatchPoint:   false
133   stackSize:       8
134   offsetAdjustment: 0
135   maxAlignment:    4
136   adjustsStack:    true
137   hasCalls:        true
138   stackProtector:  ''
139   maxCallFrameSize: 0
140   cvBytesOfCalleeSavedRegisters: 0
141   hasOpaqueSPAdjustment: false
142   hasVAStart:      false
143   hasMustTailInVarArgFunc: false
144   localFrameSize:  0
145   savePoint:       ''
146   restorePoint:    ''
147 fixedStack:      []
148 stack:
149   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
150       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
151       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
152   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
153       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
154       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
155 callSites:       []
156 constants:       []
157 machineFunctionInfo: {}
158 body:             |
159   ; CHECK-V7-LABEL: name: test_nosize
160   ; CHECK-V7: bb.0 (%ir-block.0):
161   ; CHECK-V7:   successors: %bb.1(0x80000000)
162   ; CHECK-V7:   liveins: $lr, $r7
163   ; CHECK-V7:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
164   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
165   ; CHECK-V7:   tTAILJMPdND @extfunc, 1 /* CC::ne */, killed $cpsr, implicit $sp, implicit $sp
166   ; CHECK-V7: bb.1.b1:
167   ; CHECK-V7:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
168   ; CHECK-V7:   liveins: $r7, $lr
169   ; CHECK-V7:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
170   ; CHECK-V7:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
171   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $lr, -4
172   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $r7, -8
173   ; CHECK-V7:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
174   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
175   ; CHECK-V7:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
176   ; CHECK-V7: bb.2.b2:
177   ; CHECK-V7:   successors: %bb.4(0x80000000)
178   ; CHECK-V7:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
179   ; CHECK-V7:   t2B %bb.4, 14 /* CC::al */, $noreg
180   ; CHECK-V7: bb.3.b3:
181   ; CHECK-V7:   successors: %bb.4(0x80000000)
182   ; CHECK-V7:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
183   ; CHECK-V7:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
184   ; CHECK-V7: bb.4.b5:
185   ; CHECK-V7:   successors: %bb.5(0x50000000)
186   ; CHECK-V7:   liveins: $r0
187   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
188   ; CHECK-V7:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
189   ; CHECK-V7:   tBX_RET 0 /* CC::eq */, killed $cpsr
190   ; CHECK-V7: bb.5.b7:
191   ; CHECK-V7:   liveins: $lr, $r7
192   ; CHECK-V7:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
193   ; CHECK-V8-LABEL: name: test_nosize
194   ; CHECK-V8: bb.0 (%ir-block.0):
195   ; CHECK-V8:   successors: %bb.1(0x80000000)
196   ; CHECK-V8:   liveins: $lr, $r7
197   ; CHECK-V8:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
198   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
199   ; CHECK-V8:   tTAILJMPdND @extfunc, 1 /* CC::ne */, killed $cpsr, implicit $sp, implicit $sp
200   ; CHECK-V8: bb.1.b1:
201   ; CHECK-V8:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
202   ; CHECK-V8:   liveins: $r7, $lr
203   ; CHECK-V8:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
204   ; CHECK-V8:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
205   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $lr, -4
206   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $r7, -8
207   ; CHECK-V8:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
208   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
209   ; CHECK-V8:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
210   ; CHECK-V8: bb.2.b2:
211   ; CHECK-V8:   successors: %bb.4(0x80000000)
212   ; CHECK-V8:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
213   ; CHECK-V8:   t2B %bb.4, 14 /* CC::al */, $noreg
214   ; CHECK-V8: bb.3.b3:
215   ; CHECK-V8:   successors: %bb.4(0x80000000)
216   ; CHECK-V8:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
217   ; CHECK-V8:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
218   ; CHECK-V8: bb.4.b5:
219   ; CHECK-V8:   successors: %bb.5(0x50000000)
220   ; CHECK-V8:   liveins: $r0
221   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
222   ; CHECK-V8:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
223   ; CHECK-V8:   tBX_RET 0 /* CC::eq */, killed $cpsr
224   ; CHECK-V8: bb.5.b7:
225   ; CHECK-V8:   liveins: $lr, $r7
226   ; CHECK-V8:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
227   bb.0 (%ir-block.0):
228     successors: %bb.1(0x50000000), %bb.6(0x30000000)
229     liveins: $lr, $r7
231     renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
232     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
233     t2Bcc %bb.6, 1, killed $cpsr
235   bb.1.b1:
236     successors: %bb.3(0x40000000), %bb.2(0x40000000)
237     liveins: $r7, $lr
239     $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
240     frame-setup CFI_INSTRUCTION def_cfa_offset 8
241     frame-setup CFI_INSTRUCTION offset $lr, -4
242     frame-setup CFI_INSTRUCTION offset $r7, -8
243     renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
244     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
245     t2Bcc %bb.3, 1, killed $cpsr
247   bb.2.b2:
248     successors: %bb.4(0x80000000)
250     tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
251     t2B %bb.4, 14, $noreg
253   bb.3.b3:
254     successors: %bb.4(0x80000000)
256     renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
257     renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
259   bb.4.b5:
260     successors: %bb.5(0x30000000), %bb.6(0x50000000)
261     liveins: $r0
263     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
264     $sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
265     t2Bcc %bb.6, 1, killed $cpsr
267   bb.5.b8:
268     liveins: $lr, $r7
270     tBX_RET 14, $noreg
272   bb.6.b7:
273     liveins: $lr, $r7
275     tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp
279 name:            test_optsize
280 alignment:       2
281 exposesReturnsTwice: false
282 legalized:       false
283 regBankSelected: false
284 selected:        false
285 failedISel:      false
286 tracksRegLiveness: true
287 hasWinCFI:       false
288 registers:       []
289 liveins:         []
290 frameInfo:
291   isFrameAddressTaken: false
292   isReturnAddressTaken: false
293   hasStackMap:     false
294   hasPatchPoint:   false
295   stackSize:       8
296   offsetAdjustment: 0
297   maxAlignment:    4
298   adjustsStack:    true
299   hasCalls:        true
300   stackProtector:  ''
301   maxCallFrameSize: 0
302   cvBytesOfCalleeSavedRegisters: 0
303   hasOpaqueSPAdjustment: false
304   hasVAStart:      false
305   hasMustTailInVarArgFunc: false
306   localFrameSize:  0
307   savePoint:       ''
308   restorePoint:    ''
309 fixedStack:      []
310 stack:
311   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
312       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
313       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
314   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
315       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
316       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
317 callSites:       []
318 constants:       []
319 machineFunctionInfo: {}
320 body:             |
321   ; CHECK-V7-LABEL: name: test_optsize
322   ; CHECK-V7: bb.0 (%ir-block.0):
323   ; CHECK-V7:   successors: %bb.1(0x50000000), %bb.6(0x30000000)
324   ; CHECK-V7:   liveins: $lr, $r7
325   ; CHECK-V7:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
326   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
327   ; CHECK-V7:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
328   ; CHECK-V7: bb.1.b1:
329   ; CHECK-V7:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
330   ; CHECK-V7:   liveins: $r7, $lr
331   ; CHECK-V7:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
332   ; CHECK-V7:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
333   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $lr, -4
334   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $r7, -8
335   ; CHECK-V7:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
336   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
337   ; CHECK-V7:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
338   ; CHECK-V7: bb.2.b2:
339   ; CHECK-V7:   successors: %bb.4(0x80000000)
340   ; CHECK-V7:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
341   ; CHECK-V7:   t2B %bb.4, 14 /* CC::al */, $noreg
342   ; CHECK-V7: bb.3.b3:
343   ; CHECK-V7:   successors: %bb.4(0x80000000)
344   ; CHECK-V7:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
345   ; CHECK-V7:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
346   ; CHECK-V7: bb.4.b5:
347   ; CHECK-V7:   successors: %bb.5(0x30000000), %bb.6(0x50000000)
348   ; CHECK-V7:   liveins: $r0
349   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
350   ; CHECK-V7:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
351   ; CHECK-V7:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
352   ; CHECK-V7: bb.5.b8:
353   ; CHECK-V7:   liveins: $lr, $r7
354   ; CHECK-V7:   tBX_RET 14 /* CC::al */, $noreg
355   ; CHECK-V7: bb.6.b7:
356   ; CHECK-V7:   liveins: $lr, $r7
357   ; CHECK-V7:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
358   ; CHECK-V8-LABEL: name: test_optsize
359   ; CHECK-V8: bb.0 (%ir-block.0):
360   ; CHECK-V8:   successors: %bb.1(0x50000000), %bb.6(0x30000000)
361   ; CHECK-V8:   liveins: $lr, $r7
362   ; CHECK-V8:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
363   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
364   ; CHECK-V8:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
365   ; CHECK-V8: bb.1.b1:
366   ; CHECK-V8:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
367   ; CHECK-V8:   liveins: $r7, $lr
368   ; CHECK-V8:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
369   ; CHECK-V8:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
370   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $lr, -4
371   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $r7, -8
372   ; CHECK-V8:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
373   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
374   ; CHECK-V8:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
375   ; CHECK-V8: bb.2.b2:
376   ; CHECK-V8:   successors: %bb.4(0x80000000)
377   ; CHECK-V8:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
378   ; CHECK-V8:   t2B %bb.4, 14 /* CC::al */, $noreg
379   ; CHECK-V8: bb.3.b3:
380   ; CHECK-V8:   successors: %bb.4(0x80000000)
381   ; CHECK-V8:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
382   ; CHECK-V8:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
383   ; CHECK-V8: bb.4.b5:
384   ; CHECK-V8:   successors: %bb.5(0x30000000), %bb.6(0x50000000)
385   ; CHECK-V8:   liveins: $r0
386   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
387   ; CHECK-V8:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
388   ; CHECK-V8:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
389   ; CHECK-V8: bb.5.b8:
390   ; CHECK-V8:   liveins: $lr, $r7
391   ; CHECK-V8:   tBX_RET 14 /* CC::al */, $noreg
392   ; CHECK-V8: bb.6.b7:
393   ; CHECK-V8:   liveins: $lr, $r7
394   ; CHECK-V8:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
395   bb.0 (%ir-block.0):
396     successors: %bb.1(0x50000000), %bb.6(0x30000000)
397     liveins: $lr, $r7
399     renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
400     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
401     t2Bcc %bb.6, 1, killed $cpsr
403   bb.1.b1:
404     successors: %bb.3(0x40000000), %bb.2(0x40000000)
405     liveins: $r7, $lr
407     $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
408     frame-setup CFI_INSTRUCTION def_cfa_offset 8
409     frame-setup CFI_INSTRUCTION offset $lr, -4
410     frame-setup CFI_INSTRUCTION offset $r7, -8
411     renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
412     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
413     t2Bcc %bb.3, 1, killed $cpsr
415   bb.2.b2:
416     successors: %bb.4(0x80000000)
418     tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
419     t2B %bb.4, 14, $noreg
421   bb.3.b3:
422     successors: %bb.4(0x80000000)
424     renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
425     renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
427   bb.4.b5:
428     successors: %bb.5(0x30000000), %bb.6(0x50000000)
429     liveins: $r0
431     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
432     $sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
433     t2Bcc %bb.6, 1, killed $cpsr
435   bb.5.b8:
436     liveins: $lr, $r7
438     tBX_RET 14, $noreg
440   bb.6.b7:
441     liveins: $lr, $r7
443     tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp
447 name:            test_minsize
448 alignment:       2
449 exposesReturnsTwice: false
450 legalized:       false
451 regBankSelected: false
452 selected:        false
453 failedISel:      false
454 tracksRegLiveness: true
455 hasWinCFI:       false
456 registers:       []
457 liveins:         []
458 frameInfo:
459   isFrameAddressTaken: false
460   isReturnAddressTaken: false
461   hasStackMap:     false
462   hasPatchPoint:   false
463   stackSize:       8
464   offsetAdjustment: 0
465   maxAlignment:    4
466   adjustsStack:    true
467   hasCalls:        true
468   stackProtector:  ''
469   maxCallFrameSize: 0
470   cvBytesOfCalleeSavedRegisters: 0
471   hasOpaqueSPAdjustment: false
472   hasVAStart:      false
473   hasMustTailInVarArgFunc: false
474   localFrameSize:  0
475   savePoint:       ''
476   restorePoint:    ''
477 fixedStack:      []
478 stack:
479   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
480       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true,
481       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
482   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
483       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
484       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
485 callSites:       []
486 constants:       []
487 machineFunctionInfo: {}
488 body:             |
489   ; CHECK-V7-LABEL: name: test_minsize
490   ; CHECK-V7: bb.0 (%ir-block.0):
491   ; CHECK-V7:   successors: %bb.1(0x50000000), %bb.6(0x30000000)
492   ; CHECK-V7:   liveins: $lr, $r7
493   ; CHECK-V7:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
494   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
495   ; CHECK-V7:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
496   ; CHECK-V7: bb.1.b1:
497   ; CHECK-V7:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
498   ; CHECK-V7:   liveins: $r7, $lr
499   ; CHECK-V7:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
500   ; CHECK-V7:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
501   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $lr, -4
502   ; CHECK-V7:   frame-setup CFI_INSTRUCTION offset $r7, -8
503   ; CHECK-V7:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
504   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
505   ; CHECK-V7:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
506   ; CHECK-V7: bb.2.b2:
507   ; CHECK-V7:   successors: %bb.4(0x80000000)
508   ; CHECK-V7:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
509   ; CHECK-V7:   t2B %bb.4, 14 /* CC::al */, $noreg
510   ; CHECK-V7: bb.3.b3:
511   ; CHECK-V7:   successors: %bb.4(0x80000000)
512   ; CHECK-V7:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
513   ; CHECK-V7:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
514   ; CHECK-V7: bb.4.b5:
515   ; CHECK-V7:   successors: %bb.5(0x30000000), %bb.6(0x50000000)
516   ; CHECK-V7:   liveins: $r0
517   ; CHECK-V7:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
518   ; CHECK-V7:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
519   ; CHECK-V7:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
520   ; CHECK-V7: bb.5.b8:
521   ; CHECK-V7:   liveins: $lr, $r7
522   ; CHECK-V7:   tBX_RET 14 /* CC::al */, $noreg
523   ; CHECK-V7: bb.6.b7:
524   ; CHECK-V7:   liveins: $lr, $r7
525   ; CHECK-V7:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
526   ; CHECK-V8-LABEL: name: test_minsize
527   ; CHECK-V8: bb.0 (%ir-block.0):
528   ; CHECK-V8:   successors: %bb.1(0x50000000), %bb.6(0x30000000)
529   ; CHECK-V8:   liveins: $lr, $r7
530   ; CHECK-V8:   renamable $r0 = t2MOVi 1, 14 /* CC::al */, $noreg, $noreg
531   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
532   ; CHECK-V8:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
533   ; CHECK-V8: bb.1.b1:
534   ; CHECK-V8:   successors: %bb.3(0x40000000), %bb.2(0x40000000)
535   ; CHECK-V8:   liveins: $r7, $lr
536   ; CHECK-V8:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
537   ; CHECK-V8:   frame-setup CFI_INSTRUCTION def_cfa_offset 8
538   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $lr, -4
539   ; CHECK-V8:   frame-setup CFI_INSTRUCTION offset $r7, -8
540   ; CHECK-V8:   renamable $r0 = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg
541   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
542   ; CHECK-V8:   t2Bcc %bb.3, 1 /* CC::ne */, killed $cpsr
543   ; CHECK-V8: bb.2.b2:
544   ; CHECK-V8:   successors: %bb.4(0x80000000)
545   ; CHECK-V8:   tBL 14 /* CC::al */, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
546   ; CHECK-V8:   t2B %bb.4, 14 /* CC::al */, $noreg
547   ; CHECK-V8: bb.3.b3:
548   ; CHECK-V8:   successors: %bb.4(0x80000000)
549   ; CHECK-V8:   renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from `ptr undef`)
550   ; CHECK-V8:   renamable $r0 = t2ANDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
551   ; CHECK-V8: bb.4.b5:
552   ; CHECK-V8:   successors: %bb.5(0x30000000), %bb.6(0x50000000)
553   ; CHECK-V8:   liveins: $r0
554   ; CHECK-V8:   t2CMPri killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
555   ; CHECK-V8:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
556   ; CHECK-V8:   t2Bcc %bb.6, 1 /* CC::ne */, killed $cpsr
557   ; CHECK-V8: bb.5.b8:
558   ; CHECK-V8:   liveins: $lr, $r7
559   ; CHECK-V8:   tBX_RET 14 /* CC::al */, $noreg
560   ; CHECK-V8: bb.6.b7:
561   ; CHECK-V8:   liveins: $lr, $r7
562   ; CHECK-V8:   tTAILJMPdND @extfunc, 14 /* CC::al */, $noreg, implicit $sp, implicit $sp
563   bb.0 (%ir-block.0):
564     successors: %bb.1(0x50000000), %bb.6(0x30000000)
565     liveins: $lr, $r7
567     renamable $r0 = t2MOVi 1, 14, $noreg, $noreg
568     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
569     t2Bcc %bb.6, 1, killed $cpsr
571   bb.1.b1:
572     successors: %bb.3(0x40000000), %bb.2(0x40000000)
573     liveins: $r7, $lr
575     $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r7, killed $lr
576     frame-setup CFI_INSTRUCTION def_cfa_offset 8
577     frame-setup CFI_INSTRUCTION offset $lr, -4
578     frame-setup CFI_INSTRUCTION offset $r7, -8
579     renamable $r0 = t2MOVi 0, 14, $noreg, $noreg
580     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
581     t2Bcc %bb.3, 1, killed $cpsr
583   bb.2.b2:
584     successors: %bb.4(0x80000000)
586     tBL 14, $noreg, @extfunc, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $r0
587     t2B %bb.4, 14, $noreg
589   bb.3.b3:
590     successors: %bb.4(0x80000000)
592     renamable $r0 = t2LDRi12 undef renamable $r0, 0, 14, $noreg :: (load (s32) from `ptr undef`)
593     renamable $r0 = t2ANDri killed renamable $r0, 256, 14, $noreg, $noreg
595   bb.4.b5:
596     successors: %bb.5(0x30000000), %bb.6(0x50000000)
597     liveins: $r0
599     t2CMPri killed renamable $r0, 0, 14, $noreg, implicit-def $cpsr
600     $sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr
601     t2Bcc %bb.6, 1, killed $cpsr
603   bb.5.b8:
604     liveins: $lr, $r7
606     tBX_RET 14, $noreg
608   bb.6.b7:
609     liveins: $lr, $r7
611     tTAILJMPdND @extfunc, 14, $noreg, implicit $sp, implicit $sp