aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2021-02-28 14:26:08 +0100
committerGitHub <noreply@github.com>2021-02-28 14:26:08 +0100
commit064c29f0186487fc498aa2efac22db548818b86d (patch)
tree0476b85ffcf37c9040bd1d7f29d58d779a49e73e
parent00ac6743f1dfb984e9710a70d443a1de0d59d27e (diff)
parentb1558d132fca0244362107915140aefb3aede042 (diff)
Merge pull request #16695 from vespa-engine/arnej/any-vector-in-nested-loop
handle any vector-like loop/stride pairs
-rw-r--r--eval/src/vespa/eval/eval/nested_loop.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/eval/src/vespa/eval/eval/nested_loop.h b/eval/src/vespa/eval/eval/nested_loop.h
index c7898e26179..46f11006137 100644
--- a/eval/src/vespa/eval/eval/nested_loop.h
+++ b/eval/src/vespa/eval/eval/nested_loop.h
@@ -67,8 +67,8 @@ template <typename F> void execute_many(size_t idx1, size_t idx2, const size_t *
} // implementation details
// Run a nested loop and pass indexes to 'f'
-template <typename F>
-void run_nested_loop(size_t idx, const std::vector<size_t> &loop, const std::vector<size_t> &stride, const F &f) {
+template <typename F, typename V>
+void run_nested_loop(size_t idx, const V &loop, const V &stride, const F &f) {
size_t levels = loop.size();
switch(levels) {
case 0: return f(idx);
@@ -82,8 +82,8 @@ void run_nested_loop(size_t idx, const std::vector<size_t> &loop, const std::vec
// Run two nested loops in parallel and pass both indexes to 'f'. Note
// that 'loop' is shared, which means that only individual strides may
// differ between the two loops.
-template <typename F>
-void run_nested_loop(size_t idx1, size_t idx2, const std::vector<size_t> &loop, const std::vector<size_t> &stride1, const std::vector<size_t> &stride2, const F &f) {
+template <typename F, typename V>
+void run_nested_loop(size_t idx1, size_t idx2, const V &loop, const V &stride1, const V &stride2, const F &f) {
size_t levels = loop.size();
switch(levels) {
case 0: return f(idx1, idx2);