[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / mve-pred-not.ll
blob51b5cf528baefcea575f345df2dd9b7f128d54bc
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs %s -o - | FileCheck %s
4 define arm_aapcs_vfpcc <4 x i32> @cmpeqz_v4i1(<4 x i32> %a, <4 x i32> %b) {
5 ; CHECK-LABEL: cmpeqz_v4i1:
6 ; CHECK:       @ %bb.0: @ %entry
7 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
8 ; CHECK-NEXT:    vpsel q0, q1, q0
9 ; CHECK-NEXT:    bx lr
10 entry:
11   %c1 = icmp eq <4 x i32> %a, zeroinitializer
12   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
13   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
14   ret <4 x i32> %s
17 define arm_aapcs_vfpcc <4 x i32> @cmpnez_v4i1(<4 x i32> %a, <4 x i32> %b) {
18 ; CHECK-LABEL: cmpnez_v4i1:
19 ; CHECK:       @ %bb.0: @ %entry
20 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
21 ; CHECK-NEXT:    vpsel q0, q1, q0
22 ; CHECK-NEXT:    bx lr
23 entry:
24   %c1 = icmp eq <4 x i32> %a, zeroinitializer
25   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
26   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
27   ret <4 x i32> %s
30 define arm_aapcs_vfpcc <4 x i32> @cmpsltz_v4i1(<4 x i32> %a, <4 x i32> %b) {
31 ; CHECK-LABEL: cmpsltz_v4i1:
32 ; CHECK:       @ %bb.0: @ %entry
33 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
34 ; CHECK-NEXT:    vpsel q0, q1, q0
35 ; CHECK-NEXT:    bx lr
36 entry:
37   %c1 = icmp eq <4 x i32> %a, zeroinitializer
38   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
39   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
40   ret <4 x i32> %s
43 define arm_aapcs_vfpcc <4 x i32> @cmpsgtz_v4i1(<4 x i32> %a, <4 x i32> %b) {
44 ; CHECK-LABEL: cmpsgtz_v4i1:
45 ; CHECK:       @ %bb.0: @ %entry
46 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
47 ; CHECK-NEXT:    vpsel q0, q1, q0
48 ; CHECK-NEXT:    bx lr
49 entry:
50   %c1 = icmp eq <4 x i32> %a, zeroinitializer
51   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
52   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
53   ret <4 x i32> %s
56 define arm_aapcs_vfpcc <4 x i32> @cmpslez_v4i1(<4 x i32> %a, <4 x i32> %b) {
57 ; CHECK-LABEL: cmpslez_v4i1:
58 ; CHECK:       @ %bb.0: @ %entry
59 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
60 ; CHECK-NEXT:    vpsel q0, q1, q0
61 ; CHECK-NEXT:    bx lr
62 entry:
63   %c1 = icmp eq <4 x i32> %a, zeroinitializer
64   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
65   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
66   ret <4 x i32> %s
69 define arm_aapcs_vfpcc <4 x i32> @cmpsgez_v4i1(<4 x i32> %a, <4 x i32> %b) {
70 ; CHECK-LABEL: cmpsgez_v4i1:
71 ; CHECK:       @ %bb.0: @ %entry
72 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
73 ; CHECK-NEXT:    vpsel q0, q1, q0
74 ; CHECK-NEXT:    bx lr
75 entry:
76   %c1 = icmp eq <4 x i32> %a, zeroinitializer
77   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
78   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
79   ret <4 x i32> %s
82 define arm_aapcs_vfpcc <4 x i32> @cmpultz_v4i1(<4 x i32> %a, <4 x i32> %b) {
83 ; CHECK-LABEL: cmpultz_v4i1:
84 ; CHECK:       @ %bb.0: @ %entry
85 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
86 ; CHECK-NEXT:    vpsel q0, q1, q0
87 ; CHECK-NEXT:    bx lr
88 entry:
89   %c1 = icmp eq <4 x i32> %a, zeroinitializer
90   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
91   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
92   ret <4 x i32> %s
95 define arm_aapcs_vfpcc <4 x i32> @cmpugtz_v4i1(<4 x i32> %a, <4 x i32> %b) {
96 ; CHECK-LABEL: cmpugtz_v4i1:
97 ; CHECK:       @ %bb.0: @ %entry
98 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
99 ; CHECK-NEXT:    vpsel q0, q1, q0
100 ; CHECK-NEXT:    bx lr
101 entry:
102   %c1 = icmp eq <4 x i32> %a, zeroinitializer
103   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
104   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
105   ret <4 x i32> %s
108 define arm_aapcs_vfpcc <4 x i32> @cmpulez_v4i1(<4 x i32> %a, <4 x i32> %b) {
109 ; CHECK-LABEL: cmpulez_v4i1:
110 ; CHECK:       @ %bb.0: @ %entry
111 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
112 ; CHECK-NEXT:    vpsel q0, q1, q0
113 ; CHECK-NEXT:    bx lr
114 entry:
115   %c1 = icmp eq <4 x i32> %a, zeroinitializer
116   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
117   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
118   ret <4 x i32> %s
121 define arm_aapcs_vfpcc <4 x i32> @cmpugez_v4i1(<4 x i32> %a, <4 x i32> %b) {
122 ; CHECK-LABEL: cmpugez_v4i1:
123 ; CHECK:       @ %bb.0: @ %entry
124 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
125 ; CHECK-NEXT:    vpsel q0, q1, q0
126 ; CHECK-NEXT:    bx lr
127 entry:
128   %c1 = icmp eq <4 x i32> %a, zeroinitializer
129   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
130   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
131   ret <4 x i32> %s
136 define arm_aapcs_vfpcc <4 x i32> @cmpeq_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
137 ; CHECK-LABEL: cmpeq_v4i1:
138 ; CHECK:       @ %bb.0: @ %entry
139 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
140 ; CHECK-NEXT:    vpsel q0, q1, q0
141 ; CHECK-NEXT:    bx lr
142 entry:
143   %c1 = icmp eq <4 x i32> %a, zeroinitializer
144   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
145   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
146   ret <4 x i32> %s
149 define arm_aapcs_vfpcc <4 x i32> @cmpne_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
150 ; CHECK-LABEL: cmpne_v4i1:
151 ; CHECK:       @ %bb.0: @ %entry
152 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
153 ; CHECK-NEXT:    vpsel q0, q1, q0
154 ; CHECK-NEXT:    bx lr
155 entry:
156   %c1 = icmp eq <4 x i32> %a, zeroinitializer
157   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
158   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
159   ret <4 x i32> %s
162 define arm_aapcs_vfpcc <4 x i32> @cmpslt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
163 ; CHECK-LABEL: cmpslt_v4i1:
164 ; CHECK:       @ %bb.0: @ %entry
165 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
166 ; CHECK-NEXT:    vpsel q0, q1, q0
167 ; CHECK-NEXT:    bx lr
168 entry:
169   %c1 = icmp eq <4 x i32> %a, zeroinitializer
170   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
171   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
172   ret <4 x i32> %s
175 define arm_aapcs_vfpcc <4 x i32> @cmpsgt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
176 ; CHECK-LABEL: cmpsgt_v4i1:
177 ; CHECK:       @ %bb.0: @ %entry
178 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
179 ; CHECK-NEXT:    vpsel q0, q1, q0
180 ; CHECK-NEXT:    bx lr
181 entry:
182   %c1 = icmp eq <4 x i32> %a, zeroinitializer
183   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
184   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
185   ret <4 x i32> %s
188 define arm_aapcs_vfpcc <4 x i32> @cmpsle_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
189 ; CHECK-LABEL: cmpsle_v4i1:
190 ; CHECK:       @ %bb.0: @ %entry
191 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
192 ; CHECK-NEXT:    vpsel q0, q1, q0
193 ; CHECK-NEXT:    bx lr
194 entry:
195   %c1 = icmp eq <4 x i32> %a, zeroinitializer
196   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
197   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
198   ret <4 x i32> %s
201 define arm_aapcs_vfpcc <4 x i32> @cmpsge_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
202 ; CHECK-LABEL: cmpsge_v4i1:
203 ; CHECK:       @ %bb.0: @ %entry
204 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
205 ; CHECK-NEXT:    vpsel q0, q1, q0
206 ; CHECK-NEXT:    bx lr
207 entry:
208   %c1 = icmp eq <4 x i32> %a, zeroinitializer
209   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
210   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
211   ret <4 x i32> %s
214 define arm_aapcs_vfpcc <4 x i32> @cmpult_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
215 ; CHECK-LABEL: cmpult_v4i1:
216 ; CHECK:       @ %bb.0: @ %entry
217 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
218 ; CHECK-NEXT:    vpsel q0, q1, q0
219 ; CHECK-NEXT:    bx lr
220 entry:
221   %c1 = icmp eq <4 x i32> %a, zeroinitializer
222   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
223   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
224   ret <4 x i32> %s
227 define arm_aapcs_vfpcc <4 x i32> @cmpugt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
228 ; CHECK-LABEL: cmpugt_v4i1:
229 ; CHECK:       @ %bb.0: @ %entry
230 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
231 ; CHECK-NEXT:    vpsel q0, q1, q0
232 ; CHECK-NEXT:    bx lr
233 entry:
234   %c1 = icmp eq <4 x i32> %a, zeroinitializer
235   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
236   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
237   ret <4 x i32> %s
240 define arm_aapcs_vfpcc <4 x i32> @cmpule_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
241 ; CHECK-LABEL: cmpule_v4i1:
242 ; CHECK:       @ %bb.0: @ %entry
243 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
244 ; CHECK-NEXT:    vpsel q0, q1, q0
245 ; CHECK-NEXT:    bx lr
246 entry:
247   %c1 = icmp eq <4 x i32> %a, zeroinitializer
248   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
249   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
250   ret <4 x i32> %s
253 define arm_aapcs_vfpcc <4 x i32> @cmpuge_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
254 ; CHECK-LABEL: cmpuge_v4i1:
255 ; CHECK:       @ %bb.0: @ %entry
256 ; CHECK-NEXT:    vcmp.i32 eq, q0, zr
257 ; CHECK-NEXT:    vpsel q0, q1, q0
258 ; CHECK-NEXT:    bx lr
259 entry:
260   %c1 = icmp eq <4 x i32> %a, zeroinitializer
261   %o = xor <4 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1>
262   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
263   ret <4 x i32> %s
269 define arm_aapcs_vfpcc <8 x i16> @cmpeqz_v8i1(<8 x i16> %a, <8 x i16> %b) {
270 ; CHECK-LABEL: cmpeqz_v8i1:
271 ; CHECK:       @ %bb.0: @ %entry
272 ; CHECK-NEXT:    vcmp.i16 eq, q0, zr
273 ; CHECK-NEXT:    vpsel q0, q1, q0
274 ; CHECK-NEXT:    bx lr
275 entry:
276   %c1 = icmp eq <8 x i16> %a, zeroinitializer
277   %o = xor <8 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
278   %s = select <8 x i1> %o, <8 x i16> %a, <8 x i16> %b
279   ret <8 x i16> %s
282 define arm_aapcs_vfpcc <8 x i16> @cmpeq_v8i1(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {
283 ; CHECK-LABEL: cmpeq_v8i1:
284 ; CHECK:       @ %bb.0: @ %entry
285 ; CHECK-NEXT:    vcmp.i16 eq, q0, zr
286 ; CHECK-NEXT:    vpsel q0, q1, q0
287 ; CHECK-NEXT:    bx lr
288 entry:
289   %c1 = icmp eq <8 x i16> %a, zeroinitializer
290   %o = xor <8 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
291   %s = select <8 x i1> %o, <8 x i16> %a, <8 x i16> %b
292   ret <8 x i16> %s
296 define arm_aapcs_vfpcc <16 x i8> @cmpeqz_v16i1(<16 x i8> %a, <16 x i8> %b) {
297 ; CHECK-LABEL: cmpeqz_v16i1:
298 ; CHECK:       @ %bb.0: @ %entry
299 ; CHECK-NEXT:    vcmp.i8 eq, q0, zr
300 ; CHECK-NEXT:    vpsel q0, q1, q0
301 ; CHECK-NEXT:    bx lr
302 entry:
303   %c1 = icmp eq <16 x i8> %a, zeroinitializer
304   %o = xor <16 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
305   %s = select <16 x i1> %o, <16 x i8> %a, <16 x i8> %b
306   ret <16 x i8> %s
309 define arm_aapcs_vfpcc <16 x i8> @cmpeq_v16i1(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {
310 ; CHECK-LABEL: cmpeq_v16i1:
311 ; CHECK:       @ %bb.0: @ %entry
312 ; CHECK-NEXT:    vcmp.i8 eq, q0, zr
313 ; CHECK-NEXT:    vpsel q0, q1, q0
314 ; CHECK-NEXT:    bx lr
315 entry:
316   %c1 = icmp eq <16 x i8> %a, zeroinitializer
317   %o = xor <16 x i1> %c1, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1>
318   %s = select <16 x i1> %o, <16 x i8> %a, <16 x i8> %b
319   ret <16 x i8> %s
323 define arm_aapcs_vfpcc <2 x i64> @cmpeqz_v2i1(<2 x i64> %a, <2 x i64> %b) {
324 ; CHECK-LABEL: cmpeqz_v2i1:
325 ; CHECK:       @ %bb.0: @ %entry
326 ; CHECK-NEXT:    vmov r0, r1, d1
327 ; CHECK-NEXT:    orrs r0, r1
328 ; CHECK-NEXT:    vmov r1, r2, d0
329 ; CHECK-NEXT:    cset r0, eq
330 ; CHECK-NEXT:    cmp r0, #0
331 ; CHECK-NEXT:    csetm r0, ne
332 ; CHECK-NEXT:    orrs r1, r2
333 ; CHECK-NEXT:    cset r1, eq
334 ; CHECK-NEXT:    cmp r1, #0
335 ; CHECK-NEXT:    csetm r1, ne
336 ; CHECK-NEXT:    vmov q2[2], q2[0], r1, r0
337 ; CHECK-NEXT:    vmov q2[3], q2[1], r1, r0
338 ; CHECK-NEXT:    vbic q0, q0, q2
339 ; CHECK-NEXT:    vand q1, q1, q2
340 ; CHECK-NEXT:    vorr q0, q1, q0
341 ; CHECK-NEXT:    bx lr
342 entry:
343   %c1 = icmp eq <2 x i64> %a, zeroinitializer
344   %o = xor <2 x i1> %c1, <i1 -1, i1 -1>
345   %s = select <2 x i1> %o, <2 x i64> %a, <2 x i64> %b
346   ret <2 x i64> %s
349 define arm_aapcs_vfpcc <2 x i64> @cmpeq_v2i1(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {
350 ; CHECK-LABEL: cmpeq_v2i1:
351 ; CHECK:       @ %bb.0: @ %entry
352 ; CHECK-NEXT:    vmov r0, r1, d1
353 ; CHECK-NEXT:    orrs r0, r1
354 ; CHECK-NEXT:    vmov r1, r2, d0
355 ; CHECK-NEXT:    cset r0, eq
356 ; CHECK-NEXT:    cmp r0, #0
357 ; CHECK-NEXT:    csetm r0, ne
358 ; CHECK-NEXT:    orrs r1, r2
359 ; CHECK-NEXT:    cset r1, eq
360 ; CHECK-NEXT:    cmp r1, #0
361 ; CHECK-NEXT:    csetm r1, ne
362 ; CHECK-NEXT:    vmov q2[2], q2[0], r1, r0
363 ; CHECK-NEXT:    vmov q2[3], q2[1], r1, r0
364 ; CHECK-NEXT:    vbic q0, q0, q2
365 ; CHECK-NEXT:    vand q1, q1, q2
366 ; CHECK-NEXT:    vorr q0, q1, q0
367 ; CHECK-NEXT:    bx lr
368 entry:
369   %c1 = icmp eq <2 x i64> %a, zeroinitializer
370   %o = xor <2 x i1> %c1, <i1 -1, i1 -1>
371   %s = select <2 x i1> %o, <2 x i64> %a, <2 x i64> %b
372   ret <2 x i64> %s
375 define arm_aapcs_vfpcc <4 x i32> @vpnot_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
376 ; CHECK-LABEL: vpnot_v4i1:
377 ; CHECK:       @ %bb.0: @ %entry
378 ; CHECK-NEXT:    vpte.s32 lt, q0, zr
379 ; CHECK-NEXT:    vcmpt.s32 gt, q1, zr
380 ; CHECK-NEXT:    vcmpe.i32 eq, q2, zr
381 ; CHECK-NEXT:    vpsel q0, q0, q1
382 ; CHECK-NEXT:    bx lr
383 entry:
384   %c1 = icmp slt <4 x i32> %a, zeroinitializer
385   %c2 = icmp sgt <4 x i32> %b, zeroinitializer
386   %c3 = icmp eq <4 x i32> %c, zeroinitializer
387   %o1 = and <4 x i1> %c1, %c2
388   %o2 = xor <4 x i1> %o1, <i1 -1, i1 -1, i1 -1, i1 -1>
389   %o = and <4 x i1> %c3, %o2
390   %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
391   ret <4 x i32> %s
394 declare <4 x i32> @llvm.arm.mve.max.predicated.v4i32.v4i1(<4 x i32>, <4 x i32>, i32, <4 x i1>, <4 x i32>)
395 declare <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32>, <4 x i32>, <4 x i1>, <4 x i32>)
397 define arm_aapcs_vfpcc <4 x i32> @vpttet_v4i1(<4 x i32> %x, <4 x i32> %y, <4 x i32> %z) {
398 ; CHECK-LABEL: vpttet_v4i1:
399 ; CHECK:       @ %bb.0: @ %entry
400 ; CHECK-NEXT:    vpttet.s32 ge, q0, q2
401 ; CHECK-NEXT:    vmovt q0, q2
402 ; CHECK-NEXT:    vmovt q0, q2
403 ; CHECK-NEXT:    vmove q0, q2
404 ; CHECK-NEXT:    vmovt q0, q2
405 ; CHECK-NEXT:    bx lr
406 entry:
407   %0 = icmp sge <4 x i32> %x, %z
408   %1 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %0, <4 x i32> %x)
409   %2 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %0, <4 x i32> %1)
410   %3 = xor <4 x i1> %0, <i1 true, i1 true, i1 true, i1 true>
411   %4 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %3, <4 x i32> %2)
412   %5 = xor <4 x i1> %3, <i1 true, i1 true, i1 true, i1 true>
413   %6 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %5, <4 x i32> %4)
414   ret <4 x i32> %6
417 define arm_aapcs_vfpcc <4 x i32> @vpttee_v4i1(<4 x i32> %x, <4 x i32> %y, <4 x i32> %z) {
418 ; CHECK-LABEL: vpttee_v4i1:
419 ; CHECK:       @ %bb.0: @ %entry
420 ; CHECK-NEXT:    vmov q3, q2
421 ; CHECK-NEXT:    vpttee.s32 ge, q0, q2
422 ; CHECK-NEXT:    vmaxt.s32 q3, q0, q1
423 ; CHECK-NEXT:    vcmpt.s32 gt, q0, zr
424 ; CHECK-NEXT:    vmove q3, q2
425 ; CHECK-NEXT:    vmove q3, q2
426 ; CHECK-NEXT:    vmov q0, q3
427 ; CHECK-NEXT:    bx lr
428 entry:
429   %0 = icmp sge <4 x i32> %x, %z
430   %1 = tail call <4 x i32> @llvm.arm.mve.max.predicated.v4i32.v4i1(<4 x i32> %x, <4 x i32> %y, i32 0, <4 x i1> %0, <4 x i32> %z)
431   %2 = icmp sgt <4 x i32> %x, zeroinitializer
432   %3 = and <4 x i1> %0, %2
433   %4 = xor <4 x i1> %3, <i1 true, i1 true, i1 true, i1 true>
434   %5 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %4, <4 x i32> %1)
435   %6 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %4, <4 x i32> %5)
436   ret <4 x i32> %6
439 define arm_aapcs_vfpcc <4 x i32> @vpttee2_v4i1(<4 x i32> %x, <4 x i32> %y, <4 x i32> %z) {
440 ; CHECK-LABEL: vpttee2_v4i1:
441 ; CHECK:       @ %bb.0: @ %entry
442 ; CHECK-NEXT:    vmov q3, q2
443 ; CHECK-NEXT:    vpttee.s32 ge, q0, q2
444 ; CHECK-NEXT:    vmaxt.s32 q3, q0, q1
445 ; CHECK-NEXT:    vcmpt.s32 gt, q0, zr
446 ; CHECK-NEXT:    vcmpe.s32 gt, q1, zr
447 ; CHECK-NEXT:    vmove q3, q2
448 ; CHECK-NEXT:    vmov q0, q3
449 ; CHECK-NEXT:    bx lr
450 entry:
451   %0 = icmp sge <4 x i32> %x, %z
452   %1 = tail call <4 x i32> @llvm.arm.mve.max.predicated.v4i32.v4i1(<4 x i32> %x, <4 x i32> %y, i32 0, <4 x i1> %0, <4 x i32> %z)
453   %2 = icmp sgt <4 x i32> %x, zeroinitializer
454   %3 = and <4 x i1> %0, %2
455   %4 = xor <4 x i1> %3, <i1 true, i1 true, i1 true, i1 true>
456   %5 = icmp sgt <4 x i32> %y, zeroinitializer
457   %6 = and <4 x i1> %5, %4
458   %7 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %6, <4 x i32> %1)
459   ret <4 x i32> %7
462 define arm_aapcs_vfpcc <4 x i32> @vpttte_v4i1(<4 x i32> %x, <4 x i32> %y, <4 x i32> %z) {
463 ; CHECK-LABEL: vpttte_v4i1:
464 ; CHECK:       @ %bb.0: @ %entry
465 ; CHECK-NEXT:    vmov q3, q2
466 ; CHECK-NEXT:    vpttte.s32 ge, q0, q2
467 ; CHECK-NEXT:    vmaxt.s32 q3, q0, q1
468 ; CHECK-NEXT:    vcmpt.s32 gt, q0, zr
469 ; CHECK-NEXT:    vmovt q3, q2
470 ; CHECK-NEXT:    vmove q3, q2
471 ; CHECK-NEXT:    vmov q0, q3
472 ; CHECK-NEXT:    bx lr
473 entry:
474   %0 = icmp sge <4 x i32> %x, %z
475   %1 = tail call <4 x i32> @llvm.arm.mve.max.predicated.v4i32.v4i1(<4 x i32> %x, <4 x i32> %y, i32 0, <4 x i1> %0, <4 x i32> %z)
476   %2 = icmp sgt <4 x i32> %x, zeroinitializer
477   %3 = and <4 x i1> %0, %2
478   %4 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %3, <4 x i32> %1)
479   %5 = xor <4 x i1> %3, <i1 true, i1 true, i1 true, i1 true>
480   %6 = tail call <4 x i32> @llvm.arm.mve.orr.predicated.v4i32.v4i1(<4 x i32> %z, <4 x i32> %z, <4 x i1> %5, <4 x i32> %4)
481   ret <4 x i32> %6