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:
Yonghua Huang 2020-05-14 09:56:50 +08:00 committed by wenlingz
parent fca8750ba6
commit 63c019c6d2
1 changed files with 30 additions and 0 deletions

View File

@ -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 */