1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-04-24 05:05:04 +02:00

Work around GCC bug 85328 by forcing trivially masked stores.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85328

Fixes #58.
This commit is contained in:
Samuel Neves 2020-02-13 14:16:12 +00:00
parent fa6f14cafa
commit 207915a751

View File

@ -1112,22 +1112,22 @@ void blake3_hash16_avx512(const uint8_t *const *inputs, size_t blocks,
set1_512(0), set1_512(0), set1_512(0), set1_512(0),
};
transpose_vecs_512(padded);
storeu_256(_mm512_castsi512_si256(padded[0]), &out[0 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[1]), &out[1 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[2]), &out[2 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[3]), &out[3 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[4]), &out[4 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[5]), &out[5 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[6]), &out[6 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[7]), &out[7 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[8]), &out[8 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[9]), &out[9 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[10]), &out[10 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[11]), &out[11 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[12]), &out[12 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[13]), &out[13 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[14]), &out[14 * sizeof(__m256i)]);
storeu_256(_mm512_castsi512_si256(padded[15]), &out[15 * sizeof(__m256i)]);
_mm256_mask_storeu_epi32(&out[0 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[0]));
_mm256_mask_storeu_epi32(&out[1 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[1]));
_mm256_mask_storeu_epi32(&out[2 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[2]));
_mm256_mask_storeu_epi32(&out[3 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[3]));
_mm256_mask_storeu_epi32(&out[4 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[4]));
_mm256_mask_storeu_epi32(&out[5 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[5]));
_mm256_mask_storeu_epi32(&out[6 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[6]));
_mm256_mask_storeu_epi32(&out[7 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[7]));
_mm256_mask_storeu_epi32(&out[8 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[8]));
_mm256_mask_storeu_epi32(&out[9 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[9]));
_mm256_mask_storeu_epi32(&out[10 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[10]));
_mm256_mask_storeu_epi32(&out[11 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[11]));
_mm256_mask_storeu_epi32(&out[12 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[12]));
_mm256_mask_storeu_epi32(&out[13 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[13]));
_mm256_mask_storeu_epi32(&out[14 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[14]));
_mm256_mask_storeu_epi32(&out[15 * sizeof(__m256i)], (__mmask8)-1, _mm512_castsi512_si256(padded[15]));
}
/*