This series fixes the support for 64-bit scalar shifts with MVE, by
fixing the patterns and the intrinsics definitions.

It was already approved by Richard on the forge as part of
https://forge.sourceware.org/gcc/gcc-TEST/pulls/121

I extracted these 4 patches from the longer series to make backports
easier.

OK for trunk and gcc-15 (cherry-picks apply cleanly)?

Christophe Lyon (4):
  arm: fix MVE asrl lsll lsrl patterns [PR122216]
  arm: add support for out of range shift amount in MVE asrl and lsll
    [PR122216]
  arm: [MVE intrinsics] add scalar_s64_shift scalar_u64_shift shapes
    [PR122216]
  arm: [MVE intrinsics] rework asrl lsll [PR122216]

 gcc/config/arm/arm-mve-builtins-base.cc       |  44 ++++
 gcc/config/arm/arm-mve-builtins-base.def      |   2 +
 gcc/config/arm/arm-mve-builtins-base.h        |   2 +
 gcc/config/arm/arm-mve-builtins-shapes.cc     |  30 +++
 gcc/config/arm/arm-mve-builtins-shapes.h      |   2 +
 gcc/config/arm/arm.md                         |  17 +-
 gcc/config/arm/arm_mve.h                      |  16 --
 gcc/config/arm/constraints.md                 |   5 +-
 gcc/config/arm/mve.md                         | 199 ++++++++++++++++++
 gcc/config/arm/thumb2.md                      |  24 ---
 .../arm/mve/intrinsics/asrl-various-ranges.c  | 161 ++++++++++++++
 .../arm/mve/intrinsics/lsll-various-ranges.c  | 160 ++++++++++++++
 12 files changed, 607 insertions(+), 55 deletions(-)
 create mode 100644 
gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c
 create mode 100644 
gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c

-- 
2.34.1

Reply via email to