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

Reply via email to