|
template<typename T > |
std::enable_if_t< is_integral_or_enum< T >::value, hash_code > | llvm::hash_value (T value) |
| Compute a hash_code for any integer value.
|
|
template<typename T > |
hash_code | llvm::hash_value (const T *ptr) |
| Compute a hash_code for a pointer's address.
|
|
template<typename T , typename U > |
hash_code | llvm::hash_value (const std::pair< T, U > &arg) |
| Compute a hash_code for a pair of objects.
|
|
template<typename... Ts> |
hash_code | llvm::hash_value (const std::tuple< Ts... > &arg) |
| Compute a hash_code for a tuple.
|
|
template<typename T > |
hash_code | llvm::hash_value (const std::basic_string< T > &arg) |
| Compute a hash_code for a standard string.
|
|
template<typename T > |
hash_code | llvm::hash_value (const std::optional< T > &arg) |
| Compute a hash_code for a standard string.
|
|
uint64_t | llvm::hashing::detail::fetch64 (const char *p) |
|
uint32_t | llvm::hashing::detail::fetch32 (const char *p) |
|
uint64_t | llvm::hashing::detail::rotate (uint64_t val, size_t shift) |
| Bitwise right rotate.
|
|
uint64_t | llvm::hashing::detail::shift_mix (uint64_t val) |
|
uint64_t | llvm::hashing::detail::hash_16_bytes (uint64_t low, uint64_t high) |
|
uint64_t | llvm::hashing::detail::hash_1to3_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::hash_4to8_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::hash_9to16_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::hash_17to32_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::hash_33to64_bytes (const char *s, size_t len, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::hash_short (const char *s, size_t length, uint64_t seed) |
|
uint64_t | llvm::hashing::detail::get_execution_seed () |
| In LLVM_ENABLE_ABI_BREAKING_CHECKS builds, the seed is non-deterministic per process (address of a function in LLVMSupport) to prevent having users depend on the particular hash values.
|
|
template<typename T > |
std::enable_if_t< is_hashable_data< T >::value, T > | llvm::hashing::detail::get_hashable_data (const T &value) |
| Helper to get the hashable data representation for a type.
|
|
template<typename T > |
std::enable_if_t<!is_hashable_data< T >::value, size_t > | llvm::hashing::detail::get_hashable_data (const T &value) |
| Helper to get the hashable data representation for a type.
|
|
template<typename T > |
bool | llvm::hashing::detail::store_and_advance (char *&buffer_ptr, char *buffer_end, const T &value, size_t offset=0) |
| Helper to store data from a value into a buffer and advance the pointer into that buffer.
|
|
template<typename InputIteratorT > |
hash_code | llvm::hashing::detail::hash_combine_range_impl (InputIteratorT first, InputIteratorT last) |
| Implement the combining of integral values into a hash_code.
|
|
template<typename ValueT > |
std::enable_if_t< is_hashable_data< ValueT >::value, hash_code > | llvm::hashing::detail::hash_combine_range_impl (ValueT *first, ValueT *last) |
| Implement the combining of integral values into a hash_code.
|
|
template<typename InputIteratorT > |
hash_code | llvm::hash_combine_range (InputIteratorT first, InputIteratorT last) |
| Compute a hash_code for a sequence of values.
|
|
template<typename ... Ts> |
hash_code | llvm::hash_combine (const Ts &...args) |
| Combine values into a single hash_code.
|
|
hash_code | llvm::hashing::detail::hash_integer_value (uint64_t value) |
| Helper to hash the value of a single integer.
|
|