sha: Remove check for SSSE3 for AVX variants. I verified using Intel XED that all the non-base instructions are classified as AVX for the _avx variants or AVX/AVX2/BMI/BMI2 for sha1_block_data_order_avx2. Change-Id: Id0b744369ff81521d33230bf337e4dff963aecd4 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/64547 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: Bob Beck <bbe@google.com> Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/crypto/fipsmodule/sha/internal.h b/crypto/fipsmodule/sha/internal.h index 7dbab6b..28975e1 100644 --- a/crypto/fipsmodule/sha/internal.h +++ b/crypto/fipsmodule/sha/internal.h
@@ -73,24 +73,17 @@ #define SHA1_ASM_AVX2 OPENSSL_INLINE int sha1_avx2_capable(void) { - // TODO: Simplify this logic, which was extracted from the assembly: - // * Does AVX2 imply SSSE3? - // * sha1_block_data_order_avx2 does not seem to use SSSE3 instructions. return CRYPTO_is_AVX2_capable() && CRYPTO_is_BMI2_capable() && - CRYPTO_is_BMI1_capable() && CRYPTO_is_SSSE3_capable(); + CRYPTO_is_BMI1_capable(); } void sha1_block_data_order_avx2(uint32_t *state, const uint8_t *data, size_t num); #define SHA1_ASM_AVX OPENSSL_INLINE int sha1_avx_capable(void) { - // TODO: Simplify this logic, which was extracted from the assembly: - // * Does AVX imply SSSE3? - // * sha1_block_data_order_avx does not seem to use SSSE3 instructions. // Pre-Zen AMD CPUs had slow SHLD/SHRD; Zen added the SHA extension; see the // discussion in sha1-586.pl. - return CRYPTO_is_AVX_capable() && CRYPTO_is_SSSE3_capable() && - CRYPTO_is_intel_cpu(); + return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } void sha1_block_data_order_avx(uint32_t *state, const uint8_t *data, size_t num); @@ -109,13 +102,9 @@ #define SHA256_ASM_AVX OPENSSL_INLINE int sha256_avx_capable(void) { - // TODO: Simplify this logic, which was extracted from the assembly: - // * Does AVX imply SSSE3? - // * sha256_block_data_order_avx does not seem to use SSSE3 instructions. // Pre-Zen AMD CPUs had slow SHLD/SHRD; Zen added the SHA extension; see the // discussion in sha1-586.pl. - return CRYPTO_is_AVX_capable() && CRYPTO_is_SSSE3_capable() && - CRYPTO_is_intel_cpu(); + return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } void sha256_block_data_order_avx(uint32_t *state, const uint8_t *data, size_t num); @@ -129,13 +118,9 @@ #define SHA512_ASM_AVX OPENSSL_INLINE int sha512_avx_capable(void) { - // TODO: Simplify this logic, which was extracted from the assembly: - // * Does AVX imply SSSE3? - // * sha512_block_data_order_avx does not seem to use SSSE3 instructions. // Pre-Zen AMD CPUs had slow SHLD/SHRD; Zen added the SHA extension; see the // discussion in sha1-586.pl. - return CRYPTO_is_AVX_capable() && CRYPTO_is_SSSE3_capable() && - CRYPTO_is_intel_cpu(); + return CRYPTO_is_AVX_capable() && CRYPTO_is_intel_cpu(); } void sha512_block_data_order_avx(uint64_t *state, const uint8_t *data, size_t num);