mbox series

[00/25] Refactor IFUNC selection in C

Message ID 1509044813-9951-1-git-send-email-adhemerval.zanella@linaro.org
Headers show
Series Refactor IFUNC selection in C | expand

Message

Adhemerval Zanella Netto Oct. 26, 2017, 7:06 p.m. UTC
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

-- 
2.7.4

Comments

Adhemerval Zanella Netto Nov. 24, 2017, 6:54 p.m. UTC | #1
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

>