X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fx86_64cpuid.pl;h=0a88c7a4ed47ae2ac4e291268d2a0b8d19a6dae5;hp=d30928efbd4d2944953c9c4a954c1d009552bfd1;hb=e44c7d02ddac975ec6abff7901e77a0c37f9949d;hpb=88ac224cdaf65c3c3a08beddccb694706a311336 diff --git a/crypto/x86_64cpuid.pl b/crypto/x86_64cpuid.pl index d30928efbd..0a88c7a4ed 100644 --- a/crypto/x86_64cpuid.pl +++ b/crypto/x86_64cpuid.pl @@ -139,6 +139,7 @@ OPENSSL_ia32_cpuid: .Lnocacheinfo: mov \$1,%eax cpuid + movd %eax,%xmm0 # put aside processor id and \$0xbfefffff,%edx # force reserved bits to 0 cmp \$0,%r9d jne .Lnotintel @@ -186,6 +187,13 @@ OPENSSL_ia32_cpuid: jc .Lnotknights and \$0xfff7ffff,%ebx # clear ADCX/ADOX flag .Lnotknights: + movd %xmm0,%eax # restore processor id + and \$0x0fff0ff0,%eax + cmp \$0x00050650,%eax # Skylake-X + jne .Lnotskylakex + and \$0xfffeffff,%ebx # ~(1<<16) + # suppress AVX512F flag on Skylake-X +.Lnotskylakex: mov %ebx,8(%rdi) # save extended feature flags mov %ecx,12(%rdi) .Lno_extended_info: