This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 00/25] Refactor IFUNC selection in C
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Cc: Patrick McGehearty <patrick dot mcgehearty at oracle dot com>
- Date: Fri, 24 Nov 2017 16:54:14 -0200
- Subject: Re: [PATCH 00/25] Refactor IFUNC selection in C
- Authentication-results: sourceware.org; auth=none
- References: <1509044813-9951-1-git-send-email-adhemerval.zanella@linaro.org>
I have tested this patchset natively on SPARC using GCC 4.9, 5, 6, 7, and
8 without any regression. Since it does not change any semantic regarding
ifunc selection I am planning to push the mempcy and memset refactor
next week so Patrick McGehearty can rebase its work on optimized M7
implementation.
On 26/10/2017 17:06, Adhemerval Zanella wrote:
> This patchset is the continuation of two previous patchset
> [1][2][3][4] to convert ifunc implementation in assembly to C
> using GLIBC macros (which may use direct asm or GCC attributes
> depending of compiler support).
>
> No functional change is expected in generated symbols or
> ifunc selection, although some code reorganization was
> done in the case of ifunc selection also build the default
> variant at the same module. In this case a new file is
> created with 'generic' suffix.
>
> I also created a personal branch for this patchset on
> azanella/ifunc-c [5]
>
> [1] https://sourceware.org/ml/libc-alpha/2017-10/msg00578.html
> [2] https://sourceware.org/ml/libc-alpha/2017-10/msg00576.html
> [3] https://sourceware.org/ml/libc-alpha/2017-10/msg00281.html
> [4] https://sourceware.org/ml/libc-alpha/2017-10/msg00282.html
> [5] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/ifunc-c
>
> Adhemerval Zanella (25):
> arm: Implement memcpy ifunc selection in C
> arm: Implement memchr ifunc selection in C
> sparc: Implement memcpy/mempcpy ifunc selection in C
> sparc: Implement memset/bzero ifunc selection in C
> sparc: Assume VIS3 support
> sparc: refactor sparc64 signbit{f} selector to C
> sparc: refactor sparc64 isnan{f} selector to C
> sparc: refactor sparc64 isinf{f} selector to C
> sparc: refactor sparc64 finite{f} selector to C
> sparc: refactor sparc64 nearbyint{f} selector to C
> sparc: refactor sparc64 lrint{f} selector to C
> sparc: refactor sparc64 rint{f} selector to C
> sparc: refactor sparc64 __mpn_mul_1 selector to C
> sparc: refactor sparc64 __mpn_sub_n selector to C
> sparc: refactor sparc64 __mpn_addmul_1 selector to C
> sparc: refactor sparc64 __mpn_submul_1 selector to C
> sparc: refactor sparc64 __mpn_add_n selector to C
> sparc: refactor sparc32 copysign selector to C
> sparc: refactor sparc32 fabs{f} selector to C
> sparc: refactor sparc32 llrint{f} selector to C
> sparc: refactor sparc32 rint{f} selector to C
> sparc: refactor sparc32 nearbyint{f} selector to C
> sparc: refactor cpu_relax to C
> sparc: Remove ununsed ifunc assembly macros
> x32: Remove unused getcpu implementation
>
> ChangeLog | 279 +++++++++++++++++++++
> config.h.in | 3 -
> sysdeps/arm/arm-ifunc.h | 33 +++
> sysdeps/arm/armv7/multiarch/Makefile | 3 +-
> sysdeps/arm/armv7/multiarch/ifunc-memchr.h | 28 +++
> sysdeps/arm/armv7/multiarch/ifunc-memcpy.h | 37 +++
> sysdeps/arm/armv7/multiarch/memchr.c | 35 +++
> sysdeps/arm/armv7/multiarch/memchr_impl.S | 219 ----------------
> sysdeps/arm/armv7/multiarch/memchr_neon.S | 221 +++++++++++++++-
> sysdeps/arm/armv7/multiarch/memchr_noneon.S | 5 +
> sysdeps/arm/armv7/multiarch/memcpy.S | 76 ------
> sysdeps/arm/armv7/multiarch/memcpy.c | 35 +++
> sysdeps/arm/armv7/multiarch/memcpy_arm.S | 10 +
> sysdeps/arm/armv7/multiarch/memcpy_neon.S | 8 +-
> sysdeps/arm/armv7/multiarch/memcpy_vfp.S | 4 +-
> sysdeps/arm/armv7/multiarch/rtld-memchr.S | 1 +
> sysdeps/arm/armv7/multiarch/rtld-memcpy.S | 1 +
> sysdeps/sparc/configure | 42 ----
> sysdeps/sparc/configure.ac | 29 ---
> sysdeps/sparc/sparc-ifunc.h | 163 ++----------
> sysdeps/sparc/sparc32/sparcv9/Makefile | 7 -
> sysdeps/sparc/sparc32/sparcv9/cpu_relax.S | 1 -
> sysdeps/sparc/sparc32/sparcv9/cpu_relax.c | 1 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/Makefile | 26 +-
> .../sparcv9/fpu/multiarch/s_copysign-generic.S | 8 +
> .../sparc32/sparcv9/fpu/multiarch/s_copysign.S | 21 --
> .../sparc32/sparcv9/fpu/multiarch/s_copysign.c | 38 +++
> .../sparcv9/fpu/multiarch/s_copysignf-generic.S | 4 +
> .../sparc32/sparcv9/fpu/multiarch/s_copysignf.S | 12 -
> .../sparc32/sparcv9/fpu/multiarch/s_copysignf.c | 11 +
> .../sparc32/sparcv9/fpu/multiarch/s_fabs-generic.S | 8 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S | 18 --
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.c | 35 +++
> .../sparcv9/fpu/multiarch/s_fabsf-generic.S | 4 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S | 12 -
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.c | 29 +++
> .../sparc32/sparcv9/fpu/multiarch/s_fdim-generic.c | 4 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c | 17 +-
> .../sparcv9/fpu/multiarch/s_fdimf-generic.c | 3 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.c | 12 +-
> .../sparc32/sparcv9/fpu/multiarch/s_fma-generic.c | 2 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fma.c | 12 +-
> .../sparc32/sparcv9/fpu/multiarch/s_fmaf-generic.c | 2 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_fmaf.c | 10 +-
> .../sparcv9/fpu/multiarch/s_llrint-generic.S | 8 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S | 24 --
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.c | 36 +++
> .../sparcv9/fpu/multiarch/s_llrintf-generic.S | 4 +
> .../sparc32/sparcv9/fpu/multiarch/s_llrintf.S | 17 --
> .../sparc32/sparcv9/fpu/multiarch/s_llrintf.c | 29 +++
> .../sparcv9/fpu/multiarch/s_nearbyint-generic.S | 9 +
> .../sparc32/sparcv9/fpu/multiarch/s_nearbyint.S | 19 --
> .../sparc32/sparcv9/fpu/multiarch/s_nearbyint.c | 35 +++
> .../sparcv9/fpu/multiarch/s_nearbyintf-generic.S | 4 +
> .../sparc32/sparcv9/fpu/multiarch/s_nearbyintf.S | 12 -
> .../sparc32/sparcv9/fpu/multiarch/s_nearbyintf.c | 29 +++
> .../sparc32/sparcv9/fpu/multiarch/s_rint-generic.S | 8 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S | 19 --
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_rint.c | 35 +++
> .../sparcv9/fpu/multiarch/s_rintf-generic.S | 4 +
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S | 12 -
> .../sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.c | 29 +++
> sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile | 3 +-
> .../sparc32/sparcv9/multiarch/memcpy-ultra1.S | 32 +++
> sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy.S | 4 -
> sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy.c | 1 +
> sysdeps/sparc/sparc32/sparcv9/multiarch/mempcpy.c | 1 +
> .../sparc32/sparcv9/multiarch/memset-ultra1.S | 30 +++
> sysdeps/sparc/sparc32/sparcv9/multiarch/memset.S | 4 -
> sysdeps/sparc/sparc32/sparcv9/multiarch/memset.c | 1 +
> .../sparc/sparc32/sparcv9/multiarch/rtld-mempcpy.S | 1 +
> sysdeps/sparc/sparc64/Makefile | 2 -
> sysdeps/sparc/sparc64/cpu_relax.S | 67 -----
> sysdeps/sparc/sparc64/cpu_relax.c | 38 +++
> sysdeps/sparc/sparc64/fpu/multiarch/Makefile | 32 ++-
> .../sparc/sparc64/fpu/multiarch/s_ceil-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_ceilf-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_finite-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c | 37 +++
> .../sparc64/fpu/multiarch/s_finitef-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c | 33 +++
> .../sparc/sparc64/fpu/multiarch/s_floor-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_floorf-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_fma-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_fma.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_fmaf-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_fmaf.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_isinf-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c | 37 +++
> .../sparc/sparc64/fpu/multiarch/s_isinff-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c | 33 +++
> .../sparc/sparc64/fpu/multiarch/s_isnan-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c | 37 +++
> .../sparc/sparc64/fpu/multiarch/s_isnanf-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S | 15 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c | 33 +++
> .../sparc/sparc64/fpu/multiarch/s_lrint-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S | 17 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c | 39 +++
> .../sparc/sparc64/fpu/multiarch/s_lrintf-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S | 17 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c | 39 +++
> .../sparc64/fpu/multiarch/s_nearbyint-generic.S | 4 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S | 12 -
> sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c | 29 +++
> .../sparc64/fpu/multiarch/s_nearbyintf-generic.S | 4 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S | 12 -
> sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c | 29 +++
> .../sparc/sparc64/fpu/multiarch/s_rint-generic.S | 4 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S | 12 -
> sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c | 29 +++
> .../sparc/sparc64/fpu/multiarch/s_rintf-generic.S | 4 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S | 12 -
> sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c | 29 +++
> .../sparc64/fpu/multiarch/s_signbit-generic.S | 6 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S | 20 --
> sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c | 37 +++
> .../sparc64/fpu/multiarch/s_signbitf-generic.S | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S | 10 -
> sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c | 28 +++
> .../sparc/sparc64/fpu/multiarch/s_trunc-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c | 19 +-
> .../sparc/sparc64/fpu/multiarch/s_truncf-generic.c | 2 +
> sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c | 19 +-
> sysdeps/sparc/sparc64/multiarch/Makefile | 7 +-
> sysdeps/sparc/sparc64/multiarch/add_n-generic.S | 2 +
> sysdeps/sparc/sparc64/multiarch/add_n.S | 56 -----
> sysdeps/sparc/sparc64/multiarch/add_n.c | 28 +++
> sysdeps/sparc/sparc64/multiarch/addmul_1-generic.S | 2 +
> sysdeps/sparc/sparc64/multiarch/addmul_1.S | 56 -----
> sysdeps/sparc/sparc64/multiarch/addmul_1.c | 28 +++
> sysdeps/sparc/sparc64/multiarch/ifunc-memcpy.h | 40 +++
> sysdeps/sparc/sparc64/multiarch/ifunc-memset.h | 34 +++
> .../sparc64/multiarch/memcpy-ultra1.S} | 38 +--
> sysdeps/sparc/sparc64/multiarch/memcpy.S | 167 ------------
> sysdeps/sparc/sparc64/multiarch/memcpy.c | 33 +++
> sysdeps/sparc/sparc64/multiarch/mempcpy.c | 39 +++
> .../sparc64/multiarch/memset-ultra1.S} | 23 +-
> sysdeps/sparc/sparc64/multiarch/memset.S | 124 ---------
> sysdeps/sparc/sparc64/multiarch/memset.c | 42 ++++
> sysdeps/sparc/sparc64/multiarch/mul_1-generic.S | 2 +
> sysdeps/sparc/sparc64/multiarch/mul_1.S | 56 -----
> sysdeps/sparc/sparc64/multiarch/mul_1.c | 28 +++
> sysdeps/sparc/sparc64/multiarch/rtld-mempcpy.S | 1 +
> sysdeps/sparc/sparc64/multiarch/sub_n-generic.S | 2 +
> sysdeps/sparc/sparc64/multiarch/sub_n.S | 56 -----
> sysdeps/sparc/sparc64/multiarch/sub_n.c | 28 +++
> sysdeps/sparc/sparc64/multiarch/submul_1-generic.S | 2 +
> sysdeps/sparc/sparc64/multiarch/submul_1.S | 56 -----
> sysdeps/sparc/sparc64/multiarch/submul_1.c | 28 +++
> 159 files changed, 2222 insertions(+), 1745 deletions(-)
> create mode 100644 sysdeps/arm/arm-ifunc.h
> create mode 100644 sysdeps/arm/armv7/multiarch/ifunc-memchr.h
> create mode 100644 sysdeps/arm/armv7/multiarch/ifunc-memcpy.h
> create mode 100644 sysdeps/arm/armv7/multiarch/memchr.c
> delete mode 100644 sysdeps/arm/armv7/multiarch/memchr_impl.S
> create mode 100644 sysdeps/arm/armv7/multiarch/memchr_noneon.S
> delete mode 100644 sysdeps/arm/armv7/multiarch/memcpy.S
> create mode 100644 sysdeps/arm/armv7/multiarch/memcpy.c
> create mode 100644 sysdeps/arm/armv7/multiarch/memcpy_arm.S
> create mode 100644 sysdeps/arm/armv7/multiarch/rtld-memchr.S
> create mode 100644 sysdeps/arm/armv7/multiarch/rtld-memcpy.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/cpu_relax.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/cpu_relax.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-generic.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-generic.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fma-generic.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaf-generic.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy-ultra1.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memcpy.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/mempcpy.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memset-ultra1.S
> delete mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memset.S
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/memset.c
> create mode 100644 sysdeps/sparc/sparc32/sparcv9/multiarch/rtld-mempcpy.S
> delete mode 100644 sysdeps/sparc/sparc64/cpu_relax.S
> create mode 100644 sysdeps/sparc/sparc64/cpu_relax.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floor-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_fma-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_fmaf-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-generic.c
> create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-generic.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/add_n-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/add_n.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/add_n.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/addmul_1-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/addmul_1.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/addmul_1.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/ifunc-memcpy.h
> create mode 100644 sysdeps/sparc/sparc64/multiarch/ifunc-memset.h
> rename sysdeps/{arm/armv7/multiarch/memchr.S => sparc/sparc64/multiarch/memcpy-ultra1.S} (55%)
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/memcpy.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/memcpy.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/mempcpy.c
> rename sysdeps/{unix/sysv/linux/x86_64/x32/getcpu.c => sparc/sparc64/multiarch/memset-ultra1.S} (67%)
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/memset.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/memset.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/mul_1-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/mul_1.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/mul_1.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/rtld-mempcpy.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/sub_n-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/sub_n.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/sub_n.c
> create mode 100644 sysdeps/sparc/sparc64/multiarch/submul_1-generic.S
> delete mode 100644 sysdeps/sparc/sparc64/multiarch/submul_1.S
> create mode 100644 sysdeps/sparc/sparc64/multiarch/submul_1.c
>