|
6 | 6 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX512BW
|
7 | 7 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vbmi,+avx512vbmi2 | FileCheck %s --check-prefixes=AVX512VBMI2
|
8 | 8 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX512VLBW
|
9 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vbmi,+avx512vbmi2,+avx512vl | FileCheck %s --check-prefixes=AVX512VLVBMI2 |
| 9 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vbmi,+avx512vbmi2,+avx512vl | FileCheck %s --check-prefixes=AVX10,AVX512VLVBMI2 |
| 10 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx10.1-256 | FileCheck %s --check-prefixes=AVX10,AVX10_256 |
| 11 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx10.1-512 | FileCheck %s --check-prefixes=AVX10,AVX512VLVBMI2 |
10 | 12 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx | FileCheck %s --check-prefixes=XOPAVX1
|
11 | 13 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop,+avx2 | FileCheck %s --check-prefixes=XOPAVX2
|
12 | 14 |
|
@@ -116,10 +118,10 @@ define <4 x i64> @var_funnnel_v4i64(<4 x i64> %x, <4 x i64> %y, <4 x i64> %amt)
|
116 | 118 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
117 | 119 | ; AVX512VLBW-NEXT: retq
|
118 | 120 | ;
|
119 |
| -; AVX512VLVBMI2-LABEL: var_funnnel_v4i64: |
120 |
| -; AVX512VLVBMI2: # %bb.0: |
121 |
| -; AVX512VLVBMI2-NEXT: vpshldvq %ymm2, %ymm1, %ymm0 |
122 |
| -; AVX512VLVBMI2-NEXT: retq |
| 121 | +; AVX10-LABEL: var_funnnel_v4i64: |
| 122 | +; AVX10: # %bb.0: |
| 123 | +; AVX10-NEXT: vpshldvq %ymm2, %ymm1, %ymm0 |
| 124 | +; AVX10-NEXT: retq |
123 | 125 | ;
|
124 | 126 | ; XOPAVX1-LABEL: var_funnnel_v4i64:
|
125 | 127 | ; XOPAVX1: # %bb.0:
|
@@ -271,10 +273,10 @@ define <8 x i32> @var_funnnel_v8i32(<8 x i32> %x, <8 x i32> %y, <8 x i32> %amt)
|
271 | 273 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
272 | 274 | ; AVX512VLBW-NEXT: retq
|
273 | 275 | ;
|
274 |
| -; AVX512VLVBMI2-LABEL: var_funnnel_v8i32: |
275 |
| -; AVX512VLVBMI2: # %bb.0: |
276 |
| -; AVX512VLVBMI2-NEXT: vpshldvd %ymm2, %ymm1, %ymm0 |
277 |
| -; AVX512VLVBMI2-NEXT: retq |
| 276 | +; AVX10-LABEL: var_funnnel_v8i32: |
| 277 | +; AVX10: # %bb.0: |
| 278 | +; AVX10-NEXT: vpshldvd %ymm2, %ymm1, %ymm0 |
| 279 | +; AVX10-NEXT: retq |
278 | 280 | ;
|
279 | 281 | ; XOPAVX1-LABEL: var_funnnel_v8i32:
|
280 | 282 | ; XOPAVX1: # %bb.0:
|
@@ -424,10 +426,10 @@ define <16 x i16> @var_funnnel_v16i16(<16 x i16> %x, <16 x i16> %y, <16 x i16> %
|
424 | 426 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
425 | 427 | ; AVX512VLBW-NEXT: retq
|
426 | 428 | ;
|
427 |
| -; AVX512VLVBMI2-LABEL: var_funnnel_v16i16: |
428 |
| -; AVX512VLVBMI2: # %bb.0: |
429 |
| -; AVX512VLVBMI2-NEXT: vpshldvw %ymm2, %ymm1, %ymm0 |
430 |
| -; AVX512VLVBMI2-NEXT: retq |
| 429 | +; AVX10-LABEL: var_funnnel_v16i16: |
| 430 | +; AVX10: # %bb.0: |
| 431 | +; AVX10-NEXT: vpshldvw %ymm2, %ymm1, %ymm0 |
| 432 | +; AVX10-NEXT: retq |
431 | 433 | ;
|
432 | 434 | ; XOPAVX1-LABEL: var_funnnel_v16i16:
|
433 | 435 | ; XOPAVX1: # %bb.0:
|
@@ -691,6 +693,21 @@ define <32 x i8> @var_funnnel_v32i8(<32 x i8> %x, <32 x i8> %y, <32 x i8> %amt)
|
691 | 693 | ; AVX512VLVBMI2-NEXT: vpmovwb %zmm0, %ymm0
|
692 | 694 | ; AVX512VLVBMI2-NEXT: retq
|
693 | 695 | ;
|
| 696 | +; AVX10_256-LABEL: var_funnnel_v32i8: |
| 697 | +; AVX10_256: # %bb.0: |
| 698 | +; AVX10_256-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15],ymm1[24],ymm0[24],ymm1[25],ymm0[25],ymm1[26],ymm0[26],ymm1[27],ymm0[27],ymm1[28],ymm0[28],ymm1[29],ymm0[29],ymm1[30],ymm0[30],ymm1[31],ymm0[31] |
| 699 | +; AVX10_256-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, %ymm2 |
| 700 | +; AVX10_256-NEXT: vpxor %xmm4, %xmm4, %xmm4 |
| 701 | +; AVX10_256-NEXT: vpunpckhbw {{.*#+}} ymm5 = ymm2[8],ymm4[8],ymm2[9],ymm4[9],ymm2[10],ymm4[10],ymm2[11],ymm4[11],ymm2[12],ymm4[12],ymm2[13],ymm4[13],ymm2[14],ymm4[14],ymm2[15],ymm4[15],ymm2[24],ymm4[24],ymm2[25],ymm4[25],ymm2[26],ymm4[26],ymm2[27],ymm4[27],ymm2[28],ymm4[28],ymm2[29],ymm4[29],ymm2[30],ymm4[30],ymm2[31],ymm4[31] |
| 702 | +; AVX10_256-NEXT: vpsllvw %ymm5, %ymm3, %ymm3 |
| 703 | +; AVX10_256-NEXT: vpsrlw $8, %ymm3, %ymm3 |
| 704 | +; AVX10_256-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23] |
| 705 | +; AVX10_256-NEXT: vpunpcklbw {{.*#+}} ymm1 = ymm2[0],ymm4[0],ymm2[1],ymm4[1],ymm2[2],ymm4[2],ymm2[3],ymm4[3],ymm2[4],ymm4[4],ymm2[5],ymm4[5],ymm2[6],ymm4[6],ymm2[7],ymm4[7],ymm2[16],ymm4[16],ymm2[17],ymm4[17],ymm2[18],ymm4[18],ymm2[19],ymm4[19],ymm2[20],ymm4[20],ymm2[21],ymm4[21],ymm2[22],ymm4[22],ymm2[23],ymm4[23] |
| 706 | +; AVX10_256-NEXT: vpsllvw %ymm1, %ymm0, %ymm0 |
| 707 | +; AVX10_256-NEXT: vpsrlw $8, %ymm0, %ymm0 |
| 708 | +; AVX10_256-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 |
| 709 | +; AVX10_256-NEXT: retq |
| 710 | +; |
694 | 711 | ; XOPAVX1-LABEL: var_funnnel_v32i8:
|
695 | 712 | ; XOPAVX1: # %bb.0:
|
696 | 713 | ; XOPAVX1-NEXT: vextractf128 $1, %ymm1, %xmm3
|
@@ -824,11 +841,11 @@ define <4 x i64> @splatvar_funnnel_v4i64(<4 x i64> %x, <4 x i64> %y, <4 x i64> %
|
824 | 841 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
825 | 842 | ; AVX512VLBW-NEXT: retq
|
826 | 843 | ;
|
827 |
| -; AVX512VLVBMI2-LABEL: splatvar_funnnel_v4i64: |
828 |
| -; AVX512VLVBMI2: # %bb.0: |
829 |
| -; AVX512VLVBMI2-NEXT: vpbroadcastq %xmm2, %ymm2 |
830 |
| -; AVX512VLVBMI2-NEXT: vpshldvq %ymm2, %ymm1, %ymm0 |
831 |
| -; AVX512VLVBMI2-NEXT: retq |
| 844 | +; AVX10-LABEL: splatvar_funnnel_v4i64: |
| 845 | +; AVX10: # %bb.0: |
| 846 | +; AVX10-NEXT: vpbroadcastq %xmm2, %ymm2 |
| 847 | +; AVX10-NEXT: vpshldvq %ymm2, %ymm1, %ymm0 |
| 848 | +; AVX10-NEXT: retq |
832 | 849 | ;
|
833 | 850 | ; XOPAVX1-LABEL: splatvar_funnnel_v4i64:
|
834 | 851 | ; XOPAVX1: # %bb.0:
|
@@ -942,11 +959,11 @@ define <8 x i32> @splatvar_funnnel_v8i32(<8 x i32> %x, <8 x i32> %y, <8 x i32> %
|
942 | 959 | ; AVX512VLBW-NEXT: vshufps {{.*#+}} ymm0 = ymm0[1,3],ymm3[1,3],ymm0[5,7],ymm3[5,7]
|
943 | 960 | ; AVX512VLBW-NEXT: retq
|
944 | 961 | ;
|
945 |
| -; AVX512VLVBMI2-LABEL: splatvar_funnnel_v8i32: |
946 |
| -; AVX512VLVBMI2: # %bb.0: |
947 |
| -; AVX512VLVBMI2-NEXT: vpbroadcastd %xmm2, %ymm2 |
948 |
| -; AVX512VLVBMI2-NEXT: vpshldvd %ymm2, %ymm1, %ymm0 |
949 |
| -; AVX512VLVBMI2-NEXT: retq |
| 962 | +; AVX10-LABEL: splatvar_funnnel_v8i32: |
| 963 | +; AVX10: # %bb.0: |
| 964 | +; AVX10-NEXT: vpbroadcastd %xmm2, %ymm2 |
| 965 | +; AVX10-NEXT: vpshldvd %ymm2, %ymm1, %ymm0 |
| 966 | +; AVX10-NEXT: retq |
950 | 967 | ;
|
951 | 968 | ; XOPAVX1-LABEL: splatvar_funnnel_v8i32:
|
952 | 969 | ; XOPAVX1: # %bb.0:
|
@@ -1063,11 +1080,11 @@ define <16 x i16> @splatvar_funnnel_v16i16(<16 x i16> %x, <16 x i16> %y, <16 x i
|
1063 | 1080 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
1064 | 1081 | ; AVX512VLBW-NEXT: retq
|
1065 | 1082 | ;
|
1066 |
| -; AVX512VLVBMI2-LABEL: splatvar_funnnel_v16i16: |
1067 |
| -; AVX512VLVBMI2: # %bb.0: |
1068 |
| -; AVX512VLVBMI2-NEXT: vpbroadcastw %xmm2, %ymm2 |
1069 |
| -; AVX512VLVBMI2-NEXT: vpshldvw %ymm2, %ymm1, %ymm0 |
1070 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1083 | +; AVX10-LABEL: splatvar_funnnel_v16i16: |
| 1084 | +; AVX10: # %bb.0: |
| 1085 | +; AVX10-NEXT: vpbroadcastw %xmm2, %ymm2 |
| 1086 | +; AVX10-NEXT: vpshldvw %ymm2, %ymm1, %ymm0 |
| 1087 | +; AVX10-NEXT: retq |
1071 | 1088 | ;
|
1072 | 1089 | ; XOPAVX1-LABEL: splatvar_funnnel_v16i16:
|
1073 | 1090 | ; XOPAVX1: # %bb.0:
|
@@ -1197,17 +1214,17 @@ define <32 x i8> @splatvar_funnnel_v32i8(<32 x i8> %x, <32 x i8> %y, <32 x i8> %
|
1197 | 1214 | ; AVX512VLBW-NEXT: vpackuswb %ymm3, %ymm0, %ymm0
|
1198 | 1215 | ; AVX512VLBW-NEXT: retq
|
1199 | 1216 | ;
|
1200 |
| -; AVX512VLVBMI2-LABEL: splatvar_funnnel_v32i8: |
1201 |
| -; AVX512VLVBMI2: # %bb.0: |
1202 |
| -; AVX512VLVBMI2-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15],ymm1[24],ymm0[24],ymm1[25],ymm0[25],ymm1[26],ymm0[26],ymm1[27],ymm0[27],ymm1[28],ymm0[28],ymm1[29],ymm0[29],ymm1[30],ymm0[30],ymm1[31],ymm0[31] |
1203 |
| -; AVX512VLVBMI2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm2 |
1204 |
| -; AVX512VLVBMI2-NEXT: vpsllw %xmm2, %ymm3, %ymm3 |
1205 |
| -; AVX512VLVBMI2-NEXT: vpsrlw $8, %ymm3, %ymm3 |
1206 |
| -; AVX512VLVBMI2-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23] |
1207 |
| -; AVX512VLVBMI2-NEXT: vpsllw %xmm2, %ymm0, %ymm0 |
1208 |
| -; AVX512VLVBMI2-NEXT: vpsrlw $8, %ymm0, %ymm0 |
1209 |
| -; AVX512VLVBMI2-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 |
1210 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1217 | +; AVX10-LABEL: splatvar_funnnel_v32i8: |
| 1218 | +; AVX10: # %bb.0: |
| 1219 | +; AVX10-NEXT: vpunpckhbw {{.*#+}} ymm3 = ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15],ymm1[24],ymm0[24],ymm1[25],ymm0[25],ymm1[26],ymm0[26],ymm1[27],ymm0[27],ymm1[28],ymm0[28],ymm1[29],ymm0[29],ymm1[30],ymm0[30],ymm1[31],ymm0[31] |
| 1220 | +; AVX10-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm2 |
| 1221 | +; AVX10-NEXT: vpsllw %xmm2, %ymm3, %ymm3 |
| 1222 | +; AVX10-NEXT: vpsrlw $8, %ymm3, %ymm3 |
| 1223 | +; AVX10-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23] |
| 1224 | +; AVX10-NEXT: vpsllw %xmm2, %ymm0, %ymm0 |
| 1225 | +; AVX10-NEXT: vpsrlw $8, %ymm0, %ymm0 |
| 1226 | +; AVX10-NEXT: vpackuswb %ymm3, %ymm0, %ymm0 |
| 1227 | +; AVX10-NEXT: retq |
1211 | 1228 | ;
|
1212 | 1229 | ; XOPAVX1-LABEL: splatvar_funnnel_v32i8:
|
1213 | 1230 | ; XOPAVX1: # %bb.0:
|
@@ -1438,25 +1455,25 @@ define void @fancierRotate2(ptr %arr, ptr %control, i32 %rot0, i32 %rot1) {
|
1438 | 1455 | ; AVX512VLBW-NEXT: vzeroupper
|
1439 | 1456 | ; AVX512VLBW-NEXT: retq
|
1440 | 1457 | ;
|
1441 |
| -; AVX512VLVBMI2-LABEL: fancierRotate2: |
1442 |
| -; AVX512VLVBMI2: # %bb.0: # %entry |
1443 |
| -; AVX512VLVBMI2-NEXT: vpbroadcastd %edx, %ymm0 |
1444 |
| -; AVX512VLVBMI2-NEXT: vpbroadcastd %ecx, %ymm1 |
1445 |
| -; AVX512VLVBMI2-NEXT: movq $-1024, %rax # imm = 0xFC00 |
1446 |
| -; AVX512VLVBMI2-NEXT: .p2align 4, 0x90 |
1447 |
| -; AVX512VLVBMI2-NEXT: .LBB8_1: # %loop |
1448 |
| -; AVX512VLVBMI2-NEXT: # =>This Inner Loop Header: Depth=1 |
1449 |
| -; AVX512VLVBMI2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero |
1450 |
| -; AVX512VLVBMI2-NEXT: vptestnmb %xmm2, %xmm2, %k1 |
1451 |
| -; AVX512VLVBMI2-NEXT: vpblendmd %ymm0, %ymm1, %ymm2 {%k1} |
1452 |
| -; AVX512VLVBMI2-NEXT: vmovdqu 4096(%rdi,%rax,4), %ymm3 |
1453 |
| -; AVX512VLVBMI2-NEXT: vprolvd %ymm2, %ymm3, %ymm2 |
1454 |
| -; AVX512VLVBMI2-NEXT: vmovdqu %ymm2, 4096(%rdi,%rax,4) |
1455 |
| -; AVX512VLVBMI2-NEXT: addq $8, %rax |
1456 |
| -; AVX512VLVBMI2-NEXT: jne .LBB8_1 |
1457 |
| -; AVX512VLVBMI2-NEXT: # %bb.2: # %exit |
1458 |
| -; AVX512VLVBMI2-NEXT: vzeroupper |
1459 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1458 | +; AVX10-LABEL: fancierRotate2: |
| 1459 | +; AVX10: # %bb.0: # %entry |
| 1460 | +; AVX10-NEXT: vpbroadcastd %edx, %ymm0 |
| 1461 | +; AVX10-NEXT: vpbroadcastd %ecx, %ymm1 |
| 1462 | +; AVX10-NEXT: movq $-1024, %rax # imm = 0xFC00 |
| 1463 | +; AVX10-NEXT: .p2align 4, 0x90 |
| 1464 | +; AVX10-NEXT: .LBB8_1: # %loop |
| 1465 | +; AVX10-NEXT: # =>This Inner Loop Header: Depth=1 |
| 1466 | +; AVX10-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero |
| 1467 | +; AVX10-NEXT: vptestnmb %xmm2, %xmm2, %k1 |
| 1468 | +; AVX10-NEXT: vpblendmd %ymm0, %ymm1, %ymm2 {%k1} |
| 1469 | +; AVX10-NEXT: vmovdqu 4096(%rdi,%rax,4), %ymm3 |
| 1470 | +; AVX10-NEXT: vprolvd %ymm2, %ymm3, %ymm2 |
| 1471 | +; AVX10-NEXT: vmovdqu %ymm2, 4096(%rdi,%rax,4) |
| 1472 | +; AVX10-NEXT: addq $8, %rax |
| 1473 | +; AVX10-NEXT: jne .LBB8_1 |
| 1474 | +; AVX10-NEXT: # %bb.2: # %exit |
| 1475 | +; AVX10-NEXT: vzeroupper |
| 1476 | +; AVX10-NEXT: retq |
1460 | 1477 | ;
|
1461 | 1478 | ; XOPAVX1-LABEL: fancierRotate2:
|
1462 | 1479 | ; XOPAVX1: # %bb.0: # %entry
|
@@ -1609,10 +1626,10 @@ define <4 x i64> @constant_funnnel_v4i64(<4 x i64> %x, <4 x i64> %y) nounwind {
|
1609 | 1626 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
1610 | 1627 | ; AVX512VLBW-NEXT: retq
|
1611 | 1628 | ;
|
1612 |
| -; AVX512VLVBMI2-LABEL: constant_funnnel_v4i64: |
1613 |
| -; AVX512VLVBMI2: # %bb.0: |
1614 |
| -; AVX512VLVBMI2-NEXT: vpshldvq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
1615 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1629 | +; AVX10-LABEL: constant_funnnel_v4i64: |
| 1630 | +; AVX10: # %bb.0: |
| 1631 | +; AVX10-NEXT: vpshldvq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 1632 | +; AVX10-NEXT: retq |
1616 | 1633 | ;
|
1617 | 1634 | ; XOPAVX1-LABEL: constant_funnnel_v4i64:
|
1618 | 1635 | ; XOPAVX1: # %bb.0:
|
@@ -1707,10 +1724,10 @@ define <8 x i32> @constant_funnnel_v8i32(<8 x i32> %x, <8 x i32> %y) nounwind {
|
1707 | 1724 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
1708 | 1725 | ; AVX512VLBW-NEXT: retq
|
1709 | 1726 | ;
|
1710 |
| -; AVX512VLVBMI2-LABEL: constant_funnnel_v8i32: |
1711 |
| -; AVX512VLVBMI2: # %bb.0: |
1712 |
| -; AVX512VLVBMI2-NEXT: vpshldvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
1713 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1727 | +; AVX10-LABEL: constant_funnnel_v8i32: |
| 1728 | +; AVX10: # %bb.0: |
| 1729 | +; AVX10-NEXT: vpshldvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 1730 | +; AVX10-NEXT: retq |
1714 | 1731 | ;
|
1715 | 1732 | ; XOPAVX1-LABEL: constant_funnnel_v8i32:
|
1716 | 1733 | ; XOPAVX1: # %bb.0:
|
@@ -1810,10 +1827,10 @@ define <16 x i16> @constant_funnnel_v16i16(<16 x i16> %x, <16 x i16> %y) nounwin
|
1810 | 1827 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
1811 | 1828 | ; AVX512VLBW-NEXT: retq
|
1812 | 1829 | ;
|
1813 |
| -; AVX512VLVBMI2-LABEL: constant_funnnel_v16i16: |
1814 |
| -; AVX512VLVBMI2: # %bb.0: |
1815 |
| -; AVX512VLVBMI2-NEXT: vpshldvw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
1816 |
| -; AVX512VLVBMI2-NEXT: retq |
| 1830 | +; AVX10-LABEL: constant_funnnel_v16i16: |
| 1831 | +; AVX10: # %bb.0: |
| 1832 | +; AVX10-NEXT: vpshldvw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 1833 | +; AVX10-NEXT: retq |
1817 | 1834 | ;
|
1818 | 1835 | ; XOPAVX1-LABEL: constant_funnnel_v16i16:
|
1819 | 1836 | ; XOPAVX1: # %bb.0:
|
@@ -1944,6 +1961,17 @@ define <32 x i8> @constant_funnnel_v32i8(<32 x i8> %x, <32 x i8> %y) nounwind {
|
1944 | 1961 | ; AVX512VLVBMI2-NEXT: vpmovwb %zmm0, %ymm0
|
1945 | 1962 | ; AVX512VLVBMI2-NEXT: retq
|
1946 | 1963 | ;
|
| 1964 | +; AVX10_256-LABEL: constant_funnnel_v32i8: |
| 1965 | +; AVX10_256: # %bb.0: |
| 1966 | +; AVX10_256-NEXT: vpunpckhbw {{.*#+}} ymm2 = ymm1[8],ymm0[8],ymm1[9],ymm0[9],ymm1[10],ymm0[10],ymm1[11],ymm0[11],ymm1[12],ymm0[12],ymm1[13],ymm0[13],ymm1[14],ymm0[14],ymm1[15],ymm0[15],ymm1[24],ymm0[24],ymm1[25],ymm0[25],ymm1[26],ymm0[26],ymm1[27],ymm0[27],ymm1[28],ymm0[28],ymm1[29],ymm0[29],ymm1[30],ymm0[30],ymm1[31],ymm0[31] |
| 1967 | +; AVX10_256-NEXT: vpsllvw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm2 |
| 1968 | +; AVX10_256-NEXT: vpsrlw $8, %ymm2, %ymm2 |
| 1969 | +; AVX10_256-NEXT: vpunpcklbw {{.*#+}} ymm0 = ymm1[0],ymm0[0],ymm1[1],ymm0[1],ymm1[2],ymm0[2],ymm1[3],ymm0[3],ymm1[4],ymm0[4],ymm1[5],ymm0[5],ymm1[6],ymm0[6],ymm1[7],ymm0[7],ymm1[16],ymm0[16],ymm1[17],ymm0[17],ymm1[18],ymm0[18],ymm1[19],ymm0[19],ymm1[20],ymm0[20],ymm1[21],ymm0[21],ymm1[22],ymm0[22],ymm1[23],ymm0[23] |
| 1970 | +; AVX10_256-NEXT: vpsllvw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0 |
| 1971 | +; AVX10_256-NEXT: vpsrlw $8, %ymm0, %ymm0 |
| 1972 | +; AVX10_256-NEXT: vpackuswb %ymm2, %ymm0, %ymm0 |
| 1973 | +; AVX10_256-NEXT: retq |
| 1974 | +; |
1947 | 1975 | ; XOPAVX1-LABEL: constant_funnnel_v32i8:
|
1948 | 1976 | ; XOPAVX1: # %bb.0:
|
1949 | 1977 | ; XOPAVX1-NEXT: vextractf128 $1, %ymm0, %xmm2
|
@@ -2044,10 +2072,10 @@ define <4 x i64> @splatconstant_funnnel_v4i64(<4 x i64> %x, <4 x i64> %y) nounwi
|
2044 | 2072 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
2045 | 2073 | ; AVX512VLBW-NEXT: retq
|
2046 | 2074 | ;
|
2047 |
| -; AVX512VLVBMI2-LABEL: splatconstant_funnnel_v4i64: |
2048 |
| -; AVX512VLVBMI2: # %bb.0: |
2049 |
| -; AVX512VLVBMI2-NEXT: vpshldq $14, %ymm1, %ymm0, %ymm0 |
2050 |
| -; AVX512VLVBMI2-NEXT: retq |
| 2075 | +; AVX10-LABEL: splatconstant_funnnel_v4i64: |
| 2076 | +; AVX10: # %bb.0: |
| 2077 | +; AVX10-NEXT: vpshldq $14, %ymm1, %ymm0, %ymm0 |
| 2078 | +; AVX10-NEXT: retq |
2051 | 2079 | ;
|
2052 | 2080 | ; XOPAVX1-LABEL: splatconstant_funnnel_v4i64:
|
2053 | 2081 | ; XOPAVX1: # %bb.0:
|
@@ -2129,10 +2157,10 @@ define <8 x i32> @splatconstant_funnnel_v8i32(<8 x i32> %x, <8 x i32> %y) nounwi
|
2129 | 2157 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
2130 | 2158 | ; AVX512VLBW-NEXT: retq
|
2131 | 2159 | ;
|
2132 |
| -; AVX512VLVBMI2-LABEL: splatconstant_funnnel_v8i32: |
2133 |
| -; AVX512VLVBMI2: # %bb.0: |
2134 |
| -; AVX512VLVBMI2-NEXT: vpshldd $4, %ymm1, %ymm0, %ymm0 |
2135 |
| -; AVX512VLVBMI2-NEXT: retq |
| 2160 | +; AVX10-LABEL: splatconstant_funnnel_v8i32: |
| 2161 | +; AVX10: # %bb.0: |
| 2162 | +; AVX10-NEXT: vpshldd $4, %ymm1, %ymm0, %ymm0 |
| 2163 | +; AVX10-NEXT: retq |
2136 | 2164 | ;
|
2137 | 2165 | ; XOPAVX1-LABEL: splatconstant_funnnel_v8i32:
|
2138 | 2166 | ; XOPAVX1: # %bb.0:
|
@@ -2214,10 +2242,10 @@ define <16 x i16> @splatconstant_funnnel_v16i16(<16 x i16> %x, <16 x i16> %y) no
|
2214 | 2242 | ; AVX512VLBW-NEXT: vpor %ymm1, %ymm0, %ymm0
|
2215 | 2243 | ; AVX512VLBW-NEXT: retq
|
2216 | 2244 | ;
|
2217 |
| -; AVX512VLVBMI2-LABEL: splatconstant_funnnel_v16i16: |
2218 |
| -; AVX512VLVBMI2: # %bb.0: |
2219 |
| -; AVX512VLVBMI2-NEXT: vpshldw $7, %ymm1, %ymm0, %ymm0 |
2220 |
| -; AVX512VLVBMI2-NEXT: retq |
| 2245 | +; AVX10-LABEL: splatconstant_funnnel_v16i16: |
| 2246 | +; AVX10: # %bb.0: |
| 2247 | +; AVX10-NEXT: vpshldw $7, %ymm1, %ymm0, %ymm0 |
| 2248 | +; AVX10-NEXT: retq |
2221 | 2249 | ;
|
2222 | 2250 | ; XOPAVX1-LABEL: splatconstant_funnnel_v16i16:
|
2223 | 2251 | ; XOPAVX1: # %bb.0:
|
@@ -2309,12 +2337,12 @@ define <32 x i8> @splatconstant_funnnel_v32i8(<32 x i8> %x, <32 x i8> %y) nounwi
|
2309 | 2337 | ; AVX512VLBW-NEXT: vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm2, %ymm0
|
2310 | 2338 | ; AVX512VLBW-NEXT: retq
|
2311 | 2339 | ;
|
2312 |
| -; AVX512VLVBMI2-LABEL: splatconstant_funnnel_v32i8: |
2313 |
| -; AVX512VLVBMI2: # %bb.0: |
2314 |
| -; AVX512VLVBMI2-NEXT: vpsllw $4, %ymm0, %ymm2 |
2315 |
| -; AVX512VLVBMI2-NEXT: vpsrlw $4, %ymm1, %ymm0 |
2316 |
| -; AVX512VLVBMI2-NEXT: vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm2, %ymm0 |
2317 |
| -; AVX512VLVBMI2-NEXT: retq |
| 2340 | +; AVX10-LABEL: splatconstant_funnnel_v32i8: |
| 2341 | +; AVX10: # %bb.0: |
| 2342 | +; AVX10-NEXT: vpsllw $4, %ymm0, %ymm2 |
| 2343 | +; AVX10-NEXT: vpsrlw $4, %ymm1, %ymm0 |
| 2344 | +; AVX10-NEXT: vpternlogq $216, {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %ymm2, %ymm0 |
| 2345 | +; AVX10-NEXT: retq |
2318 | 2346 | ;
|
2319 | 2347 | ; XOPAVX1-LABEL: splatconstant_funnnel_v32i8:
|
2320 | 2348 | ; XOPAVX1: # %bb.0:
|
|
0 commit comments