1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main-arm-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 ne, q0, zr
9 ; CHECK-NEXT: vcmpt.i32 ne, q1, zr
11 ; CHECK-NEXT: vpsel q0, q0, q1
14 %c1 = icmp eq <4 x i32> %a, zeroinitializer
15 %c2 = icmp eq <4 x i32> %b, zeroinitializer
16 %o = or <4 x i1> %c1, %c2
17 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
21 define arm_aapcs_vfpcc <4 x i32> @cmpnez_v4i1(<4 x i32> %a, <4 x i32> %b) {
22 ; CHECK-LABEL: cmpnez_v4i1:
23 ; CHECK: @ %bb.0: @ %entry
24 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
26 ; CHECK-NEXT: vcmpt.i32 eq, q1, zr
28 ; CHECK-NEXT: vpsel q0, q0, q1
31 %c1 = icmp eq <4 x i32> %a, zeroinitializer
32 %c2 = icmp ne <4 x i32> %b, zeroinitializer
33 %o = or <4 x i1> %c1, %c2
34 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
38 define arm_aapcs_vfpcc <4 x i32> @cmpsltz_v4i1(<4 x i32> %a, <4 x i32> %b) {
39 ; CHECK-LABEL: cmpsltz_v4i1:
40 ; CHECK: @ %bb.0: @ %entry
41 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
43 ; CHECK-NEXT: vcmpt.s32 ge, q1, zr
45 ; CHECK-NEXT: vpsel q0, q0, q1
48 %c1 = icmp eq <4 x i32> %a, zeroinitializer
49 %c2 = icmp slt <4 x i32> %b, zeroinitializer
50 %o = or <4 x i1> %c1, %c2
51 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
55 define arm_aapcs_vfpcc <4 x i32> @cmpsgtz_v4i1(<4 x i32> %a, <4 x i32> %b) {
56 ; CHECK-LABEL: cmpsgtz_v4i1:
57 ; CHECK: @ %bb.0: @ %entry
58 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
60 ; CHECK-NEXT: vcmpt.s32 le, q1, zr
62 ; CHECK-NEXT: vpsel q0, q0, q1
65 %c1 = icmp eq <4 x i32> %a, zeroinitializer
66 %c2 = icmp sgt <4 x i32> %b, zeroinitializer
67 %o = or <4 x i1> %c1, %c2
68 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
72 define arm_aapcs_vfpcc <4 x i32> @cmpslez_v4i1(<4 x i32> %a, <4 x i32> %b) {
73 ; CHECK-LABEL: cmpslez_v4i1:
74 ; CHECK: @ %bb.0: @ %entry
75 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
77 ; CHECK-NEXT: vcmpt.s32 gt, q1, zr
79 ; CHECK-NEXT: vpsel q0, q0, q1
82 %c1 = icmp eq <4 x i32> %a, zeroinitializer
83 %c2 = icmp sle <4 x i32> %b, zeroinitializer
84 %o = or <4 x i1> %c1, %c2
85 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
89 define arm_aapcs_vfpcc <4 x i32> @cmpsgez_v4i1(<4 x i32> %a, <4 x i32> %b) {
90 ; CHECK-LABEL: cmpsgez_v4i1:
91 ; CHECK: @ %bb.0: @ %entry
92 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
94 ; CHECK-NEXT: vcmpt.s32 lt, q1, zr
96 ; CHECK-NEXT: vpsel q0, q0, q1
99 %c1 = icmp eq <4 x i32> %a, zeroinitializer
100 %c2 = icmp sge <4 x i32> %b, zeroinitializer
101 %o = or <4 x i1> %c1, %c2
102 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
106 define arm_aapcs_vfpcc <4 x i32> @cmpultz_v4i1(<4 x i32> %a, <4 x i32> %b) {
107 ; CHECK-LABEL: cmpultz_v4i1:
108 ; CHECK: @ %bb.0: @ %entry
109 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
110 ; CHECK-NEXT: vpsel q0, q0, q1
113 %c1 = icmp eq <4 x i32> %a, zeroinitializer
114 %c2 = icmp ult <4 x i32> %b, zeroinitializer
115 %o = or <4 x i1> %c1, %c2
116 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
120 define arm_aapcs_vfpcc <4 x i32> @cmpugtz_v4i1(<4 x i32> %a, <4 x i32> %b) {
121 ; CHECK-LABEL: cmpugtz_v4i1:
122 ; CHECK: @ %bb.0: @ %entry
123 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
125 ; CHECK-NEXT: vcmpt.i32 eq, q1, zr
127 ; CHECK-NEXT: vpsel q0, q0, q1
130 %c1 = icmp eq <4 x i32> %a, zeroinitializer
131 %c2 = icmp ugt <4 x i32> %b, zeroinitializer
132 %o = or <4 x i1> %c1, %c2
133 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
137 define arm_aapcs_vfpcc <4 x i32> @cmpulez_v4i1(<4 x i32> %a, <4 x i32> %b) {
138 ; CHECK-LABEL: cmpulez_v4i1:
139 ; CHECK: @ %bb.0: @ %entry
140 ; CHECK-NEXT: vcmp.u32 cs, q1, zr
141 ; CHECK-NEXT: vmrs r0, p0
142 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
143 ; CHECK-NEXT: vmrs r1, p0
144 ; CHECK-NEXT: orrs r0, r1
145 ; CHECK-NEXT: vmsr p0, r0
146 ; CHECK-NEXT: vpsel q0, q0, q1
149 %c1 = icmp eq <4 x i32> %a, zeroinitializer
150 %c2 = icmp ule <4 x i32> %b, zeroinitializer
151 %o = or <4 x i1> %c1, %c2
152 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
156 define arm_aapcs_vfpcc <4 x i32> @cmpugez_v4i1(<4 x i32> %a, <4 x i32> %b) {
157 ; CHECK-LABEL: cmpugez_v4i1:
158 ; CHECK: @ %bb.0: @ %entry
161 %c1 = icmp eq <4 x i32> %a, zeroinitializer
162 %c2 = icmp uge <4 x i32> %b, zeroinitializer
163 %o = or <4 x i1> %c1, %c2
164 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
170 define arm_aapcs_vfpcc <4 x i32> @cmpeq_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
171 ; CHECK-LABEL: cmpeq_v4i1:
172 ; CHECK: @ %bb.0: @ %entry
173 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
175 ; CHECK-NEXT: vcmpt.i32 ne, q1, q2
177 ; CHECK-NEXT: vpsel q0, q0, q1
180 %c1 = icmp eq <4 x i32> %a, zeroinitializer
181 %c2 = icmp eq <4 x i32> %b, %c
182 %o = or <4 x i1> %c1, %c2
183 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
187 define arm_aapcs_vfpcc <4 x i32> @cmpne_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
188 ; CHECK-LABEL: cmpne_v4i1:
189 ; CHECK: @ %bb.0: @ %entry
190 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
192 ; CHECK-NEXT: vcmpt.i32 eq, q1, q2
194 ; CHECK-NEXT: vpsel q0, q0, q1
197 %c1 = icmp eq <4 x i32> %a, zeroinitializer
198 %c2 = icmp ne <4 x i32> %b, %c
199 %o = or <4 x i1> %c1, %c2
200 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
204 define arm_aapcs_vfpcc <4 x i32> @cmpslt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
205 ; CHECK-LABEL: cmpslt_v4i1:
206 ; CHECK: @ %bb.0: @ %entry
207 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
209 ; CHECK-NEXT: vcmpt.s32 le, q2, q1
211 ; CHECK-NEXT: vpsel q0, q0, q1
214 %c1 = icmp eq <4 x i32> %a, zeroinitializer
215 %c2 = icmp slt <4 x i32> %b, %c
216 %o = or <4 x i1> %c1, %c2
217 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
221 define arm_aapcs_vfpcc <4 x i32> @cmpsgt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
222 ; CHECK-LABEL: cmpsgt_v4i1:
223 ; CHECK: @ %bb.0: @ %entry
224 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
226 ; CHECK-NEXT: vcmpt.s32 le, q1, q2
228 ; CHECK-NEXT: vpsel q0, q0, q1
231 %c1 = icmp eq <4 x i32> %a, zeroinitializer
232 %c2 = icmp sgt <4 x i32> %b, %c
233 %o = or <4 x i1> %c1, %c2
234 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
238 define arm_aapcs_vfpcc <4 x i32> @cmpsle_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
239 ; CHECK-LABEL: cmpsle_v4i1:
240 ; CHECK: @ %bb.0: @ %entry
241 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
243 ; CHECK-NEXT: vcmpt.s32 lt, q2, q1
245 ; CHECK-NEXT: vpsel q0, q0, q1
248 %c1 = icmp eq <4 x i32> %a, zeroinitializer
249 %c2 = icmp sle <4 x i32> %b, %c
250 %o = or <4 x i1> %c1, %c2
251 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
255 define arm_aapcs_vfpcc <4 x i32> @cmpsge_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
256 ; CHECK-LABEL: cmpsge_v4i1:
257 ; CHECK: @ %bb.0: @ %entry
258 ; CHECK-NEXT: vcmp.i32 ne, q0, zr
260 ; CHECK-NEXT: vcmpt.s32 lt, q1, q2
262 ; CHECK-NEXT: vpsel q0, q0, q1
265 %c1 = icmp eq <4 x i32> %a, zeroinitializer
266 %c2 = icmp sge <4 x i32> %b, %c
267 %o = or <4 x i1> %c1, %c2
268 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
272 define arm_aapcs_vfpcc <4 x i32> @cmpult_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
273 ; CHECK-LABEL: cmpult_v4i1:
274 ; CHECK: @ %bb.0: @ %entry
275 ; CHECK-NEXT: vcmp.u32 hi, q2, q1
276 ; CHECK-NEXT: vmrs r0, p0
277 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
278 ; CHECK-NEXT: vmrs r1, p0
279 ; CHECK-NEXT: orrs r0, r1
280 ; CHECK-NEXT: vmsr p0, r0
281 ; CHECK-NEXT: vpsel q0, q0, q1
284 %c1 = icmp eq <4 x i32> %a, zeroinitializer
285 %c2 = icmp ult <4 x i32> %b, %c
286 %o = or <4 x i1> %c1, %c2
287 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
291 define arm_aapcs_vfpcc <4 x i32> @cmpugt_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
292 ; CHECK-LABEL: cmpugt_v4i1:
293 ; CHECK: @ %bb.0: @ %entry
294 ; CHECK-NEXT: vcmp.u32 hi, q1, q2
295 ; CHECK-NEXT: vmrs r0, p0
296 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
297 ; CHECK-NEXT: vmrs r1, p0
298 ; CHECK-NEXT: orrs r0, r1
299 ; CHECK-NEXT: vmsr p0, r0
300 ; CHECK-NEXT: vpsel q0, q0, q1
303 %c1 = icmp eq <4 x i32> %a, zeroinitializer
304 %c2 = icmp ugt <4 x i32> %b, %c
305 %o = or <4 x i1> %c1, %c2
306 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
310 define arm_aapcs_vfpcc <4 x i32> @cmpule_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
311 ; CHECK-LABEL: cmpule_v4i1:
312 ; CHECK: @ %bb.0: @ %entry
313 ; CHECK-NEXT: vcmp.u32 cs, q2, q1
314 ; CHECK-NEXT: vmrs r0, p0
315 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
316 ; CHECK-NEXT: vmrs r1, p0
317 ; CHECK-NEXT: orrs r0, r1
318 ; CHECK-NEXT: vmsr p0, r0
319 ; CHECK-NEXT: vpsel q0, q0, q1
322 %c1 = icmp eq <4 x i32> %a, zeroinitializer
323 %c2 = icmp ule <4 x i32> %b, %c
324 %o = or <4 x i1> %c1, %c2
325 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
329 define arm_aapcs_vfpcc <4 x i32> @cmpuge_v4i1(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c) {
330 ; CHECK-LABEL: cmpuge_v4i1:
331 ; CHECK: @ %bb.0: @ %entry
332 ; CHECK-NEXT: vcmp.u32 cs, q1, q2
333 ; CHECK-NEXT: vmrs r0, p0
334 ; CHECK-NEXT: vcmp.i32 eq, q0, zr
335 ; CHECK-NEXT: vmrs r1, p0
336 ; CHECK-NEXT: orrs r0, r1
337 ; CHECK-NEXT: vmsr p0, r0
338 ; CHECK-NEXT: vpsel q0, q0, q1
341 %c1 = icmp eq <4 x i32> %a, zeroinitializer
342 %c2 = icmp uge <4 x i32> %b, %c
343 %o = or <4 x i1> %c1, %c2
344 %s = select <4 x i1> %o, <4 x i32> %a, <4 x i32> %b
351 define arm_aapcs_vfpcc <8 x i16> @cmpeqz_v8i1(<8 x i16> %a, <8 x i16> %b) {
352 ; CHECK-LABEL: cmpeqz_v8i1:
353 ; CHECK: @ %bb.0: @ %entry
354 ; CHECK-NEXT: vcmp.i16 ne, q0, zr
356 ; CHECK-NEXT: vcmpt.i16 ne, q1, zr
358 ; CHECK-NEXT: vpsel q0, q0, q1
361 %c1 = icmp eq <8 x i16> %a, zeroinitializer
362 %c2 = icmp eq <8 x i16> %b, zeroinitializer
363 %o = or <8 x i1> %c1, %c2
364 %s = select <8 x i1> %o, <8 x i16> %a, <8 x i16> %b
368 define arm_aapcs_vfpcc <8 x i16> @cmpeq_v8i1(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c) {
369 ; CHECK-LABEL: cmpeq_v8i1:
370 ; CHECK: @ %bb.0: @ %entry
371 ; CHECK-NEXT: vcmp.i16 ne, q0, zr
373 ; CHECK-NEXT: vcmpt.i16 ne, q1, q2
375 ; CHECK-NEXT: vpsel q0, q0, q1
378 %c1 = icmp eq <8 x i16> %a, zeroinitializer
379 %c2 = icmp eq <8 x i16> %b, %c
380 %o = or <8 x i1> %c1, %c2
381 %s = select <8 x i1> %o, <8 x i16> %a, <8 x i16> %b
386 define arm_aapcs_vfpcc <16 x i8> @cmpeqz_v16i1(<16 x i8> %a, <16 x i8> %b) {
387 ; CHECK-LABEL: cmpeqz_v16i1:
388 ; CHECK: @ %bb.0: @ %entry
389 ; CHECK-NEXT: vcmp.i8 ne, q0, zr
391 ; CHECK-NEXT: vcmpt.i8 ne, q1, zr
393 ; CHECK-NEXT: vpsel q0, q0, q1
396 %c1 = icmp eq <16 x i8> %a, zeroinitializer
397 %c2 = icmp eq <16 x i8> %b, zeroinitializer
398 %o = or <16 x i1> %c1, %c2
399 %s = select <16 x i1> %o, <16 x i8> %a, <16 x i8> %b
403 define arm_aapcs_vfpcc <16 x i8> @cmpeq_v16i1(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c) {
404 ; CHECK-LABEL: cmpeq_v16i1:
405 ; CHECK: @ %bb.0: @ %entry
406 ; CHECK-NEXT: vcmp.i8 ne, q0, zr
408 ; CHECK-NEXT: vcmpt.i8 ne, q1, q2
410 ; CHECK-NEXT: vpsel q0, q0, q1
413 %c1 = icmp eq <16 x i8> %a, zeroinitializer
414 %c2 = icmp eq <16 x i8> %b, %c
415 %o = or <16 x i1> %c1, %c2
416 %s = select <16 x i1> %o, <16 x i8> %a, <16 x i8> %b
421 define arm_aapcs_vfpcc <2 x i64> @cmpeqz_v2i1(<2 x i64> %a, <2 x i64> %b) {
422 ; CHECK-LABEL: cmpeqz_v2i1:
423 ; CHECK: @ %bb.0: @ %entry
424 ; CHECK-NEXT: vmov r0, s5
425 ; CHECK-NEXT: vmov r1, s4
426 ; CHECK-NEXT: orrs r0, r1
427 ; CHECK-NEXT: vmov r1, s6
428 ; CHECK-NEXT: clz r0, r0
429 ; CHECK-NEXT: lsrs r0, r0, #5
431 ; CHECK-NEXT: movne.w r0, #-1
432 ; CHECK-NEXT: vmov.32 q2[0], r0
433 ; CHECK-NEXT: vmov.32 q2[1], r0
434 ; CHECK-NEXT: vmov r0, s7
435 ; CHECK-NEXT: orrs r0, r1
436 ; CHECK-NEXT: vmov r1, s0
437 ; CHECK-NEXT: clz r0, r0
438 ; CHECK-NEXT: lsrs r0, r0, #5
440 ; CHECK-NEXT: movne.w r0, #-1
441 ; CHECK-NEXT: vmov.32 q2[2], r0
442 ; CHECK-NEXT: vmov.32 q2[3], r0
443 ; CHECK-NEXT: vmov r0, s1
444 ; CHECK-NEXT: orrs r0, r1
445 ; CHECK-NEXT: vmov r1, s2
446 ; CHECK-NEXT: clz r0, r0
447 ; CHECK-NEXT: lsrs r0, r0, #5
449 ; CHECK-NEXT: movne.w r0, #-1
450 ; CHECK-NEXT: vmov.32 q3[0], r0
451 ; CHECK-NEXT: vmov.32 q3[1], r0
452 ; CHECK-NEXT: vmov r0, s3
453 ; CHECK-NEXT: orrs r0, r1
454 ; CHECK-NEXT: clz r0, r0
455 ; CHECK-NEXT: lsrs r0, r0, #5
457 ; CHECK-NEXT: movne.w r0, #-1
458 ; CHECK-NEXT: vmov.32 q3[2], r0
459 ; CHECK-NEXT: vmov.32 q3[3], r0
460 ; CHECK-NEXT: vorr q2, q3, q2
461 ; CHECK-NEXT: vbic q1, q1, q2
462 ; CHECK-NEXT: vand q0, q0, q2
463 ; CHECK-NEXT: vorr q0, q0, q1
466 %c1 = icmp eq <2 x i64> %a, zeroinitializer
467 %c2 = icmp eq <2 x i64> %b, zeroinitializer
468 %o = or <2 x i1> %c1, %c2
469 %s = select <2 x i1> %o, <2 x i64> %a, <2 x i64> %b
473 define arm_aapcs_vfpcc <2 x i64> @cmpeq_v2i1(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c) {
474 ; CHECK-LABEL: cmpeq_v2i1:
475 ; CHECK: @ %bb.0: @ %entry
476 ; CHECK-NEXT: vmov r0, s9
477 ; CHECK-NEXT: vmov r1, s5
478 ; CHECK-NEXT: vmov r2, s4
479 ; CHECK-NEXT: eors r0, r1
480 ; CHECK-NEXT: vmov r1, s8
481 ; CHECK-NEXT: eors r1, r2
482 ; CHECK-NEXT: vmov r2, s6
483 ; CHECK-NEXT: orrs r0, r1
484 ; CHECK-NEXT: vmov r1, s7
485 ; CHECK-NEXT: clz r0, r0
486 ; CHECK-NEXT: lsrs r0, r0, #5
488 ; CHECK-NEXT: movne.w r0, #-1
489 ; CHECK-NEXT: vmov.32 q3[0], r0
490 ; CHECK-NEXT: vmov.32 q3[1], r0
491 ; CHECK-NEXT: vmov r0, s11
492 ; CHECK-NEXT: eors r0, r1
493 ; CHECK-NEXT: vmov r1, s10
494 ; CHECK-NEXT: eors r1, r2
495 ; CHECK-NEXT: orrs r0, r1
496 ; CHECK-NEXT: vmov r1, s0
497 ; CHECK-NEXT: clz r0, r0
498 ; CHECK-NEXT: lsrs r0, r0, #5
500 ; CHECK-NEXT: movne.w r0, #-1
501 ; CHECK-NEXT: vmov.32 q3[2], r0
502 ; CHECK-NEXT: vmov.32 q3[3], r0
503 ; CHECK-NEXT: vmov r0, s1
504 ; CHECK-NEXT: orrs r0, r1
505 ; CHECK-NEXT: vmov r1, s2
506 ; CHECK-NEXT: clz r0, r0
507 ; CHECK-NEXT: lsrs r0, r0, #5
509 ; CHECK-NEXT: movne.w r0, #-1
510 ; CHECK-NEXT: vmov.32 q2[0], r0
511 ; CHECK-NEXT: vmov.32 q2[1], r0
512 ; CHECK-NEXT: vmov r0, s3
513 ; CHECK-NEXT: orrs r0, r1
514 ; CHECK-NEXT: clz r0, r0
515 ; CHECK-NEXT: lsrs r0, r0, #5
517 ; CHECK-NEXT: movne.w r0, #-1
518 ; CHECK-NEXT: vmov.32 q2[2], r0
519 ; CHECK-NEXT: vmov.32 q2[3], r0
520 ; CHECK-NEXT: vorr q2, q2, q3
521 ; CHECK-NEXT: vbic q1, q1, q2
522 ; CHECK-NEXT: vand q0, q0, q2
523 ; CHECK-NEXT: vorr q0, q0, q1
526 %c1 = icmp eq <2 x i64> %a, zeroinitializer
527 %c2 = icmp eq <2 x i64> %b, %c
528 %o = or <2 x i1> %c1, %c2
529 %s = select <2 x i1> %o, <2 x i64> %a, <2 x i64> %b