180 uint32_t k1, k2, k3, k4 = pcarry[3];
184 case 1:
case 2:
case 3:
case 4:
185 k1 = pcarry[0] >> (4-
n)*8;
188 case 5:
case 6:
case 7:
case 8:
189 k2 = pcarry[1] >> (8-
n)*8;
192 case 9:
case 10:
case 11:
case 12:
193 k3 = pcarry[2] >> (12-
n)*8;
196 case 13:
case 14:
case 15:
204 k4 *= kC4; k4 =
ROTL32(k4,18); k4 *= kC1; h4 ^= k4;
207 k3 *= kC3; k3 =
ROTL32(k3,17); k3 *= kC4; h3 ^= k3;
210 k2 *= kC2; k2 =
ROTL32(k2,16); k2 *= kC3; h2 ^= k2;
213 k1 *= kC1; k1 =
ROTL32(k1,15); k1 *= kC2; h1 ^= k1;
219 h1 ^= total_length; h2 ^= total_length;
220 h3 ^= total_length; h4 ^= total_length;
222 h1 += h2; h1 += h3; h1 += h4;
223 h2 += h1; h3 += h1; h4 += h1;
230 h1 += h2; h1 += h3; h1 += h4;
231 h2 += h1; h3 += h1; h4 += h1;
250 uint32_t k1 = pcarry[0];
251 uint32_t k2 = pcarry[1];
252 uint32_t k3 = pcarry[2];
253 uint32_t k4 = pcarry[3];
255 const uint8_t *
ptr = (uint8_t*)
key;
261#if defined(UNALIGNED_SAFE)
267 dobytes128x86(i, h1, h2, h3, h4, k1, k2, k3, k4,
n,
ptr,
len);
284 int i = -(intptr_t)(
void *)
ptr & 3;
286 dobytes128x86(i, h1, h2, h3, h4, k1, k2, k3, k4,
n,
ptr,
len);
302 case 1:
case 2:
case 3:
305 const int lshift =
n*8, rshift = 32-lshift;
307 uint32_t c = k1>>rshift;
311 k2 = k1<<lshift | k2>>rshift;
313 k3 = k4<<lshift | k1>>rshift;
315 k4 = k1<<lshift | k4>>rshift;
330 case 5:
case 6:
case 7:
333 const int lshift =
n*8-32, rshift = 32-lshift;
335 uint32_t c = k2>>rshift;
339 k3 = k4<<lshift | k3>>rshift;
341 k4 = k2<<lshift | k4>>rshift;
358 case 9:
case 10:
case 11:
361 const int lshift =
n*8-64, rshift = 32-lshift;
363 uint32_t c = k3>>rshift;
367 k4 = k3<<lshift | k4>>rshift;
370 k1 = k2<<lshift | k3>>rshift;
372 k2 = k3<<lshift | k2>>rshift;
388 const int lshift =
n*8-96, rshift = 32-lshift;
390 uint32_t c = k4>>rshift;
395 k1 = k3<<lshift | k4>>rshift;
397 k2 = c<<lshift | k3>>rshift;
399 k3 = k4<<lshift | c>>rshift;
409 dobytes128x86(
len, h1, h2, h3, h4, k1, k2, k3, k4,
n,
ptr,
len);
419 pcarry[3] = (k4 & ~0xff) |
n;
#define dobytes128x86(cnt, h1, h2, h3, h4, k1, k2, k3, k4, n, ptr, len)