diff --git a/c/blake3_avx512.c b/c/blake3_avx512.c index cbccb1b..77a5c38 100644 --- a/c/blake3_avx512.c +++ b/c/blake3_avx512.c @@ -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])); } /*