From bdcbcb3ae7c035459a2c6adad7e95dc377f22f22 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Sun, 6 May 2012 18:54:26 +0000 Subject: [PATCH] Add VPERMQ/VPERMPD to the list of target specific shuffles that can be looked through for DAG combine purposes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156266 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelLowering.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 24d95a9977f..e282617e3e0 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -2914,6 +2914,7 @@ static bool isTargetShuffle(unsigned Opcode) { case X86ISD::UNPCKH: case X86ISD::VPERMILP: case X86ISD::VPERM2X128: + case X86ISD::VPERMI: return true; } } @@ -4455,6 +4456,11 @@ static bool getTargetShuffleMask(SDNode *N, EVT VT, DecodePSHUFLWMask(VT, cast(ImmN)->getZExtValue(), Mask); IsUnary = true; break; + case X86ISD::VPERMI: + ImmN = N->getOperand(N->getNumOperands()-1); + DecodeVPERMMask(cast(ImmN)->getZExtValue(), Mask); + IsUnary = true; + break; case X86ISD::MOVSS: case X86ISD::MOVSD: { // The index 0 always comes from the first element of the second source,