llvm.org GIT mirror llvm / d9a54d7
[ARM][MVE] Change VPST to use, not def, VPR Unlike VPT, VPST just uses the current value of VPR.P0. Differential Revision: https://reviews.llvm.org/D69037 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375087 91177308-0d34-0410-b5e6-96231b3b80d8 Sam Parker 11 months ago
13 changed file(s) with 296 addition(s) and 208 deletion(s). Raw diff Collapse all Expand all
47904790 let Unpredictable{7} = 0b1;
47914791 let Unpredictable{5} = 0b1;
47924792
4793 let Defs = [VPR];
4793 let Uses = [VPR];
47944794 let validForTailPredication = 1;
47954795 }
47964796
4343 ; CHECK-NEXT: .LBB0_5: @ %vector.body
4444 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
4545 ; CHECK-NEXT: vctp.32 r3
46 ; CHECK-NEXT: subs r3, #4
4746 ; CHECK-NEXT: vpstt
4847 ; CHECK-NEXT: vldrwt.u32 q0, [r1]
4948 ; CHECK-NEXT: vldrwt.u32 q1, [r2]
50 ; CHECK-NEXT: adds r1, #16
5149 ; CHECK-NEXT: vmul.f32 q0, q1, q0
5250 ; CHECK-NEXT: vpst
5351 ; CHECK-NEXT: vstrwt.32 q0, [r0]
52 ; CHECK-NEXT: adds r1, #16
5453 ; CHECK-NEXT: adds r2, #16
5554 ; CHECK-NEXT: adds r0, #16
55 ; CHECK-NEXT: subs r3, #4
5656 ; CHECK-NEXT: le lr, .LBB0_5
5757 ; CHECK-NEXT: b .LBB0_11
5858 ; CHECK-NEXT: .LBB0_6: @ %for.body.preheader.new
241241 ; CHECK-NEXT: dls lr, lr
242242 ; CHECK-NEXT: .LBB1_2: @ %vector.body
243243 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
244 ; CHECK-NEXT: vmov q0, q1
244245 ; CHECK-NEXT: vctp.32 r2
245 ; CHECK-NEXT: vmov q0, q1
246246 ; CHECK-NEXT: vpstt
247247 ; CHECK-NEXT: vldrwt.u32 q1, [r0]
248248 ; CHECK-NEXT: vldrwt.u32 q2, [r1]
358358 ; CHECK-NEXT: .LBB4_1: @ %vector.body
359359 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
360360 ; CHECK-NEXT: vctp.32 r2
361 ; CHECK-NEXT: mov r3, r2
362361 ; CHECK-NEXT: vpst
363362 ; CHECK-NEXT: vldrwt.u32 q2, [r1]
363 ; CHECK-NEXT: mov r3, r2
364364 ; CHECK-NEXT: adds r1, #16
365365 ; CHECK-NEXT: subs r2, #4
366366 ; CHECK-NEXT: vmov q1, q0
11351135 ; CHECK-NEXT: .LBB9_5: @ %vector.body
11361136 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
11371137 ; CHECK-NEXT: vctp.32 r12
1138 ; CHECK-NEXT: sub.w r12, r12, #4
11391138 ; CHECK-NEXT: vpstt
11401139 ; CHECK-NEXT: vldrwt.u32 q0, [r0]
11411140 ; CHECK-NEXT: vldrwt.u32 q1, [r1]
1141 ; CHECK-NEXT: vmul.i32 q0, q1, q0
11421142 ; CHECK-NEXT: adds r0, #16
1143 ; CHECK-NEXT: vmul.i32 q0, q1, q0
1144 ; CHECK-NEXT: adds r1, #16
11451143 ; CHECK-NEXT: vadd.i32 q0, q0, r2
11461144 ; CHECK-NEXT: vpst
11471145 ; CHECK-NEXT: vstrwt.32 q0, [r3]
1146 ; CHECK-NEXT: adds r1, #16
11481147 ; CHECK-NEXT: adds r3, #16
1148 ; CHECK-NEXT: sub.w r12, r12, #4
11491149 ; CHECK-NEXT: le lr, .LBB9_5
11501150 ; CHECK-NEXT: b .LBB9_11
11511151 ; CHECK-NEXT: .LBB9_6: @ %for.body.preheader.new
0 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
1 ; RUN: llc -mtriple=armv8.1m.main -mattr=+mve -enable-arm-maskedldst=true -disable-mve-tail-predication=false --verify-machineinstrs %s -o - | FileCheck %s
12
2 ; CHECK-LABEL: mul_reduce_add
3 ; CHECK: dls lr,
4 ; CHECK: [[LOOP:.LBB[0-9_]+]]:
5 ; CHECK: vctp.32 [[ELEMS:r[0-9]+]]
6 ; CHECK: vpstt
7 ; CHECK-NEXT: vldrwt.u32
8 ; CHECK-NEXT: vldrwt.u32
9 ; CHECK: mov [[ELEMS_OUT:r[0-9]+]], [[ELEMS]]
10 ; CHECK: sub{{.*}} [[ELEMS]], #4
11 ; CHECK: le lr, [[LOOP]]
12 ; CHECK: vctp.32 [[ELEMS_OUT]]
13 ; CHECK: vpsel
14 ; CHECK: vaddv.u32 r0
153 define dso_local i32 @mul_reduce_add(i32* noalias nocapture readonly %a, i32* noalias nocapture readonly %b, i32 %N) {
4 ; CHECK-LABEL: mul_reduce_add:
5 ; CHECK: @ %bb.0: @ %entry
6 ; CHECK-NEXT: cmp r2, #0
7 ; CHECK-NEXT: itt eq
8 ; CHECK-NEXT: moveq r0, #0
9 ; CHECK-NEXT: bxeq lr
10 ; CHECK-NEXT: push {r7, lr}
11 ; CHECK-NEXT: adds r3, r2, #3
12 ; CHECK-NEXT: vmov.i32 q0, #0x0
13 ; CHECK-NEXT: bic r3, r3, #3
14 ; CHECK-NEXT: sub.w r12, r3, #4
15 ; CHECK-NEXT: movs r3, #1
16 ; CHECK-NEXT: add.w lr, r3, r12, lsr #2
17 ; CHECK-NEXT: dls lr, lr
18 ; CHECK-NEXT: .LBB0_1: @ %vector.body
19 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
20 ; CHECK-NEXT: vmov q1, q0
21 ; CHECK-NEXT: vctp.32 r2
22 ; CHECK-NEXT: vpstt
23 ; CHECK-NEXT: vldrwt.u32 q0, [r0]
24 ; CHECK-NEXT: vldrwt.u32 q2, [r1]
25 ; CHECK-NEXT: mov r3, r2
26 ; CHECK-NEXT: vmul.i32 q0, q2, q0
27 ; CHECK-NEXT: adds r0, #16
28 ; CHECK-NEXT: adds r1, #16
29 ; CHECK-NEXT: subs r2, #4
30 ; CHECK-NEXT: vadd.i32 q0, q0, q1
31 ; CHECK-NEXT: le lr, .LBB0_1
32 ; CHECK-NEXT: @ %bb.2: @ %middle.block
33 ; CHECK-NEXT: vctp.32 r3
34 ; CHECK-NEXT: vpsel q0, q0, q1
35 ; CHECK-NEXT: vaddv.u32 r0, q0
36 ; CHECK-NEXT: pop {r7, pc}
1637 entry:
1738 %cmp8 = icmp eq i32 %N, 0
1839 br i1 %cmp8, label %for.cond.cleanup, label %vector.ph
5475 ret i32 %res.0.lcssa
5576 }
5677
57 ; CHECK-LABEL: mul_reduce_add_const
58 ; CHECK: dls lr
59 ; CHECK: [[LOOP:.LBB[0-9_]+]]:
60 ; CHECK: vctp.32 [[ELEMS:r[0-9]+]]
61 ; CHECK: vpst
62 ; CHECK-NEXT: vldrwt.u32 q{{.*}}, [r0]
63 ; CHECK: mov [[ELEMS_OUT:r[0-9]+]], [[ELEMS]]
64 ; CHECK: sub{{.*}} [[ELEMS]], #4
65 ; CHECK: le lr, [[LOOP]]
66 ; CHECK: vctp.32 [[ELEMS_OUT]]
67 ; CHECK: vpsel
6878 define dso_local i32 @mul_reduce_add_const(i32* noalias nocapture readonly %a, i32 %b, i32 %N) {
79 ; CHECK-LABEL: mul_reduce_add_const:
80 ; CHECK: @ %bb.0: @ %entry
81 ; CHECK-NEXT: cmp r2, #0
82 ; CHECK-NEXT: itt eq
83 ; CHECK-NEXT: moveq r0, #0
84 ; CHECK-NEXT: bxeq lr
85 ; CHECK-NEXT: push {r7, lr}
86 ; CHECK-NEXT: adds r1, r2, #3
87 ; CHECK-NEXT: movs r3, #1
88 ; CHECK-NEXT: bic r1, r1, #3
89 ; CHECK-NEXT: vmov.i32 q0, #0x0
90 ; CHECK-NEXT: subs r1, #4
91 ; CHECK-NEXT: add.w lr, r3, r1, lsr #2
92 ; CHECK-NEXT: dls lr, lr
93 ; CHECK-NEXT: .LBB1_1: @ %vector.body
94 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
95 ; CHECK-NEXT: mov r1, r2
96 ; CHECK-NEXT: vctp.32 r2
97 ; CHECK-NEXT: vmov q1, q0
98 ; CHECK-NEXT: vpst
99 ; CHECK-NEXT: vldrwt.u32 q0, [r0]
100 ; CHECK-NEXT: adds r0, #16
101 ; CHECK-NEXT: subs r2, #4
102 ; CHECK-NEXT: vadd.i32 q0, q0, q1
103 ; CHECK-NEXT: le lr, .LBB1_1
104 ; CHECK-NEXT: @ %bb.2: @ %middle.block
105 ; CHECK-NEXT: vctp.32 r1
106 ; CHECK-NEXT: vpsel q0, q0, q1
107 ; CHECK-NEXT: vaddv.u32 r0, q0
108 ; CHECK-NEXT: pop {r7, pc}
69109 entry:
70110 %cmp6 = icmp eq i32 %N, 0
71111 br i1 %cmp6, label %for.cond.cleanup, label %vector.ph
103143 ret i32 %res.0.lcssa
104144 }
105145
106 ; CHECK-LABEL: add_reduce_add_const
107 ; CHECK: dls lr, lr
108 ; CHECK: [[LOOP:.LBB[0-9_]+]]:
109 ; CHECK: vctp.32 [[ELEMS:r[0-9]+]]
110 ; CHECK: vpst
111 ; CHECK-NEXT: vldrwt.u32 q{{.*}}, [r0]
112 ; CHECK: mov [[ELEMS_OUT:r[0-9]+]], [[ELEMS]]
113 ; CHECK: sub{{.*}} [[ELEMS]], #4
114 ; CHECK: vadd.i32
115 ; CHECK: le lr, [[LOOP]]
116 ; CHECK: vctp.32 [[ELEMS_OUT]]
117 ; CHECK: vpsel
118146 define dso_local i32 @add_reduce_add_const(i32* noalias nocapture readonly %a, i32 %b, i32 %N) {
147 ; CHECK-LABEL: add_reduce_add_const:
148 ; CHECK: @ %bb.0: @ %entry
149 ; CHECK-NEXT: cmp r2, #0
150 ; CHECK-NEXT: itt eq
151 ; CHECK-NEXT: moveq r0, #0
152 ; CHECK-NEXT: bxeq lr
153 ; CHECK-NEXT: push {r7, lr}
154 ; CHECK-NEXT: adds r1, r2, #3
155 ; CHECK-NEXT: movs r3, #1
156 ; CHECK-NEXT: bic r1, r1, #3
157 ; CHECK-NEXT: vmov.i32 q0, #0x0
158 ; CHECK-NEXT: subs r1, #4
159 ; CHECK-NEXT: add.w lr, r3, r1, lsr #2
160 ; CHECK-NEXT: dls lr, lr
161 ; CHECK-NEXT: .LBB2_1: @ %vector.body
162 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
163 ; CHECK-NEXT: mov r1, r2
164 ; CHECK-NEXT: vctp.32 r2
165 ; CHECK-NEXT: vmov q1, q0
166 ; CHECK-NEXT: vpst
167 ; CHECK-NEXT: vldrwt.u32 q0, [r0]
168 ; CHECK-NEXT: adds r0, #16
169 ; CHECK-NEXT: subs r2, #4
170 ; CHECK-NEXT: vadd.i32 q0, q0, q1
171 ; CHECK-NEXT: le lr, .LBB2_1
172 ; CHECK-NEXT: @ %bb.2: @ %middle.block
173 ; CHECK-NEXT: vctp.32 r1
174 ; CHECK-NEXT: vpsel q0, q0, q1
175 ; CHECK-NEXT: vaddv.u32 r0, q0
176 ; CHECK-NEXT: pop {r7, pc}
119177 entry:
120178 %cmp6 = icmp eq i32 %N, 0
121179 br i1 %cmp6, label %for.cond.cleanup, label %vector.ph
153211 ret i32 %res.0.lcssa
154212 }
155213
156 ; CHECK-LABEL: vector_mul_const
157 ; CHECK: dls lr, lr
158 ; CHECK: [[LOOP:.LBB[0-9_]+]]:
159 ; CHECK: vctp.32 [[ELEMS:r[0-9]+]]
160 ; CHECK: sub{{.*}} [[ELEMS]], #4
161 ; CHECK: vpst
162 ; CHECK-NEXT: vldrwt.u32 q{{.*}}, [r1]
163 ; CHECK: vmul.i32
164 ; CHECK: vpst
165 ; CHECK-NEXT: vstrwt.32 q{{.*}}, [r0]
166 ; CHECK: le lr, [[LOOP]]
167214 define dso_local void @vector_mul_const(i32* noalias nocapture %a, i32* noalias nocapture readonly %b, i32 %c, i32 %N) {
215 ; CHECK-LABEL: vector_mul_const:
216 ; CHECK: @ %bb.0: @ %entry
217 ; CHECK-NEXT: push {r7, lr}
218 ; CHECK-NEXT: cmp r3, #0
219 ; CHECK-NEXT: it eq
220 ; CHECK-NEXT: popeq {r7, pc}
221 ; CHECK-NEXT: add.w r12, r3, #3
222 ; CHECK-NEXT: mov.w lr, #1
223 ; CHECK-NEXT: bic r12, r12, #3
224 ; CHECK-NEXT: sub.w r12, r12, #4
225 ; CHECK-NEXT: add.w lr, lr, r12, lsr #2
226 ; CHECK-NEXT: dls lr, lr
227 ; CHECK-NEXT: .LBB3_1: @ %vector.body
228 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
229 ; CHECK-NEXT: vctp.32 r3
230 ; CHECK-NEXT: vpst
231 ; CHECK-NEXT: vldrwt.u32 q0, [r1]
232 ; CHECK-NEXT: vmul.i32 q0, q0, r2
233 ; CHECK-NEXT: vpst
234 ; CHECK-NEXT: vstrwt.32 q0, [r0]
235 ; CHECK-NEXT: adds r1, #16
236 ; CHECK-NEXT: adds r0, #16
237 ; CHECK-NEXT: subs r3, #4
238 ; CHECK-NEXT: le lr, .LBB3_1
239 ; CHECK-NEXT: @ %bb.2: @ %for.cond.cleanup
240 ; CHECK-NEXT: pop {r7, pc}
168241 entry:
169242 %cmp6 = icmp eq i32 %N, 0
170243 br i1 %cmp6, label %for.cond.cleanup, label %vector.ph
200273 ret void
201274 }
202275
203 ; CHECK-LABEL: vector_add_const
204 ; CHECK: dls lr, lr
205 ; CHECK: [[LOOP:.LBB[0-9_]+]]:
206 ; CHECK: vctp.32 [[ELEMS:r[0-9]+]]
207 ; CHECK: sub{{.*}} [[ELEMS]], #4
208 ; CHECK: vpst
209 ; CHECK-NEXT: vldrwt.u32 q{{.*}}, [r1]
210 ; CHECK: vadd.i32
211 ; CHECK: vpst
212 ; CHECK-NEXT: vstrwt.32 q{{.*}}, [r0]
213 ; CHECK: le lr, [[LOOP]]
214276 define dso_local void @vector_add_const(i32* noalias nocapture %a, i32* noalias nocapture readonly %b, i32 %c, i32 %N) {
277 ; CHECK-LABEL: vector_add_const:
278 ; CHECK: @ %bb.0: @ %entry
279 ; CHECK-NEXT: push {r7, lr}
280 ; CHECK-NEXT: cmp r3, #0
281 ; CHECK-NEXT: it eq
282 ; CHECK-NEXT: popeq {r7, pc}
283 ; CHECK-NEXT: add.w r12, r3, #3
284 ; CHECK-NEXT: mov.w lr, #1
285 ; CHECK-NEXT: bic r12, r12, #3
286 ; CHECK-NEXT: sub.w r12, r12, #4
287 ; CHECK-NEXT: add.w lr, lr, r12, lsr #2
288 ; CHECK-NEXT: dls lr, lr
289 ; CHECK-NEXT: .LBB4_1: @ %vector.body
290 ; CHECK-NEXT: @ =>This Inner Loop Header: Depth=1
291 ; CHECK-NEXT: vctp.32 r3
292 ; CHECK-NEXT: vpst
293 ; CHECK-NEXT: vldrwt.u32 q0, [r1]
294 ; CHECK-NEXT: vadd.i32 q0, q0, r2
295 ; CHECK-NEXT: vpst
296 ; CHECK-NEXT: vstrwt.32 q0, [r0]
297 ; CHECK-NEXT: adds r1, #16
298 ; CHECK-NEXT: adds r0, #16
299 ; CHECK-NEXT: subs r3, #4
300 ; CHECK-NEXT: le lr, .LBB4_1
301 ; CHECK-NEXT: @ %bb.2: @ %for.cond.cleanup
302 ; CHECK-NEXT: pop {r7, pc}
215303 entry:
216304 %cmp6 = icmp eq i32 %N, 0
217305 br i1 %cmp6, label %for.cond.cleanup, label %vector.ph
6464 ; CHECK-LABEL: name: test_vminnmq_m_f32_v2
6565 ; CHECK: liveins: $q0, $q1, $q2, $r0
6666 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
67 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q1, implicit killed $q2, implicit killed $q0 {
68 ; CHECK: MVE_VPST 8, implicit-def $vpr
69 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, killed renamable $q2, 1, internal killed renamable $vpr, killed renamable $q0
67 ; CHECK: BUNDLE implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $vpr, implicit killed $q1, implicit killed $q2, implicit killed $q0 {
68 ; CHECK: MVE_VPST 8, implicit $vpr
69 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, killed renamable $q2, 1, killed renamable $vpr, killed renamable $q0
7070 ; CHECK: }
7171 ; CHECK: tBX_RET 14, $noreg, implicit $q0
7272 $vpr = VMSR_P0 killed $r0, 14, $noreg
6767 ; CHECK-LABEL: name: test_vminnmq_m_f32_v2
6868 ; CHECK: liveins: $q0, $q1, $q2, $q3, $r0
6969 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
70 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def dead $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q2, implicit killed $q3, implicit killed $q0, implicit killed $q1 {
71 ; CHECK: MVE_VPST 4, implicit-def $vpr
72 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, internal renamable $vpr, killed renamable $q0
73 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, killed renamable $q3, 1, internal killed renamable $vpr, killed renamable $q1
70 ; CHECK: BUNDLE implicit-def dead $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $vpr, implicit killed $q2, implicit killed $q3, implicit killed $q0, implicit killed $q1 {
71 ; CHECK: MVE_VPST 4, implicit $vpr
72 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, renamable $vpr, killed renamable $q0
73 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, killed renamable $q3, 1, killed renamable $vpr, killed renamable $q1
7474 ; CHECK: }
7575 ; CHECK: $q0 = MVE_VORR killed $q1, killed $q1, 0, $noreg, undef $q0
7676 ; CHECK: tBX_RET 14, $noreg, implicit $q0
6868 ; CHECK-LABEL: name: test_vminnmq_m_f32_v2
6969 ; CHECK: liveins: $q0, $q1, $q2, $q3, $r0
7070 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
71 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def dead $q2, implicit-def $d4, implicit-def $s8, implicit-def $s9, implicit-def $d5, implicit-def $s10, implicit-def $s11, implicit-def dead $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q2, implicit killed $q3, implicit killed $q0, implicit killed $q1 {
72 ; CHECK: MVE_VPST 1, implicit-def $vpr
73 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, internal renamable $vpr, undef renamable $q2
74 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, internal renamable $q2, 1, internal renamable $vpr, internal undef renamable $q2
75 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, renamable $q3, 1, internal renamable $vpr, killed renamable $q0
76 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, killed renamable $q3, 1, internal killed renamable $vpr, killed renamable $q1
71 ; CHECK: BUNDLE implicit-def dead $q2, implicit-def $d4, implicit-def $s8, implicit-def $s9, implicit-def $d5, implicit-def $s10, implicit-def $s11, implicit-def dead $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $vpr, implicit killed $q2, implicit killed $q3, implicit killed $q0, implicit killed $q1 {
72 ; CHECK: MVE_VPST 1, implicit $vpr
73 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, renamable $vpr, undef renamable $q2
74 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, internal renamable $q2, 1, renamable $vpr, internal undef renamable $q2
75 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, renamable $q3, 1, renamable $vpr, killed renamable $q0
76 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, killed renamable $q3, 1, killed renamable $vpr, killed renamable $q1
7777 ; CHECK: }
7878 ; CHECK: $q0 = MVE_VORR killed $q1, killed $q1, 0, $noreg, undef $q0
7979 ; CHECK: tBX_RET 14, $noreg, implicit $q0
6969 ; CHECK-LABEL: name: test_vminnmq_m_f32_v2
7070 ; CHECK: liveins: $q0, $q1, $q2, $q3, $r0
7171 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
72 ; CHECK: BUNDLE implicit-def $vpr, implicit-def dead $q2, implicit-def $d4, implicit-def $s8, implicit-def $s9, implicit-def $d5, implicit-def $s10, implicit-def $s11, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q2, implicit $q3, implicit killed $q0 {
73 ; CHECK: MVE_VPST 1, implicit-def $vpr
74 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, internal renamable $vpr, undef renamable $q2
75 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, internal renamable $q2, 1, internal renamable $vpr, internal undef renamable $q2
76 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, renamable $q3, 1, internal renamable $vpr, killed renamable $q0
77 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, renamable $q3, 1, internal renamable $vpr, internal undef renamable $q0
72 ; CHECK: BUNDLE implicit-def dead $q2, implicit-def $d4, implicit-def $s8, implicit-def $s9, implicit-def $d5, implicit-def $s10, implicit-def $s11, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit $vpr, implicit killed $q2, implicit $q3, implicit killed $q0 {
73 ; CHECK: MVE_VPST 1, implicit $vpr
74 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q2, renamable $q3, 1, renamable $vpr, undef renamable $q2
75 ; CHECK: renamable $q2 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, internal renamable $q2, 1, renamable $vpr, internal undef renamable $q2
76 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q2, renamable $q3, 1, renamable $vpr, killed renamable $q0
77 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q0, renamable $q3, 1, renamable $vpr, internal undef renamable $q0
7878 ; CHECK: }
79 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q0, implicit killed $q3, implicit killed $q1 {
80 ; CHECK: MVE_VPST 8, implicit-def $vpr
81 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q0, killed renamable $q3, 1, internal killed renamable $vpr, killed renamable $q1
79 ; CHECK: BUNDLE implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $vpr, implicit killed $q0, implicit killed $q3, implicit killed $q1 {
80 ; CHECK: MVE_VPST 8, implicit $vpr
81 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q0, killed renamable $q3, 1, killed renamable $vpr, killed renamable $q1
8282 ; CHECK: }
8383 ; CHECK: $q0 = MVE_VORR killed $q1, killed $q1, 0, $noreg, undef $q0
8484 ; CHECK: tBX_RET 14, $noreg, implicit $q0
6767 ; CHECK: liveins: $q0, $q1, $q2, $r0
6868 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
6969 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
70 ; CHECK: BUNDLE implicit-def $vpr, implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 4, implicit-def $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
73 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, internal renamable $q3, 1, internal renamable $vpr, undef renamable $q1
70 ; CHECK: BUNDLE implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit $vpr, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 4, implicit $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
73 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, internal renamable $q3, 1, renamable $vpr, undef renamable $q1
7474 ; CHECK: }
7575 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
76 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
77 ; CHECK: MVE_VPST 4, implicit-def $vpr
78 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
79 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, internal killed renamable $vpr, killed renamable $q0
76 ; CHECK: BUNDLE implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $vpr, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
77 ; CHECK: MVE_VPST 4, implicit $vpr
78 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
79 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, killed renamable $vpr, killed renamable $q0
8080 ; CHECK: }
8181 ; CHECK: tBX_RET 14, $noreg, implicit $q0
8282 $vpr = VMSR_P0 killed $r0, 14, $noreg
6767 ; CHECK: liveins: $q0, $q1, $q2, $r0, $r1
6868 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
6969 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
70 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 8, implicit-def $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal killed renamable $vpr, killed renamable $q3
70 ; CHECK: BUNDLE implicit-def $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit killed $vpr, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 8, implicit $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, killed renamable $vpr, killed renamable $q3
7373 ; CHECK: }
7474 ; CHECK: $vpr = VMSR_P0 killed $r1, 14, $noreg
75 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q3, implicit killed $q2, implicit killed $q0 {
76 ; CHECK: MVE_VPST 8, implicit-def $vpr
77 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q3, killed renamable $q2, 1, internal killed renamable $vpr, killed renamable $q0
75 ; CHECK: BUNDLE implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $vpr, implicit killed $q3, implicit killed $q2, implicit killed $q0 {
76 ; CHECK: MVE_VPST 8, implicit $vpr
77 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q3, killed renamable $q2, 1, killed renamable $vpr, killed renamable $q0
7878 ; CHECK: }
7979 ; CHECK: tBX_RET 14, $noreg, implicit $q0
8080 $vpr = VMSR_P0 killed $r0, 14, $noreg
6868 ; CHECK: liveins: $q0, $q1, $q2, $r0
6969 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
7070 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
71 ; CHECK: BUNDLE implicit-def $vpr, implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q1, implicit $q2, implicit killed $q3 {
72 ; CHECK: MVE_VPST 4, implicit-def $vpr
73 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
74 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, internal renamable $q3, 1, internal renamable $vpr, undef renamable $q1
71 ; CHECK: BUNDLE implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit $vpr, implicit killed $q1, implicit $q2, implicit killed $q3 {
72 ; CHECK: MVE_VPST 4, implicit $vpr
73 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
74 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, internal renamable $q3, 1, renamable $vpr, undef renamable $q1
7575 ; CHECK: }
7676 ; CHECK: bb.1.bb2:
7777 ; CHECK: liveins: $q0, $q1, $q2, $q3, $vpr
78 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
79 ; CHECK: MVE_VPST 4, implicit-def $vpr
80 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
81 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, internal killed renamable $vpr, killed renamable $q0
78 ; CHECK: BUNDLE implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $vpr, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
79 ; CHECK: MVE_VPST 4, implicit $vpr
80 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
81 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, killed renamable $vpr, killed renamable $q0
8282 ; CHECK: }
8383 ; CHECK: tBX_RET 14, $noreg, implicit $q0
8484 bb.0.entry:
6767 ; CHECK: liveins: $q0, $q1, $q2, $r0
6868 ; CHECK: $vpr = VMSR_P0 killed $r0, 14, $noreg
6969 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
70 ; CHECK: BUNDLE implicit-def $vpr, implicit-def $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 8, implicit-def $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
70 ; CHECK: BUNDLE implicit-def $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit $vpr, implicit killed $q1, implicit $q2, implicit killed $q3 {
71 ; CHECK: MVE_VPST 8, implicit $vpr
72 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
7373 ; CHECK: }
7474 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
75 ; CHECK: BUNDLE implicit-def $vpr, implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit killed $q3, implicit undef $q1 {
76 ; CHECK: MVE_VPST 8, implicit-def $vpr
77 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q3, renamable $q3, 1, internal renamable $vpr, undef renamable $q1
75 ; CHECK: BUNDLE implicit-def $q1, implicit-def $d2, implicit-def $s4, implicit-def $s5, implicit-def $d3, implicit-def $s6, implicit-def $s7, implicit $vpr, implicit killed $q3, implicit undef $q1 {
76 ; CHECK: MVE_VPST 8, implicit $vpr
77 ; CHECK: renamable $q1 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q3, renamable $q3, 1, renamable $vpr, undef renamable $q1
7878 ; CHECK: }
7979 ; CHECK: $q3 = MVE_VORR $q0, $q0, 0, $noreg, undef $q3
80 ; CHECK: BUNDLE implicit-def dead $vpr, implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
81 ; CHECK: MVE_VPST 4, implicit-def $vpr
82 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, internal renamable $vpr, killed renamable $q3
83 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, internal killed renamable $vpr, killed renamable $q0
80 ; CHECK: BUNDLE implicit-def dead $q3, implicit-def $d6, implicit-def $s12, implicit-def $s13, implicit-def $d7, implicit-def $s14, implicit-def $s15, implicit-def $q0, implicit-def $d0, implicit-def $s0, implicit-def $s1, implicit-def $d1, implicit-def $s2, implicit-def $s3, implicit killed $vpr, implicit killed $q1, implicit killed $q2, implicit killed $q3, implicit killed $q0 {
81 ; CHECK: MVE_VPST 4, implicit $vpr
82 ; CHECK: renamable $q3 = nnan ninf nsz MVE_VMINNMf32 killed renamable $q1, renamable $q2, 1, renamable $vpr, killed renamable $q3
83 ; CHECK: renamable $q0 = nnan ninf nsz MVE_VMINNMf32 internal killed renamable $q3, killed renamable $q2, 1, killed renamable $vpr, killed renamable $q0
8484 ; CHECK: }
8585 ; CHECK: tBX_RET 14, $noreg, implicit $q0
8686 $vpr = VMSR_P0 killed $r0, 14, $noreg
6565 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr
6666 ; CHECK: }
6767 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
68 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $q2, implicit $zr {
69 ; CHECK: MVE_VPST 8, implicit-def $vpr
70 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
68 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {
69 ; CHECK: MVE_VPST 8, implicit $vpr
70 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
7171 ; CHECK: }
7272 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
7373 ; CHECK: tBX_RET 14, $noreg, implicit $q0
9999 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
100100 ; CHECK: bb.1.bb2:
101101 ; CHECK: liveins: $q0, $q1, $q2, $vpr
102 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $q2, implicit $zr {
103 ; CHECK: MVE_VPST 8, implicit-def $vpr
104 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
102 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {
103 ; CHECK: MVE_VPST 8, implicit $vpr
104 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
105105 ; CHECK: }
106106 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
107107 ; CHECK: tBX_RET 14, $noreg, implicit $q0
140140 ; CHECK: }
141141 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
142142 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
143 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $q2, implicit $zr {
144 ; CHECK: MVE_VPST 8, implicit-def $vpr
145 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
143 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {
144 ; CHECK: MVE_VPST 8, implicit $vpr
145 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
146146 ; CHECK: }
147147 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
148148 ; CHECK: tBX_RET 14, $noreg, implicit $q0
178178 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
179179 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
180180 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
181 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $q2, implicit $zr {
182 ; CHECK: MVE_VPST 8, implicit-def $vpr
181 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {
182 ; CHECK: MVE_VPST 8, implicit $vpr
183 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
184 ; CHECK: }
185 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
186 ; CHECK: tBX_RET 14, $noreg, implicit $q0
187 renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
188 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
189 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
190 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
191 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
192 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
193 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
194 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
195 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
196 tBX_RET 14, $noreg, implicit $q0
197
198 ...
199 ---
200 name: vpnot_first
201 alignment: 4
202 tracksRegLiveness: true
203 liveins:
204 - { reg: '$q0', virtual-reg: '' }
205 - { reg: '$q1', virtual-reg: '' }
206 - { reg: '$q2', virtual-reg: '' }
207 body: |
208 bb.0.entry:
209 liveins: $q0, $q1, $q2
210
211 ; CHECK-LABEL: name: vpnot_first
212 ; CHECK: liveins: $q0, $q1, $q2
213 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
214 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
215 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit $q1, implicit $zr, implicit killed $q2 {
216 ; CHECK: MVE_VPST 4, implicit $vpr
217 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
183218 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
184219 ; CHECK: }
185220 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
186221 ; CHECK: tBX_RET 14, $noreg, implicit $q0
187222 renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
188 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
189 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
190 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
191 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
192 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
193 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
194 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
195 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
196 tBX_RET 14, $noreg, implicit $q0
197
198 ...
199 ---
200 name: vpnot_first
201 alignment: 4
202 tracksRegLiveness: true
203 liveins:
204 - { reg: '$q0', virtual-reg: '' }
205 - { reg: '$q1', virtual-reg: '' }
206 - { reg: '$q2', virtual-reg: '' }
207 body: |
208 bb.0.entry:
209 liveins: $q0, $q1, $q2
210
211 ; CHECK-LABEL: name: vpnot_first
223 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
224 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
225 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
226 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
227 tBX_RET 14, $noreg, implicit $q0
228
229 ...
230 ---
231 name: vpnot_many
232 alignment: 4
233 tracksRegLiveness: true
234 liveins:
235 - { reg: '$q0', virtual-reg: '' }
236 - { reg: '$q1', virtual-reg: '' }
237 - { reg: '$q2', virtual-reg: '' }
238 body: |
239 bb.0.entry:
240 liveins: $q0, $q1, $q2
241
242 ; CHECK-LABEL: name: vpnot_many
212243 ; CHECK: liveins: $q0, $q1, $q2
213244 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
214245 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
215 ; CHECK: BUNDLE implicit-def $vpr, implicit $q1, implicit $zr, implicit killed $q2 {
216 ; CHECK: MVE_VPST 4, implicit-def $vpr
217 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr
218 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
219 ; CHECK: }
220 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
221 ; CHECK: tBX_RET 14, $noreg, implicit $q0
222 renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
223 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
224 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
225 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
226 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
227 tBX_RET 14, $noreg, implicit $q0
228
229 ...
230 ---
231 name: vpnot_many
232 alignment: 4
233 tracksRegLiveness: true
234 liveins:
235 - { reg: '$q0', virtual-reg: '' }
236 - { reg: '$q1', virtual-reg: '' }
237 - { reg: '$q2', virtual-reg: '' }
238 body: |
239 bb.0.entry:
240 liveins: $q0, $q1, $q2
241
242 ; CHECK-LABEL: name: vpnot_many
243 ; CHECK: liveins: $q0, $q1, $q2
244 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
245 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
246 ; CHECK: BUNDLE implicit-def $vpr, implicit $q1, implicit $zr {
247 ; CHECK: MVE_VPST 8, implicit-def $vpr
248 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, internal killed renamable $vpr
249 ; CHECK: }
250 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
251 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $q2, implicit $zr {
252 ; CHECK: MVE_VPST 8, implicit-def $vpr
253 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, internal killed renamable $vpr
254 ; CHECK: }
255 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
256 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
257 ; CHECK: tBX_RET 14, $noreg, implicit $q0
258 renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
259 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
260 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
261 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
262 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
263 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
264 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
265 tBX_RET 14, $noreg, implicit $q0
266
267 ...
246 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit $q1, implicit $zr {
247 ; CHECK: MVE_VPST 8, implicit $vpr
248 ; CHECK: renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
249 ; CHECK: }
250 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
251 ; CHECK: BUNDLE implicit-def $vpr, implicit killed $vpr, implicit killed $q2, implicit $zr {
252 ; CHECK: MVE_VPST 8, implicit $vpr
253 ; CHECK: renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
254 ; CHECK: }
255 ; CHECK: renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
256 ; CHECK: renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
257 ; CHECK: tBX_RET 14, $noreg, implicit $q0
258 renamable $vpr = MVE_VCMPs32r renamable $q0, $zr, 11, 0, $noreg
259 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
260 renamable $vpr = MVE_VCMPs32r renamable $q1, $zr, 12, 1, killed renamable $vpr
261 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
262 renamable $vpr = MVE_VCMPi32r killed renamable $q2, $zr, 0, 1, killed renamable $vpr
263 renamable $vpr = MVE_VPNOT killed renamable $vpr, 0, $noreg
264 renamable $q0 = MVE_VPSEL killed renamable $q0, killed renamable $q1, 0, killed renamable $vpr
265 tBX_RET 14, $noreg, implicit $q0
266
267 ...