@@ -1499,32 +1499,8 @@ enclose them in parentheses if they are not simple constants.
14991499
15001500## Testing for Arm C Language Extensions
15011501
1502- `__ARM_ACLE` is defined as the version of this specification that is
1503- implemented, formatted as `{YEAR}{QUARTER}{PATCH}`. The `YEAR` segment is
1504- composed of 4 digits, the `QUARTER` segment is composed of 1 digit, and
1505- the `PATCH` segment is also composed of 1 digit.
1506-
1507- For example:
1508-
1509- - An implementation based on the version 2023 Q2 of the ACLE with no
1510- further patch releases will define `__ARM_ACLE` as `202320`.
1511- - An implementation based on a hypothetical version 2024 Q3 of the ACLE
1512- with two patch releases will define `__ARM_ACLE` as `202432`.
1513-
1514- NOTE: Previously, the macro followed the previous versioning scheme and
1515- was defined as `100 * major_version + minor_version`, which was the
1516- version of this specification implemented. For instance, an implementation
1517- implementing version 2.1 of the ACLE specification defined `__ARM_ACLE`
1518- as `201`.
1519-
1520- `__ARM_ACLE_VERSION(year, quarter, patch)` is defined to express a given
1521- ACLE version. Returns with the version number in the same format as the
1522- `__ARM_ACLE` does. Checking the minimum required ACLE version could be
1523- written as:
1524-
1525- ``` c
1526- #if __ARM_ACLE >= __ARM_ACLE_VERSION(2024, 1, 0)
1527- ```
1502+ An implementation that supports the Arm C Language Extensions defines `__ARM_ACLE`.
1503+ For compatibility with existing code, the recommended value of this macro is `202420`.
15281504
15291505## Endianness
15301506
@@ -2998,14 +2974,8 @@ following:
29982974versioning mechanism described in this section is supported by the
29992975compiler and it is enabled.
30002976
3001- `__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL` is defined to the currently supported
3002- version of the ACLE. The value and the format are the same as the `__ARM_ACLE`.
3003-
3004- For example, it can be implemented as:
3005-
3006- ``` c
3007- #define __FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL __ARM_ACLE_VERSION(2024, 3, 0)
3008- ```
2977+ `__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL` is defined as a value corresponding to the
2978+ support level listed in [Function Multi Versioning feature availability](#function-multi-versioning-feature-availability).
30092979
30102980### Target version strings
30112981
@@ -3130,6 +3100,71 @@ The following table lists the architectures feature mapping for AArch64.
31303100
31313101The tables are sorted by priority, starting from features of lowest priority ending with features of highest priority.
31323102
3103+ ### Function Multi Versioning feature availability
3104+
3105+ The following table lists the Function Multi Versioning support level at
3106+ which each target version name became available.
3107+
3108+ A Function Multi Versioning target version name is supported when
3109+ `__HAVE_FUNCTION_MULTI_VERSIONING` is defined to `1` and
3110+ `__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL` is greater than or equal to
3111+ the support level listed for that name. Support for a given support level
3112+ includes all target version names introduced at earlier support levels,
3113+ unless otherwise specified.
3114+
3115+
3116+ | **Name** | **Minimum support level** |
3117+ | ------------- | ------------------------- |
3118+ | default | **202210** |
3119+ | sha1 | 202210 |
3120+ | aes | 202210 |
3121+ | vmull | 202210 |
3122+ | rng | 202210 |
3123+ | flagm | 202210 |
3124+ | flagm2 | 202210 |
3125+ | lse | 202210 |
3126+ | dotprod | 202210 |
3127+ | rdm | 202210 |
3128+ | fp16 | 202210 |
3129+ | dit | 202210 |
3130+ | dpb | 202210 |
3131+ | dpb2 | 202210 |
3132+ | jscvt | 202210 |
3133+ | fcma | 202210 |
3134+ | frintts | 202210 |
3135+ | sve | 202210 |
3136+ | sve2 | 202210 |
3137+ | sme | 202210 |
3138+ | sb | 202210 |
3139+ | ssbs | 202210 |
3140+ | bti | 202210 |
3141+ | crc | **202240** |
3142+ | sha2 | 202240 |
3143+ | fp | 202240 |
3144+ | simd | 202240 |
3145+ | sm4 | 202240 |
3146+ | sha3 | 202240 |
3147+ | fp16fml | 202240 |
3148+ | rcpc | 202240 |
3149+ | rcpc2 | 202240 |
3150+ | i8mm | 202240 |
3151+ | bf16 | 202240 |
3152+ | f32mm | 202240 |
3153+ | f64mm | 202240 |
3154+ | sve2-aes | 202240 |
3155+ | sve2-bitperm | 202240 |
3156+ | sve2-sha3 | 202240 |
3157+ | sve2-sm4 | 202240 |
3158+ | memtag | 202240 |
3159+ | wfxt | 202240 |
3160+ | sme2 | 202240 |
3161+ | rcpc3 | **202320** |
3162+ | sme-f64f64 | 202320 |
3163+ | sme-i16i64 | 202320 |
3164+ | rdma | **202410** |
3165+ | mops | 202410 |
3166+ | cssc | **202520** |
3167+
31333168### Dependencies
31343169
31353170If a feature depends on another feature as defined by the following table then:
0 commit comments