summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2020-10-30 22:10:02 +0100
committerGitHub <noreply@github.com>2020-10-30 22:10:02 +0100
commitb233b33e0cd425e50838906ee79d46271f1d868a (patch)
treeb512deeb5f91af9d9e47e74fe01aa5f0856486bb /eval
parent5a19a1cdd0b7d8bf9683fbd4eb1199ba14b62c0c (diff)
parent170e1a00a84d3334e353a0f05c52b079d5618a0a (diff)
Merge pull request #15120 from vespa-engine/havardpe/avoid-unrolling-reduce-all
avoid unrolling reduce all loop
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/instruction/generic_reduce.cpp20
1 files changed, 5 insertions, 15 deletions
diff --git a/eval/src/vespa/eval/instruction/generic_reduce.cpp b/eval/src/vespa/eval/instruction/generic_reduce.cpp
index e930cd9e7a0..ce68e3db36f 100644
--- a/eval/src/vespa/eval/instruction/generic_reduce.cpp
+++ b/eval/src/vespa/eval/instruction/generic_reduce.cpp
@@ -114,23 +114,13 @@ template <typename ICT, typename OCT, typename AGGR>
void my_full_reduce_op(State &state, uint64_t) {
auto cells = state.peek(0).cells().typify<ICT>();
if (cells.size() > 0) {
- AGGR aggr[4];
- size_t i = 0;
- for (; (i + 3) < cells.size(); i += 4) {
- aggr[0].sample(cells[i+0]);
- aggr[1].sample(cells[i+1]);
- aggr[2].sample(cells[i+2]);
- aggr[3].sample(cells[i+3]);
+ AGGR aggr;
+ for (ICT value: cells) {
+ aggr.sample(value);
}
- for (; i < cells.size(); ++i) {
- aggr[0].sample(cells[i]);
- }
- aggr[0].merge(aggr[1]);
- aggr[0].merge(aggr[2]);
- aggr[0].merge(aggr[3]);
- state.pop_push(state.stash.create<ScalarValue<OCT>>(aggr[0].result()));
+ state.pop_push(state.stash.create<ScalarValue<OCT>>(aggr.result()));
} else {
- state.pop_push(state.stash.create<ScalarValue<OCT>>(0.0));
+ state.pop_push(state.stash.create<ScalarValue<OCT>>(OCT{0}));
}
};