Skip to content

Commit

Permalink
Simplify FMV version selection rules (#370)
Browse files Browse the repository at this point in the history
The existing version selection rules are unclear, underspecified, and
result in unintuitive version orderings. Replace this with a simpler
explicit selection algorithm.
  • Loading branch information
andrewcarlotti authored Jan 8, 2025
1 parent afd6b56 commit 7c984aa
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions main/acle.md
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
* Removed Function Multi Versioning features ebf16, memtag3, and rpres.
* Removed Function Multi Versioning feature dgh.
* Document Function Multi Versioning feature dependencies.
* Simplified Function Multi Versioning version selection rules.
* Fixed range of operand `o0` (too small) in AArch64 system register designations.
* Fixed SVE2.1 quadword gather load/scatter store intrinsics.
* Removed unnecessary Zd argument from `svcvtnb_mf8[_f32_x2]_fpm`.
Expand Down Expand Up @@ -2909,14 +2910,11 @@ the selection algorithm is platform dependent, where with platform means
CPU/Vendor/OS as in the target triplet.
2. The selection is permanent for the
lifetime of the process.
3. Only those versions could be considered where all
dependent features are available.

Rules of version selection are in order:

4. Select the most specific version else
5. select the version with the highest priority else
6. `"default"` is selected if no other versions are suitable.
3. Among any two versions, the higher priority version is determined by
identifying the highest priority feature that is specified in exactly one of
the versions, and selecting that version.
4. The selection algorithm must select the highest priority versions whose
dependent features are all available.

## Weak linkage

Expand Down

0 comments on commit 7c984aa

Please sign in to comment.