From b3e02d06ba802aaa137b5f5000b02c504b72cdcb Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Mon, 12 Mar 2018 10:46:23 +0100 Subject: [PATCH] ec/curve25519.c: resolve regression with Android NDK's arm64 gcc. Unlike "upstream", Android NDK's arm64 gcc [but not clang] performs 64x64=128-bit multiplications with library calls, which appears to have devastating impact on performance. [The condition is reduced to __ANDROID__ [&& !__clang__], because x86_64 has corresponding assembly module.] Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/5589) --- crypto/ec/curve25519.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crypto/ec/curve25519.c b/crypto/ec/curve25519.c index 45525f4742..0f18ff7c7d 100644 --- a/crypto/ec/curve25519.c +++ b/crypto/ec/curve25519.c @@ -13,7 +13,8 @@ #if defined(X25519_ASM) \ || ( (defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16) \ - && !defined(__sparc__) ) + && !defined(__sparc__) \ + && !(defined(__ANDROID__) && !defined(__clang__)) ) /* * Base 2^51 implementation. */ -- 2.34.1