• Denys Vlasenko's avatar
    [CRYPTO] twofish: Do not unroll big stuff in twofish key setup · e2b21b50
    Denys Vlasenko authored
    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: default avatarDenys Vlasenko <vda.linux@googlemail.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    e2b21b50
twofish_common.c 37.7 KB