LLVM 17.0.0git
|
#include <assert.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include "llvm-c/blake3.h"
#include "llvm/Support/Compiler.h"
#include "llvm_blake3_prefix.h"
Go to the source code of this file.
Macros | |
#define | INLINE static inline __attribute__((always_inline)) |
#define | BLAKE3_USE_NEON 0 |
#define | MAX_SIMD_DEGREE 1 |
#define | MAX_SIMD_DEGREE_OR_2 (MAX_SIMD_DEGREE > 2 ? MAX_SIMD_DEGREE : 2) |
Enumerations | |
enum | blake3_flags { CHUNK_START = 1 << 0 , CHUNK_END = 1 << 1 , PARENT = 1 << 2 , ROOT = 1 << 3 , KEYED_HASH = 1 << 4 , DERIVE_KEY_CONTEXT = 1 << 5 , DERIVE_KEY_MATERIAL = 1 << 6 } |
Functions | |
static unsigned int | highest_one (uint64_t x) |
INLINE unsigned int | popcnt (uint64_t x) |
INLINE uint64_t | round_down_to_power_of_2 (uint64_t x) |
INLINE uint32_t | counter_low (uint64_t counter) |
INLINE uint32_t | counter_high (uint64_t counter) |
INLINE uint32_t | load32 (const void *src) |
INLINE void | load_key_words (const uint8_t key[BLAKE3_KEY_LEN], uint32_t key_words[8]) |
INLINE void | store32 (void *dst, uint32_t w) |
INLINE void | store_cv_words (uint8_t bytes_out[32], uint32_t cv_words[8]) |
LLVM_LIBRARY_VISIBILITY void | blake3_compress_in_place (uint32_t cv[8], const uint8_t block[BLAKE3_BLOCK_LEN], uint8_t block_len, uint64_t counter, uint8_t flags) |
LLVM_LIBRARY_VISIBILITY void | blake3_compress_xof (const uint32_t cv[8], const uint8_t block[BLAKE3_BLOCK_LEN], uint8_t block_len, uint64_t counter, uint8_t flags, uint8_t out[64]) |
LLVM_LIBRARY_VISIBILITY void | blake3_hash_many (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) |
LLVM_LIBRARY_VISIBILITY size_t | blake3_simd_degree (void) |
LLVM_LIBRARY_VISIBILITY void | blake3_compress_in_place_portable (uint32_t cv[8], const uint8_t block[BLAKE3_BLOCK_LEN], uint8_t block_len, uint64_t counter, uint8_t flags) |
LLVM_LIBRARY_VISIBILITY void | blake3_compress_xof_portable (const uint32_t cv[8], const uint8_t block[BLAKE3_BLOCK_LEN], uint8_t block_len, uint64_t counter, uint8_t flags, uint8_t out[64]) |
LLVM_LIBRARY_VISIBILITY void | blake3_hash_many_portable (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) |
Variables | |
static const uint32_t | IV [8] |
static const uint8_t | MSG_SCHEDULE [7][16] |
#define BLAKE3_USE_NEON 0 |
Definition at line 61 of file blake3_impl.h.
#define INLINE static inline __attribute__((always_inline)) |
Definition at line 32 of file blake3_impl.h.
#define MAX_SIMD_DEGREE 1 |
Definition at line 70 of file blake3_impl.h.
#define MAX_SIMD_DEGREE_OR_2 (MAX_SIMD_DEGREE > 2 ? MAX_SIMD_DEGREE : 2) |
Definition at line 75 of file blake3_impl.h.
enum blake3_flags |
Enumerator | |
---|---|
CHUNK_START | |
CHUNK_END | |
PARENT | |
ROOT | |
KEYED_HASH | |
DERIVE_KEY_CONTEXT | |
DERIVE_KEY_MATERIAL |
Definition at line 17 of file blake3_impl.h.
LLVM_LIBRARY_VISIBILITY void blake3_compress_in_place | ( | uint32_t | cv[8], |
const uint8_t | block[BLAKE3_BLOCK_LEN], | ||
uint8_t | block_len, | ||
uint64_t | counter, | ||
uint8_t | flags | ||
) |
Definition at line 137 of file blake3_dispatch.c.
References AVX512VL, blake3_compress_in_place_avx512, blake3_compress_in_place_portable, blake3_compress_in_place_sse2, blake3_compress_in_place_sse41, block, get_cpu_features(), MAYBE_UNUSED, SSE2, and SSE41.
LLVM_LIBRARY_VISIBILITY void blake3_compress_in_place_portable | ( | uint32_t | cv[8], |
const uint8_t | block[BLAKE3_BLOCK_LEN], | ||
uint8_t | block_len, | ||
uint64_t | counter, | ||
uint8_t | flags | ||
) |
Definition at line 84 of file blake3_portable.c.
References block, and compress_pre().
LLVM_LIBRARY_VISIBILITY void blake3_compress_xof | ( | const uint32_t | cv[8], |
const uint8_t | block[BLAKE3_BLOCK_LEN], | ||
uint8_t | block_len, | ||
uint64_t | counter, | ||
uint8_t | flags, | ||
uint8_t | out[64] | ||
) |
Definition at line 166 of file blake3_dispatch.c.
References AVX512VL, blake3_compress_xof_avx512, blake3_compress_xof_portable, blake3_compress_xof_sse2, blake3_compress_xof_sse41, block, get_cpu_features(), MAYBE_UNUSED, SSE2, and SSE41.
LLVM_LIBRARY_VISIBILITY void blake3_compress_xof_portable | ( | const uint32_t | cv[8], |
const uint8_t | block[BLAKE3_BLOCK_LEN], | ||
uint8_t | block_len, | ||
uint64_t | counter, | ||
uint8_t | flags, | ||
uint8_t | out[64] | ||
) |
Definition at line 100 of file blake3_portable.c.
References block, compress_pre(), and store32().
LLVM_LIBRARY_VISIBILITY void blake3_hash_many | ( | 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 | ||
) |
Definition at line 195 of file blake3_dispatch.c.
References AVX2, AVX512F, AVX512VL, blake3_hash_many_avx2, blake3_hash_many_avx512, blake3_hash_many_neon, blake3_hash_many_portable, blake3_hash_many_sse2, blake3_hash_many_sse41, get_cpu_features(), MAYBE_UNUSED, SSE2, and SSE41.
LLVM_LIBRARY_VISIBILITY void blake3_hash_many_portable | ( | 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 | ||
) |
Definition at line 145 of file blake3_portable.c.
References BLAKE3_OUT_LEN, and hash_one_portable().
LLVM_LIBRARY_VISIBILITY size_t blake3_simd_degree | ( | void | ) |
Definition at line 248 of file blake3_dispatch.c.
References AVX2, AVX512F, AVX512VL, get_cpu_features(), MAYBE_UNUSED, SSE2, and SSE41.
Definition at line 144 of file blake3_impl.h.
Referenced by compress_pre().
Definition at line 142 of file blake3_impl.h.
Referenced by compress_pre().
Definition at line 93 of file blake3_impl.h.
Referenced by round_down_to_power_of_2().
Definition at line 148 of file blake3_impl.h.
Referenced by compress_pre(), and load_key_words().
Definition at line 154 of file blake3_impl.h.
References load32().
Referenced by llvm_blake3_hasher_init_derive_key_raw(), and llvm_blake3_hasher_init_keyed().
Definition at line 123 of file blake3_impl.h.
Referenced by hasher_merge_cv_stack().
Definition at line 138 of file blake3_impl.h.
References highest_one().
Referenced by left_len(), and llvm_blake3_hasher_update().
Definition at line 166 of file blake3_impl.h.
Referenced by blake3_compress_xof_portable(), and store_cv_words().
Definition at line 174 of file blake3_impl.h.
References store32().
Referenced by hash_one_portable(), and output_chaining_value().
Definition at line 77 of file blake3_impl.h.
Referenced by addPHINodeEntriesForMappedBlock(), blake3_hash16_avx512(), blake3_hash4_avx512(), blake3_hash4_sse2(), blake3_hash4_sse41(), blake3_hash8_avx2(), blake3_hash8_avx512(), compress_pre(), llvm::VPRecipeBuilder::createBlockInMask(), llvm::OpenMPIRBuilder::createCanonicalLoop(), detectShiftUntilZeroIdiom(), llvm::JumpThreadingPass::duplicateCondBranchOnPHIIntoPred(), llvm::InstCombinerImpl::foldAggregateConstructionIntoAggregateReuse(), getAggregateSize(), llvm::DenseMapInfo< PointerIntPair< PointerTy, IntBits, IntType >, void >::getHashValue(), GetInductionVariable(), getInsertIndex(), insertUniqueBackedgeBlock(), isLoopIncrement(), llvm::isUniformLoop(), IsValueFullyAvailableInBlock(), likeBitCastFromVector(), llvm_blake3_hasher_init(), llvm_blake3_hasher_init_derive_key_raw(), LLVMGetIndices(), LLVMGetNumIndices(), llvm::VPlan::prepareToExecute(), ReduceLoopStrength(), llvm::VPlanTransforms::removeRedundantInductionCasts(), llvm::replaceSignedInst(), simplifyInstructionWithOperands(), llvm::SplitBlockAndInsertSimpleForLoop(), llvm::SCCPInstVisitor::trackValueOfGlobalVariable(), llvm::MemorySSAUpdater::updatePhisWhenInsertingUniqueBackedgeBlock(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitPHINode(), and llvm::VPScalarIVStepsRecipe::VPScalarIVStepsRecipe().
|
static |
Definition at line 81 of file blake3_impl.h.
Referenced by round_fn(), round_fn16(), round_fn4(), and round_fn8().