From f3f1004b7cd061a883c42b89f15df404287d61d6 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Thu, 25 Feb 2021 21:03:51 +0000 Subject: handle any vector-like loop/stride pairs --- eval/src/vespa/eval/eval/nested_loop.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eval/src/vespa/eval/eval/nested_loop.h b/eval/src/vespa/eval/eval/nested_loop.h index c7898e26179..5fcc1ecaf1f 100644 --- a/eval/src/vespa/eval/eval/nested_loop.h +++ b/eval/src/vespa/eval/eval/nested_loop.h @@ -67,8 +67,8 @@ template void execute_many(size_t idx1, size_t idx2, const size_t * } // implementation details // Run a nested loop and pass indexes to 'f' -template -void run_nested_loop(size_t idx, const std::vector &loop, const std::vector &stride, const F &f) { +template +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); -- cgit v1.2.3 From b1558d132fca0244362107915140aefb3aede042 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Sat, 27 Feb 2021 19:47:54 +0000 Subject: template run_nested_loop with two stride sets also --- eval/src/vespa/eval/eval/nested_loop.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eval/src/vespa/eval/eval/nested_loop.h b/eval/src/vespa/eval/eval/nested_loop.h index 5fcc1ecaf1f..46f11006137 100644 --- a/eval/src/vespa/eval/eval/nested_loop.h +++ b/eval/src/vespa/eval/eval/nested_loop.h @@ -82,8 +82,8 @@ void run_nested_loop(size_t idx, const V &loop, const V &stride, const F &f) { // 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 -void run_nested_loop(size_t idx1, size_t idx2, const std::vector &loop, const std::vector &stride1, const std::vector &stride2, const F &f) { +template +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); -- cgit v1.2.3