linux/crypto
Denys Vlasenko e2b21b5002 [CRYPTO] twofish: Do not unroll big stuff in twofish key setup
Currently twofish cipher key setup code
has unrolled loops - approximately 70-100
instructions are repeated 40 times.

As a result, twofish module is the biggest module
in crypto/*.

Unrolling produces x2.5 more code (+18k on i386), and speeds up key
setup by 7%:

	unrolled: twofish_setkey/sec: 41128
	    loop: twofish_setkey/sec: 38148
	CALC_K256: ~100 insns each
	CALC_K192: ~90 insns
	   CALC_K: ~70 insns

Attached patch removes this unrolling.

$ size */twofish_common.o
   text    data     bss     dec     hex filename
  37920       0       0   37920    9420 crypto.org/twofish_common.o
  13209       0       0   13209    3399 crypto/twofish_common.o

Run tested (modprobe tcrypt reports ok). Please apply.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2008-01-11 08:16:06 +11:00
..
async_tx async_tx: fix dma_wait_for_async_tx 2007-09-24 10:26:26 -07:00
ablkcipher.c [CRYPTO] ablkcipher: Remove queue pointer from common alg object 2007-10-10 16:55:41 -07:00
aead.c [CRYPTO] api: Add aead crypto type 2007-10-10 16:55:39 -07:00
aes_generic.c [CRYPTO] aes: Move common defines into a header file 2008-01-11 08:16:04 +11:00
algapi.c [CRYPTO] api: Fix potential race in crypto_remove_spawn 2007-11-23 19:32:09 +08:00
anubis.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
api.c crypto: convert "crypto" subdirectory to UTF-8 2007-10-19 23:06:17 +02:00
arc4.c [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
authenc.c [CRYPTO] authenc: Move initialisations up to shut up gcc 2007-11-23 19:32:09 +08:00
blkcipher.c [CRYPTO] blkcipher: Added blkcipher_walk_virt_block 2007-10-10 16:55:48 -07:00
blowfish.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
camellia.c [CRYPTO] camellia: added the code of Camellia cipher algorithm. 2007-02-07 09:21:03 +11:00
cast5.c [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
cast6.c [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
cbc.c [CRYPTO] templates: Pass type/mask when creating instances 2007-05-02 14:38:31 +10:00
cipher.c [CRYPTO] api: Add missing headers for setkey_unaligned 2007-10-10 16:55:40 -07:00
compress.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
crc32c.c [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
cryptd.c [CRYPTO] ablkcipher: Remove queue pointer from common alg object 2007-10-10 16:55:41 -07:00
crypto_null.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
cryptomgr.c [CRYPTO] cryptomgr: Fix parsing of recursive algorithms 2007-10-10 16:55:45 -07:00
ctr.c [CRYPTO] ctr: Add CTR (Counter) block cipher mode 2008-01-11 08:16:01 +11:00
deflate.c [CRYPTO] api: Added cra_init/cra_exit 2006-06-26 17:34:40 +10:00
des_generic.c [CRYPTO] hifn_795x: Detect weak keys 2008-01-11 08:16:03 +11:00
digest.c [SG] Update crypto/ to sg helpers 2007-10-22 19:40:16 +02:00
ecb.c [CRYPTO] templates: Pass type/mask when creating instances 2007-05-02 14:38:31 +10:00
fcrypt.c crypto: convert "crypto" subdirectory to UTF-8 2007-10-19 23:06:17 +02:00
gf128mul.c [CRYPTO] xts: XTS blockcipher mode implementation without partial blocks 2007-10-10 16:55:45 -07:00
hash.c [CRYPTO] api: Add missing headers for setkey_unaligned 2007-10-10 16:55:40 -07:00
hmac.c [CRYPTO]: HMAC needs some more scatterlist fixups. 2007-10-26 00:37:12 -07:00
internal.h [CRYPTO] api: Kill crypto_km_types 2007-10-10 16:55:44 -07:00
Kconfig [CRYPTO] ctr: Add CTR (Counter) block cipher mode 2008-01-11 08:16:01 +11:00
khazad.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
lrw.c [CRYPTO] templates: Pass type/mask when creating instances 2007-05-02 14:38:31 +10:00
Makefile [CRYPTO] ctr: Add CTR (Counter) block cipher mode 2008-01-11 08:16:01 +11:00
md4.c [CRYPTO] all: Pass tfm instead of ctx to algorithms 2006-06-26 17:34:39 +10:00
md5.c [CRYPTO] all: Pass tfm instead of ctx to algorithms 2006-06-26 17:34:39 +10:00
michael_mic.c [PATCH] Update my email address from jkmaline@cc.hut.fi to j@w1.fi 2007-04-28 11:01:01 -04:00
pcbc.c [CRYPTO] templates: Pass type/mask when creating instances 2007-05-02 14:38:31 +10:00
proc.c Make crypto API use seq_list_xxx helpers 2007-07-16 09:05:42 -07:00
scatterwalk.c [SG] Update crypto/ to sg helpers 2007-10-22 19:40:16 +02:00
scatterwalk.h [SG] Update crypto/ to sg helpers 2007-10-22 19:40:16 +02:00
seed.c [CRYPTO] seed: New cipher algorithm 2007-10-10 16:55:38 -07:00
serpent.c [PATCH] serpent: fix endian warnings 2006-10-10 16:15:33 -07:00
sha1_generic.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
sha256_generic.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
sha512.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
tcrypt.c [CRYPTO] ctr: Add CTR (Counter) block cipher mode 2008-01-11 08:16:01 +11:00
tcrypt.h [CRYPTO] ctr: Add CTR (Counter) block cipher mode 2008-01-11 08:16:01 +11:00
tea.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
tgr192.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
twofish_common.c [CRYPTO] twofish: Do not unroll big stuff in twofish key setup 2008-01-11 08:16:06 +11:00
twofish.c [CRYPTO] twofish: Fix the priority 2006-09-21 11:16:28 +10:00
wp512.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
xcbc.c [SG] Update crypto/ to sg helpers 2007-10-22 19:40:16 +02:00
xor.c async_tx: add the async_tx api 2007-07-13 08:06:14 -07:00
xts.c [CRYPTO] xts: XTS blockcipher mode implementation without partial blocks 2007-10-10 16:55:45 -07:00