Fix SIMDWrapper::scalar::types::loop_mask for out of range
All threads resolved!
All threads resolved!
in the scalar namespace loop_mask
returns always true. In other namespaces, it checks if the access is out-of-range. Consistent behaviour would be if loop_mask(1,1)
returned false
.
from my side good for testing.
Edited by Rosen Matev
Merge request reports
Activity
ran into it when replacing <an
LHCb::span
that is all-but-last-element of astd::vector
> with . And I did that by replacing theproxy.loop_mask()
by...::loop_mask(proxy.offset(), proxy.size() -1)
.That then replaces
std::none_of(the_span.begin(), the_span.end(), predicate);
by (quasi code)
std::all_of( zip.begin(), zip.end(), [](const auto proxy)->mask_v { return none( loop_mask(proxy.offset(), proxy.offset() -1) && predicate(...) ); });
(assuming predicate can return mask_v)
In the last iteration of
all_of
one may encounter a partially empty loop_mask, an empty loop mask (unlucky case where minus one just reached the boundary of the previous simd chunk), or a false (scalar case).- Resolved by Ross John Hunter
/ci-test --merge
assigned to @rmatev
mentioned in commit e46cf4b5
Please register or sign in to reply