12#ifndef CPROVER_UTIL_IREP_HASH_H
13#define CPROVER_UTIL_IREP_HASH_H
17#define IREP_HASH_BASIC
43# define FORCE_INLINE __forceinline
48# define ROTL32(x, y) _rotl(x, y)
49# define ROTL64(x, y) _rotl64(x, y)
51# define BIG_CONSTANT(x) (x)
55# define FORCE_INLINE inline __attribute__((always_inline))
61 return (
x <<
r) | (
x >> (32-
r));
66 return (
x <<
r) | (
x >> (64-
r));
69# define BIG_CONSTANT(x) (x##LLU)
121# define hash_combine(h1, h2) \
122 basic_hash_combine<sizeof(std::size_t) * CHAR_BIT>(h1, h2)
121# define hash_combine(h1, h2) \ …
123# define hash_finalize(h1, len) basic_hash_finalize(h1, len)
128#ifdef IREP_HASH_MURMURHASH2A
187 const uint64_t m=0xc6a4a7935bd1e995;
215 const uint64_t m=0xc6a4a7935bd1e995;
227# define hash_combine(h1, h2) \
228 murmurhash2a_hash_combine<sizeof(std::size_t) * CHAR_BIT>(h1, h2)
229# define hash_finalize(h1, len) \
230 murmurhash2a_hash_finalize<sizeof(std::size_t) * CHAR_BIT>(h1, len)
235#ifdef IREP_HASH_MURMURHASH3
343# define hash_combine(h1, h2) \
344 murmurhash3_hash_combine<sizeof(std::size_t) * CHAR_BIT>(h1, h2)
345# define hash_finalize(h1, len) \
346 murmurhash3_hash_finalize<sizeof(std::size_t) * CHAR_BIT>(h1, len)
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
std::size_t basic_hash_finalize(std::size_t h1, std::size_t len)
std::size_t basic_hash_combine(std::size_t h1, std::size_t h2)
std::size_t basic_hash_combine< 64 >(std::size_t h1, std::size_t h2)
std::size_t basic_hash_combine< 32 >(std::size_t h1, std::size_t h2)