From: Andy Polyakov Date: Sun, 17 Feb 2019 17:10:12 +0000 (+0100) Subject: sha/keccak1600.c: subscribe more platforms for "complementing" optimization. X-Git-Tag: openssl-3.0.0-alpha1~2501 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7dec815ecde29c1eabed6b5832c7025c4eafad19;p=oweals%2Fopenssl.git sha/keccak1600.c: subscribe more platforms for "complementing" optimization. E.g. on MIPS64 it gives >20% improvement... Reviewed-by: Matt Caswell Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8261) --- diff --git a/crypto/sha/keccak1600.c b/crypto/sha/keccak1600.c index c49c4b3a8d..7aa07552d3 100644 --- a/crypto/sha/keccak1600.c +++ b/crypto/sha/keccak1600.c @@ -25,7 +25,14 @@ void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); # define KECCAK_2X /* default to KECCAK_2X variant */ #endif -#if defined(__i386) || defined(__i386__) || defined(_M_IX86) +#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ + (defined(__x86_64) && !defined(__BMI__)) || defined(_M_X64) || \ + defined(__mips) || defined(__riscv) || defined(__s390__) || \ + defined(__EMSCRIPTEN__) +/* + * These don't have "and with complement" instruction, so minimize amount + * of "not"-s. Implemented only in the [default] KECCAK_2X variant. + */ # define KECCAK_COMPLEMENTING_TRANSFORM #endif