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
+
 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
-- 
2.54.0

Reply via email to