From: Andy Polyakov Date: Wed, 18 May 2005 08:42:08 +0000 (+0000) Subject: Don't emit SSE2 instructions unless were asked to. X-Git-Tag: OpenSSL_0_9_8-beta3~13^2~29 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c50226594d73f02d594a5a469abd11e1c9849588;p=oweals%2Fopenssl.git Don't emit SSE2 instructions unless were asked to. PR: 1073 --- diff --git a/crypto/x86cpuid.pl b/crypto/x86cpuid.pl index 9ad9435ffd..3d5d16bb64 100644 --- a/crypto/x86cpuid.pl +++ b/crypto/x86cpuid.pl @@ -5,6 +5,8 @@ require "x86asm.pl"; &asm_init($ARGV[0],"x86cpuid"); +for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } + &function_begin("OPENSSL_ia32_cpuid"); &xor ("edx","edx"); &pushf (); @@ -115,17 +117,19 @@ require "x86asm.pl"; &mov ("ecx",&DWP(0,"ecx")); &bt (&DWP(0,"ecx"),1); &jnc (&label("no_x87")); - &bt (&DWP(0,"ecx"),26); - &jnc (&label("no_sse2")); - &pxor ("xmm0","xmm0"); - &pxor ("xmm1","xmm1"); - &pxor ("xmm2","xmm2"); - &pxor ("xmm3","xmm3"); - &pxor ("xmm4","xmm4"); - &pxor ("xmm5","xmm5"); - &pxor ("xmm6","xmm6"); - &pxor ("xmm7","xmm7"); -&set_label("no_sse2"); + if ($sse2) { + &bt (&DWP(0,"ecx"),26); + &jnc (&label("no_sse2")); + &pxor ("xmm0","xmm0"); + &pxor ("xmm1","xmm1"); + &pxor ("xmm2","xmm2"); + &pxor ("xmm3","xmm3"); + &pxor ("xmm4","xmm4"); + &pxor ("xmm5","xmm5"); + &pxor ("xmm6","xmm6"); + &pxor ("xmm7","xmm7"); + &set_label("no_sse2"); + } # just a bunch of fldz to zap the fp/mm bank... &data_word(0xeed9eed9,0xeed9eed9,0xeed9eed9,0xeed9eed9); &emms ();