mbox series

[00/15] arm: [MVE intrinsics] Rework store_scatter and load_gather intrinsics

Message ID 20241107091820.2010568-1-christophe.lyon@linaro.org
Headers show
Series arm: [MVE intrinsics] Rework store_scatter and load_gather intrinsics | expand

Message

Christophe Lyon Nov. 7, 2024, 9:18 a.m. UTC
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(-)