openssl/crypto/bn
Andy Polyakov 4c22909e31 Extra i386+gcc bn_div.c tune-up featuring inline division and saving
the remainder left in %edx. Here is the resulting performance improvement
matrix (improvement as a result of this *and* previous tune-up committed
two days ago). The results were obtained by profiling the "div" part of
the crypto/bn/bnspeed.c.

CPU	BN_div	bn_div_words	overall	comment
------------------------------------------------------------------------
PII	+16%	accumulated by	+2-3%	PII multiplies damn fast! Taking
		inlining		multiplication out of the loop
					didn't make too much difference.
					Eliminating of the multiplication
					involved in remainder calculation
					is the major factor.

Pentium	+45%	accumulated by	+7-9%	mull isn't that fast and replacing
		inlining		multiplications with additions in
					the loop has more visible effect:-)

MIPS	+75%	+12%		+20-25%	In addition to the taking mults
R10000					out of the loop (giving 12% in the
					asm/mips3.s) three mults were
					eliminated in BN_div.

Alpha	+30%	+50%		+10-15%	Same as above. But remember that
EV4					bn_div_words is a C implementation.
					It takes 4 Alpha mults in C to do
					the same thing as 1 MIPS mult in
					assembler does. So the effect (50%)
					is more impressive. But not the
					overall one... Well, if Alpha
					bn_mul_add would be implemented
					in assembler overall improvement
					would be closer to MIPS...
1999-07-31 23:27:41 +00:00
..
asm Bignum division tune-up. Idea is to move multiplications in front of 1999-07-30 11:43:43 +00:00
old Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
.cvsignore Ignore Makefile.save 1999-04-29 16:04:54 +00:00
bn_add.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_asm.c Bignum division tune-up. Idea is to move multiplications in front of 1999-07-30 11:43:43 +00:00
bn_blind.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
bn_comba.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
bn_div.c Extra i386+gcc bn_div.c tune-up featuring inline division and saving 1999-07-31 23:27:41 +00:00
bn_err.c Complete rewrite of the error code generation script. It now runs as a single 1999-04-24 00:15:18 +00:00
bn_exp2.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
bn_exp.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_gcd.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_lcl.h Move prototypes to the right place. 1999-05-17 22:25:31 +00:00
bn_lib.c by request: let BN_dup(NULL) just return NULL 1999-07-30 19:22:57 +00:00
bn_mont.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_mpi.c New functions CONF_load_bio() and CONF_load_fp() to load a configuration 1999-06-20 17:36:11 +00:00
bn_mul.c when invoking bn_*_comba[48] result->top wasn't always set correctly. 1999-07-27 09:36:59 +00:00
bn_opts.c Change #include filenames from <foo.h> to <openssl.h>. 1999-04-23 22:13:45 +00:00
bn_prime.c More evil cast removal. 1999-06-03 18:04:04 +00:00
bn_prime.h Import of old SSLeay release: SSLeay 0.9.0b 1998-12-21 10:56:39 +00:00
bn_prime.pl Import of old SSLeay release: SSLeay 0.8.1b 1998-12-21 10:52:47 +00:00
bn_print.c New functions CONF_load_bio() and CONF_load_fp() to load a configuration 1999-06-20 17:36:11 +00:00
bn_rand.c Change #include filenames from <foo.h> to <openssl.h>. 1999-04-23 22:13:45 +00:00
bn_recp.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_shift.c Some constification and stacks that slipped through the cracks (how?). 1999-06-04 22:23:10 +00:00
bn_sqr.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
bn_word.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
bn.h Use "long long" for all Win32 gcc ports. 1999-06-28 16:17:38 +00:00
bn.mul Import of old SSLeay release: SSLeay 0.9.1b (unreleased) 1998-12-21 11:00:56 +00:00
bnspeed.c Remove redundant ifdef. 1999-05-13 13:29:41 +00:00
bntest.c More DES library cleanups: remove references to srand/rand 1999-07-15 23:47:02 +00:00
comba.pl Import of old SSLeay release: SSLeay 0.9.1b (unreleased) 1998-12-21 11:00:56 +00:00
d.c Change #include filenames from <foo.h> to <openssl.h>. 1999-04-23 22:13:45 +00:00
exp.c Change #include filenames from <foo.h> to <openssl.h>. 1999-04-23 22:13:45 +00:00
expspeed.c Remove redundant ifdef. 1999-05-13 13:29:41 +00:00
exptest.c Compare with BN_mod_exp_simple, too. 1999-04-29 16:07:56 +00:00
Makefile.ssl SPARC Solaris config updates. 1999-07-25 22:25:12 +00:00
new Import of old SSLeay release: SSLeay 0.9.1b (unreleased) 1998-12-21 11:00:56 +00:00
test.c Change functions to ANSI C. 1999-04-19 21:31:43 +00:00
todo Import of old SSLeay release: SSLeay 0.9.1b (unreleased) 1998-12-21 11:00:56 +00:00
vms-helper.c VMS support. 1999-05-13 11:37:32 +00:00