diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2024-11-11 12:32:17 +0000 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2024-11-11 12:32:17 +0000 |
commit | cb83ad9d93fa113a5d038a727b1f8a2bd48a3696 (patch) | |
tree | 5212b3a5e5d85e0f62df3bbae05b135e26cbeed8 /gcc/config.gcc | |
parent | bd45d4f9955022e688e75756b0cd8b8e54b33d4b (diff) | |
download | gcc-cb83ad9d93fa113a5d038a727b1f8a2bd48a3696.zip gcc-cb83ad9d93fa113a5d038a727b1f8a2bd48a3696.tar.gz gcc-cb83ad9d93fa113a5d038a727b1f8a2bd48a3696.tar.bz2 |
aarch64: Parameterise SVE pointer type inference
All extending gather load intrinsics encode the source type in
their name (e.g. svld1sb for an extending load from signed bytes).
The type of the extension result has to be specified using an
explicit type suffix; it isn't something that can be inferred
from the arguments, since there are multiple valid choices for
the same arguments.
This meant that type inference for gather loads was only needed for
non-extending loads, in which case the pointer target had to be a
32-bit or 64-bit element type. The gather_scatter_p argument to
function_resolver::infer_pointer_type therefore controlled two things:
how we should react to vector base addresses, and whether we should
require a minimum element size of 32.
The element size restriction doesn't apply to the upcomding SVE2.1
svld1q intrinsic, so this patch adds a separate argument for the minimum
element size requirement.
gcc/
* config/aarch64/aarch64-sve-builtins.h
(function_resolver::target_type_restrictions): New enum.
(function_resolver::infer_pointer_type): Add an extra argument
that specifies what the target type can be.
* config/aarch64/aarch64-sve-builtins.cc
(function_resolver::infer_pointer_type): Likewise.
* config/aarch64/aarch64-sve-builtins-shapes.cc
(load_gather_sv_base::get_target_type_restrictions): New virtual
member function.
(load_gather_sv_base::resolve): Use it. Update call to
infer_pointer_type.
Diffstat (limited to 'gcc/config.gcc')
0 files changed, 0 insertions, 0 deletions