diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-01-09 13:23:28 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-01-09 13:23:28 +0000 |
commit | 5a7132ff0f1720153e719329516be241dfb93cf8 (patch) | |
tree | 9217f3a7092c5f876739cc90d0efada55abf8df5 /llvm/lib | |
parent | c3ce99970ae82f4b6bb7047c8bda540b5f3e6d0a (diff) | |
download | bcm5719-llvm-5a7132ff0f1720153e719329516be241dfb93cf8.tar.gz bcm5719-llvm-5a7132ff0f1720153e719329516be241dfb93cf8.zip |
[X86] Enable combining shuffles to PACKSS/PACKUS for 256/512-bit vectors
llvm-svn: 350716
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index ae7e120cd6b..ca9332fd0bd 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -30500,9 +30500,10 @@ static bool matchBinaryVectorShuffle(MVT MaskVT, ArrayRef<int> Mask, } } - // Attempt to match against either a unary or binary PACKSS/PACKUS shuffle. - // TODO add support for 256/512-bit types. - if ((MaskVT == MVT::v8i16 || MaskVT == MVT::v16i8) && Subtarget.hasSSE2()) { + // Attempt to match against either an unary or binary PACKSS/PACKUS shuffle. + if (((MaskVT == MVT::v8i16 || MaskVT == MVT::v16i8) && Subtarget.hasSSE2()) || + ((MaskVT == MVT::v16i16 || MaskVT == MVT::v32i8) && Subtarget.hasInt256()) || + ((MaskVT == MVT::v32i16 || MaskVT == MVT::v64i8) && Subtarget.hasBWI())) { if (matchVectorShuffleWithPACK(MaskVT, SrcVT, V1, V2, Shuffle, Mask, DAG, Subtarget)) { DstVT = MaskVT; |