Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 46 additions & 52 deletions main/acle.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,37 +116,28 @@ about Arm’s trademarks.

## About this document

### Support levels
### Maturity levels

The following support level definitions are used by the ACLE
specifications:
The following maturity levels are used by the ACLE specifications:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The following maturity levels are used by the ACLE specifications:
All features have one of the following maturity levels. When no maturity level is specified, the feature is considered complete.

Keeps the relevant clauses together.


**Release**

Arm considers this specification to have enough implementations,
which have received sufficient testing, to verify that it is
correct. The details of these criteria are dependent on the scale
and complexity of the change over previous versions: small, simple
changes might only require one implementation, but more complex
changes require multiple independent implementations, which have
been rigorously tested for cross-compatibility. Arm anticipates that
future changes to this specification will be limited to
typographical corrections, clarifications and compatible extensions.
**Alpha**

**Beta**
The content of this specification is a draft, and Arm considers the
likelihood of future incompatible changes to be significant.
Implementations may be developed to evaluate its feasibility and correctness.
Implementors may choose not to define the feature macro to indicate
that the specification is not fully supported.
Comment on lines +126 to +129

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps worth mentioning the feature can be removed?


Arm considers this specification to be complete, but existing
implementations do not meet the requirements for confidence in its
release quality. Arm might need to make incompatible changes if issues
emerge from its implementation.
**Complete**

**Alpha**
Arm considers this specification to be complete. In practice, that means that
the specification is implemented in major compilers and sufficient time has
passed since the specification was last changed.
Arm anticipates that future changes to this specification will be limited to
typographical corrections, clarifications and compatible extensions.
Comment on lines +133 to +137

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure we should describe how we get to the complete stage. Perhaps just say what it means, specifically that any changes will be backward compatible.

Is it worth adding advice to the "Maturity levels" chapter for what a user of a feature at Alpha maturity level can do to signal their desire to use it in production code? Perhaps raise a GitHub issue?


The content of this specification is a draft, and Arm considers the
likelihood of future incompatible changes to be significant.

All content in this document is at the **Release** quality level,
unless a different support level is specified in the text.
All content in this document is considered to be at the **Complete** maturity
level, unless a different maturity level is specified in the text.

### Continuously updated specification

