diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-10-22 06:51:52 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-10-22 06:51:52 +0000 |
commit | 7b2b8db438b51ffac0f89338efd95629b32ada47 (patch) | |
tree | 102b77fdaed731b6d0c89414f827ab156e976038 /llvm/lib | |
parent | 9f374533e3507112d285b1767d0cac9ed0fcc61d (diff) | |
download | bcm5719-llvm-7b2b8db438b51ffac0f89338efd95629b32ada47.tar.gz bcm5719-llvm-7b2b8db438b51ffac0f89338efd95629b32ada47.zip |
[X86] Add support for lowering v4i64 and v8i64 shuffles directly to PALIGNR. I think shuffle combine can figure it out later, but we should try to get it right up front.
llvm-svn: 284914
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 94427fa44b7..a11c34b1fbe 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -11450,6 +11450,10 @@ static SDValue lowerV4I64VectorShuffle(const SDLoc &DL, ArrayRef<int> Mask, Subtarget, DAG)) return Shift; + if (SDValue Rotate = lowerVectorShuffleAsByteRotate(DL, MVT::v4i64, V1, V2, + Mask, Subtarget, DAG)) + return Rotate; + // Use dedicated unpack instructions for masks that match their pattern. if (SDValue V = lowerVectorShuffleWithUNPCK(DL, MVT::v4i64, Mask, V1, V2, DAG)) @@ -12028,6 +12032,10 @@ static SDValue lowerV8I64VectorShuffle(const SDLoc &DL, ArrayRef<int> Mask, Subtarget, DAG)) return Shift; + if (SDValue Rotate = lowerVectorShuffleAsByteRotate(DL, MVT::v8i64, V1, V2, + Mask, Subtarget, DAG)) + return Rotate; + if (SDValue Unpck = lowerVectorShuffleWithUNPCK(DL, MVT::v8i64, Mask, V1, V2, DAG)) return Unpck; |