1
0
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:
Simon Pilgrim 2020-08-08 19:35:57 +01:00
parent b998790f91
commit 9b68c08ed2

View File

@ -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());