diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2011-09-01 18:45:22 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2011-09-22 07:25:26 -0400 |
commit | 64b94ceae8c16cd1b2800cac83112d3815be5250 (patch) | |
tree | c7e3384659522cac32dc85a34e4ed722346a0f91 /crypto | |
parent | 7d47b86cfef808c6580b7603c3f17fcaf27e9d14 (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/Kconfig | 15 |
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 | ||
623 | config 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 | |||
623 | config CRYPTO_CAMELLIA | 638 | config CRYPTO_CAMELLIA |
624 | tristate "Camellia cipher algorithms" | 639 | tristate "Camellia cipher algorithms" |
625 | depends on CRYPTO | 640 | depends on CRYPTO |