This patch series re-implements the store_scatter and load_gather intrinsincs using the new framework, similarly to previous series.
A few points worth mentioning: - unlike other intrinsics, these ones have the predicate after the mode in their names, hence the need for patch #1 - when checking the 'offset' argument of the *_base_* intrinsics, we need ranges with negative lower bounds, unlike what we needed so far (SVE does not have such negative bounds AFAIK), hence the need for patch #5 and the use of 'ss64' instead of 'su64' in signatures. - because of some pecularities in ACLE expected output wrt data type suffix (.16 vs .u16 vs .f16 for instance), I chose to update a few tests in patches #12 and #13, and to introduce a dedicated iterator in other cases (patch#10, using and fixing an existing iterator would have impact on Neon tests). I chose the approach which seemed the less invasive, but maybe we should aim at more consistency and update ACLE instead? Thanks, Christophe Christophe Lyon (15): arm: [MVE intrinsics] add mode_after_pred helper in function_shape arm: [MVE intrinsics] add store_scatter_offset shape arm: [MVE intrinsics] rework vstr?q_scatter_offset arm: [MVE intrinsics] rework vstr_scatter_shifted_offset arm: [MVE intrinsics] Check immediate is a multiple in a range arm: [MVE intrinsics] Add store_scatter_base shape arm: [MVE intrinsics] rework vstr scatter_base arm: [MVE intrinsics] rework vstr scatter_base_wb arm: [MVE intrinsics] add load_ext_gather_offset shape arm: [MVE intrinsics] rework vldr gather_offset arm: [MVE intrinsics] rework vldr gather_shifted_offset arm: [MVE intrinsics] add load_gather_base shape arm: [MVE intrinsics] rework vldr gather_base arm: [MVE intrinsics] rework vldr gather_base_wb arm: [MVE intrinsics] remove useless call_properties implementations. gcc/config/arm/arm-builtins.cc | 146 - gcc/config/arm/arm-mve-builtins-base.cc | 279 +- gcc/config/arm/arm-mve-builtins-base.def | 28 + gcc/config/arm/arm-mve-builtins-base.h | 18 + gcc/config/arm/arm-mve-builtins-shapes.cc | 249 ++ gcc/config/arm/arm-mve-builtins-shapes.h | 4 + gcc/config/arm/arm-mve-builtins.cc | 99 +- gcc/config/arm/arm-mve-builtins.h | 5 + gcc/config/arm/arm_mve.h | 3096 ++--------------- gcc/config/arm/arm_mve_builtins.def | 122 - gcc/config/arm/iterators.md | 63 +- gcc/config/arm/mve.md | 2150 ++---------- gcc/config/arm/unspecs.md | 78 +- .../mve/intrinsics/vldrdq_gather_base_s64.c | 4 +- .../mve/intrinsics/vldrdq_gather_base_u64.c | 4 +- .../intrinsics/vldrdq_gather_base_wb_s64.c | 4 +- .../intrinsics/vldrdq_gather_base_wb_u64.c | 4 +- 17 files changed, 1348 insertions(+), 5005 deletions(-) -- 2.34.1