Lines Matching refs:AVX512VL
4 ; RUN: llc < %s -mcpu=knl -mattr=+avx512vl | FileCheck %s --check-prefix=ALL --check-prefix=AVX512VL
20 ; AVX512VL-LABEL: shuffle_v4f64_0000:
21 ; AVX512VL: # BB#0:
22 ; AVX512VL-NEXT: vbroadcastsd %xmm0, %ymm0
23 ; AVX512VL-NEXT: retq
40 ; AVX512VL-LABEL: shuffle_v4f64_0001:
41 ; AVX512VL: # BB#0:
42 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,0,1]
43 ; AVX512VL-NEXT: retq
62 ; AVX512VL-LABEL: shuffle_v4f64_0020:
63 ; AVX512VL: # BB#0:
64 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,0,2,0]
65 ; AVX512VL-NEXT: retq
83 ; AVX512VL-LABEL: shuffle_v4f64_0300:
84 ; AVX512VL: # BB#0:
85 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,3,0,0]
86 ; AVX512VL-NEXT: retq
104 ; AVX512VL-LABEL: shuffle_v4f64_1000:
105 ; AVX512VL: # BB#0:
106 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[1,0,0,0]
107 ; AVX512VL-NEXT: retq
124 ; AVX512VL-LABEL: shuffle_v4f64_2200:
125 ; AVX512VL: # BB#0:
126 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,2,0,0]
127 ; AVX512VL-NEXT: retq
145 ; AVX512VL-LABEL: shuffle_v4f64_3330:
146 ; AVX512VL: # BB#0:
147 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[3,3,3,0]
148 ; AVX512VL-NEXT: retq
165 ; AVX512VL-LABEL: shuffle_v4f64_3210:
166 ; AVX512VL: # BB#0:
167 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[3,2,1,0]
168 ; AVX512VL-NEXT: retq
333 ; AVX512VL-LABEL: shuffle_v4f64_0145:
334 ; AVX512VL: # BB#0:
335 ; AVX512VL-NEXT: vinsertf32x4 $1, %xmm1, %ymm0, %ymm0
336 ; AVX512VL-NEXT: retq
352 ; AVX512VL-LABEL: shuffle_v4f64_4501:
353 ; AVX512VL: # BB#0:
354 ; AVX512VL-NEXT: vinsertf32x4 $1, %xmm0, %ymm1, %ymm0
355 ; AVX512VL-NEXT: retq
382 ; AVX512VL-LABEL: shuffle_v4f64_1054:
383 ; AVX512VL: # BB#0:
384 ; AVX512VL-NEXT: vinsertf32x4 $1, %xmm1, %ymm0, %ymm0
385 ; AVX512VL-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
386 ; AVX512VL-NEXT: retq
404 ; AVX512VL-LABEL: shuffle_v4f64_3254:
405 ; AVX512VL: # BB#0:
406 ; AVX512VL-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]
407 ; AVX512VL-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
408 ; AVX512VL-NEXT: retq
426 ; AVX512VL-LABEL: shuffle_v4f64_3276:
427 ; AVX512VL: # BB#0:
428 ; AVX512VL-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]
429 ; AVX512VL-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,3,2]
430 ; AVX512VL-NEXT: retq
460 ; AVX512VL-LABEL: shuffle_v4f64_0415:
461 ; AVX512VL: # BB#0:
462 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,0,2,1]
463 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,1,1,3]
464 ; AVX512VL-NEXT: vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3]
465 ; AVX512VL-NEXT: retq
509 ; AVX512VL-LABEL: shuffle_v4f64_22uu:
510 ; AVX512VL: # BB#0:
511 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[2,2,2,3]
512 ; AVX512VL-NEXT: retq
529 ; AVX512VL-LABEL: shuffle_v4f64_3333:
530 ; AVX512VL: # BB#0:
531 ; AVX512VL-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[3,3,3,3]
532 ; AVX512VL-NEXT: retq
549 ; AVX512VL-LABEL: shuffle_v4i64_0000:
550 ; AVX512VL: # BB#0:
551 ; AVX512VL-NEXT: vpbroadcastq %xmm0, %ymm0
552 ; AVX512VL-NEXT: retq
569 ; AVX512VL-LABEL: shuffle_v4i64_0001:
570 ; AVX512VL: # BB#0:
571 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,0,1]
572 ; AVX512VL-NEXT: retq
591 ; AVX512VL-LABEL: shuffle_v4i64_0020:
592 ; AVX512VL: # BB#0:
593 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,2,0]
594 ; AVX512VL-NEXT: retq
612 ; AVX512VL-LABEL: shuffle_v4i64_0112:
613 ; AVX512VL: # BB#0:
614 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,2]
615 ; AVX512VL-NEXT: retq
633 ; AVX512VL-LABEL: shuffle_v4i64_0300:
634 ; AVX512VL: # BB#0:
635 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,3,0,0]
636 ; AVX512VL-NEXT: retq
654 ; AVX512VL-LABEL: shuffle_v4i64_1000:
655 ; AVX512VL: # BB#0:
656 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,0,0,0]
657 ; AVX512VL-NEXT: retq
674 ; AVX512VL-LABEL: shuffle_v4i64_2200:
675 ; AVX512VL: # BB#0:
676 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,0,0]
677 ; AVX512VL-NEXT: retq
695 ; AVX512VL-LABEL: shuffle_v4i64_3330:
696 ; AVX512VL: # BB#0:
697 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[3,3,3,0]
698 ; AVX512VL-NEXT: retq
715 ; AVX512VL-LABEL: shuffle_v4i64_3210:
716 ; AVX512VL: # BB#0:
717 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[3,2,1,0]
718 ; AVX512VL-NEXT: retq
737 ; AVX512VL-LABEL: shuffle_v4i64_0124:
738 ; AVX512VL: # BB#0:
739 ; AVX512VL-NEXT: vpbroadcastq %xmm1, %ymm1
740 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3,4,5],ymm1[6,7]
741 ; AVX512VL-NEXT: retq
761 ; AVX512VL-LABEL: shuffle_v4i64_0142:
762 ; AVX512VL: # BB#0:
763 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm1, %ymm0, %ymm1
764 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,2,2]
765 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5],ymm0[6,7]
766 ; AVX512VL-NEXT: retq
788 ; AVX512VL-LABEL: shuffle_v4i64_0412:
789 ; AVX512VL: # BB#0:
790 ; AVX512VL-NEXT: vpbroadcastq %xmm1, %xmm1
791 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,2]
792 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5,6,7]
793 ; AVX512VL-NEXT: retq
814 ; AVX512VL-LABEL: shuffle_v4i64_4012:
815 ; AVX512VL: # BB#0:
816 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,2]
817 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5,6,7]
818 ; AVX512VL-NEXT: retq
834 ; AVX512VL-LABEL: shuffle_v4i64_0145:
835 ; AVX512VL: # BB#0:
836 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm1, %ymm0, %ymm0
837 ; AVX512VL-NEXT: retq
857 ; AVX512VL-LABEL: shuffle_v4i64_0451:
858 ; AVX512VL: # BB#0:
859 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,1,3]
860 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,2,1]
861 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3,4,5],ymm0[6,7]
862 ; AVX512VL-NEXT: retq
878 ; AVX512VL-LABEL: shuffle_v4i64_4501:
879 ; AVX512VL: # BB#0:
880 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm0, %ymm1, %ymm0
881 ; AVX512VL-NEXT: retq
901 ; AVX512VL-LABEL: shuffle_v4i64_4015:
902 ; AVX512VL: # BB#0:
903 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,2,1]
904 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,0,1,3]
905 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1],ymm0[2,3,4,5],ymm1[6,7]
906 ; AVX512VL-NEXT: retq
925 ; AVX512VL-LABEL: shuffle_v4i64_2u35:
926 ; AVX512VL: # BB#0:
927 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5,6,7]
928 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,1,3,1]
929 ; AVX512VL-NEXT: retq
951 ; AVX512VL-LABEL: shuffle_v4i64_1251:
952 ; AVX512VL: # BB#0:
953 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,1,1,3]
954 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[1,2,2,1]
955 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5],ymm0[6,7]
956 ; AVX512VL-NEXT: retq
974 ; AVX512VL-LABEL: shuffle_v4i64_1054:
975 ; AVX512VL: # BB#0:
976 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm1, %ymm0, %ymm0
977 ; AVX512VL-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5]
978 ; AVX512VL-NEXT: retq
996 ; AVX512VL-LABEL: shuffle_v4i64_3254:
997 ; AVX512VL: # BB#0:
998 ; AVX512VL-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[0,1]
999 ; AVX512VL-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5]
1000 ; AVX512VL-NEXT: retq
1018 ; AVX512VL-LABEL: shuffle_v4i64_3276:
1019 ; AVX512VL: # BB#0:
1020 ; AVX512VL-NEXT: vperm2i128 {{.*#+}} ymm0 = ymm0[2,3],ymm1[2,3]
1021 ; AVX512VL-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5]
1022 ; AVX512VL-NEXT: retq
1040 ; AVX512VL-LABEL: shuffle_v4i64_1076:
1041 ; AVX512VL: # BB#0:
1042 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1043 ; AVX512VL-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5]
1044 ; AVX512VL-NEXT: retq
1064 ; AVX512VL-LABEL: shuffle_v4i64_0415:
1065 ; AVX512VL: # BB#0:
1066 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,0,2,1]
1067 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,1,3]
1068 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2,3],ymm0[4,5],ymm1[6,7]
1069 ; AVX512VL-NEXT: retq
1086 ; AVX512VL-LABEL: shuffle_v4i64_z4z6:
1087 ; AVX512VL: # BB#0:
1088 ; AVX512VL-NEXT: vpslldq {{.*#+}} ymm0 = zero,zero,zero,zero,zero,zero,zero,zero,ymm0[0,1,2,3,4,…
1089 ; AVX512VL-NEXT: retq
1106 ; AVX512VL-LABEL: shuffle_v4i64_5zuz:
1107 ; AVX512VL: # BB#0:
1108 ; AVX512VL-NEXT: vpsrldq {{.*#+}} ymm0 = ymm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,ze…
1109 ; AVX512VL-NEXT: retq
1125 ; AVX512VL-LABEL: shuffle_v4i64_40u2:
1126 ; AVX512VL: # BB#0:
1127 ; AVX512VL-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[2],ymm0[2]
1128 ; AVX512VL-NEXT: retq
1163 ; AVX512VL-LABEL: shuffle_v4i64_22uu:
1164 ; AVX512VL: # BB#0:
1165 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,2,2,3]
1166 ; AVX512VL-NEXT: retq
1183 ; AVX512VL-LABEL: shuffle_v4i64_3333:
1184 ; AVX512VL: # BB#0:
1185 ; AVX512VL-NEXT: vpermq {{.*#+}} ymm0 = ymm0[3,3,3,3]
1186 ; AVX512VL-NEXT: retq
1238 ; AVX512VL-LABEL: insert_reg_and_zero_v4f64:
1239 ; AVX512VL: # BB#0:
1240 ; AVX512VL-NEXT: vxorpd %xmm1, %xmm1, %xmm1
1241 ; AVX512VL-NEXT: vmovsd {{.*#+}} xmm0 = xmm0[0],xmm1[1]
1242 ; AVX512VL-NEXT: retq
1281 ; AVX512VL-LABEL: splat_mem_v4i64:
1282 ; AVX512VL: # BB#0:
1283 ; AVX512VL-NEXT: vpbroadcastq (%rdi), %ymm0
1284 ; AVX512VL-NEXT: retq
1314 ; AVX512VL-LABEL: splat_v4f64:
1315 ; AVX512VL: # BB#0:
1316 ; AVX512VL-NEXT: vbroadcastsd %xmm0, %ymm0
1317 ; AVX512VL-NEXT: retq
1333 ; AVX512VL-LABEL: splat_mem_v4i64_from_v2i64:
1334 ; AVX512VL: # BB#0:
1335 ; AVX512VL-NEXT: vpbroadcastq (%rdi), %ymm0
1336 ; AVX512VL-NEXT: retq
1365 ; AVX512VL-LABEL: splat128_mem_v4i64_from_v2i64:
1366 ; AVX512VL: # BB#0:
1367 ; AVX512VL-NEXT: vmovdqa64 (%rdi), %xmm0
1368 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm0, %ymm0, %ymm0
1369 ; AVX512VL-NEXT: retq
1388 ; AVX512VL-LABEL: splat128_mem_v4f64_from_v2f64:
1389 ; AVX512VL: # BB#0:
1390 ; AVX512VL-NEXT: vmovapd (%rdi), %xmm0
1391 ; AVX512VL-NEXT: vinsertf32x4 $1, %xmm0, %ymm0, %ymm0
1392 ; AVX512VL-NEXT: retq
1410 ; AVX512VL-LABEL: broadcast_v4f64_0000_from_v2i64:
1411 ; AVX512VL: # BB#0:
1412 ; AVX512VL-NEXT: vbroadcastsd %xmm0, %ymm0
1413 ; AVX512VL-NEXT: retq
1431 ; AVX512VL-LABEL: bitcast_v4f64_0426:
1432 ; AVX512VL: # BB#0:
1433 ; AVX512VL-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
1434 ; AVX512VL-NEXT: retq
1455 ; AVX512VL-LABEL: concat_v4i64_0167:
1456 ; AVX512VL: # BB#0:
1457 ; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1458 ; AVX512VL-NEXT: retq
1476 ; AVX512VL-LABEL: concat_v4i64_0145_bc:
1477 ; AVX512VL: # BB#0:
1478 ; AVX512VL-NEXT: vinserti32x4 $1, %xmm1, %ymm0, %ymm0
1479 ; AVX512VL-NEXT: retq
1500 ; AVX512VL-LABEL: insert_dup_mem_v4i64:
1501 ; AVX512VL: # BB#0:
1502 ; AVX512VL-NEXT: vpbroadcastq (%rdi), %ymm0
1503 ; AVX512VL-NEXT: retq