diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2020-10-30 22:10:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-30 22:10:02 +0100 |
commit | b233b33e0cd425e50838906ee79d46271f1d868a (patch) | |
tree | b512deeb5f91af9d9e47e74fe01aa5f0856486bb /eval | |
parent | 5a19a1cdd0b7d8bf9683fbd4eb1199ba14b62c0c (diff) | |
parent | 170e1a00a84d3334e353a0f05c52b079d5618a0a (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.cpp | 20 |
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})); } }; |