Re: [PATCH v3 0/2] aarch64: Add support for FEAT_CMH
Richard Ball <[email protected]> Tue, 4 Aug 2026 14:04:35 +0000
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <DB9PR08MB7536CFABAB4758843D678AB181D42@DB9PR08MB7536.eurprd08.prod.outlook.com> |
--_000_DB9PR08MB7536CFABAB4758843D678AB181D42DB9PR08MB7536eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Gentle Ping ________________________________ From: [email protected] <[email protected]> Sent: 14 July 2026 15:22 To: [email protected] <[email protected]> Cc: Richard Earnshaw <[email protected]>; Tamar Christina <Tamar.Chr= [email protected]>; [email protected] <[email protected]>; Wilco Dijkstra = <[email protected]>; Alex Coplan <[email protected]>; Alice Carlotti= <[email protected]>; Richard Ball <[email protected]> Subject: [PATCH v3 0/2] aarch64: Add support for FEAT_CMH From: Richard Ball <[email protected]> v3: Add some minor changes to atomic_fetch patch This patch series adds support for FEAT_CMH, this includes two patches. The first alters the previous atomic_store from PCDPHINT to change the hint parameter, this allows for the new hints to be added from CMH. The second adds a new set of atomic_fetch intrinsics, which can be used with the new SHUH hint. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [1/2] Add support for FEAT_CMH atomic store intrinsics gcc/ChangeLog: * config/aarch64/aarch64-builtins.cc (enum aarch64_builtins): Change Function/Builtin names. (aarch64_init_pcdphint_builtins): Likewise. (aarch64_init_atomic_hints_builtins): Likewise. (aarch64_general_init_builtins): Likewise. (aarch64_expand_stshh_builtin): Likewise. (aarch64_expand_atomic_hints_builtins): Likewise. (aarch64_general_expand_builtin): Likewise. (aarch64_resolve_overloaded_builtin_stshh): Likewise. (aarch64_resolve_overloaded_builtin_atomic_hint_store): Likewise (aarch64_resolve_overloaded_builtin_general): Likewise. * config/aarch64/arm_acle.h (__atomic_store_with_stshh): Likewise. (__arm_atomic_store_with_hint): Likewise. * config/aarch64/atomics.md (@aarch64_atomic_store_stshh<mode>): Add new hints to pattern (@aarch64_atomic_hints_store<mode>): Likewise. * config/aarch64/iterators.md: Add Unspec for new hints. gcc/testsuite/ChangeLog: * g++.target/aarch64/atomic_store_with_stshh.C: Change Function nam= e. * gcc.target/aarch64/atomic_store_with_stshh.c: Likewise. * gcc.target/aarch64/atomic_store_with_shuh.c: New test. * gcc.target/aarch64/atomic_store_with_stcph.c: New test. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [2/2] aarch64: Add support for FEAT_CMH atomic_fetch intrinsics gcc/ChangeLog: * config/aarch64/aarch64-builtins.cc (enum aarch64_builtins): Add new builtins. (aarch64_init_atomic_hints_builtins): Likewise. (aarch64_expand_atomic_hints_builtins_fetch): Handle Fetch intrinsi= cs. (aarch64_general_expand_builtin): Add call for new builtins. (aarch64_resolve_overloaded_builtin_atomic_hint_fetch): Handle Fetc= h intrinsics. (aarch64_resolve_overloaded_builtin_general): Add new call. * config/aarch64/arm_acle.h (enum atomic_fetch): Store different Fetch types. (__arm_atomic_fetch_add_with_hint): Add new builtin. (__arm_atomic_fetch_sub_with_hint): Likewise. (__arm_atomic_fetch_and_with_hint): Likewise. (__arm_atomic_fetch_xor_with_hint): Likewise. (__arm_atomic_fetch_or_with_hint): Likewise. * config/aarch64/atomics.md (aarch64_atomic_fetch_<atomic_ldoptab><mode>_atomic_hint): New patt= ern for atomic_fetch. (@aarch64_atomic_hints_fetch<mode>): Likewise. * config/aarch64/iterators.md: New unspecs. gcc/testsuite/ChangeLog: * gcc.target/aarch64/atomic_fetch_add_with_shuh.c: New test. * gcc.target/aarch64/atomic_fetch_and_with_shuh.c: New test. * gcc.target/aarch64/atomic_fetch_or_with_shuh.c: New test. * gcc.target/aarch64/atomic_fetch_sub_with_shuh.c: New test. * gcc.target/aarch64/atomic_fetch_xor_with_shuh.c: New test. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Richard Ball (2): aarch64: Add support for FEAT_CMH atomic store intrinsics aarch64: Add support for FEAT_CMH atomic_fetch intrinsics gcc/config/aarch64/aarch64-builtins.cc | 349 ++++++++++++++---- gcc/config/aarch64/arm_acle.h | 45 ++- gcc/config/aarch64/atomics.md | 105 +++++- gcc/config/aarch64/iterators.md | 4 +- .../aarch64/atomic_store_with_stshh.C | 22 +- .../aarch64/atomic_fetch_add_with_shuh.c | 151 ++++++++ .../aarch64/atomic_fetch_and_with_shuh.c | 150 ++++++++ .../aarch64/atomic_fetch_or_with_shuh.c | 150 ++++++++ .../aarch64/atomic_fetch_sub_with_shuh.c | 162 ++++++++ .../aarch64/atomic_fetch_xor_with_shuh.c | 150 ++++++++ .../aarch64/atomic_store_with_shuh.c | 186 ++++++++++ .../aarch64/atomic_store_with_stcph.c | 186 ++++++++++ .../aarch64/atomic_store_with_stshh.c | 22 +- 13 files changed, 1587 insertions(+), 95 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_add_with_= shuh.c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_and_with_= shuh.c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_or_with_s= huh.c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_sub_with_= shuh.c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_xor_with_= shuh.c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_store_with_shuh= .c create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_store_with_stcp= h.c -- 2.34.1 --_000_DB9PR08MB7536CFABAB4758843D678AB181D42DB9PR08MB7536eurp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"= > <style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo= ttom:0;} </style> </head> <body dir=3D"ltr"> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Gentle Ping</div> <div id=3D"appendonsend"></div> <hr style=3D"display:inline-block;width:98%" tabindex=3D"-1"> <div id=3D"divRplyFwdMsg" dir=3D"ltr"><font face=3D"Calibri, sans-serif" st= yle=3D"font-size:11pt" color=3D"#000000"><b>From:</b> [email protected] = <[email protected]><br> <b>Sent:</b> 14 July 2026 15:22<br> <b>To:</b> [email protected] <[email protected]><br> <b>Cc:</b> Richard Earnshaw <[email protected]>; Tamar Christi= na <[email protected]>; [email protected] <ktkachov@nvidia= .com>; Wilco Dijkstra <[email protected]>; Alex Coplan <Al= [email protected]>; Alice Carlotti <[email protected]>; Richard Ball <[email protected]><br> <b>Subject:</b> [PATCH v3 0/2] aarch64: Add support for FEAT_CMH</font> <div> </div> </div> <div class=3D"BodyFragment"><font size=3D"2"><span style=3D"font-size:11pt;= "> <div class=3D"PlainText">From: Richard Ball <[email protected]><br= > <br> v3: Add some minor changes to atomic_fetch patch<br> <br> This patch series adds support for FEAT_CMH,<br> this includes two patches. The first alters the previous<br> atomic_store from PCDPHINT to change the hint parameter,<br> this allows for the new hints to be added from CMH.<br> The second adds a new set of atomic_fetch intrinsics,<br> which can be used with the new SHUH hint.<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br> [1/2] Add support for FEAT_CMH atomic store intrinsics<br> gcc/ChangeLog:<br> <br> * config/aarch64/aarch64-builtin= s.cc<br> (enum aarch64_builtins): Change = Function/Builtin names.<br> (aarch64_init_pcdphint_builtins)= : Likewise.<br> (aarch64_init_atomic_hints_built= ins): Likewise.<br> (aarch64_general_init_builtins):= Likewise.<br> (aarch64_expand_stshh_builtin): = Likewise.<br> (aarch64_expand_atomic_hints_bui= ltins): Likewise.<br> (aarch64_general_expand_builtin)= : Likewise.<br> (aarch64_resolve_overloaded_buil= tin_stshh): Likewise.<br> (aarch64_resolve_overloaded_buil= tin_atomic_hint_store): Likewise<br> (aarch64_resolve_overloaded_buil= tin_general): Likewise.<br> * config/aarch64/arm_acle.h<br> (__atomic_store_with_stshh): Lik= ewise.<br> (__arm_atomic_store_with_hint): = Likewise.<br> * config/aarch64/atomics.md<br> (@aarch64_atomic_store_stshh<= mode>): Add new hints to pattern<br> (@aarch64_atomic_hints_store<= mode>): Likewise.<br> * config/aarch64/iterators.md: A= dd Unspec for new hints.<br> <br> gcc/testsuite/ChangeLog:<br> <br> * g++.target/aarch64/atomic_stor= e_with_stshh.C: Change Function name.<br> * gcc.target/aarch64/atomic_stor= e_with_stshh.c: Likewise.<br> * gcc.target/aarch64/atomic_stor= e_with_shuh.c: New test.<br> * gcc.target/aarch64/atomic_stor= e_with_stcph.c: New test.<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br> [2/2] aarch64: Add support for FEAT_CMH atomic_fetch intrinsics<br> gcc/ChangeLog:<br> <br> * config/aarch64/aarch64-builtin= s.cc<br> (enum aarch64_builtins): Add new= builtins.<br> (aarch64_init_atomic_hints_built= ins): Likewise.<br> (aarch64_expand_atomic_hints_bui= ltins_fetch): Handle Fetch intrinsics.<br> (aarch64_general_expand_builtin)= : Add call for new builtins.<br> (aarch64_resolve_overloaded_buil= tin_atomic_hint_fetch): Handle Fetch intrinsics.<br> (aarch64_resolve_overloaded_buil= tin_general): Add new call.<br> * config/aarch64/arm_acle.h<br> (enum atomic_fetch): Store diffe= rent Fetch types.<br> (__arm_atomic_fetch_add_with_hin= t): Add new builtin.<br> (__arm_atomic_fetch_sub_with_hin= t): Likewise.<br> (__arm_atomic_fetch_and_with_hin= t): Likewise.<br> (__arm_atomic_fetch_xor_with_hin= t): Likewise.<br> (__arm_atomic_fetch_or_with_hint= ): Likewise.<br> * config/aarch64/atomics.md<br> (aarch64_atomic_fetch_<atomic= _ldoptab><mode>_atomic_hint): New pattern for atomic_fetch.<br> (@aarch64_atomic_hints_fetch<= mode>): Likewise.<br> * config/aarch64/iterators.md: N= ew unspecs.<br> <br> gcc/testsuite/ChangeLog:<br> <br> * gcc.target/aarch64/atomic_fetc= h_add_with_shuh.c: New test.<br> * gcc.target/aarch64/atomic_fetc= h_and_with_shuh.c: New test.<br> * gcc.target/aarch64/atomic_fetc= h_or_with_shuh.c: New test.<br> * gcc.target/aarch64/atomic_fetc= h_sub_with_shuh.c: New test.<br> * gcc.target/aarch64/atomic_fetc= h_xor_with_shuh.c: New test.<br> <br> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br> <br> Richard Ball (2):<br> aarch64: Add support for FEAT_CMH atomic store intrinsics<br> aarch64: Add support for FEAT_CMH atomic_fetch intrinsics<br> <br> gcc/config/aarch64/aarch64-builtins.cc &= nbsp; | 349 ++++++++++++++----<br> gcc/config/aarch64/arm_acle.h &nbs= p; | 45 ++-<br> gcc/config/aarch64/atomics.md &nbs= p; | 105 +++++-<br> gcc/config/aarch64/iterators.md &n= bsp; | 4 +-<br> .../aarch64/atomic_store_with_stshh.C &n= bsp; | 22 +-<br> .../aarch64/atomic_fetch_add_with_shuh.c  = ; | 151 ++++++++<br> .../aarch64/atomic_fetch_and_with_shuh.c  = ; | 150 ++++++++<br> .../aarch64/atomic_fetch_or_with_shuh.c = | 150 ++++++++<br> .../aarch64/atomic_fetch_sub_with_shuh.c  = ; | 162 ++++++++<br> .../aarch64/atomic_fetch_xor_with_shuh.c  = ; | 150 ++++++++<br> .../aarch64/atomic_store_with_shuh.c &nb= sp; | 186 ++++++++++<br> .../aarch64/atomic_store_with_stcph.c &n= bsp; | 186 ++++++++++<br> .../aarch64/atomic_store_with_stshh.c &n= bsp; | 22 +-<br> 13 files changed, 1587 insertions(+), 95 deletions(-)<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_add_= with_shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_and_= with_shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_or_w= ith_shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_sub_= with_shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_fetch_xor_= with_shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_store_with= _shuh.c<br> create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_store_with= _stcph.c<br> <br> -- <br> 2.34.1<br> <br> </div> </span></font></div> </body> </html> --_000_DB9PR08MB7536CFABAB4758843D678AB181D42DB9PR08MB7536eurp_--