Home GnuPG

chacha20: add SSSE3 assembly implementation
def7d4cad386Unpublished

Unpublished Commit ยท Learn More

Not On Permanent Ref: This commit is not an ancestor of any permanent ref.

Description

chacha20: add SSSE3 assembly implementation

* cipher/Makefile.am: Add 'chacha20-ssse3-amd64.S'.
* cipher/chacha20-ssse3-amd64.S: New.
* cipher/chacha20.c (USE_SSSE3): New macro.
[USE_SSSE3] (_gcry_chacha20_amd64_ssse3_blocks): New.
(chacha20_do_setkey): Select SSSE3 implementation if there is HW
support.
* configure.ac [host=x86-64]: Add 'chacha20-ssse3-amd64.lo'.

Add SSSE3 optimized implementation for ChaCha20. Based on implementation
by Andrew Moon.

Before (Intel Haswell):

CHACHA20 | nanosecs/byte mebibytes/sec cycles/byte

STREAM enc |      1.97 ns/B     483.6 MiB/s      6.31 c/B
STREAM dec |      1.97 ns/B     484.0 MiB/s      6.31 c/B

After:

CHACHA20 | nanosecs/byte mebibytes/sec cycles/byte

STREAM enc |     0.742 ns/B    1284.8 MiB/s      2.38 c/B
STREAM dec |     0.741 ns/B    1286.5 MiB/s      2.37 c/B
  • Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>

Details

Provenance
jukiviliAuthored on May 11 2014, 11:00 AM
Parents
rC23f33d57c9b6: Add ChaCha20 stream cipher
Branches
Unknown
Tags
Unknown

Event Timeline

Jussi Kivilinna <jussi.kivilinna@iki.fi> committed rCdef7d4cad386: chacha20: add SSSE3 assembly implementation (authored by Jussi Kivilinna <jussi.kivilinna@iki.fi>).May 11 2014, 11:00 AM