11---
22title: Arm C Language Extensions
3- version: 2024Q2
4- date-of-issue: 21 June 2024
3+ version: 2024Q3
4+ date-of-issue: 30 September 2024
55# LaTeX specific variables
66copyright-text: "Copyright: see section \\texorpdfstring{\\nameref{copyright}}{Copyright}."
77draftversion: true
@@ -178,6 +178,7 @@ unless a different support level is specified in the text.
178178| 2023Q2 | 04 August 2023 | Arm | See [Changes between ACLE Q4 2022 and ACLE Q2 2023](#changes-between-acle-q4-2022-and-acle-q2-2023) |
179179| 2024Q1 | 11 April 2024 | Arm | See [Changes between ACLE Q2 2023 and ACLE Q1 2024](#changes-between-acle-q2-2023-and-acle-q1-2024) |
180180| 2024Q2 | 21 June 2024 | Arm | See [Changes between ACLE Q1 2024 and ACLE Q2 2024](#changes-between-acle-q1-2024-and-acle-q2-2024) |
181+ | 2024Q3 | 30 September 2024 | Arm | See [Changes between ACLE Q2 2024 and ACLE Q3 2024](#changes-between-acle-q2-2024-and-acle-q3-2024) |
181182
182183#### Changes between ACLE Q2 2017 and ACLE Q2 2018
183184
@@ -394,24 +395,22 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
394395* Added [**Alpha**](#current-status-and-anticipated-changes)
395396 support for SVE2.1 (FEAT_SVE2p1).
396397
397- #### Changes for next release
398+ #### Changes between ACLE Q2 2024 and ACLE Q3 2024
398399
399400* Fixed incorrect system register dependencies in Function Multi Versioning.
400401* Added a requirement for function version declaration in Function Multi Versioning.
401- * Fixed some rendering issues in the online Markdown documentation and fixed
402- a misplaced anchor.
403402* Added `__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL` to indicate the support
404403 level of the [Function Multi Versioning](#function-multi-versioning).
405- * Unified Function Multi Versioning features sha1, sha2.
406- * Unified Function Multi Versioning features ls64, ls64_v, ls64_accdata.
404+ * Unified Function Multi Versioning features sha1 and sha2.
405+ * Unified Function Multi Versioning features ls64, ls64_v, and ls64_accdata.
407406* Unified Function Multi Versioning features memtag and memtag2.
408407* Added [**Alpha**](#current-status-and-anticipated-changes)
409408 support for SME2.1 (FEAT_SME2p1).
410409* Removed requirement to add preprocessor guards for header files.
411410* Added specifications for floating-point absolute minimum
412411 and maximum intrinsics (FEAT_FAMINMAX).
413412* Added specifications for table lookup intrinsics (FEAT_LUT, FEAT_SME_LUTv2).
414- * Release support level of the [Custom Datapath Extension](#custom-datapath-extension).
413+ * Added Release support level for the [Custom Datapath Extension](#custom-datapath-extension).
415414* Added [**Alpha**](#current-status-and-anticipated-changes)
416415 support for modal 8-bit floating point intrinsics.
417416
@@ -1036,8 +1035,9 @@ Including `<arm_sve.h>` also includes the following header files:
10361035
10371036`<arm_neon_sve_bridge.h>` defines intrinsics for moving data between
10381037Neon and SVE vector types; see [NEON-SVE Bridge](#neon-sve-bridge)
1039- for details. The `__ARM_NEON_SVE_BRIDGE` macro should be tested
1040- before including the header:
1038+ for details. Before including the header, you should test the
1039+ `__ARM_NEON_SVE_BRIDGE` macro.
1040+ :
10411041
10421042``` c
10431043 #ifdef __ARM_NEON_SVE_BRIDGE
@@ -1100,12 +1100,12 @@ context in which the preprocessor macros are evaluated. For example:
11001100 void foo() {
11011101 #ifdef __ARM_FEATURE_SVE
11021102 // The user should make no assumptions that the target attribute
1103- // has enabled the __ARM_FEATURE_SVE macro.
1103+ // enables the __ARM_FEATURE_SVE macro.
11041104 #endif
11051105}
11061106```
11071107
1108- The compiler may add additional restrictions to the intrinsics beyond what is
1108+ The compiler might add additional restrictions to the intrinsics beyond what is
11091109captured by the ACLE macros depending on the context in which the intrinsics
11101110are used. For example:
11111111
@@ -1119,7 +1119,7 @@ are used. For example:
11191119```
11201120
11211121If `__ARM_FEATURE_SME` evaluates to `true` the SME intrinsic `svst1_hor_za8`
1122- is available, but `foo` may still fail to compile because the call does not
1122+ is available, but `foo` might still fail to compile because the call does not
11231123occur in a [streaming statement](#streaming-statement).
11241124
11251125## Attributes
@@ -5897,11 +5897,11 @@ float16 types are only available when the `__fp16` type is defined, that is,
58975897when supported by the hardware.
58985898
58995899bfloat types are only available when the `__bf16` type is defined, that is,
5900- when supported by the hardware. The bfloat types are all opaque types. That is
5901- to say they can only be used by intrinsics.
5900+ when supported by the hardware. The bfloat types are all opaque types. That is,
5901+ they can only be used by intrinsics.
59025902
5903- The FP8 types are all opaque types. That is to say they can only be used
5904- by intrinsics.
5903+ The FP8 types are all opaque types. That is, they can only be used by
5904+ intrinsics.
59055905
59065906### Advanced SIMD Scalar data types
59075907
@@ -6713,7 +6713,7 @@ single vectors:
67136713
67146714| **Signed integer** | **Unsigned integer** | **Floating-point** | |
67156715| -------------------- | -------------------- | -------------------- | -------------------- |
6716- | `svint8_t` | `svuint8_t` | | `svmfloat8_t |
6716+ | `svint8_t` | `svuint8_t` | | `svmfloat8_t` |
67176717| `svint16_t` | `svuint16_t` | `svfloat16_t` | `svbfloat16_t` |
67186718| `svint32_t` | `svuint32_t` | `svfloat32_t` | |
67196719| `svint64_t` | `svuint64_t` | `svfloat64_t` | |
@@ -12320,8 +12320,8 @@ element types.
1232012320### SME2.1 instruction intrinsics
1232112321
1232212322The specification for SME2.1 is in
12323- [**Alpha** state](#current-status-and-anticipated-changes) and may change or be
12324- extended in the future.
12323+ [**Alpha** state](#current-status-and-anticipated-changes) and might change or
12324+ be extended in the future.
1232512325
1232612326The intrinsics in this section are defined by the header file
1232712327[`<arm_sme.h>`](#arm_sme.h) when `__ARM_FEATURE_SME2p1` is defined.
@@ -13083,7 +13083,7 @@ intrinsics may have additional target feature requirements.
1308313083
1308413084#### BFCVTN, FCVTN
1308513085
13086- Half-precision and BFloat16 convert, narrow and interleave to 8-bit
13086+ Half-precision and BFloat16 convert, narrow, and interleave to 8-bit
1308713087floating-point.
1308813088``` c
1308913089 // Variant is also available for: _bf16_x2
@@ -13092,7 +13092,7 @@ floating-point.
1309213092
1309313093#### FCVTNT, FCVTNB
1309413094
13095- Single-precision convert, narrow and interleave to 8-bit floating-point (top and bottom).
13095+ Single-precision convert, narrow, and interleave to 8-bit floating-point (top and bottom).
1309613096``` c
1309713097 svmfloat8_t svcvtnt_mf8[_f32_x2]_fpm(svmfloat8_t zd, svfloat32x2_t zn, fpm_t fpm);
1309813098 svmfloat8_t svcvtnb_mf8[_f32_x2]_fpm(svmfloat8_t zd, svfloat32x2_t zn, fpm_t fpm);
0 commit comments