[llvm] [SLP]Add cost estimation for gather node reshuffling (PR #115201)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 20 03:49:17 PST 2024
================
@@ -982,17 +982,32 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
return Kind;
int NumSrcElts = Ty->getElementCount().getKnownMinValue();
switch (Kind) {
- case TTI::SK_PermuteSingleSrc:
+ case TTI::SK_PermuteSingleSrc: {
if (ShuffleVectorInst::isReverseMask(Mask, NumSrcElts))
return TTI::SK_Reverse;
if (ShuffleVectorInst::isZeroEltSplatMask(Mask, NumSrcElts))
return TTI::SK_Broadcast;
+ // Check that the broadcast index meets at least twice.
+ bool IsCompared = false;
+ if (int SplatIdx = PoisonMaskElem;
+ all_of(enumerate(Mask), [&](const auto &P) {
+ if (P.value() == PoisonMaskElem)
+ return P.index() != Mask.size() - 1 || IsCompared;
+ if (SplatIdx == PoisonMaskElem) {
+ SplatIdx = P.value();
+ return P.index() != Mask.size() - 1;
+ }
+ IsCompared = true;
+ return SplatIdx == P.value();
+ }))
+ return TTI::SK_Broadcast;
----------------
RKSimon wrote:
Update Index out_arg to SplatIndex?
https://github.com/llvm/llvm-project/pull/115201
More information about the llvm-commits
mailing list