LLVM API Documentation
The intermediate state used during hashing. Currently, the algorithm for computing hash codes is based on CityHash and keeps 56 bytes of arbitrary state. More...
#include <Hashing.h>
Public Member Functions | |
void | mix (const char *s) |
Mix in a 64-byte buffer of data. We mix all 64 bytes even when the chunk length is smaller, but we record the actual length. | |
uint64_t | finalize (size_t length) |
Compute the final 64-bit hash code value based on the current state and the length of bytes hashed. | |
Static Public Member Functions | |
static hash_state | create (const char *s, uint64_t seed) |
Create a new hash_state structure and initialize it based on the seed and the first 64-byte chunk. This effectively performs the initial mix. | |
static void | mix_32_bytes (const char *s, uint64_t &a, uint64_t &b) |
Mix 32-bytes from the input sequence into the 16-bytes of 'a' and 'b', including whatever is already in 'a' and 'b'. | |
Public Attributes | |
uint64_t | h0 |
uint64_t | h1 |
uint64_t | h2 |
uint64_t | h3 |
uint64_t | h4 |
uint64_t | h5 |
uint64_t | h6 |
The intermediate state used during hashing. Currently, the algorithm for computing hash codes is based on CityHash and keeps 56 bytes of arbitrary state.
static hash_state llvm::hashing::detail::hash_state::create | ( | const char * | s, |
uint64_t | seed | ||
) | [inline, static] |
Create a new hash_state structure and initialize it based on the seed and the first 64-byte chunk. This effectively performs the initial mix.
Definition at line 272 of file Hashing.h.
References h4, h5, h6, llvm::hashing::detail::hash_16_bytes(), llvm::hashing::detail::k1, mix(), llvm::hashing::detail::rotate(), and llvm::hashing::detail::shift_mix().
Referenced by llvm::hashing::detail::hash_combine_recursive_helper::combine_data(), and llvm::hashing::detail::hash_combine_range_impl().
uint64_t llvm::hashing::detail::hash_state::finalize | ( | size_t | length | ) | [inline] |
Compute the final 64-bit hash code value based on the current state and the length of bytes hashed.
Definition at line 313 of file Hashing.h.
References h0, h1, h2, h3, h4, h5, h6, llvm::hashing::detail::hash_16_bytes(), llvm::hashing::detail::k1, and llvm::hashing::detail::shift_mix().
Referenced by llvm::hashing::detail::hash_combine_recursive_helper::combine(), and llvm::hashing::detail::hash_combine_range_impl().
void llvm::hashing::detail::hash_state::mix | ( | const char * | s | ) | [inline] |
Mix in a 64-byte buffer of data. We mix all 64 bytes even when the chunk length is smaller, but we record the actual length.
Definition at line 296 of file Hashing.h.
References llvm::hashing::detail::fetch64(), h0, h1, h2, h3, h4, h5, h6, llvm::hashing::detail::k1, mix_32_bytes(), llvm::hashing::detail::rotate(), and std::swap().
Referenced by llvm::hashing::detail::hash_combine_recursive_helper::combine(), llvm::hashing::detail::hash_combine_recursive_helper::combine_data(), create(), and llvm::hashing::detail::hash_combine_range_impl().
static void llvm::hashing::detail::hash_state::mix_32_bytes | ( | const char * | s, |
uint64_t & | a, | ||
uint64_t & | b | ||
) | [inline, static] |
Mix 32-bytes from the input sequence into the 16-bytes of 'a' and 'b', including whatever is already in 'a' and 'b'.
Definition at line 283 of file Hashing.h.
References llvm::hashing::detail::fetch64(), and llvm::hashing::detail::rotate().
Referenced by mix().
Definition at line 267 of file Hashing.h.
Referenced by finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by create(), finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by create(), finalize(), and mix().
Definition at line 267 of file Hashing.h.
Referenced by create(), finalize(), and mix().