public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* DSE and maskstore trouble
@ 2018-07-03  9:59 Andrew Stubbs
  2018-07-03 10:16 ` Richard Biener
  0 siblings, 1 reply; 15+ messages in thread
From: Andrew Stubbs @ 2018-07-03  9:59 UTC (permalink / raw)
  To: GCC Development

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2018-07-03 16:45 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-03  9:59 DSE and maskstore trouble Andrew Stubbs
2018-07-03 10:16 ` Richard Biener
2018-07-03 10:33   ` Andrew Stubbs
2018-07-03 10:57     ` Andrew Stubbs
2018-07-03 11:02       ` Richard Biener
2018-07-03 11:06         ` Andrew Stubbs
2018-07-03 11:31           ` Richard Biener
2018-07-03 11:38             ` Andrew Stubbs
2018-07-03 11:46               ` Richard Biener
2018-07-03 11:57                 ` Andrew Stubbs
2018-07-03 12:21                   ` Richard Biener
2018-07-03 12:46                     ` Andrew Stubbs
2018-07-03 13:52                       ` Richard Biener
2018-07-03 15:19                         ` Andrew Stubbs
2018-07-03 16:45                           ` Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).