This patch adds support for the new SME LUTv2 architecture extension as
described in the ACLE. It adds the `+sme-lutv2` target flag, the
`__ARM_FEATURE_SME_LUTv2` feature test macro and the `svluti4_zt`,
`svwrite_lane_zt` and `svwrite_zt` intrinsics. Making use of the new
instructions without the intrinsics will be done in a follow up patch.
Testing done:
`make check-gcc` and `make check-target` pass.
ChangeLog:
* V1: Initial series.
* V2:
* 0/2
* "AArch64" => "aarch64" in commit titles.
* Add "tests done" to cover letter.
* 1/2
* More informative commit message
* Document the feature flag in `gcc/doc/invoke.texi`.
* Fix comments in `aarch64-option-extensions.def`
* 2/2
* More informative commit message
* V3:
* 2/2
* Remove unused `(match_operand 0 "const0_operand")` from
`@aarch64_sme_write_zt<SVE_FULL:mode>`.
* V4:
* 2/2
* Remove unused `(match_operand:DI 1 "const0_operand")` from
`aarch64_sme_lut_zt`.
* Fix the `REQUIRED_EXTENSIONS` to be `AARCH64_FL_SME_LUTv2` in
`aarch64-sve-builtins-sme.def`.
* Add tests that intrinsics cannot be called if `+sme-lutv2` is not
enabled.
Karl Meakin (2):
AArch64: Add SME LUTv2 architecture extension
AArch64: Add SME LUTv2 intrinsics
gcc/config/aarch64/aarch64-c.cc | 1 +
.../aarch64/aarch64-option-extensions.def | 2 +
gcc/config/aarch64/aarch64-sme.md | 35 ++
.../aarch64/aarch64-sve-builtins-shapes.cc | 104 ++++-
.../aarch64/aarch64-sve-builtins-shapes.h | 3 +
.../aarch64/aarch64-sve-builtins-sme.cc | 70 +++
.../aarch64/aarch64-sve-builtins-sme.def | 6 +
gcc/config/aarch64/aarch64-sve-builtins-sme.h | 3 +
gcc/config/aarch64/aarch64-sve-builtins.h | 7 +-
gcc/config/aarch64/aarch64.h | 7 +-
gcc/doc/invoke.texi | 2 +
.../aarch64/sme2/acle-asm/svluti4_zt_1.c | 30 ++
.../aarch64/sme2/acle-asm/svwrite_lane_zt_1.c | 204 +++++++++
.../aarch64/sme2/acle-asm/svwrite_zt_1.c | 96 +++++
.../aarch64/sve/acle/general-c/svluti4_zt_1.c | 86 ++++
.../sve/acle/general-c/svwrite_lane_zt_1.c | 406 ++++++++++++++++++
.../aarch64/sve/acle/general-c/svwrite_zt_1.c | 351 +++++++++++++++
17 files changed, 1408 insertions(+), 5 deletions(-)
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/svluti4_zt_1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/svwrite_lane_zt_1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/svwrite_zt_1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svluti4_zt_1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svwrite_lane_zt_1.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svwrite_zt_1.c
--
2.43.0