[PATCH v3 0/2] aarch64: Add SME2.1 structured sparsity outer product intrinsics

Claudio Bantaloukas <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.