Apply llvm fix for possible hangs with CPUTYPE=skylake-avx512

Merge commit e8305c0b8f49 from llvm git (by Simon Pilgrim)

    [X86] combineX86ShuffleChain - don't fold to truncate(concat(V1,V2)) if it was already a PACK op

    Fixes #55050

PR:		264394
Reported by:	VVD <vvd@unislabs.com>
MFC after:	3 days
This commit is contained in:
Dimitry Andric 2022-06-01 23:43:18 +02:00
parent 47699fc265
commit 592e876a42

View File

@ -37558,7 +37558,11 @@ static SDValue combineX86ShuffleChain(ArrayRef<SDValue> Inputs, SDValue Root,
(RootVT.is128BitVector() && Subtarget.hasVLX())) &&
(MaskEltSizeInBits > 8 || Subtarget.hasBWI()) &&
isSequentialOrUndefInRange(Mask, 0, NumMaskElts, 0, 2)) {
if (Depth == 0 && Root.getOpcode() == ISD::TRUNCATE)
// Bail if this was already a truncation or PACK node.
// We sometimes fail to match PACK if we demand known undef elements.
if (Depth == 0 && (Root.getOpcode() == ISD::TRUNCATE ||
Root.getOpcode() == X86ISD::PACKSS ||
Root.getOpcode() == X86ISD::PACKUS))
return SDValue(); // Nothing to do!
ShuffleSrcVT = MVT::getIntegerVT(MaskEltSizeInBits * 2);
ShuffleSrcVT = MVT::getVectorVT(ShuffleSrcVT, NumMaskElts / 2);