Skip to content

Commit

Permalink
k-hashv32, k-hashv64: expose compile-time constants in --list
Browse files Browse the repository at this point in the history
  • Loading branch information
darkk committed Sep 27, 2024
1 parent d7e2da7 commit a57d356
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
8 changes: 8 additions & 0 deletions Hashes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1327,6 +1327,14 @@ void nmhash32x_test ( const void * key, int len, uint32_t seed, void * out ) {
#ifdef HAVE_KHASHV
#include "k-hashv/khashv.h"

#define KHASH_VER_STR "vector:" MACRO_ITOA(KHASH_VECTOR) ", " \
"scalar:" MACRO_ITOA(KHASHV_SCALAR) ", " \
"__SSE3__:" MACRO_ITOA(__SSE3__) ", " \
"__SSE4_1__:" MACRO_ITOA(__SSE4_1__) ", " \
"__AVX512VL__:" MACRO_ITOA(__AVX512VL__)
const char * const khashv32_desc("Vectorized K-HashV, 32-bit, " KHASH_VER_STR);
const char * const khashv64_desc("Vectorized K-HashV, 64-bit, " KHASH_VER_STR);

khashvSeed khashv_seed;
void khashv_seed_init(size_t &seed) {
khashv_prep_seed64 (&khashv_seed, seed);
Expand Down
2 changes: 2 additions & 0 deletions Hashes.h
Original file line number Diff line number Diff line change
Expand Up @@ -1392,6 +1392,8 @@ inline void khash64_test ( const void *key, int len, uint32_t seed, void *out) {
#ifndef HAVE_BIT32
void khashv_seed_init(size_t &seed);
// call to khashv_hash_vector not inlined.
extern const char * const khashv32_desc;
extern const char * const khashv64_desc;
void khashv32_test ( const void *key, int len, uint32_t seed, void *out);
void khashv64_test ( const void *key, int len, uint32_t seed, void *out);
#endif
Expand Down
13 changes: 4 additions & 9 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -761,15 +761,10 @@ HashInfo g_hashes[] =
{ nmhash32_test, 32, nmhash32_broken() ? 0U : 0x12A30553, "nmhash32", nmhash32_desc, GOOD, {}},
{ nmhash32x_test, 32, nmhash32_broken() ? 0U : 0xA8580227, "nmhash32x", nmhash32x_desc, GOOD, {}},
#ifdef HAVE_KHASHV
#ifdef __clang__ // also gcc 9.4
#define KHASHV32_VERIF 0xB69DF8EB
#define KHASHV64_VERIF 0xA6B7E55B
#else // new gcc-11
#define KHASHV32_VERIF 0 /* 0x9A8F7952 */
#define KHASHV64_VERIF 0 /* 0X90A2A4F9 */
#endif
{ khashv32_test, 32, KHASHV32_VERIF, "k-hashv32", "Vectorized K-HashV, 32-bit", GOOD, {}},
{ khashv64_test, 64, KHASHV64_VERIF, "k-hashv64", "Vectorized K-HashV, 64-bit", GOOD, {}},
// There are certain GCC versions producing 0x9A8F7952 and 0X90A2A4F9 as verification values
// for k-hashv32 and k-hashv64. That deserves further investigation.
{ khashv32_test, 32, 0xB69DF8EB, "k-hashv32", khashv32_desc, GOOD, {}},
{ khashv64_test, 64, 0xA6B7E55B, "k-hashv64", khashv64_desc, GOOD, {}},
#endif
{ komihash_test, 64, 0x8157FF6D, "komihash", "komihash 5.10", GOOD, {} },
{ polymur_test, 64, 0x4F894810, "polymur", "github.com/orlp/polymur-hash v1, __SIZEOF_INT128__:" MACRO_ITOA(__SIZEOF_INT128__), GOOD, {} },
Expand Down

0 comments on commit a57d356

Please sign in to comment.