Fix sha1 dynamic dispatch issues.
1) We are calling sha1_block_data_order_avx when avx2 is enabled
We should be calling sha1_block_data_order_avx2
2) Looks like clang doesn't define __BMI1__ and calls it simply
__BMI__, see https://godbolt.org/z/s8anxn9rc
This is less of an issue since we will fallback to dynamic dispatch
anyway.
Change-Id: I9821405444c2e39167f1423c5f08bfcbca1efa51
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66827
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/crypto/fipsmodule/sha/sha1.c b/crypto/fipsmodule/sha/sha1.c
index 060baa4..70353a6 100644
--- a/crypto/fipsmodule/sha/sha1.c
+++ b/crypto/fipsmodule/sha/sha1.c
@@ -394,7 +394,7 @@
#endif
#if defined(SHA1_ASM_AVX2)
if (sha1_avx2_capable()) {
- sha1_block_data_order_avx(state, data, num);
+ sha1_block_data_order_avx2(state, data, num);
return;
}
#endif
diff --git a/crypto/internal.h b/crypto/internal.h
index 7d65b5c..aa1436e 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -1446,7 +1446,7 @@
// See Intel manual, volume 2A, table 3-8.
OPENSSL_INLINE int CRYPTO_is_BMI1_capable(void) {
-#if defined(__BMI1__)
+#if defined(__BMI__)
return 1;
#else
return (OPENSSL_get_ia32cap(2) & (1u << 3)) != 0;