Adds support for the SVE_BFSCALE feature, which provides the svscale and svmul
intrinsics for BFloat16 vectors.
Ok to merge?
Changelog:
* V1: Initial version.
* V2: Rebase against master and address comments on V1.
* Since there are now insns for non-bfloat16 FSCALE, extend the existing
insns
instead of adding new ones.
* Rewrite asm tests to follow the same format as the other tests.
* V3:
* Rebase against master
* Address Artimiy's review:
* Move patterns for multi-vector BFMUL to aarch64-sve2.md
* Use `TARGET_STREAMING_SME2` rather than `TARGET_SME2`
* V4: Add the required `aarch64_asm_sve-bfscale_ok` checks at the top of each
assembly test.
V1: https://gcc.gnu.org/pipermail/gcc-patches/2025-November/700654.html
V2: https://gcc.gnu.org/pipermail/gcc-patches/2026-January/704725.html
V3: https://gcc.gnu.org/pipermail/gcc-patches/2026-January/706884.html
Karl Meakin (1):
aarch64: FEAT_SVE_BFSCALE support
gcc/config/aarch64/aarch64-c.cc | 2 +
.../aarch64/aarch64-sve-builtins-base.cc | 9 +-
.../aarch64/aarch64-sve-builtins-sve2.def | 43 +++
gcc/config/aarch64/aarch64-sve.md | 87 ++---
gcc/config/aarch64/aarch64-sve2.md | 70 +++-
gcc/config/aarch64/aarch64.h | 1 +
gcc/config/aarch64/iterators.md | 63 +++-
gcc/doc/invoke.texi | 3 +-
.../gcc.target/aarch64/pragma_cpp_predefs_4.c | 5 +
.../aarch64/sme2/acle-asm/mul_bf16_x2.c | 193 ++++++++++
.../aarch64/sme2/acle-asm/mul_bf16_x4.c | 227 ++++++++++++
.../aarch64/sme2/acle-asm/scale_bf16_x2.c | 194 ++++++++++
.../aarch64/sme2/acle-asm/scale_bf16_x4.c | 231 ++++++++++++
.../aarch64/sve/acle/asm/scale_bf16.c | 337 ++++++++++++++++++
.../aarch64/sve/acle/general-c/bfscale.c | 114 ++++++
gcc/testsuite/lib/target-supports.exp | 2 +-
16 files changed, 1506 insertions(+), 75 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_bf16_x2.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mul_bf16_x4.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/scale_bf16_x2.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/scale_bf16_x4.c
create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/asm/scale_bf16.c
create mode 100644
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/bfscale.c
--
2.43.0