> I am also having a issue this issue.  It is a 32 bit build issue
> only.  The 64 bit build completes using the same development
> environment.  The offending instruction is "movd".  Unfortunately
> I am not a x86 assembler expert.
> 
> Mark
> 
>         perl crypto\sha\asm\sha1-586.pl win32 /MD /Ox /O2 /Ob2 
> -DOPENSSL_THREADS
>   -DDSO_WIN32 -W3 -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 
> -DWIN32_LEAN_AND_
> MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -DOPENSSL_BN_ASM_PART_WORDS 
> -DOPENSSL
> _IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM 
> -DSHA256_ASM -
> DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM 
> -DGHASH
> _ASM -DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 
> -DOPENSSL_NO_KR
> B5 -DOPENSSL_NO_JPAKE -DOPENSSL_NO_DYNAMIC_ENGINE >tmp32dll\sha1-586.asm
>         ml /nologo /Cp /coff /c /Cx /Zi /Fotmp32dll\sha1-586.obj 
> tmp32dll\sha1-5
> 86.asm
>  Assembling: tmp32dll\sha1-586.asm
> tmp32dll\sha1-586.asm(1432) : error A2070:invalid instruction operands
> tmp32dll\sha1-586.asm(1576) : error A2070:invalid instruction operands
> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 
> 11.0
> \VC\BIN\ml.EXE"' : return code '0x1'
> Stop.
> 
> $Lshaext_shortcut::
>       mov     edi,DWORD PTR 20[esp]
>       mov     ebx,esp
>       mov     esi,DWORD PTR 24[esp]
>       mov     ecx,DWORD PTR 28[esp]
>       sub     esp,32
>       movdqu  xmm0,XMMWORD PTR [edi]
>       movd    xmm1,XMMWORD PTR 16[edi]                * 1432

Ah! It should be DWORD, not XMMWORD... Devja vu! There was similar case
with movq elsewhere. See if attached fixes the problem.


diff --git a/crypto/perlasm/x86masm.pl b/crypto/perlasm/x86masm.pl
index 1741342..05a9865 100644
--- a/crypto/perlasm/x86masm.pl
+++ b/crypto/perlasm/x86masm.pl
@@ -18,7 +18,7 @@ sub ::generic
 
     if ($opcode =~ /lea/ && @arg[1] =~ s/.*PTR\s+(\(.*\))$/OFFSET $1/)	# no []
     {	$opcode="mov";	}
-    elsif ($opcode !~ /movq/)
+    elsif ($opcode !~ /mov[dq]/)
     {	# fix xmm references
 	$arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[1]=~/\bxmm[0-7]\b/i);
 	$arg[1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i);
diff --git a/crypto/sha/asm/sha1-586.pl b/crypto/sha/asm/sha1-586.pl
index 8377299..4895eb3 100644
--- a/crypto/sha/asm/sha1-586.pl
+++ b/crypto/sha/asm/sha1-586.pl
@@ -450,7 +450,7 @@ sub sha1msg2	{ sha1op38(0xca,@_); }
 	&sub	("esp",32);
 
 	&movdqu	($ABCD,&QWP(0,$ctx));
-	&movd	($E,&QWP(16,$ctx));
+	&movd	($E,&DWP(16,$ctx));
 	&and	("esp",-32);
 	&movdqa	($BSWAP,&QWP(0x50,$tmp1));	# byte-n-word swap
 
_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to