">

LLVM: lib/Support/BLAKE3/blake3_avx2.c File Reference (original) (raw)

#include "[blake3_impl.h](blake3%5F%5Fimpl%5F8h%5Fsource.html)"
#include <immintrin.h>

Go to the source code of this file.

Functions
INLINE __m256i loadu (const uint8_t src[32])
INLINE void storeu (__m256i src, uint8_t dest[16])
INLINE __m256i addv (__m256i a, __m256i b)
INLINE __m256i xorv (__m256i a, __m256i b)
INLINE __m256i set1 (uint32_t x)
INLINE __m256i rot16 (__m256i x)
INLINE __m256i rot12 (__m256i x)
INLINE __m256i rot8 (__m256i x)
INLINE __m256i rot7 (__m256i x)
INLINE void round_fn (__m256i v[16], __m256i m[16], size_t r)
INLINE void transpose_vecs (__m256i vecs[DEGREE])
INLINE void transpose_msg_vecs (const uint8_t *const *inputs, size_t block_offset, __m256i out[16])
INLINE void load_counters (uint64_t counter, bool increment_counter, __m256i *out_lo, __m256i *out_hi)
static void blake3_hash8_avx2 (const uint8_t *const *inputs, size_t blocks, const uint32_t key[8], uint64_t counter, bool increment_counter, uint8_t flags, uint8_t flags_start, uint8_t flags_end, uint8_t *out)
void blake3_hash_many_sse41 (const uint8_t *const *inputs, size_t num_inputs, size_t blocks, const uint32_t key[8], uint64_t counter, bool increment_counter, uint8_t flags, uint8_t flags_start, uint8_t flags_end, uint8_t *out)
void blake3_hash_many_avx2 (const uint8_t *const *inputs, size_t num_inputs, size_t blocks, const uint32_t key[8], uint64_t counter, bool increment_counter, uint8_t flags, uint8_t flags_start, uint8_t flags_end, uint8_t *out)

DEGREE

addv()

INLINE __m256i addv ( __m256i a,
__m256i b )

blake3_hash8_avx2()

Definition at line 231 of file blake3_avx2.c.

References BLAKE3_BLOCK_LEN, block, blocks, IV, load_counters(), round_fn(), set1(), storeu(), transpose_msg_vecs(), transpose_vecs(), and xorv().

Referenced by blake3_hash_many_avx2().

blake3_hash_many_avx2()

blake3_hash_many_sse41()

load_counters()

INLINE void load_counters ( uint64_t counter,
bool increment_counter,
__m256i * out_lo,
__m256i * out_hi )

loadu()

rot12()

INLINE __m256i rot12 ( __m256i x )

rot16()

INLINE __m256i rot16 ( __m256i x )

rot7()

INLINE __m256i rot7 ( __m256i x )

rot8()

INLINE __m256i rot8 ( __m256i x )

round_fn()

INLINE void round_fn ( __m256i _v_[16],
__m256i _m_[16],
size_t r )

set1()

storeu()

transpose_msg_vecs()

transpose_vecs()

INLINE void transpose_vecs ( __m256i _vecs_[DEGREE] )

xorv()

INLINE __m256i xorv ( __m256i a,
__m256i b )