https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110559

--- Comment #3 from Robin Dapp <rdapp at gcc dot gnu.org> ---
I got back to this again today, now that pressure-aware scheduling is the
default.  As mentioned before, it helps but doesn't get rid of the spills.

Testing with the "generic ooo" scheduling model it looks like vector load/store
latency of 6 is too high.  Yet, even setting them to 1 is not enough to get rid
of spills entirely.  What helps is additionally lowering the vector alu latency
to 2 (from the default 3).

I'm not really sure how to properly handle this.  As far as I can tell spilling
is always going to happen if we try to "wait" for dependencies and delay the
dependent instructions.  In my experience the hardware does a better job at
live scheduling anyway and we only make things worse in several cases. 
Previously I experimented with setting the latency of most instructions to 1
with few exceptions and instead ensure a proper instruction mix i.e. trying to
keep every execution unit busy.  That's not a panacea either, though.

Reply via email to