MCPcopy Create free account
hub / github.com/beefytech/Beef / XXH_errorcode XXH32_update_endian

Function XXH_errorcode XXH32_update_endian

BeefySysLib/util/Hash.cpp:588–675  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

586
587
588FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state_in, const void* input, size_t len, XXH_endianess endian)
589{
590 XXH_istate32_t* state = (XXH_istate32_t *) state_in;
591 const BYTE* p = (const BYTE*)input;
592 const BYTE* const bEnd = p + len;
593
594#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
595 if (input==NULL) return XXH_ERROR;
596#endif
597
598 state->total_len += len;
599
600 if (state->memsize + len < 16) // fill in tmp buffer
601 {
602 XXH_memcpy(state->memory + state->memsize, input, len);
603 state->memsize += (U32)len;
604 return XXH_OK;
605 }
606
607 if (state->memsize) // some data left from previous update
608 {
609 XXH_memcpy(state->memory + state->memsize, input, 16-state->memsize);
610 {
611 const U32* p32 = (const U32*)state->memory;
612 state->v1 += XXH_readLE32(p32, endian) * PRIME32_2;
613 state->v1 = XXH_rotl32(state->v1, 13);
614 state->v1 *= PRIME32_1;
615 p32++;
616 state->v2 += XXH_readLE32(p32, endian) * PRIME32_2;
617 state->v2 = XXH_rotl32(state->v2, 13);
618 state->v2 *= PRIME32_1;
619 p32++;
620 state->v3 += XXH_readLE32(p32, endian) * PRIME32_2;
621 state->v3 = XXH_rotl32(state->v3, 13);
622 state->v3 *= PRIME32_1;
623 p32++;
624 state->v4 += XXH_readLE32(p32, endian) * PRIME32_2;
625 state->v4 = XXH_rotl32(state->v4, 13);
626 state->v4 *= PRIME32_1;
627 p32++;
628 }
629 p += 16-state->memsize;
630 state->memsize = 0;
631 }
632
633 if (p <= bEnd-16)
634 {
635 const BYTE* const limit = bEnd - 16;
636 U32 v1 = state->v1;
637 U32 v2 = state->v2;
638 U32 v3 = state->v3;
639 U32 v4 = state->v4;
640
641 do
642 {
643 v1 += XXH_readLE32((const U32*)p, endian) * PRIME32_2;
644 v1 = XXH_rotl32(v1, 13);
645 v1 *= PRIME32_1;

Callers

nothing calls this directly

Calls 2

XXH_memcpyFunction · 0.85
XXH_readLE32Function · 0.85

Tested by

no test coverage detected