Skip to content

Commit 01de6d8

Browse files
committed
(ye)scrypt: Use AVX512VL XOP-like bit rotates for faster Salsa20
We need to enable -mavx512vl for this to take effect, hopefully via a future commit soon. See #5691
1 parent 6b266d6 commit 01de6d8

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/yescrypt/yescrypt-opt.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@
7474
#include <emmintrin.h>
7575
#ifdef __XOP__
7676
#include <x86intrin.h>
77+
#elif defined(__AVX512VL__)
78+
#include <immintrin.h>
7779
#endif
7880
#elif defined(__SSE__)
7981
#include <xmmintrin.h>
@@ -167,6 +169,9 @@ static inline void salsa20_simd_unshuffle(const salsa20_blk_t *Bin,
167169
#ifdef __XOP__
168170
#define ARX(out, in1, in2, s) \
169171
out = _mm_xor_si128(out, _mm_roti_epi32(_mm_add_epi32(in1, in2), s));
172+
#elif defined(__AVX512VL__)
173+
#define ARX(out, in1, in2, s) \
174+
out = _mm_xor_si128(out, _mm_rol_epi32(_mm_add_epi32(in1, in2), s));
170175
#else
171176
#define ARX(out, in1, in2, s) { \
172177
__m128i tmp = _mm_add_epi32(in1, in2); \

0 commit comments

Comments
 (0)