openssl/crypto/bn/asm
Adam Langley fee8d86d7a Add volatile qualifications to two blocks of inline asm to stop GCC from
eliminating them as dead code.

Both volatile and "memory" are used because of some concern that the compiler
may still cache values across the asm block without it, and because this was
such a painful debugging session that I wanted to ensure that it's never
repeated.

(cherry picked from commit 7753a3a684)

Conflicts:
	crypto/bn/asm/x86_64-gcc.c

Reviewed-by: Rich Salz <rsalz@openssl.org>
(cherry picked from commit a90b1e32d2)
2014-08-19 17:12:08 +02:00
..
x86
.cvsignore Add emacs cache files to .cvsignore. 2005-04-11 14:17:07 +00:00
bn-586.pl OPENSSL_ia32cap final touches. Note that OPENSSL_ia32cap is no longer a 2004-08-29 16:36:05 +00:00
co-586.pl
ia64.S Copy bn/asm/ia64.S from HEAD. 2007-10-13 11:02:17 +00:00
mips3.s
mo-586.pl x86-mont.pl: fix bug in integer-only squaring path [from HEAD]. 2011-12-09 14:28:48 +00:00
pa-risc2.s pa-risc2.s was not PIC, see RT#426. I strip call to fprintf as it's 2003-01-03 10:52:40 +00:00
pa-risc2W.s
ppc.pl ppc.pl: fix bug in bn_mul_comba4 [from HEAD]. 2011-11-05 10:17:06 +00:00
README
sparcv8.S
sparcv8plus.S crypto/bn/asm/sparcv8plus.S update from HEAD. 2005-11-15 08:05:19 +00:00
vms.mar Finally, a bn_div_words() in VAX assembler that goes through all tests. 2002-12-23 11:25:51 +00:00
x86.pl
x86_64-gcc.c Add volatile qualifications to two blocks of inline asm to stop GCC from 2014-08-19 17:12:08 +02:00
x86_64-mont.pl Make x86_64-mont.pl work with debug Win64 build [from HEAD]. 2008-02-27 20:14:46 +00:00

<OBSOLETE>

All assember in this directory are just version of the file
crypto/bn/bn_asm.c.

Quite a few of these files are just the assember output from gcc since on 
quite a few machines they are 2 times faster than the system compiler.

For the x86, I have hand written assember because of the bad job all
compilers seem to do on it.  This normally gives a 2 time speed up in the RSA
routines.

For the DEC alpha, I also hand wrote the assember (except the division which
is just the output from the C compiler pasted on the end of the file).
On the 2 alpha C compilers I had access to, it was not possible to do
64b x 64b -> 128b calculations (both long and the long long data types
were 64 bits).  So the hand assember gives access to the 128 bit result and
a 2 times speedup :-).

There are 3 versions of assember for the HP PA-RISC.

pa-risc.s is the origional one which works fine and generated using gcc :-)

pa-risc2W.s and pa-risc2.s are 64 and 32-bit PA-RISC 2.0 implementations
by Chris Ruemmler from HP (with some help from the HP C compiler).

</OBSOLETE>