This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64] Strengthen aarch64_hard_regno_call_part_clobbered
- From: Christophe Lyon <christophe dot lyon at linaro dot org>
- To: Richard Sandiford <richard dot sandiford at arm dot com>
- Cc: gcc Patches <gcc-patches at gcc dot gnu dot org>, Richard Earnshaw <richard dot earnshaw at arm dot com>, James Greenhalgh <james dot greenhalgh at arm dot com>, Marcus Shawcroft <marcus dot shawcroft at arm dot com>
- Date: Fri, 4 Oct 2019 10:07:52 +0200
- Subject: Re: [AArch64] Strengthen aarch64_hard_regno_call_part_clobbered
- References: <mptzhjc14vu.fsf@arm.com> <mpt36gd959c.fsf@arm.com>
On Mon, 30 Sep 2019 at 17:24, Richard Sandiford <richard.sandiford@arm.com>
wrote:
> Richard Sandiford <richard.sandiford@arm.com> writes:
> > The aarch64_vector_pcs handling in aarch64_hard_regno_call_part_clobbered
> > checks whether the mode might be bigger than 16 bytes, since on SVE
> > targets the (non-SVE) vector PCS only guarantees that the low 16 bytes
> > are preserved. But for multi-register modes, we should instead test
> > whether each single-register part might be bigger than 16 bytes.
> > (The size is always divided evenly between registers.)
> >
> > The testcase uses XImode as an example where this helps.
> >
> > Tested on aarch64-linux-gnu (with and without SVE). OK to install?
> >
> > Richard
> >
> >
> > 2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
> >
> > gcc/
> > * config/aarch64/aarch64.c
> (aarch64_hard_regno_call_part_clobbered):
> > For multi-registers modes, test how big each register part is.
> >
> > gcc/testsuite/
> > * gcc.target/aarch64/torture/simd-abi-8.c: New test.
>
> I've now applied this as r276305.
>
>
Hi Richard,
I've noticed that the new test fails on aarch64_be:
gcc.target/aarch64/torture/simd-abi-8.c -O1 scan-assembler-times
\\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O1 scan-assembler-times
\\tst1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 scan-assembler-times
\\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 scan-assembler-times
\\tst1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none scan-assembler-times
\\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none scan-assembler-times
\\tst1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects scan-assembler-times \\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects scan-assembler-times \\tst1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O3 -g scan-assembler-times
\\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -O3 -g scan-assembler-times
\\tst1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -Os scan-assembler-times
\\tld1\\t 1
gcc.target/aarch64/torture/simd-abi-8.c -Os scan-assembler-times
\\tst1\\t 1
Christophe
Thanks,
> Richard
>