mbox series

[v2,0/4] arm: [MVE intrinsics] Rework intrinsics for loads/stores/ tuples

Message ID 20241209150532.2174817-1-christophe.lyon@linaro.org
Headers show
Series arm: [MVE intrinsics] Rework intrinsics for loads/stores/ tuples | expand

Message

Christophe Lyon Dec. 9, 2024, 3:05 p.m. UTC
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(-)

Comments

Richard Earnshaw (lists) Dec. 12, 2024, 10:43 a.m. UTC | #1
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.