This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][ARM] Discourage use of NEON on Cortex-A8
On 03/14/2011 06:10 PM, Richard Earnshaw wrote:
>
> 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.
Oh, I agree. I seem to recall we tried using REGISTER_MOVE_COST, but it
didn't help.
Ideally, we'd fix this in the register allocator and in lower-subreg,
but I believe that would be a significantly larger project. You'd have
to detect that if a certain pseudo is allocated to a NEON register, this
would cause an expensive register move (because it's used in an insn
that only allows GENERAL_REGS), and then recursively every other
operation that involves this pseudo also needs to avoid NEON registers
for the same reason. Doing this in lower-subreg would give the best
results (splitting pseudos that shouldn't go into NEON regs and leaving
the others alone), but it would also work to do it in IRA.
Bernd