@@ -114,7 +114,7 @@ about Arm’s trademarks.
114114
115115## Copyright
116116
117- * Copyright 2011-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>.
117+ * Copyright 2011-2026 Arm Limited and/or its affiliates <open-source-office@arm.com>.
118118* Copyright 2022 Google LLC.
119119
120120## About this document
@@ -487,6 +487,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
487487* Removed all references to Transactional Memory Extension (TME).
488488* Added [**Alpha**](#current-status-and-anticipated-changes) support
489489 for Brain 16-bit floating-point vector multiplication intrinsics.
490+ * Redesigned atomic store with hints intrinsics.
490491* Added [**Alpha**](#current-status-and-anticipated-changes)
491492 support for SVE2.3 (FEAT_SVE2p3), SME2.3 (FEAT_SME2p3), FEAT_F16F32DOT
492493 dot product intrinsics.
@@ -5019,33 +5020,38 @@ stored to memory is modified by replacing the low 32 bits of
50195020`value.val[0]` with the contents of the `ACCDATA_EL1` system register.
50205021The returned value is the same as for `__arm_st64bv`.
50215022
5022- ## Atomic store with PCDPHINT intrinsics
5023+ ## Atomic store with hints intrinsics
50235024
5024- This intrinsic provides an atomic store, which will
5025- make use of the `STSHH` hint instruction immediately followed by the
5026- associated store instruction. This intrinsic is type generic and
5027- supports scalar types from 8-64 bits and is available when
5028- `__ARM_FEATURE_PCDPHINT` is defined.
5025+ This intrinsic provides an atomic store together with a hint value.
5026+ The hint is a suggestion to the compiler and maps directly to a
5027+ specific hint instruction variant in the ISA. The compiler may use this hint
5028+ when selecting code sequences, but it is not required to emit a specific
5029+ hint instruction or a specific instruction sequence. This intrinsic is
5030+ type generic and supports scalar integral and floating-point types of 8, 16, 32, and 64 bits.
50295031
50305032To access this intrinsic, `<arm_acle.h>` should be included.
50315033
50325034``` c
5033- void __arm_atomic_store_with_stshh (type *ptr,
5034- type data,
5035- int memory_order,
5036- int ret); /* Retention Policy */
5035+ void __arm_atomic_store_with_hint (type *ptr,
5036+ type data,
5037+ int memory_order,
5038+ int hint);
50375039```
50385040
5039- The first argument in this intrinsic is a pointer `ptr` which is the location to store to.
5040- The second argument `data` is the data which is to be stored.
5041- The third argument `mem ` can be one of 3 memory ordering variables supported by atomic_store:
5042- __ATOMIC_RELAXED, __ATOMIC_SEQ_CST, and __ATOMIC_RELEASE.
5043- The fourth argument can contain the following values:
5041+ The first argument `ptr` is the location to store to. The second
5042+ argument `data` is the value to be stored. The third argument
5043+ `memory_order ` can be one of the memory ordering values supported by
5044+ `atomic_store`: ` __ATOMIC_RELAXED`, ` __ATOMIC_SEQ_CST` , and
5045+ `__ATOMIC_RELEASE`.
50445046
5045- | **Retention Policy** | **Value** | **Summary** |
5046- | -------------------- | --------- | --------------------------------------------------------------------------------- |
5047- | KEEP | 0 | Signals to retain the updated location in the local cache of the updating PE. |
5048- | STRM | 1 | Signals to not retain the updated location in the local cache of the updating PE. |
5047+ The fourth argument `hint` selects the requested hint. The set of valid
5048+ hint values depends on the architectural features supported by the
5049+ target. The following hint values are defined:
5050+
5051+ | **Hint** | **Value** | **Feature** | **Summary** |
5052+ | ---------------- | --------- | -------------------------- | --------------------------------------------------------------------------------- |
5053+ | HINT_STSHH_KEEP | 0 | `__ARM_FEATURE_PCDPHINT` | Requests retention of the updated location in the local cache of the updating PE. |
5054+ | HINT_STSHH_STRM | 1 | `__ARM_FEATURE_PCDPHINT` | Requests that the updated location not be retained in the local cache of the updating PE. |
50495055
50505056# Custom Datapath Extension
50515057
0 commit comments