]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Add sve_type to SVE builtins code
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)
commit7f6de9861e5d7745a0af5174582519a39d545a92
treefcfcdc98eb2092c86c2eac3af8d49a43a034c92d
parent7b607f197967e052d7d7e29f6b41eded18f8c65d
aarch64: Add sve_type to SVE builtins code

Until now, the SVE ACLE code had mostly been able to represent
individual SVE arguments with just an element type suffix (s32, u32,
etc.).  However, the SME2 ACLE provides many overloaded intrinsics
that operate on tuples rather than single vectors.  This patch
therefore adds a new type (sve_type) that combines an element
type suffix with a vector count.  This is enough to uniquely
represent all SVE ACLE types.

gcc/
* config/aarch64/aarch64-sve-builtins.h (sve_type): New struct.
(sve_type::operator==): New function.
(function_resolver::get_vector_type): Delete.
(function_resolver::report_no_such_form): Take an sve_type rather
than a type_suffix_index.
* config/aarch64/aarch64-sve-builtins.cc (get_vector_type): New
function.
(function_resolver::get_vector_type): Delete.
(function_resolver::report_no_such_form): Take an sve_type rather
than a type_suffix_index.
(find_sve_type): New function, split out from...
(function_resolver::infer_vector_or_tuple_type): ...here.
gcc/config/aarch64/aarch64-sve-builtins.cc
gcc/config/aarch64/aarch64-sve-builtins.h