From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: [PATCH v2 00/11] Remove bcopy and bzero optimizations
Date: Wed, 23 Feb 2022 11:09:10 -0300 [thread overview]
Message-ID: <20220223140921.2768062-1-adhemerval.zanella@linaro.org> (raw)
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
--
2.32.0
next reply other threads:[~2022-02-23 14:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-23 14:09 Adhemerval Zanella [this message]
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 ` [PATCH v2 00/11] Remove bcopy and " 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=20220223140921.2768062-1-adhemerval.zanella@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).