diff options
author | Martin Willi <martin@strongswan.org> | 2018-11-11 10:36:30 +0100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-11-16 14:11:04 +0800 |
commit | 8a5a79d5556b822143b4403fc46068d4eef2e4e2 (patch) | |
tree | bbbc738cd20c7f2a461b26b3be6fc3abde942710 /crypto | |
parent | a5dd97f86211e91219807db607d740f9896b8e0b (diff) | |
download | linux-stable-8a5a79d5556b822143b4403fc46068d4eef2e4e2.tar.gz linux-stable-8a5a79d5556b822143b4403fc46068d4eef2e4e2.tar.bz2 linux-stable-8a5a79d5556b822143b4403fc46068d4eef2e4e2.zip |
crypto: x86/chacha20 - Add a 4-block AVX2 variant
This variant builds upon the idea of the 2-block AVX2 variant that
shuffles words after each round. The shuffling has a rather high latency,
so the arithmetic units are not optimally used.
Given that we have plenty of registers in AVX, this version parallelizes
the 2-block variant to do four blocks. While the first two blocks are
shuffling, the CPU can do the XORing on the second two blocks and
vice-versa, which makes this version much faster than the SSSE3 variant
for four blocks. The latter is now mostly for systems that do not have
AVX2, but there it is the work-horse, so we keep it in place.
The partial XORing function trailer is very similar to the AVX2 2-block
variant. While it could be shared, that code segment is rather short;
profiling is also easier with the trailer integrated, so we keep it per
function.
Signed-off-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
0 files changed, 0 insertions, 0 deletions