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