• Jussi Kivilinna's avatar
    crypto: camellia - add assembler implementation for x86_64 · 0b95ec56
    Jussi Kivilinna authored
    Patch adds x86_64 assembler implementation of Camellia block cipher. Two set of
    functions are provided. First set is regular 'one-block at time' encrypt/decrypt
    functions. Second is 'two-block at time' functions that gain performance increase
    on out-of-order CPUs. Performance of 2-way functions should be equal to 1-way
    functions with in-order CPUs.
    
    Patch has been tested with tcrypt and automated filesystem tests.
    
    Tcrypt benchmark results:
    
    AMD Phenom II 1055T (fam:16, model:10):
    
    camellia-asm vs camellia_generic:
    128bit key:                                             (lrw:256bit)    (xts:256bit)
    size    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B     1.27x   1.22x   1.30x   1.42x   1.30x   1.34x   1.19x   1.05x   1.23x   1.24x
    64B     1.74x   1.79x   1.43x   1.87x   1.81x   1.87x   1.48x   1.38x   1.55x   1.62x
    256B    1.90x   1.87x   1.43x   1.94x   1.94x   1.95x   1.63x   1.62x   1.67x   1.70x
    1024B   1.96x   1.93x   1.43x   1.95x   1.98x   2.01x   1.67x   1.69x   1.74x   1.80x
    8192B   1.96x   1.96x   1.39x   1.93x   2.01x   2.03x   1.72x   1.64x   1.71x   1.76x
    
    256bit key:                                             (lrw:384bit)    (xts:512bit)
    size    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B     1.23x   1.23x   1.33x   1.39x   1.34x   1.38x   1.04x   1.18x   1.21x   1.29x
    64B     1.72x   1.69x   1.42x   1.78x   1.81x   1.89x   1.57x   1.52x   1.56x   1.65x
    256B    1.85x   1.88x   1.42x   1.86x   1.93x   1.96x   1.69x   1.65x   1.70x   1.75x
    1024B   1.88x   1.86x   1.45x   1.95x   1.96x   1.95x   1.77x   1.71x   1.77x   1.78x
    8192B   1.91x   1.86x   1.42x   1.91x   2.03x   1.98x   1.73x   1.71x   1.78x   1.76x
    
    camellia-asm vs aes-asm (8kB block):
             128bit  256bit
    ecb-enc  1.15x   1.22x
    ecb-dec  1.16x   1.16x
    cbc-enc  0.85x   0.90x
    cbc-dec  1.20x   1.23x
    ctr-enc  1.28x   1.30x
    ctr-dec  1.27x   1.28x
    lrw-enc  1.12x   1.16x
    lrw-dec  1.08x   1.10x
    xts-enc  1.11x   1.15x
    xts-dec  1.14x   1.15x
    
    Intel Core2 T8100 (fam:6, model:23, step:6):
    
    camellia-asm vs camellia_generic:
    128bit key:                                             (lrw:256bit)    (xts:256bit)
    size    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B     1.10x   1.12x   1.14x   1.16x   1.16x   1.15x   1.02x   1.02x   1.08x   1.08x
    64B     1.61x   1.60x   1.17x   1.68x   1.67x   1.66x   1.43x   1.42x   1.44x   1.42x
    256B    1.65x   1.73x   1.17x   1.77x   1.81x   1.80x   1.54x   1.53x   1.58x   1.54x
    1024B   1.76x   1.74x   1.18x   1.80x   1.85x   1.85x   1.60x   1.59x   1.65x   1.60x
    8192B   1.77x   1.75x   1.19x   1.81x   1.85x   1.86x   1.63x   1.61x   1.66x   1.62x
    
    256bit key:                                             (lrw:384bit)    (xts:512bit)
    size    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec
    16B     1.10x   1.07x   1.13x   1.16x   1.11x   1.16x   1.03x   1.02x   1.08x   1.07x
    64B     1.61x   1.62x   1.15x   1.66x   1.63x   1.68x   1.47x   1.46x   1.47x   1.44x
    256B    1.71x   1.70x   1.16x   1.75x   1.69x   1.79x   1.58x   1.57x   1.59x   1.55x
    1024B   1.78x   1.72x   1.17x   1.75x   1.80x   1.80x   1.63x   1.62x   1.65x   1.62x
    8192B   1.76x   1.73x   1.17x   1.78x   1.80x   1.81x   1.64x   1.62x   1.68x   1.64x
    
    camellia-asm vs aes-asm (8kB block):
             128bit  256bit
    ecb-enc  1.17x   1.21x
    ecb-dec  1.17x   1.20x
    cbc-enc  0.80x   0.82x
    cbc-dec  1.22x   1.24x
    ctr-enc  1.25x   1.26x
    ctr-dec  1.25x   1.26x
    lrw-enc  1.14x   1.18x
    lrw-dec  1.13x   1.17x
    xts-enc  1.14x   1.18x
    xts-dec  1.14x   1.17x
    Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    0b95ec56
Makefile 1.94 KB