From aec07f825f32918507e0baabfc149afc1b59cff7 Mon Sep 17 00:00:00 2001 From: Marian Lukac Date: Thu, 16 Jul 2026 13:07:56 +0000 Subject: [PATCH 1/4] [FMV] Add support for more features --- main/acle.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/main/acle.md b/main/acle.md index 470abd48..1d4e70b0 100644 --- a/main/acle.md +++ b/main/acle.md @@ -3130,6 +3130,21 @@ The following table lists the architectures feature mapping for AArch64. | `FEAT_SME2` | sme2 | ```ID_AA64PFR1_EL1.SMEver >= 0b0001``` | | `FEAT_MOPS` | mops | ```ID_AA64ISAR2_EL1.MOPS >= 0b0001``` | | `FEAT_CSSC` | cssc | ```ID_AA64ISAR2_EL1.CSSC >= 0b0001``` | + | `FEAT_FP8` | fp8 | ```ID_AA64FPFR0_EL1.F8CVT == 0b1``` | + | `FEAT_F8F32MM` | f8f32mm | ```ID_AA64FPFR0_EL1.F8MM8 == 0b1``` | + | `FEAT_FP8DOT4` | fp8dot4 | ```ID_AA64FPFR0_EL1.F8DP4 == 0b1``` | + | `FEAT_FP8FMA` | fp8fma | ```ID_AA64FPFR0_EL1.F8FMA == 0b1``` | + | `FEAT_SME_F8F32` | sme-f8f32 | ```ID_AA64SMFR0_EL1.F8F32 == 0b1``` | + | `FEAT_SSVE_FP8DOT4` | ssve-fp8dot4 | ```ID_AA64SMFR0_EL1.SF8DP4 == 0b1``` | + | `FEAT_SSVE_FP8FMA` | ssve-fp8fma | ```ID_AA64SMFR0_EL1.SF8FMA == 0b1``` | + | `FEAT_SSVE_BitPerm` | ssve-bitperm | ```ID_AA64SMFR0_EL1.SBitPerm == 0b1``` | + | `FEAT_LUT` | lut | ```ID_AA64ISAR2_EL1.LUT >= 0b0001``` | + | `FEAT_FAMINMAX` | faminmax | ```ID_AA64ISAR3_EL1.FAMINMAX >= 0b0001``` | + | `FEAT_SME_LUTv2` | sme-lutv2 | ```ID_AA64SMFR0_EL1.LUTv2 == 0b1``` | + | `FEAT_SME2p1` | sme2p1 | ```ID_AA64SMFR0_EL1.SMEver >= 0b0010``` | + | `FEAT_SME2p2` | sme2p2 | ```ID_AA64SMFR0_EL1.SMEver >= 0b0011``` | + | `FEAT_SVE2p1` | sve2p1 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0010``` | + | `FEAT_SVE2p2` | sve2p2 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0011``` | The tables are sorted by priority, starting from features of lowest priority ending with features of highest priority. @@ -3177,6 +3192,21 @@ The following table lists the feature dependencies for AArch64. | sme-f64f64 | sme | | sme-i16i64 | sme | | sme2 | sme | + | fp8 | simd | + | f8f32mm | simd, fp8 | + | fp8dot4 | fp8 | + | fp8fma | fp8 | + | sme-f8f32 | sme2, fp8 | + | ssve-fp8dot4 | sme2, fp8 | + | ssve-fp8fma | sme2, fp8 | + | ssve-bitperm | sme2 | + | lut | simd | + | faminmax | simd | + | sme-lutv2 | sme2 | + | sme2p1 | sme2 | + | sme2p2 | sme2p1 | + | sve2p1 | sve2 | + | sve2p2 | sve2p1 | ### Selection From 3c2191de0a32e4bb143cb9e0bde7c20de652d367 Mon Sep 17 00:00:00 2001 From: Marian Lukac Date: Thu, 16 Jul 2026 13:10:44 +0000 Subject: [PATCH 2/4] Add changelog --- main/acle.md | 1 + 1 file changed, 1 insertion(+) diff --git a/main/acle.md b/main/acle.md index 1d4e70b0..42ec56eb 100644 --- a/main/acle.md +++ b/main/acle.md @@ -513,6 +513,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin * Clarified interaction between SME keyword attributes and a common compiler extension whereby type attributes can be inherited between subsequent duplicate decls. +* Added Function Multi Versioning support for more features. ### References From 126c4fb424fe71636bb8a0d758dc87218f8d57db Mon Sep 17 00:00:00 2001 From: Marian Lukac Date: Wed, 5 Aug 2026 17:23:06 +0000 Subject: [PATCH 3/4] Add aditional features --- main/acle.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/main/acle.md b/main/acle.md index 42ec56eb..ac2555f4 100644 --- a/main/acle.md +++ b/main/acle.md @@ -3146,6 +3146,16 @@ The following table lists the architectures feature mapping for AArch64. | `FEAT_SME2p2` | sme2p2 | ```ID_AA64SMFR0_EL1.SMEver >= 0b0011``` | | `FEAT_SVE2p1` | sve2p1 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0010``` | | `FEAT_SVE2p2` | sve2p2 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0011``` | + | `FEAT_SME_F16F16` | sme-f16f16 | ```ID_AA64SMFR0_EL1.F16F16 == 0b1``` | + | `FEAT_GCS` | gcs | ```ID_AA64PFR1_EL1.GCS >= 0b0001``` | + | `FEAT_D128` | d128 | ```ID_AA64MMFR3_EL1.D128 >= 0b0001``` | + | `FEAT_FP8DOT2` | fp8dot2 | ```ID_AA64FPFR0_EL1.F8DP2 == 0b1``` | + | `FEAT_SME_F8F16` | sme-f8f16 | ```ID_AA64SMFR0_EL1.F8F16 == 0b1``` | + | `FEAT_F8F16MM` | f8f16mm | ```ID_AA64FPFR0_EL1.F8MM4 == 0b1``` | + | `FEAT_SVE_AES2` | sve-aes2 | ```ID_AA64ZFR0_EL1.AES >= 0b0011``` | + | `FEAT_SVE_BFSCALE` | sve-bfscale | ```ID_AA64ZFR0_EL1.B16B16 >= 0b0010``` | + | `FEAT_SVE_F16F32MM` | sve-f16f32mm | ```ID_AA64ZFR0_EL1.F16MM >= 0b0001``` | + | `FEAT_SME_MOP4` | sme-mop4 | ```ID_AA64SMFR0_EL1.SMOP4 == 0b1``` | The tables are sorted by priority, starting from features of lowest priority ending with features of highest priority. @@ -3208,6 +3218,13 @@ The following table lists the feature dependencies for AArch64. | sme2p2 | sme2p1 | | sve2p1 | sve2 | | sve2p2 | sve2p1 | + | sme-f16f16 | sme2 | + | d128 | lse | + | fp8dot2 | fp8 | + | sme-f8f16 | sme2, fp8 | + | f8f16mm | simd, fp8 | + | sve-f16f32mm | sve | + | sme-mop4 | sme2 | ### Selection From da5f87696aaf504134ce3eced1867477350359f6 Mon Sep 17 00:00:00 2001 From: Marian Lukac Date: Tue, 25 Aug 2026 13:34:11 +0000 Subject: [PATCH 4/4] Fix register checks and add new version --- main/acle.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/main/acle.md b/main/acle.md index ffdb8eb2..7c52d5e3 100644 --- a/main/acle.md +++ b/main/acle.md @@ -3113,10 +3113,10 @@ The following table lists the architectures feature mapping for AArch64. | `FEAT_LUT` | lut | ```ID_AA64ISAR2_EL1.LUT >= 0b0001``` | | `FEAT_FAMINMAX` | faminmax | ```ID_AA64ISAR3_EL1.FAMINMAX >= 0b0001``` | | `FEAT_SME_LUTv2` | sme-lutv2 | ```ID_AA64SMFR0_EL1.LUTv2 == 0b1``` | - | `FEAT_SME2p1` | sme2p1 | ```ID_AA64SMFR0_EL1.SMEver >= 0b0010``` | - | `FEAT_SME2p2` | sme2p2 | ```ID_AA64SMFR0_EL1.SMEver >= 0b0011``` | - | `FEAT_SVE2p1` | sve2p1 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0010``` | - | `FEAT_SVE2p2` | sve2p2 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0011``` | + | `FEAT_SME2p1` | sme2p1 | ```ID_AA64PFR1_EL1.SME >= 0b0001 && ID_AA64SMFR0_EL1.SMEver >= 0b0010```| + | `FEAT_SME2p2` | sme2p2 | ```ID_AA64PFR1_EL1.SME >= 0b0001 && ID_AA64SMFR0_EL1.SMEver >= 0b0011```| + | `FEAT_SVE2p1` | sve2p1 | ```ID_AA64PFR0_EL1.SVE >= 0b0001 && ID_AA64ZFR0_EL1.SVEver >= 0b0010```| + | `FEAT_SVE2p2` | sve2p2 | ```ID_AA64PFR0_EL1.SVE >= 0b0001 && ID_AA64ZFR0_EL1.SVEver >= 0b0011```| | `FEAT_SME_F16F16` | sme-f16f16 | ```ID_AA64SMFR0_EL1.F16F16 == 0b1``` | | `FEAT_GCS` | gcs | ```ID_AA64PFR1_EL1.GCS >= 0b0001``` | | `FEAT_D128` | d128 | ```ID_AA64MMFR3_EL1.D128 >= 0b0001``` | @@ -3194,6 +3194,31 @@ unless otherwise specified. | rdma | **202410** | | mops | 202410 | | cssc | **202520** | + | fp8 | **202690** | + | f8f32mm | 202690 | + | fp8dot4 | 202690 | + | fp8fma | 202690 | + | sme-f8f32 | 202690 | + | ssve-fp8dot4 | 202690 | + | ssve-fp8fma | 202690 | + | ssve-bitperm | 202690 | + | lut | 202690 | + | faminmax | 202690 | + | sme-lutv2 | 202690 | + | sme2p1 | 202690 | + | sme2p2 | 202690 | + | sve2p1 | 202690 | + | sve2p2 | 202690 | + | sme-f16f16 | 202690 | + | gcs | 202690 | + | d128 | 202690 | + | fp8dot2 | 202690 | + | sme-f8f16 | 202690 | + | f8f16mm | 202690 | + | sve-aes2 | 202690 | + | sve-bfscale | 202690 | + | sve-f16f32mm | 202690 | + | sme-mop4 | 202690 | ### Dependencies