Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / LowOverheadLoops / spillingmove.mir
blob0995521957b98416ed3a6b20ea4ef63cbd5bc84b
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
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 ---
17 name:            none
18 tracksRegLiveness: true
19 registers:       []
20 liveins:
21   - { reg: '$r0', virtual-reg: '' }
22   - { reg: '$r1', virtual-reg: '' }
23   - { reg: '$r2', virtual-reg: '' }
24 body:             |
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
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
97   bb.1:
98     successors: %bb.2(0x80000000)
99     liveins: $r0, $r1, $r2, $r12
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
112   bb.2:
113     successors: %bb.3(0x80000000)
114     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
116     $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
117     $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
118     renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
120   bb.3:
121     successors: %bb.3(0x7c000000), %bb.4(0x04000000)
122     liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
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
134   bb.4:
135     successors: %bb.5(0x04000000), %bb.2(0x7c000000)
136     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
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
143   bb.5:
144     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
148 name:            copyin
149 tracksRegLiveness: true
150 registers:       []
151 liveins:
152   - { reg: '$r0', virtual-reg: '' }
153   - { reg: '$r1', virtual-reg: '' }
154   - { reg: '$r2', virtual-reg: '' }
155 body:             |
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
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
229   bb.1:
230     successors: %bb.2(0x80000000)
231     liveins: $r0, $r1, $r2, $r12
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
244   bb.2:
245     successors: %bb.3(0x80000000)
246     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
248     $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
249     $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
250     renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
252   bb.3:
253     successors: %bb.3(0x7c000000), %bb.4(0x04000000)
254     liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
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
267   bb.4:
268     successors: %bb.5(0x04000000), %bb.2(0x7c000000)
269     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
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
276   bb.5:
277     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc
281 name:            copyout
282 tracksRegLiveness: true
283 registers:       []
284 liveins:
285   - { reg: '$r0', virtual-reg: '' }
286   - { reg: '$r1', virtual-reg: '' }
287   - { reg: '$r2', virtual-reg: '' }
288 body:             |
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
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
365   bb.1:
366     successors: %bb.2(0x80000000)
367     liveins: $r0, $r1, $r2, $r12
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
380   bb.2:
381     successors: %bb.3(0x80000000)
382     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
384     $r4 = tMOVr $r0, 14 /* CC::al */, $noreg
385     $r5 = tMOVr $r2, 14 /* CC::al */, $noreg
386     renamable $lr = t2DoLoopStartTP renamable $r6, renamable $r2
388   bb.3:
389     successors: %bb.3(0x7c000000), %bb.4(0x04000000)
390     liveins: $lr, $q0, $r0, $r1, $r2, $r3, $r4, $r5, $r6, $r12
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
404   bb.4:
405     successors: %bb.5(0x04000000), %bb.2(0x7c000000)
406     liveins: $q0, $r0, $r1, $r2, $r3, $r6, $r12
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
413   bb.5:
414     frame-destroy tPOP_RET 14 /* CC::al */, $noreg, def $r4, def $r5, def $r6, def $pc