Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / LowOverheadLoops / multiple-do-loops.mir
blob8e5172cadc329d27c709c1887138ee19dc9b4d79
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve -run-pass=arm-low-overhead-loops %s -o - --verify-machineinstrs | FileCheck %s
4 --- |
5   define dso_local arm_aapcs_vfpcc void @test1(ptr noalias nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) local_unnamed_addr {
6   entry:
7     %cmp30 = icmp eq i32 %N, 0
8     %0 = add i32 %N, 3
9     %1 = lshr i32 %0, 2
10     %2 = shl nuw i32 %1, 2
11     %3 = add i32 %2, -4
12     %4 = lshr i32 %3, 2
13     %5 = add nuw nsw i32 %4, 1
14     br i1 %cmp30, label %for.cond.cleanup6, label %vector.ph
16   vector.ph:                                        ; preds = %entry
17     %start1 = call i32 @llvm.start.loop.iterations.i32(i32 %5)
18     br label %vector.body
20   vector.body:                                      ; preds = %vector.body, %vector.ph
21     %lsr.iv68 = phi ptr [ %scevgep69, %vector.body ], [ %a, %vector.ph ]
22     %lsr.iv65 = phi ptr [ %scevgep66, %vector.body ], [ %c, %vector.ph ]
23     %lsr.iv62 = phi ptr [ %scevgep63, %vector.body ], [ %b, %vector.ph ]
24     %6 = phi i32 [ %start1, %vector.ph ], [ %11, %vector.body ]
25     %7 = phi i32 [ %N, %vector.ph ], [ %9, %vector.body ]
26     %lsr.iv6870 = bitcast ptr %lsr.iv68 to ptr
27     %lsr.iv6567 = bitcast ptr %lsr.iv65 to ptr
28     %lsr.iv6264 = bitcast ptr %lsr.iv62 to ptr
29     %8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %7)
30     %9 = sub i32 %7, 4
31     %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv6264, i32 4, <4 x i1> %8, <4 x i32> undef)
32     %wide.masked.load35 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv6567, i32 4, <4 x i1> %8, <4 x i32> undef)
33     %10 = mul nsw <4 x i32> %wide.masked.load35, %wide.masked.load
34     call void @llvm.masked.store.v4i32.p0(<4 x i32> %10, ptr %lsr.iv6870, i32 4, <4 x i1> %8)
35     %scevgep63 = getelementptr i32, ptr %lsr.iv62, i32 4
36     %scevgep66 = getelementptr i32, ptr %lsr.iv65, i32 4
37     %scevgep69 = getelementptr i32, ptr %lsr.iv68, i32 4
38     %11 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %6, i32 1)
39     %12 = icmp ne i32 %11, 0
40     br i1 %12, label %vector.body, label %for.cond4.preheader
42   for.cond4.preheader:                              ; preds = %vector.body
43     %13 = icmp eq i32 %N, 0
44     %14 = add i32 %N, 3
45     %15 = lshr i32 %14, 2
46     %16 = shl nuw i32 %15, 2
47     %17 = add i32 %16, -4
48     %18 = lshr i32 %17, 2
49     %19 = add nuw nsw i32 %18, 1
50     br i1 %13, label %for.cond.cleanup6, label %vector.ph39
52   vector.ph39:                                      ; preds = %for.cond4.preheader
53     %start2 = call i32 @llvm.start.loop.iterations.i32(i32 %19)
54     br label %vector.body38
56   vector.body38:                                    ; preds = %vector.body38, %vector.ph39
57     %lsr.iv59 = phi ptr [ %scevgep60, %vector.body38 ], [ %a, %vector.ph39 ]
58     %lsr.iv56 = phi ptr [ %scevgep57, %vector.body38 ], [ %c, %vector.ph39 ]
59     %lsr.iv = phi ptr [ %scevgep, %vector.body38 ], [ %b, %vector.ph39 ]
60     %20 = phi i32 [ %start2, %vector.ph39 ], [ %26, %vector.body38 ]
61     %21 = phi i32 [ %N, %vector.ph39 ], [ %23, %vector.body38 ]
62     %lsr.iv5961 = bitcast ptr %lsr.iv59 to ptr
63     %lsr.iv5658 = bitcast ptr %lsr.iv56 to ptr
64     %lsr.iv55 = bitcast ptr %lsr.iv to ptr
65     %22 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %21)
66     %23 = sub i32 %21, 4
67     %wide.masked.load52 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv55, i32 4, <4 x i1> %22, <4 x i32> undef)
68     %wide.masked.load53 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv5658, i32 4, <4 x i1> %22, <4 x i32> undef)
69     %24 = xor <4 x i32> %wide.masked.load53, %wide.masked.load52
70     %wide.masked.load54 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv5961, i32 4, <4 x i1> %22, <4 x i32> undef)
71     %25 = add nsw <4 x i32> %wide.masked.load54, %24
72     call void @llvm.masked.store.v4i32.p0(<4 x i32> %25, ptr %lsr.iv5961, i32 4, <4 x i1> %22)
73     %scevgep = getelementptr i32, ptr %lsr.iv, i32 4
74     %scevgep57 = getelementptr i32, ptr %lsr.iv56, i32 4
75     %scevgep60 = getelementptr i32, ptr %lsr.iv59, i32 4
76     %26 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %20, i32 1)
77     %27 = icmp ne i32 %26, 0
78     br i1 %27, label %vector.body38, label %for.cond.cleanup6
80   for.cond.cleanup6:                                ; preds = %vector.body38, %entry, %for.cond4.preheader
81     ret void
82   }
83   define dso_local arm_aapcs_vfpcc void @test2(ptr noalias nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) local_unnamed_addr {
84   entry:
85     %div = lshr i32 %N, 1
86     %cmp30 = icmp eq i32 %div, 0
87     %0 = add nuw i32 %div, 3
88     %1 = lshr i32 %0, 2
89     %2 = shl nuw i32 %1, 2
90     %3 = add i32 %2, -4
91     %4 = lshr i32 %3, 2
92     %5 = add nuw nsw i32 %4, 1
93     br i1 %cmp30, label %for.cond4.preheader, label %vector.ph
95   vector.ph:                                        ; preds = %entry
96     %start1 = call i32 @llvm.start.loop.iterations.i32(i32 %5)
97     br label %vector.body
99   vector.body:                                      ; preds = %vector.body, %vector.ph
100     %lsr.iv68 = phi ptr [ %scevgep69, %vector.body ], [ %a, %vector.ph ]
101     %lsr.iv65 = phi ptr [ %scevgep66, %vector.body ], [ %c, %vector.ph ]
102     %lsr.iv62 = phi ptr [ %scevgep63, %vector.body ], [ %b, %vector.ph ]
103     %6 = phi i32 [ %start1, %vector.ph ], [ %11, %vector.body ]
104     %7 = phi i32 [ %div, %vector.ph ], [ %9, %vector.body ]
105     %lsr.iv6870 = bitcast ptr %lsr.iv68 to ptr
106     %lsr.iv6567 = bitcast ptr %lsr.iv65 to ptr
107     %lsr.iv6264 = bitcast ptr %lsr.iv62 to ptr
108     %8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %7)
109     %9 = sub i32 %7, 4
110     %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv6264, i32 4, <4 x i1> %8, <4 x i32> undef)
111     %wide.masked.load35 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv6567, i32 4, <4 x i1> %8, <4 x i32> undef)
112     %10 = mul nsw <4 x i32> %wide.masked.load35, %wide.masked.load
113     call void @llvm.masked.store.v4i32.p0(<4 x i32> %10, ptr %lsr.iv6870, i32 4, <4 x i1> %8)
114     %scevgep63 = getelementptr i32, ptr %lsr.iv62, i32 4
115     %scevgep66 = getelementptr i32, ptr %lsr.iv65, i32 4
116     %scevgep69 = getelementptr i32, ptr %lsr.iv68, i32 4
117     %11 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %6, i32 1)
118     %12 = icmp ne i32 %11, 0
119     br i1 %12, label %vector.body, label %for.cond4.preheader
121   for.cond4.preheader:                              ; preds = %vector.body, %entry
122     %cmp528 = icmp eq i32 %N, 0
123     %13 = add i32 %N, 3
124     %14 = lshr i32 %13, 2
125     %15 = shl nuw i32 %14, 2
126     %16 = add i32 %15, -4
127     %17 = lshr i32 %16, 2
128     %18 = add nuw nsw i32 %17, 1
129     br i1 %cmp528, label %for.cond.cleanup6, label %vector.ph39
131   vector.ph39:                                      ; preds = %for.cond4.preheader
132     %start2 = call i32 @llvm.start.loop.iterations.i32(i32 %18)
133     br label %vector.body38
135   vector.body38:                                    ; preds = %vector.body38, %vector.ph39
136     %lsr.iv59 = phi ptr [ %scevgep60, %vector.body38 ], [ %a, %vector.ph39 ]
137     %lsr.iv56 = phi ptr [ %scevgep57, %vector.body38 ], [ %c, %vector.ph39 ]
138     %lsr.iv = phi ptr [ %scevgep, %vector.body38 ], [ %b, %vector.ph39 ]
139     %19 = phi i32 [ %start2, %vector.ph39 ], [ %25, %vector.body38 ]
140     %20 = phi i32 [ %N, %vector.ph39 ], [ %22, %vector.body38 ]
141     %lsr.iv5961 = bitcast ptr %lsr.iv59 to ptr
142     %lsr.iv5658 = bitcast ptr %lsr.iv56 to ptr
143     %lsr.iv55 = bitcast ptr %lsr.iv to ptr
144     %21 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %20)
145     %22 = sub i32 %20, 4
146     %wide.masked.load52 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv55, i32 4, <4 x i1> %21, <4 x i32> undef)
147     %wide.masked.load53 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv5658, i32 4, <4 x i1> %21, <4 x i32> undef)
148     %23 = xor <4 x i32> %wide.masked.load53, %wide.masked.load52
149     %wide.masked.load54 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv5961, i32 4, <4 x i1> %21, <4 x i32> undef)
150     %24 = add nsw <4 x i32> %wide.masked.load54, %23
151     call void @llvm.masked.store.v4i32.p0(<4 x i32> %24, ptr %lsr.iv5961, i32 4, <4 x i1> %21)
152     %scevgep = getelementptr i32, ptr %lsr.iv, i32 4
153     %scevgep57 = getelementptr i32, ptr %lsr.iv56, i32 4
154     %scevgep60 = getelementptr i32, ptr %lsr.iv59, i32 4
155     %25 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %19, i32 1)
156     %26 = icmp ne i32 %25, 0
157     br i1 %26, label %vector.body38, label %for.cond.cleanup6
159   for.cond.cleanup6:                                ; preds = %vector.body38, %for.cond4.preheader
160     ret void
161   }
162   define dso_local arm_aapcs_vfpcc void @test3(ptr noalias nocapture %a, ptr nocapture readonly %b, ptr nocapture readonly %c, i32 %N) local_unnamed_addr {
163   entry:
164     %cmp54 = icmp eq i32 %N, 0
165     %0 = add i32 %N, 3
166     %1 = lshr i32 %0, 2
167     %2 = shl nuw i32 %1, 2
168     %3 = add i32 %2, -4
169     %4 = lshr i32 %3, 2
170     %5 = add nuw nsw i32 %4, 1
171     br i1 %cmp54, label %for.cond.cleanup17, label %vector.ph
173   vector.ph:                                        ; preds = %entry
174     %start1 = call i32 @llvm.start.loop.iterations.i32(i32 %5)
175     br label %vector.body
177   vector.body:                                      ; preds = %vector.body, %vector.ph
178     %lsr.iv123 = phi ptr [ %scevgep124, %vector.body ], [ %a, %vector.ph ]
179     %lsr.iv120 = phi ptr [ %scevgep121, %vector.body ], [ %c, %vector.ph ]
180     %lsr.iv117 = phi ptr [ %scevgep118, %vector.body ], [ %b, %vector.ph ]
181     %6 = phi i32 [ %start1, %vector.ph ], [ %11, %vector.body ]
182     %7 = phi i32 [ %N, %vector.ph ], [ %9, %vector.body ]
183     %lsr.iv123125 = bitcast ptr %lsr.iv123 to ptr
184     %lsr.iv120122 = bitcast ptr %lsr.iv120 to ptr
185     %lsr.iv117119 = bitcast ptr %lsr.iv117 to ptr
186     %8 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %7)
187     %9 = sub i32 %7, 4
188     %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv117119, i32 4, <4 x i1> %8, <4 x i32> undef)
189     %wide.masked.load62 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv120122, i32 4, <4 x i1> %8, <4 x i32> undef)
190     %10 = mul nsw <4 x i32> %wide.masked.load62, %wide.masked.load
191     call void @llvm.masked.store.v4i32.p0(<4 x i32> %10, ptr %lsr.iv123125, i32 4, <4 x i1> %8)
192     %scevgep118 = getelementptr i32, ptr %lsr.iv117, i32 4
193     %scevgep121 = getelementptr i32, ptr %lsr.iv120, i32 4
194     %scevgep124 = getelementptr i32, ptr %lsr.iv123, i32 4
195     %11 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %6, i32 1)
196     %12 = icmp ne i32 %11, 0
197     br i1 %12, label %vector.body, label %for.cond4.preheader
199   for.cond4.preheader:                              ; preds = %vector.body
200     %div = lshr i32 %N, 1
201     %cmp552 = icmp eq i32 %div, 0
202     %13 = add nuw i32 %div, 3
203     %14 = lshr i32 %13, 2
204     %15 = shl nuw i32 %14, 2
205     %16 = add i32 %15, -4
206     %17 = lshr i32 %16, 2
207     %18 = add nuw nsw i32 %17, 1
208     br i1 %cmp552, label %for.cond15.preheader, label %vector.ph66
210   vector.ph66:                                      ; preds = %for.cond4.preheader
211     %start2 = call i32 @llvm.start.loop.iterations.i32(i32 %18)
212     br label %vector.body65
214   vector.body65:                                    ; preds = %vector.body65, %vector.ph66
215     %lsr.iv114 = phi ptr [ %scevgep115, %vector.body65 ], [ %a, %vector.ph66 ]
216     %lsr.iv111 = phi ptr [ %scevgep112, %vector.body65 ], [ %c, %vector.ph66 ]
217     %lsr.iv108 = phi ptr [ %scevgep109, %vector.body65 ], [ %b, %vector.ph66 ]
218     %19 = phi i32 [ %start2, %vector.ph66 ], [ %25, %vector.body65 ]
219     %20 = phi i32 [ %div, %vector.ph66 ], [ %22, %vector.body65 ]
220     %lsr.iv114116 = bitcast ptr %lsr.iv114 to ptr
221     %lsr.iv111113 = bitcast ptr %lsr.iv111 to ptr
222     %lsr.iv108110 = bitcast ptr %lsr.iv108 to ptr
223     %21 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %20)
224     %22 = sub i32 %20, 4
225     %wide.masked.load79 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv108110, i32 4, <4 x i1> %21, <4 x i32> undef)
226     %wide.masked.load80 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv111113, i32 4, <4 x i1> %21, <4 x i32> undef)
227     %23 = xor <4 x i32> %wide.masked.load80, %wide.masked.load79
228     %wide.masked.load81 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv114116, i32 4, <4 x i1> %21, <4 x i32> undef)
229     %24 = add nsw <4 x i32> %wide.masked.load81, %23
230     call void @llvm.masked.store.v4i32.p0(<4 x i32> %24, ptr %lsr.iv114116, i32 4, <4 x i1> %21)
231     %scevgep109 = getelementptr i32, ptr %lsr.iv108, i32 4
232     %scevgep112 = getelementptr i32, ptr %lsr.iv111, i32 4
233     %scevgep115 = getelementptr i32, ptr %lsr.iv114, i32 4
234     %25 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %19, i32 1)
235     %26 = icmp ne i32 %25, 0
236     br i1 %26, label %vector.body65, label %for.cond15.preheader
238   for.cond15.preheader:                             ; preds = %vector.body65, %for.cond4.preheader
239     %27 = icmp eq i32 %N, 0
240     %28 = add i32 %N, 3
241     %29 = lshr i32 %28, 2
242     %30 = shl nuw i32 %29, 2
243     %31 = add i32 %30, -4
244     %32 = lshr i32 %31, 2
245     %33 = add nuw nsw i32 %32, 1
246     br i1 %27, label %for.cond.cleanup17, label %vector.ph85
248   vector.ph85:                                      ; preds = %for.cond15.preheader
249     %start3 = call i32 @llvm.start.loop.iterations.i32(i32 %33)
250     br label %vector.body84
252   vector.body84:                                    ; preds = %vector.body84, %vector.ph85
253     %lsr.iv105 = phi ptr [ %scevgep106, %vector.body84 ], [ %a, %vector.ph85 ]
254     %lsr.iv102 = phi ptr [ %scevgep103, %vector.body84 ], [ %c, %vector.ph85 ]
255     %lsr.iv = phi ptr [ %scevgep, %vector.body84 ], [ %b, %vector.ph85 ]
256     %34 = phi i32 [ %start3, %vector.ph85 ], [ %40, %vector.body84 ]
257     %35 = phi i32 [ %N, %vector.ph85 ], [ %37, %vector.body84 ]
258     %lsr.iv105107 = bitcast ptr %lsr.iv105 to ptr
259     %lsr.iv102104 = bitcast ptr %lsr.iv102 to ptr
260     %lsr.iv101 = bitcast ptr %lsr.iv to ptr
261     %36 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %35)
262     %37 = sub i32 %35, 4
263     %wide.masked.load98 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv101, i32 4, <4 x i1> %36, <4 x i32> undef)
264     %wide.masked.load99 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv102104, i32 4, <4 x i1> %36, <4 x i32> undef)
265     %wide.masked.load100 = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %lsr.iv105107, i32 4, <4 x i1> %36, <4 x i32> undef)
266     %38 = add <4 x i32> %wide.masked.load99, %wide.masked.load98
267     %39 = sub <4 x i32> %wide.masked.load100, %38
268     call void @llvm.masked.store.v4i32.p0(<4 x i32> %39, ptr %lsr.iv105107, i32 4, <4 x i1> %36)
269     %scevgep = getelementptr i32, ptr %lsr.iv, i32 4
270     %scevgep103 = getelementptr i32, ptr %lsr.iv102, i32 4
271     %scevgep106 = getelementptr i32, ptr %lsr.iv105, i32 4
272     %40 = call i32 @llvm.loop.decrement.reg.i32.i32.i32(i32 %34, i32 1)
273     %41 = icmp ne i32 %40, 0
274     br i1 %41, label %vector.body84, label %for.cond.cleanup17
276   for.cond.cleanup17:                               ; preds = %vector.body84, %entry, %for.cond15.preheader
277     ret void
278   }
279   declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)
280   declare void @llvm.masked.store.v4i32.p0(<4 x i32>, ptr, i32 immarg, <4 x i1>)
281   declare i32 @llvm.start.loop.iterations.i32(i32)
282   declare i32 @llvm.loop.decrement.reg.i32.i32.i32(i32, i32)
283   declare <4 x i1> @llvm.arm.mve.vctp32(i32)
287 name:            test1
288 alignment:       2
289 exposesReturnsTwice: false
290 legalized:       false
291 regBankSelected: false
292 selected:        false
293 failedISel:      false
294 tracksRegLiveness: true
295 hasWinCFI:       false
296 registers:       []
297 liveins:
298   - { reg: '$r0', virtual-reg: '' }
299   - { reg: '$r1', virtual-reg: '' }
300   - { reg: '$r2', virtual-reg: '' }
301   - { reg: '$r3', virtual-reg: '' }
302 frameInfo:
303   isFrameAddressTaken: false
304   isReturnAddressTaken: false
305   hasStackMap:     false
306   hasPatchPoint:   false
307   stackSize:       24
308   offsetAdjustment: -16
309   maxAlignment:    4
310   adjustsStack:    false
311   hasCalls:        false
312   stackProtector:  ''
313   maxCallFrameSize: 0
314   cvBytesOfCalleeSavedRegisters: 0
315   hasOpaqueSPAdjustment: false
316   hasVAStart:      false
317   hasMustTailInVarArgFunc: false
318   localFrameSize:  0
319   savePoint:       ''
320   restorePoint:    ''
321 fixedStack:      []
322 stack:
323   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
324       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
325       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
326   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
327       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
328       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
329   - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
330       stack-id: default, callee-saved-register: '$r6', callee-saved-restored: true,
331       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
332   - { id: 3, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
333       stack-id: default, callee-saved-register: '$r5', callee-saved-restored: true,
334       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
335   - { id: 4, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
336       stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
337       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
338   - { id: 5, name: '', type: spill-slot, offset: -24, size: 4, alignment: 4,
339       stack-id: default, callee-saved-register: '$r8', callee-saved-restored: true,
340       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
341 callSites:       []
342 constants:       []
343 machineFunctionInfo: {}
344 body:             |
345   ; CHECK-LABEL: name: test1
346   ; CHECK: bb.0.entry:
347   ; CHECK-NEXT:   successors: %bb.6(0x30000000), %bb.1(0x50000000)
348   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8
349   ; CHECK-NEXT: {{  $}}
350   ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
351   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 20
352   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
353   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r7, -8
354   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -12
355   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -16
356   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -20
357   ; CHECK-NEXT:   dead $r7 = frame-setup tADDrSPi $sp, 3, 14 /* CC::al */, $noreg
358   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa $r7, 8
359   ; CHECK-NEXT:   early-clobber $sp = frame-setup t2STR_PRE killed $r8, $sp, -4, 14 /* CC::al */, $noreg
360   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r8, -24
361   ; CHECK-NEXT:   tCMPi8 renamable $r3, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
362   ; CHECK-NEXT:   tBcc %bb.6, 0 /* CC::eq */, killed $cpsr
363   ; CHECK-NEXT: {{  $}}
364   ; CHECK-NEXT: bb.1.vector.ph:
365   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
366   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
367   ; CHECK-NEXT: {{  $}}
368   ; CHECK-NEXT:   $r8 = tMOVr $r0, 14 /* CC::al */, $noreg
369   ; CHECK-NEXT:   $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
370   ; CHECK-NEXT:   $r4 = tMOVr $r3, 14 /* CC::al */, $noreg
371   ; CHECK-NEXT:   $r6 = tMOVr $r1, 14 /* CC::al */, $noreg
372   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r4
373   ; CHECK-NEXT: {{  $}}
374   ; CHECK-NEXT: bb.2.vector.body:
375   ; CHECK-NEXT:   successors: %bb.2(0x7c000000), %bb.3(0x04000000)
376   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r5, $r6, $r8
377   ; CHECK-NEXT: {{  $}}
378   ; CHECK-NEXT:   renamable $r6, renamable $q0 = MVE_VLDRWU32_post killed renamable $r6, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv6264, align 4)
379   ; CHECK-NEXT:   renamable $r5, renamable $q1 = MVE_VLDRWU32_post killed renamable $r5, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv6567, align 4)
380   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
381   ; CHECK-NEXT:   renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv6870, align 4)
382   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.2
383   ; CHECK-NEXT: {{  $}}
384   ; CHECK-NEXT: bb.3.for.cond4.preheader:
385   ; CHECK-NEXT:   successors: %bb.6(0x30000000), %bb.4(0x50000000)
386   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
387   ; CHECK-NEXT: {{  $}}
388   ; CHECK-NEXT:   tCBZ $r3, %bb.6
389   ; CHECK-NEXT: {{  $}}
390   ; CHECK-NEXT: bb.4.vector.ph39:
391   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
392   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
393   ; CHECK-NEXT: {{  $}}
394   ; CHECK-NEXT:   $r12 = tMOVr $r0, 14 /* CC::al */, $noreg
395   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r3
396   ; CHECK-NEXT: {{  $}}
397   ; CHECK-NEXT: bb.5.vector.body38:
398   ; CHECK-NEXT:   successors: %bb.5(0x7c000000), %bb.6(0x04000000)
399   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r12
400   ; CHECK-NEXT: {{  $}}
401   ; CHECK-NEXT:   renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv55, align 4)
402   ; CHECK-NEXT:   renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv5658, align 4)
403   ; CHECK-NEXT:   renamable $r12, renamable $q2 = MVE_VLDRWU32_post killed renamable $r12, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv5961, align 4)
404   ; CHECK-NEXT:   renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
405   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
406   ; CHECK-NEXT:   MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv5961, align 4)
407   ; CHECK-NEXT:   $r0 = tMOVr $r12, 14 /* CC::al */, $noreg
408   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.5
409   ; CHECK-NEXT: {{  $}}
410   ; CHECK-NEXT: bb.6.for.cond.cleanup6:
411   ; CHECK-NEXT:   $r8, $sp = t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg
412   ; CHECK-NEXT:   tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc
413   bb.0.entry:
414     successors: %bb.6(0x30000000), %bb.1(0x50000000)
415     liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $lr, $r8
417     frame-setup tPUSH 14, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
418     frame-setup CFI_INSTRUCTION def_cfa_offset 20
419     frame-setup CFI_INSTRUCTION offset $lr, -4
420     frame-setup CFI_INSTRUCTION offset $r7, -8
421     frame-setup CFI_INSTRUCTION offset $r6, -12
422     frame-setup CFI_INSTRUCTION offset $r5, -16
423     frame-setup CFI_INSTRUCTION offset $r4, -20
424     $r7 = frame-setup tADDrSPi $sp, 3, 14, $noreg
425     frame-setup CFI_INSTRUCTION def_cfa $r7, 8
426     early-clobber $sp = frame-setup t2STR_PRE killed $r8, $sp, -4, 14, $noreg
427     frame-setup CFI_INSTRUCTION offset $r8, -24
428     tCMPi8 renamable $r3, 0, 14, $noreg, implicit-def $cpsr
429     tBcc %bb.6, 0, killed $cpsr
431   bb.1.vector.ph:
432     successors: %bb.2(0x80000000)
433     liveins: $r0, $r1, $r2, $r3
435     renamable $r6, dead $cpsr = tADDi3 renamable $r3, 3, 14, $noreg
436     $r8 = tMOVr $r0, 14, $noreg
437     renamable $r6 = t2BICri killed renamable $r6, 3, 14, $noreg, $noreg
438     $r5 = tMOVr $r2, 14, $noreg
439     renamable $r12 = t2SUBri killed renamable $r6, 4, 14, $noreg, $noreg
440     renamable $r6, dead $cpsr = tMOVi8 1, 14, $noreg
441     $r4 = tMOVr $r3, 14, $noreg
442     renamable $lr = nuw nsw t2ADDrs killed renamable $r6, renamable $r12, 19, 14, $noreg, $noreg
443     $r6 = tMOVr $r1, 14, $noreg
444     $lr = t2DoLoopStart renamable $lr
446   bb.2.vector.body:
447     successors: %bb.2(0x7c000000), %bb.3(0x04000000)
448     liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r12
450     renamable $vpr = MVE_VCTP32 renamable $r4, 0, $noreg, $noreg
451     MVE_VPST 4, implicit $vpr
452     renamable $r6, renamable $q0 = MVE_VLDRWU32_post killed renamable $r6, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv6264, align 4)
453     renamable $r5, renamable $q1 = MVE_VLDRWU32_post killed renamable $r5, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv6567, align 4)
454     renamable $r4, dead $cpsr = tSUBi8 killed renamable $r4, 4, 14, $noreg
455     renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
456     MVE_VPST 8, implicit $vpr
457     renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv6870, align 4)
458     renamable $lr = t2LoopDec killed renamable $lr, 1
459     t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
460     tB %bb.3, 14, $noreg
462   bb.3.for.cond4.preheader:
463     successors: %bb.6(0x30000000), %bb.4(0x50000000)
464     liveins: $r0, $r1, $r2, $r3, $r12
466     tCBZ $r3, %bb.6
468   bb.4.vector.ph39:
469     successors: %bb.5(0x80000000)
470     liveins: $r0, $r1, $r2, $r3, $r12
472     renamable $r6, dead $cpsr = tMOVi8 1, 14, $noreg
473     renamable $lr = nuw nsw t2ADDrs killed renamable $r6, killed renamable $r12, 19, 14, $noreg, $noreg
474     $r12 = tMOVr $r0, 14, $noreg
475     $lr = t2DoLoopStart renamable $lr
477   bb.5.vector.body38:
478     successors: %bb.5(0x7c000000), %bb.6(0x04000000)
479     liveins: $lr, $r0, $r1, $r2, $r3, $r12
481     renamable $vpr = MVE_VCTP32 renamable $r3, 0, $noreg, $noreg
482     MVE_VPST 2, implicit $vpr
483     renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv55, align 4)
484     renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv5658, align 4)
485     renamable $r12, renamable $q2 = MVE_VLDRWU32_post killed renamable $r12, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv5961, align 4)
486     renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
487     renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14, $noreg
488     renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
489     MVE_VPST 8, implicit $vpr
490     MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv5961, align 4)
491     renamable $lr = t2LoopDec killed renamable $lr, 1
492     $r0 = tMOVr $r12, 14, $noreg
493     t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr
494     tB %bb.6, 14, $noreg
496   bb.6.for.cond.cleanup6:
497     $r8, $sp = t2LDR_POST $sp, 4, 14, $noreg
498     tPOP_RET 14, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc
502 name:            test2
503 alignment:       2
504 exposesReturnsTwice: false
505 legalized:       false
506 regBankSelected: false
507 selected:        false
508 failedISel:      false
509 tracksRegLiveness: true
510 hasWinCFI:       false
511 registers:       []
512 liveins:
513   - { reg: '$r0', virtual-reg: '' }
514   - { reg: '$r1', virtual-reg: '' }
515   - { reg: '$r2', virtual-reg: '' }
516   - { reg: '$r3', virtual-reg: '' }
517 frameInfo:
518   isFrameAddressTaken: false
519   isReturnAddressTaken: false
520   hasStackMap:     false
521   hasPatchPoint:   false
522   stackSize:       24
523   offsetAdjustment: -16
524   maxAlignment:    4
525   adjustsStack:    false
526   hasCalls:        false
527   stackProtector:  ''
528   maxCallFrameSize: 0
529   cvBytesOfCalleeSavedRegisters: 0
530   hasOpaqueSPAdjustment: false
531   hasVAStart:      false
532   hasMustTailInVarArgFunc: false
533   localFrameSize:  0
534   savePoint:       ''
535   restorePoint:    ''
536 fixedStack:      []
537 stack:
538   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
539       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
540       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
541   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
542       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
543       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
544   - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
545       stack-id: default, callee-saved-register: '$r6', callee-saved-restored: true,
546       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
547   - { id: 3, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
548       stack-id: default, callee-saved-register: '$r5', callee-saved-restored: true,
549       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
550   - { id: 4, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
551       stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
552       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
553   - { id: 5, name: '', type: spill-slot, offset: -24, size: 4, alignment: 4,
554       stack-id: default, callee-saved-register: '$r8', callee-saved-restored: true,
555       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
556 callSites:       []
557 constants:       []
558 machineFunctionInfo: {}
559 body:             |
560   ; CHECK-LABEL: name: test2
561   ; CHECK: bb.0.entry:
562   ; CHECK-NEXT:   successors: %bb.3(0x30000000), %bb.1(0x50000000)
563   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8
564   ; CHECK-NEXT: {{  $}}
565   ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
566   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 20
567   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
568   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r7, -8
569   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -12
570   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -16
571   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -20
572   ; CHECK-NEXT:   dead $r7 = frame-setup tADDrSPi $sp, 3, 14 /* CC::al */, $noreg
573   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa $r7, 8
574   ; CHECK-NEXT:   early-clobber $sp = frame-setup t2STR_PRE killed $r8, $sp, -4, 14 /* CC::al */, $noreg
575   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r8, -24
576   ; CHECK-NEXT:   renamable $r6, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
577   ; CHECK-NEXT:   t2CMPrs killed renamable $r6, renamable $r3, 11, 14 /* CC::al */, $noreg, implicit-def $cpsr
578   ; CHECK-NEXT:   tBcc %bb.3, 0 /* CC::eq */, killed $cpsr
579   ; CHECK-NEXT: {{  $}}
580   ; CHECK-NEXT: bb.1.vector.ph:
581   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
582   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
583   ; CHECK-NEXT: {{  $}}
584   ; CHECK-NEXT:   renamable $r4, dead $cpsr = tLSRri renamable $r3, 1, 14 /* CC::al */, $noreg
585   ; CHECK-NEXT:   $r8 = tMOVr $r0, 14 /* CC::al */, $noreg
586   ; CHECK-NEXT:   $r5 = tMOVr $r1, 14 /* CC::al */, $noreg
587   ; CHECK-NEXT:   $r6 = tMOVr $r2, 14 /* CC::al */, $noreg
588   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r4
589   ; CHECK-NEXT: {{  $}}
590   ; CHECK-NEXT: bb.2.vector.body:
591   ; CHECK-NEXT:   successors: %bb.2(0x7c000000), %bb.3(0x04000000)
592   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r5, $r6, $r8
593   ; CHECK-NEXT: {{  $}}
594   ; CHECK-NEXT:   renamable $r5, renamable $q0 = MVE_VLDRWU32_post killed renamable $r5, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv6264, align 4)
595   ; CHECK-NEXT:   renamable $r6, renamable $q1 = MVE_VLDRWU32_post killed renamable $r6, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv6567, align 4)
596   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
597   ; CHECK-NEXT:   renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv6870, align 4)
598   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.2
599   ; CHECK-NEXT: {{  $}}
600   ; CHECK-NEXT: bb.3.for.cond4.preheader:
601   ; CHECK-NEXT:   successors: %bb.6(0x30000000), %bb.4(0x50000000)
602   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
603   ; CHECK-NEXT: {{  $}}
604   ; CHECK-NEXT:   tCBZ $r3, %bb.6
605   ; CHECK-NEXT: {{  $}}
606   ; CHECK-NEXT: bb.4.vector.ph39:
607   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
608   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
609   ; CHECK-NEXT: {{  $}}
610   ; CHECK-NEXT:   $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
611   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r3
612   ; CHECK-NEXT: {{  $}}
613   ; CHECK-NEXT: bb.5.vector.body38:
614   ; CHECK-NEXT:   successors: %bb.5(0x7c000000), %bb.6(0x04000000)
615   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r4
616   ; CHECK-NEXT: {{  $}}
617   ; CHECK-NEXT:   renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv55, align 4)
618   ; CHECK-NEXT:   renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv5658, align 4)
619   ; CHECK-NEXT:   renamable $r4, renamable $q2 = MVE_VLDRWU32_post killed renamable $r4, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv5961, align 4)
620   ; CHECK-NEXT:   renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
621   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
622   ; CHECK-NEXT:   MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv5961, align 4)
623   ; CHECK-NEXT:   $r0 = tMOVr $r4, 14 /* CC::al */, $noreg
624   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.5
625   ; CHECK-NEXT: {{  $}}
626   ; CHECK-NEXT: bb.6.for.cond.cleanup6:
627   ; CHECK-NEXT:   $r8, $sp = t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg
628   ; CHECK-NEXT:   tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc
629   bb.0.entry:
630     successors: %bb.3(0x30000000), %bb.1(0x50000000)
631     liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $lr, $r8
633     frame-setup tPUSH 14, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
634     frame-setup CFI_INSTRUCTION def_cfa_offset 20
635     frame-setup CFI_INSTRUCTION offset $lr, -4
636     frame-setup CFI_INSTRUCTION offset $r7, -8
637     frame-setup CFI_INSTRUCTION offset $r6, -12
638     frame-setup CFI_INSTRUCTION offset $r5, -16
639     frame-setup CFI_INSTRUCTION offset $r4, -20
640     $r7 = frame-setup tADDrSPi $sp, 3, 14, $noreg
641     frame-setup CFI_INSTRUCTION def_cfa $r7, 8
642     early-clobber $sp = frame-setup t2STR_PRE killed $r8, $sp, -4, 14, $noreg
643     frame-setup CFI_INSTRUCTION offset $r8, -24
644     renamable $r6, dead $cpsr = tMOVi8 0, 14, $noreg
645     renamable $r12 = t2MOVi 1, 14, $noreg, $noreg
646     t2CMPrs killed renamable $r6, renamable $r3, 11, 14, $noreg, implicit-def $cpsr
647     tBcc %bb.3, 0, killed $cpsr
649   bb.1.vector.ph:
650     successors: %bb.2(0x80000000)
651     liveins: $r0, $r1, $r2, $r3, $r12
653     renamable $r6, dead $cpsr = tMOVi8 3, 14, $noreg
654     renamable $r4, dead $cpsr = tLSRri renamable $r3, 1, 14, $noreg
655     renamable $r6 = nuw t2ADDrs killed renamable $r6, renamable $r3, 11, 14, $noreg, $noreg
656     $r8 = tMOVr $r0, 14, $noreg
657     renamable $r6 = t2BICri killed renamable $r6, 3, 14, $noreg, $noreg
658     $r5 = tMOVr $r1, 14, $noreg
659     renamable $r6, dead $cpsr = tSUBi8 killed renamable $r6, 4, 14, $noreg
660     renamable $lr = nuw nsw t2ADDrs renamable $r12, killed renamable $r6, 19, 14, $noreg, $noreg
661     $r6 = tMOVr $r2, 14, $noreg
662     $lr = t2DoLoopStart renamable $lr
664   bb.2.vector.body:
665     successors: %bb.2(0x7c000000), %bb.3(0x04000000)
666     liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r12
668     renamable $vpr = MVE_VCTP32 renamable $r4, 0, $noreg, $noreg
669     MVE_VPST 4, implicit $vpr
670     renamable $r5, renamable $q0 = MVE_VLDRWU32_post killed renamable $r5, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv6264, align 4)
671     renamable $r6, renamable $q1 = MVE_VLDRWU32_post killed renamable $r6, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv6567, align 4)
672     renamable $r4, dead $cpsr = tSUBi8 killed renamable $r4, 4, 14, $noreg
673     renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
674     MVE_VPST 8, implicit $vpr
675     renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv6870, align 4)
676     renamable $lr = t2LoopDec killed renamable $lr, 1
677     t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
678     tB %bb.3, 14, $noreg
680   bb.3.for.cond4.preheader:
681     successors: %bb.6(0x30000000), %bb.4(0x50000000)
682     liveins: $r0, $r1, $r2, $r3, $r12
684     tCBZ $r3, %bb.6
686   bb.4.vector.ph39:
687     successors: %bb.5(0x80000000)
688     liveins: $r0, $r1, $r2, $r3, $r12
690     renamable $r6, dead $cpsr = tADDi3 renamable $r3, 3, 14, $noreg
691     $r4 = tMOVr $r0, 14, $noreg
692     renamable $r6 = t2BICri killed renamable $r6, 3, 14, $noreg, $noreg
693     renamable $r6, dead $cpsr = tSUBi8 killed renamable $r6, 4, 14, $noreg
694     renamable $lr = nuw nsw t2ADDrs killed renamable $r12, killed renamable $r6, 19, 14, $noreg, $noreg
695     $lr = t2DoLoopStart renamable $lr
697   bb.5.vector.body38:
698     successors: %bb.5(0x7c000000), %bb.6(0x04000000)
699     liveins: $lr, $r0, $r1, $r2, $r3, $r4
701     renamable $vpr = MVE_VCTP32 renamable $r3, 0, $noreg, $noreg
702     MVE_VPST 2, implicit $vpr
703     renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv55, align 4)
704     renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv5658, align 4)
705     renamable $r4, renamable $q2 = MVE_VLDRWU32_post killed renamable $r4, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv5961, align 4)
706     renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
707     renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14, $noreg
708     renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
709     MVE_VPST 8, implicit $vpr
710     MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv5961, align 4)
711     renamable $lr = t2LoopDec killed renamable $lr, 1
712     $r0 = tMOVr $r4, 14, $noreg
713     t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr
714     tB %bb.6, 14, $noreg
716   bb.6.for.cond.cleanup6:
717     $r8, $sp = t2LDR_POST $sp, 4, 14, $noreg
718     tPOP_RET 14, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc
722 name:            test3
723 alignment:       2
724 exposesReturnsTwice: false
725 legalized:       false
726 regBankSelected: false
727 selected:        false
728 failedISel:      false
729 tracksRegLiveness: true
730 hasWinCFI:       false
731 registers:       []
732 liveins:
733   - { reg: '$r0', virtual-reg: '' }
734   - { reg: '$r1', virtual-reg: '' }
735   - { reg: '$r2', virtual-reg: '' }
736   - { reg: '$r3', virtual-reg: '' }
737 frameInfo:
738   isFrameAddressTaken: false
739   isReturnAddressTaken: false
740   hasStackMap:     false
741   hasPatchPoint:   false
742   stackSize:       32
743   offsetAdjustment: -24
744   maxAlignment:    4
745   adjustsStack:    false
746   hasCalls:        false
747   stackProtector:  ''
748   maxCallFrameSize: 0
749   cvBytesOfCalleeSavedRegisters: 0
750   hasOpaqueSPAdjustment: false
751   hasVAStart:      false
752   hasMustTailInVarArgFunc: false
753   localFrameSize:  0
754   savePoint:       ''
755   restorePoint:    ''
756 fixedStack:      []
757 stack:
758   - { id: 0, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
759       stack-id: default, callee-saved-register: '$lr', callee-saved-restored: false,
760       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
761   - { id: 1, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
762       stack-id: default, callee-saved-register: '$r7', callee-saved-restored: true,
763       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
764   - { id: 2, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
765       stack-id: default, callee-saved-register: '$r6', callee-saved-restored: true,
766       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
767   - { id: 3, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
768       stack-id: default, callee-saved-register: '$r5', callee-saved-restored: true,
769       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
770   - { id: 4, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
771       stack-id: default, callee-saved-register: '$r4', callee-saved-restored: true,
772       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
773   - { id: 5, name: '', type: spill-slot, offset: -24, size: 4, alignment: 4,
774       stack-id: default, callee-saved-register: '$r10', callee-saved-restored: true,
775       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
776   - { id: 6, name: '', type: spill-slot, offset: -28, size: 4, alignment: 4,
777       stack-id: default, callee-saved-register: '$r9', callee-saved-restored: true,
778       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
779   - { id: 7, name: '', type: spill-slot, offset: -32, size: 4, alignment: 4,
780       stack-id: default, callee-saved-register: '$r8', callee-saved-restored: true,
781       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
782 callSites:       []
783 constants:       []
784 machineFunctionInfo: {}
785 body:             |
786   ; CHECK-LABEL: name: test3
787   ; CHECK: bb.0.entry:
788   ; CHECK-NEXT:   successors: %bb.9(0x30000000), %bb.1(0x50000000)
789   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r9, $r10
790   ; CHECK-NEXT: {{  $}}
791   ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
792   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 20
793   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
794   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r7, -8
795   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -12
796   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -16
797   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -20
798   ; CHECK-NEXT:   dead $r7 = frame-setup tADDrSPi $sp, 3, 14 /* CC::al */, $noreg
799   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa $r7, 8
800   ; CHECK-NEXT:   $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r8, killed $r9, killed $r10
801   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r10, -24
802   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r9, -28
803   ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r8, -32
804   ; CHECK-NEXT:   tCMPi8 renamable $r3, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
805   ; CHECK-NEXT:   tBcc %bb.9, 0 /* CC::eq */, killed $cpsr
806   ; CHECK-NEXT: {{  $}}
807   ; CHECK-NEXT: bb.1.vector.ph:
808   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
809   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
810   ; CHECK-NEXT: {{  $}}
811   ; CHECK-NEXT:   $r8 = tMOVr $r0, 14 /* CC::al */, $noreg
812   ; CHECK-NEXT:   $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
813   ; CHECK-NEXT:   $r4 = tMOVr $r3, 14 /* CC::al */, $noreg
814   ; CHECK-NEXT:   $r6 = tMOVr $r1, 14 /* CC::al */, $noreg
815   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r4
816   ; CHECK-NEXT: {{  $}}
817   ; CHECK-NEXT: bb.2.vector.body:
818   ; CHECK-NEXT:   successors: %bb.2(0x7c000000), %bb.3(0x04000000)
819   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r5, $r6, $r8
820   ; CHECK-NEXT: {{  $}}
821   ; CHECK-NEXT:   renamable $r6, renamable $q0 = MVE_VLDRWU32_post killed renamable $r6, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv117119, align 4)
822   ; CHECK-NEXT:   renamable $r5, renamable $q1 = MVE_VLDRWU32_post killed renamable $r5, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv120122, align 4)
823   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
824   ; CHECK-NEXT:   renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv123125, align 4)
825   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.2
826   ; CHECK-NEXT: {{  $}}
827   ; CHECK-NEXT: bb.3.for.cond4.preheader:
828   ; CHECK-NEXT:   successors: %bb.6(0x30000000), %bb.4(0x50000000)
829   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
830   ; CHECK-NEXT: {{  $}}
831   ; CHECK-NEXT:   renamable $r6, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
832   ; CHECK-NEXT:   t2CMPrs killed renamable $r6, renamable $r3, 11, 14 /* CC::al */, $noreg, implicit-def $cpsr
833   ; CHECK-NEXT:   tBcc %bb.6, 0 /* CC::eq */, killed $cpsr
834   ; CHECK-NEXT: {{  $}}
835   ; CHECK-NEXT: bb.4.vector.ph66:
836   ; CHECK-NEXT:   successors: %bb.5(0x80000000)
837   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
838   ; CHECK-NEXT: {{  $}}
839   ; CHECK-NEXT:   renamable $r5, dead $cpsr = tLSRri renamable $r3, 1, 14 /* CC::al */, $noreg
840   ; CHECK-NEXT:   $r10 = tMOVr $r0, 14 /* CC::al */, $noreg
841   ; CHECK-NEXT:   $r9 = tMOVr $r2, 14 /* CC::al */, $noreg
842   ; CHECK-NEXT:   $r4 = tMOVr $r1, 14 /* CC::al */, $noreg
843   ; CHECK-NEXT:   $r6 = tMOVr $r0, 14 /* CC::al */, $noreg
844   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r5
845   ; CHECK-NEXT: {{  $}}
846   ; CHECK-NEXT: bb.5.vector.body65:
847   ; CHECK-NEXT:   successors: %bb.5(0x7c000000), %bb.6(0x04000000)
848   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r6, $r9, $r10
849   ; CHECK-NEXT: {{  $}}
850   ; CHECK-NEXT:   renamable $r4, renamable $q0 = MVE_VLDRWU32_post killed renamable $r4, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv108110, align 4)
851   ; CHECK-NEXT:   renamable $r9, renamable $q1 = MVE_VLDRWU32_post killed renamable $r9, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv111113, align 4)
852   ; CHECK-NEXT:   renamable $r6, renamable $q2 = MVE_VLDRWU32_post killed renamable $r6, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv114116, align 4)
853   ; CHECK-NEXT:   renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
854   ; CHECK-NEXT:   renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
855   ; CHECK-NEXT:   MVE_VSTRWU32 killed renamable $q0, killed renamable $r10, 0, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv114116, align 4)
856   ; CHECK-NEXT:   $r10 = tMOVr $r6, 14 /* CC::al */, $noreg
857   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.5
858   ; CHECK-NEXT: {{  $}}
859   ; CHECK-NEXT: bb.6.for.cond15.preheader:
860   ; CHECK-NEXT:   successors: %bb.9(0x30000000), %bb.7(0x50000000)
861   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
862   ; CHECK-NEXT: {{  $}}
863   ; CHECK-NEXT:   tCBZ $r3, %bb.9
864   ; CHECK-NEXT: {{  $}}
865   ; CHECK-NEXT: bb.7.vector.ph85:
866   ; CHECK-NEXT:   successors: %bb.8(0x80000000)
867   ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r3
868   ; CHECK-NEXT: {{  $}}
869   ; CHECK-NEXT:   $r5 = tMOVr $r0, 14 /* CC::al */, $noreg
870   ; CHECK-NEXT:   $lr = MVE_DLSTP_32 killed renamable $r3
871   ; CHECK-NEXT: {{  $}}
872   ; CHECK-NEXT: bb.8.vector.body84:
873   ; CHECK-NEXT:   successors: %bb.8(0x7c000000), %bb.9(0x04000000)
874   ; CHECK-NEXT:   liveins: $lr, $r0, $r1, $r2, $r5
875   ; CHECK-NEXT: {{  $}}
876   ; CHECK-NEXT:   renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv101, align 4)
877   ; CHECK-NEXT:   renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv102104, align 4)
878   ; CHECK-NEXT:   renamable $r5, renamable $q2 = MVE_VLDRWU32_post killed renamable $r5, 16, 0, $noreg, $noreg :: (load (s128) from %ir.lsr.iv105107, align 4)
879   ; CHECK-NEXT:   renamable $q0 = MVE_VADDi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
880   ; CHECK-NEXT:   renamable $q0 = MVE_VSUBi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
881   ; CHECK-NEXT:   MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 0, killed $noreg, $noreg :: (store (s128) into %ir.lsr.iv105107, align 4)
882   ; CHECK-NEXT:   $r0 = tMOVr $r5, 14 /* CC::al */, $noreg
883   ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.8
884   ; CHECK-NEXT: {{  $}}
885   ; CHECK-NEXT: bb.9.for.cond.cleanup17:
886   ; CHECK-NEXT:   $sp = t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r8, def $r9, def $r10
887   ; CHECK-NEXT:   tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc
888   bb.0.entry:
889     successors: %bb.9(0x30000000), %bb.1(0x50000000)
890     liveins: $r0, $r1, $r2, $r3, $r4, $r5, $r6, $lr, $r8, $r9, $r10
892     frame-setup tPUSH 14, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
893     frame-setup CFI_INSTRUCTION def_cfa_offset 20
894     frame-setup CFI_INSTRUCTION offset $lr, -4
895     frame-setup CFI_INSTRUCTION offset $r7, -8
896     frame-setup CFI_INSTRUCTION offset $r6, -12
897     frame-setup CFI_INSTRUCTION offset $r5, -16
898     frame-setup CFI_INSTRUCTION offset $r4, -20
899     $r7 = frame-setup tADDrSPi $sp, 3, 14, $noreg
900     frame-setup CFI_INSTRUCTION def_cfa $r7, 8
901     $sp = frame-setup t2STMDB_UPD $sp, 14, $noreg, killed $r8, killed $r9, killed $r10
902     frame-setup CFI_INSTRUCTION offset $r10, -24
903     frame-setup CFI_INSTRUCTION offset $r9, -28
904     frame-setup CFI_INSTRUCTION offset $r8, -32
905     tCMPi8 renamable $r3, 0, 14, $noreg, implicit-def $cpsr
906     tBcc %bb.9, 0, killed $cpsr
908   bb.1.vector.ph:
909     successors: %bb.2(0x80000000)
910     liveins: $r0, $r1, $r2, $r3
912     renamable $r6, dead $cpsr = tADDi3 renamable $r3, 3, 14, $noreg
913     $r8 = tMOVr $r0, 14, $noreg
914     renamable $r6 = t2BICri killed renamable $r6, 3, 14, $noreg, $noreg
915     $r5 = tMOVr $r2, 14, $noreg
916     renamable $r12 = t2SUBri killed renamable $r6, 4, 14, $noreg, $noreg
917     renamable $r6, dead $cpsr = tMOVi8 1, 14, $noreg
918     $r4 = tMOVr $r3, 14, $noreg
919     renamable $lr = nuw nsw t2ADDrs killed renamable $r6, renamable $r12, 19, 14, $noreg, $noreg
920     $r6 = tMOVr $r1, 14, $noreg
921     $lr = t2DoLoopStart renamable $lr
923   bb.2.vector.body:
924     successors: %bb.2(0x7c000000), %bb.3(0x04000000)
925     liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r12
927     renamable $vpr = MVE_VCTP32 renamable $r4, 0, $noreg, $noreg
928     MVE_VPST 4, implicit $vpr
929     renamable $r6, renamable $q0 = MVE_VLDRWU32_post killed renamable $r6, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv117119, align 4)
930     renamable $r5, renamable $q1 = MVE_VLDRWU32_post killed renamable $r5, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv120122, align 4)
931     renamable $r4, dead $cpsr = tSUBi8 killed renamable $r4, 4, 14, $noreg
932     renamable $q0 = nsw MVE_VMULi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
933     MVE_VPST 8, implicit $vpr
934     renamable $r8 = MVE_VSTRWU32_post killed renamable $q0, killed renamable $r8, 16, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv123125, align 4)
935     renamable $lr = t2LoopDec killed renamable $lr, 1
936     t2LoopEnd renamable $lr, %bb.2, implicit-def dead $cpsr
937     tB %bb.3, 14, $noreg
939   bb.3.for.cond4.preheader:
940     successors: %bb.6(0x30000000), %bb.4(0x50000000)
941     liveins: $r0, $r1, $r2, $r3, $r12
943     renamable $r6, dead $cpsr = tMOVi8 0, 14, $noreg
944     renamable $r8 = t2MOVi 1, 14, $noreg, $noreg
945     t2CMPrs killed renamable $r6, renamable $r3, 11, 14, $noreg, implicit-def $cpsr
946     tBcc %bb.6, 0, killed $cpsr
948   bb.4.vector.ph66:
949     successors: %bb.5(0x80000000)
950     liveins: $r0, $r1, $r2, $r3, $r8, $r12
952     renamable $r6, dead $cpsr = tMOVi8 3, 14, $noreg
953     renamable $r5, dead $cpsr = tLSRri renamable $r3, 1, 14, $noreg
954     renamable $r6 = nuw t2ADDrs killed renamable $r6, renamable $r3, 11, 14, $noreg, $noreg
955     $r10 = tMOVr $r0, 14, $noreg
956     renamable $r6 = t2BICri killed renamable $r6, 3, 14, $noreg, $noreg
957     $r9 = tMOVr $r2, 14, $noreg
958     renamable $r6, dead $cpsr = tSUBi8 killed renamable $r6, 4, 14, $noreg
959     $r4 = tMOVr $r1, 14, $noreg
960     renamable $lr = nuw nsw t2ADDrs renamable $r8, killed renamable $r6, 19, 14, $noreg, $noreg
961     $r6 = tMOVr $r0, 14, $noreg
962     $lr = t2DoLoopStart renamable $lr
964   bb.5.vector.body65:
965     successors: %bb.5(0x7c000000), %bb.6(0x04000000)
966     liveins: $lr, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r8, $r9, $r10, $r12
968     renamable $vpr = MVE_VCTP32 renamable $r5, 0, $noreg, $noreg
969     MVE_VPST 2, implicit $vpr
970     renamable $r4, renamable $q0 = MVE_VLDRWU32_post killed renamable $r4, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv108110, align 4)
971     renamable $r9, renamable $q1 = MVE_VLDRWU32_post killed renamable $r9, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv111113, align 4)
972     renamable $r6, renamable $q2 = MVE_VLDRWU32_post killed renamable $r6, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv114116, align 4)
973     renamable $q0 = MVE_VEOR killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
974     renamable $r5, dead $cpsr = tSUBi8 killed renamable $r5, 4, 14, $noreg
975     renamable $q0 = nsw MVE_VADDi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
976     MVE_VPST 8, implicit $vpr
977     MVE_VSTRWU32 killed renamable $q0, killed renamable $r10, 0, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv114116, align 4)
978     renamable $lr = t2LoopDec killed renamable $lr, 1
979     $r10 = tMOVr $r6, 14, $noreg
980     t2LoopEnd renamable $lr, %bb.5, implicit-def dead $cpsr
981     tB %bb.6, 14, $noreg
983   bb.6.for.cond15.preheader:
984     successors: %bb.9(0x30000000), %bb.7(0x50000000)
985     liveins: $r0, $r1, $r2, $r3, $r8, $r12
987     tCBZ $r3, %bb.9
989   bb.7.vector.ph85:
990     successors: %bb.8(0x80000000)
991     liveins: $r0, $r1, $r2, $r3, $r8, $r12
993     renamable $lr = nuw nsw t2ADDrs killed renamable $r8, killed renamable $r12, 19, 14, $noreg, $noreg
994     $r5 = tMOVr $r0, 14, $noreg
995     $lr = t2DoLoopStart renamable $lr
997   bb.8.vector.body84:
998     successors: %bb.8(0x7c000000), %bb.9(0x04000000)
999     liveins: $lr, $r0, $r1, $r2, $r3, $r5
1001     renamable $vpr = MVE_VCTP32 renamable $r3, 0, $noreg, $noreg
1002     MVE_VPST 2, implicit $vpr
1003     renamable $r1, renamable $q0 = MVE_VLDRWU32_post killed renamable $r1, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv101, align 4)
1004     renamable $r2, renamable $q1 = MVE_VLDRWU32_post killed renamable $r2, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv102104, align 4)
1005     renamable $r5, renamable $q2 = MVE_VLDRWU32_post killed renamable $r5, 16, 1, renamable $vpr, $noreg :: (load (s128) from %ir.lsr.iv105107, align 4)
1006     renamable $q0 = MVE_VADDi32 killed renamable $q1, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
1007     renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 4, 14, $noreg
1008     renamable $q0 = MVE_VSUBi32 killed renamable $q2, killed renamable $q0, 0, $noreg, $noreg, undef renamable $q0
1009     MVE_VPST 8, implicit $vpr
1010     MVE_VSTRWU32 killed renamable $q0, killed renamable $r0, 0, 1, killed renamable $vpr, $noreg :: (store (s128) into %ir.lsr.iv105107, align 4)
1011     renamable $lr = t2LoopDec killed renamable $lr, 1
1012     $r0 = tMOVr $r5, 14, $noreg
1013     t2LoopEnd renamable $lr, %bb.8, implicit-def dead $cpsr
1014     tB %bb.9, 14, $noreg
1016   bb.9.for.cond.cleanup17:
1017     $sp = t2LDMIA_UPD $sp, 14, $noreg, def $r8, def $r9, def $r10
1018     tPOP_RET 14, $noreg, def $r4, def $r5, def $r6, def $r7, def $pc