aboutsummaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-11 14:40:54 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-02-11 14:40:54 +0000
commit51eb186a651a41344322f3d9e44510c8e14fd54d (patch)
tree6375a0d65d225499eb84a73e70e37d4b7f68717c /eval
parent31b7cd9833fe8ecf783148b8510ee67222934d18 (diff)
Deinline the double nested core loop
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp b/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp
index 080f51e384a..b17c2db8b22 100644
--- a/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp
+++ b/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp
@@ -16,17 +16,17 @@ using namespace instruction;
namespace {
template <typename T, size_t N>
-ConstArrayRef<T> as_car(std::array<T, N> &array) {
+ConstArrayRef<T> as_car(std::array<T, N> &array) noexcept {
return {array.data(), array.size()};
}
template <typename T, size_t N>
-ConstArrayRef<const T *> as_ccar(std::array<T *, N> &array) {
+ConstArrayRef<const T *> as_ccar(std::array<T *, N> &array) noexcept {
return {array.data(), array.size()};
}
template <typename T>
-ConstArrayRef<T> as_car(T &value) {
+ConstArrayRef<T> as_car(T &value) noexcept {
return {&value, 1};
}
@@ -63,6 +63,9 @@ double my_sparse_112_dot_product_fallback(const Value::Index &a_idx, const Value
template <typename CT>
double my_fast_sparse_112_dot_product(const FastAddrMap *a_map, const FastAddrMap *b_map, const FastAddrMap *c_map,
+ const CT *a_cells, const CT *b_cells, const CT *c_cells) __attribute__((noinline));
+template <typename CT>
+double my_fast_sparse_112_dot_product(const FastAddrMap *a_map, const FastAddrMap *b_map, const FastAddrMap *c_map,
const CT *a_cells, const CT *b_cells, const CT *c_cells)
{
double result = 0.0;