This is a summary of discussions relative to the merge request created by
Richard Ball (ricbal02) <[email protected]> titled
aarch64: Add Support for SVE2p3/SME2p3 dot product intrinsics
since its creation.
Description: aarch64: Add support for SVE2p3 and SME2p3 dot product intrinsics
gcc/ChangeLog:
* config/aarch64/aarch64-acle-builtins.h
(TYPES_s_narrow_su): New type array.
(s_narrow_su): Likewise.
* config/aarch64/aarch64-sve-builtins-base.cc
(class svdot_impl): Update impl.
(FUNCTION): Likewise.
* config/aarch64/aarch64-sve-builtins-sve2.def
(REQUIRED_EXTENSIONS): New function.
(svdot): Likewise.
(svdot_lane): Likewise.
* config/aarch64/aarch64-sve2.md
(<sur>dot_prodvnx4sivnx8hi): Renamed.
(@<sur>dot_prod<VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>): New Name.
(@<sur>dot_prod<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>): New pattern.
(@aarch64_<sur>dot_prod_lane<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>):
Likewise.
* config/aarch64/aarch64.h
(TARGET_SVE2p3): New Target Flag.
(TARGET_SME2p3): Likewise.
(TARGET_STREAMING_SME2p3): Likewise.
(TARGET_SVE2p3_OR_SME2p3): Likewise.
* doc/invoke.texi: Add sve2p3/sme2p3.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c: New test.
* gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c: New test.
* gcc.target/aarch64/sme2/acle-asm/dot_s16.c: New test.
* gcc.target/aarch64/sme2/acle-asm/dot_u16.c: New test.
* gcc.target/aarch64/sve2/dotproduct_intrinsicless.c: New test.
CC: [email protected], [email protected], [email protected],
[email protected], [email protected], [email protected]
The full and up to date discussion can be found at
https://forge.sourceware.org/gcc/gcc/pulls/164
The merge request has been closed without being merged directly on the forge
repository.
On 2026-06-01 09:40:47+00:00, Claudio Bantaloukas (rdfm) <[email protected]>
commented on the code:
LGTM apart from a small nit but I'm not a maintainer.
> +++ gcc/config/aarch64/aarch64-sve-builtins.cc
> @@ -638,1 +638,4 @@
>
> +/* _s16_s8
> + _u16_u8. */
> +#define TYPES_s_narrow_fsu_sve2p3(S, D, T) \
TYPES_s_narrow_su?
> +++ gcc/config/aarch64/aarch64-sve-builtins.cc
> @@ -638,1 +638,4 @@
>
> +/* _s16_s8
> + _u16_u8. */
> +#define TYPES_s_narrow_fsu_sve2p3(S, D, T) \
Agreed, that sounds better
On 2026-06-16 09:25:49+00:00, Karl Meakin (karmea01) <[email protected]>
commented on the code:
> +++ gcc/config/aarch64/aarch64-sve-builtins-base.cc
> @@ -959,3 +959,3 @@
> GET_MODE (e.args[0]));
> else
> - icode = (e.type_suffix (0).float_p
> + {
These `{}` and indentation can be elided, because there is only one statement
in the body
> +++ gcc/config/aarch64/aarch64-sve-builtins-base.cc
> @@ -959,3 +959,3 @@
> GET_MODE (e.args[0]));
> else
> - icode = (e.type_suffix (0).float_p
> + {
Thanks, good catch
On 2026-06-16 09:27:45+00:00, Karl Meakin (karmea01) <[email protected]>
commented on the code:
> +++ gcc/doc/invoke.texi
> @@ -21969,2 +21969,4 @@
> @item sve2p2
> Enable SVE2.2 instructions. This also enables SVE2 and SVE2.1 instructions.
> +@item sve2p3
> +Enable SVE2.3 instructions. This also enables SVE2 instructions.
Does it also enable SVE2.1 and SVE2.2 instructions?
> +++ gcc/doc/invoke.texi
> @@ -21969,2 +21969,4 @@
> @item sve2p2
> Enable SVE2.2 instructions. This also enables SVE2 and SVE2.1 instructions.
> +@item sve2p3
> +Enable SVE2.3 instructions. This also enables SVE2 instructions.
Yes it does, change made