From: Andy Polyakov Date: Sun, 5 Mar 2017 19:38:36 +0000 (+0100) Subject: crypto/x86_64cpuid.pl: move extended feature detection upwards. X-Git-Tag: OpenSSL_1_0_2l~65 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=540739d8757f88fe65832b644b0e0077ddb4d6d1;p=openssl crypto/x86_64cpuid.pl: move extended feature detection upwards. Exteneded feature flags were not pulled on AMD processors, as result a number of extensions were effectively masked on Ryzen. It should have been reported for Excavator since it implements AVX2 extension, but apparently nobody noticed or cared... Reviewed-by: Rich Salz (cherry picked from commit f8418d87e191e46b81e1b9548326ab2876fa0907) --- diff --git a/crypto/x86_64cpuid.pl b/crypto/x86_64cpuid.pl index d208d02392..a430ab9d65 100644 --- a/crypto/x86_64cpuid.pl +++ b/crypto/x86_64cpuid.pl @@ -63,6 +63,16 @@ OPENSSL_ia32_cpuid: cpuid mov %eax,%r11d # max value for standard query level + cmp \$7,%eax + jb .Lno_extended_info + + mov \$7,%eax + xor %ecx,%ecx + cpuid + mov %ebx,8(%rdi) + +.Lno_extended_info: + xor %eax,%eax cmp \$0x756e6547,%ebx # "Genu" setne %al @@ -127,14 +137,6 @@ OPENSSL_ia32_cpuid: shr \$14,%r10d and \$0xfff,%r10d # number of cores -1 per L1D - cmp \$7,%r11d - jb .Lnocacheinfo - - mov \$7,%eax - xor %ecx,%ecx - cpuid - mov %ebx,8(%rdi) - .Lnocacheinfo: mov \$1,%eax cpuid