mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
[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
This commit is contained in:
parent
407460e67d
commit
437928be5c
@ -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<int, 16> 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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user