[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