summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-07-10 05:55:53 +0000
committerCraig Topper <craig.topper@gmail.com>2016-07-10 05:55:53 +0000
commit0b0954570a83fc47d72db86db529d4b5b70ab05c (patch)
treeb557e8b7a1a3f23c9199b2209600129b64e8a290 /llvm/lib
parent1b79e9a5b916c7c3684e82a1cec29bd6ac91bd3e (diff)
downloadbcm5719-llvm-0b0954570a83fc47d72db86db529d4b5b70ab05c.tar.gz
bcm5719-llvm-0b0954570a83fc47d72db86db529d4b5b70ab05c.zip
[AVX512] Add support for lowering to 512-bit SHUFPS.
llvm-svn: 275011
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 83e910d4f14..1bdb762a4b7 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -11821,11 +11821,15 @@ static SDValue lowerV16F32VectorShuffle(SDLoc DL, ArrayRef<int> Mask,
if (V2.isUndef())
return DAG.getNode(X86ISD::VPERMILPI, DL, MVT::v16f32, V1,
getV4X86ShuffleImm8ForMask(RepeatedMask, DL, DAG));
- }
- if (SDValue Unpck =
- lowerVectorShuffleWithUNPCK(DL, MVT::v16f32, Mask, V1, V2, DAG))
- return Unpck;
+ // Use dedicated unpack instructions for masks that match their pattern.
+ if (SDValue Unpck =
+ lowerVectorShuffleWithUNPCK(DL, MVT::v16f32, Mask, V1, V2, DAG))
+ return Unpck;
+
+ // Otherwise, fall back to a SHUFPS sequence.
+ return lowerVectorShuffleWithSHUFPS(DL, MVT::v16f32, RepeatedMask, V1, V2, DAG);
+ }
return lowerVectorShuffleWithPERMV(DL, MVT::v16f32, Mask, V1, V2, DAG);
}
OpenPOWER on IntegriCloud