@@ -265,8 +265,9 @@ define <4 x i64> @ext_i4_4i64(i4 %a0) {
265265; AVX1-NEXT: vmovd %edi, %xmm0
266266; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
267267; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
268- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
269- ; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
268+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm1 = [1,2,4,8]
269+ ; AVX1-NEXT: vandps %ymm1, %ymm0, %ymm0
270+ ; AVX1-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm1
270271; AVX1-NEXT: vpsrlq $63, %xmm1, %xmm1
271272; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
272273; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
@@ -324,8 +325,9 @@ define <8 x i32> @ext_i8_8i32(i8 %a0) {
324325; AVX1-NEXT: vmovd %edi, %xmm0
325326; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
326327; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
327- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
328- ; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
328+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm1 = [1,2,4,8,16,32,64,128]
329+ ; AVX1-NEXT: vandps %ymm1, %ymm0, %ymm0
330+ ; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm1
329331; AVX1-NEXT: vpsrld $31, %xmm1, %xmm1
330332; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
331333; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
@@ -385,8 +387,9 @@ define <16 x i16> @ext_i16_16i16(i16 %a0) {
385387; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
386388; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
387389; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
388- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
389- ; AVX1-NEXT: vpcmpeqw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
390+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm1 = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]
391+ ; AVX1-NEXT: vandps %ymm1, %ymm0, %ymm0
392+ ; AVX1-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm1
390393; AVX1-NEXT: vpsrlw $15, %xmm1, %xmm1
391394; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
392395; AVX1-NEXT: vpcmpeqw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
@@ -544,15 +547,17 @@ define <8 x i64> @ext_i8_8i64(i8 %a0) {
544547; AVX1-NEXT: vmovd %edi, %xmm0
545548; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
546549; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm1
547- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0
548- ; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm2
549- ; AVX1-NEXT: vpsrlq $63, %xmm2, %xmm2
550- ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
551- ; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
550+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm0 = [1,2,4,8]
551+ ; AVX1-NEXT: vandps %ymm0, %ymm1, %ymm2
552+ ; AVX1-NEXT: vpcmpeqq %xmm0, %xmm2, %xmm0
552553; AVX1-NEXT: vpsrlq $63, %xmm0, %xmm0
553- ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm0
554- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
555- ; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm2
554+ ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
555+ ; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm2
556+ ; AVX1-NEXT: vpsrlq $63, %xmm2, %xmm2
557+ ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
558+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [16,32,64,128]
559+ ; AVX1-NEXT: vandps %ymm2, %ymm1, %ymm1
560+ ; AVX1-NEXT: vpcmpeqq %xmm2, %xmm1, %xmm2
556561; AVX1-NEXT: vpsrlq $63, %xmm2, %xmm2
557562; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
558563; AVX1-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
@@ -623,15 +628,17 @@ define <16 x i32> @ext_i16_16i32(i16 %a0) {
623628; AVX1-NEXT: vmovd %edi, %xmm0
624629; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
625630; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm1
626- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0
627- ; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm2
628- ; AVX1-NEXT: vpsrld $31, %xmm2, %xmm2
629- ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
630- ; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
631+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm0 = [1,2,4,8,16,32,64,128]
632+ ; AVX1-NEXT: vandps %ymm0, %ymm1, %ymm2
633+ ; AVX1-NEXT: vpcmpeqd %xmm0, %xmm2, %xmm0
631634; AVX1-NEXT: vpsrld $31, %xmm0, %xmm0
632- ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm2, %ymm0
633- ; AVX1-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
634- ; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm2
635+ ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
636+ ; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm2, %xmm2
637+ ; AVX1-NEXT: vpsrld $31, %xmm2, %xmm2
638+ ; AVX1-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
639+ ; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [256,512,1024,2048,4096,8192,16384,32768]
640+ ; AVX1-NEXT: vandps %ymm2, %ymm1, %ymm1
641+ ; AVX1-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm2
635642; AVX1-NEXT: vpsrld $31, %xmm2, %xmm2
636643; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
637644; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
@@ -705,22 +712,21 @@ define <32 x i16> @ext_i32_32i16(i32 %a0) {
705712; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
706713; AVX1-NEXT: vmovaps {{.*#+}} ymm2 = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]
707714; AVX1-NEXT: vandps %ymm2, %ymm0, %ymm0
708- ; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128]
709- ; AVX1-NEXT: vpcmpeqw %xmm3, %xmm0, %xmm4
710- ; AVX1-NEXT: vpsrlw $15, %xmm4, %xmm4
715+ ; AVX1-NEXT: vpcmpeqw %xmm2, %xmm0, %xmm3
716+ ; AVX1-NEXT: vpsrlw $15, %xmm3, %xmm3
711717; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
712- ; AVX1-NEXT: vmovdqa {{.*#+}} xmm5 = [256,512,1024,2048,4096,8192,16384,32768]
713- ; AVX1-NEXT: vpcmpeqw %xmm5 , %xmm0, %xmm0
718+ ; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [256,512,1024,2048,4096,8192,16384,32768]
719+ ; AVX1-NEXT: vpcmpeqw %xmm4 , %xmm0, %xmm0
714720; AVX1-NEXT: vpsrlw $15, %xmm0, %xmm0
715- ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm4 , %ymm0
721+ ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm3 , %ymm0
716722; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm1[1,1,1,1,4,5,6,7]
717723; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,0,0]
718724; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
719725; AVX1-NEXT: vandps %ymm2, %ymm1, %ymm1
720- ; AVX1-NEXT: vpcmpeqw %xmm3 , %xmm1, %xmm2
726+ ; AVX1-NEXT: vpcmpeqw %xmm2 , %xmm1, %xmm2
721727; AVX1-NEXT: vpsrlw $15, %xmm2, %xmm2
722728; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
723- ; AVX1-NEXT: vpcmpeqw %xmm5 , %xmm1, %xmm1
729+ ; AVX1-NEXT: vpcmpeqw %xmm4 , %xmm1, %xmm1
724730; AVX1-NEXT: vpsrlw $15, %xmm1, %xmm1
725731; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm1
726732; AVX1-NEXT: retq
0 commit comments