Update with `ARMV8_HAVE_SHA3_AND_WORTH_USING`
authorsdlyyxy <sdlyyxy@icloud.com>
Sat, 15 Jul 2023 15:26:05 +0000 (23:26 +0800)
committerPauli <pauli@openssl.org>
Fri, 21 Jul 2023 00:19:19 +0000 (10:19 +1000)
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21398)

crypto/arm_arch.h
crypto/armcap.c
providers/implementations/digests/sha3_prov.c

index e27838f5d6c06cc78e3dfb1abac9b58c932e52da..ffa619bf49c29a79e7eb81ef6e398c80162fe4ec 100644 (file)
@@ -85,7 +85,7 @@ extern unsigned int OPENSSL_armv8_rsa_neonized;
 # define ARMV8_UNROLL8_EOR3      (1<<12)
 # define ARMV8_SVE       (1<<13)
 # define ARMV8_SVE2      (1<<14)
-# define ARMV8_WORTH_USING_SHA3  (1<<15)
+# define ARMV8_HAVE_SHA3_AND_WORTH_USING     (1<<15)
 
 /*
  * MIDR_EL1 system register
index 8443f8fcbd4a21882103ad95f0bb21e64816db02..3b1447456d71ed058ea7d873d8e3fdbb2282d640 100644 (file)
@@ -300,7 +300,7 @@ void OPENSSL_cpuid_setup(void)
                ((strncmp(uarch, "Apple M1", 8) == 0) ||
                 (strncmp(uarch, "Apple M2", 8) == 0))) {
                 OPENSSL_armcap_P |= ARMV8_UNROLL8_EOR3;
-                OPENSSL_armcap_P |= ARMV8_WORTH_USING_SHA3;
+                OPENSSL_armcap_P |= ARMV8_HAVE_SHA3_AND_WORTH_USING;
             }
         }
     }
@@ -433,7 +433,7 @@ void OPENSSL_cpuid_setup(void)
          MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX) ||
          MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX)) &&
         (OPENSSL_armcap_P & ARMV8_SHA3))
-        OPENSSL_armcap_P |= ARMV8_WORTH_USING_SHA3;
+        OPENSSL_armcap_P |= ARMV8_HAVE_SHA3_AND_WORTH_USING;
 # endif
 }
 #endif /* _WIN32, __ARM_MAX_ARCH__ >= 7 */
index a03df0b7fc608974e44d23d48905ac97952f935d..7bb0bff851946c51e70a815df68762db79744270 100644 (file)
@@ -271,18 +271,14 @@ static PROV_SHA3_METHOD sha3_ARMSHA3_md =
     armsha3_sha3_absorb,
     generic_sha3_final
 };
-/* Users can switch back to the generic code by clearing either of the bits */
-# define ARM_SHA3_CAPABLE                                                      \
-    ((OPENSSL_armcap_P & ARMV8_SHA3) &&                                        \
-     (OPENSSL_armcap_P & ARMV8_WORTH_USING_SHA3))
 # define SHA3_SET_MD(uname, typ)                                               \
-    if (ARM_SHA3_CAPABLE) {                                                    \
+    if (OPENSSL_armcap_P & ARMV8_HAVE_SHA3_AND_WORTH_USING) {                  \
         ctx->meth = sha3_ARMSHA3_md;                                           \
     } else {                                                                   \
         ctx->meth = sha3_generic_md;                                           \
     }
 # define KMAC_SET_MD(bitlen)                                                   \
-    if (ARM_SHA3_CAPABLE) {                                                    \
+    if (OPENSSL_armcap_P & ARMV8_HAVE_SHA3_AND_WORTH_USING) {                  \
         ctx->meth = sha3_ARMSHA3_md;                                           \
     } else {                                                                   \
         ctx->meth = sha3_generic_md;                                           \