Add AMD64 assembly implementation for arcfour
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Mon, 30 Dec 2013 13:10:13 +0000 (15:10 +0200)
committerJussi Kivilinna <jussi.kivilinna@iki.fi>
Mon, 30 Dec 2013 13:10:13 +0000 (15:10 +0200)
commit7547898109c72a97e3102b2a045ee4fdb2aa40bf
tree2f49ce05d804a1587435633a4b11cddc94fbf0c5
parenta05be441d8cd89b90d8d58e3a343a436dae377d0
Add AMD64 assembly implementation for arcfour

* cipher/Makefile.am: Add 'arcfour-amd64.S'.
* cipher/arcfour-amd64.S: New.
* cipher/arcfour.c (USE_AMD64_ASM): New.
[USE_AMD64_ASM] (ARCFOUR_context, _gcry_arcfour_amd64)
(encrypt_stream): New.
* configure.ac [host=x86_64]: Add 'arcfour-amd64.lo'.
--

Patch adds Marc Bevand's public-domain AMD64 assembly implementation of RC4 to
libgcrypt. Original implementation is at:
  http://www.zorinaq.com/papers/rc4-amd64.html

Benchmarks on Intel i5-4570 (3200 Mhz):

New:
 ARCFOUR        |  nanosecs/byte   mebibytes/sec   cycles/byte
     STREAM enc |      1.29 ns/B     737.7 MiB/s      4.14 c/B
     STREAM dec |      1.31 ns/B     730.6 MiB/s      4.18 c/B

Old (C-language):
 ARCFOUR        |  nanosecs/byte   mebibytes/sec   cycles/byte
     STREAM enc |      2.09 ns/B     457.4 MiB/s      6.67 c/B
     STREAM dec |      2.09 ns/B     457.2 MiB/s      6.68 c/B

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
cipher/Makefile.am
cipher/arcfour-amd64.S [new file with mode: 0644]
cipher/arcfour.c
configure.ac