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:
Damjan Marion
2016-10-11 09:53:12 +02:00
committed by Dave Barach
parent dfa9c5bb9a
commit 383740d102
2 changed files with 11 additions and 0 deletions

View File

@@ -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 \

View File

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