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;