public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
To: Noah Goldstein <goldstein.w.n@gmail.com>
Cc: GNU C Library <libc-alpha@sourceware.org>,
	Richard Henderson <rth@twiddle.net>,
	Joseph Myers <joseph@codesourcery.com>,
	caiyinyu <caiyinyu@loongson.cn>
Subject: Re: [PATCH 09/17] string: Improve generic strcmp
Date: Mon, 19 Sep 2022 11:04:09 -0300	[thread overview]
Message-ID: <0ef36fa3-c9f6-963c-0dc7-49227c22f322@linaro.org> (raw)
In-Reply-To: <CAFUsyfKQSvEfsVH94RjTa6Q1L1j_dOa7+ABr52O+v6cTBVoRfw@mail.gmail.com>



On 03/09/22 00:31, Noah Goldstein wrote:
> On Fri, Sep 2, 2022 at 1:41 PM Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
>>
>> New generic implementation tries to use word operations along with
>> the new string-fz{b,i} functions even for inputs with different
>> alignments (with still uses aligned access plus merge operation
>> to get a correct word by word comparison).
>>
>> Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64-linux-gnu,
>> and powerpc-linux-gnu by removing the arch-specific assembly
>> implementation and disabling multi-arch (it covers both LE and BE
>> for 64 and 32 bits).
>>
>> Co-authored-by: Richard Henderson  <rth@twiddle.net>
>> ---
>>  string/strcmp.c | 117 +++++++++++++++++++++++++++++++++++++++++-------
>>  1 file changed, 101 insertions(+), 16 deletions(-)
>>
>> diff --git a/string/strcmp.c b/string/strcmp.c
>> index d4962be4ec..c8acc5c0b5 100644
>> --- a/string/strcmp.c
>> +++ b/string/strcmp.c
>> @@ -15,33 +15,118 @@
>>     License along with the GNU C Library; if not, see
>>     <https://www.gnu.org/licenses/>.  */
>>
>> +#include <stdint.h>
>> +#include <string-extbyte.h>
>> +#include <string-fzb.h>
>> +#include <string-fzi.h>
>>  #include <string.h>
>> +#include <memcopy.h>
>>
>> -#undef strcmp
>> -
>> -#ifndef STRCMP
>> -# define STRCMP strcmp
>> +#ifdef STRCMP
>> +# define strcmp STRCMP
>>  #endif
>>
>> +static inline int
>> +final_cmp (const op_t w1, const op_t w2)
>> +{
>> +  unsigned char c1, c2;
>> +  for (size_t i = 0; i < sizeof (op_t); i++)
>> +    {
>> +      c1 = extractbyte (w1, i);
>> +      c2 = extractbyte (w2, i);
> 
> Is using extractbyte here better than just reloading indicices from memory?
> 
> As well, maybe (for 64 bit atleast)
> maybe worth cutting in half with a 32-bit xor on the lower half then
> maybe skipping forward
> 4-bytes.

Not sure in fact, I tried to replace with 'i = index_first_zero_ne(w1, w2);'
as Richard has suggested but the issue is we might have non initialized 
bytes that prevents us to use it.  I will check if I can simplify this
a bit.

  reply	other threads:[~2022-09-19 14:04 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 20:39 [PATCH 00/17] Improve generic string routines Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 01/17] Parameterize op_t from memcopy.h Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 02/17] Parameterize OP_T_THRES " Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 03/17] Add string-maskoff.h generic header Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 04/17] Add string vectorized find and detection functions Adhemerval Zanella
2022-09-03  3:20   ` Noah Goldstein
2022-09-19 14:00     ` Adhemerval Zanella Netto
2022-09-02 20:39 ` [PATCH 05/17] string: Improve generic strlen Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 06/17] string: Improve generic strnlen Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 07/17] string: Improve generic strchr Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 08/17] string: Improve generic strchrnul Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 09/17] string: Improve generic strcmp Adhemerval Zanella
2022-09-03  3:31   ` Noah Goldstein
2022-09-19 14:04     ` Adhemerval Zanella Netto [this message]
2022-09-03  8:54   ` Richard Henderson
2022-09-02 20:39 ` [PATCH 10/17] string: Improve generic memchr Adhemerval Zanella
2022-09-03  3:47   ` Noah Goldstein
2022-09-19 19:17     ` Adhemerval Zanella Netto
2022-09-19 21:59       ` Noah Goldstein
2022-09-22 17:51         ` Adhemerval Zanella Netto
2022-09-02 20:39 ` [PATCH 11/17] string: Improve generic memrchr Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 12/17] hppa: Add memcopy.h Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 13/17] hppa: Add string-fzb.h and string-fzi.h Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 14/17] alpha: " Adhemerval Zanella
2022-09-02 20:39 ` [PATCH 15/17] arm: Add string-fza.h Adhemerval Zanella
2022-09-05 15:40   ` Richard Earnshaw
2022-09-05 15:50     ` Richard Earnshaw
2022-09-02 20:39 ` [PATCH 16/17] powerpc: " Adhemerval Zanella
2022-09-06 14:48   ` Paul E Murphy
2022-09-19 19:55     ` Adhemerval Zanella Netto
2022-09-02 20:39 ` [PATCH 17/17] sh: Add string-fzb.h Adhemerval Zanella

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=0ef36fa3-c9f6-963c-0dc7-49227c22f322@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=caiyinyu@loongson.cn \
    --cc=goldstein.w.n@gmail.com \
    --cc=joseph@codesourcery.com \
    --cc=libc-alpha@sourceware.org \
    --cc=rth@twiddle.net \
    /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).