14#ifndef HASHFN_UNSTABLE_H
15#define HASHFN_UNSTABLE_H
103#define FH_SIZEOF_ACCUM sizeof(uint64)
115 hs->
hash = seed ^ 0x880355f21e6d1965;
122 h ^= (h >> 23) + tweak;
123 h *= 0x2127599bf4325c37;
133 hs->
hash *= 0x880355f21e6d1965;
148#ifdef WORDS_BIGENDIAN
152 memcpy(&hs->
accum, k, 8);
164 memcpy(&lower_four, k,
sizeof(lower_four));
183 memcpy(&hs->
accum, k, 8);
195 memcpy(&lower_four, k,
sizeof(lower_four));
196 hs->
accum |= lower_four;
219#define haszero64(v) \
220 (((v) - 0x0101010101010101) & ~(v) & 0x8080808080808080)
223#ifdef WORDS_BIGENDIAN
224#define firstbyte64(v) ((v) >> 56)
226#define firstbyte64(v) ((v) & 0xFF)
239 size_t chunk_len = 0;
287#ifdef WORDS_BIGENDIAN
317#ifdef WORDS_BIGENDIAN
322 hs->accum =
chunk & mask;
337#if SIZEOF_VOID_P >= 8
340#ifdef USE_ASSERT_CHECKING
349 len = fasthash_accum_cstring_aligned(hs,
str);
389 return h - (h >> 32);
413 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)
static int pg_rightmost_one_pos64(uint64 word)
static uint64 pg_bswap64(uint64 x)