Skip to content

Commit 631991f

Browse files
committed
[X86][AVX512] Added additional shuffle+trunc test case.
An existing test should have covered this but a typo caused it to fail. I've kept both as the codegen for the typo case needs addressing as well. llvm-svn: 310791
1 parent ad1c556 commit 631991f

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

llvm/test/CodeGen/X86/shuffle-vs-trunc-512.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,56 @@ define void @trunc_v8i64_to_v8i8(<64 x i8>* %L, <8 x i8>* %S) nounwind {
228228
ret void
229229
}
230230

231+
define <16 x i8> @trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_61(<64 x i8> %x) {
232+
; AVX512F-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_61:
233+
; AVX512F: # BB#0:
234+
; AVX512F-NEXT: vextracti128 $1, %ymm1, %xmm2
235+
; AVX512F-NEXT: vmovdqa {{.*#+}} xmm3 = <u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u>
236+
; AVX512F-NEXT: vpshufb %xmm3, %xmm2, %xmm2
237+
; AVX512F-NEXT: vpshufb %xmm3, %xmm1, %xmm1
238+
; AVX512F-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
239+
; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm2
240+
; AVX512F-NEXT: vmovdqa {{.*#+}} xmm3 = <1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u>
241+
; AVX512F-NEXT: vpshufb %xmm3, %xmm2, %xmm2
242+
; AVX512F-NEXT: vpshufb %xmm3, %xmm0, %xmm0
243+
; AVX512F-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
244+
; AVX512F-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
245+
; AVX512F-NEXT: vzeroupper
246+
; AVX512F-NEXT: retq
247+
;
248+
; AVX512VL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_61:
249+
; AVX512VL: # BB#0:
250+
; AVX512VL-NEXT: vextracti128 $1, %ymm1, %xmm2
251+
; AVX512VL-NEXT: vmovdqa {{.*#+}} xmm3 = <u,u,u,u,1,5,9,13,u,u,u,u,u,u,u,u>
252+
; AVX512VL-NEXT: vpshufb %xmm3, %xmm2, %xmm2
253+
; AVX512VL-NEXT: vpshufb %xmm3, %xmm1, %xmm1
254+
; AVX512VL-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
255+
; AVX512VL-NEXT: vextracti128 $1, %ymm0, %xmm2
256+
; AVX512VL-NEXT: vmovdqa {{.*#+}} xmm3 = <1,5,9,13,u,u,u,u,u,u,u,u,u,u,u,u>
257+
; AVX512VL-NEXT: vpshufb %xmm3, %xmm2, %xmm2
258+
; AVX512VL-NEXT: vpshufb %xmm3, %xmm0, %xmm0
259+
; AVX512VL-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
260+
; AVX512VL-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3]
261+
; AVX512VL-NEXT: vzeroupper
262+
; AVX512VL-NEXT: retq
263+
;
264+
; AVX512BW-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_61:
265+
; AVX512BW: # BB#0:
266+
; AVX512BW-NEXT: vpsrlw $8, %zmm0, %zmm0
267+
; AVX512BW-NEXT: vpmovdb %zmm0, %xmm0
268+
; AVX512BW-NEXT: vzeroupper
269+
; AVX512BW-NEXT: retq
270+
;
271+
; AVX512BWVL-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_61:
272+
; AVX512BWVL: # BB#0:
273+
; AVX512BWVL-NEXT: vpsrlw $8, %zmm0, %zmm0
274+
; AVX512BWVL-NEXT: vpmovdb %zmm0, %xmm0
275+
; AVX512BWVL-NEXT: vzeroupper
276+
; AVX512BWVL-NEXT: retq
277+
%res = shufflevector <64 x i8> %x, <64 x i8> %x, <16 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 33, i32 37, i32 41, i32 45, i32 49, i32 53, i32 57, i32 61>
278+
ret <16 x i8> %res
279+
}
280+
231281
define <16 x i8> @trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62(<64 x i8> %x) {
232282
; AVX512F-LABEL: trunc_shuffle_v64i8_01_05_09_13_17_21_25_29_33_37_41_45_49_53_57_62:
233283
; AVX512F: # BB#0:

0 commit comments

Comments
 (0)