Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / LowOverheadLoops / biquad-cascade-optsize-strd-lr.mir
blobd4bc80dde25450688b9a8991ea084224bd6a2e2c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main -run-pass=arm-low-overhead-loops %s -o - -verify-machineinstrs | FileCheck %s
3 --- |
4   %struct.arm_biquad_casd_df1_inst_q31 = type { ptr, ptr, i32, i32 }
6   define hidden void @arm_biquad_cascade_df1_q31(ptr nocapture readonly %arg, ptr nocapture readonly %arg1, ptr nocapture %arg2, i32 %arg3) #0 {
7   bb:
8     %i = bitcast ptr %arg to ptr
9     %i4 = load ptr, ptr %i, align 4
10     %i5 = getelementptr inbounds %struct.arm_biquad_casd_df1_inst_q31, ptr %arg, i32 0, i32 1
11     %i6 = load ptr, ptr %i5, align 4
12     %i7 = getelementptr inbounds %struct.arm_biquad_casd_df1_inst_q31, ptr %arg, i32 0, i32 2
13     %i8 = load i32, ptr %i7, align 4
14     %i9 = sub i32 31, %i8
15     %i10 = getelementptr inbounds %struct.arm_biquad_casd_df1_inst_q31, ptr %arg, i32 0, i32 3
16     %i11 = load i32, ptr %i10, align 4
17     br label %bb12
19   bb12:                                             ; preds = %bb74, %bb
20     %i13 = phi ptr [ %i6, %bb ], [ %i18, %bb74 ]
21     %i14 = phi ptr [ %i4, %bb ], [ %i85, %bb74 ]
22     %i15 = phi ptr [ %arg1, %bb ], [ %arg2, %bb74 ]
23     %i16 = phi i32 [ %i11, %bb ], [ %i89, %bb74 ]
24     %i18 = getelementptr inbounds i32, ptr %i13, i32 5
25     %i19 = load i32, ptr %i14, align 4
26     %i20 = getelementptr inbounds i32, ptr %i14, i32 1
27     %i21 = load i32, ptr %i20, align 4
28     %i22 = getelementptr inbounds i32, ptr %i14, i32 2
29     %i23 = load i32, ptr %i22, align 4
30     %i24 = getelementptr inbounds i32, ptr %i14, i32 3
31     %i25 = load i32, ptr %i24, align 4
32     %i26 = call { i32, i1 } @llvm.test.start.loop.iterations.i32(i32 %arg3)
33     %i26.0 = extractvalue { i32, i1 } %i26, 0
34     %i26.1 = extractvalue { i32, i1 } %i26, 1
35     br i1 %i26.1, label %bb27, label %bb74
37   bb27:                                             ; preds = %bb12
38     %i28 = getelementptr inbounds i32, ptr %i13, i32 4
39     %i29 = load i32, ptr %i28, align 4
40     %i30 = getelementptr inbounds i32, ptr %i13, i32 3
41     %i31 = load i32, ptr %i30, align 4
42     %i32 = getelementptr inbounds i32, ptr %i13, i32 2
43     %i33 = load i32, ptr %i32, align 4
44     %i34 = getelementptr inbounds i32, ptr %i13, i32 1
45     %i35 = load i32, ptr %i34, align 4
46     %i36 = load i32, ptr %i13, align 4
47     br label %bb37
49   bb37:                                             ; preds = %bb37, %bb27
50     %lsr.iv = phi i32 [ %i70, %bb37 ], [ %i26.0, %bb27 ]
51     %i38 = phi ptr [ %i15, %bb27 ], [ %i51, %bb37 ]
52     %i39 = phi ptr [ %arg2, %bb27 ], [ %i69, %bb37 ]
53     %i40 = phi i32 [ %i25, %bb27 ], [ %i41, %bb37 ]
54     %i41 = phi i32 [ %i23, %bb27 ], [ %i68, %bb37 ]
55     %i42 = phi i32 [ %i21, %bb27 ], [ %i43, %bb37 ]
56     %i43 = phi i32 [ %i19, %bb27 ], [ %i52, %bb37 ]
57     %i45 = sext i32 %i29 to i64
58     %i46 = sext i32 %i31 to i64
59     %i47 = sext i32 %i33 to i64
60     %i48 = sext i32 %i35 to i64
61     %i49 = sext i32 %i36 to i64
62     %i50 = zext i32 %i9 to i64
63     %i51 = getelementptr inbounds i32, ptr %i38, i32 1
64     %i52 = load i32, ptr %i38, align 4
65     %i53 = sext i32 %i52 to i64
66     %i54 = mul nsw i64 %i53, %i49
67     %i55 = sext i32 %i43 to i64
68     %i56 = mul nsw i64 %i55, %i48
69     %i57 = sext i32 %i42 to i64
70     %i58 = mul nsw i64 %i57, %i47
71     %i59 = sext i32 %i41 to i64
72     %i60 = mul nsw i64 %i59, %i46
73     %i61 = sext i32 %i40 to i64
74     %i62 = mul nsw i64 %i61, %i45
75     %i63 = add i64 %i58, %i56
76     %i64 = add i64 %i63, %i60
77     %i65 = add i64 %i64, %i62
78     %i66 = add i64 %i65, %i54
79     %i67 = ashr i64 %i66, %i50
80     %i68 = trunc i64 %i67 to i32
81     %i69 = getelementptr inbounds i32, ptr %i39, i32 1
82     store i32 %i68, ptr %i39, align 4
83     %i70 = call i32 @llvm.loop.decrement.reg.i32(i32 %lsr.iv, i32 1)
84     %i71 = icmp ne i32 %i70, 0
85     br i1 %i71, label %bb37, label %bb72
87   bb72:                                             ; preds = %bb37
88     %i73 = trunc i64 %i67 to i32
89     br label %bb74
91   bb74:                                             ; preds = %bb72, %bb12
92     %i75 = phi i32 [ %i19, %bb12 ], [ %i52, %bb72 ]
93     %i76 = phi i32 [ %i21, %bb12 ], [ %i43, %bb72 ]
94     %i77 = phi i32 [ %i23, %bb12 ], [ %i73, %bb72 ]
95     %i78 = phi i32 [ %i25, %bb12 ], [ %i41, %bb72 ]
96     store i32 %i75, ptr %i14, align 4
97     %i79 = bitcast ptr %i14 to ptr
98     %i80 = getelementptr inbounds i8, ptr %i79, i32 4
99     %i81 = bitcast ptr %i80 to ptr
100     store i32 %i76, ptr %i81, align 4
101     %i82 = bitcast ptr %i14 to ptr
102     %i83 = getelementptr inbounds i8, ptr %i82, i32 8
103     %i84 = bitcast ptr %i83 to ptr
104     store i32 %i77, ptr %i84, align 4
105     %i85 = getelementptr inbounds i32, ptr %i14, i32 4
106     %i86 = bitcast ptr %i14 to ptr
107     %i87 = getelementptr inbounds i8, ptr %i86, i32 12
108     %i88 = bitcast ptr %i87 to ptr
109     store i32 %i78, ptr %i88, align 4
110     %i89 = add i32 %i16, -1
111     %i90 = icmp eq i32 %i89, 0
112     br i1 %i90, label %bb91, label %bb12
114   bb91:                                             ; preds = %bb74
115     ret void
116   }
118   declare { i32, i1 } @llvm.test.start.loop.iterations.i32(i32) #1
119   declare i32 @llvm.loop.decrement.reg.i32(i32, i32) #1
121   attributes #0 = { optsize "target-cpu"="cortex-m55" }
122   attributes #1 = { noduplicate nounwind "target-cpu"="cortex-m55" }
126 name:            arm_biquad_cascade_df1_q31
127 alignment:       2
128 tracksRegLiveness: true
129 registers:       []
130 liveins:
131   - { reg: '$r0', virtual-reg: '' }
132   - { reg: '$r1', virtual-reg: '' }
133   - { reg: '$r2', virtual-reg: '' }
134   - { reg: '$r3', virtual-reg: '' }
135 frameInfo:
136   stackSize:       68
137   offsetAdjustment: 0
138   maxAlignment:    4
139   savePoint:       ''
140   restorePoint:    ''
141 fixedStack:      []
142 stack:
143   - { id: 0, name: '', type: spill-slot, offset: -40, size: 4, alignment: 4,
144       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
145       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
146   - { id: 1, name: '', type: spill-slot, offset: -44, size: 4, alignment: 4,
147       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
148       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
149   - { id: 2, name: '', type: spill-slot, offset: -48, size: 4, alignment: 4,
150       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
151       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
152   - { id: 3, name: '', type: spill-slot, offset: -52, size: 4, alignment: 4,
153       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
154       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
155   - { id: 4, name: '', type: spill-slot, offset: -56, size: 4, alignment: 4,
156       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
157       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
158   - { id: 5, name: '', type: spill-slot, offset: -60, size: 4, alignment: 4,
159       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
160       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
161   - { id: 6, name: '', type: spill-slot, offset: -64, size: 4, alignment: 4,
162       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
163       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
164   - { id: 7, name: '', type: spill-slot, offset: -68, size: 4, alignment: 4,
165       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
166       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
167   - { id: 8, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
168       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
169       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
170   - { id: 9, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
171       stack-id: default, callee-saved-register: '$r11', callee-saved-restored: true,
172       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
173   - { id: 10, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
174       stack-id: default, callee-saved-register: '$r10', callee-saved-restored: true,
175       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
176   - { id: 11, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
177       stack-id: default, callee-saved-register: '$r9', callee-saved-restored: true,
178       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
179   - { id: 12, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
180       stack-id: default, callee-saved-register: '$r8', callee-saved-restored: true,
181       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
182   - { id: 13, name: '', type: spill-slot, offset: -24, size: 4, alignment: 4,
183       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
184       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
185   - { id: 14, name: '', type: spill-slot, offset: -28, size: 4, alignment: 4,
186       stack-id: default, callee-saved-register: '$r6', callee-saved-restored: true,
187       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
188   - { id: 15, name: '', type: spill-slot, offset: -32, size: 4, alignment: 4,
189       stack-id: default, callee-saved-register: '$r5', callee-saved-restored: true,
190       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
191   - { id: 16, name: '', type: spill-slot, offset: -36, size: 4, alignment: 4,
192       stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
193       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
194 callSites:       []
195 constants:       []
196 machineFunctionInfo: {}
197 body:             |
198   ; CHECK-LABEL: name: arm_biquad_cascade_df1_q31
199   ; CHECK: bb.0.bb:
200   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
201   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr
202   ; CHECK-NEXT: {{  $}}
203   ; CHECK-NEXT:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr
204   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 36
205   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
206   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r11, -8
207   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r10, -12
208   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r9, -16
209   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r8, -20
210   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r7, -24
211   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -28
212   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -32
213   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -36
214   ; CHECK-NEXT:   $sp = frame-setup tSUBspi $sp, 8, 14 /* CC::al */, $noreg
215   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 68
216   ; CHECK-NEXT:   $r6, $r4 = t2LDRDi8 $r0, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i7), (load (s32) from %ir.i10)
217   ; CHECK-NEXT:   $r7, $r5 = t2LDRDi8 killed $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i), (load (s32) from %ir.i5)
218   ; CHECK-NEXT:   renamable $r0 = t2RSBri killed renamable $r6, 31, 14 /* CC::al */, $noreg, $noreg
219   ; CHECK-NEXT:   t2STMIA $sp, 14 /* CC::al */, $noreg, killed $r0, $r2, $r3 :: (store (s32) into %stack.7), (store (s32) into %stack.6), (store (s32) into %stack.5)
220   ; CHECK-NEXT:   $r12 = tMOVr killed $r2, 14 /* CC::al */, $noreg
221   ; CHECK-NEXT:   renamable $r2 = tLDRspi $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.7)
222   ; CHECK-NEXT: {{  $}}
223   ; CHECK-NEXT: bb.1.bb12 (align 4):
224   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.5(0x40000000)
225   ; CHECK-NEXT:   liveins: $r1, $r2, $r3, $r4, $r5, $r7, $r12
226   ; CHECK-NEXT: {{  $}}
227   ; CHECK-NEXT:   $r10, $r0 = t2LDRDi8 $r7, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i14), (load (s32) from %ir.i20)
228   ; CHECK-NEXT:   $r6, $r8 = t2LDRDi8 $r7, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i22), (load (s32) from %ir.i24)
229   ; CHECK-NEXT:   $lr = t2WLS renamable $r3, %bb.5
230   ; CHECK-NEXT: {{  $}}
231   ; CHECK-NEXT: bb.2.bb27:
232   ; CHECK-NEXT:   successors: %bb.3(0x80000000)
233   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r4, $r5, $r6, $r7, $r8, $r10, $r12
234   ; CHECK-NEXT: {{  $}}
235   ; CHECK-NEXT:   renamable $r3 = tLDRi renamable $r5, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i13)
236   ; CHECK-NEXT:   t2STRDi8 killed $r7, killed $r4, $sp, 12, 14 /* CC::al */, $noreg :: (store (s32) into %stack.4), (store (s32) into %stack.3)
237   ; CHECK-NEXT:   tSTRspi killed renamable $r3, $sp, 7, 14 /* CC::al */, $noreg :: (store (s32) into %stack.0)
238   ; CHECK-NEXT:   renamable $r3 = tLDRi renamable $r5, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i34)
239   ; CHECK-NEXT:   renamable $r4 = tLDRi renamable $r5, 4, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i28)
240   ; CHECK-NEXT:   tSTRspi killed renamable $r3, $sp, 6, 14 /* CC::al */, $noreg :: (store (s32) into %stack.1)
241   ; CHECK-NEXT:   $r9, $r3 = t2LDRDi8 $r5, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i32), (load (s32) from %ir.i30)
242   ; CHECK-NEXT:   tSTRspi killed renamable $r5, $sp, 5, 14 /* CC::al */, $noreg :: (store (s32) into %stack.2)
243   ; CHECK-NEXT: {{  $}}
244   ; CHECK-NEXT: bb.3.bb37 (align 4):
245   ; CHECK-NEXT:   successors: %bb.3(0x7c000000), %bb.4(0x04000000)
246   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r6, $r8, $r9, $r10, $r12
247   ; CHECK-NEXT: {{  $}}
248   ; CHECK-NEXT:   $r7 = tMOVr killed $r6, 14 /* CC::al */, $noreg
249   ; CHECK-NEXT:   renamable $r6 = tLDRspi $sp, 6, 14 /* CC::al */, $noreg :: (load (s32) from %stack.1)
250   ; CHECK-NEXT:   $r5 = tMOVr $r10, 14 /* CC::al */, $noreg
251   ; CHECK-NEXT:   renamable $r6, renamable $r11 = t2SMULL killed $r10, killed renamable $r6, 14 /* CC::al */, $noreg
252   ; CHECK-NEXT:   renamable $r6, renamable $r11 = t2SMLAL killed renamable $r0, renamable $r9, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
253   ; CHECK-NEXT:   renamable $r10, renamable $r1 = t2LDR_POST killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i38)
254   ; CHECK-NEXT:   renamable $r6, renamable $r11 = t2SMLAL renamable $r7, renamable $r3, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
255   ; CHECK-NEXT:   renamable $r0 = tLDRspi $sp, 7, 14 /* CC::al */, $noreg :: (load (s32) from %stack.0)
256   ; CHECK-NEXT:   renamable $r6, renamable $r11 = t2SMLAL killed renamable $r8, renamable $r4, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
257   ; CHECK-NEXT:   renamable $r6, renamable $r11 = t2SMLAL renamable $r10, killed renamable $r0, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
258   ; CHECK-NEXT:   early-clobber renamable $r6, dead early-clobber renamable $r11 = MVE_ASRLr killed renamable $r6, killed renamable $r11, renamable $r2, 14 /* CC::al */, $noreg
259   ; CHECK-NEXT:   early-clobber renamable $r12 = t2STR_POST renamable $r6, killed renamable $r12, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i39)
260   ; CHECK-NEXT:   $r8 = tMOVr $r7, 14 /* CC::al */, $noreg
261   ; CHECK-NEXT:   $r0 = tMOVr $r5, 14 /* CC::al */, $noreg
262   ; CHECK-NEXT:   $lr = t2LEUpdate killed renamable $lr, %bb.3
263   ; CHECK-NEXT: {{  $}}
264   ; CHECK-NEXT: bb.4.bb72:
265   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
266   ; CHECK-NEXT:   liveins: $r2, $r5, $r6, $r7, $r10
267   ; CHECK-NEXT: {{  $}}
268   ; CHECK-NEXT:   $r0 = tMOVr killed $r5, 14 /* CC::al */, $noreg
269   ; CHECK-NEXT:   $r8 = tMOVr killed $r7, 14 /* CC::al */, $noreg
270   ; CHECK-NEXT:   $r12, $r3 = t2LDRDi8 $sp, 4, 14 /* CC::al */, $noreg :: (load (s32) from %stack.6), (load (s32) from %stack.5)
271   ; CHECK-NEXT:   renamable $r5 = tLDRspi $sp, 5, 14 /* CC::al */, $noreg :: (load (s32) from %stack.2)
272   ; CHECK-NEXT:   $r7, $r4 = t2LDRDi8 $sp, 12, 14 /* CC::al */, $noreg :: (load (s32) from %stack.4), (load (s32) from %stack.3)
273   ; CHECK-NEXT: {{  $}}
274   ; CHECK-NEXT: bb.5.bb74:
275   ; CHECK-NEXT:   successors: %bb.6(0x04000000), %bb.1(0x7c000000)
276   ; CHECK-NEXT:   liveins: $r0, $r3, $r4, $r5, $r6, $r7, $r8, $r10, $r12, $r2
277   ; CHECK-NEXT: {{  $}}
278   ; CHECK-NEXT:   renamable $r5, dead $cpsr = nuw tADDi8 killed renamable $r5, 20, 14 /* CC::al */, $noreg
279   ; CHECK-NEXT:   t2STRDi8 killed $r10, killed $r0, $r7, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i14), (store (s32) into %ir.i81)
280   ; CHECK-NEXT:   t2STRDi8 killed $r6, killed $r8, $r7, 8, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i84), (store (s32) into %ir.i88)
281   ; CHECK-NEXT:   renamable $r7, dead $cpsr = nuw tADDi8 killed renamable $r7, 16, 14 /* CC::al */, $noreg
282   ; CHECK-NEXT:   renamable $r4, $cpsr = tSUBi8 killed renamable $r4, 1, 14 /* CC::al */, $noreg
283   ; CHECK-NEXT:   $r1 = tMOVr $r12, 14 /* CC::al */, $noreg
284   ; CHECK-NEXT:   tBcc %bb.1, 1 /* CC::ne */, killed $cpsr
285   ; CHECK-NEXT: {{  $}}
286   ; CHECK-NEXT: bb.6.bb91:
287   ; CHECK-NEXT:   $sp = frame-destroy tADDspi $sp, 8, 14 /* CC::al */, $noreg
288   ; CHECK-NEXT:   $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc
289   bb.0.bb:
290     successors: %bb.1(0x80000000)
291     liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr
293     $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr
294     frame-setup CFI_INSTRUCTION def_cfa_offset 36
295     frame-setup CFI_INSTRUCTION offset $lr, -4
296     frame-setup CFI_INSTRUCTION offset $r11, -8
297     frame-setup CFI_INSTRUCTION offset $r10, -12
298     frame-setup CFI_INSTRUCTION offset $r9, -16
299     frame-setup CFI_INSTRUCTION offset $r8, -20
300     frame-setup CFI_INSTRUCTION offset $r7, -24
301     frame-setup CFI_INSTRUCTION offset $r6, -28
302     frame-setup CFI_INSTRUCTION offset $r5, -32
303     frame-setup CFI_INSTRUCTION offset $r4, -36
304     $sp = frame-setup tSUBspi $sp, 8, 14 /* CC::al */, $noreg
305     frame-setup CFI_INSTRUCTION def_cfa_offset 68
306     $r6, $r4 = t2LDRDi8 $r0, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i7), (load (s32) from %ir.i10)
307     $r7, $r5 = t2LDRDi8 killed $r0, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i), (load (s32) from %ir.i5)
308     renamable $r0 = t2RSBri killed renamable $r6, 31, 14 /* CC::al */, $noreg, $noreg
309     t2STMIA $sp, 14 /* CC::al */, $noreg, killed $r0, $r2, $r3 :: (store (s32) into %stack.7), (store (s32) into %stack.6), (store (s32) into %stack.5)
310     $r12 = tMOVr killed $r2, 14 /* CC::al */, $noreg
311     renamable $r2 = tLDRspi $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.7)
313   bb.1.bb12 (align 4):
314     successors: %bb.2(0x40000000), %bb.5(0x40000000)
315     liveins: $r1, $r3, $r4, $r5, $r7, $r12, $r2
317     $r10, $r0 = t2LDRDi8 $r7, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i14), (load (s32) from %ir.i20)
318     $r6, $r8 = t2LDRDi8 $r7, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i22), (load (s32) from %ir.i24)
319     renamable $lr = t2WhileLoopStartLR renamable $r3, %bb.5, implicit-def dead $cpsr
320     tB %bb.2, 14 /* CC::al */, $noreg
322   bb.2.bb27:
323     successors: %bb.3(0x80000000)
324     liveins: $lr, $r0, $r1, $r4, $r5, $r6, $r7, $r8, $r10, $r12, $r2
326     renamable $r3 = tLDRi renamable $r5, 0, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i13)
327     t2STRDi8 killed $r7, killed $r4, $sp, 12, 14 /* CC::al */, $noreg :: (store (s32) into %stack.4), (store (s32) into %stack.3)
328     tSTRspi killed renamable $r3, $sp, 7, 14 /* CC::al */, $noreg :: (store (s32) into %stack.0)
329     renamable $r3 = tLDRi renamable $r5, 1, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i34)
330     renamable $r4 = tLDRi renamable $r5, 4, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i28)
331     tSTRspi killed renamable $r3, $sp, 6, 14 /* CC::al */, $noreg :: (store (s32) into %stack.1)
332     $r9, $r3 = t2LDRDi8 $r5, 8, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i32), (load (s32) from %ir.i30)
333     tSTRspi killed renamable $r5, $sp, 5, 14 /* CC::al */, $noreg :: (store (s32) into %stack.2)
335   bb.3.bb37 (align 4):
336     successors: %bb.3(0x7c000000), %bb.4(0x04000000)
337     liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r6, $r8, $r9, $r10, $r12
339     $r7 = tMOVr killed $r6, 14 /* CC::al */, $noreg
340     renamable $r6 = tLDRspi $sp, 6, 14 /* CC::al */, $noreg :: (load (s32) from %stack.1)
341     $r5 = tMOVr $r10, 14 /* CC::al */, $noreg
342     renamable $r6, renamable $r11 = t2SMULL killed $r10, killed renamable $r6, 14 /* CC::al */, $noreg
343     renamable $r6, renamable $r11 = t2SMLAL killed renamable $r0, renamable $r9, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
344     renamable $r10, renamable $r1 = t2LDR_POST killed renamable $r1, 4, 14 /* CC::al */, $noreg :: (load (s32) from %ir.i38)
345     renamable $r6, renamable $r11 = t2SMLAL renamable $r7, renamable $r3, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
346     renamable $r0 = tLDRspi $sp, 7, 14 /* CC::al */, $noreg :: (load (s32) from %stack.0)
347     renamable $r6, renamable $r11 = t2SMLAL killed renamable $r8, renamable $r4, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
348     renamable $r6, renamable $r11 = t2SMLAL renamable $r10, killed renamable $r0, killed renamable $r6, killed renamable $r11, 14 /* CC::al */, $noreg
349     early-clobber renamable $r6, dead early-clobber renamable $r11 = MVE_ASRLr killed renamable $r6, killed renamable $r11, renamable $r2, 14 /* CC::al */, $noreg
350     early-clobber renamable $r12 = t2STR_POST renamable $r6, killed renamable $r12, 4, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i39)
351     $r8 = tMOVr $r7, 14 /* CC::al */, $noreg
352     $r0 = tMOVr $r5, 14 /* CC::al */, $noreg
353     renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr
354     tB %bb.4, 14 /* CC::al */, $noreg
356   bb.4.bb72:
357     successors: %bb.5(0x80000000)
358     liveins: $r5, $r6, $r7, $r10, $r2
360     $r0 = tMOVr killed $r5, 14 /* CC::al */, $noreg
361     $r8 = tMOVr killed $r7, 14 /* CC::al */, $noreg
362     $r12, $r3 = t2LDRDi8 $sp, 4, 14 /* CC::al */, $noreg :: (load (s32) from %stack.6), (load (s32) from %stack.5)
363     renamable $r5 = tLDRspi $sp, 5, 14 /* CC::al */, $noreg :: (load (s32) from %stack.2)
364     $r7, $r4 = t2LDRDi8 $sp, 12, 14 /* CC::al */, $noreg :: (load (s32) from %stack.4), (load (s32) from %stack.3)
366   bb.5.bb74:
367     successors: %bb.6(0x04000000), %bb.1(0x7c000000)
368     liveins: $r0, $r3, $r4, $r5, $r6, $r7, $r8, $r10, $r12, $r2
370     renamable $r5, dead $cpsr = nuw tADDi8 killed renamable $r5, 20, 14 /* CC::al */, $noreg
371     t2STRDi8 killed $r10, killed $r0, $r7, 0, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i14), (store (s32) into %ir.i81)
372     t2STRDi8 killed $r6, killed $r8, $r7, 8, 14 /* CC::al */, $noreg :: (store (s32) into %ir.i84), (store (s32) into %ir.i88)
373     renamable $r7, dead $cpsr = nuw tADDi8 killed renamable $r7, 16, 14 /* CC::al */, $noreg
374     renamable $r4, $cpsr = tSUBi8 killed renamable $r4, 1, 14 /* CC::al */, $noreg
375     $r1 = tMOVr $r12, 14 /* CC::al */, $noreg
376     tBcc %bb.1, 1 /* CC::ne */, killed $cpsr
378   bb.6.bb91:
379     $sp = frame-destroy tADDspi $sp, 8, 14 /* CC::al */, $noreg
380     $sp = frame-destroy t2LDMIA_RET $sp, 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $r8, def $r9, def $r10, def $r11, def $pc