[PATCH v4 1/2] aarch64: Add SVE2 faminmax intrinsics

saurabh.jha@arm.com saurabh.jha@arm.com
Thu Oct 3 09:51:56 GMT 2024


The AArch64 FEAT_FAMINMAX extension introduces instructions for
computing the floating point absolute maximum and minimum of the
two vectors element-wise.

This patch introduces SVE2 faminmax intrinsics. The intrinsics of this
extension are implemented as the following builtin functions:
* sva[max|min]_[m|x|z]
* sva[max|min]_[f16|f32|f64]_[m|x|z]
* sva[max|min]_n_[f16|f32|f64]_[m|x|z]

gcc/ChangeLog:

	* config/aarch64/aarch64-sve-builtins-base.cc
	(svamax): Absolute maximum declaration.
	(svamin): Absolute minimum declaration.
	* config/aarch64/aarch64-sve-builtins-base.def
	(REQUIRED_EXTENSIONS): Add faminmax intrinsics behind a flag.
	(svamax): Absolute maximum declaration.
	(svamin): Absolute minimum declaration.
	* config/aarch64/aarch64-sve-builtins-base.h: Declaring function
	bases for the new intrinsics.
	* config/aarch64/aarch64.h
	(TARGET_SVE_FAMINMAX): New flag for SVE2 faminmax.
	* config/aarch64/iterators.md: New unspecs, iterators, and attrs
	for the new intrinsics.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/sve2/acle/asm/amax_f16.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/amax_f32.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/amax_f64.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/amin_f16.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/amin_f32.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/amin_f64.c: New test.
---
 .../aarch64/aarch64-sve-builtins-base.cc      |   4 +
 .../aarch64/aarch64-sve-builtins-base.def     |   5 +
 .../aarch64/aarch64-sve-builtins-base.h       |   2 +
 gcc/config/aarch64/aarch64.h                  |   1 +
 gcc/config/aarch64/iterators.md               |  18 +-
 .../aarch64/sve2/acle/asm/amax_f16.c          | 312 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/amax_f32.c          | 312 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/amax_f64.c          | 312 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/amin_f16.c          | 311 +++++++++++++++++
 .../aarch64/sve2/acle/asm/amin_f32.c          | 312 ++++++++++++++++++
 .../aarch64/sve2/acle/asm/amin_f64.c          | 312 ++++++++++++++++++
 11 files changed, 1900 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amax_f16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amax_f32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amax_f64.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amin_f16.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amin_f32.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/amin_f64.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: v4-0001-aarch64-Add-SVE2-faminmax-intrinsics.patch
Type: text/x-patch
Size: 48096 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20241003/c724c756/attachment-0001.bin>


More information about the Gcc-patches mailing list