[ACTIVITY] 23rd - 27th April

Andrew Stubbs andrew.stubbs at linaro.org
Mon Apr 30 15:52:17 UTC 2012


* Linaro

Continued looking at the lower-subreg problem (that the lowering is only 
really intended for 32-bit targets that don't have 64-bit operation). 
Without NEON this is only really a problem for "ldrd/strd" 64-bit loads 
and stores: the patterns are all (or should be all) written such that 
they only access DImode regs via SUBREG, so it all works well. When 
adding NEON 64-bit this becomes less clear: many operations must remain 
in DImode without SUBREG until after register allocation. The 
lower-subreg passes mostly cope with this well enough, but it has some 
features that attempt to lower zero_extends, certain shifts, and 
pseudo-reg copies, unconditionally. I've been investigating what happens 
if I disable the pseudo-reg copy "optimization" in the first 
lower-subreg pass. As I expected, in many cases it actually leads to 
smaller code (more use of LDRD/STRD) without NEON, and even better 
results with NEON. Unfortunately I have found so counter-examples, so 
I'm trying to figure out what's going on there: for some reason reload 
goes crazy and starts spilling things to the stack, even though I can't 
see that more registers are required. More investigation required.

Richard E approved my NEON-immediates patch for upstream. I don't have 
time to commit it with proper care this week, so that's delayed to next 
week.



* Other

Vacation Monday and Tuesday. Had a fun long weekend in Cornwall with my 
family.



More information about the linaro-toolchain mailing list