xxHash  0.8.0
Extremely fast non-cryptographic hash function
Data Structures | Macros | Typedefs | Functions | Variables
xxh_x86dispatch.c File Reference
#include <assert.h>
#include "xxhash.h"

Data Structures

struct  XXH_dispatchFunctions_s
 
struct  XXH_dispatch128Functions_s
 

Macros

#define XXH_X86DISPATCH_ALLOW_AVX
 Disables the AVX sanity check. More...
 
#define XXH_HAS_INCLUDE(header)   0
 
#define XXH_DISPATCH_SCALAR   1
 Enables/dispatching the scalar code path. More...
 
#define XXH_DISPATCH_AVX2   0
 Enables/disables dispatching for AVX2. More...
 
#define XXH_DISPATCH_AVX512   0
 Enables/disables dispatching for AVX512. More...
 
#define XXH_debugPrint(str)   ((void)0)
 
#define NDEBUG
 
#define XXH_INLINE_ALL
 
#define XXH_X86DISPATCH
 
#define XXH_I_ATT(intel, att)   "{" att "|" intel "}\n\t"
 
#define XXH_SSE2_CPUID_MASK   (1 << 26)
 
#define XXH_OSXSAVE_CPUID_MASK   ((1 << 26) | (1 << 27))
 
#define XXH_AVX2_CPUID_MASK   (1 << 5)
 
#define XXH_AVX2_XGETBV_MASK   ((1 << 2) | (1 << 1))
 
#define XXH_AVX512F_CPUID_MASK   (1 << 16)
 
#define XXH_AVX512F_XGETBV_MASK   ((7 << 5) | (1 << 2) | (1 << 1))
 
#define XXH_DEFINE_DISPATCH_FUNCS(suffix, target)
 Defines the various dispatch functions. More...
 
#define XXH_NB_DISPATCHES   4
 

Typedefs

typedef XXH64_hash_t(* XXH3_dispatchx86_hashLong64_default) (const void *restrict, size_t)
 
typedef XXH64_hash_t(* XXH3_dispatchx86_hashLong64_withSeed) (const void *restrict, size_t, XXH64_hash_t)
 
typedef XXH64_hash_t(* XXH3_dispatchx86_hashLong64_withSecret) (const void *restrict, size_t, const void *restrict, size_t)
 
typedef XXH_errorcode(* XXH3_dispatchx86_update) (XXH3_state_t *, const void *, size_t)
 
typedef XXH128_hash_t(* XXH3_dispatchx86_hashLong128_default) (const void *restrict, size_t)
 
typedef XXH128_hash_t(* XXH3_dispatchx86_hashLong128_withSeed) (const void *restrict, size_t, XXH64_hash_t)
 
typedef XXH128_hash_t(* XXH3_dispatchx86_hashLong128_withSecret) (const void *restrict, size_t, const void *restrict, size_t)
 

Functions

static void XXH_cpuid (xxh_u32 eax, xxh_u32 ecx, xxh_u32 *abcd)
 Runs CPUID. More...
 
static int XXH_featureTest (void)
 Returns the best XXH3 implementation. More...
 
static void XXH_setDispatch (void)
 Runs a CPUID check and sets the correct dispatch tables. More...
 
static XXH64_hash_t XXH3_hashLong_64b_defaultSecret_selection (const void *input, size_t len, XXH64_hash_t seed64, const xxh_u8 *secret, size_t secretLen)
 
XXH64_hash_t XXH3_64bits_dispatch (const void *input, size_t len)
 
static XXH64_hash_t XXH3_hashLong_64b_withSeed_selection (const void *input, size_t len, XXH64_hash_t seed64, const xxh_u8 *secret, size_t secretLen)
 
XXH64_hash_t XXH3_64bits_withSeed_dispatch (const void *input, size_t len, XXH64_hash_t seed)
 
static XXH64_hash_t XXH3_hashLong_64b_withSecret_selection (const void *input, size_t len, XXH64_hash_t seed64, const xxh_u8 *secret, size_t secretLen)
 
XXH64_hash_t XXH3_64bits_withSecret_dispatch (const void *input, size_t len, const void *secret, size_t secretLen)
 
XXH_errorcode XXH3_64bits_update_dispatch (XXH3_state_t *state, const void *input, size_t len)
 
static XXH128_hash_t XXH3_hashLong_128b_defaultSecret_selection (const void *input, size_t len, XXH64_hash_t seed64, const void *secret, size_t secretLen)
 
XXH128_hash_t XXH3_128bits_dispatch (const void *input, size_t len)
 
static XXH128_hash_t XXH3_hashLong_128b_withSeed_selection (const void *input, size_t len, XXH64_hash_t seed64, const void *secret, size_t secretLen)
 
XXH128_hash_t XXH3_128bits_withSeed_dispatch (const void *input, size_t len, XXH64_hash_t seed)
 
static XXH128_hash_t XXH3_hashLong_128b_withSecret_selection (const void *input, size_t len, XXH64_hash_t seed64, const void *secret, size_t secretLen)
 
XXH128_hash_t XXH3_128bits_withSecret_dispatch (const void *input, size_t len, const void *secret, size_t secretLen)
 
XXH_errorcode XXH3_128bits_update_dispatch (XXH3_state_t *state, const void *input, size_t len)
 

Variables

static const XXH_dispatchFunctions_s XXH_kDispatch [XXH_NB_DISPATCHES]
 Table of dispatchers for XXH3_64bits(). More...
 
static XXH_dispatchFunctions_s XXH_g_dispatch = { NULL, NULL, NULL, NULL }
 The selected dispatch table for XXH3_64bits(). More...
 
static const XXH_dispatch128Functions_s XXH_kDispatch128 [XXH_NB_DISPATCHES]
 Table of dispatchers for XXH3_128bits(). More...
 
static XXH_dispatch128Functions_s XXH_g_dispatch128 = { NULL, NULL, NULL, NULL }
 The selected dispatch table for XXH3_64bits(). More...
 

Detailed Description

Automatic dispatcher code for the XXH3 family on x86-based targets.

Optional add-on.

Compile this file with the default flags for your target. Do not compile with flags like -mavx*, -march=native, or /arch:AVX*, there will be an error. See XXH_X86DISPATCH_ALLOW_AVX for details.