Hi All,
I'm trying to implement maskload/maskstore for AMD GCN, which has up-to
64-lane, 512-byte fully-masked vectors. All seems fine as far as the
vector operations themselves go, but I've found a problem with the RTL
Dead Store Elimination pass.
Testcase gcc.c-torture/execute/20050826-2.c uses a maskstore to write
the 14 DImode pointers all in one go. The problem is that DSE doesn't
know that the store is masked and judges the width at 512 bytes, not the
true 56 bytes. This leads it to eliminate prior writes to nearby stack
locations, and therefore bad code.
Has anyone encountered this problem with SVE or AVX maskstore at all?
I was thinking of solving the problem by adding a target hook to query
the true length of vector types. Any thoughts on that?
Andrew