diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-09-28 16:14:40 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-09-28 16:14:40 +0000 |
commit | 5c19556d2abdc05d5bd179d2a4a31d1a368ab349 (patch) | |
tree | 11cc2611bae84dd7b5d8e39a2faa2fe9b0f94999 /eval | |
parent | 433e18f5267d0b2dbaf2794b739ed7a42c0e155a (diff) |
use common binary_hamming_distance function
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/vespa/eval/instruction/dense_hamming_distance.cpp | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp b/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp index 2a68663631a..acb3e85657b 100644 --- a/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp +++ b/eval/src/vespa/eval/instruction/dense_hamming_distance.cpp @@ -4,6 +4,7 @@ #include <vespa/eval/eval/operation.h> #include <vespa/eval/eval/value.h> #include <vespa/eval/eval/hamming_distance.h> +#include <vespa/vespalib/util/hamming_distance.h> #include <vespa/log/log.h> LOG_SETUP(".eval.instruction.dense_hamming_distance"); @@ -14,27 +15,6 @@ using namespace tensor_function; namespace { - -size_t binary_hamming_distance(const void *lhs, const void *rhs, size_t sz) { - const uint64_t *words_a = static_cast<const uint64_t *>(lhs); - const uint64_t *words_b = static_cast<const uint64_t *>(rhs); - size_t sum = 0; - size_t i = 0; - for (; i * 8 + 7 < sz; ++i) { - uint64_t xor_bits = words_a[i] ^ words_b[i]; - sum += __builtin_popcountl(xor_bits); - } - if (__builtin_expect((i * 8 < sz), false)) { - const uint8_t *bytes_a = static_cast<const uint8_t *>(lhs); - const uint8_t *bytes_b = static_cast<const uint8_t *>(rhs); - for (i *= 8; i < sz; ++i) { - uint64_t xor_bits = bytes_a[i] ^ bytes_b[i]; - sum += __builtin_popcountl(xor_bits); - } - } - return sum; -}; - void int8_hamming_to_double_op(InterpretedFunction::State &state, uint64_t vector_size) { const auto &lhs = state.peek(1); const auto &rhs = state.peek(0); |