18template <
typename Config>
36 template <u
int64_t HashIndex>
62 [&]<uint64_t HashIndex>(std::integral_constant<uint64_t, HashIndex>) {
64 const uint64_t bit_pos = sectorizedBitAddress<HashIndex>(baseHash);
65 const uint64_t bit = uint64_t{1} << bit_pos;
66 if constexpr (s == 0) {
68 }
else if constexpr (s == 1) {
70 }
else if constexpr (s == 2) {
consteval bool separatorPositionAlwaysEncodesInvalid(char *input, uint64_t separatorPosition, uint64_t index)
Recursively tests whether placing the separator byte at any position in an input of valid bytes alway...
static constexpr uint64_t blockWordCount
64-bit words per 256-bit shard.
static constexpr uint64_t hashCount
Independent Bloom hash functions.
static constexpr uint64_t wordBits
Bits per shard word.
One 256-bit filter block stored as an array of Config::blockWordCount words.
__device__ static __forceinline__ void sectorizedHashToMasks(uint64_t baseHash, uint64_t &mask0, uint64_t &mask1, uint64_t &mask2, uint64_t &mask3)
Accumulates Bloom bit masks for all hash indices into four shard words.
static constexpr bool useBitSlicing
static constexpr uint64_t wordCount
static constexpr int wordBitsLog2
static constexpr uint64_t wordMask
constexpr __host__ static __device__ uint64_t sectorizedBitAddress(uint64_t baseHash)
Bit position within shard word HashIndex % blockWordCount for baseHash.
static constexpr int hashShift
static constexpr uint64_t wordBits
uint64_t words[wordCount]
Sector words, hash i maps to word i % blockWordCount.
static constexpr uint64_t sliceWidth