| 460 | } |
| 461 | |
| 462 | bool BlockSplitBloomFilter::FindHash(uint64_t hash) const { |
| 463 | const uint32_t bucket_index = static_cast<uint32_t>(((hash >> 32) * NumBlocks()) >> 32); |
| 464 | const uint32_t key = static_cast<uint32_t>(hash); |
| 465 | const uint32_t* bitset32 = reinterpret_cast<const uint32_t*>(data_->data()); |
| 466 | const uint32_t* block = bitset32 + kBitsSetPerBlock * bucket_index; |
| 467 | static ::arrow::internal::DynamicDispatch<internal::FindHashBlockDynamicFunction> |
| 468 | dispatch; |
| 469 | return dispatch(std::span<const uint32_t, kBitsSetPerBlock>(block, kBitsSetPerBlock), |
| 470 | std::span<const uint32_t, kBitsSetPerBlock>(SALT), key); |
| 471 | } |
| 472 | |
| 473 | void BlockSplitBloomFilter::InsertHashImpl(uint64_t hash) { |
| 474 | const uint32_t bucket_index = static_cast<uint32_t>(((hash >> 32) * NumBlocks()) >> 32); |