From ac3a91f4f173e7a38c70d5cd0caf5a025642312b Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Wed, 17 Dec 2025 10:51:34 +0100 Subject: Improve pruning value fetching and re-do benchmarks --- src/solvers/h48/gendata_h48.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/solvers/h48/gendata_h48.h') diff --git a/src/solvers/h48/gendata_h48.h b/src/solvers/h48/gendata_h48.h index 15b7589..ef8a854 100644 --- a/src/solvers/h48/gendata_h48.h +++ b/src/solvers/h48/gendata_h48.h @@ -18,6 +18,8 @@ STATIC_INLINE uint8_t get_h48_pval(const unsigned char *, uint64_t); STATIC_INLINE void set_h48_pval(unsigned char *, uint64_t, uint8_t); STATIC_INLINE uint8_t get_h48_pvalmin(const unsigned char *, uint64_t); STATIC_INLINE void set_h48_pvalmin(unsigned char *, uint64_t, uint8_t); +STATIC_INLINE uint8_t get_h48_pval_and_min( + const unsigned char *, uint64_t, uint8_t [static 1]); STATIC long long gendata_h48_dispatch( @@ -526,3 +528,22 @@ set_h48_pvalmin(unsigned char *table, uint64_t i, uint8_t val) t = table[H48_INDEX(i)]; table[H48_INDEX(i)] = (t & UINT8_C(0xF)) | (v << UINT8_C(4)); } + +STATIC_INLINE uint8_t +get_h48_pval_and_min( + const unsigned char *table, + uint64_t coord_noext, + uint8_t pval_min[static 1] +) +{ + uint64_t iext, imin; + uint8_t t, tmin; + + iext = H48_LINE_EXT(coord_noext); + imin = H48_LINE_MIN(coord_noext); + t = table[H48_INDEX(iext)]; + tmin = table[H48_INDEX(imin)]; + + *pval_min = tmin >> UINT8_C(4); + return (t & H48_MASK(iext)) >> H48_SHIFT(iext); +} -- cgit v1.3