| 2459 | #define XXH_get64bits(p) XXH_readLE64_align(p, align) |
| 2460 | |
| 2461 | static xxh_u64 |
| 2462 | XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) |
| 2463 | { |
| 2464 | if (ptr==NULL) XXH_ASSERT(len == 0); |
| 2465 | len &= 31; |
| 2466 | while (len >= 8) { |
| 2467 | xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); |
| 2468 | ptr += 8; |
| 2469 | h64 ^= k1; |
| 2470 | h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; |
| 2471 | len -= 8; |
| 2472 | } |
| 2473 | if (len >= 4) { |
| 2474 | h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; |
| 2475 | ptr += 4; |
| 2476 | h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; |
| 2477 | len -= 4; |
| 2478 | } |
| 2479 | while (len > 0) { |
| 2480 | h64 ^= (*ptr++) * XXH_PRIME64_5; |
| 2481 | h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; |
| 2482 | --len; |
| 2483 | } |
| 2484 | return XXH64_avalanche(h64); |
| 2485 | } |
| 2486 | |
| 2487 | #ifdef XXH_OLD_NAMES |
| 2488 | # define PROCESS1_64 XXH_PROCESS1_64 |
no test coverage detected