This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH, AArch64] Add secondary reload for immediates into FP_REGS
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Ian Bolton <ian dot bolton at arm dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 31 Jul 2013 11:14:25 +0100
- Subject: Re: [PATCH, AArch64] Add secondary reload for immediates into FP_REGS
- References: <000001ce8d28$bece4340$3c6ac9c0$ at firstname.lastname@example.org>
On 30/07/13 14:28, Ian Bolton wrote:
Our movdi_aarch64 pattern allows moving a constant into an FP_REG,
but has the constraint Dd, which is stricter than the one for
moving a constant into a CORE_REG. This is due to restricted values
allowed for MOVI instructions.
Due to the predicate for the pattern allowing any constant that is
valid for the CORE_REGs, we can run into situations where IRA/reload
has decided to use FP_REGs but the value is not actually valid for
This patch introduces a secondary reload to handle this case.
Supplied with testcase that highlighted original problem.
Tested on Linux GNU regressions.
OK for trunk?
2013-07-30 Ian Bolton <email@example.com>
* config/aarch64/aarch64.c (aarch64_secondary_reload)): Handle
constant into FP_REGs that is not valid for MOVI.
* gcc.target/aarch64/movdi_1.c: New test.
I think you should be using TARGET_PREFERRED_RELOAD_CLASS for this case.
The documentation for that seems to be describing exactly the
situation you are facing.