Skip to content

Commit

Permalink
[FMV] Unify ls64, ls64_v and ls64_accdata.
Browse files Browse the repository at this point in the history
As originally discussed in ARM-software#315 and then in ARM-software#329 we want to unify
features that the toolchains cannot support independently. In the
case of ls64 I have attempted to split the lumped feature in the
compiler (see llvm/llvm-project#101712),
but unfortunately this would break backwards compatibility:

Mapping 'ls64' to FeatureLS64_ACCDATA would enable all three of
{FeatureLS64, FeatureLS64_V, FeatureLS64_ACCDATA} but then using
'nols64' either on the command line or the assembler directive
would only disable FeatureLS64_ACCDATA without disabling the
other two. For that we would have to map 'ls64' to FeatureLS64,
but then it would not enable the other two.

As far as I am aware there are no hardware implementations out
there which implement ls64 without ls64_v or ls64_accdata, so
unifying these features in the specification should not be a
regression for feature detection. If any of this changes in
the feature we can revisit the specification.
  • Loading branch information
labrinea committed Sep 12, 2024
1 parent 9517c92 commit 35435ef
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions main/acle.md
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
* Added `__FUNCTION_MULTI_VERSIONING_SUPPORT_LEVEL` to indicate the support
level of the [Function Multi Versioning](#function-multi-versioning).
* Unified Function Multi Versioning features sha1, sha2.
* Unified Function Multi Versioning features ls64, ls64_v, ls64_accdata.
* Added [**Alpha**](#current-status-and-anticipated-changes)
support for SME2.1 (FEAT_SME2p1).
* Removed requirement to add preprocessor guards for header files.
Expand Down Expand Up @@ -2755,9 +2756,7 @@ The following table lists the architectures feature mapping for AArch64
| 490 | `FEAT_SSBS` | ssbs | ```ID_AA64PFR1_EL1.SSBS >= 0b0001``` |
| 500 | `FEAT_SSBS2` | ssbs2 | ```ID_AA64PFR1_EL1.SSBS >= 0b0010``` |
| 510 | `FEAT_BTI` | bti | ```ID_AA64PFR1_EL1.BT >= 0b0001``` |
| 520 | `FEAT_LS64` | ls64 | ```ID_AA64ISAR1_EL1.LS64 >= 0b0001``` |
| 530 | `FEAT_LS64_V` | ls64_v | ```ID_AA64ISAR1_EL1.LS64 >= 0b0010``` |
| 540 | `FEAT_LS64_ACCDATA` | ls64_accdata | ```ID_AA64ISAR1_EL1.LS64 >= 0b0011``` |
| 520 | `FEAT_LS64`, `FEAT_LS64_V`, <br> `FEAT_LS64_ACCDATA` | ls64 | ```ID_AA64ISAR1_EL1.LS64 >= 0b0011``` |
| 550 | `FEAT_WFxT` | wfxt | ```ID_AA64ISAR2_EL1.WFxT >= 0b0010``` |
| 560 | `FEAT_SME_F64F64` | sme-f64f64 | ```ID_AA64SMFR0_EL1.F64F64 == 0b1``` |
| 570 | `FEAT_SME_I16I64` | sme-i16i64 | ```ID_AA64SMFR0_EL1.I16I64 == 0b1111``` |
Expand Down

0 comments on commit 35435ef

Please sign in to comment.