29 #define c_hashsize(n) ((uint8_t) 1 << (n)) 30 #define c_hashmask(n) (xhashsize(n) - 1) 58 #define _c_mix(a,b,c) \ 60 a -= b; a -= c; a ^= (c>>13); \ 61 b -= c; b -= a; b ^= (a<<8); \ 62 c -= a; c -= b; c ^= (b>>13); \ 63 a -= b; a -= c; a ^= (c>>12); \ 64 b -= c; b -= a; b ^= (a<<16); \ 65 c -= a; c -= b; c ^= (b>>5); \ 66 a -= b; a -= c; a ^= (c>>3); \ 67 b -= c; b -= a; b ^= (a<<10); \ 68 c -= a; c -= b; c ^= (b>>15); \ 89 #define _c_mix64(a,b,c) \ 91 a -= b; a -= c; a ^= (c>>43); \ 92 b -= c; b -= a; b ^= (a<<9); \ 93 c -= a; c -= b; c ^= (b>>8); \ 94 a -= b; a -= c; a ^= (c>>38); \ 95 b -= c; b -= a; b ^= (a<<23); \ 96 c -= a; c -= b; c ^= (b>>5); \ 97 a -= b; a -= c; a ^= (c>>35); \ 98 b -= c; b -= a; b ^= (a<<49); \ 99 c -= a; c -= b; c ^= (b>>11); \ 100 a -= b; a -= c; a ^= (c>>12); \ 101 b -= c; b -= a; b ^= (a<<18); \ 102 c -= a; c -= b; c ^= (b>>22); \ 127 static inline uint32_t
c_jhash(
const uint8_t *k, uint32_t length, uint32_t initval) {
136 a += (k[0] +((uint32_t)k[1]<<8) +((uint32_t)k[2]<<16) +((uint32_t)k[3]<<24));
137 b += (k[4] +((uint32_t)k[5]<<8) +((uint32_t)k[6]<<16) +((uint32_t)k[7]<<24));
138 c += (k[8] +((uint32_t)k[9]<<8) +((uint32_t)k[10]<<16)+((uint32_t)k[11]<<24));
147 case 11: c+=((uint32_t)k[10]<<24);
148 case 10: c+=((uint32_t)k[9]<<16);
149 case 9 : c+=((uint32_t)k[8]<<8);
151 case 8 : b+=((uint32_t)k[7]<<24);
152 case 7 : b+=((uint32_t)k[6]<<16);
153 case 6 : b+=((uint32_t)k[5]<<8);
155 case 4 : a+=((uint32_t)k[3]<<24);
156 case 3 : a+=((uint32_t)k[2]<<16);
157 case 2 : a+=((uint32_t)k[1]<<8);
186 static inline uint64_t
c_jhash64(
const uint8_t *k, uint64_t length, uint64_t intval) {
192 c = 0x9e3779b97f4a7c13LL;
197 a += (k[0] +((uint64_t)k[ 1]<< 8)+((uint64_t)k[ 2]<<16)+((uint64_t)k[ 3]<<24)
198 +((uint64_t)k[4 ]<<32)+((uint64_t)k[ 5]<<40)+((uint64_t)k[ 6]<<48)+((uint64_t)k[ 7]<<56));
199 b += (k[8] +((uint64_t)k[ 9]<< 8)+((uint64_t)k[10]<<16)+((uint64_t)k[11]<<24)
200 +((uint64_t)k[12]<<32)+((uint64_t)k[13]<<40)+((uint64_t)k[14]<<48)+((uint64_t)k[15]<<56));
201 c += (k[16] +((uint64_t)k[17]<< 8)+((uint64_t)k[18]<<16)+((uint64_t)k[19]<<24)
202 +((uint64_t)k[20]<<32)+((uint64_t)k[21]<<40)+((uint64_t)k[22]<<48)+((uint64_t)k[23]<<56));
210 case 23: c+=((uint64_t)k[22]<<56);
211 case 22: c+=((uint64_t)k[21]<<48);
212 case 21: c+=((uint64_t)k[20]<<40);
213 case 20: c+=((uint64_t)k[19]<<32);
214 case 19: c+=((uint64_t)k[18]<<24);
215 case 18: c+=((uint64_t)k[17]<<16);
216 case 17: c+=((uint64_t)k[16]<<8);
218 case 16: b+=((uint64_t)k[15]<<56);
219 case 15: b+=((uint64_t)k[14]<<48);
220 case 14: b+=((uint64_t)k[13]<<40);
221 case 13: b+=((uint64_t)k[12]<<32);
222 case 12: b+=((uint64_t)k[11]<<24);
223 case 11: b+=((uint64_t)k[10]<<16);
224 case 10: b+=((uint64_t)k[ 9]<<8);
225 case 9: b+=((uint64_t)k[ 8]);
226 case 8: a+=((uint64_t)k[ 7]<<56);
227 case 7: a+=((uint64_t)k[ 6]<<48);
228 case 6: a+=((uint64_t)k[ 5]<<40);
229 case 5: a+=((uint64_t)k[ 4]<<32);
230 case 4: a+=((uint64_t)k[ 3]<<24);
231 case 3: a+=((uint64_t)k[ 2]<<16);
232 case 2: a+=((uint64_t)k[ 1]<<8);
233 case 1: a+=((uint64_t)k[ 0]);
static uint64_t c_jhash64(const uint8_t *k, uint64_t length, uint64_t intval)
hash a variable-length key into a 64-bit value
#define _c_mix64(a, b, c)
_c_mix64 – Mix 3 64-bit values reversibly.
static uint32_t c_jhash(const uint8_t *k, uint32_t length, uint32_t initval)
hash a variable-length key into a 32-bit value
#define _c_mix(a, b, c)
_c_mix – Mix 3 32-bit values reversibly.