3 #include "CombBLAS/hash.hpp"
8 return ((value) << (amount)) | ((value) >> (64 - (amount)));
15 if (len <= 0 || data == NULL)
return 0;
21 for (;len > 0; len--) {
22 hash += get16bits (data);
23 tmp = (get16bits (data+2) << 11) ^
hash;
31 case 3:
hash += get16bits (data);
36 case 2:
hash += get16bits (data);
40 case 1:
hash += *data;
100 k *= 0xff51afd7ed558ccd;
102 k *= 0xc4ceb9fe1a85ec53;
111 const int nblocks = len / 16;
113 uint64_t h1 = 0x9368e53c2f6af274 ^ seed;
114 uint64_t h2 = 0x586dcd208f7cd3fd ^ seed;
124 for(
int i = 0; i < nblocks; i++)
129 bmix64(h1,h2,k1,k2,c1,c2);
142 case 15: k2 ^=
uint64_t(tail[14]) << 48;
143 case 14: k2 ^=
uint64_t(tail[13]) << 40;
144 case 13: k2 ^=
uint64_t(tail[12]) << 32;
145 case 12: k2 ^=
uint64_t(tail[11]) << 24;
146 case 11: k2 ^=
uint64_t(tail[10]) << 16;
147 case 10: k2 ^=
uint64_t(tail[ 9]) << 8;
148 case 9: k2 ^=
uint64_t(tail[ 8]) << 0;
150 case 8: k1 ^=
uint64_t(tail[ 7]) << 56;
151 case 7: k1 ^=
uint64_t(tail[ 6]) << 48;
152 case 6: k1 ^=
uint64_t(tail[ 5]) << 40;
153 case 5: k1 ^=
uint64_t(tail[ 4]) << 32;
154 case 4: k1 ^=
uint64_t(tail[ 3]) << 24;
155 case 3: k1 ^=
uint64_t(tail[ 2]) << 16;
156 case 2: k1 ^=
uint64_t(tail[ 1]) << 8;
157 case 1: k1 ^=
uint64_t(tail[ 0]) << 0;
158 bmix64(h1,h2,k1,k2,c1,c2);
uint64_t getblock(const uint64_t *p, int i)
void MurmurHash3_x64_32(const void *key, int len, uint32_t seed, void *out)
void MurmurHash3_x64_64(const void *key, int len, uint32_t seed, void *out)
uint64_t fmix64(uint64_t k)
void MurmurHash3_x64_128(const void *key, const int len, const uint32_t seed, void *out)
uint32_t SuperFastHash(const char *data, int len)
void bmix64(uint64_t &h1, uint64_t &h2, uint64_t &k1, uint64_t &k2, uint64_t &c1, uint64_t &c2)
uint64_t _rotl64(uint64_t value, int8_t amount)
unsigned int hash(unsigned int a)
unsigned __int64 uint64_t