Skip to content

Commit af4a611

Browse files
committed
Add FEAT_PCDPHINT support
1 parent 50604e1 commit af4a611

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

main/acle.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
18261827
execution 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
35753583
are 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,39 @@ 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.
47474765
The returned value is the same as for `__arm_st64bv`.
47484766

4767+
## Atomic store with PCDPHINT intrinsics
4768+
4769+
These intrinsics provide an atomic store intrinsic, which will
4770+
make use of the `STSHH` hint instruction immediately followed by the
4771+
associated store instruction.
4772+
This intrinsic is available when `__ARM_FEATURE_PCDPHINT` is defined.
4773+
4774+
To access these intrinsics, `<arm_acle.h>` should be included.
4775+
4776+
``` c
4777+
// Variants are also available for:
4778+
// _s8, _u16, _s16, _u32, _s32, _u64, _s64, _u128,
4779+
// _mf8, _bf16, _f16, _f32, _f64
4780+
void __arm_stshh_u8(uint8_t *addr,
4781+
uint8_t data,
4782+
int mem, /* Memory order */
4783+
int ret); /* Retention Policy */
4784+
```
4785+
4786+
The first argument in these intrinsics is a pointer `addr` containing an address.
4787+
The second argument `data` is the data which is to be stored.
4788+
The 3rd and 4th arguments can contain the following values.
4789+
4790+
| **Memory Order** | **Value** | **Summary** |
4791+
| ---------------------| --------- | ----------------------------------------------------------------------------------------------- |
4792+
| __ATOMIC_RELAXED | 0 | No constraints imposed on other reads or writes, only this operation's atomicity is guaranteed. |
4793+
| __ATOMIC_RELEASE | 3 | No reads or writes in the current thread can be reordered after this store. |
4794+
4795+
| **Retention Policy** | **Value** | **Summary** |
4796+
| -------------------- | --------- | --------------------------------------------------------------------------------- |
4797+
| KEEP | 0 | Signals to retain the updated location in the local cache of the updating PE. |
4798+
| STRM | 1 | Signals to not retain the updated location in the local cache of the updating PE. |
4799+
47494800
# Custom Datapath Extension
47504801

47514802
The intrinsics in this section provide access to instructions in the

0 commit comments

Comments
 (0)