From 9024b84b7c9a36f75bffc5c77cc86bbe2911653e Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Mon, 16 Jun 2014 10:11:45 +0200 Subject: [PATCH] aesni-sha[1|256]-x86_64.pl: fix logical error and MacOS X build. --- crypto/aes/asm/aesni-sha1-x86_64.pl | 6 +++--- crypto/aes/asm/aesni-sha256-x86_64.pl | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/crypto/aes/asm/aesni-sha1-x86_64.pl b/crypto/aes/asm/aesni-sha1-x86_64.pl index 4899421f30..7f253750f3 100644 --- a/crypto/aes/asm/aesni-sha1-x86_64.pl +++ b/crypto/aes/asm/aesni-sha1-x86_64.pl @@ -726,7 +726,7 @@ ___ if ($stitched_decrypt) {{{ # reset ($in0,$out,$len,$key,$ivp,$ctx,$inp)=("%rdi","%rsi","%rdx","%rcx","%r8","%r9","%r10"); -$j=$jj=$r=$sn=$rx=0; +$j=$jj=$r=$rx=0; $Xi=4; # reassign for Atom Silvermont (see above) @@ -994,7 +994,7 @@ $code.=<<___; .size aesni256_cbc_sha1_dec_ssse3,.-aesni256_cbc_sha1_dec_ssse3 ___ }}} -$j=$jj=$r=$sn=$rx=0; +$j=$jj=$r=$rx=0; if ($avx) { my ($in0,$out,$len,$key,$ivp,$ctx,$inp)=("%rdi","%rsi","%rdx","%rcx","%r8","%r9","%r10"); @@ -1440,7 +1440,7 @@ ___ # reset ($in0,$out,$len,$key,$ivp,$ctx,$inp)=("%rdi","%rsi","%rdx","%rcx","%r8","%r9","%r10"); -$j=$jj=$r=$sn=$rx=0; +$j=$jj=$r=$rx=0; $Xi=4; @aes256_dec = ( diff --git a/crypto/aes/asm/aesni-sha256-x86_64.pl b/crypto/aes/asm/aesni-sha256-x86_64.pl index 3ef5e13325..6225561a8f 100644 --- a/crypto/aes/asm/aesni-sha256-x86_64.pl +++ b/crypto/aes/asm/aesni-sha256-x86_64.pl @@ -59,7 +59,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -$shaext=1; ### set to zero if compiling for 1.0.1 +$shaext=$avx; ### set to zero if compiling for 1.0.1 $avx=1 if (!$shaext && $avx); open OUT,"| \"$^X\" $xlate $flavour $output"; @@ -109,7 +109,8 @@ $code=<<___; .align 16 $func: ___ -$code.=<<___ if ($avx); + if ($avx) { +$code.=<<___; lea OPENSSL_ia32cap_P(%rip),%r11 mov \$1,%eax cmp \$0,`$win64?"%rcx":"%rdi"` @@ -133,7 +134,7 @@ $code.=<<___ if ($avx>1); cmp \$`1<<8|1<<5|1<<3`,%r11d je ${func}_avx2 ___ -$code.=<<___ if ($avx); +$code.=<<___; and \$`1<<30`,%eax # mask "Intel CPU" bit and \$`1<<28|1<<9`,%r10d # mask AVX+SSSE3 bits or %eax,%r10d @@ -141,6 +142,7 @@ $code.=<<___ if ($avx); je ${func}_avx ud2 ___ + } $code.=<<___; xor %eax,%eax cmp \$0,`$win64?"%rcx":"%rdi"` -- 2.25.1