From 410317e973f34ecd0ec36e2d8ba260d392a3ece8 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Tue, 25 Apr 2017 18:00:04 +0000 Subject: [PATCH] [X86][AVX2] Add shuffle test for PR27320 showing current codegen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301342 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../X86/vector-shuffle-combining-avx2.ll | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/CodeGen/X86/vector-shuffle-combining-avx2.ll b/test/CodeGen/X86/vector-shuffle-combining-avx2.ll index 1385929ab8c..202acbcd350 100644 --- a/test/CodeGen/X86/vector-shuffle-combining-avx2.ll +++ b/test/CodeGen/X86/vector-shuffle-combining-avx2.ll @@ -879,3 +879,29 @@ define <32 x i8> @constant_fold_pshufb_256() { %1 = tail call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> , <32 x i8> ) ret <32 x i8> %1 } + +define <32 x i8> @PR27320(<8 x i32> %a0) { +; X32-LABEL: PR27320: +; X32: # BB#0: +; X32-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[12,13,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero +; X32-NEXT: vextracti128 $1, %ymm0, %xmm2 +; X32-NEXT: vpshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,xmm2[0,0,1,2,3,3,4,5,6,6,7] +; X32-NEXT: vpor %xmm1, %xmm2, %xmm1 +; X32-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11] +; X32-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 +; X32-NEXT: retl +; +; X64-LABEL: PR27320: +; X64: # BB#0: +; X64-NEXT: vpshufb {{.*#+}} xmm1 = xmm0[12,13,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero +; X64-NEXT: vextracti128 $1, %ymm0, %xmm2 +; X64-NEXT: vpshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,xmm2[0,0,1,2,3,3,4,5,6,6,7] +; X64-NEXT: vpor %xmm1, %xmm2, %xmm1 +; X64-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11] +; X64-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 +; X64-NEXT: retq + %1 = shufflevector <8 x i32> %a0, <8 x i32> undef, <8 x i32> + %2 = bitcast <8 x i32> %1 to <32 x i8> + %3 = shufflevector <32 x i8> %2, <32 x i8> undef, <32 x i32> + ret <32 x i8> %3 +} -- 2.40.0