vppinfra: use crc32q instruction instead of xxhash in bihash_8_8
xxhash calculation takes 10 clock cycles on Haswell so it makes sense to use crc32q insutrction when available. Change-Id: Iab5e7d9c8ec0125626bbcd067e5dc30574c8febc Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
committed by
Dave Barach
parent
dfa9c5bb9a
commit
383740d102
@@ -224,6 +224,9 @@ nobase_include_HEADERS = \
|
||||
CLIB_CORE = \
|
||||
vppinfra/asm_x86.c \
|
||||
vppinfra/backtrace.c \
|
||||
vppinfra/bihash_8_8.h \
|
||||
vppinfra/bihash_24_8.h \
|
||||
vppinfra/bihash_template.h \
|
||||
vppinfra/cpu.c \
|
||||
vppinfra/elf.c \
|
||||
vppinfra/elog.c \
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
#include <vppinfra/pool.h>
|
||||
#include <vppinfra/xxhash.h>
|
||||
|
||||
#if __SSE4_2__
|
||||
#include <x86intrin.h>
|
||||
#endif
|
||||
|
||||
/** 8 octet key, 8 octet key value pair */
|
||||
typedef struct
|
||||
{
|
||||
@@ -49,7 +53,11 @@ clib_bihash_is_free_8_8 (clib_bihash_kv_8_8_t * v)
|
||||
static inline u64
|
||||
clib_bihash_hash_8_8 (clib_bihash_kv_8_8_t * v)
|
||||
{
|
||||
#if __SSE4_2__
|
||||
return _mm_crc32_u64 (v->key, 0);
|
||||
#else
|
||||
return clib_xxhash (v->key);
|
||||
#endif
|
||||
}
|
||||
|
||||
/** Format a clib_bihash_kv_8_8_t instance
|
||||
|
||||
Reference in New Issue
Block a user