Lines Matching +full:byte +full:- +full:len

2  *  xxHash - Fast Hash algorithm
3 * Copyright (c) 2012-2020, Yann Collet, Facebook, Inc.
6 * - xxHash homepage: http://www.xxhash.com
7 * - xxHash source repository : https://github.com/Cyan4973/xxHash
9 * This source code is licensed under both the BSD-style license (found in the
12 * You may select, at your option, one of the above-listed licenses.
21 * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal.
44 …* When this option is enabled, xxHash output for null input pointers will be the same as a null-le…
50 …* By default, xxHash library provides endian-independent Hash values, based on little-endian conve…
51 * Results are therefore identical for little-endian and big-endian CPU.
52 …* This comes at a performance cost for big-endian CPU, since some swapping is required to emulate …
53 …* Should endian-independence be of no importance for your application, you may set the #define bel…
54 * to improve speed for Big-endian CPU.
127 typedef uint8_t BYTE; typedef
133 typedef unsigned char BYTE; typedef
137 …* if your compiler doesn't support unsigned long long, replace by another 64-bit type here. Note t…
154 static U32 XXH_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } in XXH_read32()
155 static U64 XXH_read64(const void* ptr) { return ((const unalign*)ptr)->u64; } in XXH_read64()
181 * Compiler-specific Functions and Macros
192 # define XXH_rotl32(x,r) __ROR(x,(32 - r))
194 # define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r)))
196 # define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r)))
331 FORCE_INLINE_TEMPLATE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess… in XXH32_endian_align() argument
333 const BYTE* p = (const BYTE*)input; in XXH32_endian_align()
334 const BYTE* bEnd = p + len; in XXH32_endian_align()
340 len=0; in XXH32_endian_align()
341 bEnd=p=(const BYTE*)(size_t)16; in XXH32_endian_align()
345 if (len>=16) { in XXH32_endian_align()
346 const BYTE* const limit = bEnd - 16; in XXH32_endian_align()
350 U32 v4 = seed - PRIME32_1; in XXH32_endian_align()
364 h32 += (U32) len; in XXH32_endian_align()
388 XXH_PUBLIC_API unsigned int XXH32 (const void* input, size_t len, unsigned int seed) in XXH32() argument
394 XXH32_update(state, input, len); in XXH32()
400 … if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ in XXH32()
402 return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); in XXH32()
404 return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); in XXH32()
408 return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned); in XXH32()
410 return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); in XXH32()
431 FORCE_INLINE_TEMPLATE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess… in XXH64_endian_align() argument
433 const BYTE* p = (const BYTE*)input; in XXH64_endian_align()
434 const BYTE* const bEnd = p + len; in XXH64_endian_align()
440 len=0; in XXH64_endian_align()
441 bEnd=p=(const BYTE*)(size_t)32; in XXH64_endian_align()
445 if (len>=32) { in XXH64_endian_align()
446 const BYTE* const limit = bEnd - 32; in XXH64_endian_align()
450 U64 v4 = seed - PRIME64_1; in XXH64_endian_align()
469 h64 += (U64) len; in XXH64_endian_align()
500 XXH_PUBLIC_API unsigned long long XXH64 (const void* input, size_t len, unsigned long long seed) in XXH64() argument
506 XXH64_update(state, input, len); in XXH64()
514 return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); in XXH64()
516 return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); in XXH64()
520 return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned); in XXH64()
522 return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); in XXH64()
556 …XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnin… in XXH32_reset()
557 memset(&state, 0, sizeof(state)-4); /* do not write into reserved, for future removal */ in XXH32_reset()
561 state.v4 = seed - PRIME32_1; in XXH32_reset()
569 …XXH64_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnin… in XXH64_reset()
570 memset(&state, 0, sizeof(state)-8); /* do not write into reserved, for future removal */ in XXH64_reset()
574 state.v4 = seed - PRIME64_1; in XXH64_reset()
580 …rcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endi… in XXH32_update_endian() argument
582 const BYTE* p = (const BYTE*)input; in XXH32_update_endian()
583 const BYTE* const bEnd = p + len; in XXH32_update_endian()
589 state->total_len_32 += (unsigned)len; in XXH32_update_endian()
590 state->large_len |= (len>=16) | (state->total_len_32>=16); in XXH32_update_endian()
592 if (state->memsize + len < 16) { /* fill in tmp buffer */ in XXH32_update_endian()
593 XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, len); in XXH32_update_endian()
594 state->memsize += (unsigned)len; in XXH32_update_endian()
598 if (state->memsize) { /* some data left from previous update */ in XXH32_update_endian()
599 XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, 16-state->memsize); in XXH32_update_endian()
600 { const U32* p32 = state->mem32; in XXH32_update_endian()
601 state->v1 = XXH32_round(state->v1, XXH_readLE32(p32, endian)); p32++; in XXH32_update_endian()
602 state->v2 = XXH32_round(state->v2, XXH_readLE32(p32, endian)); p32++; in XXH32_update_endian()
603 state->v3 = XXH32_round(state->v3, XXH_readLE32(p32, endian)); p32++; in XXH32_update_endian()
604 state->v4 = XXH32_round(state->v4, XXH_readLE32(p32, endian)); p32++; in XXH32_update_endian()
606 p += 16-state->memsize; in XXH32_update_endian()
607 state->memsize = 0; in XXH32_update_endian()
610 if (p <= bEnd-16) { in XXH32_update_endian()
611 const BYTE* const limit = bEnd - 16; in XXH32_update_endian()
612 U32 v1 = state->v1; in XXH32_update_endian()
613 U32 v2 = state->v2; in XXH32_update_endian()
614 U32 v3 = state->v3; in XXH32_update_endian()
615 U32 v4 = state->v4; in XXH32_update_endian()
624 state->v1 = v1; in XXH32_update_endian()
625 state->v2 = v2; in XXH32_update_endian()
626 state->v3 = v3; in XXH32_update_endian()
627 state->v4 = v4; in XXH32_update_endian()
631 XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); in XXH32_update_endian()
632 state->memsize = (unsigned)(bEnd-p); in XXH32_update_endian()
638 XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void* input, size_t len) in XXH32_update() argument
643 return XXH32_update_endian(state_in, input, len, XXH_littleEndian); in XXH32_update()
645 return XXH32_update_endian(state_in, input, len, XXH_bigEndian); in XXH32_update()
652 const BYTE * p = (const BYTE*)state->mem32; in XXH32_digest_endian()
653 const BYTE* const bEnd = (const BYTE*)(state->mem32) + state->memsize; in XXH32_digest_endian()
656 if (state->large_len) { in XXH32_digest_endian()
657 …h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32… in XXH32_digest_endian()
659 h32 = state->v3 /* == seed */ + PRIME32_5; in XXH32_digest_endian()
662 h32 += state->total_len_32; in XXH32_digest_endian()
700 …rcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endi… in XXH64_update_endian() argument
702 const BYTE* p = (const BYTE*)input; in XXH64_update_endian()
703 const BYTE* const bEnd = p + len; in XXH64_update_endian()
709 state->total_len += len; in XXH64_update_endian()
711 if (state->memsize + len < 32) { /* fill in tmp buffer */ in XXH64_update_endian()
713 XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, len); in XXH64_update_endian()
715 state->memsize += (U32)len; in XXH64_update_endian()
719 if (state->memsize) { /* tmp buffer is full */ in XXH64_update_endian()
720 XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, 32-state->memsize); in XXH64_update_endian()
721 state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0, endian)); in XXH64_update_endian()
722 state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1, endian)); in XXH64_update_endian()
723 state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2, endian)); in XXH64_update_endian()
724 state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3, endian)); in XXH64_update_endian()
725 p += 32-state->memsize; in XXH64_update_endian()
726 state->memsize = 0; in XXH64_update_endian()
730 const BYTE* const limit = bEnd - 32; in XXH64_update_endian()
731 U64 v1 = state->v1; in XXH64_update_endian()
732 U64 v2 = state->v2; in XXH64_update_endian()
733 U64 v3 = state->v3; in XXH64_update_endian()
734 U64 v4 = state->v4; in XXH64_update_endian()
743 state->v1 = v1; in XXH64_update_endian()
744 state->v2 = v2; in XXH64_update_endian()
745 state->v3 = v3; in XXH64_update_endian()
746 state->v4 = v4; in XXH64_update_endian()
750 XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); in XXH64_update_endian()
751 state->memsize = (unsigned)(bEnd-p); in XXH64_update_endian()
757 XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void* input, size_t len) in XXH64_update() argument
762 return XXH64_update_endian(state_in, input, len, XXH_littleEndian); in XXH64_update()
764 return XXH64_update_endian(state_in, input, len, XXH_bigEndian); in XXH64_update()
771 const BYTE * p = (const BYTE*)state->mem64; in XXH64_digest_endian()
772 const BYTE* const bEnd = (const BYTE*)state->mem64 + state->memsize; in XXH64_digest_endian()
775 if (state->total_len >= 32) { in XXH64_digest_endian()
776 U64 const v1 = state->v1; in XXH64_digest_endian()
777 U64 const v2 = state->v2; in XXH64_digest_endian()
778 U64 const v3 = state->v3; in XXH64_digest_endian()
779 U64 const v4 = state->v4; in XXH64_digest_endian()
787 h64 = state->v3 + PRIME64_5; in XXH64_digest_endian()
790 h64 += (U64) state->total_len; in XXH64_digest_endian()
837 * The canonical representation follows human-readable write convention, aka big-endian (large dig…