1 ; RUN: llc -march=x86-64 -mcpu=core2 < %s | FileCheck %s -check-prefix=SSE2
2 ; RUN: llc -march=x86-64 -mcpu=corei7 < %s | FileCheck %s -check-prefix=SSE4
3 ; RUN: llc -march=x86-64 -mcpu=corei7-avx < %s | FileCheck %s -check-prefix=AVX1
4 ; RUN: llc -march=x86-64 -mcpu=core-avx2 -mattr=+avx2 < %s | FileCheck %s -check-prefix=AVX2
5 ; RUN: llc -march=x86-64 -mcpu=knl < %s | FileCheck %s -check-prefix=AVX2 -check-prefix=AVX512F
6 ; RUN: llc -march=x86-64 -mcpu=skx < %s | FileCheck %s -check-prefix=AVX512BW -check-prefix=AVX512VL -check-prefix=AVX512F
8 define <16 x i8> @test1(<16 x i8> %a, <16 x i8> %b) {
10 %cmp = icmp slt <16 x i8> %a, %b
11 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
23 ; AVX512VL-LABEL: test1:
27 define <16 x i8> @test2(<16 x i8> %a, <16 x i8> %b) {
29 %cmp = icmp sle <16 x i8> %a, %b
30 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
42 ; AVX512VL-LABEL: test2:
46 define <16 x i8> @test3(<16 x i8> %a, <16 x i8> %b) {
48 %cmp = icmp sgt <16 x i8> %a, %b
49 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
61 ; AVX512VL-LABEL: test3:
65 define <16 x i8> @test4(<16 x i8> %a, <16 x i8> %b) {
67 %cmp = icmp sge <16 x i8> %a, %b
68 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
80 ; AVX512VL-LABEL: test4:
84 define <16 x i8> @test5(<16 x i8> %a, <16 x i8> %b) {
86 %cmp = icmp ult <16 x i8> %a, %b
87 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
99 ; AVX512VL-LABEL: test5:
103 define <16 x i8> @test6(<16 x i8> %a, <16 x i8> %b) {
105 %cmp = icmp ule <16 x i8> %a, %b
106 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
118 ; AVX512VL-LABEL: test6:
122 define <16 x i8> @test7(<16 x i8> %a, <16 x i8> %b) {
124 %cmp = icmp ugt <16 x i8> %a, %b
125 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
137 ; AVX512VL-LABEL: test7:
141 define <16 x i8> @test8(<16 x i8> %a, <16 x i8> %b) {
143 %cmp = icmp uge <16 x i8> %a, %b
144 %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b
156 ; AVX512VL-LABEL: test8:
160 define <8 x i16> @test9(<8 x i16> %a, <8 x i16> %b) {
162 %cmp = icmp slt <8 x i16> %a, %b
163 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
175 ; AVX512VL-LABEL: test9:
179 define <8 x i16> @test10(<8 x i16> %a, <8 x i16> %b) {
181 %cmp = icmp sle <8 x i16> %a, %b
182 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
185 ; SSE2-LABEL: test10:
188 ; AVX1-LABEL: test10:
191 ; AVX2-LABEL: test10:
194 ; AVX512VL-LABEL: test10:
198 define <8 x i16> @test11(<8 x i16> %a, <8 x i16> %b) {
200 %cmp = icmp sgt <8 x i16> %a, %b
201 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
204 ; SSE2-LABEL: test11:
207 ; AVX1-LABEL: test11:
210 ; AVX2-LABEL: test11:
213 ; AVX512VL-LABEL: test11:
217 define <8 x i16> @test12(<8 x i16> %a, <8 x i16> %b) {
219 %cmp = icmp sge <8 x i16> %a, %b
220 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
223 ; SSE2-LABEL: test12:
226 ; AVX1-LABEL: test12:
229 ; AVX2-LABEL: test12:
232 ; AVX512VL-LABEL: test12:
236 define <8 x i16> @test13(<8 x i16> %a, <8 x i16> %b) {
238 %cmp = icmp ult <8 x i16> %a, %b
239 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
242 ; SSE4-LABEL: test13:
245 ; AVX1-LABEL: test13:
248 ; AVX2-LABEL: test13:
251 ; AVX512VL-LABEL: test13:
255 define <8 x i16> @test14(<8 x i16> %a, <8 x i16> %b) {
257 %cmp = icmp ule <8 x i16> %a, %b
258 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
261 ; SSE4-LABEL: test14:
264 ; AVX1-LABEL: test14:
267 ; AVX2-LABEL: test14:
270 ; AVX512VL-LABEL: test14:
274 define <8 x i16> @test15(<8 x i16> %a, <8 x i16> %b) {
276 %cmp = icmp ugt <8 x i16> %a, %b
277 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
280 ; SSE4-LABEL: test15:
283 ; AVX1-LABEL: test15:
286 ; AVX2-LABEL: test15:
289 ; AVX512VL-LABEL: test15:
293 define <8 x i16> @test16(<8 x i16> %a, <8 x i16> %b) {
295 %cmp = icmp uge <8 x i16> %a, %b
296 %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b
299 ; SSE4-LABEL: test16:
302 ; AVX1-LABEL: test16:
305 ; AVX2-LABEL: test16:
308 ; AVX512VL-LABEL: test16:
312 define <4 x i32> @test17(<4 x i32> %a, <4 x i32> %b) {
314 %cmp = icmp slt <4 x i32> %a, %b
315 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
318 ; SSE4-LABEL: test17:
321 ; AVX1-LABEL: test17:
324 ; AVX2-LABEL: test17:
327 ; AVX512VL-LABEL: test17:
331 define <4 x i32> @test18(<4 x i32> %a, <4 x i32> %b) {
333 %cmp = icmp sle <4 x i32> %a, %b
334 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
337 ; SSE4-LABEL: test18:
340 ; AVX1-LABEL: test18:
343 ; AVX2-LABEL: test18:
346 ; AVX512VL-LABEL: test18:
350 define <4 x i32> @test19(<4 x i32> %a, <4 x i32> %b) {
352 %cmp = icmp sgt <4 x i32> %a, %b
353 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
356 ; SSE4-LABEL: test19:
359 ; AVX1-LABEL: test19:
362 ; AVX2-LABEL: test19:
365 ; AVX512VL-LABEL: test19:
369 define <4 x i32> @test20(<4 x i32> %a, <4 x i32> %b) {
371 %cmp = icmp sge <4 x i32> %a, %b
372 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
375 ; SSE4-LABEL: test20:
378 ; AVX1-LABEL: test20:
381 ; AVX2-LABEL: test20:
384 ; AVX512VL-LABEL: test20:
388 define <4 x i32> @test21(<4 x i32> %a, <4 x i32> %b) {
390 %cmp = icmp ult <4 x i32> %a, %b
391 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
394 ; SSE4-LABEL: test21:
397 ; AVX1-LABEL: test21:
400 ; AVX2-LABEL: test21:
403 ; AVX512VL-LABEL: test21:
407 define <4 x i32> @test22(<4 x i32> %a, <4 x i32> %b) {
409 %cmp = icmp ule <4 x i32> %a, %b
410 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
413 ; SSE4-LABEL: test22:
416 ; AVX1-LABEL: test22:
419 ; AVX2-LABEL: test22:
422 ; AVX512VL-LABEL: test22:
426 define <4 x i32> @test23(<4 x i32> %a, <4 x i32> %b) {
428 %cmp = icmp ugt <4 x i32> %a, %b
429 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
432 ; SSE4-LABEL: test23:
435 ; AVX1-LABEL: test23:
438 ; AVX2-LABEL: test23:
441 ; AVX512VL-LABEL: test23:
445 define <4 x i32> @test24(<4 x i32> %a, <4 x i32> %b) {
447 %cmp = icmp uge <4 x i32> %a, %b
448 %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b
451 ; SSE4-LABEL: test24:
454 ; AVX1-LABEL: test24:
457 ; AVX2-LABEL: test24:
460 ; AVX512VL-LABEL: test24:
464 define <32 x i8> @test25(<32 x i8> %a, <32 x i8> %b) {
466 %cmp = icmp slt <32 x i8> %a, %b
467 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
470 ; AVX2-LABEL: test25:
473 ; AVX512VL-LABEL: test25:
477 define <32 x i8> @test26(<32 x i8> %a, <32 x i8> %b) {
479 %cmp = icmp sle <32 x i8> %a, %b
480 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
483 ; AVX2-LABEL: test26:
486 ; AVX512VL-LABEL: test26:
490 define <32 x i8> @test27(<32 x i8> %a, <32 x i8> %b) {
492 %cmp = icmp sgt <32 x i8> %a, %b
493 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
496 ; AVX2-LABEL: test27:
499 ; AVX512VL-LABEL: test27:
503 define <32 x i8> @test28(<32 x i8> %a, <32 x i8> %b) {
505 %cmp = icmp sge <32 x i8> %a, %b
506 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
509 ; AVX2-LABEL: test28:
512 ; AVX512VL-LABEL: test28:
516 define <32 x i8> @test29(<32 x i8> %a, <32 x i8> %b) {
518 %cmp = icmp ult <32 x i8> %a, %b
519 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
522 ; AVX2-LABEL: test29:
525 ; AVX512VL-LABEL: test29:
529 define <32 x i8> @test30(<32 x i8> %a, <32 x i8> %b) {
531 %cmp = icmp ule <32 x i8> %a, %b
532 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
535 ; AVX2-LABEL: test30:
538 ; AVX512VL-LABEL: test30:
542 define <32 x i8> @test31(<32 x i8> %a, <32 x i8> %b) {
544 %cmp = icmp ugt <32 x i8> %a, %b
545 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
548 ; AVX2-LABEL: test31:
551 ; AVX512VL-LABEL: test31:
555 define <32 x i8> @test32(<32 x i8> %a, <32 x i8> %b) {
557 %cmp = icmp uge <32 x i8> %a, %b
558 %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b
561 ; AVX2-LABEL: test32:
564 ; AVX512VL-LABEL: test32:
568 define <16 x i16> @test33(<16 x i16> %a, <16 x i16> %b) {
570 %cmp = icmp slt <16 x i16> %a, %b
571 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
574 ; AVX2-LABEL: test33:
577 ; AVX512VL-LABEL: test33:
581 define <16 x i16> @test34(<16 x i16> %a, <16 x i16> %b) {
583 %cmp = icmp sle <16 x i16> %a, %b
584 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
587 ; AVX2-LABEL: test34:
590 ; AVX512VL-LABEL: test34:
594 define <16 x i16> @test35(<16 x i16> %a, <16 x i16> %b) {
596 %cmp = icmp sgt <16 x i16> %a, %b
597 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
600 ; AVX2-LABEL: test35:
603 ; AVX512VL-LABEL: test35:
607 define <16 x i16> @test36(<16 x i16> %a, <16 x i16> %b) {
609 %cmp = icmp sge <16 x i16> %a, %b
610 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
613 ; AVX2-LABEL: test36:
616 ; AVX512VL-LABEL: test36:
620 define <16 x i16> @test37(<16 x i16> %a, <16 x i16> %b) {
622 %cmp = icmp ult <16 x i16> %a, %b
623 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
626 ; AVX2-LABEL: test37:
629 ; AVX512VL-LABEL: test37:
633 define <16 x i16> @test38(<16 x i16> %a, <16 x i16> %b) {
635 %cmp = icmp ule <16 x i16> %a, %b
636 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
639 ; AVX2-LABEL: test38:
642 ; AVX512VL-LABEL: test38:
646 define <16 x i16> @test39(<16 x i16> %a, <16 x i16> %b) {
648 %cmp = icmp ugt <16 x i16> %a, %b
649 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
652 ; AVX2-LABEL: test39:
655 ; AVX512VL-LABEL: test39:
659 define <16 x i16> @test40(<16 x i16> %a, <16 x i16> %b) {
661 %cmp = icmp uge <16 x i16> %a, %b
662 %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b
665 ; AVX2-LABEL: test40:
668 ; AVX512VL-LABEL: test40:
672 define <8 x i32> @test41(<8 x i32> %a, <8 x i32> %b) {
674 %cmp = icmp slt <8 x i32> %a, %b
675 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
678 ; AVX2-LABEL: test41:
681 ; AVX512VL-LABEL: test41:
685 define <8 x i32> @test42(<8 x i32> %a, <8 x i32> %b) {
687 %cmp = icmp sle <8 x i32> %a, %b
688 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
691 ; AVX2-LABEL: test42:
694 ; AVX512VL-LABEL: test42:
698 define <8 x i32> @test43(<8 x i32> %a, <8 x i32> %b) {
700 %cmp = icmp sgt <8 x i32> %a, %b
701 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
704 ; AVX2-LABEL: test43:
707 ; AVX512VL-LABEL: test43:
711 define <8 x i32> @test44(<8 x i32> %a, <8 x i32> %b) {
713 %cmp = icmp sge <8 x i32> %a, %b
714 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
717 ; AVX2-LABEL: test44:
720 ; AVX512VL-LABEL: test44:
724 define <8 x i32> @test45(<8 x i32> %a, <8 x i32> %b) {
726 %cmp = icmp ult <8 x i32> %a, %b
727 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
730 ; AVX2-LABEL: test45:
733 ; AVX512VL-LABEL: test45:
737 define <8 x i32> @test46(<8 x i32> %a, <8 x i32> %b) {
739 %cmp = icmp ule <8 x i32> %a, %b
740 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
743 ; AVX2-LABEL: test46:
746 ; AVX512VL-LABEL: test46:
750 define <8 x i32> @test47(<8 x i32> %a, <8 x i32> %b) {
752 %cmp = icmp ugt <8 x i32> %a, %b
753 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
756 ; AVX2-LABEL: test47:
759 ; AVX512VL-LABEL: test47:
763 define <8 x i32> @test48(<8 x i32> %a, <8 x i32> %b) {
765 %cmp = icmp uge <8 x i32> %a, %b
766 %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b
769 ; AVX2-LABEL: test48:
772 ; AVX512VL-LABEL: test48:
776 define <16 x i8> @test49(<16 x i8> %a, <16 x i8> %b) {
778 %cmp = icmp slt <16 x i8> %a, %b
779 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
782 ; SSE4-LABEL: test49:
785 ; AVX1-LABEL: test49:
788 ; AVX2-LABEL: test49:
791 ; AVX512VL-LABEL: test49:
795 define <16 x i8> @test50(<16 x i8> %a, <16 x i8> %b) {
797 %cmp = icmp sle <16 x i8> %a, %b
798 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
801 ; SSE4-LABEL: test50:
804 ; AVX1-LABEL: test50:
807 ; AVX2-LABEL: test50:
810 ; AVX512VL-LABEL: test50:
814 define <16 x i8> @test51(<16 x i8> %a, <16 x i8> %b) {
816 %cmp = icmp sgt <16 x i8> %a, %b
817 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
820 ; SSE4-LABEL: test51:
823 ; AVX1-LABEL: test51:
826 ; AVX2-LABEL: test51:
829 ; AVX512VL-LABEL: test51:
833 define <16 x i8> @test52(<16 x i8> %a, <16 x i8> %b) {
835 %cmp = icmp sge <16 x i8> %a, %b
836 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
839 ; SSE4-LABEL: test52:
842 ; AVX1-LABEL: test52:
845 ; AVX2-LABEL: test52:
848 ; AVX512VL-LABEL: test52:
852 define <16 x i8> @test53(<16 x i8> %a, <16 x i8> %b) {
854 %cmp = icmp ult <16 x i8> %a, %b
855 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
858 ; SSE2-LABEL: test53:
861 ; AVX1-LABEL: test53:
864 ; AVX2-LABEL: test53:
867 ; AVX512VL-LABEL: test53:
871 define <16 x i8> @test54(<16 x i8> %a, <16 x i8> %b) {
873 %cmp = icmp ule <16 x i8> %a, %b
874 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
877 ; SSE2-LABEL: test54:
880 ; AVX1-LABEL: test54:
883 ; AVX2-LABEL: test54:
886 ; AVX512VL-LABEL: test54:
890 define <16 x i8> @test55(<16 x i8> %a, <16 x i8> %b) {
892 %cmp = icmp ugt <16 x i8> %a, %b
893 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
896 ; SSE2-LABEL: test55:
899 ; AVX1-LABEL: test55:
902 ; AVX2-LABEL: test55:
905 ; AVX512VL-LABEL: test55:
909 define <16 x i8> @test56(<16 x i8> %a, <16 x i8> %b) {
911 %cmp = icmp uge <16 x i8> %a, %b
912 %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a
915 ; SSE2-LABEL: test56:
918 ; AVX1-LABEL: test56:
921 ; AVX2-LABEL: test56:
924 ; AVX512VL-LABEL: test56:
928 define <8 x i16> @test57(<8 x i16> %a, <8 x i16> %b) {
930 %cmp = icmp slt <8 x i16> %a, %b
931 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
934 ; SSE2-LABEL: test57:
937 ; AVX1-LABEL: test57:
940 ; AVX2-LABEL: test57:
943 ; AVX512VL-LABEL: test57:
947 define <8 x i16> @test58(<8 x i16> %a, <8 x i16> %b) {
949 %cmp = icmp sle <8 x i16> %a, %b
950 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
953 ; SSE2-LABEL: test58:
956 ; AVX1-LABEL: test58:
959 ; AVX2-LABEL: test58:
962 ; AVX512VL-LABEL: test58:
966 define <8 x i16> @test59(<8 x i16> %a, <8 x i16> %b) {
968 %cmp = icmp sgt <8 x i16> %a, %b
969 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
972 ; SSE2-LABEL: test59:
975 ; AVX1-LABEL: test59:
978 ; AVX2-LABEL: test59:
981 ; AVX512VL-LABEL: test59:
985 define <8 x i16> @test60(<8 x i16> %a, <8 x i16> %b) {
987 %cmp = icmp sge <8 x i16> %a, %b
988 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
991 ; SSE2-LABEL: test60:
994 ; AVX1-LABEL: test60:
997 ; AVX2-LABEL: test60:
1000 ; AVX512VL-LABEL: test60:
1004 define <8 x i16> @test61(<8 x i16> %a, <8 x i16> %b) {
1006 %cmp = icmp ult <8 x i16> %a, %b
1007 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
1010 ; SSE4-LABEL: test61:
1013 ; AVX1-LABEL: test61:
1016 ; AVX2-LABEL: test61:
1019 ; AVX512VL-LABEL: test61:
1023 define <8 x i16> @test62(<8 x i16> %a, <8 x i16> %b) {
1025 %cmp = icmp ule <8 x i16> %a, %b
1026 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
1029 ; SSE4-LABEL: test62:
1032 ; AVX1-LABEL: test62:
1035 ; AVX2-LABEL: test62:
1038 ; AVX512VL-LABEL: test62:
1042 define <8 x i16> @test63(<8 x i16> %a, <8 x i16> %b) {
1044 %cmp = icmp ugt <8 x i16> %a, %b
1045 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
1048 ; SSE4-LABEL: test63:
1051 ; AVX1-LABEL: test63:
1054 ; AVX2-LABEL: test63:
1057 ; AVX512VL-LABEL: test63:
1061 define <8 x i16> @test64(<8 x i16> %a, <8 x i16> %b) {
1063 %cmp = icmp uge <8 x i16> %a, %b
1064 %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a
1067 ; SSE4-LABEL: test64:
1070 ; AVX1-LABEL: test64:
1073 ; AVX2-LABEL: test64:
1076 ; AVX512VL-LABEL: test64:
1080 define <4 x i32> @test65(<4 x i32> %a, <4 x i32> %b) {
1082 %cmp = icmp slt <4 x i32> %a, %b
1083 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1086 ; SSE4-LABEL: test65:
1089 ; AVX1-LABEL: test65:
1092 ; AVX2-LABEL: test65:
1095 ; AVX512VL-LABEL: test65:
1099 define <4 x i32> @test66(<4 x i32> %a, <4 x i32> %b) {
1101 %cmp = icmp sle <4 x i32> %a, %b
1102 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1105 ; SSE4-LABEL: test66:
1108 ; AVX1-LABEL: test66:
1111 ; AVX2-LABEL: test66:
1114 ; AVX512VL-LABEL: test66:
1118 define <4 x i32> @test67(<4 x i32> %a, <4 x i32> %b) {
1120 %cmp = icmp sgt <4 x i32> %a, %b
1121 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1124 ; SSE4-LABEL: test67:
1127 ; AVX1-LABEL: test67:
1130 ; AVX2-LABEL: test67:
1133 ; AVX512VL-LABEL: test67:
1137 define <4 x i32> @test68(<4 x i32> %a, <4 x i32> %b) {
1139 %cmp = icmp sge <4 x i32> %a, %b
1140 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1143 ; SSE4-LABEL: test68:
1146 ; AVX1-LABEL: test68:
1149 ; AVX2-LABEL: test68:
1152 ; AVX512VL-LABEL: test68:
1156 define <4 x i32> @test69(<4 x i32> %a, <4 x i32> %b) {
1158 %cmp = icmp ult <4 x i32> %a, %b
1159 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1162 ; SSE4-LABEL: test69:
1165 ; AVX1-LABEL: test69:
1168 ; AVX2-LABEL: test69:
1171 ; AVX512VL-LABEL: test69:
1175 define <4 x i32> @test70(<4 x i32> %a, <4 x i32> %b) {
1177 %cmp = icmp ule <4 x i32> %a, %b
1178 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1181 ; SSE4-LABEL: test70:
1184 ; AVX1-LABEL: test70:
1187 ; AVX2-LABEL: test70:
1190 ; AVX512VL-LABEL: test70:
1194 define <4 x i32> @test71(<4 x i32> %a, <4 x i32> %b) {
1196 %cmp = icmp ugt <4 x i32> %a, %b
1197 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1200 ; SSE4-LABEL: test71:
1203 ; AVX1-LABEL: test71:
1206 ; AVX2-LABEL: test71:
1209 ; AVX512VL-LABEL: test71:
1213 define <4 x i32> @test72(<4 x i32> %a, <4 x i32> %b) {
1215 %cmp = icmp uge <4 x i32> %a, %b
1216 %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a
1219 ; SSE4-LABEL: test72:
1222 ; AVX1-LABEL: test72:
1225 ; AVX2-LABEL: test72:
1228 ; AVX512VL-LABEL: test72:
1232 define <32 x i8> @test73(<32 x i8> %a, <32 x i8> %b) {
1234 %cmp = icmp slt <32 x i8> %a, %b
1235 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1238 ; AVX2-LABEL: test73:
1241 ; AVX512VL-LABEL: test73:
1245 define <32 x i8> @test74(<32 x i8> %a, <32 x i8> %b) {
1247 %cmp = icmp sle <32 x i8> %a, %b
1248 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1251 ; AVX2-LABEL: test74:
1254 ; AVX512VL-LABEL: test74:
1258 define <32 x i8> @test75(<32 x i8> %a, <32 x i8> %b) {
1260 %cmp = icmp sgt <32 x i8> %a, %b
1261 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1264 ; AVX2-LABEL: test75:
1267 ; AVX512VL-LABEL: test75:
1271 define <32 x i8> @test76(<32 x i8> %a, <32 x i8> %b) {
1273 %cmp = icmp sge <32 x i8> %a, %b
1274 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1277 ; AVX2-LABEL: test76:
1280 ; AVX512VL-LABEL: test76:
1284 define <32 x i8> @test77(<32 x i8> %a, <32 x i8> %b) {
1286 %cmp = icmp ult <32 x i8> %a, %b
1287 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1290 ; AVX2-LABEL: test77:
1293 ; AVX512VL-LABEL: test77:
1297 define <32 x i8> @test78(<32 x i8> %a, <32 x i8> %b) {
1299 %cmp = icmp ule <32 x i8> %a, %b
1300 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1303 ; AVX2-LABEL: test78:
1306 ; AVX512VL-LABEL: test78:
1310 define <32 x i8> @test79(<32 x i8> %a, <32 x i8> %b) {
1312 %cmp = icmp ugt <32 x i8> %a, %b
1313 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1316 ; AVX2-LABEL: test79:
1319 ; AVX512VL-LABEL: test79:
1323 define <32 x i8> @test80(<32 x i8> %a, <32 x i8> %b) {
1325 %cmp = icmp uge <32 x i8> %a, %b
1326 %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a
1329 ; AVX2-LABEL: test80:
1332 ; AVX512VL-LABEL: test80:
1336 define <16 x i16> @test81(<16 x i16> %a, <16 x i16> %b) {
1338 %cmp = icmp slt <16 x i16> %a, %b
1339 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1342 ; AVX2-LABEL: test81:
1345 ; AVX512VL-LABEL: test81:
1349 define <16 x i16> @test82(<16 x i16> %a, <16 x i16> %b) {
1351 %cmp = icmp sle <16 x i16> %a, %b
1352 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1355 ; AVX2-LABEL: test82:
1358 ; AVX512VL-LABEL: test82:
1362 define <16 x i16> @test83(<16 x i16> %a, <16 x i16> %b) {
1364 %cmp = icmp sgt <16 x i16> %a, %b
1365 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1368 ; AVX2-LABEL: test83:
1371 ; AVX512VL-LABEL: test83:
1375 define <16 x i16> @test84(<16 x i16> %a, <16 x i16> %b) {
1377 %cmp = icmp sge <16 x i16> %a, %b
1378 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1381 ; AVX2-LABEL: test84:
1384 ; AVX512VL-LABEL: test84:
1388 define <16 x i16> @test85(<16 x i16> %a, <16 x i16> %b) {
1390 %cmp = icmp ult <16 x i16> %a, %b
1391 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1394 ; AVX2-LABEL: test85:
1397 ; AVX512VL-LABEL: test85:
1401 define <16 x i16> @test86(<16 x i16> %a, <16 x i16> %b) {
1403 %cmp = icmp ule <16 x i16> %a, %b
1404 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1407 ; AVX2-LABEL: test86:
1410 ; AVX512VL-LABEL: test86:
1414 define <16 x i16> @test87(<16 x i16> %a, <16 x i16> %b) {
1416 %cmp = icmp ugt <16 x i16> %a, %b
1417 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1420 ; AVX2-LABEL: test87:
1423 ; AVX512VL-LABEL: test87:
1427 define <16 x i16> @test88(<16 x i16> %a, <16 x i16> %b) {
1429 %cmp = icmp uge <16 x i16> %a, %b
1430 %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a
1433 ; AVX2-LABEL: test88:
1436 ; AVX512VL-LABEL: test88:
1440 define <8 x i32> @test89(<8 x i32> %a, <8 x i32> %b) {
1442 %cmp = icmp slt <8 x i32> %a, %b
1443 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1446 ; AVX2-LABEL: test89:
1449 ; AVX512VL-LABEL: test89:
1453 define <8 x i32> @test90(<8 x i32> %a, <8 x i32> %b) {
1455 %cmp = icmp sle <8 x i32> %a, %b
1456 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1459 ; AVX2-LABEL: test90:
1462 ; AVX512VL-LABEL: test90:
1466 define <8 x i32> @test91(<8 x i32> %a, <8 x i32> %b) {
1468 %cmp = icmp sgt <8 x i32> %a, %b
1469 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1472 ; AVX2-LABEL: test91:
1475 ; AVX512VL-LABEL: test91:
1479 define <8 x i32> @test92(<8 x i32> %a, <8 x i32> %b) {
1481 %cmp = icmp sge <8 x i32> %a, %b
1482 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1485 ; AVX2-LABEL: test92:
1488 ; AVX512VL-LABEL: test92:
1492 define <8 x i32> @test93(<8 x i32> %a, <8 x i32> %b) {
1494 %cmp = icmp ult <8 x i32> %a, %b
1495 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1498 ; AVX2-LABEL: test93:
1501 ; AVX512VL-LABEL: test93:
1505 define <8 x i32> @test94(<8 x i32> %a, <8 x i32> %b) {
1507 %cmp = icmp ule <8 x i32> %a, %b
1508 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1511 ; AVX2-LABEL: test94:
1514 ; AVX512VL-LABEL: test94:
1518 define <8 x i32> @test95(<8 x i32> %a, <8 x i32> %b) {
1520 %cmp = icmp ugt <8 x i32> %a, %b
1521 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1524 ; AVX2-LABEL: test95:
1527 ; AVX512VL-LABEL: test95:
1531 define <8 x i32> @test96(<8 x i32> %a, <8 x i32> %b) {
1533 %cmp = icmp uge <8 x i32> %a, %b
1534 %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a
1537 ; AVX2-LABEL: test96:
1540 ; AVX512VL-LABEL: test96:
1544 ; ----------------------------
1546 define <64 x i8> @test97(<64 x i8> %a, <64 x i8> %b) {
1548 %cmp = icmp slt <64 x i8> %a, %b
1549 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1552 ; AVX512BW-LABEL: test97:
1553 ; AVX512BW: vpminsb {{.*}}
1556 define <64 x i8> @test98(<64 x i8> %a, <64 x i8> %b) {
1558 %cmp = icmp sle <64 x i8> %a, %b
1559 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1562 ; AVX512BW-LABEL: test98:
1563 ; AVX512BW: vpminsb {{.*}}
1566 define <64 x i8> @test99(<64 x i8> %a, <64 x i8> %b) {
1568 %cmp = icmp sgt <64 x i8> %a, %b
1569 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1572 ; AVX512BW-LABEL: test99:
1573 ; AVX512BW: vpmaxsb {{.*}}
1576 define <64 x i8> @test100(<64 x i8> %a, <64 x i8> %b) {
1578 %cmp = icmp sge <64 x i8> %a, %b
1579 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1582 ; AVX512BW-LABEL: test100:
1583 ; AVX512BW: vpmaxsb {{.*}}
1586 define <64 x i8> @test101(<64 x i8> %a, <64 x i8> %b) {
1588 %cmp = icmp ult <64 x i8> %a, %b
1589 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1592 ; AVX512BW-LABEL: test101:
1593 ; AVX512BW: vpminub {{.*}}
1596 define <64 x i8> @test102(<64 x i8> %a, <64 x i8> %b) {
1598 %cmp = icmp ule <64 x i8> %a, %b
1599 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1602 ; AVX512BW-LABEL: test102:
1603 ; AVX512BW: vpminub {{.*}}
1606 define <64 x i8> @test103(<64 x i8> %a, <64 x i8> %b) {
1608 %cmp = icmp ugt <64 x i8> %a, %b
1609 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1612 ; AVX512BW-LABEL: test103:
1613 ; AVX512BW: vpmaxub {{.*}}
1616 define <64 x i8> @test104(<64 x i8> %a, <64 x i8> %b) {
1618 %cmp = icmp uge <64 x i8> %a, %b
1619 %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b
1622 ; AVX512BW-LABEL: test104:
1623 ; AVX512BW: vpmaxub {{.*}}
1626 define <32 x i16> @test105(<32 x i16> %a, <32 x i16> %b) {
1628 %cmp = icmp slt <32 x i16> %a, %b
1629 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1632 ; AVX512BW-LABEL: test105:
1633 ; AVX512BW: vpminsw {{.*}}
1636 define <32 x i16> @test106(<32 x i16> %a, <32 x i16> %b) {
1638 %cmp = icmp sle <32 x i16> %a, %b
1639 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1642 ; AVX512BW-LABEL: test106:
1643 ; AVX512BW: vpminsw {{.*}}
1646 define <32 x i16> @test107(<32 x i16> %a, <32 x i16> %b) {
1648 %cmp = icmp sgt <32 x i16> %a, %b
1649 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1652 ; AVX512BW-LABEL: test107:
1653 ; AVX512BW: vpmaxsw {{.*}}
1656 define <32 x i16> @test108(<32 x i16> %a, <32 x i16> %b) {
1658 %cmp = icmp sge <32 x i16> %a, %b
1659 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1662 ; AVX512BW-LABEL: test108:
1663 ; AVX512BW: vpmaxsw {{.*}}
1666 define <32 x i16> @test109(<32 x i16> %a, <32 x i16> %b) {
1668 %cmp = icmp ult <32 x i16> %a, %b
1669 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1672 ; AVX512BW-LABEL: test109:
1673 ; AVX512BW: vpminuw {{.*}}
1676 define <32 x i16> @test110(<32 x i16> %a, <32 x i16> %b) {
1678 %cmp = icmp ule <32 x i16> %a, %b
1679 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1682 ; AVX512BW-LABEL: test110:
1683 ; AVX512BW: vpminuw {{.*}}
1686 define <32 x i16> @test111(<32 x i16> %a, <32 x i16> %b) {
1688 %cmp = icmp ugt <32 x i16> %a, %b
1689 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1692 ; AVX512BW-LABEL: test111:
1693 ; AVX512BW: vpmaxuw {{.*}}
1696 define <32 x i16> @test112(<32 x i16> %a, <32 x i16> %b) {
1698 %cmp = icmp uge <32 x i16> %a, %b
1699 %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b
1702 ; AVX512BW-LABEL: test112:
1703 ; AVX512BW: vpmaxuw {{.*}}
1706 define <16 x i32> @test113(<16 x i32> %a, <16 x i32> %b) {
1708 %cmp = icmp slt <16 x i32> %a, %b
1709 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1712 ; AVX512F-LABEL: test113:
1713 ; AVX512F: vpminsd {{.*}}
1716 define <16 x i32> @test114(<16 x i32> %a, <16 x i32> %b) {
1718 %cmp = icmp sle <16 x i32> %a, %b
1719 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1722 ; AVX512F-LABEL: test114:
1723 ; AVX512F: vpminsd {{.*}}
1726 define <16 x i32> @test115(<16 x i32> %a, <16 x i32> %b) {
1728 %cmp = icmp sgt <16 x i32> %a, %b
1729 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1732 ; AVX512F-LABEL: test115:
1733 ; AVX512F: vpmaxsd {{.*}}
1736 define <16 x i32> @test116(<16 x i32> %a, <16 x i32> %b) {
1738 %cmp = icmp sge <16 x i32> %a, %b
1739 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1742 ; AVX512F-LABEL: test116:
1743 ; AVX512F: vpmaxsd {{.*}}
1746 define <16 x i32> @test117(<16 x i32> %a, <16 x i32> %b) {
1748 %cmp = icmp ult <16 x i32> %a, %b
1749 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1752 ; AVX512F-LABEL: test117:
1753 ; AVX512F: vpminud {{.*}}
1756 define <16 x i32> @test118(<16 x i32> %a, <16 x i32> %b) {
1758 %cmp = icmp ule <16 x i32> %a, %b
1759 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1762 ; AVX512F-LABEL: test118:
1763 ; AVX512F: vpminud {{.*}}
1766 define <16 x i32> @test119(<16 x i32> %a, <16 x i32> %b) {
1768 %cmp = icmp ugt <16 x i32> %a, %b
1769 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1772 ; AVX512F-LABEL: test119:
1773 ; AVX512F: vpmaxud {{.*}}
1776 define <16 x i32> @test120(<16 x i32> %a, <16 x i32> %b) {
1778 %cmp = icmp uge <16 x i32> %a, %b
1779 %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b
1782 ; AVX512F-LABEL: test120:
1783 ; AVX512F: vpmaxud {{.*}}
1786 define <8 x i64> @test121(<8 x i64> %a, <8 x i64> %b) {
1788 %cmp = icmp slt <8 x i64> %a, %b
1789 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1792 ; AVX512F-LABEL: test121:
1793 ; AVX512F: vpminsq {{.*}}
1796 define <8 x i64> @test122(<8 x i64> %a, <8 x i64> %b) {
1798 %cmp = icmp sle <8 x i64> %a, %b
1799 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1802 ; AVX512F-LABEL: test122:
1803 ; AVX512F: vpminsq {{.*}}
1806 define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) {
1808 %cmp = icmp sgt <8 x i64> %a, %b
1809 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1812 ; AVX512F-LABEL: test123:
1813 ; AVX512F: vpmaxsq {{.*}}
1816 define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) {
1818 %cmp = icmp sge <8 x i64> %a, %b
1819 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1822 ; AVX512F-LABEL: test124:
1823 ; AVX512F: vpmaxsq {{.*}}
1826 define <8 x i64> @test125(<8 x i64> %a, <8 x i64> %b) {
1828 %cmp = icmp ult <8 x i64> %a, %b
1829 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1832 ; AVX512F-LABEL: test125:
1833 ; AVX512F: vpminuq {{.*}}
1836 define <8 x i64> @test126(<8 x i64> %a, <8 x i64> %b) {
1838 %cmp = icmp ule <8 x i64> %a, %b
1839 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1842 ; AVX512F-LABEL: test126:
1843 ; AVX512F: vpminuq {{.*}}
1846 define <8 x i64> @test127(<8 x i64> %a, <8 x i64> %b) {
1848 %cmp = icmp ugt <8 x i64> %a, %b
1849 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1852 ; AVX512F-LABEL: test127:
1853 ; AVX512F: vpmaxuq {{.*}}
1856 define <8 x i64> @test128(<8 x i64> %a, <8 x i64> %b) {
1858 %cmp = icmp uge <8 x i64> %a, %b
1859 %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b
1862 ; AVX512F-LABEL: test128:
1863 ; AVX512F: vpmaxuq {{.*}}
1866 define <64 x i8> @test129(<64 x i8> %a, <64 x i8> %b) {
1868 %cmp = icmp slt <64 x i8> %a, %b
1869 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1872 ; AVX512BW-LABEL: test129:
1876 define <64 x i8> @test130(<64 x i8> %a, <64 x i8> %b) {
1878 %cmp = icmp sle <64 x i8> %a, %b
1879 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1882 ; AVX512BW-LABEL: test130:
1886 define <64 x i8> @test131(<64 x i8> %a, <64 x i8> %b) {
1888 %cmp = icmp sgt <64 x i8> %a, %b
1889 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1892 ; AVX512BW-LABEL: test131:
1896 define <64 x i8> @test132(<64 x i8> %a, <64 x i8> %b) {
1898 %cmp = icmp sge <64 x i8> %a, %b
1899 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1902 ; AVX512BW-LABEL: test132:
1906 define <64 x i8> @test133(<64 x i8> %a, <64 x i8> %b) {
1908 %cmp = icmp ult <64 x i8> %a, %b
1909 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1912 ; AVX512BW-LABEL: test133:
1916 define <64 x i8> @test134(<64 x i8> %a, <64 x i8> %b) {
1918 %cmp = icmp ule <64 x i8> %a, %b
1919 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1922 ; AVX512BW-LABEL: test134:
1926 define <64 x i8> @test135(<64 x i8> %a, <64 x i8> %b) {
1928 %cmp = icmp ugt <64 x i8> %a, %b
1929 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1932 ; AVX512BW-LABEL: test135:
1936 define <64 x i8> @test136(<64 x i8> %a, <64 x i8> %b) {
1938 %cmp = icmp uge <64 x i8> %a, %b
1939 %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a
1942 ; AVX512BW-LABEL: test136:
1946 define <32 x i16> @test137(<32 x i16> %a, <32 x i16> %b) {
1948 %cmp = icmp slt <32 x i16> %a, %b
1949 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
1952 ; AVX512BW-LABEL: test137:
1956 define <32 x i16> @test138(<32 x i16> %a, <32 x i16> %b) {
1958 %cmp = icmp sle <32 x i16> %a, %b
1959 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
1962 ; AVX512BW-LABEL: test138:
1966 define <32 x i16> @test139(<32 x i16> %a, <32 x i16> %b) {
1968 %cmp = icmp sgt <32 x i16> %a, %b
1969 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
1972 ; AVX512BW-LABEL: test139:
1976 define <32 x i16> @test140(<32 x i16> %a, <32 x i16> %b) {
1978 %cmp = icmp sge <32 x i16> %a, %b
1979 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
1982 ; AVX512BW-LABEL: test140:
1986 define <32 x i16> @test141(<32 x i16> %a, <32 x i16> %b) {
1988 %cmp = icmp ult <32 x i16> %a, %b
1989 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
1992 ; AVX512BW-LABEL: test141:
1996 define <32 x i16> @test142(<32 x i16> %a, <32 x i16> %b) {
1998 %cmp = icmp ule <32 x i16> %a, %b
1999 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
2002 ; AVX512BW-LABEL: test142:
2006 define <32 x i16> @test143(<32 x i16> %a, <32 x i16> %b) {
2008 %cmp = icmp ugt <32 x i16> %a, %b
2009 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
2012 ; AVX512BW-LABEL: test143:
2016 define <32 x i16> @test144(<32 x i16> %a, <32 x i16> %b) {
2018 %cmp = icmp uge <32 x i16> %a, %b
2019 %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a
2022 ; AVX512BW-LABEL: test144:
2026 define <16 x i32> @test145(<16 x i32> %a, <16 x i32> %b) {
2028 %cmp = icmp slt <16 x i32> %a, %b
2029 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2032 ; AVX512F-LABEL: test145:
2036 define <16 x i32> @test146(<16 x i32> %a, <16 x i32> %b) {
2038 %cmp = icmp sle <16 x i32> %a, %b
2039 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2042 ; AVX512F-LABEL: test146:
2046 define <16 x i32> @test147(<16 x i32> %a, <16 x i32> %b) {
2048 %cmp = icmp sgt <16 x i32> %a, %b
2049 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2052 ; AVX512F-LABEL: test147:
2056 define <16 x i32> @test148(<16 x i32> %a, <16 x i32> %b) {
2058 %cmp = icmp sge <16 x i32> %a, %b
2059 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2062 ; AVX512F-LABEL: test148:
2066 define <16 x i32> @test149(<16 x i32> %a, <16 x i32> %b) {
2068 %cmp = icmp ult <16 x i32> %a, %b
2069 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2072 ; AVX512F-LABEL: test149:
2076 define <16 x i32> @test150(<16 x i32> %a, <16 x i32> %b) {
2078 %cmp = icmp ule <16 x i32> %a, %b
2079 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2082 ; AVX512F-LABEL: test150:
2086 define <16 x i32> @test151(<16 x i32> %a, <16 x i32> %b) {
2088 %cmp = icmp ugt <16 x i32> %a, %b
2089 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2092 ; AVX512F-LABEL: test151:
2096 define <16 x i32> @test152(<16 x i32> %a, <16 x i32> %b) {
2098 %cmp = icmp uge <16 x i32> %a, %b
2099 %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a
2102 ; AVX512F-LABEL: test152:
2106 ; -----------------------
2108 define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) {
2110 %cmp = icmp slt <8 x i64> %a, %b
2111 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2114 ; AVX512F-LABEL: test153:
2118 define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) {
2120 %cmp = icmp sle <8 x i64> %a, %b
2121 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2124 ; AVX512F-LABEL: test154:
2128 define <8 x i64> @test155(<8 x i64> %a, <8 x i64> %b) {
2130 %cmp = icmp sgt <8 x i64> %a, %b
2131 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2134 ; AVX512F-LABEL: test155:
2138 define <8 x i64> @test156(<8 x i64> %a, <8 x i64> %b) {
2140 %cmp = icmp sge <8 x i64> %a, %b
2141 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2144 ; AVX512F-LABEL: test156:
2148 define <8 x i64> @test157(<8 x i64> %a, <8 x i64> %b) {
2150 %cmp = icmp ult <8 x i64> %a, %b
2151 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2154 ; AVX512F-LABEL: test157:
2158 define <8 x i64> @test158(<8 x i64> %a, <8 x i64> %b) {
2160 %cmp = icmp ule <8 x i64> %a, %b
2161 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2164 ; AVX512F-LABEL: test158:
2168 define <8 x i64> @test159(<8 x i64> %a, <8 x i64> %b) {
2170 %cmp = icmp ugt <8 x i64> %a, %b
2171 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2174 ; AVX512F-LABEL: test159:
2178 define <8 x i64> @test160(<8 x i64> %a, <8 x i64> %b) {
2180 %cmp = icmp uge <8 x i64> %a, %b
2181 %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a
2184 ; AVX512F-LABEL: test160:
2188 define <4 x i64> @test161(<4 x i64> %a, <4 x i64> %b) {
2190 %cmp = icmp slt <4 x i64> %a, %b
2191 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2194 ; AVX512VL-LABEL: test161:
2198 define <4 x i64> @test162(<4 x i64> %a, <4 x i64> %b) {
2200 %cmp = icmp sle <4 x i64> %a, %b
2201 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2204 ; AVX512VL-LABEL: test162:
2208 define <4 x i64> @test163(<4 x i64> %a, <4 x i64> %b) {
2210 %cmp = icmp sgt <4 x i64> %a, %b
2211 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2214 ; AVX512VL-LABEL: test163:
2218 define <4 x i64> @test164(<4 x i64> %a, <4 x i64> %b) {
2220 %cmp = icmp sge <4 x i64> %a, %b
2221 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2224 ; AVX512VL-LABEL: test164:
2228 define <4 x i64> @test165(<4 x i64> %a, <4 x i64> %b) {
2230 %cmp = icmp ult <4 x i64> %a, %b
2231 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2234 ; AVX512VL-LABEL: test165:
2238 define <4 x i64> @test166(<4 x i64> %a, <4 x i64> %b) {
2240 %cmp = icmp ule <4 x i64> %a, %b
2241 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2244 ; AVX512VL-LABEL: test166:
2248 define <4 x i64> @test167(<4 x i64> %a, <4 x i64> %b) {
2250 %cmp = icmp ugt <4 x i64> %a, %b
2251 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2254 ; AVX512VL-LABEL: test167:
2258 define <4 x i64> @test168(<4 x i64> %a, <4 x i64> %b) {
2260 %cmp = icmp uge <4 x i64> %a, %b
2261 %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b
2264 ; AVX512VL-LABEL: test168:
2268 define <4 x i64> @test169(<4 x i64> %a, <4 x i64> %b) {
2270 %cmp = icmp slt <4 x i64> %a, %b
2271 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2274 ; AVX512VL-LABEL: test169:
2278 define <4 x i64> @test170(<4 x i64> %a, <4 x i64> %b) {
2280 %cmp = icmp sle <4 x i64> %a, %b
2281 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2284 ; AVX512VL-LABEL: test170:
2288 define <4 x i64> @test171(<4 x i64> %a, <4 x i64> %b) {
2290 %cmp = icmp sgt <4 x i64> %a, %b
2291 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2294 ; AVX512VL-LABEL: test171:
2298 define <4 x i64> @test172(<4 x i64> %a, <4 x i64> %b) {
2300 %cmp = icmp sge <4 x i64> %a, %b
2301 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2304 ; AVX512VL-LABEL: test172:
2308 define <4 x i64> @test173(<4 x i64> %a, <4 x i64> %b) {
2310 %cmp = icmp ult <4 x i64> %a, %b
2311 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2314 ; AVX512VL-LABEL: test173:
2318 define <4 x i64> @test174(<4 x i64> %a, <4 x i64> %b) {
2320 %cmp = icmp ule <4 x i64> %a, %b
2321 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2324 ; AVX512VL-LABEL: test174:
2328 define <4 x i64> @test175(<4 x i64> %a, <4 x i64> %b) {
2330 %cmp = icmp ugt <4 x i64> %a, %b
2331 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2334 ; AVX512VL-LABEL: test175:
2338 define <4 x i64> @test176(<4 x i64> %a, <4 x i64> %b) {
2340 %cmp = icmp uge <4 x i64> %a, %b
2341 %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a
2344 ; AVX512VL-LABEL: test176:
2348 define <2 x i64> @test177(<2 x i64> %a, <2 x i64> %b) {
2350 %cmp = icmp slt <2 x i64> %a, %b
2351 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2354 ; AVX512VL-LABEL: test177:
2358 define <2 x i64> @test178(<2 x i64> %a, <2 x i64> %b) {
2360 %cmp = icmp sle <2 x i64> %a, %b
2361 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2364 ; AVX512VL-LABEL: test178:
2368 define <2 x i64> @test179(<2 x i64> %a, <2 x i64> %b) {
2370 %cmp = icmp sgt <2 x i64> %a, %b
2371 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2374 ; AVX512VL-LABEL: test179:
2378 define <2 x i64> @test180(<2 x i64> %a, <2 x i64> %b) {
2380 %cmp = icmp sge <2 x i64> %a, %b
2381 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2384 ; AVX512VL-LABEL: test180:
2388 define <2 x i64> @test181(<2 x i64> %a, <2 x i64> %b) {
2390 %cmp = icmp ult <2 x i64> %a, %b
2391 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2394 ; AVX512VL-LABEL: test181:
2398 define <2 x i64> @test182(<2 x i64> %a, <2 x i64> %b) {
2400 %cmp = icmp ule <2 x i64> %a, %b
2401 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2404 ; AVX512VL-LABEL: test182:
2408 define <2 x i64> @test183(<2 x i64> %a, <2 x i64> %b) {
2410 %cmp = icmp ugt <2 x i64> %a, %b
2411 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2414 ; AVX512VL-LABEL: test183:
2418 define <2 x i64> @test184(<2 x i64> %a, <2 x i64> %b) {
2420 %cmp = icmp uge <2 x i64> %a, %b
2421 %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b
2424 ; AVX512VL-LABEL: test184:
2428 define <2 x i64> @test185(<2 x i64> %a, <2 x i64> %b) {
2430 %cmp = icmp slt <2 x i64> %a, %b
2431 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2434 ; AVX512VL-LABEL: test185:
2438 define <2 x i64> @test186(<2 x i64> %a, <2 x i64> %b) {
2440 %cmp = icmp sle <2 x i64> %a, %b
2441 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2444 ; AVX512VL-LABEL: test186:
2448 define <2 x i64> @test187(<2 x i64> %a, <2 x i64> %b) {
2450 %cmp = icmp sgt <2 x i64> %a, %b
2451 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2454 ; AVX512VL-LABEL: test187:
2458 define <2 x i64> @test188(<2 x i64> %a, <2 x i64> %b) {
2460 %cmp = icmp sge <2 x i64> %a, %b
2461 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2464 ; AVX512VL-LABEL: test188:
2468 define <2 x i64> @test189(<2 x i64> %a, <2 x i64> %b) {
2470 %cmp = icmp ult <2 x i64> %a, %b
2471 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2474 ; AVX512VL-LABEL: test189:
2478 define <2 x i64> @test190(<2 x i64> %a, <2 x i64> %b) {
2480 %cmp = icmp ule <2 x i64> %a, %b
2481 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2484 ; AVX512VL-LABEL: test190:
2488 define <2 x i64> @test191(<2 x i64> %a, <2 x i64> %b) {
2490 %cmp = icmp ugt <2 x i64> %a, %b
2491 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2494 ; AVX512VL-LABEL: test191:
2498 define <2 x i64> @test192(<2 x i64> %a, <2 x i64> %b) {
2500 %cmp = icmp uge <2 x i64> %a, %b
2501 %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a
2504 ; AVX512VL-LABEL: test192: