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