From: Richard Ball <[email protected]>
v3: The new version makes changes to patch 1, which aims to address the
comments made by Wilco on v2. It does this by changing the generic to operate on
the addr operand over the value operand.
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 | 147 +++++++++++++++++
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 | 30 ++++
gcc/config/aarch64/atomics.md | 23 +++
gcc/config/aarch64/iterators.md | 1 +
.../aarch64/atomic_store_with_stshh.c.c | 153 ++++++++++++++++++
gcc/testsuite/gcc.target/aarch64/pldir.c | 12 ++
10 files changed, 384 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