hv: Add 64 bits hash function
This patch adds hash function to hash 64bit value. Tracked-On: #4550 Signed-off-by: Yonghua Huang <yonghua.huang@intel.com> Acked-by: Eddie Dong<eddie.dong@Intel.com>
This commit is contained in:
parent
fca8750ba6
commit
63c019c6d2
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Intel Corporation. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef HASH_H
|
||||
#define HASH_H
|
||||
|
||||
#include <types.h>
|
||||
|
||||
/*
|
||||
* Hash factor is selected following below formula:
|
||||
* - factor64 = 2^64 * ((sqrt(5) - 1)/2)
|
||||
* here, ((sqrt(5) - 1)/2) is golden ratio.
|
||||
*/
|
||||
#define HASH_FACTOR64 0x9E3779B9486E555EUL
|
||||
|
||||
/*
|
||||
* Hash function multiplies 64bit key by 64bit hash
|
||||
* factor and returns high bits.
|
||||
*
|
||||
* @pre (bits < 64)
|
||||
*/
|
||||
static inline uint64_t hash64(uint64_t key, uint32_t bits)
|
||||
{
|
||||
return (key * HASH_FACTOR64) >> (64U - bits);
|
||||
}
|
||||
|
||||
#endif /* HASH_H */
|
Loading…
Reference in New Issue