public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: Re: [PATCH v2 00/11] Remove bcopy and bzero optimizations
Date: Wed, 23 Feb 2022 11:13:04 -0300	[thread overview]
Message-ID: <6b70d261-0e0c-c1ba-bf6d-f44baf3e0229@linaro.org> (raw)
In-Reply-To: <20220223140921.2768062-1-adhemerval.zanella@linaro.org>

I will intend to commit this patch shortly.  I remove the x86_64 part because
we are still discussing the __memzeroset addition, but I think the idea is
also to eventually remove the x86_64 optimization as well.

On 23/02/2022 11:09, Adhemerval Zanella wrote:
> Both symbols are marked as legacy in POSIX.1-2001 and removed on
> POSIX.1-2008, although the prototypes are defined for _GNU_SOURCE
> or _DEFAULT_SOURCE.
> 
> Most architectures just route bcopy/bzero to internal memmove/memset
> implementation, however some do implement iFUNC variants when memset
> or memmove are also provided through iFUNC.
> 
> However, gcc already replaces bcopy with a memmove and bzero with memset
> on default configuration (to actually get a bstring libc call the code
> requires to omit string.h inclusion and built with --fno-builtin), so
> it is highly unlikely programs are actually calling libc bcopy or
> bzero symbols.
> 
> On a recent Linux distro (Ubuntu 21.04), I see only 1 'bcmp' call
> (which is already aliased to memcmp):
> 
>   $ cat count_bstring.sh 
>   #!/bin/bash
> 
>   files=`IFS=':';for i in $PATH; do test -d "$i" && find "$i" -maxdepth
> 1 -executable -type f; done`
>   total=0
>   for file in $files; do
>     symbols=`objdump -R $file 2>&1`
>     if [ $? -eq 0 ]; then
>       ncalls=`echo $symbols | grep -w $1 | wc -l`
>       ((total=total+ncalls))
>       if [ $ncalls -gt 0 ]; then
>         echo "$file: $ncalls"
>       fi
>     fi
>   done
>   echo "TOTAL=$total"
>   $ ./count_bstring.sh bcmp
>   /usr/bin/rg: 1
>   TOTAL=1
>   $ ./count_bstring.sh bcopy
>   TOTAL=0
>   $ ./count_bstring.sh bzero
>   TOTAL=0
> 
> So there is point in keeping such optimization.
> 
> v2: Fix ia64 extra __bzero symbol, cleanup more i686 bzero definitions,
>     remove x86_64 bzero part.
> 
> Adhemerval Zanella (11):
>   ia64: Remove bcopy
>   powerpc: Remove bcopy optimizations
>   i386: Remove bcopy optimizations
>   x86_64: Remove bcopy optimizations
>   alpha: Remove bzero optimization
>   ia64: Remove bzero optimization
>   sparc: Remove bzero optimization
>   powerpc: Remove powerpc32 bzero optimizations
>   powerpc: Remove powerpc64 bzero optimizations
>   s390: Remove bzero optimizations
>   i686: Remove bzero optimizations
> 
>  string/bzero.c                                |   4 +-
>  sysdeps/alpha/bzero.S                         | 109 ------
>  sysdeps/i386/bcopy.S                          |   4 -
>  sysdeps/i386/bzero.S                          |   5 -
>  sysdeps/i386/i586/bzero.S                     |   4 -
>  sysdeps/i386/i586/memset.S                    |  16 +-
>  sysdeps/i386/i686/bcopy.S                     |   3 -
>  sysdeps/i386/i686/bzero.S                     |   4 -
>  sysdeps/i386/i686/memmove.S                   |  22 +-
>  sysdeps/i386/i686/memset.S                    |  23 +-
>  sysdeps/i386/i686/multiarch/Makefile          |  10 +-
>  sysdeps/i386/i686/multiarch/bcopy-ia32.S      |  20 --
>  .../i686/multiarch/bcopy-sse2-unaligned.S     |   4 -
>  sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S |   4 -
>  sysdeps/i386/i686/multiarch/bcopy-ssse3.S     |   4 -
>  sysdeps/i386/i686/multiarch/bcopy.c           |  30 --
>  sysdeps/i386/i686/multiarch/bzero-ia32.S      |  37 ---
>  sysdeps/i386/i686/multiarch/bzero-sse2-rep.S  |   3 -
>  sysdeps/i386/i686/multiarch/bzero-sse2.S      |   3 -
>  sysdeps/i386/i686/multiarch/bzero.c           |  32 --
>  sysdeps/i386/i686/multiarch/ifunc-impl-list.c |  18 -
>  .../i686/multiarch/memcpy-sse2-unaligned.S    |  16 +-
>  .../i386/i686/multiarch/memcpy-ssse3-rep.S    |  64 ++--
>  sysdeps/i386/i686/multiarch/memcpy-ssse3.S    | 202 ++++--------
>  sysdeps/i386/i686/multiarch/memset-sse2-rep.S |  24 +-
>  sysdeps/i386/i686/multiarch/memset-sse2.S     |  24 +-
>  sysdeps/i386/memcpy.S                         |  16 +-
>  sysdeps/i386/memset.S                         |  14 +-
>  sysdeps/ia64/bcopy.S                          |  10 -
>  sysdeps/ia64/bzero.S                          | 312 ------------------
>  sysdeps/ia64/bzero.c                          |   3 +
>  sysdeps/powerpc/powerpc32/bzero.S             |  27 --
>  .../powerpc32/power4/multiarch/Makefile       |   4 +-
>  .../powerpc32/power4/multiarch/bzero-power6.S |  25 --
>  .../powerpc32/power4/multiarch/bzero-power7.S |  25 --
>  .../powerpc32/power4/multiarch/bzero-ppc32.S  |  34 --
>  .../powerpc32/power4/multiarch/bzero.c        |  37 ---
>  .../power4/multiarch/ifunc-impl-list.c        |   8 -
>  sysdeps/powerpc/powerpc64/bzero.S             |  20 --
>  .../powerpc/powerpc64/le/power10/memmove.S    |  13 -
>  sysdeps/powerpc/powerpc64/le/power10/memset.S |  12 -
>  sysdeps/powerpc/powerpc64/memset.S            |  13 -
>  sysdeps/powerpc/powerpc64/multiarch/Makefile  |   2 +-
>  .../powerpc/powerpc64/multiarch/bcopy-ppc64.c |  27 --
>  sysdeps/powerpc/powerpc64/multiarch/bcopy.c   |  38 ---
>  sysdeps/powerpc/powerpc64/multiarch/bzero.c   |  54 ---
>  .../powerpc64/multiarch/ifunc-impl-list.c     |  34 --
>  .../powerpc64/multiarch/memmove-power10.S     |   3 -
>  .../powerpc64/multiarch/memmove-power7.S      |   3 -
>  .../powerpc64/multiarch/memset-power10.S      |   3 -
>  .../powerpc64/multiarch/memset-power4.S       |   3 -
>  .../powerpc64/multiarch/memset-power6.S       |   3 -
>  .../powerpc64/multiarch/memset-power7.S       |   2 -
>  .../powerpc64/multiarch/memset-power8.S       |   3 -
>  .../powerpc64/multiarch/memset-ppc64.S        |  16 +-
>  sysdeps/powerpc/powerpc64/power4/memset.S     |  12 -
>  sysdeps/powerpc/powerpc64/power6/memset.S     |  12 -
>  sysdeps/powerpc/powerpc64/power7/bcopy.c      |   1 -
>  sysdeps/powerpc/powerpc64/power7/memmove.S    |  14 -
>  sysdeps/powerpc/powerpc64/power7/memset.S     |  12 -
>  sysdeps/powerpc/powerpc64/power8/memset.S     |  12 -
>  sysdeps/s390/Makefile                         |   2 +-
>  sysdeps/s390/bzero.c                          |  47 ---
>  sysdeps/s390/ifunc-memset.h                   |   9 -
>  sysdeps/s390/memset-z900.S                    |  32 +-
>  sysdeps/s390/multiarch/ifunc-impl-list.c      |  15 -
>  sysdeps/sparc/sparc32/bzero.c                 |   1 -
>  sysdeps/sparc/sparc32/memset.S                |  37 +--
>  sysdeps/sparc/sparc32/sparcv9/bzero.c         |   1 -
>  .../sparc/sparc32/sparcv9/multiarch/bzero.c   |   1 -
>  .../sparc32/sparcv9/multiarch/memset-ultra1.S |   1 -
>  sysdeps/sparc/sparc64/bzero.c                 |   1 -
>  sysdeps/sparc/sparc64/memset.S                |  30 +-
>  sysdeps/sparc/sparc64/multiarch/bzero.c       |  33 --
>  .../sparc/sparc64/multiarch/ifunc-impl-list.c |   9 -
>  .../sparc/sparc64/multiarch/ifunc-memset.h    |   2 +-
>  .../sparc/sparc64/multiarch/memset-niagara1.S |   5 +-
>  .../sparc/sparc64/multiarch/memset-niagara4.S |   6 +-
>  .../sparc/sparc64/multiarch/memset-niagara7.S |   7 -
>  .../sparc/sparc64/multiarch/memset-ultra1.S   |   1 -
>  sysdeps/x86_64/multiarch/bcopy.S              |   7 -
>  81 files changed, 162 insertions(+), 1601 deletions(-)
>  delete mode 100644 sysdeps/alpha/bzero.S
>  delete mode 100644 sysdeps/i386/bcopy.S
>  delete mode 100644 sysdeps/i386/bzero.S
>  delete mode 100644 sysdeps/i386/i586/bzero.S
>  delete mode 100644 sysdeps/i386/i686/bcopy.S
>  delete mode 100644 sysdeps/i386/i686/bzero.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bcopy-ia32.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bcopy-ssse3-rep.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bcopy-ssse3.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bcopy.c
>  delete mode 100644 sysdeps/i386/i686/multiarch/bzero-ia32.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bzero-sse2-rep.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bzero-sse2.S
>  delete mode 100644 sysdeps/i386/i686/multiarch/bzero.c
>  delete mode 100644 sysdeps/ia64/bcopy.S
>  delete mode 100644 sysdeps/ia64/bzero.S
>  create mode 100644 sysdeps/ia64/bzero.c
>  delete mode 100644 sysdeps/powerpc/powerpc32/bzero.S
>  delete mode 100644 sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power6.S
>  delete mode 100644 sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power7.S
>  delete mode 100644 sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
>  delete mode 100644 sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
>  delete mode 100644 sysdeps/powerpc/powerpc64/bzero.S
>  delete mode 100644 sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c
>  delete mode 100644 sysdeps/powerpc/powerpc64/multiarch/bcopy.c
>  delete mode 100644 sysdeps/powerpc/powerpc64/multiarch/bzero.c
>  delete mode 100644 sysdeps/powerpc/powerpc64/power7/bcopy.c
>  delete mode 100644 sysdeps/s390/bzero.c
>  delete mode 100644 sysdeps/sparc/sparc32/bzero.c
>  delete mode 100644 sysdeps/sparc/sparc32/sparcv9/bzero.c
>  delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/bzero.c
>  delete mode 100644 sysdeps/sparc/sparc64/bzero.c
>  delete mode 100644 sysdeps/sparc/sparc64/multiarch/bzero.c
>  delete mode 100644 sysdeps/x86_64/multiarch/bcopy.S
> 

      parent reply	other threads:[~2022-02-23 14:13 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-23 14:09 Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 01/11] ia64: Remove bcopy Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 02/11] powerpc: Remove bcopy optimizations Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 03/11] i386: " Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 04/11] x86_64: " Adhemerval Zanella
2022-05-12 19:28   ` Sunil Pandey
2022-02-23 14:09 ` [PATCH v2 05/11] alpha: Remove bzero optimization Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 06/11] ia64: " Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 07/11] sparc: " Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 08/11] powerpc: Remove powerpc32 bzero optimizations Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 09/11] powerpc: Remove powerpc64 " Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 10/11] s390: Remove " Adhemerval Zanella
2022-02-23 14:09 ` [PATCH v2 11/11] i686: " Adhemerval Zanella
2022-02-23 14:13 ` Adhemerval Zanella [this message]

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=6b70d261-0e0c-c1ba-bf6d-f44baf3e0229@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --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).