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
