crypto/x86_64cpuid.pl: move extended feature detection upwards.
authorAndy Polyakov <appro@openssl.org>
Sun, 5 Mar 2017 19:38:36 +0000 (20:38 +0100)
committerAndy Polyakov <appro@openssl.org>
Tue, 7 Mar 2017 10:17:32 +0000 (11:17 +0100)
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 <rsalz@openssl.org>
crypto/x86_64cpuid.pl

index e08e1c4a1103469d32054d06a4c72dff201f5511..c2a7d72b0ee9b241993211fb0ebd51b6b09179a1 100644 (file)
@@ -72,6 +72,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
@@ -136,14 +146,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