From bd479e25c78ecfff31d8c9785dd272a5aeb32c1d Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Wed, 25 Jan 2012 17:56:25 +0000 Subject: [PATCH] ghash-x86.pl: engage original MMX version in no-sse2 builds [from HEAD]. --- crypto/modes/asm/ghash-x86.pl | 2 +- crypto/modes/gcm128.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crypto/modes/asm/ghash-x86.pl b/crypto/modes/asm/ghash-x86.pl index 1b9adfbc72..6b09669d47 100644 --- a/crypto/modes/asm/ghash-x86.pl +++ b/crypto/modes/asm/ghash-x86.pl @@ -331,7 +331,7 @@ if (!$x86only) {{{ &static_label("rem_4bit"); -if (0) {{ # "May" MMX version is kept for reference... +if (!$sse2) {{ # pure-MMX "May" version... $S=12; # shift factor for rem_4bit diff --git a/crypto/modes/gcm128.c b/crypto/modes/gcm128.c index 2e42e71804..7d6d034970 100644 --- a/crypto/modes/gcm128.c +++ b/crypto/modes/gcm128.c @@ -723,7 +723,11 @@ void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx,void *key,block128_f block) # endif gcm_init_4bit(ctx->Htable,ctx->H.u); # if defined(GHASH_ASM_X86) /* x86 only */ +# if defined(OPENSSL_IA32_SSE2) + if (OPENSSL_ia32cap_P[0]&(1<<25)) { /* check SSE bit */ +# else if (OPENSSL_ia32cap_P[0]&(1<<23)) { /* check MMX bit */ +# endif ctx->gmult = gcm_gmult_4bit_mmx; ctx->ghash = gcm_ghash_4bit_mmx; } else { -- 2.40.0