[PATCH] D120223: [SLP] Fix assert from non-constant index in insertelement
Anton Afanasyev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 21 05:56:37 PST 2022
anton-afanasyev added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:5920-5922
+ Optional<unsigned> Idx = getInsertIndex(VU);
+ if (!Idx)
+ continue;
----------------
ABataev wrote:
> I think we need an extra check here. If the index is undefined - continue, but if the index is not constant, need to calculate the cost as extractelement+insertelement.
This is just a reversion to previous state, we can proceed with this and commit a separate patch for correct check. There is also another check we need here: that `EU.Scalar` is used as a first operand of insertelement.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:5920-5922
+ Optional<unsigned> Idx = getInsertIndex(VU);
+ if (!Idx)
+ continue;
----------------
anton-afanasyev wrote:
> ABataev wrote:
> > I think we need an extra check here. If the index is undefined - continue, but if the index is not constant, need to calculate the cost as extractelement+insertelement.
> This is just a reversion to previous state, we can proceed with this and commit a separate patch for correct check. There is also another check we need here: that `EU.Scalar` is used as a first operand of insertelement.
As for `undef` index check, I'm not sure it should be processed specially: we still generate extractelement for `EU.Scalar` at `vectorizeTree()` stage.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D120223/new/
https://reviews.llvm.org/D120223
More information about the llvm-commits
mailing list