https://gcc.gnu.org/g:7494f309a63aec6729e240be27d8ec5ffa755614
commit r16-9294-g7494f309a63aec6729e240be27d8ec5ffa755614 Author: Avinash Jayakar <[email protected]> Date: Thu Jul 9 13:45:30 2026 +0530 rs6000: Corrections for the AES builtins for powerpc This patch fixes few implementations issues for the AES builtins in powerpc in documentation, testcases and builtin definition. 2026-07-09 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. (cherry picked from commit 26ef750bfe4e247966caf2b3f205e5bec9d7babd) Diff: --- gcc/config/rs6000/rs6000-builtins.def | 91 ++++++++++++------------ gcc/doc/extend.texi | 2 + gcc/testsuite/gcc.target/powerpc/aes-builtin-1.c | 2 + gcc/testsuite/gcc.target/powerpc/aes-builtin-2.c | 2 + gcc/testsuite/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 832aa1b2c45f..85486c70f0d7 100644 --- a/gcc/config/rs6000/rs6000-builtins.def +++ b/gcc/config/rs6000/rs6000-builtins.def @@ -3942,52 +3942,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 {} @@ -4072,6 +4026,51 @@ const vsc __builtin_altivec_unpack_lsn_to_byte (vull); VUPKLSNTOB altivec_vupklsntob {} + 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-altivec] const vus __builtin_altivec_uncompresshn (vuc, vui); VUCMPRHN altivec_vucmprhn {} diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 35b130ff2a91..046fe04459e5 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -26858,6 +26858,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 (AES) Acceleration 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 2777fcdc7ae2..729ae1ef26db 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 98f16ad0fe8e..a509f760cd65 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 007bf878afb2..bbed43a1e8c3 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
