[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Hexagon / isel / logical.ll
blob680a8212b00702f61cfacd5de159398b02570116
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=hexagon < %s | FileCheck %s
4 declare i32 @llvm.hexagon.S2.tstbit.i(i32, i32 immarg) #0
6 define i1 @f0(i32 %a0, i32 %a1) #1 {
7 ; CHECK-LABEL: f0:
8 ; CHECK:       // %bb.0: // %b0
9 ; CHECK-NEXT:    {
10 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
11 ; CHECK-NEXT:    }
12 ; CHECK-NEXT:    {
13 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
14 ; CHECK-NEXT:    }
15 ; CHECK-NEXT:    {
16 ; CHECK-NEXT:     p0 = and(p0,p1)
17 ; CHECK-NEXT:    }
18 ; CHECK-NEXT:    {
19 ; CHECK-NEXT:     r0 = p0
20 ; CHECK-NEXT:    }
21 ; CHECK-NEXT:    {
22 ; CHECK-NEXT:     jumpr r31
23 ; CHECK-NEXT:    }
24 b0:
25   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
26   %v1 = trunc i32 %v0 to i1
27   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
28   %v3 = trunc i32 %v2 to i1
29   %v4 = and i1 %v1, %v3
30   ret i1 %v4
33 define i1 @f1(i32 %a0, i32 %a1) #1 {
34 ; CHECK-LABEL: f1:
35 ; CHECK:       // %bb.0: // %b0
36 ; CHECK-NEXT:    {
37 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
38 ; CHECK-NEXT:    }
39 ; CHECK-NEXT:    {
40 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
41 ; CHECK-NEXT:    }
42 ; CHECK-NEXT:    {
43 ; CHECK-NEXT:     p0 = or(p0,p1)
44 ; CHECK-NEXT:    }
45 ; CHECK-NEXT:    {
46 ; CHECK-NEXT:     r0 = p0
47 ; CHECK-NEXT:    }
48 ; CHECK-NEXT:    {
49 ; CHECK-NEXT:     jumpr r31
50 ; CHECK-NEXT:    }
51 b0:
52   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
53   %v1 = trunc i32 %v0 to i1
54   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
55   %v3 = trunc i32 %v2 to i1
56   %v4 = or i1 %v1, %v3
57   ret i1 %v4
60 define i1 @f2(i32 %a0, i32 %a1) #1 {
61 ; CHECK-LABEL: f2:
62 ; CHECK:       // %bb.0: // %b0
63 ; CHECK-NEXT:    {
64 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
65 ; CHECK-NEXT:    }
66 ; CHECK-NEXT:    {
67 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
68 ; CHECK-NEXT:    }
69 ; CHECK-NEXT:    {
70 ; CHECK-NEXT:     p0 = xor(p0,p1)
71 ; CHECK-NEXT:    }
72 ; CHECK-NEXT:    {
73 ; CHECK-NEXT:     r0 = p0
74 ; CHECK-NEXT:    }
75 ; CHECK-NEXT:    {
76 ; CHECK-NEXT:     jumpr r31
77 ; CHECK-NEXT:    }
78 b0:
79   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
80   %v1 = trunc i32 %v0 to i1
81   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
82   %v3 = trunc i32 %v2 to i1
83   %v4 = xor i1 %v1, %v3
84   ret i1 %v4
87 define i1 @f3(i32 %a0, i32 %a1) #1 {
88 ; CHECK-LABEL: f3:
89 ; CHECK:       // %bb.0: // %b0
90 ; CHECK-NEXT:    {
91 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
92 ; CHECK-NEXT:    }
93 ; CHECK-NEXT:    {
94 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
95 ; CHECK-NEXT:    }
96 ; CHECK-NEXT:    {
97 ; CHECK-NEXT:     r0 = p0
98 ; CHECK-NEXT:    }
99 ; CHECK-NEXT:    {
100 ; CHECK-NEXT:     r1 = p1
101 ; CHECK-NEXT:    }
102 ; CHECK-NEXT:    {
103 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
104 ; CHECK-NEXT:    }
105 ; CHECK-NEXT:    {
106 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
107 ; CHECK-NEXT:    }
108 ; CHECK-NEXT:    {
109 ; CHECK-NEXT:     p0 = and(p0,!p1)
110 ; CHECK-NEXT:    }
111 ; CHECK-NEXT:    {
112 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
113 ; CHECK-NEXT:    }
114 ; CHECK-NEXT:    {
115 ; CHECK-NEXT:     jumpr r31
116 ; CHECK-NEXT:    }
118   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
119   %v1 = trunc i32 %v0 to i1
120   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
121   %v3 = trunc i32 %v2 to i1
122   %v4 = xor i1 %v3, true
123   %v5 = and i1 %v1, %v4
124   ret i1 %v5
127 define i1 @f4(i32 %a0, i32 %a1) #1 {
128 ; CHECK-LABEL: f4:
129 ; CHECK:       // %bb.0: // %b0
130 ; CHECK-NEXT:    {
131 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
132 ; CHECK-NEXT:    }
133 ; CHECK-NEXT:    {
134 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
135 ; CHECK-NEXT:    }
136 ; CHECK-NEXT:    {
137 ; CHECK-NEXT:     r0 = p0
138 ; CHECK-NEXT:    }
139 ; CHECK-NEXT:    {
140 ; CHECK-NEXT:     r1 = p1
141 ; CHECK-NEXT:    }
142 ; CHECK-NEXT:    {
143 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
144 ; CHECK-NEXT:    }
145 ; CHECK-NEXT:    {
146 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
147 ; CHECK-NEXT:    }
148 ; CHECK-NEXT:    {
149 ; CHECK-NEXT:     p0 = or(p0,!p1)
150 ; CHECK-NEXT:    }
151 ; CHECK-NEXT:    {
152 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
153 ; CHECK-NEXT:    }
154 ; CHECK-NEXT:    {
155 ; CHECK-NEXT:     jumpr r31
156 ; CHECK-NEXT:    }
158   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
159   %v1 = trunc i32 %v0 to i1
160   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
161   %v3 = trunc i32 %v2 to i1
162   %v4 = xor i1 %v3, true
163   %v5 = or i1 %v1, %v4
164   ret i1 %v5
167 define i1 @f5(i32 %a0, i32 %a1, i32 %a2) #1 {
168 ; CHECK-LABEL: f5:
169 ; CHECK:       // %bb.0: // %b0
170 ; CHECK-NEXT:    {
171 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
172 ; CHECK-NEXT:    }
173 ; CHECK-NEXT:    {
174 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
175 ; CHECK-NEXT:    }
176 ; CHECK-NEXT:    {
177 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
178 ; CHECK-NEXT:    }
179 ; CHECK-NEXT:    {
180 ; CHECK-NEXT:     p0 = and(p2,and(p0,p1))
181 ; CHECK-NEXT:    }
182 ; CHECK-NEXT:    {
183 ; CHECK-NEXT:     r0 = p0
184 ; CHECK-NEXT:    }
185 ; CHECK-NEXT:    {
186 ; CHECK-NEXT:     jumpr r31
187 ; CHECK-NEXT:    }
189   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
190   %v1 = trunc i32 %v0 to i1
191   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
192   %v3 = trunc i32 %v2 to i1
193   %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
194   %v5 = trunc i32 %v4 to i1
195   %v6 = and i1 %v1, %v3
196   %v7 = and i1 %v5, %v6
197   ret i1 %v7
200 define i1 @f6(i32 %a0, i32 %a1, i32 %a2) #1 {
201 ; CHECK-LABEL: f6:
202 ; CHECK:       // %bb.0: // %b0
203 ; CHECK-NEXT:    {
204 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
205 ; CHECK-NEXT:    }
206 ; CHECK-NEXT:    {
207 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
208 ; CHECK-NEXT:    }
209 ; CHECK-NEXT:    {
210 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
211 ; CHECK-NEXT:    }
212 ; CHECK-NEXT:    {
213 ; CHECK-NEXT:     p0 = and(p2,or(p0,p1))
214 ; CHECK-NEXT:    }
215 ; CHECK-NEXT:    {
216 ; CHECK-NEXT:     r0 = p0
217 ; CHECK-NEXT:    }
218 ; CHECK-NEXT:    {
219 ; CHECK-NEXT:     jumpr r31
220 ; CHECK-NEXT:    }
222   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
223   %v1 = trunc i32 %v0 to i1
224   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
225   %v3 = trunc i32 %v2 to i1
226   %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
227   %v5 = trunc i32 %v4 to i1
228   %v6 = or i1 %v1, %v3
229   %v7 = and i1 %v5, %v6
230   ret i1 %v7
233 define i1 @f7(i32 %a0, i32 %a1, i32 %a2) #1 {
234 ; CHECK-LABEL: f7:
235 ; CHECK:       // %bb.0: // %b0
236 ; CHECK-NEXT:    {
237 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
238 ; CHECK-NEXT:    }
239 ; CHECK-NEXT:    {
240 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
241 ; CHECK-NEXT:    }
242 ; CHECK-NEXT:    {
243 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
244 ; CHECK-NEXT:    }
245 ; CHECK-NEXT:    {
246 ; CHECK-NEXT:     p0 = or(p2,and(p0,p1))
247 ; CHECK-NEXT:    }
248 ; CHECK-NEXT:    {
249 ; CHECK-NEXT:     r0 = p0
250 ; CHECK-NEXT:    }
251 ; CHECK-NEXT:    {
252 ; CHECK-NEXT:     jumpr r31
253 ; CHECK-NEXT:    }
255   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
256   %v1 = trunc i32 %v0 to i1
257   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
258   %v3 = trunc i32 %v2 to i1
259   %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
260   %v5 = trunc i32 %v4 to i1
261   %v6 = and i1 %v1, %v3
262   %v7 = or i1 %v5, %v6
263   ret i1 %v7
266 define i1 @f8(i32 %a0, i32 %a1, i32 %a2) #1 {
267 ; CHECK-LABEL: f8:
268 ; CHECK:       // %bb.0: // %b0
269 ; CHECK-NEXT:    {
270 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
271 ; CHECK-NEXT:    }
272 ; CHECK-NEXT:    {
273 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
274 ; CHECK-NEXT:    }
275 ; CHECK-NEXT:    {
276 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
277 ; CHECK-NEXT:    }
278 ; CHECK-NEXT:    {
279 ; CHECK-NEXT:     p0 = or(p2,or(p0,p1))
280 ; CHECK-NEXT:    }
281 ; CHECK-NEXT:    {
282 ; CHECK-NEXT:     r0 = p0
283 ; CHECK-NEXT:    }
284 ; CHECK-NEXT:    {
285 ; CHECK-NEXT:     jumpr r31
286 ; CHECK-NEXT:    }
288   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
289   %v1 = trunc i32 %v0 to i1
290   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
291   %v3 = trunc i32 %v2 to i1
292   %v4 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
293   %v5 = trunc i32 %v4 to i1
294   %v6 = or i1 %v1, %v3
295   %v7 = or i1 %v5, %v6
296   ret i1 %v7
299 define i1 @f9(i32 %a0, i32 %a1, i32 %a2) #1 {
300 ; CHECK-LABEL: f9:
301 ; CHECK:       // %bb.0: // %b0
302 ; CHECK-NEXT:    {
303 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
304 ; CHECK-NEXT:    }
305 ; CHECK-NEXT:    {
306 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
307 ; CHECK-NEXT:    }
308 ; CHECK-NEXT:    {
309 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
310 ; CHECK-NEXT:    }
311 ; CHECK-NEXT:    {
312 ; CHECK-NEXT:     r0 = p0
313 ; CHECK-NEXT:    }
314 ; CHECK-NEXT:    {
315 ; CHECK-NEXT:     r1 = p1
316 ; CHECK-NEXT:    }
317 ; CHECK-NEXT:    {
318 ; CHECK-NEXT:     r2 = p2
319 ; CHECK-NEXT:    }
320 ; CHECK-NEXT:    {
321 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
322 ; CHECK-NEXT:    }
323 ; CHECK-NEXT:    {
324 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
325 ; CHECK-NEXT:    }
326 ; CHECK-NEXT:    {
327 ; CHECK-NEXT:     p2 = tstbit(r2,#0)
328 ; CHECK-NEXT:    }
329 ; CHECK-NEXT:    {
330 ; CHECK-NEXT:     p0 = and(p2,and(p0,!p1))
331 ; CHECK-NEXT:    }
332 ; CHECK-NEXT:    {
333 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
334 ; CHECK-NEXT:    }
335 ; CHECK-NEXT:    {
336 ; CHECK-NEXT:     jumpr r31
337 ; CHECK-NEXT:    }
339   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
340   %v1 = trunc i32 %v0 to i1
341   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
342   %v3 = trunc i32 %v2 to i1
343   %v4 = xor i1 %v3, true
344   %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
345   %v6 = trunc i32 %v5 to i1
346   %v7 = and i1 %v1, %v4
347   %v8 = and i1 %v6, %v7
348   ret i1 %v8
351 define i1 @f10(i32 %a0, i32 %a1, i32 %a2) #1 {
352 ; CHECK-LABEL: f10:
353 ; CHECK:       // %bb.0: // %b0
354 ; CHECK-NEXT:    {
355 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
356 ; CHECK-NEXT:    }
357 ; CHECK-NEXT:    {
358 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
359 ; CHECK-NEXT:    }
360 ; CHECK-NEXT:    {
361 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
362 ; CHECK-NEXT:    }
363 ; CHECK-NEXT:    {
364 ; CHECK-NEXT:     r0 = p0
365 ; CHECK-NEXT:    }
366 ; CHECK-NEXT:    {
367 ; CHECK-NEXT:     r1 = p1
368 ; CHECK-NEXT:    }
369 ; CHECK-NEXT:    {
370 ; CHECK-NEXT:     r2 = p2
371 ; CHECK-NEXT:    }
372 ; CHECK-NEXT:    {
373 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
374 ; CHECK-NEXT:    }
375 ; CHECK-NEXT:    {
376 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
377 ; CHECK-NEXT:    }
378 ; CHECK-NEXT:    {
379 ; CHECK-NEXT:     p2 = tstbit(r2,#0)
380 ; CHECK-NEXT:    }
381 ; CHECK-NEXT:    {
382 ; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))
383 ; CHECK-NEXT:    }
384 ; CHECK-NEXT:    {
385 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
386 ; CHECK-NEXT:    }
387 ; CHECK-NEXT:    {
388 ; CHECK-NEXT:     jumpr r31
389 ; CHECK-NEXT:    }
391   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
392   %v1 = trunc i32 %v0 to i1
393   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
394   %v3 = trunc i32 %v2 to i1
395   %v4 = xor i1 %v3, true
396   %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
397   %v6 = trunc i32 %v5 to i1
398   %v7 = or i1 %v1, %v4
399   %v8 = and i1 %v6, %v7
400   ret i1 %v8
403 define i1 @f11(i32 %a0, i32 %a1, i32 %a2) #1 {
404 ; CHECK-LABEL: f11:
405 ; CHECK:       // %bb.0: // %b0
406 ; CHECK-NEXT:    {
407 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
408 ; CHECK-NEXT:    }
409 ; CHECK-NEXT:    {
410 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
411 ; CHECK-NEXT:    }
412 ; CHECK-NEXT:    {
413 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
414 ; CHECK-NEXT:    }
415 ; CHECK-NEXT:    {
416 ; CHECK-NEXT:     r0 = p0
417 ; CHECK-NEXT:    }
418 ; CHECK-NEXT:    {
419 ; CHECK-NEXT:     r1 = p1
420 ; CHECK-NEXT:    }
421 ; CHECK-NEXT:    {
422 ; CHECK-NEXT:     r2 = p2
423 ; CHECK-NEXT:    }
424 ; CHECK-NEXT:    {
425 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
426 ; CHECK-NEXT:    }
427 ; CHECK-NEXT:    {
428 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
429 ; CHECK-NEXT:    }
430 ; CHECK-NEXT:    {
431 ; CHECK-NEXT:     p2 = tstbit(r2,#0)
432 ; CHECK-NEXT:    }
433 ; CHECK-NEXT:    {
434 ; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))
435 ; CHECK-NEXT:    }
436 ; CHECK-NEXT:    {
437 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
438 ; CHECK-NEXT:    }
439 ; CHECK-NEXT:    {
440 ; CHECK-NEXT:     jumpr r31
441 ; CHECK-NEXT:    }
443   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
444   %v1 = trunc i32 %v0 to i1
445   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
446   %v3 = trunc i32 %v2 to i1
447   %v4 = xor i1 %v3, true
448   %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
449   %v6 = trunc i32 %v5 to i1
450   %v7 = and i1 %v1, %v4
451   %v8 = or i1 %v6, %v7
452   ret i1 %v8
455 define i1 @f12(i32 %a0, i32 %a1, i32 %a2) #1 {
456 ; CHECK-LABEL: f12:
457 ; CHECK:       // %bb.0: // %b0
458 ; CHECK-NEXT:    {
459 ; CHECK-NEXT:     p0 = tstbit(r0,#3)
460 ; CHECK-NEXT:    }
461 ; CHECK-NEXT:    {
462 ; CHECK-NEXT:     p1 = tstbit(r1,#3)
463 ; CHECK-NEXT:    }
464 ; CHECK-NEXT:    {
465 ; CHECK-NEXT:     p2 = tstbit(r2,#3)
466 ; CHECK-NEXT:    }
467 ; CHECK-NEXT:    {
468 ; CHECK-NEXT:     r0 = p0
469 ; CHECK-NEXT:    }
470 ; CHECK-NEXT:    {
471 ; CHECK-NEXT:     r1 = p1
472 ; CHECK-NEXT:    }
473 ; CHECK-NEXT:    {
474 ; CHECK-NEXT:     r2 = p2
475 ; CHECK-NEXT:    }
476 ; CHECK-NEXT:    {
477 ; CHECK-NEXT:     p0 = tstbit(r0,#0)
478 ; CHECK-NEXT:    }
479 ; CHECK-NEXT:    {
480 ; CHECK-NEXT:     p1 = tstbit(r1,#0)
481 ; CHECK-NEXT:    }
482 ; CHECK-NEXT:    {
483 ; CHECK-NEXT:     p2 = tstbit(r2,#0)
484 ; CHECK-NEXT:    }
485 ; CHECK-NEXT:    {
486 ; CHECK-NEXT:     p0 = or(p2,or(p0,!p1))
487 ; CHECK-NEXT:    }
488 ; CHECK-NEXT:    {
489 ; CHECK-NEXT:     r0 = mux(p0,#1,#0)
490 ; CHECK-NEXT:    }
491 ; CHECK-NEXT:    {
492 ; CHECK-NEXT:     jumpr r31
493 ; CHECK-NEXT:    }
495   %v0 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a0, i32 3)
496   %v1 = trunc i32 %v0 to i1
497   %v2 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a1, i32 3)
498   %v3 = trunc i32 %v2 to i1
499   %v4 = xor i1 %v3, true
500   %v5 = call i32 @llvm.hexagon.S2.tstbit.i(i32 %a2, i32 3)
501   %v6 = trunc i32 %v5 to i1
502   %v7 = or i1 %v1, %v4
503   %v8 = or i1 %v6, %v7
504   ret i1 %v8
507 define <2 x i32> @f13(<2 x i32> %a0, <2 x i32> %a1) #1 {
508 ; CHECK-LABEL: f13:
509 ; CHECK:       // %bb.0: // %b0
510 ; CHECK-NEXT:    {
511 ; CHECK-NEXT:     r5:4 = combine(#1,#1)
512 ; CHECK-NEXT:    }
513 ; CHECK-NEXT:    {
514 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)
515 ; CHECK-NEXT:    }
516 ; CHECK-NEXT:    {
517 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)
518 ; CHECK-NEXT:    }
519 ; CHECK-NEXT:    {
520 ; CHECK-NEXT:     p0 = and(p0,p1)
521 ; CHECK-NEXT:    }
522 ; CHECK-NEXT:    {
523 ; CHECK-NEXT:     r1:0 = mask(p0)
524 ; CHECK-NEXT:    }
525 ; CHECK-NEXT:    {
526 ; CHECK-NEXT:     jumpr r31
527 ; CHECK-NEXT:    }
529   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
530   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
531   %v2 = and <2 x i1> %v0, %v1
532   %v3 = sext <2 x i1> %v2 to <2 x i32>
533   ret <2 x i32> %v3
536 define <2 x i32> @f14(<2 x i32> %a0, <2 x i32> %a1) #1 {
537 ; CHECK-LABEL: f14:
538 ; CHECK:       // %bb.0: // %b0
539 ; CHECK-NEXT:    {
540 ; CHECK-NEXT:     r5:4 = combine(#1,#1)
541 ; CHECK-NEXT:    }
542 ; CHECK-NEXT:    {
543 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)
544 ; CHECK-NEXT:    }
545 ; CHECK-NEXT:    {
546 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)
547 ; CHECK-NEXT:    }
548 ; CHECK-NEXT:    {
549 ; CHECK-NEXT:     p0 = or(p0,p1)
550 ; CHECK-NEXT:    }
551 ; CHECK-NEXT:    {
552 ; CHECK-NEXT:     r1:0 = mask(p0)
553 ; CHECK-NEXT:    }
554 ; CHECK-NEXT:    {
555 ; CHECK-NEXT:     jumpr r31
556 ; CHECK-NEXT:    }
558   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
559   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
560   %v2 = or <2 x i1> %v0, %v1
561   %v3 = sext <2 x i1> %v2 to <2 x i32>
562   ret <2 x i32> %v3
565 define <2 x i32> @f15(<2 x i32> %a0, <2 x i32> %a1) #1 {
566 ; CHECK-LABEL: f15:
567 ; CHECK:       // %bb.0: // %b0
568 ; CHECK-NEXT:    {
569 ; CHECK-NEXT:     r5:4 = combine(#1,#1)
570 ; CHECK-NEXT:    }
571 ; CHECK-NEXT:    {
572 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)
573 ; CHECK-NEXT:    }
574 ; CHECK-NEXT:    {
575 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)
576 ; CHECK-NEXT:    }
577 ; CHECK-NEXT:    {
578 ; CHECK-NEXT:     p0 = xor(p0,p1)
579 ; CHECK-NEXT:    }
580 ; CHECK-NEXT:    {
581 ; CHECK-NEXT:     r1:0 = mask(p0)
582 ; CHECK-NEXT:    }
583 ; CHECK-NEXT:    {
584 ; CHECK-NEXT:     jumpr r31
585 ; CHECK-NEXT:    }
587   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
588   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
589   %v2 = xor <2 x i1> %v0, %v1
590   %v3 = sext <2 x i1> %v2 to <2 x i32>
591   ret <2 x i32> %v3
594 define <2 x i32> @f16(<2 x i32> %a0, <2 x i32> %a1) #1 {
595 ; CHECK-LABEL: f16:
596 ; CHECK:       // %bb.0: // %b0
597 ; CHECK-NEXT:    {
598 ; CHECK-NEXT:     r5:4 = combine(#1,#1)
599 ; CHECK-NEXT:    }
600 ; CHECK-NEXT:    {
601 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)
602 ; CHECK-NEXT:    }
603 ; CHECK-NEXT:    {
604 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)
605 ; CHECK-NEXT:    }
606 ; CHECK-NEXT:    {
607 ; CHECK-NEXT:     p0 = and(p0,!p1)
608 ; CHECK-NEXT:    }
609 ; CHECK-NEXT:    {
610 ; CHECK-NEXT:     r1:0 = mask(p0)
611 ; CHECK-NEXT:    }
612 ; CHECK-NEXT:    {
613 ; CHECK-NEXT:     jumpr r31
614 ; CHECK-NEXT:    }
616   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
617   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
618   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
619   %v3 = and <2 x i1> %v0, %v2
620   %v4 = sext <2 x i1> %v3 to <2 x i32>
621   ret <2 x i32> %v4
624 define <2 x i32> @f17(<2 x i32> %a0, <2 x i32> %a1) #1 {
625 ; CHECK-LABEL: f17:
626 ; CHECK:       // %bb.0: // %b0
627 ; CHECK-NEXT:    {
628 ; CHECK-NEXT:     r5:4 = combine(#1,#1)
629 ; CHECK-NEXT:    }
630 ; CHECK-NEXT:    {
631 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r5:4)
632 ; CHECK-NEXT:    }
633 ; CHECK-NEXT:    {
634 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r5:4)
635 ; CHECK-NEXT:    }
636 ; CHECK-NEXT:    {
637 ; CHECK-NEXT:     p0 = or(p0,!p1)
638 ; CHECK-NEXT:    }
639 ; CHECK-NEXT:    {
640 ; CHECK-NEXT:     r1:0 = mask(p0)
641 ; CHECK-NEXT:    }
642 ; CHECK-NEXT:    {
643 ; CHECK-NEXT:     jumpr r31
644 ; CHECK-NEXT:    }
646   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
647   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
648   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
649   %v3 = or <2 x i1> %v0, %v2
650   %v4 = sext <2 x i1> %v3 to <2 x i32>
651   ret <2 x i32> %v4
654 define <2 x i32> @f18(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
655 ; CHECK-LABEL: f18:
656 ; CHECK:       // %bb.0: // %b0
657 ; CHECK-NEXT:    {
658 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
659 ; CHECK-NEXT:    }
660 ; CHECK-NEXT:    {
661 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
662 ; CHECK-NEXT:    }
663 ; CHECK-NEXT:    {
664 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
665 ; CHECK-NEXT:    }
666 ; CHECK-NEXT:    {
667 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
668 ; CHECK-NEXT:    }
669 ; CHECK-NEXT:    {
670 ; CHECK-NEXT:     p0 = and(p2,and(p0,p1))
671 ; CHECK-NEXT:    }
672 ; CHECK-NEXT:    {
673 ; CHECK-NEXT:     r1:0 = mask(p0)
674 ; CHECK-NEXT:    }
675 ; CHECK-NEXT:    {
676 ; CHECK-NEXT:     jumpr r31
677 ; CHECK-NEXT:    }
679   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
680   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
681   %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
682   %v3 = and <2 x i1> %v0, %v1
683   %v4 = and <2 x i1> %v2, %v3
684   %v5 = sext <2 x i1> %v4 to <2 x i32>
685   ret <2 x i32> %v5
688 define <2 x i32> @f19(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
689 ; CHECK-LABEL: f19:
690 ; CHECK:       // %bb.0: // %b0
691 ; CHECK-NEXT:    {
692 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
693 ; CHECK-NEXT:    }
694 ; CHECK-NEXT:    {
695 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
696 ; CHECK-NEXT:    }
697 ; CHECK-NEXT:    {
698 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
699 ; CHECK-NEXT:    }
700 ; CHECK-NEXT:    {
701 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
702 ; CHECK-NEXT:    }
703 ; CHECK-NEXT:    {
704 ; CHECK-NEXT:     p0 = and(p2,or(p0,p1))
705 ; CHECK-NEXT:    }
706 ; CHECK-NEXT:    {
707 ; CHECK-NEXT:     r1:0 = mask(p0)
708 ; CHECK-NEXT:    }
709 ; CHECK-NEXT:    {
710 ; CHECK-NEXT:     jumpr r31
711 ; CHECK-NEXT:    }
713   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
714   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
715   %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
716   %v3 = or <2 x i1> %v0, %v1
717   %v4 = and <2 x i1> %v2, %v3
718   %v5 = sext <2 x i1> %v4 to <2 x i32>
719   ret <2 x i32> %v5
722 define <2 x i32> @f20(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
723 ; CHECK-LABEL: f20:
724 ; CHECK:       // %bb.0: // %b0
725 ; CHECK-NEXT:    {
726 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
727 ; CHECK-NEXT:    }
728 ; CHECK-NEXT:    {
729 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
730 ; CHECK-NEXT:    }
731 ; CHECK-NEXT:    {
732 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
733 ; CHECK-NEXT:    }
734 ; CHECK-NEXT:    {
735 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
736 ; CHECK-NEXT:    }
737 ; CHECK-NEXT:    {
738 ; CHECK-NEXT:     p0 = or(p2,and(p0,p1))
739 ; CHECK-NEXT:    }
740 ; CHECK-NEXT:    {
741 ; CHECK-NEXT:     r1:0 = mask(p0)
742 ; CHECK-NEXT:    }
743 ; CHECK-NEXT:    {
744 ; CHECK-NEXT:     jumpr r31
745 ; CHECK-NEXT:    }
747   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
748   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
749   %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
750   %v3 = and <2 x i1> %v0, %v1
751   %v4 = or <2 x i1> %v2, %v3
752   %v5 = sext <2 x i1> %v4 to <2 x i32>
753   ret <2 x i32> %v5
756 define <2 x i32> @f21(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
757 ; CHECK-LABEL: f21:
758 ; CHECK:       // %bb.0: // %b0
759 ; CHECK-NEXT:    {
760 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
761 ; CHECK-NEXT:    }
762 ; CHECK-NEXT:    {
763 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
764 ; CHECK-NEXT:    }
765 ; CHECK-NEXT:    {
766 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
767 ; CHECK-NEXT:    }
768 ; CHECK-NEXT:    {
769 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
770 ; CHECK-NEXT:    }
771 ; CHECK-NEXT:    {
772 ; CHECK-NEXT:     p0 = or(p2,or(p0,p1))
773 ; CHECK-NEXT:    }
774 ; CHECK-NEXT:    {
775 ; CHECK-NEXT:     r1:0 = mask(p0)
776 ; CHECK-NEXT:    }
777 ; CHECK-NEXT:    {
778 ; CHECK-NEXT:     jumpr r31
779 ; CHECK-NEXT:    }
781   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
782   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
783   %v2 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
784   %v3 = or <2 x i1> %v0, %v1
785   %v4 = or <2 x i1> %v2, %v3
786   %v5 = sext <2 x i1> %v4 to <2 x i32>
787   ret <2 x i32> %v5
790 define <2 x i32> @f22(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
791 ; CHECK-LABEL: f22:
792 ; CHECK:       // %bb.0: // %b0
793 ; CHECK-NEXT:    {
794 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
795 ; CHECK-NEXT:    }
796 ; CHECK-NEXT:    {
797 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
798 ; CHECK-NEXT:    }
799 ; CHECK-NEXT:    {
800 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
801 ; CHECK-NEXT:    }
802 ; CHECK-NEXT:    {
803 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
804 ; CHECK-NEXT:    }
805 ; CHECK-NEXT:    {
806 ; CHECK-NEXT:     p0 = and(p2,and(p0,!p1))
807 ; CHECK-NEXT:    }
808 ; CHECK-NEXT:    {
809 ; CHECK-NEXT:     r1:0 = mask(p0)
810 ; CHECK-NEXT:    }
811 ; CHECK-NEXT:    {
812 ; CHECK-NEXT:     jumpr r31
813 ; CHECK-NEXT:    }
815   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
816   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
817   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
818   %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
819   %v4 = and <2 x i1> %v0, %v2
820   %v5 = and <2 x i1> %v3, %v4
821   %v6 = sext <2 x i1> %v5 to <2 x i32>
822   ret <2 x i32> %v6
825 define <2 x i32> @f23(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
826 ; CHECK-LABEL: f23:
827 ; CHECK:       // %bb.0: // %b0
828 ; CHECK-NEXT:    {
829 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
830 ; CHECK-NEXT:    }
831 ; CHECK-NEXT:    {
832 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
833 ; CHECK-NEXT:    }
834 ; CHECK-NEXT:    {
835 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
836 ; CHECK-NEXT:    }
837 ; CHECK-NEXT:    {
838 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
839 ; CHECK-NEXT:    }
840 ; CHECK-NEXT:    {
841 ; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))
842 ; CHECK-NEXT:    }
843 ; CHECK-NEXT:    {
844 ; CHECK-NEXT:     r1:0 = mask(p0)
845 ; CHECK-NEXT:    }
846 ; CHECK-NEXT:    {
847 ; CHECK-NEXT:     jumpr r31
848 ; CHECK-NEXT:    }
850   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
851   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
852   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
853   %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
854   %v4 = or <2 x i1> %v0, %v2
855   %v5 = and <2 x i1> %v3, %v4
856   %v6 = sext <2 x i1> %v5 to <2 x i32>
857   ret <2 x i32> %v6
860 define <2 x i32> @f24(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
861 ; CHECK-LABEL: f24:
862 ; CHECK:       // %bb.0: // %b0
863 ; CHECK-NEXT:    {
864 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
865 ; CHECK-NEXT:    }
866 ; CHECK-NEXT:    {
867 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
868 ; CHECK-NEXT:    }
869 ; CHECK-NEXT:    {
870 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
871 ; CHECK-NEXT:    }
872 ; CHECK-NEXT:    {
873 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
874 ; CHECK-NEXT:    }
875 ; CHECK-NEXT:    {
876 ; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))
877 ; CHECK-NEXT:    }
878 ; CHECK-NEXT:    {
879 ; CHECK-NEXT:     r1:0 = mask(p0)
880 ; CHECK-NEXT:    }
881 ; CHECK-NEXT:    {
882 ; CHECK-NEXT:     jumpr r31
883 ; CHECK-NEXT:    }
885   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
886   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
887   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
888   %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
889   %v4 = and <2 x i1> %v0, %v2
890   %v5 = or <2 x i1> %v3, %v4
891   %v6 = sext <2 x i1> %v5 to <2 x i32>
892   ret <2 x i32> %v6
895 define <2 x i32> @f25(<2 x i32> %a0, <2 x i32> %a1, <2 x i32> %a2) #1 {
896 ; CHECK-LABEL: f25:
897 ; CHECK:       // %bb.0: // %b0
898 ; CHECK-NEXT:    {
899 ; CHECK-NEXT:     r7:6 = combine(#1,#1)
900 ; CHECK-NEXT:    }
901 ; CHECK-NEXT:    {
902 ; CHECK-NEXT:     p0 = vcmpw.eq(r1:0,r7:6)
903 ; CHECK-NEXT:    }
904 ; CHECK-NEXT:    {
905 ; CHECK-NEXT:     p1 = vcmpw.eq(r3:2,r7:6)
906 ; CHECK-NEXT:    }
907 ; CHECK-NEXT:    {
908 ; CHECK-NEXT:     p2 = vcmpw.eq(r5:4,r7:6)
909 ; CHECK-NEXT:    }
910 ; CHECK-NEXT:    {
911 ; CHECK-NEXT:     p0 = or(p2,or(p0,!p1))
912 ; CHECK-NEXT:    }
913 ; CHECK-NEXT:    {
914 ; CHECK-NEXT:     r1:0 = mask(p0)
915 ; CHECK-NEXT:    }
916 ; CHECK-NEXT:    {
917 ; CHECK-NEXT:     jumpr r31
918 ; CHECK-NEXT:    }
920   %v0 = icmp eq <2 x i32> %a0, <i32 1, i32 1>
921   %v1 = icmp eq <2 x i32> %a1, <i32 1, i32 1>
922   %v2 = xor <2 x i1> %v1, <i1 true, i1 true>
923   %v3 = icmp eq <2 x i32> %a2, <i32 1, i32 1>
924   %v4 = or <2 x i1> %v0, %v2
925   %v5 = or <2 x i1> %v3, %v4
926   %v6 = sext <2 x i1> %v5 to <2 x i32>
927   ret <2 x i32> %v6
930 define <4 x i16> @f26(<4 x i16> %a0, <4 x i16> %a1) #1 {
931 ; CHECK-LABEL: f26:
932 ; CHECK:       // %bb.0: // %b0
933 ; CHECK-NEXT:    {
934 ; CHECK-NEXT:     r4 = ##65537
935 ; CHECK-NEXT:    }
936 ; CHECK-NEXT:    {
937 ; CHECK-NEXT:     r5 = ##65537
938 ; CHECK-NEXT:    }
939 ; CHECK-NEXT:    {
940 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)
941 ; CHECK-NEXT:    }
942 ; CHECK-NEXT:    {
943 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)
944 ; CHECK-NEXT:    }
945 ; CHECK-NEXT:    {
946 ; CHECK-NEXT:     p0 = and(p0,p1)
947 ; CHECK-NEXT:    }
948 ; CHECK-NEXT:    {
949 ; CHECK-NEXT:     r1:0 = mask(p0)
950 ; CHECK-NEXT:    }
951 ; CHECK-NEXT:    {
952 ; CHECK-NEXT:     jumpr r31
953 ; CHECK-NEXT:    }
955   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
956   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
957   %v2 = and <4 x i1> %v0, %v1
958   %v3 = sext <4 x i1> %v2 to <4 x i16>
959   ret <4 x i16> %v3
962 define <4 x i16> @f27(<4 x i16> %a0, <4 x i16> %a1) #1 {
963 ; CHECK-LABEL: f27:
964 ; CHECK:       // %bb.0: // %b0
965 ; CHECK-NEXT:    {
966 ; CHECK-NEXT:     r4 = ##65537
967 ; CHECK-NEXT:    }
968 ; CHECK-NEXT:    {
969 ; CHECK-NEXT:     r5 = ##65537
970 ; CHECK-NEXT:    }
971 ; CHECK-NEXT:    {
972 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)
973 ; CHECK-NEXT:    }
974 ; CHECK-NEXT:    {
975 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)
976 ; CHECK-NEXT:    }
977 ; CHECK-NEXT:    {
978 ; CHECK-NEXT:     p0 = or(p0,p1)
979 ; CHECK-NEXT:    }
980 ; CHECK-NEXT:    {
981 ; CHECK-NEXT:     r1:0 = mask(p0)
982 ; CHECK-NEXT:    }
983 ; CHECK-NEXT:    {
984 ; CHECK-NEXT:     jumpr r31
985 ; CHECK-NEXT:    }
987   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
988   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
989   %v2 = or <4 x i1> %v0, %v1
990   %v3 = sext <4 x i1> %v2 to <4 x i16>
991   ret <4 x i16> %v3
994 define <4 x i16> @f28(<4 x i16> %a0, <4 x i16> %a1) #1 {
995 ; CHECK-LABEL: f28:
996 ; CHECK:       // %bb.0: // %b0
997 ; CHECK-NEXT:    {
998 ; CHECK-NEXT:     r4 = ##65537
999 ; CHECK-NEXT:    }
1000 ; CHECK-NEXT:    {
1001 ; CHECK-NEXT:     r5 = ##65537
1002 ; CHECK-NEXT:    }
1003 ; CHECK-NEXT:    {
1004 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)
1005 ; CHECK-NEXT:    }
1006 ; CHECK-NEXT:    {
1007 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)
1008 ; CHECK-NEXT:    }
1009 ; CHECK-NEXT:    {
1010 ; CHECK-NEXT:     p0 = xor(p0,p1)
1011 ; CHECK-NEXT:    }
1012 ; CHECK-NEXT:    {
1013 ; CHECK-NEXT:     r1:0 = mask(p0)
1014 ; CHECK-NEXT:    }
1015 ; CHECK-NEXT:    {
1016 ; CHECK-NEXT:     jumpr r31
1017 ; CHECK-NEXT:    }
1019   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1020   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1021   %v2 = xor <4 x i1> %v0, %v1
1022   %v3 = sext <4 x i1> %v2 to <4 x i16>
1023   ret <4 x i16> %v3
1026 define <4 x i16> @f29(<4 x i16> %a0, <4 x i16> %a1) #1 {
1027 ; CHECK-LABEL: f29:
1028 ; CHECK:       // %bb.0: // %b0
1029 ; CHECK-NEXT:    {
1030 ; CHECK-NEXT:     r4 = ##65537
1031 ; CHECK-NEXT:    }
1032 ; CHECK-NEXT:    {
1033 ; CHECK-NEXT:     r5 = ##65537
1034 ; CHECK-NEXT:    }
1035 ; CHECK-NEXT:    {
1036 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)
1037 ; CHECK-NEXT:    }
1038 ; CHECK-NEXT:    {
1039 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)
1040 ; CHECK-NEXT:    }
1041 ; CHECK-NEXT:    {
1042 ; CHECK-NEXT:     p0 = and(p0,!p1)
1043 ; CHECK-NEXT:    }
1044 ; CHECK-NEXT:    {
1045 ; CHECK-NEXT:     r1:0 = mask(p0)
1046 ; CHECK-NEXT:    }
1047 ; CHECK-NEXT:    {
1048 ; CHECK-NEXT:     jumpr r31
1049 ; CHECK-NEXT:    }
1051   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1052   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1053   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1054   %v3 = and <4 x i1> %v0, %v2
1055   %v4 = sext <4 x i1> %v3 to <4 x i16>
1056   ret <4 x i16> %v4
1059 define <4 x i16> @f30(<4 x i16> %a0, <4 x i16> %a1) #1 {
1060 ; CHECK-LABEL: f30:
1061 ; CHECK:       // %bb.0: // %b0
1062 ; CHECK-NEXT:    {
1063 ; CHECK-NEXT:     r4 = ##65537
1064 ; CHECK-NEXT:    }
1065 ; CHECK-NEXT:    {
1066 ; CHECK-NEXT:     r5 = ##65537
1067 ; CHECK-NEXT:    }
1068 ; CHECK-NEXT:    {
1069 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r5:4)
1070 ; CHECK-NEXT:    }
1071 ; CHECK-NEXT:    {
1072 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r5:4)
1073 ; CHECK-NEXT:    }
1074 ; CHECK-NEXT:    {
1075 ; CHECK-NEXT:     p0 = or(p0,!p1)
1076 ; CHECK-NEXT:    }
1077 ; CHECK-NEXT:    {
1078 ; CHECK-NEXT:     r1:0 = mask(p0)
1079 ; CHECK-NEXT:    }
1080 ; CHECK-NEXT:    {
1081 ; CHECK-NEXT:     jumpr r31
1082 ; CHECK-NEXT:    }
1084   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1085   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1086   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1087   %v3 = or <4 x i1> %v0, %v2
1088   %v4 = sext <4 x i1> %v3 to <4 x i16>
1089   ret <4 x i16> %v4
1092 define <4 x i16> @f31(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1093 ; CHECK-LABEL: f31:
1094 ; CHECK:       // %bb.0: // %b0
1095 ; CHECK-NEXT:    {
1096 ; CHECK-NEXT:     r6 = ##65537
1097 ; CHECK-NEXT:    }
1098 ; CHECK-NEXT:    {
1099 ; CHECK-NEXT:     r7 = ##65537
1100 ; CHECK-NEXT:    }
1101 ; CHECK-NEXT:    {
1102 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1103 ; CHECK-NEXT:    }
1104 ; CHECK-NEXT:    {
1105 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1106 ; CHECK-NEXT:    }
1107 ; CHECK-NEXT:    {
1108 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1109 ; CHECK-NEXT:    }
1110 ; CHECK-NEXT:    {
1111 ; CHECK-NEXT:     p0 = and(p2,and(p0,p1))
1112 ; CHECK-NEXT:    }
1113 ; CHECK-NEXT:    {
1114 ; CHECK-NEXT:     r1:0 = mask(p0)
1115 ; CHECK-NEXT:    }
1116 ; CHECK-NEXT:    {
1117 ; CHECK-NEXT:     jumpr r31
1118 ; CHECK-NEXT:    }
1120   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1121   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1122   %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1123   %v3 = and <4 x i1> %v0, %v1
1124   %v4 = and <4 x i1> %v2, %v3
1125   %v5 = sext <4 x i1> %v4 to <4 x i16>
1126   ret <4 x i16> %v5
1129 define <4 x i16> @f32(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1130 ; CHECK-LABEL: f32:
1131 ; CHECK:       // %bb.0: // %b0
1132 ; CHECK-NEXT:    {
1133 ; CHECK-NEXT:     r6 = ##65537
1134 ; CHECK-NEXT:    }
1135 ; CHECK-NEXT:    {
1136 ; CHECK-NEXT:     r7 = ##65537
1137 ; CHECK-NEXT:    }
1138 ; CHECK-NEXT:    {
1139 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1140 ; CHECK-NEXT:    }
1141 ; CHECK-NEXT:    {
1142 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1143 ; CHECK-NEXT:    }
1144 ; CHECK-NEXT:    {
1145 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1146 ; CHECK-NEXT:    }
1147 ; CHECK-NEXT:    {
1148 ; CHECK-NEXT:     p0 = and(p2,or(p0,p1))
1149 ; CHECK-NEXT:    }
1150 ; CHECK-NEXT:    {
1151 ; CHECK-NEXT:     r1:0 = mask(p0)
1152 ; CHECK-NEXT:    }
1153 ; CHECK-NEXT:    {
1154 ; CHECK-NEXT:     jumpr r31
1155 ; CHECK-NEXT:    }
1157   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1158   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1159   %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1160   %v3 = or <4 x i1> %v0, %v1
1161   %v4 = and <4 x i1> %v2, %v3
1162   %v5 = sext <4 x i1> %v4 to <4 x i16>
1163   ret <4 x i16> %v5
1166 define <4 x i16> @f33(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1167 ; CHECK-LABEL: f33:
1168 ; CHECK:       // %bb.0: // %b0
1169 ; CHECK-NEXT:    {
1170 ; CHECK-NEXT:     r6 = ##65537
1171 ; CHECK-NEXT:    }
1172 ; CHECK-NEXT:    {
1173 ; CHECK-NEXT:     r7 = ##65537
1174 ; CHECK-NEXT:    }
1175 ; CHECK-NEXT:    {
1176 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1177 ; CHECK-NEXT:    }
1178 ; CHECK-NEXT:    {
1179 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1180 ; CHECK-NEXT:    }
1181 ; CHECK-NEXT:    {
1182 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1183 ; CHECK-NEXT:    }
1184 ; CHECK-NEXT:    {
1185 ; CHECK-NEXT:     p0 = or(p2,and(p0,p1))
1186 ; CHECK-NEXT:    }
1187 ; CHECK-NEXT:    {
1188 ; CHECK-NEXT:     r1:0 = mask(p0)
1189 ; CHECK-NEXT:    }
1190 ; CHECK-NEXT:    {
1191 ; CHECK-NEXT:     jumpr r31
1192 ; CHECK-NEXT:    }
1194   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1195   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1196   %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1197   %v3 = and <4 x i1> %v0, %v1
1198   %v4 = or <4 x i1> %v2, %v3
1199   %v5 = sext <4 x i1> %v4 to <4 x i16>
1200   ret <4 x i16> %v5
1203 define <4 x i16> @f34(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1204 ; CHECK-LABEL: f34:
1205 ; CHECK:       // %bb.0: // %b0
1206 ; CHECK-NEXT:    {
1207 ; CHECK-NEXT:     r6 = ##65537
1208 ; CHECK-NEXT:    }
1209 ; CHECK-NEXT:    {
1210 ; CHECK-NEXT:     r7 = ##65537
1211 ; CHECK-NEXT:    }
1212 ; CHECK-NEXT:    {
1213 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1214 ; CHECK-NEXT:    }
1215 ; CHECK-NEXT:    {
1216 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1217 ; CHECK-NEXT:    }
1218 ; CHECK-NEXT:    {
1219 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1220 ; CHECK-NEXT:    }
1221 ; CHECK-NEXT:    {
1222 ; CHECK-NEXT:     p0 = or(p2,or(p0,p1))
1223 ; CHECK-NEXT:    }
1224 ; CHECK-NEXT:    {
1225 ; CHECK-NEXT:     r1:0 = mask(p0)
1226 ; CHECK-NEXT:    }
1227 ; CHECK-NEXT:    {
1228 ; CHECK-NEXT:     jumpr r31
1229 ; CHECK-NEXT:    }
1231   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1232   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1233   %v2 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1234   %v3 = or <4 x i1> %v0, %v1
1235   %v4 = or <4 x i1> %v2, %v3
1236   %v5 = sext <4 x i1> %v4 to <4 x i16>
1237   ret <4 x i16> %v5
1240 define <4 x i16> @f35(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1241 ; CHECK-LABEL: f35:
1242 ; CHECK:       // %bb.0: // %b0
1243 ; CHECK-NEXT:    {
1244 ; CHECK-NEXT:     r6 = ##65537
1245 ; CHECK-NEXT:    }
1246 ; CHECK-NEXT:    {
1247 ; CHECK-NEXT:     r7 = ##65537
1248 ; CHECK-NEXT:    }
1249 ; CHECK-NEXT:    {
1250 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1251 ; CHECK-NEXT:    }
1252 ; CHECK-NEXT:    {
1253 ; CHECK-NEXT:     p1 = vcmph.eq(r5:4,r7:6)
1254 ; CHECK-NEXT:    }
1255 ; CHECK-NEXT:    {
1256 ; CHECK-NEXT:     p2 = vcmph.eq(r3:2,r7:6)
1257 ; CHECK-NEXT:    }
1258 ; CHECK-NEXT:    {
1259 ; CHECK-NEXT:     p0 = and(p0,p1)
1260 ; CHECK-NEXT:    }
1261 ; CHECK-NEXT:    {
1262 ; CHECK-NEXT:     p0 = and(p0,!p2)
1263 ; CHECK-NEXT:    }
1264 ; CHECK-NEXT:    {
1265 ; CHECK-NEXT:     r1:0 = mask(p0)
1266 ; CHECK-NEXT:    }
1267 ; CHECK-NEXT:    {
1268 ; CHECK-NEXT:     jumpr r31
1269 ; CHECK-NEXT:    }
1271   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1272   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1273   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1274   %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1275   %v4 = and <4 x i1> %v0, %v2
1276   %v5 = and <4 x i1> %v3, %v4
1277   %v6 = sext <4 x i1> %v5 to <4 x i16>
1278   ret <4 x i16> %v6
1281 define <4 x i16> @f36(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1282 ; CHECK-LABEL: f36:
1283 ; CHECK:       // %bb.0: // %b0
1284 ; CHECK-NEXT:    {
1285 ; CHECK-NEXT:     r6 = ##65537
1286 ; CHECK-NEXT:    }
1287 ; CHECK-NEXT:    {
1288 ; CHECK-NEXT:     r7 = ##65537
1289 ; CHECK-NEXT:    }
1290 ; CHECK-NEXT:    {
1291 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1292 ; CHECK-NEXT:    }
1293 ; CHECK-NEXT:    {
1294 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1295 ; CHECK-NEXT:    }
1296 ; CHECK-NEXT:    {
1297 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1298 ; CHECK-NEXT:    }
1299 ; CHECK-NEXT:    {
1300 ; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))
1301 ; CHECK-NEXT:    }
1302 ; CHECK-NEXT:    {
1303 ; CHECK-NEXT:     r1:0 = mask(p0)
1304 ; CHECK-NEXT:    }
1305 ; CHECK-NEXT:    {
1306 ; CHECK-NEXT:     jumpr r31
1307 ; CHECK-NEXT:    }
1309   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1310   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1311   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1312   %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1313   %v4 = or <4 x i1> %v0, %v2
1314   %v5 = and <4 x i1> %v3, %v4
1315   %v6 = sext <4 x i1> %v5 to <4 x i16>
1316   ret <4 x i16> %v6
1319 define <4 x i16> @f37(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1320 ; CHECK-LABEL: f37:
1321 ; CHECK:       // %bb.0: // %b0
1322 ; CHECK-NEXT:    {
1323 ; CHECK-NEXT:     r6 = ##65537
1324 ; CHECK-NEXT:    }
1325 ; CHECK-NEXT:    {
1326 ; CHECK-NEXT:     r7 = ##65537
1327 ; CHECK-NEXT:    }
1328 ; CHECK-NEXT:    {
1329 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1330 ; CHECK-NEXT:    }
1331 ; CHECK-NEXT:    {
1332 ; CHECK-NEXT:     p1 = vcmph.eq(r3:2,r7:6)
1333 ; CHECK-NEXT:    }
1334 ; CHECK-NEXT:    {
1335 ; CHECK-NEXT:     p2 = vcmph.eq(r5:4,r7:6)
1336 ; CHECK-NEXT:    }
1337 ; CHECK-NEXT:    {
1338 ; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))
1339 ; CHECK-NEXT:    }
1340 ; CHECK-NEXT:    {
1341 ; CHECK-NEXT:     r1:0 = mask(p0)
1342 ; CHECK-NEXT:    }
1343 ; CHECK-NEXT:    {
1344 ; CHECK-NEXT:     jumpr r31
1345 ; CHECK-NEXT:    }
1347   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1348   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1349   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1350   %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1351   %v4 = and <4 x i1> %v0, %v2
1352   %v5 = or <4 x i1> %v3, %v4
1353   %v6 = sext <4 x i1> %v5 to <4 x i16>
1354   ret <4 x i16> %v6
1357 define <4 x i16> @f38(<4 x i16> %a0, <4 x i16> %a1, <4 x i16> %a2) #1 {
1358 ; CHECK-LABEL: f38:
1359 ; CHECK:       // %bb.0: // %b0
1360 ; CHECK-NEXT:    {
1361 ; CHECK-NEXT:     r6 = ##65537
1362 ; CHECK-NEXT:    }
1363 ; CHECK-NEXT:    {
1364 ; CHECK-NEXT:     r7 = ##65537
1365 ; CHECK-NEXT:    }
1366 ; CHECK-NEXT:    {
1367 ; CHECK-NEXT:     p0 = vcmph.eq(r1:0,r7:6)
1368 ; CHECK-NEXT:    }
1369 ; CHECK-NEXT:    {
1370 ; CHECK-NEXT:     p1 = vcmph.eq(r5:4,r7:6)
1371 ; CHECK-NEXT:    }
1372 ; CHECK-NEXT:    {
1373 ; CHECK-NEXT:     p2 = vcmph.eq(r3:2,r7:6)
1374 ; CHECK-NEXT:    }
1375 ; CHECK-NEXT:    {
1376 ; CHECK-NEXT:     p0 = or(p0,p1)
1377 ; CHECK-NEXT:    }
1378 ; CHECK-NEXT:    {
1379 ; CHECK-NEXT:     p0 = or(p0,!p2)
1380 ; CHECK-NEXT:    }
1381 ; CHECK-NEXT:    {
1382 ; CHECK-NEXT:     r1:0 = mask(p0)
1383 ; CHECK-NEXT:    }
1384 ; CHECK-NEXT:    {
1385 ; CHECK-NEXT:     jumpr r31
1386 ; CHECK-NEXT:    }
1388   %v0 = icmp eq <4 x i16> %a0, <i16 1, i16 1, i16 1, i16 1>
1389   %v1 = icmp eq <4 x i16> %a1, <i16 1, i16 1, i16 1, i16 1>
1390   %v2 = xor <4 x i1> %v1, <i1 true, i1 true, i1 true, i1 true>
1391   %v3 = icmp eq <4 x i16> %a2, <i16 1, i16 1, i16 1, i16 1>
1392   %v4 = or <4 x i1> %v0, %v2
1393   %v5 = or <4 x i1> %v3, %v4
1394   %v6 = sext <4 x i1> %v5 to <4 x i16>
1395   ret <4 x i16> %v6
1398 define <8 x i8> @f39(<8 x i8> %a0, <8 x i8> %a1) #1 {
1399 ; CHECK-LABEL: f39:
1400 ; CHECK:       // %bb.0: // %b0
1401 ; CHECK-NEXT:    {
1402 ; CHECK-NEXT:     r4 = ##16843009
1403 ; CHECK-NEXT:    }
1404 ; CHECK-NEXT:    {
1405 ; CHECK-NEXT:     r5 = ##16843009
1406 ; CHECK-NEXT:    }
1407 ; CHECK-NEXT:    {
1408 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)
1409 ; CHECK-NEXT:    }
1410 ; CHECK-NEXT:    {
1411 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)
1412 ; CHECK-NEXT:    }
1413 ; CHECK-NEXT:    {
1414 ; CHECK-NEXT:     p0 = and(p0,p1)
1415 ; CHECK-NEXT:    }
1416 ; CHECK-NEXT:    {
1417 ; CHECK-NEXT:     r1:0 = mask(p0)
1418 ; CHECK-NEXT:    }
1419 ; CHECK-NEXT:    {
1420 ; CHECK-NEXT:     jumpr r31
1421 ; CHECK-NEXT:    }
1423   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1424   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1425   %v2 = and <8 x i1> %v0, %v1
1426   %v3 = sext <8 x i1> %v2 to <8 x i8>
1427   ret <8 x i8> %v3
1430 define <8 x i8> @f40(<8 x i8> %a0, <8 x i8> %a1) #1 {
1431 ; CHECK-LABEL: f40:
1432 ; CHECK:       // %bb.0: // %b0
1433 ; CHECK-NEXT:    {
1434 ; CHECK-NEXT:     r4 = ##16843009
1435 ; CHECK-NEXT:    }
1436 ; CHECK-NEXT:    {
1437 ; CHECK-NEXT:     r5 = ##16843009
1438 ; CHECK-NEXT:    }
1439 ; CHECK-NEXT:    {
1440 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)
1441 ; CHECK-NEXT:    }
1442 ; CHECK-NEXT:    {
1443 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)
1444 ; CHECK-NEXT:    }
1445 ; CHECK-NEXT:    {
1446 ; CHECK-NEXT:     p0 = or(p0,p1)
1447 ; CHECK-NEXT:    }
1448 ; CHECK-NEXT:    {
1449 ; CHECK-NEXT:     r1:0 = mask(p0)
1450 ; CHECK-NEXT:    }
1451 ; CHECK-NEXT:    {
1452 ; CHECK-NEXT:     jumpr r31
1453 ; CHECK-NEXT:    }
1455   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1456   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1457   %v2 = or <8 x i1> %v0, %v1
1458   %v3 = sext <8 x i1> %v2 to <8 x i8>
1459   ret <8 x i8> %v3
1462 define <8 x i8> @f41(<8 x i8> %a0, <8 x i8> %a1) #1 {
1463 ; CHECK-LABEL: f41:
1464 ; CHECK:       // %bb.0: // %b0
1465 ; CHECK-NEXT:    {
1466 ; CHECK-NEXT:     r4 = ##16843009
1467 ; CHECK-NEXT:    }
1468 ; CHECK-NEXT:    {
1469 ; CHECK-NEXT:     r5 = ##16843009
1470 ; CHECK-NEXT:    }
1471 ; CHECK-NEXT:    {
1472 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)
1473 ; CHECK-NEXT:    }
1474 ; CHECK-NEXT:    {
1475 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)
1476 ; CHECK-NEXT:    }
1477 ; CHECK-NEXT:    {
1478 ; CHECK-NEXT:     p0 = xor(p0,p1)
1479 ; CHECK-NEXT:    }
1480 ; CHECK-NEXT:    {
1481 ; CHECK-NEXT:     r1:0 = mask(p0)
1482 ; CHECK-NEXT:    }
1483 ; CHECK-NEXT:    {
1484 ; CHECK-NEXT:     jumpr r31
1485 ; CHECK-NEXT:    }
1487   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1488   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1489   %v2 = xor <8 x i1> %v0, %v1
1490   %v3 = sext <8 x i1> %v2 to <8 x i8>
1491   ret <8 x i8> %v3
1494 define <8 x i8> @f42(<8 x i8> %a0, <8 x i8> %a1) #1 {
1495 ; CHECK-LABEL: f42:
1496 ; CHECK:       // %bb.0: // %b0
1497 ; CHECK-NEXT:    {
1498 ; CHECK-NEXT:     r4 = ##16843009
1499 ; CHECK-NEXT:    }
1500 ; CHECK-NEXT:    {
1501 ; CHECK-NEXT:     r5 = ##16843009
1502 ; CHECK-NEXT:    }
1503 ; CHECK-NEXT:    {
1504 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)
1505 ; CHECK-NEXT:    }
1506 ; CHECK-NEXT:    {
1507 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)
1508 ; CHECK-NEXT:    }
1509 ; CHECK-NEXT:    {
1510 ; CHECK-NEXT:     p0 = and(p0,!p1)
1511 ; CHECK-NEXT:    }
1512 ; CHECK-NEXT:    {
1513 ; CHECK-NEXT:     r1:0 = mask(p0)
1514 ; CHECK-NEXT:    }
1515 ; CHECK-NEXT:    {
1516 ; CHECK-NEXT:     jumpr r31
1517 ; CHECK-NEXT:    }
1519   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1520   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1521   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1522   %v3 = and <8 x i1> %v0, %v2
1523   %v4 = sext <8 x i1> %v3 to <8 x i8>
1524   ret <8 x i8> %v4
1527 define <8 x i8> @f43(<8 x i8> %a0, <8 x i8> %a1) #1 {
1528 ; CHECK-LABEL: f43:
1529 ; CHECK:       // %bb.0: // %b0
1530 ; CHECK-NEXT:    {
1531 ; CHECK-NEXT:     r4 = ##16843009
1532 ; CHECK-NEXT:    }
1533 ; CHECK-NEXT:    {
1534 ; CHECK-NEXT:     r5 = ##16843009
1535 ; CHECK-NEXT:    }
1536 ; CHECK-NEXT:    {
1537 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r5:4)
1538 ; CHECK-NEXT:    }
1539 ; CHECK-NEXT:    {
1540 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r5:4)
1541 ; CHECK-NEXT:    }
1542 ; CHECK-NEXT:    {
1543 ; CHECK-NEXT:     p0 = or(p0,!p1)
1544 ; CHECK-NEXT:    }
1545 ; CHECK-NEXT:    {
1546 ; CHECK-NEXT:     r1:0 = mask(p0)
1547 ; CHECK-NEXT:    }
1548 ; CHECK-NEXT:    {
1549 ; CHECK-NEXT:     jumpr r31
1550 ; CHECK-NEXT:    }
1552   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1553   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1554   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1555   %v3 = or <8 x i1> %v0, %v2
1556   %v4 = sext <8 x i1> %v3 to <8 x i8>
1557   ret <8 x i8> %v4
1560 define <8 x i8> @f44(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1561 ; CHECK-LABEL: f44:
1562 ; CHECK:       // %bb.0: // %b0
1563 ; CHECK-NEXT:    {
1564 ; CHECK-NEXT:     r6 = ##16843009
1565 ; CHECK-NEXT:    }
1566 ; CHECK-NEXT:    {
1567 ; CHECK-NEXT:     r7 = ##16843009
1568 ; CHECK-NEXT:    }
1569 ; CHECK-NEXT:    {
1570 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1571 ; CHECK-NEXT:    }
1572 ; CHECK-NEXT:    {
1573 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1574 ; CHECK-NEXT:    }
1575 ; CHECK-NEXT:    {
1576 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1577 ; CHECK-NEXT:    }
1578 ; CHECK-NEXT:    {
1579 ; CHECK-NEXT:     p0 = and(p2,and(p0,p1))
1580 ; CHECK-NEXT:    }
1581 ; CHECK-NEXT:    {
1582 ; CHECK-NEXT:     r1:0 = mask(p0)
1583 ; CHECK-NEXT:    }
1584 ; CHECK-NEXT:    {
1585 ; CHECK-NEXT:     jumpr r31
1586 ; CHECK-NEXT:    }
1588   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1589   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1590   %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1591   %v3 = and <8 x i1> %v0, %v1
1592   %v4 = and <8 x i1> %v2, %v3
1593   %v5 = sext <8 x i1> %v4 to <8 x i8>
1594   ret <8 x i8> %v5
1597 define <8 x i8> @f45(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1598 ; CHECK-LABEL: f45:
1599 ; CHECK:       // %bb.0: // %b0
1600 ; CHECK-NEXT:    {
1601 ; CHECK-NEXT:     r6 = ##16843009
1602 ; CHECK-NEXT:    }
1603 ; CHECK-NEXT:    {
1604 ; CHECK-NEXT:     r7 = ##16843009
1605 ; CHECK-NEXT:    }
1606 ; CHECK-NEXT:    {
1607 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1608 ; CHECK-NEXT:    }
1609 ; CHECK-NEXT:    {
1610 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1611 ; CHECK-NEXT:    }
1612 ; CHECK-NEXT:    {
1613 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1614 ; CHECK-NEXT:    }
1615 ; CHECK-NEXT:    {
1616 ; CHECK-NEXT:     p0 = and(p2,or(p0,p1))
1617 ; CHECK-NEXT:    }
1618 ; CHECK-NEXT:    {
1619 ; CHECK-NEXT:     r1:0 = mask(p0)
1620 ; CHECK-NEXT:    }
1621 ; CHECK-NEXT:    {
1622 ; CHECK-NEXT:     jumpr r31
1623 ; CHECK-NEXT:    }
1625   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1626   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1627   %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1628   %v3 = or <8 x i1> %v0, %v1
1629   %v4 = and <8 x i1> %v2, %v3
1630   %v5 = sext <8 x i1> %v4 to <8 x i8>
1631   ret <8 x i8> %v5
1634 define <8 x i8> @f46(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1635 ; CHECK-LABEL: f46:
1636 ; CHECK:       // %bb.0: // %b0
1637 ; CHECK-NEXT:    {
1638 ; CHECK-NEXT:     r6 = ##16843009
1639 ; CHECK-NEXT:    }
1640 ; CHECK-NEXT:    {
1641 ; CHECK-NEXT:     r7 = ##16843009
1642 ; CHECK-NEXT:    }
1643 ; CHECK-NEXT:    {
1644 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1645 ; CHECK-NEXT:    }
1646 ; CHECK-NEXT:    {
1647 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1648 ; CHECK-NEXT:    }
1649 ; CHECK-NEXT:    {
1650 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1651 ; CHECK-NEXT:    }
1652 ; CHECK-NEXT:    {
1653 ; CHECK-NEXT:     p0 = or(p2,and(p0,p1))
1654 ; CHECK-NEXT:    }
1655 ; CHECK-NEXT:    {
1656 ; CHECK-NEXT:     r1:0 = mask(p0)
1657 ; CHECK-NEXT:    }
1658 ; CHECK-NEXT:    {
1659 ; CHECK-NEXT:     jumpr r31
1660 ; CHECK-NEXT:    }
1662   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1663   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1664   %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1665   %v3 = and <8 x i1> %v0, %v1
1666   %v4 = or <8 x i1> %v2, %v3
1667   %v5 = sext <8 x i1> %v4 to <8 x i8>
1668   ret <8 x i8> %v5
1671 define <8 x i8> @f47(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1672 ; CHECK-LABEL: f47:
1673 ; CHECK:       // %bb.0: // %b0
1674 ; CHECK-NEXT:    {
1675 ; CHECK-NEXT:     r6 = ##16843009
1676 ; CHECK-NEXT:    }
1677 ; CHECK-NEXT:    {
1678 ; CHECK-NEXT:     r7 = ##16843009
1679 ; CHECK-NEXT:    }
1680 ; CHECK-NEXT:    {
1681 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1682 ; CHECK-NEXT:    }
1683 ; CHECK-NEXT:    {
1684 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1685 ; CHECK-NEXT:    }
1686 ; CHECK-NEXT:    {
1687 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1688 ; CHECK-NEXT:    }
1689 ; CHECK-NEXT:    {
1690 ; CHECK-NEXT:     p0 = or(p2,or(p0,p1))
1691 ; CHECK-NEXT:    }
1692 ; CHECK-NEXT:    {
1693 ; CHECK-NEXT:     r1:0 = mask(p0)
1694 ; CHECK-NEXT:    }
1695 ; CHECK-NEXT:    {
1696 ; CHECK-NEXT:     jumpr r31
1697 ; CHECK-NEXT:    }
1699   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1700   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1701   %v2 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1702   %v3 = or <8 x i1> %v0, %v1
1703   %v4 = or <8 x i1> %v2, %v3
1704   %v5 = sext <8 x i1> %v4 to <8 x i8>
1705   ret <8 x i8> %v5
1708 define <8 x i8> @f48(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1709 ; CHECK-LABEL: f48:
1710 ; CHECK:       // %bb.0: // %b0
1711 ; CHECK-NEXT:    {
1712 ; CHECK-NEXT:     r6 = ##16843009
1713 ; CHECK-NEXT:    }
1714 ; CHECK-NEXT:    {
1715 ; CHECK-NEXT:     r7 = ##16843009
1716 ; CHECK-NEXT:    }
1717 ; CHECK-NEXT:    {
1718 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1719 ; CHECK-NEXT:    }
1720 ; CHECK-NEXT:    {
1721 ; CHECK-NEXT:     p1 = vcmpb.eq(r5:4,r7:6)
1722 ; CHECK-NEXT:    }
1723 ; CHECK-NEXT:    {
1724 ; CHECK-NEXT:     p2 = vcmpb.eq(r3:2,r7:6)
1725 ; CHECK-NEXT:    }
1726 ; CHECK-NEXT:    {
1727 ; CHECK-NEXT:     p0 = and(p0,p1)
1728 ; CHECK-NEXT:    }
1729 ; CHECK-NEXT:    {
1730 ; CHECK-NEXT:     p0 = and(p0,!p2)
1731 ; CHECK-NEXT:    }
1732 ; CHECK-NEXT:    {
1733 ; CHECK-NEXT:     r1:0 = mask(p0)
1734 ; CHECK-NEXT:    }
1735 ; CHECK-NEXT:    {
1736 ; CHECK-NEXT:     jumpr r31
1737 ; CHECK-NEXT:    }
1739   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1740   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1741   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1742   %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1743   %v4 = and <8 x i1> %v0, %v2
1744   %v5 = and <8 x i1> %v3, %v4
1745   %v6 = sext <8 x i1> %v5 to <8 x i8>
1746   ret <8 x i8> %v6
1749 define <8 x i8> @f49(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1750 ; CHECK-LABEL: f49:
1751 ; CHECK:       // %bb.0: // %b0
1752 ; CHECK-NEXT:    {
1753 ; CHECK-NEXT:     r6 = ##16843009
1754 ; CHECK-NEXT:    }
1755 ; CHECK-NEXT:    {
1756 ; CHECK-NEXT:     r7 = ##16843009
1757 ; CHECK-NEXT:    }
1758 ; CHECK-NEXT:    {
1759 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1760 ; CHECK-NEXT:    }
1761 ; CHECK-NEXT:    {
1762 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1763 ; CHECK-NEXT:    }
1764 ; CHECK-NEXT:    {
1765 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1766 ; CHECK-NEXT:    }
1767 ; CHECK-NEXT:    {
1768 ; CHECK-NEXT:     p0 = and(p2,or(p0,!p1))
1769 ; CHECK-NEXT:    }
1770 ; CHECK-NEXT:    {
1771 ; CHECK-NEXT:     r1:0 = mask(p0)
1772 ; CHECK-NEXT:    }
1773 ; CHECK-NEXT:    {
1774 ; CHECK-NEXT:     jumpr r31
1775 ; CHECK-NEXT:    }
1777   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1778   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1779   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1780   %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1781   %v4 = or <8 x i1> %v0, %v2
1782   %v5 = and <8 x i1> %v3, %v4
1783   %v6 = sext <8 x i1> %v5 to <8 x i8>
1784   ret <8 x i8> %v6
1787 define <8 x i8> @f50(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1788 ; CHECK-LABEL: f50:
1789 ; CHECK:       // %bb.0: // %b0
1790 ; CHECK-NEXT:    {
1791 ; CHECK-NEXT:     r6 = ##16843009
1792 ; CHECK-NEXT:    }
1793 ; CHECK-NEXT:    {
1794 ; CHECK-NEXT:     r7 = ##16843009
1795 ; CHECK-NEXT:    }
1796 ; CHECK-NEXT:    {
1797 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1798 ; CHECK-NEXT:    }
1799 ; CHECK-NEXT:    {
1800 ; CHECK-NEXT:     p1 = vcmpb.eq(r3:2,r7:6)
1801 ; CHECK-NEXT:    }
1802 ; CHECK-NEXT:    {
1803 ; CHECK-NEXT:     p2 = vcmpb.eq(r5:4,r7:6)
1804 ; CHECK-NEXT:    }
1805 ; CHECK-NEXT:    {
1806 ; CHECK-NEXT:     p0 = or(p2,and(p0,!p1))
1807 ; CHECK-NEXT:    }
1808 ; CHECK-NEXT:    {
1809 ; CHECK-NEXT:     r1:0 = mask(p0)
1810 ; CHECK-NEXT:    }
1811 ; CHECK-NEXT:    {
1812 ; CHECK-NEXT:     jumpr r31
1813 ; CHECK-NEXT:    }
1815   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1816   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1817   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1818   %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1819   %v4 = and <8 x i1> %v0, %v2
1820   %v5 = or <8 x i1> %v3, %v4
1821   %v6 = sext <8 x i1> %v5 to <8 x i8>
1822   ret <8 x i8> %v6
1825 define <8 x i8> @f51(<8 x i8> %a0, <8 x i8> %a1, <8 x i8> %a2) #1 {
1826 ; CHECK-LABEL: f51:
1827 ; CHECK:       // %bb.0: // %b0
1828 ; CHECK-NEXT:    {
1829 ; CHECK-NEXT:     r6 = ##16843009
1830 ; CHECK-NEXT:    }
1831 ; CHECK-NEXT:    {
1832 ; CHECK-NEXT:     r7 = ##16843009
1833 ; CHECK-NEXT:    }
1834 ; CHECK-NEXT:    {
1835 ; CHECK-NEXT:     p0 = vcmpb.eq(r1:0,r7:6)
1836 ; CHECK-NEXT:    }
1837 ; CHECK-NEXT:    {
1838 ; CHECK-NEXT:     p1 = vcmpb.eq(r5:4,r7:6)
1839 ; CHECK-NEXT:    }
1840 ; CHECK-NEXT:    {
1841 ; CHECK-NEXT:     p2 = vcmpb.eq(r3:2,r7:6)
1842 ; CHECK-NEXT:    }
1843 ; CHECK-NEXT:    {
1844 ; CHECK-NEXT:     p0 = or(p0,p1)
1845 ; CHECK-NEXT:    }
1846 ; CHECK-NEXT:    {
1847 ; CHECK-NEXT:     p0 = or(p0,!p2)
1848 ; CHECK-NEXT:    }
1849 ; CHECK-NEXT:    {
1850 ; CHECK-NEXT:     r1:0 = mask(p0)
1851 ; CHECK-NEXT:    }
1852 ; CHECK-NEXT:    {
1853 ; CHECK-NEXT:     jumpr r31
1854 ; CHECK-NEXT:    }
1856   %v0 = icmp eq <8 x i8> %a0, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1857   %v1 = icmp eq <8 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1858   %v2 = xor <8 x i1> %v1, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
1859   %v3 = icmp eq <8 x i8> %a2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1860   %v4 = or <8 x i1> %v0, %v2
1861   %v5 = or <8 x i1> %v3, %v4
1862   %v6 = sext <8 x i1> %v5 to <8 x i8>
1863   ret <8 x i8> %v6
1866 attributes #0 = { nounwind readnone }
1867 attributes #1 = { nounwind "target-features"="-small-data,-packets" }