On Sun, 2011-03-13 at 16:31 +0000, Andrew Stubbs wrote: > This patch discourages the use of NEON for integer operations on ARM > Cortex-A8. > > The problem is that transferring data from NEON/VFP registers to core > registers is prohibitively expensive on A8. This should not affect > Cortex-A9 in the same way. > > This change gives a 6% increase in performance on SPEC2000 crafty, on an > imx51 board. > > An older version of the patch has been used for some time in the > CodeSourcery and Linaro toolchains, so it's fairly well tested. > > OK (for stage 1)? > > Andrew
There's no denying numbers like that, so I'm going to approve this for stage 1, but I'm far from convinced that this isn't papering over other problems. Did you look at REGISTER_MOVE_COST? That code for ARM looks rather crufty these days and should really be the place where the cost of moving between the classes is expressed. I also wonder whether IRA is really taking these costs into account when doing preferencing. Finally, alternatives from an insn are normally selected left-to-right from those available in a pattern, all other things being equal. So really the A8-only alternative should come after the core registers alternatives if its less preferable. R.