Skip to content

Commit a405989

Browse files
[main] Add feature macro __ARM_FEATURE_RCPC (#199)
To guard the usage of Load-AcquirePC instructions in inline assembly, https://reviews.llvm.org/D127798 introduces macro __ARM_FEATURE_RCPC in Clang/LLVM. This patch documents the existence of the feature MACRO, and its use case. Co-authored-by: Sam Elliott <[email protected]> Co-authored-by: Sam Elliott <[email protected]>
1 parent c15131e commit a405989

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

main/acle.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ title: Arm C Language Extensions
33
version: 2022Q2
44
date-of-issue: 01 Jul 2022
55
# LaTeX specific variables
6-
copyright-text: Copyright 2011-2022 Arm Limited and/or its affiliates <[email protected]>.
7-
draftversion: false
6+
copyright-text: "Copyright: see section \\texorpdfstring{\\nameref{copyright}}{Copyright}."
7+
draftversion: true
88
# Jekyll specific variables
99
header_counter: true
1010
toc: true
1111
---
1212

1313
<!--
1414
SPDX-FileCopyrightText: Copyright 2011-2022 Arm Limited and/or its affiliates <[email protected]>
15+
SPDX-FileCopyrightText: Copyright 2022 Google LLC.
1516
CC-BY-SA-4.0 AND Apache-Patent-License
1617
See LICENSE.md file for details
1718
-->
@@ -113,7 +114,8 @@ about Arm’s trademarks.
113114

114115
## Copyright
115116

116-
Copyright 2011-2022 Arm Limited and/or its affiliates <[email protected]>.
117+
* Copyright 2011-2022 Arm Limited and/or its affiliates <[email protected]>.
118+
* Copyright 2022 Google LLC.
117119

118120
## About this document
119121

@@ -312,6 +314,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
312314
* Fixes for [Function Multi Versioning](#function-multi-versioning):
313315
* typo in `FEAT_DPB2`.
314316
* added `FEAT_LS64*`.
317+
* Added feature detection macro `__ARM_FEATURE_RCPC` for RCpc (Release Consistent processor consistent) model at [RCpc](#rcpc).
315318

316319
### References
317320

@@ -1505,6 +1508,25 @@ execution state. Intrinsics for the use of these instructions are
15051508
specified in [memcpy family of operations intrinsics -
15061509
MOPS](#memcpy-family-of-operations-intrinsics---mops)
15071510

1511+
### RCPC
1512+
1513+
`__ARM_FEATURE_RCPC` is set if the weaker RCpc (Release Consistent
1514+
processor consistent) model is supported. It is undefined otherwise.
1515+
The value indicates the set of Load-Acquire and Store-Release
1516+
instructions available. The intention is to allow programmers to guard
1517+
the usage of these instructions in inline assembly.
1518+
1519+
| **Value** | **Feature** | **Instructions** | **Availability** |
1520+
| --------- | ----------- |-------------------------------- | ------------------------- |
1521+
| 1 | FEAT_LRCPC | LDAPR* instructions | Armv8.4, optional Armv8.2 |
1522+
| 2 | FEAT_LRCPC2 | LDAPUR* and STLUR* instructions | Armv8.3, optional Armv8.2 |
1523+
1524+
If defined, the value of `__ARM_FEATURE_RCPC` remains consistent with the decimal
1525+
value of `LRCPC` field (bits [23:20]) in the `ID_AA64ISAR1_EL1` register.
1526+
1527+
The `__ARM_FEATURE_RCPC` macro can only be implemented in the AArch64
1528+
execution state.
1529+
15081530
## Floating-point and vector hardware
15091531

15101532
### Hardware floating point
@@ -2136,6 +2158,7 @@ be found in [[BA]](#BA).
21362158
| [`__ARM_FEATURE_PAC_DEFAULT`](#pointer-authentication) | Pointer authentication | 0x5 |
21372159
| [`__ARM_FEATURE_QBIT`](#q-saturation-flag) | Q (saturation) flag (32-bit-only) | 1 |
21382160
| [`__ARM_FEATURE_QRDMX`](#rounding-doubling-multiplies) | SQRDMLxH instructions and associated intrinsics availability | 1 |
2161+
| [`__ARM_FEATURE_RCPC`](#rcpc) | Release Consistent processor consistent Model (64-bit-only) | 1 |
21392162
| [`__ARM_FEATURE_RNG`](#random-number-generation-extension) | Random Number Generation Extension (Armv8.5-A) | 1 |
21402163
| [`__ARM_FEATURE_SAT`](#saturation-instructions) | Width-specified saturation instructions (32-bit-only) | 1 |
21412164
| [`__ARM_FEATURE_SHA2`](#sha2-extension) | SHA2 Crypto extension (Arm v8-A) | 1 |

0 commit comments

Comments
 (0)