[PATCH v12 03/31] Add string vectorized find and detection functions

Richard Henderson richard.henderson@linaro.org
Sat Feb 4 02:54:26 GMT 2023


On 2/3/23 03:40, Adhemerval Zanella Netto wrote:
> I will send only this patch to avoid resend all the thread that is already
> reviewed.
> 
> ---
> 
> [PATCH 03/31] Add string vectorized find and detection functions
> 
> This patch adds generic string find and detection meant to be used in
> generic vectorized string implementation.  The idea is to decompose the
> basic string operation so each architecture can reimplement if it
> provides any specialized hardware instruction.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~

> 
> The 'string-misc.h' provides miscellaneous functions:
> 
>    - extractbyte: extracts the byte from an specific index.
>    - repeat_bytes: setup an word by replicate the argument on each byte.
> 
> The 'string-fza.h' provides zero byte detection functions:
> 
>    - find_zero_low, find_zero_all, find_eq_low, find_eq_all,
>      find_zero_eq_low, find_zero_eq_all, and find_zero_ne_all
> 
> The 'string-fzb.h' provides boolean zero byte detection functions:
> 
>    - has_zero: determine if any byte within a word is zero.
>    - has_eq: determine byte equality between two words.
>    - has_zero_eq: determine if any byte within a word is zero along with
>      byte equality between two words.
> 
> The 'string-fzi.h' provides positions for string-fza.h results:
> 
>    - index_first: return index of first zero byte within a word.
>    - index_last: return index of first byte different between two words.
> 
> The 'string-fzc.h' provides a combined version of fza and fzi:
> 
>    - index_first_zero_eq: return index of first zero byte within a word or
>      first byte different between two words.
>    - index_first_zero_ne: return index of first zero byte within a word or
>      first byte equal between two words.
>    - index_last_zero: return index of last zero byte within a word.
>    - index_last_eq: return index of last byte different between two words.
> 
> The 'string-shift.h' provides a way to mask off parts of a work based on
> some alignmnet (to handle unaligned arguments):
> 
>    - shift_find, shift_find_last.
> 
> Co-authored-by: Richard Henderson <richard.henderson@linaro.org>


More information about the Libc-alpha mailing list