From: Richard Ball <[email protected]>

This patch series adds support for FEAT_PCDPHINT,
this includes two patches. The first adds a new atomic_store
intrinsic that generates an STSHH hint instruction immmediately
before the store instruction. The second adds a new prefetch
intrinsic, that is used to declare an intent to read from an address.

========================================================================
[1/2] aarch64: Add support for FEAT_PCDPHINT atomic_store intrinsics

This patch adds support for the atomic_store_with_stshh intrinsic
in aarch64. This intrinsic is part of FEAT_PCDPHINT.

gcc/ChangeLog:

        * config/aarch64/aarch64-builtins.cc
        (enum aarch64_builtins): Add new flags.
        (aarch64_init_pcdphint_builtins): Create new Builtin functions.
        (aarch64_general_init_builtins): Call init for PCDPHINT.
        (aarch64_expand_stshh_builtin): Expander for new intrinsic.
        (aarch64_general_expand_builtin): Call new expander.
        * config/aarch64/aarch64-c.cc
        (aarch64_update_cpp_builtins): New feature.
        * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION): 
Likewise.
        * config/aarch64/aarch64.h (TARGET_PCDPHINT): Likewise.
        * config/aarch64/arm_acle.h
        (__atomic_store_with_stshh): Generic to call builtins.
        * config/aarch64/atomics.md
        (@aarch64_atomic_store_stshh<mode>): New pattern for intrinsic.
        * config/aarch64/iterators.md: New UNSPEC.

gcc/testsuite/ChangeLog:

        * gcc.target/aarch64/atomic_store_with_stshh.c.c: New test.

========================================================================
[2/2] aarch64: Add support for __pldir intrinsic

This patch adds support for the __pldir intrinsic.
This is a new prefetch intrinsic which declares an
intent to read from an address.
This intrinsic is part of FEAT_PCDPHINT.

gcc/ChangeLog:

        * config/aarch64/aarch64-builtins.cc
        (enum aarch64_builtins): New builtin flag.
        (aarch64_init_pcdphint_builtins): New builtin function.
        (aarch64_expand_pldir_builtin): Expander for new intrinsic.
        (aarch64_general_expand_builtin): Call new expander.
        * config/aarch64/aarch64.md
        (aarch64_pldir): New pattern for instrinsic.
        * config/aarch64/arm_acle.h
        (__attribute__): New call to builtin.
        (__pldir): Likewise.

gcc/testsuite/ChangeLog:

        * gcc.target/aarch64/pldir.c: New test.
========================================================================

Richard Ball (2):
  aarch64: Add support for FEAT_PCDPHINT atomic_store intrinsics.
  aarch64: Add support for __pldir intrinsic.

 gcc/config/aarch64/aarch64-builtins.cc        | 157 ++++++++++++++++++
 gcc/config/aarch64/aarch64-c.cc               |   1 +
 .../aarch64/aarch64-option-extensions.def     |   2 +
 gcc/config/aarch64/aarch64.h                  |   3 +
 gcc/config/aarch64/aarch64.md                 |  12 ++
 gcc/config/aarch64/arm_acle.h                 |  39 +++++
 gcc/config/aarch64/atomics.md                 |  23 +++
 gcc/config/aarch64/iterators.md               |   1 +
 .../aarch64/atomic_store_with_stshh.c.c       | 119 +++++++++++++
 gcc/testsuite/gcc.target/aarch64/pldir.c      |  12 ++
 10 files changed, 369 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/atomic_store_with_stshh.c.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/pldir.c

-- 
2.34.1

Reply via email to