@@ -75,15 +75,8 @@ define <64 x i8> @_mm512_mask_packss_epi16_manual(<64 x i8> %src, i64 noundef %k
7575;
7676; AVX512-LABEL: _mm512_mask_packss_epi16_manual:
7777; AVX512: # %bb.0:
78- ; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,5,12,13,6,7,14,15]
79- ; AVX512-NEXT: vpermi2q %zmm2, %zmm1, %zmm3
80- ; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,1,8,9,2,3,10,11]
81- ; AVX512-NEXT: vpermi2q %zmm2, %zmm1, %zmm4
82- ; AVX512-NEXT: vpmovswb %zmm4, %ymm1
83- ; AVX512-NEXT: vpmovswb %zmm3, %ymm2
84- ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1
8578; AVX512-NEXT: kmovq %rdi, %k1
86- ; AVX512-NEXT: vmovdqu8 %zmm1, %zmm0 {%k1}
79+ ; AVX512-NEXT: vpacksswb %zmm2, %zmm1, %zmm0 {%k1}
8780; AVX512-NEXT: retq
8881 %sh = shufflevector <32 x i16 > %a , <32 x i16 > %b , <64 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 32 , i32 33 , i32 34 , i32 35 , i32 36 , i32 37 , i32 38 , i32 39 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 40 , i32 41 , i32 42 , i32 43 , i32 44 , i32 45 , i32 46 , i32 47 , i32 16 , i32 17 , i32 18 , i32 19 , i32 20 , i32 21 , i32 22 , i32 23 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 56 , i32 57 , i32 58 , i32 59 , i32 60 , i32 61 , i32 62 , i32 63 >
8982 %minv = tail call <64 x i16 > @llvm.smax.v64i16 (<64 x i16 > %sh , <64 x i16 > splat (i16 -128 ))
@@ -167,15 +160,8 @@ define <32 x i16> @_mm512_mask_packss_epi32_manual(<32 x i16> %src, i32 noundef
167160;
168161; AVX512-LABEL: _mm512_mask_packss_epi32_manual:
169162; AVX512: # %bb.0:
170- ; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm3 = [4,5,12,13,6,7,14,15]
171- ; AVX512-NEXT: vpermi2q %zmm2, %zmm1, %zmm3
172- ; AVX512-NEXT: vpmovsxbq {{.*#+}} zmm4 = [0,1,8,9,2,3,10,11]
173- ; AVX512-NEXT: vpermi2q %zmm2, %zmm1, %zmm4
174- ; AVX512-NEXT: vpmovsdw %zmm4, %ymm1
175- ; AVX512-NEXT: vpmovsdw %zmm3, %ymm2
176- ; AVX512-NEXT: vinserti64x4 $1, %ymm2, %zmm1, %zmm1
177163; AVX512-NEXT: kmovd %edi, %k1
178- ; AVX512-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1}
164+ ; AVX512-NEXT: vpackssdw %zmm2, %zmm1, %zmm0 {%k1}
179165; AVX512-NEXT: retq
180166 %sh = shufflevector <16 x i32 > %a , <16 x i32 > %b , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 16 , i32 17 , i32 18 , i32 19 , i32 4 , i32 5 , i32 6 , i32 7 , i32 20 , i32 21 , i32 22 , i32 23 , i32 8 , i32 9 , i32 10 , i32 11 , i32 24 , i32 25 , i32 26 , i32 27 , i32 12 , i32 13 , i32 14 , i32 15 , i32 28 , i32 29 , i32 30 , i32 31 >
181167 %minv = tail call <32 x i32 > @llvm.smax.v32i32 (<32 x i32 > %sh , <32 x i32 > splat (i32 -32768 ))
0 commit comments