Commit d6ee8f3d authored by Andy Polyakov's avatar Andy Polyakov
Browse files

OPENSSL_ia32cap: reserve for new extensions.



Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 1b6fa9fd
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -61,16 +61,26 @@ void OPENSSL_cpuid_setup(void)
        }

        if ((env = strchr(env, ':'))) {
            unsigned int vecx;
            IA32CAP vecx;
            env++;
            off = (env[0] == '~') ? 1 : 0;
#  if defined(_WIN32)
            if (!sscanf(env + off, "%I64i", &vecx))
                vecx = strtoul(env + off, NULL, 0);
            if (off)
                OPENSSL_ia32cap_P[2] &= ~vecx;
            else
                OPENSSL_ia32cap_P[2] = vecx;
#  else
            if (!sscanf(env + off, "%lli", (long long *)&vecx))
                vecx = strtoul(env + off, NULL, 0);
#  endif
            if (off) {
                OPENSSL_ia32cap_P[2] &= ~(unsigned int)vecx;
                OPENSSL_ia32cap_P[3] &= ~(unsigned int)(vecx >> 32);
            } else {
                OPENSSL_ia32cap_P[2] = (unsigned int)vecx;
                OPENSSL_ia32cap_P[3] = (unsigned int)(vecx >> 32);
            }
        } else {
            OPENSSL_ia32cap_P[2] = 0;
            OPENSSL_ia32cap_P[3] = 0;
        }
    } else {
        vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P);
+2 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ OPENSSL_ia32_cpuid:
.cfi_register	%rbx,%r8

	xor	%eax,%eax
	mov	%eax,8(%rdi)		# clear extended feature flags
	mov	%rax,8(%rdi)		# clear extended feature flags
	cpuid
	mov	%eax,%r11d		# max value for standard query level

@@ -187,6 +187,7 @@ OPENSSL_ia32_cpuid:
	and	\$0xfff7ffff,%ebx	# clear ADCX/ADOX flag
.Lnotknights:
	mov	%ebx,8(%rdi)		# save extended feature flags
	mov	%ecx,12(%rdi)
.Lno_extended_info:

	bt	\$27,%r9d		# check OSXSAVE bit
+5 −0
Original line number Diff line number Diff line
@@ -110,6 +110,10 @@ a.k.a. AVX512IFMA extension;

=item bit #64+31 denoting availability of AVX512VL extension;

=item bit #64+41 denoting availability of VAES extension;

=item bit #64+42 denoting availability of VPCLMULQDQ extension;

=back

To control this extended capability word use ':' as delimiter when
@@ -130,6 +134,7 @@ requirements are summarized in below table:
   ADCX/ADOX   | 2.23   | 2.10   | 3.3
   AVX512      | 2.25   | 2.11.8 | see NOTES
   AVX512IFMA  | 2.26   | 2.11.8 | see NOTES
   VAES        | n/a    | n/a    |

=head1 NOTES