xref: /llvm-project/llvm/test/CodeGen/Thumb2/LowOverheadLoops/spillingmove.mir (revision 706e1975400b3f30bd406b694bb711a7c7dbe1c4)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=thumbv8.1m.main-none-unknown-eabi -mattr=+mve -run-pass=arm-low-overhead-loops -enable-subreg-liveness %s -o - --verify-machineinstrs | FileCheck %s
3
4--- |
5  %struct.arm_2d_size_t = type { i16, i16 }
6  define void @none(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
7    unreachable
8  }
9  define void @copyin(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
10    unreachable
11  }
12  define void @copyout(ptr noalias nocapture %phwTargetBase, i16 signext %iTargetStride, ptr noalias nocapture readonly %ptCopySize, i16 zeroext %hwColour, i32 %chRatio) {
13    unreachable
14  }
15...
16---
17name:            none
18tracksRegLiveness: true
19registers:       []
20liveins:
21  - { reg: '$r0', virtual-reg: '' }
22  - { reg: '$r1', virtual-reg: '' }
23  - { reg: '$r2', virtual-reg: '' }
24body:             |
25  ; CHECK-LABEL: name: none
26  ; CHECK: bb.0:
27  ; CHECK-NEXT:   successors: %bb.5(0x5c0b8170), %bb.1(0x23f47e90)
28  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
29  ; CHECK-NEXT: {{  $}}
30  ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
31  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
32  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
33  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -8
34  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -12
35  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -16
36  ; CHECK-NEXT:   renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
37  ; CHECK-NEXT:   t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
38  ; CHECK-NEXT:   t2IT 10, 4, implicit-def $itstate
39  ; CHECK-NEXT:   renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
40  ; CHECK-NEXT:   tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
41  ; CHECK-NEXT:   tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
42  ; CHECK-NEXT: {{  $}}
43  ; CHECK-NEXT: bb.1:
44  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
45  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r12
46  ; CHECK-NEXT: {{  $}}
47  ; CHECK-NEXT:   renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
48  ; CHECK-NEXT:   renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
49  ; CHECK-NEXT:   renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
50  ; CHECK-NEXT:   renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
51  ; CHECK-NEXT:   renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
52  ; CHECK-NEXT: {{  $}}
53  ; CHECK-NEXT: bb.2:
54  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
55  ; CHECK-NEXT:   liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
56  ; CHECK-NEXT: {{  $}}
57  ; CHECK-NEXT:   $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
58  ; CHECK-NEXT:   $lr = MVE_DLSTP_16 renamable $r2
59  ; CHECK-NEXT: {{  $}}
60  ; CHECK-NEXT: bb.3:
61  ; CHECK-NEXT:   successors: %bb.3(0x7c000000), %bb.4(0x04000000)
62  ; CHECK-NEXT:   liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r6, $r12
63  ; CHECK-NEXT: {{  $}}
64  ; CHECK-NEXT:   renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 0, $noreg, renamable $lr
65  ; CHECK-NEXT:   renamable $q1 = MVE_VAND killed renamable $q1, renamable $q0, 0, $noreg, renamable $lr, undef renamable $q1
66  ; CHECK-NEXT:   renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 0, killed $noreg, renamable $lr
67  ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.3
68  ; CHECK-NEXT: {{  $}}
69  ; CHECK-NEXT: bb.4:
70  ; CHECK-NEXT:   successors: %bb.5(0x04000000), %bb.2(0x7c000000)
71  ; CHECK-NEXT:   liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
72  ; CHECK-NEXT: {{  $}}
73  ; CHECK-NEXT:   renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
74  ; CHECK-NEXT:   renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
75  ; CHECK-NEXT:   tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
76  ; CHECK-NEXT:   tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
77  ; CHECK-NEXT: {{  $}}
78  ; CHECK-NEXT: bb.5:
79  ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
80  bb.0:
81    successors: %bb.5(0x80000000), %bb.1(0x32000000)
82    liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
83
84    frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
85    frame-setup CFI_INSTRUCTION def_cfa_offset 16
86    frame-setup CFI_INSTRUCTION offset $lr, -4
87    frame-setup CFI_INSTRUCTION offset $r6, -8
88    frame-setup CFI_INSTRUCTION offset $r5, -12
89    frame-setup CFI_INSTRUCTION offset $r4, -16
90    renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
91    t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
92    t2IT 10, 4, implicit-def $itstate
93    renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
94    tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
95    tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
96
97  bb.1:
98    successors: %bb.2(0x80000000)
99    liveins: $r0, $r1, $r2, $r12
100
101    renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
102    renamable $r6, dead $cpsr = nsw tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
103    renamable $r5, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
104    renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
105    renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
106    renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
107    renamable $r3 = t2BICri killed renamable $r6, 7, 14 /* CC::al */, $noreg, $noreg
108    renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
109    renamable $r6 = nuw nsw t2ADDrs killed renamable $r5, killed renamable $r3, 27, 14 /* CC::al */, $noreg, $noreg
110    renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
111
112  bb.2:
113    successors: %bb.3(0x80000000)
114    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
115
116    $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
117    $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
118    renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
119
120  bb.3:
121    successors: %bb.3(0x7c000000), %bb.4(0x04000000)
122    liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
123
124    renamable $vpr = MVE_VCTP16 renamable $r5, 0, $noreg, $noreg
125    renamable $r5, dead $cpsr = tSUBi8 killed renamable $r5, 8, 14 /* CC::al */, $noreg
126    MVE_VPST 8, implicit $vpr
127    renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 1, renamable $vpr, renamable $lr
128    renamable $q1 = MVE_VAND killed renamable $q1, renamable $q0, 0, $noreg, renamable $lr, undef renamable $q1
129    MVE_VPST 8, implicit $vpr
130    renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 1, killed renamable $vpr, renamable $lr
131    renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr
132    tB %bb.4, 14 /* CC::al */, $noreg
133
134  bb.4:
135    successors: %bb.5(0x04000000), %bb.2(0x7c000000)
136    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
137
138    renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
139    renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
140    tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
141    tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
142
143  bb.5:
144    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
145
146...
147---
148name:            copyin
149tracksRegLiveness: true
150registers:       []
151liveins:
152  - { reg: '$r0', virtual-reg: '' }
153  - { reg: '$r1', virtual-reg: '' }
154  - { reg: '$r2', virtual-reg: '' }
155body:             |
156  ; CHECK-LABEL: name: copyin
157  ; CHECK: bb.0:
158  ; CHECK-NEXT:   successors: %bb.5(0x5c0b8170), %bb.1(0x23f47e90)
159  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
160  ; CHECK-NEXT: {{  $}}
161  ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
162  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
163  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
164  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -8
165  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -12
166  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -16
167  ; CHECK-NEXT:   renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
168  ; CHECK-NEXT:   t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
169  ; CHECK-NEXT:   t2IT 10, 4, implicit-def $itstate
170  ; CHECK-NEXT:   renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
171  ; CHECK-NEXT:   tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
172  ; CHECK-NEXT:   tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
173  ; CHECK-NEXT: {{  $}}
174  ; CHECK-NEXT: bb.1:
175  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
176  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r12
177  ; CHECK-NEXT: {{  $}}
178  ; CHECK-NEXT:   renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
179  ; CHECK-NEXT:   renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
180  ; CHECK-NEXT:   renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
181  ; CHECK-NEXT:   renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
182  ; CHECK-NEXT:   renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
183  ; CHECK-NEXT: {{  $}}
184  ; CHECK-NEXT: bb.2:
185  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
186  ; CHECK-NEXT:   liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
187  ; CHECK-NEXT: {{  $}}
188  ; CHECK-NEXT:   $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
189  ; CHECK-NEXT:   $lr = MVE_DLSTP_16 renamable $r2
190  ; CHECK-NEXT: {{  $}}
191  ; CHECK-NEXT: bb.3:
192  ; CHECK-NEXT:   successors: %bb.3(0x7c000000), %bb.4(0x04000000)
193  ; CHECK-NEXT:   liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r6, $r12
194  ; CHECK-NEXT: {{  $}}
195  ; CHECK-NEXT:   renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 0, $noreg, renamable $lr
196  ; CHECK-NEXT:   $q2 = MVE_VORR $q0, $q0, 0, $noreg, $noreg, undef $q2
197  ; CHECK-NEXT:   renamable $q1 = MVE_VAND killed renamable $q1, killed renamable $q2, 0, $noreg, renamable $lr, undef renamable $q1
198  ; CHECK-NEXT:   renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 0, killed $noreg, renamable $lr
199  ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.3
200  ; CHECK-NEXT: {{  $}}
201  ; CHECK-NEXT: bb.4:
202  ; CHECK-NEXT:   successors: %bb.5(0x04000000), %bb.2(0x7c000000)
203  ; CHECK-NEXT:   liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
204  ; CHECK-NEXT: {{  $}}
205  ; CHECK-NEXT:   renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
206  ; CHECK-NEXT:   renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
207  ; CHECK-NEXT:   tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
208  ; CHECK-NEXT:   tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
209  ; CHECK-NEXT: {{  $}}
210  ; CHECK-NEXT: bb.5:
211  ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
212  bb.0:
213    successors: %bb.5(0x80000000), %bb.1(0x32000000)
214    liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
215
216    frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
217    frame-setup CFI_INSTRUCTION def_cfa_offset 16
218    frame-setup CFI_INSTRUCTION offset $lr, -4
219    frame-setup CFI_INSTRUCTION offset $r6, -8
220    frame-setup CFI_INSTRUCTION offset $r5, -12
221    frame-setup CFI_INSTRUCTION offset $r4, -16
222    renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
223    t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
224    t2IT 10, 4, implicit-def $itstate
225    renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
226    tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
227    tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
228
229  bb.1:
230    successors: %bb.2(0x80000000)
231    liveins: $r0, $r1, $r2, $r12
232
233    renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
234    renamable $r6, dead $cpsr = nsw tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
235    renamable $r5, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
236    renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
237    renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
238    renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
239    renamable $r3 = t2BICri killed renamable $r6, 7, 14 /* CC::al */, $noreg, $noreg
240    renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
241    renamable $r6 = nuw nsw t2ADDrs killed renamable $r5, killed renamable $r3, 27, 14 /* CC::al */, $noreg, $noreg
242    renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
243
244  bb.2:
245    successors: %bb.3(0x80000000)
246    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
247
248    $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
249    $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
250    renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
251
252  bb.3:
253    successors: %bb.3(0x7c000000), %bb.4(0x04000000)
254    liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
255
256    renamable $vpr = MVE_VCTP16 renamable $r5, 0, $noreg, $noreg
257    renamable $r5, dead $cpsr = tSUBi8 killed renamable $r5, 8, 14 /* CC::al */, $noreg
258    MVE_VPST 8, implicit $vpr
259    renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 1, renamable $vpr, renamable $lr
260    $q2 = MQPRCopy $q0
261    renamable $q1 = MVE_VAND killed renamable $q1, renamable $q2, 0, $noreg, renamable $lr, undef renamable $q1
262    MVE_VPST 8, implicit $vpr
263    renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 1, killed renamable $vpr, renamable $lr
264    renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr
265    tB %bb.4, 14 /* CC::al */, $noreg
266
267  bb.4:
268    successors: %bb.5(0x04000000), %bb.2(0x7c000000)
269    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
270
271    renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
272    renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
273    tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
274    tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
275
276  bb.5:
277    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
278
279...
280---
281name:            copyout
282tracksRegLiveness: true
283registers:       []
284liveins:
285  - { reg: '$r0', virtual-reg: '' }
286  - { reg: '$r1', virtual-reg: '' }
287  - { reg: '$r2', virtual-reg: '' }
288body:             |
289  ; CHECK-LABEL: name: copyout
290  ; CHECK: bb.0:
291  ; CHECK-NEXT:   successors: %bb.5(0x5c0b8170), %bb.1(0x23f47e90)
292  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
293  ; CHECK-NEXT: {{  $}}
294  ; CHECK-NEXT:   frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
295  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION def_cfa_offset 16
296  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $lr, -4
297  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r6, -8
298  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r5, -12
299  ; CHECK-NEXT:   frame-setup CFI_INSTRUCTION offset $r4, -16
300  ; CHECK-NEXT:   renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
301  ; CHECK-NEXT:   t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
302  ; CHECK-NEXT:   t2IT 10, 4, implicit-def $itstate
303  ; CHECK-NEXT:   renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
304  ; CHECK-NEXT:   tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
305  ; CHECK-NEXT:   tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
306  ; CHECK-NEXT: {{  $}}
307  ; CHECK-NEXT: bb.1:
308  ; CHECK-NEXT:   successors: %bb.2(0x80000000)
309  ; CHECK-NEXT:   liveins: $r0, $r1, $r2, $r12
310  ; CHECK-NEXT: {{  $}}
311  ; CHECK-NEXT:   renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
312  ; CHECK-NEXT:   renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
313  ; CHECK-NEXT:   renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
314  ; CHECK-NEXT:   renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
315  ; CHECK-NEXT:   renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
316  ; CHECK-NEXT: {{  $}}
317  ; CHECK-NEXT: bb.2:
318  ; CHECK-NEXT:   successors: %bb.3(0x80000000)
319  ; CHECK-NEXT:   liveins: $d0, $d1, $r0, $r1, $r2, $r3, $r6, $r12
320  ; CHECK-NEXT: {{  $}}
321  ; CHECK-NEXT:   $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
322  ; CHECK-NEXT:   $lr = MVE_DLSTP_16 renamable $r2
323  ; CHECK-NEXT: {{  $}}
324  ; CHECK-NEXT: bb.3:
325  ; CHECK-NEXT:   successors: %bb.3(0x7c000000), %bb.4(0x04000000)
326  ; CHECK-NEXT:   liveins: $lr, $d0, $d1, $r0, $r1, $r2, $r3, $r4, $r6, $r12
327  ; CHECK-NEXT: {{  $}}
328  ; CHECK-NEXT:   renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 0, $noreg, renamable $lr
329  ; CHECK-NEXT:   $d4 = VMOVD killed $d0, 14 /* CC::al */, $noreg
330  ; CHECK-NEXT:   $d5 = VMOVD killed $d1, 14 /* CC::al */, $noreg
331  ; CHECK-NEXT:   renamable $q1 = MVE_VAND killed renamable $q1, renamable $q2, 0, $noreg, renamable $lr, undef renamable $q1
332  ; CHECK-NEXT:   $d0 = VMOVD killed $d4, 14 /* CC::al */, $noreg
333  ; CHECK-NEXT:   $d1 = VMOVD killed $d5, 14 /* CC::al */, $noreg
334  ; CHECK-NEXT:   renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 0, killed $noreg, renamable $lr
335  ; CHECK-NEXT:   $lr = MVE_LETP killed renamable $lr, %bb.3
336  ; CHECK-NEXT: {{  $}}
337  ; CHECK-NEXT: bb.4:
338  ; CHECK-NEXT:   successors: %bb.5(0x04000000), %bb.2(0x7c000000)
339  ; CHECK-NEXT:   liveins: $d0, $d1, $r0, $r1, $r2, $r3, $r6, $r12
340  ; CHECK-NEXT: {{  $}}
341  ; CHECK-NEXT:   renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
342  ; CHECK-NEXT:   renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
343  ; CHECK-NEXT:   tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
344  ; CHECK-NEXT:   tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
345  ; CHECK-NEXT: {{  $}}
346  ; CHECK-NEXT: bb.5:
347  ; CHECK-NEXT:   frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
348  bb.0:
349    successors: %bb.5(0x80000000), %bb.1(0x32000000)
350    liveins: $r0, $r1, $r2, $r4, $r5, $r6, $lr
351
352    frame-setup tPUSH 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $lr, implicit-def $sp, implicit $sp
353    frame-setup CFI_INSTRUCTION def_cfa_offset 16
354    frame-setup CFI_INSTRUCTION offset $lr, -4
355    frame-setup CFI_INSTRUCTION offset $r6, -8
356    frame-setup CFI_INSTRUCTION offset $r5, -12
357    frame-setup CFI_INSTRUCTION offset $r4, -16
358    renamable $r12 = t2LDRSHi12 renamable $r2, 2, 14 /* CC::al */, $noreg
359    t2CMPri renamable $r12, 1, 14 /* CC::al */, $noreg, implicit-def $cpsr
360    t2IT 10, 4, implicit-def $itstate
361    renamable $r2 = t2LDRSHi12 killed renamable $r2, 0, 10 /* CC::ge */, $cpsr, implicit $r2, implicit $itstate
362    tCMPi8 renamable $r2, 1, 10 /* CC::ge */, killed $cpsr, implicit-def $cpsr, implicit killed $itstate
363    tBcc %bb.5, 11 /* CC::lt */, killed $cpsr
364
365  bb.1:
366    successors: %bb.2(0x80000000)
367    liveins: $r0, $r1, $r2, $r12
368
369    renamable $r3 = t2LDRHi12 $sp, 16, 14 /* CC::al */, $noreg
370    renamable $r6, dead $cpsr = nsw tADDi3 renamable $r2, 7, 14 /* CC::al */, $noreg
371    renamable $r5, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
372    renamable $r1, dead $cpsr = nsw tLSLri killed renamable $r1, 1, 14 /* CC::al */, $noreg
373    renamable $r3 = t2RSBri killed renamable $r3, 256, 14 /* CC::al */, $noreg, $noreg
374    renamable $q0 = MVE_VDUP16 killed renamable $r3, 0, $noreg, $noreg, undef renamable $q0
375    renamable $r3 = t2BICri killed renamable $r6, 7, 14 /* CC::al */, $noreg, $noreg
376    renamable $r3, dead $cpsr = tSUBi8 killed renamable $r3, 8, 14 /* CC::al */, $noreg
377    renamable $r6 = nuw nsw t2ADDrs killed renamable $r5, killed renamable $r3, 27, 14 /* CC::al */, $noreg, $noreg
378    renamable $r3, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg
379
380  bb.2:
381    successors: %bb.3(0x80000000)
382    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
383
384    $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
385    $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
386    renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
387
388  bb.3:
389    successors: %bb.3(0x7c000000), %bb.4(0x04000000)
390    liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
391
392    renamable $vpr = MVE_VCTP16 renamable $r5, 0, $noreg, $noreg
393    renamable $r5, dead $cpsr = tSUBi8 killed renamable $r5, 8, 14 /* CC::al */, $noreg
394    MVE_VPST 8, implicit $vpr
395    renamable $q1 = MVE_VLDRHU16 renamable $r4, 0, 1, renamable $vpr, renamable $lr
396    $q2 = MQPRCopy $q0
397    renamable $q1 = MVE_VAND killed renamable $q1, renamable $q2, 0, $noreg, renamable $lr, undef renamable $q1
398    $q0 = MQPRCopy $q2
399    MVE_VPST 8, implicit $vpr
400    renamable $r4 = MVE_VSTRHU16_post killed renamable $q1, killed renamable $r4, 16, 1, killed renamable $vpr, renamable $lr
401    renamable $lr = t2LoopEndDec killed renamable $lr, %bb.3, implicit-def dead $cpsr
402    tB %bb.4, 14 /* CC::al */, $noreg
403
404  bb.4:
405    successors: %bb.5(0x04000000), %bb.2(0x7c000000)
406    liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
407
408    renamable $r3, dead $cpsr = nuw nsw tADDi8 killed renamable $r3, 1, 14 /* CC::al */, $noreg
409    renamable $r0 = tADDhirr killed renamable $r0, renamable $r1, 14 /* CC::al */, $noreg
410    tCMPhir renamable $r3, renamable $r12, 14 /* CC::al */, $noreg, implicit-def $cpsr
411    tBcc %bb.2, 1 /* CC::ne */, killed $cpsr
412
413  bb.5:
414    frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
415
416...
417
418