On 09/12/2024 15:05, Christophe Lyon wrote:
Changes v1->v2:
- Keep MAX_TUPLE_SIZE=0 and update accesses to acle_vector_types
accordingly.
- implement arm_array_mode in patch 4/4 instead of 2/4 to avoid
temporary regressions when running the testsuite at patch 2/4 (helps
future bisects)
This patch series re-implements the intrinscs for loads and stores of
2- and 4- tuples using the new framework.
Most of the code is very similar to the aarch64 counterpart.
Patch #1 adds new modes, similar to aarch64's Advanced SIMD ones for
q-registers.
Patch #2 updates and fixes support for tuple types in the MVE
intrinsics framework.
Patch #3 makes use of the fixes in patch #2 to include tuples in the
store shape description.
Patch #4 is the main one, which updates a few places in arm.cc where
we handled only VALID_NEON_STRUCT_MODE: since we now have a different
VALID_MVE_STRUCT_MODE, a couple of placed needed a fix.
The introduction of all these new modes instead of just OImode and
XImode makes a few parts more verbose though.
This patch series applies on top of the previous one "Rework
store_scatter and load_gather intrinsics".
Christophe Lyon (4):
arm: [MVE intrinsics] add modes for tuples
arm: [MVE intrinsics] add support for tuples
arm: [MVE intrinsics] fix store shape to support tuples
arm: [MVE intrinsics] rework vst2q vst4q vld2q vld4q
gcc/config/arm/arm-modes.def | 22 +
gcc/config/arm/arm-mve-builtins-base.cc | 71 +++
gcc/config/arm/arm-mve-builtins-base.def | 8 +
gcc/config/arm/arm-mve-builtins-base.h | 4 +
gcc/config/arm/arm-mve-builtins-shapes.cc | 6 +-
gcc/config/arm/arm-mve-builtins.cc | 78 ++-
gcc/config/arm/arm-mve-builtins.h | 3 +-
gcc/config/arm/arm.cc | 43 +-
gcc/config/arm/arm.h | 13 +-
gcc/config/arm/arm_mve.h | 628 ----------------------
gcc/config/arm/arm_mve_builtins.def | 4 -
gcc/config/arm/iterators.md | 36 +-
gcc/config/arm/mve.md | 47 +-
gcc/config/arm/vec-common.md | 76 ++-
14 files changed, 343 insertions(+), 696 deletions(-)
OK
R.