summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2016-07-03 12:47:21 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2016-07-03 12:47:21 +0000
commit129b720c18098424eb591af36d0ee020b291fcc4 (patch)
tree59b23a4bf51c544e30148ab647ab11fb40de5e20 /llvm/lib/Target
parentfa6db90164459924a31eb590de0279ba4bf43af8 (diff)
downloadbcm5719-llvm-129b720c18098424eb591af36d0ee020b291fcc4.tar.gz
bcm5719-llvm-129b720c18098424eb591af36d0ee020b291fcc4.zip
[X86][AVX512] Add support for lowering shuffles to VPERMILPS
llvm-svn: 274458
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 6eb190fa10a..9c02303ed11 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -11765,6 +11765,10 @@ static SDValue lowerV16F32VectorShuffle(SDLoc DL, ArrayRef<int> Mask,
return DAG.getNode(X86ISD::MOVSLDUP, DL, MVT::v16f32, V1);
if (isShuffleEquivalent(V1, V2, RepeatedMask, {1, 1, 3, 3}))
return DAG.getNode(X86ISD::MOVSHDUP, DL, MVT::v16f32, V1);
+
+ if (V2.isUndef())
+ return DAG.getNode(X86ISD::VPERMILPI, DL, MVT::v16f32, V1,
+ getV4X86ShuffleImm8ForMask(RepeatedMask, DL, DAG));
}
if (SDValue Unpck =
OpenPOWER on IntegriCloud