[AArch64] Strengthen aarch64_hard_regno_call_part_clobbered

Christophe Lyon christophe.lyon@linaro.org
Fri Oct 4 08:08:00 GMT 2019


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
>



More information about the Gcc-patches mailing list