From 21b2c5660e3a741a516d382ee4230ba905b82784 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Mon, 2 May 2016 19:46:58 +0000 Subject: [PATCH] [X86][AVX2] Added 128-bit wide shuffle test Demonstrate missing 128-bit wide shuffle combine support llvm-svn: 268290 --- llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll index 37c1f0b..fc8cce0 100644 --- a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll +++ b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll @@ -3,6 +3,7 @@ declare <8 x i32> @llvm.x86.avx2.permd(<8 x i32>, <8 x i32>) declare <8 x float> @llvm.x86.avx2.permps(<8 x float>, <8 x i32>) +declare <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8>, <32 x i8>) define <32 x i8> @combine_pshufb_vpermd(<8 x i32> %a) { ; CHECK-LABEL: combine_pshufb_vpermd: @@ -25,3 +26,16 @@ define <32 x i8> @combine_pshufb_vpermps(<8 x float> %a) { %tmp2 = shufflevector <32 x i8> %tmp1, <32 x i8> undef, <32 x i32> ret <32 x i8> %tmp2 } + +define <4 x i64> @combine_permq_pshufb(<4 x i64> %a0) { +; CHECK-LABEL: combine_permq_pshufb: +; CHECK: # BB#0: +; CHECK-NEXT: vpermq {{.*#+}} ymm0 = ymm0[3,2,1,0] +; CHECK-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,24,25,26,27,28,29,30,31,16,17,18,19,20,21,22,23] +; CHECK-NEXT: retq + %1 = shufflevector <4 x i64> %a0, <4 x i64> undef, <4 x i32> + %2 = bitcast <4 x i64> %1 to <32 x i8> + %3 = call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> %2, <32 x i8> ) + %4 = bitcast <32 x i8> %3 to <4 x i64> + ret <4 x i64> %4 +} -- 2.7.4