Expand All @@ -157,23 +148,26 @@ See [Changelog for year 2026](#changelog-for-year-2026).

### Changelog for year 2026

* Added [**Alpha**](#support-levels)
* Replace ACLE specification support levels with maturity levels,
and removed **Beta** support level.
support level.
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3), SME2.3 (FEAT_SME2p3), FEAT_F16F32DOT
dot product intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for FEAT_F16F32MM, FEAT_F16MM and FEAT_SVE_B16MM mmla intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 lookup table intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 pairwise operation intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 conversion intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 absolute difference accumulation
intrinsics.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.3 (FEAT_SVE2p3) and SME2.3 shift right narrow intrinsics.
* Changed the support level for the Armv9.6 intrinsics implementation to [**Beta**](#support-levels)
* Changed the support level for the Armv9.6 intrinsics implementation to **Beta**.
* Added support for producer-consumer data placement hints.
* Clarified interaction between SME keyword attributes and a common compiler
extension whereby type attributes can be inherited between subsequent
Expand Down Expand Up @@ -319,7 +313,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
specifying the `FEAT_*` tag they refer to from the Arm Architectural
Reference Manual.
* Sorted the items in [References](#references).
* Changed the wording of **Beta** in [support levels](#support-levels).
* Changed the wording of **Beta** in the support-level definitions.
* Sorted the table in [Terms and abbreviations](#terms-and-abbreviations).
* Formatted `memcpy`, `memmove` and `memset` with fixed-width font all
throughout the document.
Expand Down Expand Up @@ -350,7 +344,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin

#### Changes between ACLE Q2 2022 and ACLE Q4 2022

* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
[support for SME](#arm_sme.h).
* Added feature detection macro `__ARM_FEATURE_RCPC` for RCpc (Release Consistent processor consistent) model at [RCpc](#rcpc).
* Added two new valid values to the
Expand Down Expand Up @@ -422,7 +416,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
#### Changes between ACLE Q1 2024 and ACLE Q2 2024
* Added new content for the handling of arguments in CMSE Entry functions and
return values of CMSE Non-secure calls in order to address security issues.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.1 (FEAT_SVE2p1).

#### Changes between ACLE Q2 2024 and ACLE Q3 2024
Expand All @@ -433,14 +427,14 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
level of the [Function Multi Versioning](#function-multi-versioning).
* Unified Function Multi Versioning features sha1 and sha2.
* Unified Function Multi Versioning features ls64, ls64_v, and ls64_accdata.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SME2.1 (FEAT_SME2p1).
* Removed requirement to add preprocessor guards for header files.
* Added specifications for floating-point absolute minimum
and maximum intrinsics (FEAT_FAMINMAX).
* Added specifications for table lookup intrinsics (FEAT_LUT, FEAT_SME_LUTv2).
* Added Release support level for the [Custom Datapath Extension](#custom-datapath-extension).
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for modal 8-bit floating point intrinsics.

#### Changes between ACLE Q3 2024 and ACLE Q4 2024
Expand Down Expand Up @@ -473,19 +467,19 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
* Added mf8 variants of SME 2.1 intrinsics.
* Added `svdot[_n_f16_mf8]_fpm` and `svdot[_n_f32_mf8]_fpm`.
* Added Guarded Control Stack (GCS) at
[**Beta**](#support-levels) quality level.
**Beta** quality level.

#### Changes between ACLE Q4 2024 and ACLE Q2 2025

* Changed the Function Multi Versioning default version rules to be more explicit.
* Added [**Alpha**](#support-levels) support
* Added [**Alpha**](#maturity-levels) support
for structured sparsity outer product intrinsics
* Added [**Alpha**](#support-levels) support
* Added [**Alpha**](#maturity-levels) support
for quarter-tile outer product intrinsics.
* Removed the priority column from the mapping tables of Function Multi Versioning.
* Added Function Multi Versioning feature cssc.
* Added feature test macro for FEAT_SSVE_BitPerm.
* Upgrade to [**Beta**](#support-levels)
* Upgrade to **Beta**
support for modal 8-bit floating point intrinsics.

#### Changes between ACLE Q2 2025 and ACLE Q3 2025
Expand All @@ -504,15 +498,15 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
* Improved documentation for VMLA/VMLS intrinsics for floats.
* Added support for producer-consumer data placement hints.
* Added support for range prefetch intrinsic and `__ARM_PREFETCH_RANGE` macro.
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SVE2.2 (FEAT_SVE2p2)
* Added [**Alpha**](#support-levels)
* Added [**Alpha**](#maturity-levels)
support for SME2.2 (FEAT_SME2p2).
* Added [**Alpha**](#support-levels) support
* Added [**Alpha**](#maturity-levels) support
for FEAT_SVE_AES2, FEAT_SSVE_AES intrinsics.
* Added support for FEAT_FPRCVT intrinsics and `__ARM_FEATURE_FPRCVT`.
* Removed all references to Transactional Memory Extension (TME).
* Added [**Alpha**](#support-levels) support
* Added [**Alpha**](#maturity-levels) support
for Brain 16-bit floating-point vector multiplication intrinsics.
* Redesigned atomic store with hints intrinsics.

Expand Down Expand Up @@ -2185,7 +2179,7 @@ of half-precision brain floating-point types.
#### Brain 16-bit floating-point matrix multiplication support

This section is in
[**Alpha** state](#support-levels) and might change or be
[**Alpha** state](#maturity-levels) and might change or be
extended in the future.

`__ARM_FEATURE_SVE_B16MM` is defined to `1` if there is hardware
Expand Down Expand Up @@ -2416,8 +2410,8 @@ this implies:

#### Half-precision to single-precision dot product extension

This section is in
[**Alpha** state](#support-levels) and might change or be
This section is at

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've only changed one of many instances?

I'm not sure it's worth changing but if you really want to then I think This feature's maturity level is [***Alpha***]. reads better. I'd also remove the "and might change....." part because that should be clear when reading what a maturity level of Alpha means.

[**Alpha** state](#maturity-levels) and might change or be
extended in the future.

`__ARM_FEATURE_F16F32DOT` is defined if the half-precision dot product
Expand Down Expand Up @@ -2474,7 +2468,7 @@ for the SVE 16-bit floating-point to 32-bit floating-point matrix multiply and a
##### Multiplication of 16-bit floating-point matrices (AdvSIMD)

This section is in
[**Alpha** state](#support-levels) and might change or be
[**Alpha** state](#maturity-levels) and might change or be
extended in the future.

`__ARM_FEATURE_F16F32MM` is defined if the Neon half-precision matrix multiply
Expand Down Expand Up @@ -14156,8 +14150,8 @@ Scalar index of first/last true predicate element (predicated).

### SVE2.3 and SME2.3 instruction intrinsics

The specification for SVE2.3 and SME2.3 are in
[**Alpha** state](#support-levels) and might change or be
The specifications for SVE2.3 and SME2.3 are in
[**Alpha** state](#maturity-levels) and might change or be
extended in the future.

The functions in this section are available when `__ARM_FEATURE_SVE2p3`
Expand Down
Loading