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`

V1: https://gcc.gnu.org/pipermail/gcc-patches/2025-November/700654.html
V2: https://gcc.gnu.org/pipermail/gcc-patches/2026-January/704725.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       | 191 ++++++++++
 .../aarch64/sme2/acle-asm/mul_bf16_x4.c       | 225 ++++++++++++
 .../aarch64/sme2/acle-asm/scale_bf16_x2.c     | 192 ++++++++++
 .../aarch64/sme2/acle-asm/scale_bf16_x4.c     | 229 ++++++++++++
 .../aarch64/sve/acle/asm/scale_bf16.c         | 335 ++++++++++++++++++
 .../aarch64/sve/acle/general-c/bfscale.c      | 114 ++++++
 gcc/testsuite/lib/target-supports.exp         |   2 +-
 16 files changed, 1496 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

Reply via email to