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]);