public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,
	libc-alpha@sourceware.org
Cc: goldstein.w.n@gmail.com
Subject: Re: [PATCH v8 03/17] Add string-maskoff.h generic header
Date: Tue, 17 Jan 2023 15:33:27 -1000	[thread overview]
Message-ID: <3426dd71-b114-5a2d-334d-5c7daf5938f2@linaro.org> (raw)
In-Reply-To: <c8a65a76-0f55-5b6a-53b0-0602521f5661@linaro.org>

On 1/17/23 08:49, Adhemerval Zanella Netto wrote:
> 
> 
> On 16/01/23 17:58, Richard Henderson wrote:
>> On 1/13/23 08:27, Richard Henderson wrote:
>>> +/* Provide a mask based on the pointer alignment that sets up non-zero
>>> +   bytes before the beginning of the word.  It is used to mask off
>>> +   undesirable bits from an aligned read from an unaligned pointer.
>>> +   For instance, on a 64 bits machine with a pointer alignment of
>>> +   3 the function returns 0x0000000000ffffff for LE and 0xffffff0000000000
>>> +   (meaning to mask off the initial 3 bytes).  */
>>> +static __always_inline op_t
>>> +create_mask (uintptr_t i)
>>> +{
>>> +  i = i % sizeof (op_t);
>>> +  if (__BYTE_ORDER == __LITTLE_ENDIAN)
>>> +    return ~(((op_t)-1) << (i * CHAR_BIT));
>>> +  else
>>> +    return ~(((op_t)-1) >> (i * CHAR_BIT));
>>> +}
>>
>> This has exactly one use, in strlen, which could now use shift_find, like strchrnul.
> 
> Right, I remove the strlen usage then.

The thing is... leaving things as they are is probably better for HPPA and SH, which get 
to use their boolean byte comparison instructions.

The prior code in strchr(nul) was trying to prevent matches vs both 0 and C, consuming at 
least 4 extra insns (possibly more with the constant loads).  The new code in strchrnul 
may be better (or at least close) everywhere.

But perhaps simplicity demands removal in strlen as well?

> The word_containing can be removed as well in favor of PTR_ALIGN macros and

Good idea.

> I will rename the header to string-repeat_bytes.h.

Or merge with string-extbyte.h and name string-misc.h?


r~


  reply	other threads:[~2023-01-18  1:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-13 18:27 [PATCH v8 00/17] Improve generic string routines Richard Henderson
2023-01-13 18:27 ` [PATCH v8 01/17] Parameterize op_t from memcopy.h Richard Henderson
2023-01-16 20:52   ` Richard Henderson
2023-01-13 18:27 ` [PATCH v8 02/17] Parameterize OP_T_THRES " Richard Henderson
2023-01-16 20:52   ` Richard Henderson
2023-01-13 18:27 ` [PATCH v8 03/17] Add string-maskoff.h generic header Richard Henderson
2023-01-16 20:58   ` Richard Henderson
2023-01-17 18:49     ` Adhemerval Zanella Netto
2023-01-18  1:33       ` Richard Henderson [this message]
2023-01-18 12:45         ` Adhemerval Zanella Netto
2023-01-13 18:27 ` [PATCH v8 04/17] Add string vectorized find and detection functions Richard Henderson
2023-01-16 21:04   ` Richard Henderson
2023-01-13 18:27 ` [PATCH v8 05/17] string: Improve generic strlen Richard Henderson
2023-01-13 18:27 ` [PATCH v8 06/17] string: Improve generic strnlen Richard Henderson
2023-01-13 18:27 ` [PATCH v8 07/17] string: Improve generic strchr Richard Henderson
2023-01-13 18:27 ` [PATCH v8 08/17] string: Improve generic strchrnul Richard Henderson
2023-01-13 18:27 ` [PATCH v8 09/17] string: Improve generic strcmp Richard Henderson
2023-01-13 18:27 ` [PATCH v8 10/17] string: Improve generic memchr Richard Henderson
2023-01-13 18:27 ` [PATCH v8 11/17] string: Improve generic memrchr Richard Henderson
2023-01-13 18:27 ` [PATCH v8 12/17] hppa: Add memcopy.h Richard Henderson
2023-01-13 18:27 ` [PATCH v8 13/17] hppa: Add string-fzb.h and string-fzi.h Richard Henderson
2023-01-13 18:27 ` [PATCH v8 14/17] alpha: " Richard Henderson
2023-01-13 18:27 ` [PATCH v8 15/17] arm: Add string-fza.h Richard Henderson
2023-01-13 18:27 ` [PATCH v8 16/17] powerpc: " Richard Henderson
2023-01-17 14:35   ` Adhemerval Zanella Netto
2023-01-13 18:27 ` [PATCH v8 17/17] sh: Add string-fzb.h Richard Henderson
2023-01-17 14:35   ` Adhemerval Zanella Netto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3426dd71-b114-5a2d-334d-5c7daf5938f2@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=adhemerval.zanella@linaro.org \
    --cc=goldstein.w.n@gmail.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).