Lines Matching defs:len

225 static uint64_t XXH3_len_1to3_64b(const uint8_t *input, size_t len,
228 const uint8_t c2 = input[len >> 1];
229 const uint8_t c3 = input[len - 1];
231 ((uint32_t)c3 << 0) | ((uint32_t)len << 8);
238 static uint64_t XXH3_len_4to8_64b(const uint8_t *input, size_t len,
242 const uint32_t input2 = endian::read32le(input + len - 4);
247 // XXH3_rrmxmx(acc, len)
250 acc ^= (acc >> 35) + (uint64_t)len;
255 static uint64_t XXH3_len_9to16_64b(const uint8_t *input, size_t len,
262 input_hi ^= endian::read64le(input + len - 8);
263 uint64_t acc = uint64_t(len) + byteswap(input_lo) + input_hi +
269 static uint64_t XXH3_len_0to16_64b(const uint8_t *input, size_t len,
271 if (LLVM_LIKELY(len > 8))
272 return XXH3_len_9to16_64b(input, len, secret, seed);
273 if (LLVM_LIKELY(len >= 4))
274 return XXH3_len_4to8_64b(input, len, secret, seed);
275 if (len != 0)
276 return XXH3_len_1to3_64b(input, len, secret, seed);
294 static uint64_t XXH3_len_17to128_64b(const uint8_t *input, size_t len,
297 uint64_t acc = len * PRIME64_1, acc_end;
299 acc_end = XXH3_mix16B(input + len - 16, secret + 16, seed);
300 if (len > 32) {
302 acc_end += XXH3_mix16B(input + len - 32, secret + 48, seed);
303 if (len > 64) {
305 acc_end += XXH3_mix16B(input + len - 48, secret + 80, seed);
306 if (len > 96) {
308 acc_end += XXH3_mix16B(input + len - 64, secret + 112, seed);
320 static uint64_t XXH3_len_129to240_64b(const uint8_t *input, size_t len,
322 uint64_t acc = (uint64_t)len * PRIME64_1;
323 const unsigned nbRounds = len / 16;
334 XXH3_mix16B(input + len - 16,
521 static uint64_t XXH3_hashLong_64b(const uint8_t *input, size_t len,
526 const size_t nb_blocks = (len - 1) / block_len;
537 const size_t nbStripes = (len - 1 - (block_len * nb_blocks)) / XXH_STRIPE_LEN;
543 XXH3_accumulate_512(acc, input + len - XXH_STRIPE_LEN,
550 (uint64_t)len * PRIME64_1);
555 size_t len = data.size();
556 if (len <= 16)
557 return XXH3_len_0to16_64b(in, len, kSecret, 0);
558 if (len <= 128)
559 return XXH3_len_17to128_64b(in, len, kSecret, 0);
560 if (len <= XXH3_MIDSIZE_MAX)
561 return XXH3_len_129to240_64b(in, len, kSecret, 0);
562 return XXH3_hashLong_64b(in, len, kSecret, sizeof(kSecret));
750 XXH3_len_1to3_128b(const uint8_t *input, size_t len, const uint8_t *secret,
754 * len = 1: combinedl = { input[0], 0x01, input[0], input[0] }
755 * len = 2: combinedl = { input[1], 0x02, input[0], input[1] }
756 * len = 3: combinedl = { input[2], 0x03, input[0], input[1] }
759 uint8_t const c2 = input[len >> 1];
760 uint8_t const c3 = input[len - 1];
762 ((uint32_t)c3 << 0) | ((uint32_t)len << 8);
777 XXH3_len_4to8_128b(const uint8_t *input, size_t len, const uint8_t *secret,
781 uint32_t const input_hi = endian::read32le(input + len - 4);
787 /* Shift len to the left to ensure it is even, this avoids even multiplies.
789 XXH128_hash_t m128 = XXH_mult64to128(keyed, PRIME64_1 + (len << 2));
802 XXH3_len_9to16_128b(const uint8_t *input, size_t len, const uint8_t *secret,
809 uint64_t input_hi = endian::read64le(input + len - 8);
813 * Put len in the middle of m128 to ensure that the length gets mixed to
816 m128.low64 += (uint64_t)(len - 1) << 54;
878 XXH3_len_0to16_128b(const uint8_t *input, size_t len, const uint8_t *secret,
880 if (len > 8)
881 return XXH3_len_9to16_128b(input, len, secret, seed);
882 if (len >= 4)
883 return XXH3_len_4to8_128b(input, len, secret, seed);
884 if (len)
885 return XXH3_len_1to3_128b(input, len, secret, seed);
910 XXH3_len_17to128_128b(const uint8_t *input, size_t len, const uint8_t *secret,
915 acc.low64 = len * PRIME64_1;
918 if (len > 32) {
919 if (len > 64) {
920 if (len > 96) {
922 XXH128_mix32B(acc, input + 48, input + len - 64, secret + 96, seed);
924 acc = XXH128_mix32B(acc, input + 32, input + len - 48, secret + 64, seed);
926 acc = XXH128_mix32B(acc, input + 16, input + len - 32, secret + 32, seed);
928 acc = XXH128_mix32B(acc, input, input + len - 16, secret, seed);
932 ((len - seed) * PRIME64_2);
939 XXH3_len_129to240_128b(const uint8_t *input, size_t len, const uint8_t *secret,
945 acc.low64 = len * PRIME64_1;
949 * `len` can be used as upper bound. This reaches a sweet spot
960 * NB: `i <= len` will duplicate the last 32-bytes if
961 * len % 32 was zero. This is an unfortunate necessity to keep
964 for (i = 160; i <= len; i += 32) {
970 XXH128_mix32B(acc, input + len - 16, input + len - 32,
977 ((len - seed) * PRIME64_2);
984 XXH3_hashLong_128b(const uint8_t *input, size_t len, const uint8_t *secret,
989 const size_t nb_blocks = (len - 1) / block_len;
1001 const size_t nbStripes = (len - 1 - (block_len * nb_blocks)) / XXH_STRIPE_LEN;
1007 XXH3_accumulate_512(acc, input + len - XXH_STRIPE_LEN,
1016 (uint64_t)len * PRIME64_1);
1019 ~((uint64_t)len * PRIME64_2));
1024 size_t len = data.size();
1033 if (len <= 16)
1034 return XXH3_len_0to16_128b(input, len, kSecret, /*seed64=*/0);
1035 if (len <= 128)
1036 return XXH3_len_17to128_128b(input, len, kSecret, sizeof(kSecret),
1038 if (len <= XXH3_MIDSIZE_MAX)
1039 return XXH3_len_129to240_128b(input, len, kSecret, sizeof(kSecret),
1041 return XXH3_hashLong_128b(input, len, kSecret, sizeof(kSecret));