@@ -20,10 +20,7 @@ define <2 x i64> @test_mm_epi64(<8 x i16> %a, <8 x i16> %b) {
2020; AVX512VLCDBW-LABEL: test_mm_epi64:
2121; AVX512VLCDBW: # BB#0: # %entry
2222; AVX512VLCDBW-NEXT: vpcmpeqw %xmm1, %xmm0, %k0
23- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
24- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
25- ; AVX512VLCDBW-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0
26- ; AVX512VLCDBW-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0
23+ ; AVX512VLCDBW-NEXT: vpbroadcastmb2q %k0, %xmm0
2724; AVX512VLCDBW-NEXT: retq
2825;
2926; X86-AVX512VLCDBW-LABEL: test_mm_epi64:
@@ -62,23 +59,13 @@ define <4 x i32> @test_mm_epi32(<16 x i8> %a, <16 x i8> %b) {
6259; AVX512VLCDBW-LABEL: test_mm_epi32:
6360; AVX512VLCDBW: # BB#0: # %entry
6461; AVX512VLCDBW-NEXT: vpcmpeqb %xmm1, %xmm0, %k0
65- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
66- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
67- ; AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
68- ; AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
69- ; AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
70- ; AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
62+ ; AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %xmm0
7163; AVX512VLCDBW-NEXT: retq
7264;
7365; X86-AVX512VLCDBW-LABEL: test_mm_epi32:
7466; X86-AVX512VLCDBW: # BB#0: # %entry
7567; X86-AVX512VLCDBW-NEXT: vpcmpeqb %xmm1, %xmm0, %k0
76- ; X86-AVX512VLCDBW-NEXT: kmovd %k0, %eax
77- ; X86-AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
78- ; X86-AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
79- ; X86-AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
80- ; X86-AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
81- ; X86-AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
68+ ; X86-AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %xmm0
8269; X86-AVX512VLCDBW-NEXT: retl
8370entry:
8471 %0 = icmp eq <16 x i8 > %a , %b
@@ -100,27 +87,13 @@ define <16 x i32> @test_mm512_epi32(<16 x i32> %a, <16 x i32> %b) {
10087; AVX512VLCDBW-LABEL: test_mm512_epi32:
10188; AVX512VLCDBW: # BB#0: # %entry
10289; AVX512VLCDBW-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
103- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
104- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
105- ; AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
106- ; AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
107- ; AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
108- ; AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
109- ; AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
110- ; AVX512VLCDBW-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0
90+ ; AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %zmm0
11191; AVX512VLCDBW-NEXT: retq
11292;
11393; X86-AVX512VLCDBW-LABEL: test_mm512_epi32:
11494; X86-AVX512VLCDBW: # BB#0: # %entry
11595; X86-AVX512VLCDBW-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
116- ; X86-AVX512VLCDBW-NEXT: kmovd %k0, %eax
117- ; X86-AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
118- ; X86-AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
119- ; X86-AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
120- ; X86-AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
121- ; X86-AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
122- ; X86-AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
123- ; X86-AVX512VLCDBW-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0
96+ ; X86-AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %zmm0
12497; X86-AVX512VLCDBW-NEXT: retl
12598entry:
12699 %0 = icmp eq <16 x i32 > %a , %b
@@ -145,12 +118,7 @@ define <8 x i64> @test_mm512_epi64(<8 x i32> %a, <8 x i32> %b) {
145118; AVX512VLCDBW-LABEL: test_mm512_epi64:
146119; AVX512VLCDBW: # BB#0: # %entry
147120; AVX512VLCDBW-NEXT: vpcmpeqd %ymm1, %ymm0, %k0
148- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
149- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
150- ; AVX512VLCDBW-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0
151- ; AVX512VLCDBW-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0
152- ; AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
153- ; AVX512VLCDBW-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0
121+ ; AVX512VLCDBW-NEXT: vpbroadcastmb2q %k0, %zmm0
154122; AVX512VLCDBW-NEXT: retq
155123;
156124; X86-AVX512VLCDBW-LABEL: test_mm512_epi64:
@@ -188,11 +156,7 @@ define <4 x i64> @test_mm256_epi64(<8 x i32> %a, <8 x i32> %b) {
188156; AVX512VLCDBW-LABEL: test_mm256_epi64:
189157; AVX512VLCDBW: # BB#0: # %entry
190158; AVX512VLCDBW-NEXT: vpcmpeqd %ymm1, %ymm0, %k0
191- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
192- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
193- ; AVX512VLCDBW-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0
194- ; AVX512VLCDBW-NEXT: vpinsrb $8, %eax, %xmm0, %xmm0
195- ; AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
159+ ; AVX512VLCDBW-NEXT: vpbroadcastmb2q %k0, %ymm0
196160; AVX512VLCDBW-NEXT: retq
197161;
198162; X86-AVX512VLCDBW-LABEL: test_mm256_epi64:
@@ -232,25 +196,13 @@ define <8 x i32> @test_mm256_epi32(<16 x i16> %a, <16 x i16> %b) {
232196; AVX512VLCDBW-LABEL: test_mm256_epi32:
233197; AVX512VLCDBW: # BB#0: # %entry
234198; AVX512VLCDBW-NEXT: vpcmpeqw %ymm1, %ymm0, %k0
235- ; AVX512VLCDBW-NEXT: kmovd %k0, %eax
236- ; AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
237- ; AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
238- ; AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
239- ; AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
240- ; AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
241- ; AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
199+ ; AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %ymm0
242200; AVX512VLCDBW-NEXT: retq
243201;
244202; X86-AVX512VLCDBW-LABEL: test_mm256_epi32:
245203; X86-AVX512VLCDBW: # BB#0: # %entry
246204; X86-AVX512VLCDBW-NEXT: vpcmpeqw %ymm1, %ymm0, %k0
247- ; X86-AVX512VLCDBW-NEXT: kmovd %k0, %eax
248- ; X86-AVX512VLCDBW-NEXT: vpxor %xmm0, %xmm0, %xmm0
249- ; X86-AVX512VLCDBW-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
250- ; X86-AVX512VLCDBW-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
251- ; X86-AVX512VLCDBW-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
252- ; X86-AVX512VLCDBW-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
253- ; X86-AVX512VLCDBW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0
205+ ; X86-AVX512VLCDBW-NEXT: vpbroadcastmw2d %k0, %ymm0
254206; X86-AVX512VLCDBW-NEXT: retl
255207entry:
256208 %0 = icmp eq <16 x i16 > %a , %b
0 commit comments