This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: DSE and maskstore trouble


On 03/07/18 11:15, Richard Biener wrote:
AVX ones are all UNSPECs I believe - how do your patterns look like?

AVX has both unspec and vec_merge variants (at least for define_expand, in GCC8), but in any case, AFAICT dse.c only cares about the destination MEM, and all the AVX and SVE patterns appear to use nothing special there.

I was thinking of solving the problem by adding a target hook to query
the true length of vector types. Any thoughts on that?

It isn't about the length but about the mask because there can be mask
values that do not affect the length?

The problem I have right now is that the vector write conflicts with writes to distinct variables, in which case the vector length is what's important, and it's probably(?) safe to assume that if the vector mask is not constant then space for the whole vector has been allocated on the stack.

But yes, in general it's true that subsequent writes to the same vector could well write distinct elements, in which case the value of the mask is significant to DSE analysis.

Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]