]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Add support for fp8fma instructions
authorSaurabh Jha <saurabh.jha@arm.com>
Wed, 13 Nov 2024 17:16:37 +0000 (17:16 +0000)
committerSaurabh Jha <saurabh.jha@arm.com>
Thu, 14 Nov 2024 09:59:41 +0000 (09:59 +0000)
commit8e45a01d0fd36d21c9743f30a25e277b67e79f0e
tree8211cb778295049b1844fe78d12ee48cb6bdf9d4
parentee10846d0216e4dae4e99b20054595e668575c47
aarch64: Add support for fp8fma instructions

The AArch64 FEAT_FP8FMA extension introduces instructions for
multiply-add of vectors.

This patch introduces the following instructions:
1. {vmlalbq|vmlaltq}_f16_mf8_fpm.
2. {vmlalbq|vmlaltq}_lane{q}_f16_mf8_fpm.
3. {vmlallbbq|vmlallbtq|vmlalltbq|vmlallttq}_f32_mf8_fpm.
4. {vmlallbbq|vmlallbtq|vmlalltbq|vmlallttq}_lane{q}_f32_mf8_fpm.

It introduces the fp8fma flag.

gcc/ChangeLog:

* config/aarch64/aarch64-builtins.cc
(check_simd_lane_bounds): Add support for new unspecs.
(aarch64_expand_pragma_builtins): Add support for new unspecs.
* config/aarch64/aarch64-c.cc
(aarch64_update_cpp_builtins): New flags.
* config/aarch64/aarch64-option-extensions.def
(AARCH64_OPT_EXTENSION): New flags.
* config/aarch64/aarch64-simd-pragma-builtins.def
(ENTRY_FMA_FPM): Macro to declare fma intrinsics.
(REQUIRED_EXTENSIONS): Define to declare functions behind
command line flags.
* config/aarch64/aarch64-simd.md:
(@aarch64_<fpm_uns_op><VQ_HSF:mode><VQ_HSF:mode><V16QI_ONLY:mode><V16QI_ONLY:mode): Instruction pattern for fma intrinsics.
(@aarch64_<fpm_uns_op><VQ_HSF:mode><VQ_HSF:mode><V16QI_ONLY:mode><VB:mode><SI_ONLY:mode): Instruction pattern for fma intrinsics with lane.
* config/aarch64/aarch64.h
(TARGET_FP8FMA): New flag for fp8fma instructions.
* config/aarch64/iterators.md: New attributes and iterators.
* doc/invoke.texi: New flag for fp8fma instructions.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/simd/fma_fpm.c: New test.
gcc/config/aarch64/aarch64-builtins.cc
gcc/config/aarch64/aarch64-c.cc
gcc/config/aarch64/aarch64-option-extensions.def
gcc/config/aarch64/aarch64-simd-pragma-builtins.def
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/aarch64.h
gcc/config/aarch64/iterators.md
gcc/doc/invoke.texi
gcc/testsuite/gcc.target/aarch64/simd/fma_fpm.c [new file with mode: 0644]