|
|
|
@ -155,7 +155,9 @@ static inline void MurmurHash3_x86_32 ( const void * key, int len,
|
|
|
|
|
switch(len & 3)
|
|
|
|
|
{
|
|
|
|
|
case 3: k1 ^= tail[2] << 16;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 2: k1 ^= tail[1] << 8;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 1: k1 ^= tail[0];
|
|
|
|
|
k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
|
|
|
|
|
};
|
|
|
|
@ -204,11 +206,17 @@ static inline uint64_t MurmurHash64A ( const void * key, int len, uint64_t seed
|
|
|
|
|
switch(len & 7)
|
|
|
|
|
{
|
|
|
|
|
case 7: h ^= (uint64_t)(data2[6]) << 48;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 6: h ^= (uint64_t)(data2[5]) << 40;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 5: h ^= (uint64_t)(data2[4]) << 32;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 4: h ^= (uint64_t)(data2[3]) << 24;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 3: h ^= (uint64_t)(data2[2]) << 16;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 2: h ^= (uint64_t)(data2[1]) << 8;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 1: h ^= (uint64_t)(data2[0]);
|
|
|
|
|
h *= m;
|
|
|
|
|
};
|
|
|
|
@ -257,7 +265,9 @@ static inline uint64_t MurmurHash64B ( const void * key, int len, uint64_t seed
|
|
|
|
|
switch(len)
|
|
|
|
|
{
|
|
|
|
|
case 3: h2 ^= ((const unsigned char*)data)[2] << 16;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 2: h2 ^= ((const unsigned char*)data)[1] << 8;
|
|
|
|
|
/* fall through */
|
|
|
|
|
case 1: h2 ^= ((const unsigned char*)data)[0];
|
|
|
|
|
h2 *= m;
|
|
|
|
|
};
|
|
|
|
|