]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Generalise some SVE ACLE error messages
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 5 Dec 2023 10:11:20 +0000 (10:11 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Tue, 5 Dec 2023 10:11:20 +0000 (10:11 +0000)
commitbb01ef94ff5096b907639aa3a1d77850921e7d37
treed88f7e81324ffac4db56afdb7bdb092fc7588773
parent7f6de9861e5d7745a0af5174582519a39d545a92
aarch64: Generalise some SVE ACLE error messages

The current SVE ACLE function-resolution diagnostics assume
that a function has a fixed choice between vectors or tuples
of vectors.  If an argument was not an SVE type at all, the
error message said the function "expects an SVE vector type"
or "expects an SVE tuple type".

This patch generalises the error to cope with cases where
an argument can be either a vector or a tuple.  It also splits
out the diagnostics for mismatched tuple sizes, so that they
can be reused by later patches.

gcc/
* config/aarch64/aarch64-sve-builtins.h
(function_resolver::infer_sve_type): New member function.
(function_resolver::report_incorrect_num_vectors): Likewise.
* config/aarch64/aarch64-sve-builtins.cc
(function_resolver::infer_sve_type): New function,.
(function_resolver::report_incorrect_num_vectors): New function,
split out from...
(function_resolver::infer_vector_or_tuple_type): ...here.  Use
infer_sve_type.

gcc/testsuite/
* gcc.target/aarch64/sve/acle/general-c/*: Update expected error
messages.
81 files changed:
gcc/config/aarch64/aarch64-sve-builtins.cc
gcc/config/aarch64/aarch64-sve-builtins.h
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/adr_index_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/adr_offset_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_int_opt_n.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_long_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_long_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_narrowb_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_narrowt_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_opt_n_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_opt_n_3.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_rotate_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_uint64_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_uint64_opt_n_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_uint_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_uint_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_wide_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_wide_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/clast_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/compare_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/compare_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/compare_wide_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/count_vector_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/create_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/create_3.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/create_5.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/fold_left_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/inc_dec_pred_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mmla_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/prefetch_gather_offset_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/reduction_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/reduction_wide_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lanex2_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_lane_rotate_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_long_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_long_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_qq_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_qq_lane_rotate_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_qq_opt_n_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_qq_rotate_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_rotate_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_shift_right_imm_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_lane_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_opt_n_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/tmad_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_convert_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_convert_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_convert_narrowt_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_narrowb_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_narrowb_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_narrowt_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_narrowt_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_int_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_uint_1.c
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_widen_1.c