Add ARMV8_SHA512 detection for Fuchsia.

See https://fuchsia-review.googlesource.com/c/fuchsia/+/624684. Also
pick up the new, more specific, name for ZX_ARM64_FEATURE_ISA_SHA2.

Update-Note: This CL is written assuming we can just rely on the SDK
changes. Per go/fuchsia-sdk-age, this seems fairly safe. If this file
fails to build due to missing symbols, update your project's Fuchsia
SDK. If this blocks something, let us know.

Change-Id: I28b0c234b577cc0de90e7ef096c15bb75a4ba501
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/50926
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/cpu_aarch64_fuchsia.c b/crypto/cpu_aarch64_fuchsia.c
index 4d97f03..64bc448 100644
--- a/crypto/cpu_aarch64_fuchsia.c
+++ b/crypto/cpu_aarch64_fuchsia.c
@@ -29,8 +29,8 @@
   uint32_t hwcap;
   zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &hwcap);
   if (rc != ZX_OK || (hwcap & ZX_ARM64_FEATURE_ISA_ASIMD) == 0) {
-    // Matching OpenSSL, if NEON/ASIMD is missing, don't report other features
-    // either.
+    // If NEON/ASIMD is missing, don't report other features either. This
+    // matches OpenSSL, and the other features depend on SIMD registers.
     return;
   }
 
@@ -45,12 +45,12 @@
   if (hwcap & ZX_ARM64_FEATURE_ISA_SHA1) {
     OPENSSL_armcap_P |= ARMV8_SHA1;
   }
-  if (hwcap & ZX_ARM64_FEATURE_ISA_SHA2) {
+  if (hwcap & ZX_ARM64_FEATURE_ISA_SHA256) {
     OPENSSL_armcap_P |= ARMV8_SHA256;
   }
-  // As of writing, Fuchsia does not have a flag for ARMv8.2 SHA-512
-  // extensions. When it does, add it here. See
-  // https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=90759.
+  if (hwcap & ZX_ARM64_FEATURE_ISA_SHA512) {
+    OPENSSL_armcap_P |= ARMV8_SHA512;
+  }
 }
 
 #endif  // OPENSSL_AARCH64 && OPENSSL_FUCHSIA && !OPENSSL_STATIC_ARMCAP