From 437928be5c377340282ea7fe1f9863857e04e571 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Fri, 15 Aug 2014 07:41:57 +0000 Subject: [PATCH] [x86] Remove the duplicated code for testing whether we can widen the elements of a shuffle mask and simplify how it works. No functionality changed now that the bug that was here has been fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215696 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ISelLowering.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 5143f19c763..4e3e23c0988 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -19493,18 +19493,10 @@ static bool combineX86ShufflesRecursively(SDValue Op, SDValue Root, // elements, and shrink them to the half-width mask. It does this in a loop // so it will reduce the size of the mask to the minimal width mask which // performs an equivalent shuffle. - while (Mask.size() > 1) { - SmallVector NewMask; - for (int i = 0, e = Mask.size()/2; i < e; ++i) { - if (Mask[2*i] % 2 != 0 || Mask[2*i] + 1 != Mask[2*i + 1]) { - NewMask.clear(); - break; - } - NewMask.push_back(Mask[2*i] / 2); - } - if (NewMask.empty()) - break; - Mask.swap(NewMask); + while (Mask.size() > 1 && canWidenShuffleElements(Mask)) { + for (int i = 0, e = Mask.size() / 2; i < e; ++i) + Mask[i] = Mask[2 * i] / 2; + Mask.resize(Mask.size() / 2); } return combineX86ShuffleChain(Op, Root, Mask, Depth, HasPSHUFB, DAG, DCI, -- 2.34.1