aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2011-09-01 18:45:22 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2011-09-22 07:25:26 -0400
commit64b94ceae8c16cd1b2800cac83112d3815be5250 (patch)
treec7e3384659522cac32dc85a34e4ed722346a0f91 /crypto
parent7d47b86cfef808c6580b7603c3f17fcaf27e9d14 (diff)
crypto: blowfish - add x86_64 assembly implementation
Patch adds x86_64 assembly implementation of blowfish. Two set of assembler functions are provided. First set is regular 'one-block at time' encrypt/decrypt functions. Second is 'four-block at time' functions that gain performance increase on out-of-order CPUs. Performance of 4-way functions should be equal to 1-way functions with in-order CPUs. Summary of the tcrypt benchmarks: Blowfish assembler vs blowfish C (256bit 8kb block ECB) encrypt: 2.2x speed decrypt: 2.3x speed Blowfish assembler vs blowfish C (256bit 8kb block CBC) encrypt: 1.12x speed decrypt: 2.5x speed Blowfish assembler vs blowfish C (256bit 8kb block CTR) encrypt: 2.5x speed Full output: http://koti.mbnet.fi/axh/kernel/crypto/tcrypt-speed-blowfish-asm-x86_64.txt http://koti.mbnet.fi/axh/kernel/crypto/tcrypt-speed-blowfish-c-x86_64.txt Tests were run on: vendor_id : AuthenticAMD cpu family : 16 model : 10 model name : AMD Phenom(tm) II X6 1055T Processor stepping : 0 Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/Kconfig15
1 files changed, 15 insertions, 0 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 108cb98e2170..07637745e234 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -620,6 +620,21 @@ config CRYPTO_BLOWFISH_COMMON
620 See also: 620 See also:
621 <http://www.schneier.com/blowfish.html> 621 <http://www.schneier.com/blowfish.html>
622 622
623config CRYPTO_BLOWFISH_X86_64
624 tristate "Blowfish cipher algorithm (x86_64)"
625 depends on (X86 || UML_X86) && 64BIT
626 select CRYPTO_ALGAPI
627 select CRYPTO_BLOWFISH_COMMON
628 help
629 Blowfish cipher algorithm (x86_64), by Bruce Schneier.
630
631 This is a variable key length cipher which can use keys from 32
632 bits to 448 bits in length. It's fast, simple and specifically
633 designed for use on "large microprocessors".
634
635 See also:
636 <http://www.schneier.com/blowfish.html>
637
623config CRYPTO_CAMELLIA 638config CRYPTO_CAMELLIA
624 tristate "Camellia cipher algorithms" 639 tristate "Camellia cipher algorithms"
625 depends on CRYPTO 640 depends on CRYPTO