mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
[X86][SSE] combineTargetShuffle - use scaleShuffleMask helper to widen shuffle mask. NFCI.
Use scaleShuffleMask helper for the shuffle(hadd,hadd) canonicalization.
This commit is contained in:
parent
b998790f91
commit
9b68c08ed2
@ -35921,14 +35921,8 @@ static SDValue combineTargetShuffle(SDValue N, SelectionDAG &DAG,
|
||||
SmallVector<int, 16> TargetMask128;
|
||||
if (!TargetMask.empty() && 0 < TargetOps.size() && TargetOps.size() <= 2 &&
|
||||
isRepeatedTargetShuffleMask(128, VT, TargetMask, TargetMask128)) {
|
||||
SmallVector<int, 16> WidenedMask128 = TargetMask128;
|
||||
while (WidenedMask128.size() > 2) {
|
||||
SmallVector<int, 16> WidenedMask;
|
||||
if (!canWidenShuffleElements(WidenedMask128, WidenedMask))
|
||||
break;
|
||||
WidenedMask128 = std::move(WidenedMask);
|
||||
}
|
||||
if (WidenedMask128.size() == 2) {
|
||||
SmallVector<int, 16> WidenedMask128;
|
||||
if (scaleShuffleElements(TargetMask128, 2, WidenedMask128)) {
|
||||
assert(isUndefOrZeroOrInRange(WidenedMask128, 0, 4) && "Illegal shuffle");
|
||||
SDValue BC0 = peekThroughBitcasts(TargetOps.front());
|
||||
SDValue BC1 = peekThroughBitcasts(TargetOps.back());
|
||||
|
Loading…
Reference in New Issue
Block a user