@@ -464,6 +464,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
464464
465465* Added feature test macro for FEAT_SSVE_FEXPA.
466466* Added feature test macro for FEAT_CSSC.
467+ * Added support for producer-consumer data placement hints.
467468
468469### References
469470
@@ -1826,6 +1827,12 @@ The `__ARM_FEATURE_SYSREG128` macro can only be implemented in the AArch64
18261827execution state. Intrinsics for the use of these instructions are specified in
18271828[Special register intrinsics](#special-register-intrinsics).
18281829
1830+ ### Producer-consumer data placement hints
1831+
1832+ `__ARM_FEATURE_PCDPHINT` is defined to `1` if the producer-consumer
1833+ data placement hints (FEAT_PCDPHINT) instructions and their associated
1834+ intrinsics are available on the target.
1835+
18291836## Floating-point and vector hardware
18301837
18311838### Hardware floating point
@@ -2604,6 +2611,7 @@ be found in [[BA]](#BA).
26042611| [`__ARM_FEATURE_PAC_DEFAULT`](#pointer-authentication) | Pointer authentication protection | 0x5 |
26052612| [`__ARM_FEATURE_PAUTH`](#pointer-authentication) | Pointer Authentication Extension (FEAT_PAuth) | 1 |
26062613| [`__ARM_FEATURE_PAUTH_LR`](#pointer-authentication) | Armv9.5-A Enhancements to Pointer Authentication Extension (FEAT_PAuth_LR) | 1 |
2614+ | [`__ARM_FEATURE_PCDPHINT`](#producer-consumer-data-placement-hints) | Producer-consumer data placement hint instructions (FEAT_PCDPHINT) | 1 |
26072615| [`__ARM_FEATURE_QBIT`](#q-saturation-flag) | Q (saturation) flag (32-bit-only) | 1 |
26082616| [`__ARM_FEATURE_QRDMX`](#rounding-doubling-multiplies) | SQRDMLxH instructions and associated intrinsics availability | 1 |
26092617| [`__ARM_FEATURE_RCPC`](#rcpc) | Release Consistent processor consistent Model (64-bit-only) | 1 |
@@ -3574,6 +3582,16 @@ as in `__pldx`.
35743582`__pldx` and `__plix` arguments cache level and retention policy
35753583are ignored on unsupported targets.
35763584
3585+ ### Intent to read prefetch
3586+
3587+ ``` c
3588+ void __pldir(void const volatile *addr);
3589+ ```
3590+ Generates an intent to read on update prefetch instruction. The argument should
3591+ be any expression that may designate a data address. This intrinsic does
3592+ not require specification of cache level or retention policy. Support for this
3593+ intrinsic is indicated by `__ARM_FEATURE_PCDPHINT`.
3594+
35773595## NOP
35783596
35793597``` c
@@ -4746,6 +4764,34 @@ stored to memory is modified by replacing the low 32 bits of
47464764`value.val[0]` with the contents of the `ACCDATA_EL1` system register.
47474765The returned value is the same as for `__arm_st64bv`.
47484766
4767+ ## Atomic store with PCDPHINT intrinsics
4768+
4769+ This intrinsic provides an atomic store, which will
4770+ make use of the `STSHH` hint instruction immediately followed by the
4771+ associated store instruction. This intrinsic is type generic and
4772+ supports scalar types from 8-64 bits and is available when
4773+ `__ARM_FEATURE_PCDPHINT` is defined.
4774+
4775+ To access this intrinsic, `<arm_acle.h>` should be included.
4776+
4777+ ``` c
4778+ void __arm_atomic_store_with_stshh(type *ptr,
4779+ type data,
4780+ int memory_order,
4781+ int ret); /* Retention Policy */
4782+ ```
4783+
4784+ The first argument in this intrinsic is a pointer `ptr` which is the location to store to.
4785+ The second argument `data` is the data which is to be stored.
4786+ The third argument `mem` can be one of 3 memory ordering variables supported by atomic_store:
4787+ __ATOMIC_RELAXED, __ATOMIC_SEQ_CST, and __ATOMIC_RELEASE.
4788+ The fourth argument can contain the following values:
4789+
4790+ | **Retention Policy** | **Value** | **Summary** |
4791+ | -------------------- | --------- | --------------------------------------------------------------------------------- |
4792+ | KEEP | 0 | Signals to retain the updated location in the local cache of the updating PE. |
4793+ | STRM | 1 | Signals to not retain the updated location in the local cache of the updating PE. |
4794+
47494795# Custom Datapath Extension
47504796
47514797The intrinsics in this section provide access to instructions in the
0 commit comments