From: Richard Ball <[email protected]>

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        | 324 ++++++++++++++----
 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      | 186 ++++++++++
 .../aarch64/atomic_fetch_and_with_shuh.c      | 186 ++++++++++
 .../aarch64/atomic_fetch_or_with_shuh.c       | 186 ++++++++++
 .../aarch64/atomic_fetch_sub_with_shuh.c      | 208 +++++++++++
 .../aarch64/atomic_fetch_xor_with_shuh.c      | 186 ++++++++++
 .../aarch64/atomic_store_with_shuh.c          | 186 ++++++++++
 .../aarch64/atomic_store_with_stcph.c         | 186 ++++++++++
 .../aarch64/atomic_store_with_stshh.c         |  22 +-
 13 files changed, 1753 insertions(+), 93 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

Reply via email to