mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
Constify
This commit is contained in:
@@ -39,22 +39,22 @@ blake2b_compress_ssse3(blake2b_state *S,
|
||||
_mm_setr_epi8(2, 3, 4, 5, 6, 7, 0, 1, 10, 11, 12, 13, 14, 15, 8, 9);
|
||||
const __m128i r24 =
|
||||
_mm_setr_epi8(3, 4, 5, 6, 7, 0, 1, 2, 11, 12, 13, 14, 15, 8, 9, 10);
|
||||
const uint64_t m0 = ((uint64_t *) block)[0];
|
||||
const uint64_t m1 = ((uint64_t *) block)[1];
|
||||
const uint64_t m2 = ((uint64_t *) block)[2];
|
||||
const uint64_t m3 = ((uint64_t *) block)[3];
|
||||
const uint64_t m4 = ((uint64_t *) block)[4];
|
||||
const uint64_t m5 = ((uint64_t *) block)[5];
|
||||
const uint64_t m6 = ((uint64_t *) block)[6];
|
||||
const uint64_t m7 = ((uint64_t *) block)[7];
|
||||
const uint64_t m8 = ((uint64_t *) block)[8];
|
||||
const uint64_t m9 = ((uint64_t *) block)[9];
|
||||
const uint64_t m10 = ((uint64_t *) block)[10];
|
||||
const uint64_t m11 = ((uint64_t *) block)[11];
|
||||
const uint64_t m12 = ((uint64_t *) block)[12];
|
||||
const uint64_t m13 = ((uint64_t *) block)[13];
|
||||
const uint64_t m14 = ((uint64_t *) block)[14];
|
||||
const uint64_t m15 = ((uint64_t *) block)[15];
|
||||
const uint64_t m0 = ((const uint64_t *) block)[0];
|
||||
const uint64_t m1 = ((const uint64_t *) block)[1];
|
||||
const uint64_t m2 = ((const uint64_t *) block)[2];
|
||||
const uint64_t m3 = ((const uint64_t *) block)[3];
|
||||
const uint64_t m4 = ((const uint64_t *) block)[4];
|
||||
const uint64_t m5 = ((const uint64_t *) block)[5];
|
||||
const uint64_t m6 = ((const uint64_t *) block)[6];
|
||||
const uint64_t m7 = ((const uint64_t *) block)[7];
|
||||
const uint64_t m8 = ((const uint64_t *) block)[8];
|
||||
const uint64_t m9 = ((const uint64_t *) block)[9];
|
||||
const uint64_t m10 = ((const uint64_t *) block)[10];
|
||||
const uint64_t m11 = ((const uint64_t *) block)[11];
|
||||
const uint64_t m12 = ((const uint64_t *) block)[12];
|
||||
const uint64_t m13 = ((const uint64_t *) block)[13];
|
||||
const uint64_t m14 = ((const uint64_t *) block)[14];
|
||||
const uint64_t m15 = ((const uint64_t *) block)[15];
|
||||
|
||||
row1l = LOADU(&S->h[0]);
|
||||
row1h = LOADU(&S->h[2]);
|
||||
|
||||
@@ -158,11 +158,11 @@ escrypt_r(escrypt_local_t *local, const uint8_t *passwd, size_t passwdlen,
|
||||
prefixlen = src - setting;
|
||||
|
||||
salt = src;
|
||||
src = (uint8_t *) strrchr((char *) salt, '$');
|
||||
src = (const uint8_t *) strrchr((char *) salt, '$');
|
||||
if (src) {
|
||||
saltlen = src - salt;
|
||||
} else {
|
||||
saltlen = strlen((char *) salt);
|
||||
saltlen = strlen((const char *) salt);
|
||||
}
|
||||
need = prefixlen + saltlen + 1 +
|
||||
crypto_pwhash_scryptsalsa208sha256_STRHASHBYTES_ENCODED + 1;
|
||||
|
||||
+7
-4
@@ -181,20 +181,23 @@ blockmix_salsa8(const uint32_t *Bin, uint32_t *Bout, uint32_t *X, size_t r)
|
||||
|
||||
/* 1: X <-- B_{2r - 1} */
|
||||
blkcpy_64((escrypt_block_t *) X,
|
||||
(escrypt_block_t *) &Bin[(2 * r - 1) * 16]);
|
||||
(const escrypt_block_t *) &Bin[(2 * r - 1) * 16]);
|
||||
|
||||
/* 2: for i = 0 to 2r - 1 do */
|
||||
for (i = 0; i < 2 * r; i += 2) {
|
||||
/* 3: X <-- H(X \xor B_i) */
|
||||
blkxor_64((escrypt_block_t *) X, (escrypt_block_t *) &Bin[i * 16]);
|
||||
blkxor_64((escrypt_block_t *) X,
|
||||
(const escrypt_block_t *) &Bin[i * 16]);
|
||||
salsa20_8(X);
|
||||
|
||||
/* 4: Y_i <-- X */
|
||||
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||
blkcpy_64((escrypt_block_t *) &Bout[i * 8], (escrypt_block_t *) X);
|
||||
blkcpy_64((escrypt_block_t *) &Bout[i * 8],
|
||||
(const escrypt_block_t *) X);
|
||||
|
||||
/* 3: X <-- H(X \xor B_i) */
|
||||
blkxor_64((escrypt_block_t *) X, (escrypt_block_t *) &Bin[i * 16 + 16]);
|
||||
blkxor_64((escrypt_block_t *) X,
|
||||
(const escrypt_block_t *) &Bin[i * 16 + 16]);
|
||||
salsa20_8(X);
|
||||
|
||||
/* 4: Y_i <-- X */
|
||||
|
||||
@@ -9,10 +9,10 @@ if (bytes > 0) {
|
||||
|
||||
unsigned int i;
|
||||
|
||||
x_0 = _mm_loadu_si128((__m128i*) (x + 0));
|
||||
x_1 = _mm_loadu_si128((__m128i*) (x + 4));
|
||||
x_2 = _mm_loadu_si128((__m128i*) (x + 8));
|
||||
x_3 = _mm_loadu_si128((__m128i*) (x + 12));
|
||||
x_0 = _mm_loadu_si128((const __m128i*) (x + 0));
|
||||
x_1 = _mm_loadu_si128((const __m128i*) (x + 4));
|
||||
x_2 = _mm_loadu_si128((const __m128i*) (x + 8));
|
||||
x_3 = _mm_loadu_si128((const __m128i*) (x + 12));
|
||||
|
||||
for (i = 0; i < ROUNDS; i += 2) {
|
||||
x_0 = _mm_add_epi32(x_0, x_1);
|
||||
|
||||
@@ -10,10 +10,10 @@ while (bytes >= 64) {
|
||||
uint32_t in13;
|
||||
int i;
|
||||
|
||||
x_0 = _mm_loadu_si128((__m128i*) (x + 0));
|
||||
x_1 = _mm_loadu_si128((__m128i*) (x + 4));
|
||||
x_2 = _mm_loadu_si128((__m128i*) (x + 8));
|
||||
x_3 = _mm_loadu_si128((__m128i*) (x + 12));
|
||||
x_0 = _mm_loadu_si128((const __m128i*) (x + 0));
|
||||
x_1 = _mm_loadu_si128((const __m128i*) (x + 4));
|
||||
x_2 = _mm_loadu_si128((const __m128i*) (x + 8));
|
||||
x_3 = _mm_loadu_si128((const __m128i*) (x + 12));
|
||||
|
||||
for (i = 0; i < ROUNDS; i += 2) {
|
||||
x_0 = _mm_add_epi32(x_0, x_1);
|
||||
@@ -70,14 +70,14 @@ while (bytes >= 64) {
|
||||
t_1 = _mm_srli_epi32(t_1, 25);
|
||||
x_1 = _mm_xor_si128(x_1, t_1);
|
||||
}
|
||||
x_0 = _mm_add_epi32(x_0, _mm_loadu_si128((__m128i*) (x + 0)));
|
||||
x_1 = _mm_add_epi32(x_1, _mm_loadu_si128((__m128i*) (x + 4)));
|
||||
x_2 = _mm_add_epi32(x_2, _mm_loadu_si128((__m128i*) (x + 8)));
|
||||
x_3 = _mm_add_epi32(x_3, _mm_loadu_si128((__m128i*) (x + 12)));
|
||||
x_0 = _mm_xor_si128(x_0, _mm_loadu_si128((__m128i*) (m + 0)));
|
||||
x_1 = _mm_xor_si128(x_1, _mm_loadu_si128((__m128i*) (m + 16)));
|
||||
x_2 = _mm_xor_si128(x_2, _mm_loadu_si128((__m128i*) (m + 32)));
|
||||
x_3 = _mm_xor_si128(x_3, _mm_loadu_si128((__m128i*) (m + 48)));
|
||||
x_0 = _mm_add_epi32(x_0, _mm_loadu_si128((const __m128i*) (x + 0)));
|
||||
x_1 = _mm_add_epi32(x_1, _mm_loadu_si128((const __m128i*) (x + 4)));
|
||||
x_2 = _mm_add_epi32(x_2, _mm_loadu_si128((const __m128i*) (x + 8)));
|
||||
x_3 = _mm_add_epi32(x_3, _mm_loadu_si128((const __m128i*) (x + 12)));
|
||||
x_0 = _mm_xor_si128(x_0, _mm_loadu_si128((const __m128i*) (m + 0)));
|
||||
x_1 = _mm_xor_si128(x_1, _mm_loadu_si128((const __m128i*) (m + 16)));
|
||||
x_2 = _mm_xor_si128(x_2, _mm_loadu_si128((const __m128i*) (m + 32)));
|
||||
x_3 = _mm_xor_si128(x_3, _mm_loadu_si128((const __m128i*) (m + 48)));
|
||||
_mm_storeu_si128((__m128i*) (c + 0), x_0);
|
||||
_mm_storeu_si128((__m128i*) (c + 16), x_1);
|
||||
_mm_storeu_si128((__m128i*) (c + 32), x_2);
|
||||
|
||||
@@ -120,31 +120,33 @@ if (bytes >= 256) {
|
||||
VEC4_QUARTERROUND(3, 4, 9, 14);
|
||||
}
|
||||
|
||||
#define ONEQUAD_TRANSPOSE(A, B, C, D) \
|
||||
{ \
|
||||
__m128i t0, t1, t2, t3; \
|
||||
\
|
||||
x_##A = _mm_add_epi32(x_##A, orig##A); \
|
||||
x_##B = _mm_add_epi32(x_##B, orig##B); \
|
||||
x_##C = _mm_add_epi32(x_##C, orig##C); \
|
||||
x_##D = _mm_add_epi32(x_##D, orig##D); \
|
||||
t_##A = _mm_unpacklo_epi32(x_##A, x_##B); \
|
||||
t_##B = _mm_unpacklo_epi32(x_##C, x_##D); \
|
||||
t_##C = _mm_unpackhi_epi32(x_##A, x_##B); \
|
||||
t_##D = _mm_unpackhi_epi32(x_##C, x_##D); \
|
||||
x_##A = _mm_unpacklo_epi64(t_##A, t_##B); \
|
||||
x_##B = _mm_unpackhi_epi64(t_##A, t_##B); \
|
||||
x_##C = _mm_unpacklo_epi64(t_##C, t_##D); \
|
||||
x_##D = _mm_unpackhi_epi64(t_##C, t_##D); \
|
||||
\
|
||||
t0 = _mm_xor_si128(x_##A, _mm_loadu_si128((__m128i*) (m + 0))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 0), t0); \
|
||||
t1 = _mm_xor_si128(x_##B, _mm_loadu_si128((__m128i*) (m + 64))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 64), t1); \
|
||||
t2 = _mm_xor_si128(x_##C, _mm_loadu_si128((__m128i*) (m + 128))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 128), t2); \
|
||||
t3 = _mm_xor_si128(x_##D, _mm_loadu_si128((__m128i*) (m + 192))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 192), t3); \
|
||||
#define ONEQUAD_TRANSPOSE(A, B, C, D) \
|
||||
{ \
|
||||
__m128i t0, t1, t2, t3; \
|
||||
\
|
||||
x_##A = _mm_add_epi32(x_##A, orig##A); \
|
||||
x_##B = _mm_add_epi32(x_##B, orig##B); \
|
||||
x_##C = _mm_add_epi32(x_##C, orig##C); \
|
||||
x_##D = _mm_add_epi32(x_##D, orig##D); \
|
||||
t_##A = _mm_unpacklo_epi32(x_##A, x_##B); \
|
||||
t_##B = _mm_unpacklo_epi32(x_##C, x_##D); \
|
||||
t_##C = _mm_unpackhi_epi32(x_##A, x_##B); \
|
||||
t_##D = _mm_unpackhi_epi32(x_##C, x_##D); \
|
||||
x_##A = _mm_unpacklo_epi64(t_##A, t_##B); \
|
||||
x_##B = _mm_unpackhi_epi64(t_##A, t_##B); \
|
||||
x_##C = _mm_unpacklo_epi64(t_##C, t_##D); \
|
||||
x_##D = _mm_unpackhi_epi64(t_##C, t_##D); \
|
||||
\
|
||||
t0 = _mm_xor_si128(x_##A, _mm_loadu_si128((const __m128i*) (m + 0))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 0), t0); \
|
||||
t1 = _mm_xor_si128(x_##B, _mm_loadu_si128((const __m128i*) (m + 64))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 64), t1); \
|
||||
t2 = \
|
||||
_mm_xor_si128(x_##C, _mm_loadu_si128((const __m128i*) (m + 128))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 128), t2); \
|
||||
t3 = \
|
||||
_mm_xor_si128(x_##D, _mm_loadu_si128((const __m128i*) (m + 192))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 192), t3); \
|
||||
}
|
||||
|
||||
#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D)
|
||||
|
||||
@@ -200,7 +200,7 @@ if (bytes >= 512) {
|
||||
in12 = x[12];
|
||||
in13 = x[13];
|
||||
in1213 = ((uint64_t) in12) | (((uint64_t) in13) << 32);
|
||||
x_12 = x_13 = _mm256_broadcastq_epi64(_mm_cvtsi64_si128(in1213));
|
||||
x_12 = x_13 = _mm256_broadcastq_epi64(_mm_cvtsi64_si128(in1213));
|
||||
|
||||
t12 = _mm256_add_epi64(addv12, x_12);
|
||||
t13 = _mm256_add_epi64(addv13, x_13);
|
||||
@@ -228,45 +228,45 @@ if (bytes >= 512) {
|
||||
VEC8_ROUND(0, 5, 10, 15, 1, 6, 11, 12, 2, 7, 8, 13, 3, 4, 9, 14);
|
||||
}
|
||||
|
||||
#define ONEQUAD_TRANSPOSE(A, B, C, D) \
|
||||
{ \
|
||||
__m128i t0, t1, t2, t3; \
|
||||
x_##A = _mm256_add_epi32(x_##A, orig##A); \
|
||||
x_##B = _mm256_add_epi32(x_##B, orig##B); \
|
||||
x_##C = _mm256_add_epi32(x_##C, orig##C); \
|
||||
x_##D = _mm256_add_epi32(x_##D, orig##D); \
|
||||
t_##A = _mm256_unpacklo_epi32(x_##A, x_##B); \
|
||||
t_##B = _mm256_unpacklo_epi32(x_##C, x_##D); \
|
||||
t_##C = _mm256_unpackhi_epi32(x_##A, x_##B); \
|
||||
t_##D = _mm256_unpackhi_epi32(x_##C, x_##D); \
|
||||
x_##A = _mm256_unpacklo_epi64(t_##A, t_##B); \
|
||||
x_##B = _mm256_unpackhi_epi64(t_##A, t_##B); \
|
||||
x_##C = _mm256_unpacklo_epi64(t_##C, t_##D); \
|
||||
x_##D = _mm256_unpackhi_epi64(t_##C, t_##D); \
|
||||
t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 0), \
|
||||
_mm_loadu_si128((__m128i*) (m + 0))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 0), t0); \
|
||||
t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 0), \
|
||||
_mm_loadu_si128((__m128i*) (m + 64))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 64), t1); \
|
||||
t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 0), \
|
||||
_mm_loadu_si128((__m128i*) (m + 128))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 128), t2); \
|
||||
t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 0), \
|
||||
_mm_loadu_si128((__m128i*) (m + 192))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 192), t3); \
|
||||
t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 1), \
|
||||
_mm_loadu_si128((__m128i*) (m + 256))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 256), t0); \
|
||||
t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 1), \
|
||||
_mm_loadu_si128((__m128i*) (m + 320))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 320), t1); \
|
||||
t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 1), \
|
||||
_mm_loadu_si128((__m128i*) (m + 384))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 384), t2); \
|
||||
t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 1), \
|
||||
_mm_loadu_si128((__m128i*) (m + 448))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 448), t3); \
|
||||
#define ONEQUAD_TRANSPOSE(A, B, C, D) \
|
||||
{ \
|
||||
__m128i t0, t1, t2, t3; \
|
||||
x_##A = _mm256_add_epi32(x_##A, orig##A); \
|
||||
x_##B = _mm256_add_epi32(x_##B, orig##B); \
|
||||
x_##C = _mm256_add_epi32(x_##C, orig##C); \
|
||||
x_##D = _mm256_add_epi32(x_##D, orig##D); \
|
||||
t_##A = _mm256_unpacklo_epi32(x_##A, x_##B); \
|
||||
t_##B = _mm256_unpacklo_epi32(x_##C, x_##D); \
|
||||
t_##C = _mm256_unpackhi_epi32(x_##A, x_##B); \
|
||||
t_##D = _mm256_unpackhi_epi32(x_##C, x_##D); \
|
||||
x_##A = _mm256_unpacklo_epi64(t_##A, t_##B); \
|
||||
x_##B = _mm256_unpackhi_epi64(t_##A, t_##B); \
|
||||
x_##C = _mm256_unpacklo_epi64(t_##C, t_##D); \
|
||||
x_##D = _mm256_unpackhi_epi64(t_##C, t_##D); \
|
||||
t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 0), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 0))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 0), t0); \
|
||||
t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 0), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 64))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 64), t1); \
|
||||
t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 0), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 128))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 128), t2); \
|
||||
t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 0), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 192))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 192), t3); \
|
||||
t0 = _mm_xor_si128(_mm256_extracti128_si256(x_##A, 1), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 256))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 256), t0); \
|
||||
t1 = _mm_xor_si128(_mm256_extracti128_si256(x_##B, 1), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 320))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 320), t1); \
|
||||
t2 = _mm_xor_si128(_mm256_extracti128_si256(x_##C, 1), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 384))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 384), t2); \
|
||||
t3 = _mm_xor_si128(_mm256_extracti128_si256(x_##D, 1), \
|
||||
_mm_loadu_si128((const __m128i*) (m + 448))); \
|
||||
_mm_storeu_si128((__m128i*) (c + 448), t3); \
|
||||
}
|
||||
|
||||
#define ONEQUAD(A, B, C, D) ONEQUAD_TRANSPOSE(A, B, C, D)
|
||||
@@ -287,42 +287,42 @@ if (bytes >= 512) {
|
||||
x_##D = _mm256_unpackhi_epi64(t_##C, t_##D); \
|
||||
}
|
||||
|
||||
#define ONEOCTO(A, B, C, D, A2, B2, C2, D2) \
|
||||
{ \
|
||||
ONEQUAD_UNPCK(A, B, C, D); \
|
||||
ONEQUAD_UNPCK(A2, B2, C2, D2); \
|
||||
t_##A = _mm256_permute2x128_si256(x_##A, x_##A2, 0x20); \
|
||||
t_##A2 = _mm256_permute2x128_si256(x_##A, x_##A2, 0x31); \
|
||||
t_##B = _mm256_permute2x128_si256(x_##B, x_##B2, 0x20); \
|
||||
t_##B2 = _mm256_permute2x128_si256(x_##B, x_##B2, 0x31); \
|
||||
t_##C = _mm256_permute2x128_si256(x_##C, x_##C2, 0x20); \
|
||||
t_##C2 = _mm256_permute2x128_si256(x_##C, x_##C2, 0x31); \
|
||||
t_##D = _mm256_permute2x128_si256(x_##D, x_##D2, 0x20); \
|
||||
t_##D2 = _mm256_permute2x128_si256(x_##D, x_##D2, 0x31); \
|
||||
t_##A = \
|
||||
_mm256_xor_si256(t_##A, _mm256_loadu_si256((__m256i*) (m + 0))); \
|
||||
t_##B = \
|
||||
_mm256_xor_si256(t_##B, _mm256_loadu_si256((__m256i*) (m + 64))); \
|
||||
t_##C = \
|
||||
_mm256_xor_si256(t_##C, _mm256_loadu_si256((__m256i*) (m + 128))); \
|
||||
t_##D = \
|
||||
_mm256_xor_si256(t_##D, _mm256_loadu_si256((__m256i*) (m + 192))); \
|
||||
t_##A2 = _mm256_xor_si256(t_##A2, \
|
||||
_mm256_loadu_si256((__m256i*) (m + 256))); \
|
||||
t_##B2 = _mm256_xor_si256(t_##B2, \
|
||||
_mm256_loadu_si256((__m256i*) (m + 320))); \
|
||||
t_##C2 = _mm256_xor_si256(t_##C2, \
|
||||
_mm256_loadu_si256((__m256i*) (m + 384))); \
|
||||
t_##D2 = _mm256_xor_si256(t_##D2, \
|
||||
_mm256_loadu_si256((__m256i*) (m + 448))); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 0), t_##A); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 64), t_##B); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 128), t_##C); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 192), t_##D); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 256), t_##A2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 320), t_##B2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 384), t_##C2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 448), t_##D2); \
|
||||
#define ONEOCTO(A, B, C, D, A2, B2, C2, D2) \
|
||||
{ \
|
||||
ONEQUAD_UNPCK(A, B, C, D); \
|
||||
ONEQUAD_UNPCK(A2, B2, C2, D2); \
|
||||
t_##A = _mm256_permute2x128_si256(x_##A, x_##A2, 0x20); \
|
||||
t_##A2 = _mm256_permute2x128_si256(x_##A, x_##A2, 0x31); \
|
||||
t_##B = _mm256_permute2x128_si256(x_##B, x_##B2, 0x20); \
|
||||
t_##B2 = _mm256_permute2x128_si256(x_##B, x_##B2, 0x31); \
|
||||
t_##C = _mm256_permute2x128_si256(x_##C, x_##C2, 0x20); \
|
||||
t_##C2 = _mm256_permute2x128_si256(x_##C, x_##C2, 0x31); \
|
||||
t_##D = _mm256_permute2x128_si256(x_##D, x_##D2, 0x20); \
|
||||
t_##D2 = _mm256_permute2x128_si256(x_##D, x_##D2, 0x31); \
|
||||
t_##A = _mm256_xor_si256( \
|
||||
t_##A, _mm256_loadu_si256((const __m256i*) (m + 0))); \
|
||||
t_##B = _mm256_xor_si256( \
|
||||
t_##B, _mm256_loadu_si256((const __m256i*) (m + 64))); \
|
||||
t_##C = _mm256_xor_si256( \
|
||||
t_##C, _mm256_loadu_si256((const __m256i*) (m + 128))); \
|
||||
t_##D = _mm256_xor_si256( \
|
||||
t_##D, _mm256_loadu_si256((const __m256i*) (m + 192))); \
|
||||
t_##A2 = _mm256_xor_si256( \
|
||||
t_##A2, _mm256_loadu_si256((const __m256i*) (m + 256))); \
|
||||
t_##B2 = _mm256_xor_si256( \
|
||||
t_##B2, _mm256_loadu_si256((const __m256i*) (m + 320))); \
|
||||
t_##C2 = _mm256_xor_si256( \
|
||||
t_##C2, _mm256_loadu_si256((const __m256i*) (m + 384))); \
|
||||
t_##D2 = _mm256_xor_si256( \
|
||||
t_##D2, _mm256_loadu_si256((const __m256i*) (m + 448))); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 0), t_##A); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 64), t_##B); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 128), t_##C); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 192), t_##D); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 256), t_##A2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 320), t_##B2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 384), t_##C2); \
|
||||
_mm256_storeu_si256((__m256i*) (c + 448), t_##D2); \
|
||||
}
|
||||
|
||||
ONEOCTO(0, 1, 2, 3, 4, 5, 6, 7);
|
||||
|
||||
@@ -44,12 +44,12 @@ crypto_verify_n(const unsigned char *x_, const unsigned char *y_,
|
||||
(const volatile __m128i *volatile) (const void *) x_;
|
||||
const volatile __m128i *volatile y =
|
||||
(const volatile __m128i *volatile) (const void *) y_;
|
||||
v1 = _mm_loadu_si128((const __m128i *) &x[0]);
|
||||
v2 = _mm_loadu_si128((const __m128i *) &y[0]);
|
||||
v1 = _mm_loadu_si128((const volatile __m128i *) &x[0]);
|
||||
v2 = _mm_loadu_si128((const volatile __m128i *) &y[0]);
|
||||
z = _mm_xor_si128(v1, v2);
|
||||
for (i = 1; i < n / 16; i++) {
|
||||
v1 = _mm_loadu_si128((const __m128i *) &x[i]);
|
||||
v2 = _mm_loadu_si128((const __m128i *) &y[i]);
|
||||
v1 = _mm_loadu_si128((const volatile __m128i *) &x[i]);
|
||||
v2 = _mm_loadu_si128((const volatile __m128i *) &y[i]);
|
||||
z = _mm_or_si128(z, _mm_xor_si128(v1, v2));
|
||||
}
|
||||
m = _mm_movemask_epi8(_mm_cmpeq_epi32(z, zero));
|
||||
|
||||
Reference in New Issue
Block a user