Commit 23830280 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Add SSE2 support to VC++ build. Update MASM script.

parent bfdfc67b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -4,6 +4,11 @@

 Changes between 0.9.8e and 0.9.8f-fips  [xx XXX xxxx]

  *) Add SSE2 instruction support to WIN32 build. These will be compiled
     by default and used it an appopriate CPU is detected. Some older versions
     of NASM or MASM which don't support SSE2 will need to be updated. 
     [Steve Henson]

  *) Tolerate DigestInfo structure with absent parameters in FIPS mode
     (as required by several standards).
     [Steve Henson]
+8 −10
Original line number Diff line number Diff line
@@ -204,16 +204,17 @@ sub main'pand { &out2("pand",@_); }
sub out2
	{
	local($name,$p1,$p2)=@_;
	local($l,$t);
	local($l,$t,$line);

	push(@out,"\t$name\t");
	$line="\t$name\t";
	$t=&conv($p1).",";
	$l=length($t);
	push(@out,$t);
	$line.="$t";
	$l=4-($l+9)/8;
	push(@out,"\t" x $l);
	push(@out,&conv($p2));
	push(@out,"\n");
	$line.="\t" x $l;
	$line.=&conv($p2);
	if ($line=~/\bxmm[0-7]\b/i) { $line=~s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i; }
	push(@out,$line."\n");
	}

