[CRYPTO] twofish: Do not unroll big stuff in twofish key setup
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 26 Oct 2007 08:22:57 +0000 (16:22 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 10 Jan 2008 21:16:06 +0000 (08:16 +1100)
commite2b21b5002a2bf21ca73c7448309a7288a984ddf
tree11e55173debdb2428a37655968ceef39786f2383
parentb7a30da61adc5f252ee97b2a4f3fc23c9d06a08a
[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>
crypto/twofish_common.c