qemu/include/exec/tb-hash-xx.h
/*
 * xxhash32, customized for input variables that are not guaranteed to be
 * contiguous in memory.
 */
xxhash32, customized for input variables that are not guaranteed to be
contiguous in memory.
xxhash32 customized for input variables that are not guaranteed to be contiguous in memory .
static inline uint32_t
tb_hash_func7(uint64_t a0, uint64_t b0, uint32_t e, uint32_t f, uint32_t g)
{
    uint32_t v1 = TB_HASH_XX_SEED + PRIME32_1 + PRIME32_2;
    uint32_t v2 = TB_HASH_XX_SEED + PRIME32_2;
    uint32_t v3 = TB_HASH_XX_SEED + 0;
    uint32_t v4 = TB_HASH_XX_SEED - PRIME32_1;
    uint32_t a = a0 >> 32;
    uint32_t b = a0;
    uint32_t c = b0 >> 32;
    uint32_t d = b0;
    uint32_t h32;
    v1 += a * PRIME32_2;
    v1 = rol32(v1, 13);
    v1 *= PRIME32_1;
    v2 += b * PRIME32_2;
    v2 = rol32(v2, 13);
    v2 *= PRIME32_1;
    v3 += c * PRIME32_2;
    v3 = rol32(v3, 13);
    v3 *= PRIME32_1;
    v4 += d * PRIME32_2;
    v4 = rol32(v4, 13);
    v4 *= PRIME32_1;
    h32 = rol32(v1, 1) + rol32(v2, 7) + rol32(v3, 12) + rol32(v4, 18);
    h32 += 28;
    h32 += e * PRIME32_3;
    h32  = rol32(h32, 17) * PRIME32_4;
    h32 += f * PRIME32_3;
    h32  = rol32(h32, 17) * PRIME32_4;
    h32 += g * PRIME32_3;
    h32  = rol32(h32, 17) * PRIME32_4;
    h32 ^= h32 >> 15;
    h32 *= PRIME32_2;
    h32 ^= h32 >> 13;
    h32 *= PRIME32_3;
    h32 ^= h32 >> 16;
    return h32;
}
static inline uint32_t tb_hash_func7 ( uint64_t a0 , uint64_t b0 , uint32_t e , uint32_t f , uint32_t g ) { uint32_t v1 = TB_HASH_XX_SEED + PRIME32_1 + PRIME32_2 ; uint32_t v2 = TB_HASH_XX_SEED + PRIME32_2 ; uint32_t v3 = TB_HASH_XX_SEED + 0 ; uint32_t v4 = TB_HASH_XX_SEED - PRIME32_1 ; uint32_t a = a0 >> 32 ; uint32_t b = a0 ; uint32_t c = b0 >> 32 ; uint32_t d = b0 ; uint32_t h32 ; v1 += a * PRIME32_2 ; v1 = rol32 ( v1 , 13 ) ; v1 *= PRIME32_1 ; v2 += b * PRIME32_2 ; v2 = rol32 ( v2 , 13 ) ; v2 *= PRIME32_1 ; v3 += c * PRIME32_2 ; v3 = rol32 ( v3 , 13 ) ; v3 *= PRIME32_1 ; v4 += d * PRIME32_2 ; v4 = rol32 ( v4 , 13 ) ; v4 *= PRIME32_1 ; h32 = rol32 ( v1 , 1 ) + rol32 ( v2 , 7 ) + rol32 ( v3 , 12 ) + rol32 ( v4 , 18 ) ; h32 += 28 ; h32 += e * PRIME32_3 ; h32 = rol32 ( h32 , 17 ) * PRIME32_4 ; h32 += f * PRIME32_3 ; h32 = rol32 ( h32 , 17 ) * PRIME32_4 ; h32 += g * PRIME32_3 ; h32 = rol32 ( h32 , 17 ) * PRIME32_4 ; h32 ^= h32 >> 15 ; h32 *= PRIME32_2 ; h32 ^= h32 >> 13 ; h32 *= PRIME32_3 ; h32 ^= h32 >> 16 ; return h32 ; }
xxhash32, customized for input variables that are not guaranteed to be
 contiguous in memory.
xxhash32 customized for input variables that are not guaranteed to be contiguous in memory .