Skip to content

Commit 9fdf5bf

Browse files
committed
[FMV] Unify aes with pmull and sve2-aes with sve2-pmull128.
I originally tried splitting these features (see relevant pull reguest llvm/llvm-project#110816), but the following came to my attention: According to https://developer.arm.com/documentation/ddi0487/latest Arm Architecture Reference Manual for A-profile architecture: D23.2.83 ID_AA64ZFR0_EL1, SVE Feature ID Register 0 ID_AA64ZFR0_EL1.AES, bits [7:4] > FEAT_SVE_AES implements the functionality identified by the value 0b0001. > FEAT_SVE_PMULL128 implements the functionality identified by the value 0b0010. > The permitted values are 0b0000 and 0b0010. Andrew Carlotti suggests that the same applies for ID_AA64ISAR0_EL1.AES (llvm/llvm-project#110816 (comment)) D19.2.61 ID_AA64ISAR0_EL1, AArch64 Instruction Set Attribute Register 0 ID_AA64ISAR0_EL1.AES, bits [7:4] > FEAT_AES implements the functionality identified by the value 0b0001. > FEAT_PMULL implements the functionality identified by the value 0b0010. > From Armv8, the permitted values are 0b0000 and 0b0010. This was removed from the latest release of the Arm Architecture Reference Manual, but it appears to be a mistake that was not intended to relax the architecture constraints. The discrepancy has been reported.
1 parent 677e365 commit 9fdf5bf

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

main/acle.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,8 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
403403
level of the [Function Multi Versioning](#function-multi-versioning).
404404
* Unified Function Multi Versioning features sha1 and sha2.
405405
* Unified Function Multi Versioning features ls64, ls64_v, and ls64_accdata.
406+
* Unified Function Multi Versioning features aes and pmull.
407+
* Unified Function Multi Versioning features sve2-aes and sve2-pmull128.
406408
* Added [**Alpha**](#current-status-and-anticipated-changes)
407409
support for SME2.1 (FEAT_SME2p1).
408410
* Removed requirement to add preprocessor guards for header files.
@@ -2779,8 +2781,7 @@ The following table lists the architectures feature mapping for AArch64
27792781
| 110 | `FEAT_CRC32` | crc | ```ID_AA64ISAR0_EL1.CRC32 >= 0b0001``` |
27802782
| 130 | `FEAT_SHA1`, `FEAT_SHA256` | sha2 | ```ID_AA64ISAR0_EL1.SHA2 >= 0b0001``` |
27812783
| 140 | `FEAT_SHA512`, `FEAT_SHA3` | sha3 | ```ID_AA64ISAR0_EL1.SHA3 >= 0b0001``` |
2782-
| 150 | `FEAT_AES` | aes | ```ID_AA64ISAR0_EL1.AES >= 0b0001``` |
2783-
| 160 | `FEAT_PMULL` | pmull | ```ID_AA64ISAR0_EL1.AES >= 0b0010``` |
2784+
| 150 | `FEAT_AES`, `FEAT_PMULL` | aes | ```ID_AA64ISAR0_EL1.AES >= 0b0010``` |
27842785
| 170 | `FEAT_FP16` | fp16 | ```ID_AA64PFR0_EL1.FP == 0b0001``` |
27852786
| 175 | `FEAT_FHM` | fp16fml | ```ID_AA64ISAR0_EL1.FHM >= 0b0001``` |
27862787
| 180 | `FEAT_DIT` | dit | ```ID_AA64PFR0_EL1.DIT >= 0b0001``` |
@@ -2804,8 +2805,7 @@ The following table lists the architectures feature mapping for AArch64
28042805
| 350 | `FEAT_F32MM` | f32mm | ```ID_AA64ZFR0_EL1.F32MM >= 0b00001``` |
28052806
| 360 | `FEAT_F64MM` | f64mm | ```ID_AA64ZFR0_EL1.F64MM >= 0b00001``` |
28062807
| 370 | `FEAT_SVE2` | sve2 | ```ID_AA64ZFR0_EL1.SVEver >= 0b0001``` |
2807-
| 380 | `FEAT_SVE_AES` | sve2-aes | ```ID_AA64ZFR0_EL1.AES >= 0b0001``` |
2808-
| 390 | `FEAT_SVE_PMULL128` | sve2-pmull128 | ```ID_AA64ZFR0_EL1.AES >= 0b0010``` |
2808+
| 380 | `FEAT_SVE_AES`, <br> `FEAT_SVE_PMULL128` | sve2-aes | ```ID_AA64ZFR0_EL1.AES >= 0b0010``` |
28092809
| 400 | `FEAT_SVE_BitPerm` | sve2-bitperm | ```ID_AA64ZFR0_EL1.BitPerm >= 0b0001``` |
28102810
| 410 | `FEAT_SVE_SHA3` | sve2-sha3 | ```ID_AA64ZFR0_EL1.SHA3 >= 0b0001``` |
28112811
| 420 | `FEAT_SM3`, `FEAT_SVE_SM4` | sve2-sm4 | ```ID_AA64ZFR0_EL1.SM4 >= 0b0001``` |

0 commit comments

Comments
 (0)