Hi,
On 26/06/26 9:34 AM, Avinash Jayakar wrote:
> From: Avinash Jayakar <[email protected]>
>
> Hi,
>
> Addressed the comments in
> https://gcc.gnu.org/pipermail/gcc-patches/2026-June/720748.html
>
> Bootstrapped and regtested on powerpc64le-linux with no regressions. Ok
> for trunk?
>
> Changes from v1:
> - Update commit header and message
> - Add subheading to AES documentation
> - Move AES builtins to future-vsx stanza
>
> Thanks,
> Avinash Jayakar
>
> This patch fixes few implementations issues for the AES builtins in
> powerpc in documentation, testcases and builtin definition.
>
> 2026-06-26 Avinash Jayakar <[email protected]>
>
> gcc/ChangeLog:
> * config/rs6000/rs6000-builtins.def: Move AES builtins to future-vsx
> stanza.
> * doc/extend.texi: Add subheading for AES builtins.
>
> gcc/testsuite/ChangeLog:
> * gcc.target/powerpc/aes-builtin-1.c: Add future_compile_ok and lp64
> testsuite directive.
> * gcc.target/powerpc/aes-builtin-2.c: Add future_compile_ok and lp64
> testsuite directive.
> * gcc.target/powerpc/aes-builtin-3.c: Add future_compile_ok and lp64
> testsuite directive.
> ---
> gcc/config/rs6000/rs6000-builtins.def | 91 +++++++++----------
> gcc/doc/extend.texi | 2 +
> .../gcc.target/powerpc/aes-builtin-1.c | 2 +
> .../gcc.target/powerpc/aes-builtin-2.c | 2 +
> .../gcc.target/powerpc/aes-builtin-3.c | 2 +
> 5 files changed, 53 insertions(+), 46 deletions(-)
>
> diff --git a/gcc/config/rs6000/rs6000-builtins.def
> b/gcc/config/rs6000/rs6000-builtins.def
> index 172a97adaa8..d2b2f0d5527 100644
> --- a/gcc/config/rs6000/rs6000-builtins.def
> +++ b/gcc/config/rs6000/rs6000-builtins.def
> @@ -3925,52 +3925,6 @@
> void __builtin_vsx_stxvp (v256, unsigned long, const v256 *);
> STXVP nothing {mma,pair}
>
> -[future]
> - const v256 __builtin_aes_encrypt_paired (v256, v256, const int<2>);
> - XXAESENCP xxaesencp {}
> -
> - const v256 __builtin_aes128_encrypt_paired (v256, v256);
> - XXAES128ENCP xxaes128encp {}
> -
> - const v256 __builtin_aes192_encrypt_paired (v256, v256);
> - XXAES192ENCP xxaes192encp {}
> -
> - const v256 __builtin_aes256_encrypt_paired (v256, v256);
> - XXAES256ENCP xxaes256encp {}
> -
> - const v256 __builtin_aes_decrypt_paired (v256, v256, const int<2>);
> - XXAESDECP xxaesdecp {}
> -
> - const v256 __builtin_aes128_decrypt_paired (v256, v256);
> - XXAES128DECP xxaes128decp {}
> -
> - const v256 __builtin_aes192_decrypt_paired (v256, v256);
> - XXAES192DECP xxaes192decp {}
> -
> - const v256 __builtin_aes256_decrypt_paired (v256, v256);
> - XXAES256DECP xxaes256decp {}
> -
> - const v256 __builtin_aes_genlastkey_paired (v256, const int<2>);
> - XXAESGENLKP xxaesgenlkp {}
> -
> - const v256 __builtin_aes128_genlastkey_paired (v256);
> - XXAES128GENLKP xxaes128genlkp {}
> -
> - const v256 __builtin_aes192_genlastkey_paired (v256);
> - XXAES192GENLKP xxaes192genlkp {}
> -
> - const v256 __builtin_aes256_genlastkey_paired (v256);
> - XXAES256GENLKP xxaes256genlkp {}
> -
> - const vuc __builtin_galois_field_mult (vuc, vuc, const int<1>);
> - XXGFMUL128 xxgfmul128 {}
> -
> - const vuc __builtin_galois_field_mult_gcm (vuc, vuc);
> - XXGFMUL128GCM xxgfmul128gcm {}
> -
> - const vuc __builtin_galois_field_mult_xts (vuc, vuc);
> - XXGFMUL128XTS xxgfmul128xts {}
> -
> [future-vsx]
> const vus __builtin_vsx_xvmulhuh (vus, vus);
> XVMULHUH umulv8hi3_highpart {}
> @@ -4042,3 +3996,48 @@
>
> const vuq __builtin_vsx_xsrebase3t3uqm (vuq, vuq, vuq);
> XSREBASE3T3UQM vsx_xsrebase3t3uqm {}
> +
> + const v256 __builtin_aes_encrypt_paired (v256, v256, const int<2>);
> + XXAESENCP xxaesencp {}
> +
> + const v256 __builtin_aes128_encrypt_paired (v256, v256);
> + XXAES128ENCP xxaes128encp {}
> +
> + const v256 __builtin_aes192_encrypt_paired (v256, v256);
> + XXAES192ENCP xxaes192encp {}
> +
> + const v256 __builtin_aes256_encrypt_paired (v256, v256);
> + XXAES256ENCP xxaes256encp {}
> +
> + const v256 __builtin_aes_decrypt_paired (v256, v256, const int<2>);
> + XXAESDECP xxaesdecp {}
> +
> + const v256 __builtin_aes128_decrypt_paired (v256, v256);
> + XXAES128DECP xxaes128decp {}
> +
> + const v256 __builtin_aes192_decrypt_paired (v256, v256);
> + XXAES192DECP xxaes192decp {}
> +
> + const v256 __builtin_aes256_decrypt_paired (v256, v256);
> + XXAES256DECP xxaes256decp {}
> +
> + const v256 __builtin_aes_genlastkey_paired (v256, const int<2>);
> + XXAESGENLKP xxaesgenlkp {}
> +
> + const v256 __builtin_aes128_genlastkey_paired (v256);
> + XXAES128GENLKP xxaes128genlkp {}
> +
> + const v256 __builtin_aes192_genlastkey_paired (v256);
> + XXAES192GENLKP xxaes192genlkp {}
> +
> + const v256 __builtin_aes256_genlastkey_paired (v256);
> + XXAES256GENLKP xxaes256genlkp {}
> +
> + const vuc __builtin_galois_field_mult (vuc, vuc, const int<1>);
> + XXGFMUL128 xxgfmul128 {}
> +
> + const vuc __builtin_galois_field_mult_gcm (vuc, vuc);
> + XXGFMUL128GCM xxgfmul128gcm {}
> +
> + const vuc __builtin_galois_field_mult_xts (vuc, vuc);
> + XXGFMUL128XTS xxgfmul128xts {}
> diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
> index 7bd84e6d8cc..6ad18fe9073 100644
> --- a/gcc/doc/extend.texi
> +++ b/gcc/doc/extend.texi
> @@ -26967,6 +26967,8 @@ vector unsigned char);
> The following additional built-in functions are available for the
> PowerPC family of processors, starting with Future ISA.
>
> +@subsubheading PowerPC Advanced Encryption Standard Assist Built-in Functions
Instead of "Assist", please use "Acceleration".
Other than this, the patch is fine. I cannot approve it though.
-Surya
> +
> Future ISA of the PowerPC may add new instructions for accelerating AES
> algorithm. GCC provides support for these new instructions through the
> following built-in functions. The third argument to
> diff --git a/gcc/testsuite/gcc.target/powerpc/aes-builtin-1.c
> b/gcc/testsuite/gcc.target/powerpc/aes-builtin-1.c
> index 2777fcdc7ae..729ae1ef26d 100644
> --- a/gcc/testsuite/gcc.target/powerpc/aes-builtin-1.c
> +++ b/gcc/testsuite/gcc.target/powerpc/aes-builtin-1.c
> @@ -1,4 +1,6 @@
> /* { dg-do compile } */
> +/* { dg-require-effective-target powerpc_future_compile_ok } */
> +/* { dg-require-effective-target lp64 } */
> /* { dg-options "-mdejagnu-cpu=future -O2" } */
>
> void
> diff --git a/gcc/testsuite/gcc.target/powerpc/aes-builtin-2.c
> b/gcc/testsuite/gcc.target/powerpc/aes-builtin-2.c
> index 98f16ad0fe8..a509f760cd6 100644
> --- a/gcc/testsuite/gcc.target/powerpc/aes-builtin-2.c
> +++ b/gcc/testsuite/gcc.target/powerpc/aes-builtin-2.c
> @@ -1,4 +1,6 @@
> /* { dg-do compile } */
> +/* { dg-require-effective-target powerpc_future_compile_ok } */
> +/* { dg-require-effective-target lp64 } */
> /* { dg-options "-mdejagnu-cpu=future -O2" } */
>
> typedef unsigned char vec_t __attribute__((vector_size(16)));
> diff --git a/gcc/testsuite/gcc.target/powerpc/aes-builtin-3.c
> b/gcc/testsuite/gcc.target/powerpc/aes-builtin-3.c
> index 007bf878afb..bbed43a1e8c 100644
> --- a/gcc/testsuite/gcc.target/powerpc/aes-builtin-3.c
> +++ b/gcc/testsuite/gcc.target/powerpc/aes-builtin-3.c
> @@ -1,4 +1,6 @@
> /* { dg-do compile } */
> +/* { dg-require-effective-target powerpc_future_compile_ok } */
> +/* { dg-require-effective-target lp64 } */
> /* { dg-options "-mdejagnu-cpu=future -O2" } */
>
> void