]> git.feebdaed.xyz Git - 0xmirror/gcc.git/commit
aarch64: add 8-bit floating-point sum of outer products and accumulate
authorClaudio Bantaloukas <claudio.bantaloukas@arm.com>
Wed, 24 Dec 2025 11:41:26 +0000 (11:41 +0000)
committerClaudio Bantaloukas <claudio.bantaloukas@arm.com>
Wed, 24 Dec 2025 11:50:59 +0000 (11:50 +0000)
commit68fbdf216f97ffca8aad4020784a7e91f92af57a
tree3c1706c339ce1735f2b590530af1dbb82d8db724
parent8da567fce3e3f89c63098280cb376f980f206906
aarch64: add 8-bit floating-point sum of outer products and accumulate

This patch adds support for FMOPA (widening, 2-way, FP8 to FP16) when
sme-f8f16 is enabled using svmopa_za16[_mf8]_m_fpm and for FMOPA (widening,
4-way) when sme-f8f32 is enabled using svmopa_za32[_mf8]_m_fpm.

Asm tests for the new intrinsics are added, similar to those for existing
mopa_z16 intrinsics. Tests for the binary_za_m shape are added.

gcc:
* config/aarch64/aarch64-sme.md
(@aarch64_sme_<optab><SME_ZA_F8F16_32:mode><VNx16QI_ONLY:mode>): Add
new define_insn.
* config/aarch64/aarch64-sve-builtins-shapes.cc
(struct binary_za_m_base): Support fpm argument.
* config/aarch64/aarch64-sve-builtins-sme.cc (svmopa_za): Extend for
fp8.
* config/aarch64/aarch64-sve-builtins-sme.def (svmopa): Add new
DEF_SME_ZA_FUNCTION_GS_FPM entries.

gcc/testsuite:

* gcc.target/aarch64/sme/acle-asm/test_sme_acle.h: (TEST_UNIFORM_ZA):
Add fpm0 parameter.
* gcc.target/aarch64/sve/acle/general-c/binary_za_m_1.c: Add tests for
variants accepting fpm.
* gcc.target/aarch64/sme2/acle-asm/mopa_za16_mf8.c: New test.
* gcc.target/aarch64/sme2/acle-asm/mopa_za32_mf8.c: Likewise.
gcc/config/aarch64/aarch64-sme.md
gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
gcc/config/aarch64/aarch64-sve-builtins-sme.cc
gcc/config/aarch64/aarch64-sve-builtins-sme.def
gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mopa_za16_mf8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mopa_za32_mf8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/binary_za_m_1.c