[PATCH] D92548: [CodeGen] Check if Index's OperandNum == 0 when refineIndexType(...) is called This is a bugfix for D90942
Bing Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 3 06:53:15 PST 2020
yubing added a comment.
In D92548#2430468 <https://reviews.llvm.org/D92548#2430468>, @sdesmalen wrote:
> Thanks for finding and fixing this!
>
> Can the test be simplified by using `<4 x float>` instead of `<48 x float>`?
Hi, thanks for comments. I can't change into <4 x float>.
I could change to <24 x float> because The smallest type to reproduce this bug is <24 x float>.
In the case of "<24 x float>", the scattered index is represented by a buildvector of<24 x i64> .
During LegalizeType procedure, The scattered index, aka, a buildvector of<24 x i64>will be widened into buildvector (<32 x i64>) whose last 8 elements are undef.
Then, <32 x i64> is split into two buildvectors(16 x i64) , one of which carries 8 undef.
Then, <16 x i64> is split into two buildvectors(8 x i64), one of which carries 8 undef, which means this buildvector will become a v8i64 undef(That's the masked.scatter's index which cause assertion fail).
Any thoughts?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92548/new/
https://reviews.llvm.org/D92548
More information about the llvm-commits
mailing list