14#ifndef HASHFN_UNSTABLE_H
15#define HASHFN_UNSTABLE_H
101#define FH_SIZEOF_ACCUM sizeof(uint64)
113 hs->
hash = seed ^ 0x880355f21e6d1965;
120 h ^= (h >> 23) + tweak;
121 h *= 0x2127599bf4325c37;
131 hs->
hash *= 0x880355f21e6d1965;
146#ifdef WORDS_BIGENDIAN
150 memcpy(&hs->
accum, k, 8);
162 memcpy(&lower_four, k,
sizeof(lower_four));
181 memcpy(&hs->
accum, k, 8);
193 memcpy(&lower_four, k,
sizeof(lower_four));
194 hs->
accum |= lower_four;
217#define haszero64(v) \
218 (((v) - 0x0101010101010101) & ~(v) & 0x8080808080808080)
230 size_t chunk_len = 0;
291#if SIZEOF_VOID_P >= 8
294#ifdef USE_ASSERT_CHECKING
303 len = fasthash_accum_cstring_aligned(hs,
str);
343 return h - (h >> 32);
367 hs.
hash = seed ^ (
len * 0x880355f21e6d1965);
#define PointerIsAligned(pointer, type)
Assert(PointerIsAligned(start, uint64))
static uint32 fasthash_reduce32(uint64 h)
static uint32 fasthash32(const char *k, size_t len, uint64 seed)
pg_attribute_no_sanitize_address() static inline size_t fasthash_accum_cstring_aligned(fasthash_state *hs
static size_t fasthash_accum_cstring(fasthash_state *hs, const char *str)
static uint64 fasthash64(const char *k, size_t len, uint64 seed)
static uint64 fasthash_mix(uint64 h, uint64 tweak)
static uint32 fasthash_final32(fasthash_state *hs, uint64 tweak)
struct fasthash_state fasthash_state
static void fasthash_combine(fasthash_state *hs)
static void fasthash_accum(fasthash_state *hs, const char *k, size_t len)
static uint64 fasthash_final64(fasthash_state *hs, uint64 tweak)
static uint32 hash_string(const char *s)
static size_t fasthash_accum_cstring_unaligned(fasthash_state *hs, const char *str)
static void fasthash_init(fasthash_state *hs, uint64 seed)