* 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.
linaro-toolchain@lists.linaro.org