aarch64: Fix SVE PCS failures for BE & ILP32
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 31 Jan 2020 13:56:31 +0000 (13:56 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Fri, 31 Jan 2020 17:40:37 +0000 (17:40 +0000)
commit2171a9207f51bc486ed9c502cb4da706f594615e
tree51fb3d6c1852bba1e9735e2bb51406e8a79ee575
parent6e5a196399d4393f30f2617f6fc042f2e94730b0
aarch64: Fix SVE PCS failures for BE & ILP32

This patch should (finally!) give clean test results for
aarch64-sve-pcs.exp for all {be,le}{lp64,ilp32} combinations.

The *_128.c tests require aarch64_little_endian because they test for
fixed-length 128-bit code, whereas -msve-vector-bits=128 still generates
VLA code for big-endian.

Some tests require lp64 because they match (64-bit) pointer loads and
stores.  Others require it because ilp32 adds extra zero extensions.

We still have a non-trivial amount of coverage for -mbig-endian -mabi=ilp32:

 # of expected passes            663
 # of unsupported tests          59

2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
* gcc.target/aarch64/sve/pcs/args_1.c: Require lp64 for
check-function-bodies tests.
* gcc.target/aarch64/sve/pcs/args_2.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_3.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_4.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1_256.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1_512.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1_1024.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1_2048.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_2.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_3.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4_256.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4_512.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4_1024.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4_2048.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_5.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_5_256.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_5_512.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_5_1024.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_5_2048.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_6.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_6_256.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_6_512.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_6_1024.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_6_2048.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_3.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
* gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_1.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_f16.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_f32.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_f64.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_s16.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_s32.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_s64.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_s8.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_u16.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_u32.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_u64.c: Likewise.
* gcc.target/aarch64/sve/pcs/varargs_2_u8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_f16.c: Require lp64.
* gcc.target/aarch64/sve/pcs/args_5_be_f32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_f64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_s16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_s32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_s64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_s8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_u16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_u32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_u64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_be_u8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_f16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_f32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_f64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_s16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_s32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_s64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_s8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_u16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_u32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_u64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_5_le_u8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_f16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_f32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_f64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_s16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_s32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_s64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_s8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_u16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_u32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_u64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_be_u8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_f16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_f32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_f64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_s16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_s32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_s64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_s8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_u16.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_u32.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_u64.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_6_le_u8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_7.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_8.c: Likewise.
* gcc.target/aarch64/sve/pcs/args_9.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_4_128.c: Require lp64 and
aarch64_little_endian for check-function-bodies tests.
* gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
* gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
* gcc.target/aarch64/sve/pcs/return_1_128.c: Likewise.  Remove
target selector from dg-compile.
* gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
98 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_1.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_2.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_3.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_4.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_f16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_f32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_f64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_s16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_s32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_s64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_s8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_u16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_u32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_u64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_be_u8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_f16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_f32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_f64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_s16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_s32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_s64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_s8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_u16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_u32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_u64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_5_le_u8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_f16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_f32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_f64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_s16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_s32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_s64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_s8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_u16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_u32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_u64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_be_u8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_f16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_f32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_f64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_s16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_s32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_s64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_s8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_u16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_u32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_u64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_6_le_u8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_7.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/args_9.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1_1024.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1_128.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1_2048.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1_256.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_1_512.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_2.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_3.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4_1024.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4_128.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4_2048.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4_256.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_4_512.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5_1024.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5_128.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5_2048.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5_256.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_5_512.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6_1024.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6_128.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6_2048.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6_256.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/return_6_512.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_3.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_4_be.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/saves_4_le.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/stack_clash_2_128.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_1.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_f16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_f32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_f64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_s16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_s32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_s64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_s8.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_u16.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_u32.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_u64.c
gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_2_u8.c