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>
This commit is contained in:
committed by
Boringssl LUCI CQ
parent
9e40481d5b
commit
f2a3aae4ac
@@ -73,24 +73,17 @@ OPENSSL_INLINE int sha1_hw_capable(void) {
|
||||
|
||||
#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 @@ OPENSSL_INLINE int sha256_hw_capable(void) {
|
||||
|
||||
#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 @@ void sha256_block_data_order_ssse3(uint32_t *state, const uint8_t *data,
|
||||
|
||||
#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);
|
||||
|
||||
Reference in New Issue
Block a user