mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[X86][AVX] lowerShuffleAsLanePermuteAndShuffle - consistently normalize multi-input shuffle elements
We only use lowerShuffleAsLanePermuteAndShuffle for unary shuffles at the moment, but we should consistently handle lane index calculations for multiple inputs in both the AVX1 and AVX2 paths. Minor (almost NFC) tidyup as I'm hoping to use lowerShuffleAsLanePermuteAndShuffle for binary shuffles soon.
This commit is contained in:
parent
9006ca778d
commit
fdc8cf41bd
@ -14971,7 +14971,7 @@ static SDValue lowerShuffleAsLanePermuteAndShuffle(
|
||||
if (!Subtarget.hasAVX2()) {
|
||||
bool LaneCrossing[2] = {false, false};
|
||||
for (int i = 0; i < Size; ++i)
|
||||
if (Mask[i] >= 0 && (Mask[i] % Size) / LaneSize != i / LaneSize)
|
||||
if (Mask[i] >= 0 && ((Mask[i] % Size) / LaneSize) != (i / LaneSize))
|
||||
LaneCrossing[(Mask[i] % Size) / LaneSize] = true;
|
||||
if (!LaneCrossing[0] || !LaneCrossing[1])
|
||||
return splitAndLowerShuffle(DL, VT, V1, V2, Mask, DAG);
|
||||
@ -14979,7 +14979,7 @@ static SDValue lowerShuffleAsLanePermuteAndShuffle(
|
||||
bool LaneUsed[2] = {false, false};
|
||||
for (int i = 0; i < Size; ++i)
|
||||
if (Mask[i] >= 0)
|
||||
LaneUsed[(Mask[i] / LaneSize)] = true;
|
||||
LaneUsed[(Mask[i] % Size) / LaneSize] = true;
|
||||
if (!LaneUsed[0] || !LaneUsed[1])
|
||||
return splitAndLowerShuffle(DL, VT, V1, V2, Mask, DAG);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user