diff options
author | Noah Goldstein <goldstein.w.n@gmail.com> | 2022-07-05 17:06:41 -0700 |
---|---|---|
committer | Noah Goldstein <goldstein.w.n@gmail.com> | 2022-07-12 11:44:12 -0700 |
commit | 9c38deec96ebe1b052a0c1bef137b90967755f18 (patch) | |
tree | ae940cf21e7ecbef92e0028f10b7c0dc5a6400c6 /sysdeps/x86_64/multiarch/ifunc-strcpy.h | |
parent | c5bec9d491c5d066dd238ccafcdec78cd4592e8e (diff) | |
download | glibc-9c38deec96ebe1b052a0c1bef137b90967755f18.tar.gz glibc-9c38deec96ebe1b052a0c1bef137b90967755f18.tar.xz glibc-9c38deec96ebe1b052a0c1bef137b90967755f18.zip |
x86: Remove generic strncat, strncpy, and stpncpy implementations
These functions all have optimized versions: __strncat_sse2_unaligned, __strncpy_sse2_unaligned, and stpncpy_sse2_unaligned which are faster than their respective generic implementations. Since the sse2 versions can run on baseline x86_64, we should use these as the baseline implementation and can remove the generic implementations. Geometric mean of N=20 runs of the entire benchmark suite on: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz (Tigerlake) __strncat_sse2_unaligned / __strncat_generic: .944 __strncpy_sse2_unaligned / __strncpy_generic: .726 __stpncpy_sse2_unaligned / __stpncpy_generic: .650 Tested build with and without multiarch and full check with multiarch.
Diffstat (limited to 'sysdeps/x86_64/multiarch/ifunc-strcpy.h')
-rw-r--r-- | sysdeps/x86_64/multiarch/ifunc-strcpy.h | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/sysdeps/x86_64/multiarch/ifunc-strcpy.h b/sysdeps/x86_64/multiarch/ifunc-strcpy.h index 80529458d1..a15afa44e9 100644 --- a/sysdeps/x86_64/multiarch/ifunc-strcpy.h +++ b/sysdeps/x86_64/multiarch/ifunc-strcpy.h @@ -20,11 +20,7 @@ #include <init-arch.h> -#ifndef GENERIC -# define GENERIC sse2 -#endif - -extern __typeof (REDIRECT_NAME) OPTIMIZE (GENERIC) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden; extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned) attribute_hidden; extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden; @@ -53,5 +49,5 @@ IFUNC_SELECTOR (void) if (CPU_FEATURES_ARCH_P (cpu_features, Fast_Unaligned_Load)) return OPTIMIZE (sse2_unaligned); - return OPTIMIZE (GENERIC); + return OPTIMIZE (sse2); } |