From 4c97c1420bea552a7e1fa711793279a7801a7033 Mon Sep 17 00:00:00 2001 From: Elena Demikhovsky Date: Wed, 13 Aug 2014 07:58:43 +0000 Subject: [PATCH] AVX-512: Fixed a bug in shufflevector lowering. PALIGNR instruction does not exist in AVX-512F set. Added a test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215526 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelLowering.cpp | 3 ++- test/CodeGen/X86/avx512-shuffle.ll | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 96f01c8b245..98eedb8ec6e 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -3872,7 +3872,8 @@ static bool isAlignrMask(ArrayRef Mask, MVT VT, bool InterLane) { static bool isPALIGNRMask(ArrayRef Mask, MVT VT, const X86Subtarget *Subtarget) { if ((VT.is128BitVector() && !Subtarget->hasSSSE3()) || - (VT.is256BitVector() && !Subtarget->hasInt256())) + (VT.is256BitVector() && !Subtarget->hasInt256()) || + VT.is512BitVector()) // FIXME: Add AVX512BW. return false; diff --git a/test/CodeGen/X86/avx512-shuffle.ll b/test/CodeGen/X86/avx512-shuffle.ll index bae99d97b21..964971e6f62 100644 --- a/test/CodeGen/X86/avx512-shuffle.ll +++ b/test/CodeGen/X86/avx512-shuffle.ll @@ -199,6 +199,24 @@ define <16 x i32> @test15(<16 x i32> %a) { %b = shufflevector <16 x i32> %a, <16 x i32> undef, <16 x i32> ret <16 x i32> %b } + +; CHECK-LABEL: valign_test_v16f32 +; CHECK: valignd $2, %zmm0, %zmm0 +; CHECK: ret +define <16 x float> @valign_test_v16f32(<16 x float> %a, <16 x float> %b) nounwind { + %c = shufflevector <16 x float> %a, <16 x float> %b, <16 x i32> + ret <16 x float> %c +} + +; CHECK-LABEL: valign_test_v16i32 +; CHECK: valignd $2, %zmm0, %zmm0 +; CHECK: ret +define <16 x i32> @valign_test_v16i32(<16 x i32> %a, <16 x i32> %b) nounwind { + %c = shufflevector <16 x i32> %a, <16 x i32> %b, <16 x i32> + ret <16 x i32> %c +} + + ; CHECK-LABEL: test16 ; CHECK: valignq $2, %zmm0, %zmm1 ; CHECK: ret -- 2.34.1