|
#define | XXH_FORCE_INLINE static |
|
#define | XXH_NO_INLINE static |
|
#define | XXH_ASSERT(c) ((void)0) |
|
#define | XXH_STATIC_ASSERT_WITH_MESSAGE(c, m) do { struct xxh_sa { char x[(c) ? 1 : -1]; }; } while(0) |
|
#define | XXH_STATIC_ASSERT(c) XXH_STATIC_ASSERT_WITH_MESSAGE((c),#c) |
|
#define | XXH_COMPILER_GUARD(var) ((void)0) |
| Used to prevent unwanted optimizations for var . More...
|
|
#define | XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) |
|
#define | XXH_HAS_BUILTIN(x) 0 |
|
#define | XXH_rotl32(x, r) (((x) << (r)) | ((x) >> (32 - (r)))) |
| 32-bit rotate left. More...
|
|
#define | XXH_rotl64(x, r) (((x) << (r)) | ((x) >> (64 - (r)))) |
|
|
static void * | XXH_malloc (size_t s) |
| Modify this function to use a different routine than malloc(). More...
|
|
static void | XXH_free (void *p) |
| Modify this function to use a different routine than free(). More...
|
|
static void * | XXH_memcpy (void *dest, const void *src, size_t size) |
| Modify this function to use a different routine than memcpy(). More...
|
|
static xxh_u32 | XXH_read32 (const void *memPtr) |
| Reads an unaligned 32-bit integer from ptr in native endianness. More...
|
|
static int | XXH_isLittleEndian (void) |
| Runtime check for XXH_CPU_LITTLE_ENDIAN. More...
|
|
static xxh_u32 | XXH_swap32 (xxh_u32 x) |
| A 32-bit byteswap. More...
|
|
static xxh_u32 | XXH_readLE32 (const void *ptr) |
| Reads an unaligned 32-bit little endian integer from ptr . More...
|
|
static xxh_u32 | XXH_readBE32 (const void *ptr) |
| Reads an unaligned 32-bit big endian integer from ptr . More...
|
|
static xxh_u32 | XXH_readLE32_align (const void *ptr, XXH_alignment align) |
| Like XXH_readLE32(), but has an option for aligned reads. More...
|
|
typedef XXH64_hash_t | xxh_u64 |
|
static xxh_u64 | XXH_read64 (const void *memPtr) |
|
static xxh_u64 | XXH_swap64 (xxh_u64 x) |
|
static xxh_u64 | XXH_readLE64 (const void *ptr) |
|
static xxh_u64 | XXH_readBE64 (const void *ptr) |
|
static xxh_u64 | XXH_readLE64_align (const void *ptr, XXH_alignment align) |
|
#define XXH_COMPILER_GUARD |
( |
|
var | ) |
((void)0) |
Used to prevent unwanted optimizations for var
.
It uses an empty GCC inline assembly statement with a register constraint which forces var
into a general purpose register (eg eax, ebx, ecx on x86) and marks it as modified.
This is used in a few places to avoid unwanted autovectorization (e.g. XXH32_round()). All vectorization we want is explicit via intrinsics, and usually isn't wanted elsewhere.
We also use it to prevent unwanted constant folding for AArch64 in XXH3_initCustomSecret_scalar().