mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[X86][AVX] combineX86ShuffleChainWithExtract - widen to at least original root size. NFCI.
We're relying on the source inputs for shuffle combining having already been widened to the root size (otherwise the offset logic falls over) - we're going to be supporting different sized shuffle inputs soon, so we need to explicitly make the minimum widened width the original root size.
This commit is contained in:
parent
559ef0a573
commit
1c92cd102a
@ -35997,12 +35997,16 @@ static SDValue combineX86ShuffleChainWithExtract(
|
||||
if (NumInputs == 0)
|
||||
return SDValue();
|
||||
|
||||
EVT RootVT = Root.getValueType();
|
||||
unsigned RootSizeInBits = RootVT.getSizeInBits();
|
||||
assert((RootSizeInBits % NumMaskElts) == 0 && "Unexpected root shuffle mask");
|
||||
|
||||
SmallVector<SDValue, 4> WideInputs(Inputs.begin(), Inputs.end());
|
||||
SmallVector<unsigned, 4> Offsets(NumInputs, 0);
|
||||
|
||||
// Peek through subvectors.
|
||||
// TODO: Support inter-mixed EXTRACT_SUBVECTORs + BITCASTs?
|
||||
unsigned WideSizeInBits = WideInputs[0].getValueSizeInBits();
|
||||
unsigned WideSizeInBits = RootSizeInBits;
|
||||
for (unsigned i = 0; i != NumInputs; ++i) {
|
||||
SDValue &Src = WideInputs[i];
|
||||
unsigned &Offset = Offsets[i];
|
||||
@ -36025,8 +36029,6 @@ static SDValue combineX86ShuffleChainWithExtract(
|
||||
if (llvm::all_of(Offsets, [](unsigned Offset) { return Offset == 0; }))
|
||||
return SDValue();
|
||||
|
||||
EVT RootVT = Root.getValueType();
|
||||
unsigned RootSizeInBits = RootVT.getSizeInBits();
|
||||
unsigned Scale = WideSizeInBits / RootSizeInBits;
|
||||
assert((WideSizeInBits % RootSizeInBits) == 0 &&
|
||||
"Unexpected subvector extraction");
|
||||
|
Loading…
Reference in New Issue
Block a user