mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2026-02-22 16:33:08 +00:00
v25.7
This commit is contained in:
@@ -66,82 +66,60 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
|
||||
#if defined(__SSSE3__) || defined(__ARM_NEON)
|
||||
|
||||
#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
v128_t t0 = v128_alignr8(B1, B0, 8); \
|
||||
v128_t t1 = v128_alignr8(B0, B1, 8); \
|
||||
B0 = t0; \
|
||||
B1 = t1; \
|
||||
\
|
||||
t0 = C0; \
|
||||
C0 = C1; \
|
||||
C1 = t0; \
|
||||
\
|
||||
t0 = v128_alignr8(D1, D0, 8); \
|
||||
t1 = v128_alignr8(D0, D1, 8); \
|
||||
D0 = t1; \
|
||||
D1 = t0; \
|
||||
} while ((void)0, 0)
|
||||
#define DIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
v128_t t = v128_alignr8( B1, B0, 8 ); \
|
||||
B1 = v128_alignr8( B0, B1, 8 ); \
|
||||
B0 = t; \
|
||||
t = v128_alignr8( D1, D0, 8 ); \
|
||||
D0 = v128_alignr8( D0, D1, 8 ); \
|
||||
D1 = t; \
|
||||
}
|
||||
|
||||
#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
v128_t t0 = v128_alignr8(B0, B1, 8); \
|
||||
v128_t t1 = v128_alignr8(B1, B0, 8); \
|
||||
B0 = t0; \
|
||||
B1 = t1; \
|
||||
\
|
||||
t0 = C0; \
|
||||
C0 = C1; \
|
||||
C1 = t0; \
|
||||
\
|
||||
t0 = v128_alignr8(D0, D1, 8); \
|
||||
t1 = v128_alignr8(D1, D0, 8); \
|
||||
D0 = t1; \
|
||||
D1 = t0; \
|
||||
} while ((void)0, 0)
|
||||
#define UNDIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
v128_t t = v128_alignr8( B0, B1, 8 ); \
|
||||
B1 = v128_alignr8( B1, B0, 8 ); \
|
||||
B0 = t; \
|
||||
t = v128_alignr8( D0, D1, 8 ); \
|
||||
D0 = v128_alignr8( D1, D0, 8 ); \
|
||||
D1 = t; \
|
||||
}
|
||||
|
||||
#else /* SSE2 */
|
||||
|
||||
#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
v128_t t0 = D0; \
|
||||
v128_t t1 = B0; \
|
||||
D0 = C0; \
|
||||
C0 = C1; \
|
||||
C1 = D0; \
|
||||
D0 = v128_unpackhi64(D1, v128_unpacklo64(t0, t0)); \
|
||||
D1 = v128_unpackhi64(t0, v128_unpacklo64(D1, D1)); \
|
||||
B0 = v128_unpackhi64(B0, v128_unpacklo64(B1, B1)); \
|
||||
B1 = v128_unpackhi64(B1, v128_unpacklo64(t1, t1)); \
|
||||
} while ((void)0, 0)
|
||||
#define DIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
v128_t t = D0; \
|
||||
D0 = v128_unpackhi64( D1, v128_unpacklo64( D0, D0 ) ); \
|
||||
D1 = v128_unpackhi64( t, v128_unpacklo64( D1, D1 ) ); \
|
||||
t = B0; \
|
||||
B0 = v128_unpackhi64( B0, v128_unpacklo64( B1, B1 ) ); \
|
||||
B1 = v128_unpackhi64( B1, v128_unpacklo64( t, t ) ); \
|
||||
}
|
||||
|
||||
#define UNDIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
v128_t t = B0; \
|
||||
B0 = v128_unpackhi64( B1, v128_unpacklo64( B0, B0 ) ); \
|
||||
B1 = v128_unpackhi64( t, v128_unpacklo64( B1, B1 ) ); \
|
||||
t = D0; \
|
||||
D0 = v128_unpackhi64( D0, v128_unpacklo64( D1, D1 ) ); \
|
||||
D1 = v128_unpackhi64( D1, v128_unpacklo64( t, t ) ); \
|
||||
}
|
||||
|
||||
#define UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
v128_t t0, t1; \
|
||||
t0 = C0; \
|
||||
C0 = C1; \
|
||||
C1 = t0; \
|
||||
t0 = B0; \
|
||||
t1 = D0; \
|
||||
B0 = v128_unpackhi64(B1, v128_unpacklo64(B0, B0)); \
|
||||
B1 = v128_unpackhi64(t0, v128_unpacklo64(B1, B1)); \
|
||||
D0 = v128_unpackhi64(D0, v128_unpacklo64(D1, D1)); \
|
||||
D1 = v128_unpackhi64(D1, v128_unpacklo64(t1, t1)); \
|
||||
} while ((void)0, 0)
|
||||
#endif
|
||||
|
||||
#define BLAKE2_ROUND(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
do { \
|
||||
G1(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
G2(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
G1(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
G2(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
} while ((void)0, 0)
|
||||
#define BLAKE2_ROUND( A0, A1, B0, B1, C0, C1, D0, D1 ) \
|
||||
{ \
|
||||
G1( A0, B0, C0, D0, A1, B1, C1, D1 ); \
|
||||
G2( A0, B0, C0, D0, A1, B1, C1, D1 ); \
|
||||
DIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ); \
|
||||
G1( A0, B0, C1, D0, A1, B1, C0, D1 ); \
|
||||
G2( A0, B0, C1, D0, A1, B1, C0, D1 ); \
|
||||
UNDIAGONALIZE( A0, B0, C0, D0, A1, B1, C1, D1 ); \
|
||||
}
|
||||
|
||||
#else /* __AVX2__ */
|
||||
|
||||
#include <immintrin.h>
|
||||
@@ -211,7 +189,6 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
\
|
||||
B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
@@ -219,17 +196,14 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
|
||||
#define DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
do { \
|
||||
__m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \
|
||||
__m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \
|
||||
B1 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \
|
||||
tmp1 = C0; \
|
||||
B0 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \
|
||||
C0 = C1; \
|
||||
tmp2 = _mm256_blend_epi32(D0, D1, 0x33); \
|
||||
C1 = tmp1; \
|
||||
__m256i tmp1 = _mm256_blend_epi32(B0, B1, 0x33); \
|
||||
__m256i tmp2 = _mm256_blend_epi32(B0, B1, 0xCC); \
|
||||
B0 = _mm256_shuffle_epi32( tmp1, 0x4e ); \
|
||||
B1 = _mm256_shuffle_epi32( tmp2, 0x4e ); \
|
||||
tmp1 = _mm256_blend_epi32(D0, D1, 0xCC); \
|
||||
D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \
|
||||
D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \
|
||||
tmp2 = _mm256_blend_epi32(D0, D1, 0x33); \
|
||||
D0 = _mm256_shuffle_epi32( tmp1, 0x4e ); \
|
||||
D1 = _mm256_shuffle_epi32( tmp2, 0x4e ); \
|
||||
} while(0);
|
||||
|
||||
#define UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
@@ -237,7 +211,6 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
B0 = _mm256_permute4x64_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
C0 = _mm256_permute4x64_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
D0 = _mm256_permute4x64_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
\
|
||||
B1 = _mm256_permute4x64_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
C1 = _mm256_permute4x64_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
D1 = _mm256_permute4x64_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
@@ -247,27 +220,21 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
do { \
|
||||
__m256i tmp1 = _mm256_blend_epi32(B0, B1, 0xCC); \
|
||||
__m256i tmp2 = _mm256_blend_epi32(B0, B1, 0x33); \
|
||||
B0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \
|
||||
tmp1 = C0; \
|
||||
B1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \
|
||||
C0 = C1; \
|
||||
B0 = _mm256_shuffle_epi32( tmp1, 0x4e ); \
|
||||
B1 = _mm256_shuffle_epi32( tmp2, 0x4e ); \
|
||||
tmp2 = _mm256_blend_epi32(D0, D1, 0xCC); \
|
||||
C1 = tmp1; \
|
||||
tmp1 = _mm256_blend_epi32(D0, D1, 0x33); \
|
||||
D1 = _mm256_permute4x64_epi64(tmp2, _MM_SHUFFLE(2,3,0,1)); \
|
||||
D0 = _mm256_permute4x64_epi64(tmp1, _MM_SHUFFLE(2,3,0,1)); \
|
||||
D1 = _mm256_shuffle_epi32( tmp2, 0x4e ); \
|
||||
D0 = _mm256_shuffle_epi32( tmp1, 0x4e ); \
|
||||
} while((void)0, 0);
|
||||
|
||||
#define BLAKE2_ROUND_1(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
do{ \
|
||||
G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
\
|
||||
DIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
\
|
||||
G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
\
|
||||
UNDIAGONALIZE_1(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
} while((void)0, 0);
|
||||
|
||||
@@ -275,12 +242,9 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
do{ \
|
||||
G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
\
|
||||
DIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
\
|
||||
G1_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
G2_AVX2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
\
|
||||
G1_AVX2(A0, A1, B0, B1, C1, C0, D0, D1) \
|
||||
G2_AVX2(A0, A1, B0, B1, C1, C0, D0, D1) \
|
||||
UNDIAGONALIZE_2(A0, A1, B0, B1, C0, C1, D0, D1) \
|
||||
} while((void)0, 0);
|
||||
|
||||
@@ -290,12 +254,73 @@ static BLAKE2_INLINE v128_t fBlaMka(v128_t x, v128_t y)
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
/*
|
||||
static inline __m512i muladd(__m512i x, __m512i y)
|
||||
{
|
||||
__m512i z = _mm512_mul_epu32(x, y);
|
||||
return _mm512_add_epi64(_mm512_add_epi64(x, y), _mm512_add_epi64(z, z));
|
||||
}
|
||||
*/
|
||||
|
||||
#define G1( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
__m512i z0, z1; \
|
||||
z0 = _mm512_mul_epu32( A0, B0 ); \
|
||||
z1 = _mm512_mul_epu32( A1, B1 ); \
|
||||
A0 = _mm512_add_epi64( A0, B0 ); \
|
||||
A1 = _mm512_add_epi64( A1, B1 ); \
|
||||
z0 = _mm512_add_epi64( z0, z0 ); \
|
||||
z1 = _mm512_add_epi64( z1, z1 ); \
|
||||
A0 = _mm512_add_epi64( A0, z0 ); \
|
||||
A1 = _mm512_add_epi64( A1, z1 ); \
|
||||
D0 = _mm512_xor_si512(D0, A0); \
|
||||
D1 = _mm512_xor_si512(D1, A1); \
|
||||
D0 = _mm512_ror_epi64(D0, 32); \
|
||||
D1 = _mm512_ror_epi64(D1, 32); \
|
||||
z0 = _mm512_mul_epu32( C0, D0 ); \
|
||||
z1 = _mm512_mul_epu32( C1, D1 ); \
|
||||
C0 = _mm512_add_epi64( C0, D0 ); \
|
||||
C1 = _mm512_add_epi64( C1, D1 ); \
|
||||
z0 = _mm512_add_epi64( z0, z0 ); \
|
||||
z1 = _mm512_add_epi64( z1, z1 ); \
|
||||
C0 = _mm512_add_epi64( C0, z0 ); \
|
||||
C1 = _mm512_add_epi64( C1, z1 ); \
|
||||
B0 = _mm512_xor_si512(B0, C0); \
|
||||
B1 = _mm512_xor_si512(B1, C1); \
|
||||
B0 = _mm512_ror_epi64(B0, 24); \
|
||||
B1 = _mm512_ror_epi64(B1, 24); \
|
||||
}
|
||||
|
||||
#define G2( A0, B0, C0, D0, A1, B1, C1, D1 ) \
|
||||
{ \
|
||||
__m512i z0, z1; \
|
||||
z0 = _mm512_mul_epu32( A0, B0 ); \
|
||||
z1 = _mm512_mul_epu32( A1, B1 ); \
|
||||
A0 = _mm512_add_epi64( A0, B0 ); \
|
||||
A1 = _mm512_add_epi64( A1, B1 ); \
|
||||
z0 = _mm512_add_epi64( z0, z0 ); \
|
||||
z1 = _mm512_add_epi64( z1, z1 ); \
|
||||
A0 = _mm512_add_epi64( A0, z0 ); \
|
||||
A1 = _mm512_add_epi64( A1, z1 ); \
|
||||
D0 = _mm512_xor_si512(D0, A0); \
|
||||
D1 = _mm512_xor_si512(D1, A1); \
|
||||
D0 = _mm512_ror_epi64(D0, 16); \
|
||||
D1 = _mm512_ror_epi64(D1, 16); \
|
||||
z0 = _mm512_mul_epu32( C0, D0 ); \
|
||||
z1 = _mm512_mul_epu32( C1, D1 ); \
|
||||
C0 = _mm512_add_epi64( C0, D0 ); \
|
||||
C1 = _mm512_add_epi64( C1, D1 ); \
|
||||
z0 = _mm512_add_epi64( z0, z0 ); \
|
||||
z1 = _mm512_add_epi64( z1, z1 ); \
|
||||
C0 = _mm512_add_epi64( C0, z0 ); \
|
||||
C1 = _mm512_add_epi64( C1, z1 ); \
|
||||
B0 = _mm512_xor_si512(B0, C0); \
|
||||
B1 = _mm512_xor_si512(B1, C1); \
|
||||
B0 = _mm512_ror_epi64(B0, 63); \
|
||||
B1 = _mm512_ror_epi64(B1, 63); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define G1(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
A0 = muladd(A0, B0); \
|
||||
@@ -316,7 +341,8 @@ static inline __m512i muladd(__m512i x, __m512i y)
|
||||
B0 = _mm512_ror_epi64(B0, 24); \
|
||||
B1 = _mm512_ror_epi64(B1, 24); \
|
||||
} while ((void)0, 0)
|
||||
|
||||
*/
|
||||
/*
|
||||
#define G2(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
A0 = muladd(A0, B0); \
|
||||
@@ -337,15 +363,14 @@ static inline __m512i muladd(__m512i x, __m512i y)
|
||||
B0 = _mm512_ror_epi64(B0, 63); \
|
||||
B1 = _mm512_ror_epi64(B1, 63); \
|
||||
} while ((void)0, 0)
|
||||
*/
|
||||
|
||||
#define DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1) \
|
||||
do { \
|
||||
B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
\
|
||||
C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
\
|
||||
D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
} while ((void)0, 0)
|
||||
@@ -354,10 +379,8 @@ static inline __m512i muladd(__m512i x, __m512i y)
|
||||
do { \
|
||||
B0 = _mm512_permutex_epi64(B0, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
B1 = _mm512_permutex_epi64(B1, _MM_SHUFFLE(2, 1, 0, 3)); \
|
||||
\
|
||||
C0 = _mm512_permutex_epi64(C0, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
C1 = _mm512_permutex_epi64(C1, _MM_SHUFFLE(1, 0, 3, 2)); \
|
||||
\
|
||||
D0 = _mm512_permutex_epi64(D0, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
D1 = _mm512_permutex_epi64(D1, _MM_SHUFFLE(0, 3, 2, 1)); \
|
||||
} while ((void)0, 0)
|
||||
@@ -366,15 +389,17 @@ static inline __m512i muladd(__m512i x, __m512i y)
|
||||
do { \
|
||||
G1(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
G2(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
DIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
G1(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
G2(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
\
|
||||
UNDIAGONALIZE(A0, B0, C0, D0, A1, B1, C1, D1); \
|
||||
} while ((void)0, 0)
|
||||
|
||||
static const __m512i swap_q0 = { 0,1, 8,9, 2,3, 10,11 };
|
||||
static const __m512i swap_q1 = { 4,5, 12,13, 6,7, 14,15 };
|
||||
static const __m512i uswap_q0 = { 0,1, 4,5, 8,9, 12,13 };
|
||||
static const __m512i uswap_q1 = { 2,3, 6,7, 10,11, 14,15 };
|
||||
|
||||
#define SWAP_HALVES(A0, A1) \
|
||||
do { \
|
||||
__m512i t; \
|
||||
@@ -383,19 +408,36 @@ static inline __m512i muladd(__m512i x, __m512i y)
|
||||
A0 = t; \
|
||||
} while((void)0, 0)
|
||||
|
||||
#define SWAP_QUARTERS(A0, A1) \
|
||||
{ \
|
||||
__m512i t = _mm512_permutex2var_epi64( A0, swap_q0, A1 ); \
|
||||
A1 = _mm512_permutex2var_epi64( A0, swap_q1, A1 ); \
|
||||
A0 = t; \
|
||||
}
|
||||
|
||||
#define UNSWAP_QUARTERS(A0, A1) \
|
||||
{ \
|
||||
__m512i t = _mm512_permutex2var_epi64( A0, uswap_q0, A1 ); \
|
||||
A1 = _mm512_permutex2var_epi64( A0, uswap_q1, A1 ); \
|
||||
A0 = t; \
|
||||
}
|
||||
|
||||
/*
|
||||
#define SWAP_QUARTERS(A0, A1) \
|
||||
do { \
|
||||
SWAP_HALVES(A0, A1); \
|
||||
A0 = _mm512_shuffle_i64x2( A0, A0, 0xd8 ); \
|
||||
A1 = _mm512_shuffle_i64x2( A1, A1, 0xd8 ); \
|
||||
} while((void)0, 0)
|
||||
|
||||
*/
|
||||
/*
|
||||
#define UNSWAP_QUARTERS(A0, A1) \
|
||||
do { \
|
||||
A0 = _mm512_shuffle_i64x2( A0, A0, 0xd8 ); \
|
||||
A1 = _mm512_shuffle_i64x2( A1, A1, 0xd8 ); \
|
||||
SWAP_HALVES(A0, A1); \
|
||||
} while((void)0, 0)
|
||||
*/
|
||||
|
||||
#define BLAKE2_ROUND_1(A0, C0, B0, D0, A1, C1, B1, D1) \
|
||||
do { \
|
||||
|
||||
Reference in New Issue
Block a user