ARM-software / acle

Arm C Language Extensions (ACLE)
Other
89 stars 58 forks source link

[FMV] Unify sha1, sha2. #347

Closed labrinea closed 2 months ago

labrinea commented 2 months ago

According to ArmARM:

SHA2, bits [15:12] 0b0000 No SHA2 instructions implemented. FEAT_SHA256 implements the functionality identified by the value 0b0001. If the value of ID_AA64ISAR0_EL1.SHA1 is 0b0000, this field must have the value 0b0000.

SHA1, bits [11:8] 0b0000 No SHA1 instructions implemented. FEAT_SHA1 implements the functionality identified by the value 0b0001. If the value of ID_AA64ISAR0_EL1.SHA2 is 0b0000, this field must have the value 0b0000.

To my understanding this means you can't have one without the other.


name: Pull request about: Technical issues, document format problems, bugs in scripts or feature proposal.


Thank you for submitting a pull request!

If this PR is about a bugfix:

Please use the bugfix label and make sure to go through the checklist below.

If this PR is about a proposal:

We are looking forward to evaluate your proposal, and if possible to make it part of the Arm C Language Extension (ACLE) specifications.

We would like to encourage you reading through the contribution guidelines, in particular the section on submitting a proposal.

Please use the proposal label.

As for any pull request, please make sure to go through the below checklist.

Checklist: (mark with X those which apply)

labrinea commented 2 months ago

@DanielKristofKiss @jroelofs @tmatheson-arm @andrewcarlotti

andrewcarlotti commented 2 months ago

LGTM.

DanielKristofKiss commented 2 months ago

SHA2, bits [15:12] 0b0000 No SHA2 instructions implemented. FEAT_SHA256 implements the functionality identified by the value 0b0001. If the value of ID_AA64ISAR0_EL1.SHA1 is 0b0000, this field must have the value 0b0000.

SHA1, bits [11:8] 0b0000 No SHA1 instructions implemented. FEAT_SHA1 implements the functionality identified by the value 0b0001. If the value of ID_AA64ISAR0_EL1.SHA2 is 0b0000, this field must have the value 0b0000.

There is no rule to mandate FEAT_SHA256 if FEAT_SHA1 is implemented. Sure you can't have FEAT_SHA256 without FEAT_SHA1.

https://docs.kernel.org/arch/arm64/elf_hwcaps.html https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics

both kernel reports them separately.

labrinea commented 2 months ago

Sure you can't have FEAT_SHA256 without FEAT_SHA1

I came to the same conclusion when reading "If the value of ID_AA64ISAR0_EL1.SHA1 is 0b0000, this field must have the value 0b0000".

But this line "If the value of ID_AA64ISAR0_EL1.SHA2 is 0b0000, this field must have the value 0b0000" makes me think that you can't have FEAT_SHA1 without FEAT_SHA256.

https://docs.kernel.org/arch/arm64/elf_hwcaps.html https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics both kernel reports them separately.

The kernel also reports SM3 and SM4 separately but they are lumped in FMV. So as SHA512 and SHA3. Why is that?