[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / Thumb2 / mve-pred-or.ll
blob2b4aaaf827d4cd3cd65905ab253ed02c4cea5747
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
8 ; CHECK-NEXT:    vpst
9 ; CHECK-NEXT:    vcmpt.i32 ne, q1, zr
10 ; CHECK-NEXT:    vpnot
11 ; CHECK-NEXT:    vpsel q0, q0, q1
12 ; CHECK-NEXT:    bx lr
13 entry:
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
18   ret <4 x i32> %s
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
25 ; CHECK-NEXT:    vpst
26 ; CHECK-NEXT:    vcmpt.i32 eq, q1, zr
27 ; CHECK-NEXT:    vpnot
28 ; CHECK-NEXT:    vpsel q0, q0, q1
29 ; CHECK-NEXT:    bx lr
30 entry:
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
35   ret <4 x i32> %s
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
42 ; CHECK-NEXT:    vpst
43 ; CHECK-NEXT:    vcmpt.s32 ge, q1, zr
44 ; CHECK-NEXT:    vpnot
45 ; CHECK-NEXT:    vpsel q0, q0, q1
46 ; CHECK-NEXT:    bx lr
47 entry:
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
52   ret <4 x i32> %s
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
59 ; CHECK-NEXT:    vpst
60 ; CHECK-NEXT:    vcmpt.s32 le, q1, zr
61 ; CHECK-NEXT:    vpnot
62 ; CHECK-NEXT:    vpsel q0, q0, q1
63 ; CHECK-NEXT:    bx lr
64 entry:
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
69   ret <4 x i32> %s
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
76 ; CHECK-NEXT:    vpst
77 ; CHECK-NEXT:    vcmpt.s32 gt, q1, zr
78 ; CHECK-NEXT:    vpnot
79 ; CHECK-NEXT:    vpsel q0, q0, q1
80 ; CHECK-NEXT:    bx lr
81 entry:
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
86   ret <4 x i32> %s
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
93 ; CHECK-NEXT:    vpst
94 ; CHECK-NEXT:    vcmpt.s32 lt, q1, zr
95 ; CHECK-NEXT:    vpnot
96 ; CHECK-NEXT:    vpsel q0, q0, q1
97 ; CHECK-NEXT:    bx lr
98 entry:
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
103   ret <4 x i32> %s
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
111 ; CHECK-NEXT:    bx lr
112 entry:
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
117   ret <4 x i32> %s
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
124 ; CHECK-NEXT:    vpst
125 ; CHECK-NEXT:    vcmpt.i32 eq, q1, zr
126 ; CHECK-NEXT:    vpnot
127 ; CHECK-NEXT:    vpsel q0, q0, q1
128 ; CHECK-NEXT:    bx lr
129 entry:
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
134   ret <4 x i32> %s
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
147 ; CHECK-NEXT:    bx lr
148 entry:
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
153   ret <4 x i32> %s
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
159 ; CHECK-NEXT:    bx lr
160 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
165   ret <4 x i32> %s
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
174 ; CHECK-NEXT:    vpst
175 ; CHECK-NEXT:    vcmpt.i32 ne, q1, q2
176 ; CHECK-NEXT:    vpnot
177 ; CHECK-NEXT:    vpsel q0, q0, q1
178 ; CHECK-NEXT:    bx lr
179 entry:
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
184   ret <4 x i32> %s
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
191 ; CHECK-NEXT:    vpst
192 ; CHECK-NEXT:    vcmpt.i32 eq, q1, q2
193 ; CHECK-NEXT:    vpnot
194 ; CHECK-NEXT:    vpsel q0, q0, q1
195 ; CHECK-NEXT:    bx lr
196 entry:
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
201   ret <4 x i32> %s
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
208 ; CHECK-NEXT:    vpst
209 ; CHECK-NEXT:    vcmpt.s32 le, q2, q1
210 ; CHECK-NEXT:    vpnot
211 ; CHECK-NEXT:    vpsel q0, q0, q1
212 ; CHECK-NEXT:    bx lr
213 entry:
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
218   ret <4 x i32> %s
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
225 ; CHECK-NEXT:    vpst
226 ; CHECK-NEXT:    vcmpt.s32 le, q1, q2
227 ; CHECK-NEXT:    vpnot
228 ; CHECK-NEXT:    vpsel q0, q0, q1
229 ; CHECK-NEXT:    bx lr
230 entry:
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
235   ret <4 x i32> %s
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
242 ; CHECK-NEXT:    vpst
243 ; CHECK-NEXT:    vcmpt.s32 lt, q2, q1
244 ; CHECK-NEXT:    vpnot
245 ; CHECK-NEXT:    vpsel q0, q0, q1
246 ; CHECK-NEXT:    bx lr
247 entry:
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
252   ret <4 x i32> %s
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
259 ; CHECK-NEXT:    vpst
260 ; CHECK-NEXT:    vcmpt.s32 lt, q1, q2
261 ; CHECK-NEXT:    vpnot
262 ; CHECK-NEXT:    vpsel q0, q0, q1
263 ; CHECK-NEXT:    bx lr
264 entry:
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
269   ret <4 x i32> %s
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
282 ; CHECK-NEXT:    bx lr
283 entry:
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
288   ret <4 x i32> %s
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
301 ; CHECK-NEXT:    bx lr
302 entry:
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
307   ret <4 x i32> %s
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
320 ; CHECK-NEXT:    bx lr
321 entry:
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
326   ret <4 x i32> %s
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
339 ; CHECK-NEXT:    bx lr
340 entry:
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
345   ret <4 x i32> %s
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
355 ; CHECK-NEXT:    vpst
356 ; CHECK-NEXT:    vcmpt.i16 ne, q1, zr
357 ; CHECK-NEXT:    vpnot
358 ; CHECK-NEXT:    vpsel q0, q0, q1
359 ; CHECK-NEXT:    bx lr
360 entry:
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
365   ret <8 x i16> %s
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
372 ; CHECK-NEXT:    vpst
373 ; CHECK-NEXT:    vcmpt.i16 ne, q1, q2
374 ; CHECK-NEXT:    vpnot
375 ; CHECK-NEXT:    vpsel q0, q0, q1
376 ; CHECK-NEXT:    bx lr
377 entry:
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
382   ret <8 x i16> %s
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
390 ; CHECK-NEXT:    vpst
391 ; CHECK-NEXT:    vcmpt.i8 ne, q1, zr
392 ; CHECK-NEXT:    vpnot
393 ; CHECK-NEXT:    vpsel q0, q0, q1
394 ; CHECK-NEXT:    bx lr
395 entry:
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
400   ret <16 x i8> %s
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
407 ; CHECK-NEXT:    vpst
408 ; CHECK-NEXT:    vcmpt.i8 ne, q1, q2
409 ; CHECK-NEXT:    vpnot
410 ; CHECK-NEXT:    vpsel q0, q0, q1
411 ; CHECK-NEXT:    bx lr
412 entry:
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
417   ret <16 x i8> %s
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
430 ; CHECK-NEXT:    it ne
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
439 ; CHECK-NEXT:    it ne
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
448 ; CHECK-NEXT:    it ne
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
456 ; CHECK-NEXT:    it ne
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
464 ; CHECK-NEXT:    bx lr
465 entry:
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
470   ret <2 x i64> %s
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
487 ; CHECK-NEXT:    it ne
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
499 ; CHECK-NEXT:    it ne
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
508 ; CHECK-NEXT:    it ne
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
516 ; CHECK-NEXT:    it ne
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
524 ; CHECK-NEXT:    bx lr
525 entry:
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
530   ret <2 x i64> %s