diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2011-11-09 09:26:31 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2011-11-21 03:13:23 -0500 |
commit | 251496dbfc1be38bc43b49651f3d33c02faccc47 (patch) | |
tree | e17a6704b90b94d0da126eba603fe20cb7ca822c /crypto | |
parent | 937c30d7f560210b0163035edd42b2aef78fed9e (diff) |
crypto: serpent - add 4-way parallel i586/SSE2 assembler implementation
Patch adds i586/SSE2 assembler implementation of serpent cipher. Assembler
functions crypt data in four block chunks.
Patch has been tested with tcrypt and automated filesystem tests.
Tcrypt benchmarks results (serpent-sse2/serpent_generic speed ratios):
Intel Atom N270:
size ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec
16 0.95x 1.12x 1.02x 1.07x 0.97x 0.98x
64 1.73x 1.82x 1.08x 1.82x 1.72x 1.73x
256 2.08x 2.00x 1.04x 2.07x 1.99x 2.01x
1024 2.28x 2.18x 1.05x 2.23x 2.17x 2.20x
8192 2.28x 2.13x 1.05x 2.23x 2.18x 2.20x
Full output:
http://koti.mbnet.fi/axh/kernel/crypto/atom-n270/serpent-generic.txt
http://koti.mbnet.fi/axh/kernel/crypto/atom-n270/serpent-sse2.txt
Userspace test results:
Encryption/decryption of sse2-i586 vs generic on Intel Atom N270:
encrypt: 2.35x
decrypt: 2.54x
Encryption/decryption of sse2-i586 vs generic on AMD Phenom II:
encrypt: 1.82x
decrypt: 2.51x
Encryption/decryption of sse2-i586 vs generic on Intel Xeon E7330:
encrypt: 2.99x
decrypt: 3.48x
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 | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index 2df61e458f06..16e0c1304c3a 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig | |||
@@ -783,6 +783,23 @@ config CRYPTO_SERPENT_SSE2_X86_64 | |||
783 | See also: | 783 | See also: |
784 | <http://www.cl.cam.ac.uk/~rja14/serpent.html> | 784 | <http://www.cl.cam.ac.uk/~rja14/serpent.html> |
785 | 785 | ||
786 | config CRYPTO_SERPENT_SSE2_586 | ||
787 | tristate "Serpent cipher algorithm (i586/SSE2)" | ||
788 | depends on X86 && !64BIT | ||
789 | select CRYPTO_ALGAPI | ||
790 | select CRYPTO_SERPENT | ||
791 | help | ||
792 | Serpent cipher algorithm, by Anderson, Biham & Knudsen. | ||
793 | |||
794 | Keys are allowed to be from 0 to 256 bits in length, in steps | ||
795 | of 8 bits. | ||
796 | |||
797 | This module provides Serpent cipher algorithm that processes four | ||
798 | blocks parallel using SSE2 instruction set. | ||
799 | |||
800 | See also: | ||
801 | <http://www.cl.cam.ac.uk/~rja14/serpent.html> | ||
802 | |||
786 | config CRYPTO_TEA | 803 | config CRYPTO_TEA |
787 | tristate "TEA, XTEA and XETA cipher algorithms" | 804 | tristate "TEA, XTEA and XETA cipher algorithms" |
788 | select CRYPTO_ALGAPI | 805 | select CRYPTO_ALGAPI |