60#if defined(_M_I86) || defined(_M_IX86) || defined(_X86_) || defined(__i386__) || defined(__i386) || defined(i386) \
61 || defined(_M_X64) || defined(__x86_64__) || defined(__x86_64) || defined(__amd64__) || defined(__amd64)
62 #define UNALIGNED_SAFE
65#if defined(_M_I86) || defined(_M_IX86) || defined(_X86_) || defined(__i386__) || defined(__i386) || defined(i386) \
66 || defined(_M_X64) || defined(__x86_64__) || defined(__x86_64) || defined(__amd64__) || defined(__amd64)
67 #define UNALIGNED_SAFE
72 #define FORCE_INLINE static __forceinline
74 #define ROTL32(x,y) _rotl(x,y)
76 #define FORCE_INLINE static inline __attribute__((always_inline))
78 #define ROTL32(x,r) (((uint32_t)x << r) | ((uint32_t)x >> (32 - r)))
83#define READ_UINT32(ptr) getblock32((uint32_t *)ptr, 0)
88static const uint32_t kC1 = 0xcc9e2d51;
89static const uint32_t kC2 = 0x1b873593;
93#define doblock(h1, k1) \
101 h1 = h1*5+0xe6546b64;\
106#define dobytes(cnt, h1, c, n, ptr, len) \
108 unsigned __cnt = cnt;\
110 c = c>>8 | (uint32_t)*ptr++<<24;\
126 uint32_t c = *pcarry;
128 const uint8_t *
ptr = (uint8_t*)
key;
134#if defined(UNALIGNED_SAFE)
154 int i = -(intptr_t)(
void *)
ptr & 3;
202 *pcarry = (c & ~0xff) |
n;
213 k1 = carry >> (4-
n)*8;
214 k1 *= kC1; k1 =
ROTL32(k1,15); k1 *= kC2; h ^= k1;
#define dobytes(cnt, h1, c, n, ptr, len)
uint32_t PMurHash32_Result(uint32_t h, uint32_t carry, uint32_t total_length)
void PMurHash32_Process(uint32_t *ph1, uint32_t *pcarry, const void *key, int len)
unsigned const char * end
unsigned char key[REFLECTION_KEY_LEN]