aarch64: Add new absolute diff accumulate intrinsic

This patch adds support for the following absolute difference accumulation
intrinsics defined by SVE/SME2.3:

- svabal_s16
- svabal_n_s16
- svabal_s32
- svabal_n_s32
- svabal_s64
- svabal_n_s64
- svabal_u16
- svabal_n_u16
- svabal_u32
- svabal_n_u32
- svabal_u64
- svabal_n_u64

gcc/ChangeLog:

	* config/aarch64/aarch64-sve-builtins-sve2.cc (svabal): Define.
	* config/aarch64/aarch64-sve-builtins-sve2.def (svabal): New
	function.
	* config/aarch64/aarch64-sve-builtins-sve2.h (svabal): Declare.
	* config/aarch64/iterators.md (UNSPEC_SABAL, UNSPEC_UABAL): New
	unspecs.
	(SVE2_INT_BINARY_LONG, SVE2_INT_ADD_BINARY_LONG): Add
	UNSPEC_SABAL and UNSPEC_UABAL.
	(sve_int_op, sve_int_add_op, sve_type_unspec): Handle them.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/sve2/acle/asm/abal_s16.c: New test.
	* gcc.target/aarch64/sve2/acle/asm/abal_s32.c: Likewise.
	* gcc.target/aarch64/sve2/acle/asm/abal_s64.c: Likewise.
	* gcc.target/aarch64/sve2/acle/asm/abal_u16.c: Likewise.
	* gcc.target/aarch64/sve2/acle/asm/abal_u32.c: Likewise.
	* gcc.target/aarch64/sve2/acle/asm/abal_u64.c: Likewise.
10 files changed