sub out0
@@ -338,12 +339,9 @@ EOF
sub main'file_end
	{
	# try to detect if SSE2 or MMX extensions were used...
	if (grep {/xmm[0-7]\s*,/i} @out) {
	if (grep {/\b[x]?mm[0-7]\b,/i} @out) {
		grep {s/\.[3-7]86/\.686\n\t\.XMM/} @out;
		}
	elsif (grep {/mm[0-7]\s*,/i} @out) {
		grep {s/\.[3-7]86/\.686\n\t\.MMX/} @out;
		}
	push(@out,"_TEXT\$	ENDS\n");
	push(@out,"END\n");
	}
+5 −0
Original line number Diff line number Diff line
@@ -128,7 +128,12 @@ FIPS_NON_FIPS_VCIPHER_Init(RC4)
		 * module...
		 *				<appro@fy.chalmers.se>
		 */
#ifdef OPENSSL_FIPS
		unsigned long *ia32cap_ptr = OPENSSL_ia32cap_loc();
		if (ia32cap_ptr && (*ia32cap_ptr & (1<<28))) {
#else
		if (OPENSSL_ia32cap_P & (1<<28)) {
#endif
			unsigned char *cp=(unsigned char *)d;

			for (i=0;i<256;i++) cp[i]=i;
+20 −11
Original line number Diff line number Diff line
@echo off

SET ASMOPTS=-DOPENSSL_IA32_SSE2
echo Generating x86 for MASM assember

echo Bignum
cd crypto\bn\asm
perl x86.pl win32 > bn_win32.asm
perl bn-586.pl win32 %ASMOPTS% > bn_win32.asm
perl co-586.pl win32 %ASMOPTS% > co_win32.asm
cd ..\..\..

echo AES
cd crypto\aes\asm
perl aes-586.pl win32 > a_win32.asm
perl aes-586.pl win32 %ASMOPTS% > a_win32.asm
cd ..\..\..

echo DES
cd crypto\des\asm
perl des-586.pl win32 > d_win32.asm
perl des-586.pl win32 %ASMOPTS% > d_win32.asm
cd ..\..\..

echo "crypt(3)"

cd crypto\des\asm
perl crypt586.pl win32 > y_win32.asm
perl crypt586.pl win32 %ASMOPTS% > y_win32.asm
cd ..\..\..

echo Blowfish

cd crypto\bf\asm
perl bf-586.pl win32 > b_win32.asm
perl bf-586.pl win32 %ASMOPTS% > b_win32.asm
cd ..\..\..

echo CAST5
cd crypto\cast\asm
perl cast-586.pl win32 > c_win32.asm
perl cast-586.pl win32 %ASMOPTS% > c_win32.asm
cd ..\..\..

echo RC4
cd crypto\rc4\asm
perl rc4-586.pl win32 > r4_win32.asm
perl rc4-586.pl win32 %ASMOPTS% > r4_win32.asm
cd ..\..\..

echo MD5
cd crypto\md5\asm
perl md5-586.pl win32 > m5_win32.asm
perl md5-586.pl win32 %ASMOPTS% > m5_win32.asm
cd ..\..\..

echo SHA1
cd crypto\sha\asm
perl sha1-586.pl win32 > s1_win32.asm
perl sha1-586.pl win32 %ASMOPTS% > s1_win32.asm
perl sha512-sse2.pl win32 %ASMOPTS% > sha512-sse2.asm
cd ..\..\..

echo RIPEMD160
cd crypto\ripemd\asm
perl rmd-586.pl win32 > rm_win32.asm
perl rmd-586.pl win32 %ASMOPTS% > rm_win32.asm
cd ..\..\..

echo RC5\32
cd crypto\rc5\asm
perl rc5-586.pl win32 > r5_win32.asm
perl rc5-586.pl win32 %ASMOPTS% > r5_win32.asm
cd ..\..\..

echo CPU-ID
cd crypto
perl x86cpuid.pl win32 %ASMOPTS% > cpu_win32.asm
cd ..

echo on

perl util\mkfiles.pl >MINFO
+20 −11
Original line number Diff line number Diff line

@echo off

SET ASMOPTS=-DOPENSSL_IA32_SSE2
echo Generating x86 for NASM assember

echo Bignum
cd crypto\bn\asm
perl x86.pl win32n > bn_win32.asm
perl bn-586.pl win32n %ASMOPTS% > bn_win32.asm
perl co-586.pl win32n %ASMOPTS% > co_win32.asm
cd ..\..\..

echo AES
cd crypto\aes\asm
perl aes-586.pl win32n > a_win32.asm
perl aes-586.pl win32n %ASMOPTS% > a_win32.asm
cd ..\..\..

echo DES
cd crypto\des\asm
perl des-586.pl win32n > d_win32.asm
perl des-586.pl win32n %ASMOPTS% > d_win32.asm
cd ..\..\..

echo "crypt(3)"

cd crypto\des\asm
perl crypt586.pl win32n > y_win32.asm
perl crypt586.pl win32n %ASMOPTS% > y_win32.asm
cd ..\..\..

echo Blowfish

cd crypto\bf\asm
perl bf-586.pl win32n > b_win32.asm
perl bf-586.pl win32n %ASMOPTS% > b_win32.asm
cd ..\..\..

echo CAST5
cd crypto\cast\asm
perl cast-586.pl win32n > c_win32.asm
perl cast-586.pl win32n %ASMOPTS% > c_win32.asm
cd ..\..\..

echo RC4
cd crypto\rc4\asm
perl rc4-586.pl win32n > r4_win32.asm
perl rc4-586.pl win32n %ASMOPTS% > r4_win32.asm
cd ..\..\..

echo MD5
cd crypto\md5\asm
perl md5-586.pl win32n > m5_win32.asm
perl md5-586.pl win32n %ASMOPTS% > m5_win32.asm
cd ..\..\..

echo SHA1
cd crypto\sha\asm
perl sha1-586.pl win32n > s1_win32.asm
perl sha1-586.pl win32n %ASMOPTS% > s1_win32.asm
perl sha512-sse2.pl win32n %ASMOPTS% > sha512-sse2.asm
cd ..\..\..

echo RIPEMD160
cd crypto\ripemd\asm
perl rmd-586.pl win32n > rm_win32.asm
perl rmd-586.pl win32n %ASMOPTS% > rm_win32.asm
cd ..\..\..

echo RC5\32
cd crypto\rc5\asm
perl rc5-586.pl win32n > r5_win32.asm
perl rc5-586.pl win32n %ASMOPTS% > r5_win32.asm
cd ..\..\..

echo CPU-ID
cd crypto
perl x86cpuid.pl win32n %ASMOPTS% > cpu_win32.asm
cd ..

echo on

perl util\mkfiles.pl >MINFO
Loading