This patch adds support for intrinsics implementing FEAT_SME_TMOP
from armv9.6-a. All of these require the +sme-tmop arch option.

Compared with v1:
- reordered insns to follow existing practice
- updated shape to match behaviour of sme_2mode_function_t
- added new iterators with conditions to reduce insn complexity
- added new aarch64_za16_imm and aarch64_za32_imm predicates for ZA tiles
- changed registers used in tests and removed unused register definitions
- added tighter regexes around register values

Compared to v2:
- renamed aarch64_imm3 to aarch64_shift_imm3 and aarch64_lane_imm3 to 
aarch64_imm3
- Replaced SVE_FULL_BHSF and SME_TMOPA_ZA16 with more specific SME_TMOPA_BHSF
- Renamed SME_ZA_TMOP_FP8 to SME_TMOPA_FP8 for consistency
- use aarch64_imm1, aarch64_imm2, aarch64_imm<za_imm_bits> rather than specific
  aarch64_za16_imm aarch64_za32_imm etc
- added za_imm_bits for VNx8HI, VNx4SI, VNx2DI and corresponding F modes
- minor refactoring of regexes in tests

Regression tested on aarch64-unknown-linux-gnu.
OK to merge?

Cheers,
Claudio


Claudio Bantaloukas (2):
  aarch64: Rename aarch64_imm3 and aarch64_lane_imm3 predicates
  aarch64: Add SME2.1 structured sparsity outer product intrinsics

 gcc/config/aarch64/aarch64-acle-builtins.cc   |   2 +-
 gcc/config/aarch64/aarch64-acle-builtins.h    |  29 +++++
 gcc/config/aarch64/aarch64-c.cc               |   2 +
 gcc/config/aarch64/aarch64-simd.md            |  24 ++--
 gcc/config/aarch64/aarch64-sme.md             | 112 ++++++++++++++++++
 .../aarch64/aarch64-sve-builtins-shapes.cc    |  39 ++++++
 .../aarch64/aarch64-sve-builtins-shapes.h     |   1 +
 .../aarch64/aarch64-sve-builtins-sme.cc       |  36 ++++++
 .../aarch64/aarch64-sve-builtins-sme.def      |  24 ++++
 gcc/config/aarch64/aarch64-sve-builtins-sme.h |   1 +
 gcc/config/aarch64/aarch64.h                  |   3 +
 gcc/config/aarch64/aarch64.md                 |  22 ++--
 gcc/config/aarch64/constraints.md             |   4 +
 gcc/config/aarch64/iterators.md               |  30 +++++
 gcc/config/aarch64/predicates.md              |  17 ++-
 .../gcc.target/aarch64/pragma_cpp_predefs_6.c |  17 +++
 .../aarch64/sme2/acle-asm/test_sme2_acle.h    |  18 +++
 .../sme2/acle-asm/tmopa_lane_za16_bf16_bf16.c |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za16_f16_f16.c   |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za16_mf8_mf8.c   |  83 +++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_bf16_bf16.c |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_f16_f16.c   |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_f32_f32.c   |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_mf8_mf8.c   |  83 +++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_s16_s16.c   |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_s8_s8.c     |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_s8_u8.c     |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_u16_u16.c   |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_u8_s8.c     |  76 ++++++++++++
 .../sme2/acle-asm/tmopa_lane_za32_u8_u8.c     |  76 ++++++++++++
 .../general-c/ternary_za_uint_dual_single_1.c |  87 ++++++++++++++
 gcc/testsuite/lib/target-supports.exp         |   1 +
 32 files changed, 1444 insertions(+), 27 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_6.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za16_bf16_bf16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za16_f16_f16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za16_mf8_mf8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_bf16_bf16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_f16_f16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_f32_f32.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_mf8_mf8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_s16_s16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_s8_s8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_s8_u8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_u16_u16.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_u8_s8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/tmopa_lane_za32_u8_u8.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_za_uint_dual_single_1.c

-- 
2.47.3

Reply via email to