Clean up vector_algorithms.cpp again: unsigned bit manipulation, scope guard for multiple return
#5532
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow up for #5519
_bittestandreset. The compiler emitsbtcfor the^= 1 << npattern, which has the same performance asbtrfor_bittestandreset.searchcould also use_Bingo &= _Bingo - 1, or_blsr_u32, but there's not enough evidence in significant enough performance advantage to use thisfind_endcould try_bzhi_u32, but didn't even bother, here the expectation is even lower.movemask*. Always 32 bit because internally there is 32-bit destination register, always unsigned because bitmask.intforcmpestr*masks, it is compile time, and only few bits, and intrinsic takesint