From 4d89c7f371b2b932aa7cc02876f064bbddfe8a7d Mon Sep 17 00:00:00 2001 From: Andrew Carlotti Date: Mon, 2 Dec 2024 17:52:52 +0000 Subject: [PATCH] Simplify FMV version selection rules The existing version selection rules are unclear, underspecified, and result in unintuitive version orderings. Replace this with a simpler explicit selection algorithm. --- main/acle.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/main/acle.md b/main/acle.md index 232b8ba1..2c1de967 100644 --- a/main/acle.md +++ b/main/acle.md @@ -422,6 +422,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin * Removed Function Multi Versioning features sve-bf16, sve-ebf16, and sve-i8mm. * Removed Function Multi Versioning features ebf16, memtag3, and rpres. * Removed Function Multi Versioning feature dgh. +* 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`. @@ -2837,14 +2838,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