Skip to content

Commit 8bb41f9

Browse files
authored
Add FEAT_PCDPHINT Support (#406)
1 parent a8d2b21 commit 8bb41f9

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

main/acle.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
475475
* Upgrade Function Multi Versioning to Release support level.
476476
* Removed _single from svmla_za16[_mf8]_vg2x1_fpm and svmla_za32[_mf8]_vg4x1_fpm.
477477
* Improve documentation for VMLA/VMLS intrinsics for floats.
478+
* Added support for producer-consumer data placement hints.
478479

479480
### References
480481

@@ -1837,6 +1838,12 @@ The `__ARM_FEATURE_SYSREG128` macro can only be implemented in the AArch64
18371838
execution state. Intrinsics for the use of these instructions are specified in
18381839
[Special register intrinsics](#special-register-intrinsics).
18391840

1841+
### Producer-consumer data placement hints
1842+
1843+
`__ARM_FEATURE_PCDPHINT` is defined to `1` if the producer-consumer
1844+
data placement hints (FEAT_PCDPHINT) instructions and their associated
1845+
intrinsics are available on the target.
1846+
18401847
## Floating-point and vector hardware
18411848

18421849
### Hardware floating point
@@ -2635,6 +2642,7 @@ be found in [[BA]](#BA).
26352642
| [`__ARM_FEATURE_PAC_DEFAULT`](#pointer-authentication) | Pointer authentication protection | 0x5 |
26362643
| [`__ARM_FEATURE_PAUTH`](#pointer-authentication) | Pointer Authentication Extension (FEAT_PAuth) | 1 |
26372644
| [`__ARM_FEATURE_PAUTH_LR`](#pointer-authentication) | Armv9.5-A Enhancements to Pointer Authentication Extension (FEAT_PAuth_LR) | 1 |
2645+
| [`__ARM_FEATURE_PCDPHINT`](#producer-consumer-data-placement-hints) | Producer-consumer data placement hint instructions (FEAT_PCDPHINT) | 1 |
26382646
| [`__ARM_FEATURE_QBIT`](#q-saturation-flag) | Q (saturation) flag (32-bit-only) | 1 |
26392647
| [`__ARM_FEATURE_QRDMX`](#rounding-doubling-multiplies) | SQRDMLxH instructions and associated intrinsics availability | 1 |
26402648
| [`__ARM_FEATURE_RCPC`](#rcpc) | Release Consistent processor consistent Model (64-bit-only) | 1 |
@@ -3641,6 +3649,16 @@ as in `__pldx`.
36413649
`__pldx` and `__plix` arguments cache level and retention policy
36423650
are ignored on unsupported targets.
36433651

3652+
### Intent to read prefetch
3653+
3654+
``` c
3655+
void __pldir(void const volatile *addr);
3656+
```
3657+
Generates an intent to read on update prefetch instruction. The argument should
3658+
be any expression that may designate a data address. This intrinsic does
3659+
not require specification of cache level or retention policy. Support for this
3660+
intrinsic is indicated by `__ARM_FEATURE_PCDPHINT`.
3661+
36443662
## NOP
36453663

36463664
``` c
@@ -4813,6 +4831,34 @@ stored to memory is modified by replacing the low 32 bits of
48134831
`value.val[0]` with the contents of the `ACCDATA_EL1` system register.
48144832
The returned value is the same as for `__arm_st64bv`.
48154833

4834+
## Atomic store with PCDPHINT intrinsics
4835+
4836+
This intrinsic provides an atomic store, which will
4837+
make use of the `STSHH` hint instruction immediately followed by the
4838+
associated store instruction. This intrinsic is type generic and
4839+
supports scalar types from 8-64 bits and is available when
4840+
`__ARM_FEATURE_PCDPHINT` is defined.
4841+
4842+
To access this intrinsic, `<arm_acle.h>` should be included.
4843+
4844+
``` c
4845+
void __arm_atomic_store_with_stshh(type *ptr,
4846+
type data,
4847+
int memory_order,
4848+
int ret); /* Retention Policy */
4849+
```
4850+
4851+
The first argument in this intrinsic is a pointer `ptr` which is the location to store to.
4852+
The second argument `data` is the data which is to be stored.
4853+
The third argument `mem` can be one of 3 memory ordering variables supported by atomic_store:
4854+
__ATOMIC_RELAXED, __ATOMIC_SEQ_CST, and __ATOMIC_RELEASE.
4855+
The fourth argument can contain the following values:
4856+
4857+
| **Retention Policy** | **Value** | **Summary** |
4858+
| -------------------- | --------- | --------------------------------------------------------------------------------- |
4859+
| KEEP | 0 | Signals to retain the updated location in the local cache of the updating PE. |
4860+
| STRM | 1 | Signals to not retain the updated location in the local cache of the updating PE. |
4861+
48164862
# Custom Datapath Extension
48174863

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

0 commit comments

Comments
 (0)