Re: [PATCH v3 0/2] aarch64: Add support for FEAT_CMH

Richard Ball <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <DB9PR08MB753685C449720C0F8F22429081A62@DB9PR08MB7536.eurprd08.prod.outlook.com>
2nd Ping, V3 only changes a few lines from V2, should not take much reviewing

Thanks,
Richard
________________________________
From: [email protected] <[email protected]>
Sent: 14 July 2026 15:22
To: [email protected] <[email protected]>
Cc: Richard Earnshaw <[email protected]>; Tamar Christina <[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.

========================================================================
[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 name.
        * 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.

========================================================================
[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 intrinsics.
        (aarch64_general_expand_builtin): Add call for new builtins.
        (aarch64_resolve_overloaded_builtin_atomic_hint_fetch): Handle Fetch 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 pattern 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.

========================================================================

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_shuh.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_stcph.c

--
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.