diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-07-10 05:55:53 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-07-10 05:55:53 +0000 |
commit | 0b0954570a83fc47d72db86db529d4b5b70ab05c (patch) | |
tree | b557e8b7a1a3f23c9199b2209600129b64e8a290 /llvm/lib/Target/X86/X86ISelLowering.cpp | |
parent | 1b79e9a5b916c7c3684e82a1cec29bd6ac91bd3e (diff) | |
download | bcm5719-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/Target/X86/X86ISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 12 |
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); } |