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 /arch/x86/crypto/Makefile | |
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 'arch/x86/crypto/Makefile')
-rw-r--r-- | arch/x86/crypto/Makefile | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index 57c7f7b4436d..725addfacf0a 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile | |||
@@ -7,6 +7,7 @@ obj-$(CONFIG_CRYPTO_TWOFISH_586) += twofish-i586.o | |||
7 | obj-$(CONFIG_CRYPTO_SALSA20_586) += salsa20-i586.o | 7 | obj-$(CONFIG_CRYPTO_SALSA20_586) += salsa20-i586.o |
8 | 8 | ||
9 | obj-$(CONFIG_CRYPTO_AES_X86_64) += aes-x86_64.o | 9 | obj-$(CONFIG_CRYPTO_AES_X86_64) += aes-x86_64.o |
10 | obj-$(CONFIG_CRYPTO_BLOWFISH_X86_64) += blowfish-x86_64.o | ||
10 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o | 11 | obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o |
11 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o | 12 | obj-$(CONFIG_CRYPTO_SALSA20_X86_64) += salsa20-x86_64.o |
12 | obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o | 13 | obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o |
@@ -20,6 +21,7 @@ twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o | |||
20 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o | 21 | salsa20-i586-y := salsa20-i586-asm_32.o salsa20_glue.o |
21 | 22 | ||
22 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o | 23 | aes-x86_64-y := aes-x86_64-asm_64.o aes_glue.o |
24 | blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o | ||
23 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o | 25 | twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o |
24 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o | 26 | salsa20-x86_64-y := salsa20-x86_64-asm_64.o salsa20_glue.o |
25 | 27 | ||