This patch series adds support for the `FEAT_MOP4` extension (see
https://arm-software.github.io/acle/main/acle.html#sme2-mop4-intrinsics).
* Changelog
* V1: Initial revision
* V2: Rebase on master. Merge commits 4,5,6. Address review comments.
* V3: Drop dependency on Claudio's patch (the first commit).
* V4: Merge the commit that adds the intrinsics and the commit that adds the
codegen into a single commit. Also address review comments.
Karl Meakin (3):
aarch64: Fix comments for register constraints
aarch64: Add `SME_MOP4` predefines
aarch64: Add `SME_MOP4` instrinsics and corresponding insns
gcc/config/aarch64/aarch64-acle-builtins.h | 57 +++++++
gcc/config/aarch64/aarch64-c.cc | 2 +
gcc/config/aarch64/aarch64-sme.md | 159 ++++++++++++++++++
.../aarch64/aarch64-sve-builtins-functions.h | 52 ++++++
.../aarch64/aarch64-sve-builtins-shapes.cc | 45 +++++
.../aarch64/aarch64-sve-builtins-shapes.h | 1 +
.../aarch64/aarch64-sve-builtins-sme.cc | 6 +
.../aarch64/aarch64-sve-builtins-sme.def | 67 ++++++++
gcc/config/aarch64/aarch64-sve-builtins-sme.h | 2 +
gcc/config/aarch64/aarch64-sve-builtins.def | 4 +
gcc/config/aarch64/aarch64.cc | 2 +
gcc/config/aarch64/aarch64.h | 5 +
gcc/config/aarch64/constraints.md | 21 ++-
gcc/config/aarch64/iterators.md | 107 ++++++++++++
gcc/doc/invoke.texi | 3 +
.../gcc.target/aarch64/pragma_cpp_predefs_4.c | 7 +
.../aarch64/sme/acle-asm/test_sme_acle.h | 2 +-
.../sme2/acle-asm/mop4a_za16_bf16_bf16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za16_f16_f16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za16_mf8_mf8.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_bf16_bf16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_f16_f16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_f32_f32.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_mf8_mf8.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_s16_s16.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za32_u16_u16.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za64_f64_f64.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za64_s16_s16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za64_s16_u16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za64_u16_s16.c | 87 ++++++++++
.../sme2/acle-asm/mop4a_za64_u16_u16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za16_bf16_bf16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za16_f16_f16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za32_bf16_bf16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za32_f16_f16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za32_s16_s16.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za32_u16_u16.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c | 87 ++++++++++
.../aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za64_f64_f64.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za64_s16_s16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za64_s16_u16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za64_u16_s16.c | 87 ++++++++++
.../sme2/acle-asm/mop4s_za64_u16_u16.c | 87 ++++++++++
.../aarch64/sve/acle/general-c/mop4_b16b16.c | 79 +++++++++
.../aarch64/sve/acle/general-c/mop4_base.c | 106 ++++++++++++
.../aarch64/sve/acle/general-c/mop4_f16f16.c | 79 +++++++++
.../aarch64/sve/acle/general-c/mop4_f64f64.c | 79 +++++++++
.../aarch64/sve/acle/general-c/mop4_f8f16.c | 84 +++++++++
.../aarch64/sve/acle/general-c/mop4_f8f32.c | 84 +++++++++
.../aarch64/sve/acle/general-c/mop4_i16i64.c | 88 ++++++++++
gcc/testsuite/lib/target-supports.exp | 2 +-
58 files changed, 4007 insertions(+), 7 deletions(-)
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c
--
2.51.0