about summary refs log tree commit diff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/Implies5
-rw-r--r--sysdeps/powerpc/Makefile42
-rw-r--r--sysdeps/powerpc/Versions31
-rw-r--r--sysdeps/powerpc/abort-instr.h2
-rw-r--r--sysdeps/powerpc/atomic-machine.h339
-rw-r--r--sysdeps/powerpc/bits/endian.h36
-rw-r--r--sysdeps/powerpc/bits/fenv.h180
-rw-r--r--sysdeps/powerpc/bits/fenvinline.h79
-rw-r--r--sysdeps/powerpc/bits/fp-fast.h39
-rw-r--r--sysdeps/powerpc/bits/hwcap.h71
-rw-r--r--sysdeps/powerpc/bits/link.h156
-rw-r--r--sysdeps/powerpc/bits/mathinline.h132
-rw-r--r--sysdeps/powerpc/bits/setjmp.h50
-rw-r--r--sysdeps/powerpc/dl-procinfo.c77
-rw-r--r--sysdeps/powerpc/dl-procinfo.h185
-rw-r--r--sysdeps/powerpc/dl-tls.c24
-rw-r--r--sysdeps/powerpc/dl-tls.h52
-rw-r--r--sysdeps/powerpc/ffs.c47
-rw-r--r--sysdeps/powerpc/fpu/Makefile7
-rw-r--r--sysdeps/powerpc/fpu/e_hypot.c134
-rw-r--r--sysdeps/powerpc/fpu/e_hypotf.c76
-rw-r--r--sysdeps/powerpc/fpu/e_rem_pio2f.c188
-rw-r--r--sysdeps/powerpc/fpu/e_sqrt.c175
-rw-r--r--sysdeps/powerpc/fpu/e_sqrtf.c150
-rw-r--r--sysdeps/powerpc/fpu/fclrexcpt.c49
-rw-r--r--sysdeps/powerpc/fpu/fe_mask.c32
-rw-r--r--sysdeps/powerpc/fpu/fe_nomask.c32
-rw-r--r--sysdeps/powerpc/fpu/fedisblxcpt.c57
-rw-r--r--sysdeps/powerpc/fpu/feenablxcpt.c58
-rw-r--r--sysdeps/powerpc/fpu/fegetenv.c38
-rw-r--r--sysdeps/powerpc/fpu/fegetexcept.c43
-rw-r--r--sysdeps/powerpc/fpu/fegetmode.c26
-rw-r--r--sysdeps/powerpc/fpu/fegetround.c30
-rw-r--r--sysdeps/powerpc/fpu/feholdexcpt.c51
-rw-r--r--sysdeps/powerpc/fpu/fenv_const.c36
-rw-r--r--sysdeps/powerpc/fpu/fenv_libc.h176
-rw-r--r--sysdeps/powerpc/fpu/fenv_private.h229
-rw-r--r--sysdeps/powerpc/fpu/fesetenv.c63
-rw-r--r--sysdeps/powerpc/fpu/fesetexcept.c42
-rw-r--r--sysdeps/powerpc/fpu/fesetmode.c49
-rw-r--r--sysdeps/powerpc/fpu/fesetround.c33
-rw-r--r--sysdeps/powerpc/fpu/feupdateenv.c68
-rw-r--r--sysdeps/powerpc/fpu/fgetexcptflg.c42
-rw-r--r--sysdeps/powerpc/fpu/fix-fp-int-compare-invalid.h28
-rw-r--r--sysdeps/powerpc/fpu/fraiseexcpt.c68
-rw-r--r--sysdeps/powerpc/fpu/fsetexcptflg.c63
-rw-r--r--sysdeps/powerpc/fpu/ftestexcept.c33
-rw-r--r--sysdeps/powerpc/fpu/k_cosf.c65
-rw-r--r--sysdeps/powerpc/fpu/k_rem_pio2f.c273
-rw-r--r--sysdeps/powerpc/fpu/k_sinf.c57
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps2342
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps-name1
-rw-r--r--sysdeps/powerpc/fpu/math_ldbl.h55
-rw-r--r--sysdeps/powerpc/fpu/math_private.h142
-rw-r--r--sysdeps/powerpc/fpu/s_cosf.c69
-rw-r--r--sysdeps/powerpc/fpu/s_fabs.S36
-rw-r--r--sysdeps/powerpc/fpu/s_fabsf.S1
-rw-r--r--sysdeps/powerpc/fpu/s_float_bitwise.h115
-rw-r--r--sysdeps/powerpc/fpu/s_fma.S32
-rw-r--r--sysdeps/powerpc/fpu/s_fmaf.S27
-rw-r--r--sysdeps/powerpc/fpu/s_isnan.c62
-rw-r--r--sysdeps/powerpc/fpu/s_isnanf.S1
-rw-r--r--sysdeps/powerpc/fpu/s_lrintf.S1
-rw-r--r--sysdeps/powerpc/fpu/s_rint.c46
-rw-r--r--sysdeps/powerpc/fpu/s_rintf.c42
-rw-r--r--sysdeps/powerpc/fpu/s_sinf.c69
-rw-r--r--sysdeps/powerpc/fpu/t_sqrt.c144
-rw-r--r--sysdeps/powerpc/fpu/tst-setcontext-fpscr.c370
-rw-r--r--sysdeps/powerpc/fpu_control.h120
-rw-r--r--sysdeps/powerpc/gccframe.h21
-rw-r--r--sysdeps/powerpc/hwcapinfo.c84
-rw-r--r--sysdeps/powerpc/hwcapinfo.h29
-rw-r--r--sysdeps/powerpc/ifunc-sel.h51
-rw-r--r--sysdeps/powerpc/jmpbuf-offsets.h36
-rw-r--r--sysdeps/powerpc/jmpbuf-unwind.h47
-rw-r--r--sysdeps/powerpc/ldsodefs.h68
-rw-r--r--sysdeps/powerpc/libc-tls.c32
-rw-r--r--sysdeps/powerpc/locale-defines.sym9
-rw-r--r--sysdeps/powerpc/longjmp.c60
-rw-r--r--sysdeps/powerpc/machine-gmon.h30
-rw-r--r--sysdeps/powerpc/math-tests.h33
-rw-r--r--sysdeps/powerpc/memusage.h20
-rw-r--r--sysdeps/powerpc/mp_clz_tab.c1
-rw-r--r--sysdeps/powerpc/nofpu/Makefile32
-rw-r--r--sysdeps/powerpc/nofpu/Subdirs1
-rw-r--r--sysdeps/powerpc/nofpu/Versions29
-rw-r--r--sysdeps/powerpc/nofpu/atomic-feclearexcept.c28
-rw-r--r--sysdeps/powerpc/nofpu/atomic-feholdexcept.c38
-rw-r--r--sysdeps/powerpc/nofpu/atomic-feupdateenv.c37
-rw-r--r--sysdeps/powerpc/nofpu/fclrexcpt.c38
-rw-r--r--sysdeps/powerpc/nofpu/fedisblxcpt.c34
-rw-r--r--sysdeps/powerpc/nofpu/feenablxcpt.c33
-rw-r--r--sysdeps/powerpc/nofpu/fegetenv.c45
-rw-r--r--sysdeps/powerpc/nofpu/fegetexcept.c27
-rw-r--r--sysdeps/powerpc/nofpu/fegetmode.c33
-rw-r--r--sysdeps/powerpc/nofpu/fegetround.c30
-rw-r--r--sysdeps/powerpc/nofpu/feholdexcpt.c45
-rw-r--r--sysdeps/powerpc/nofpu/fenv_const.c38
-rw-r--r--sysdeps/powerpc/nofpu/fesetenv.c47
-rw-r--r--sysdeps/powerpc/nofpu/fesetexcept.c28
-rw-r--r--sysdeps/powerpc/nofpu/fesetmode.c34
-rw-r--r--sysdeps/powerpc/nofpu/fesetround.c36
-rw-r--r--sysdeps/powerpc/nofpu/feupdateenv.c53
-rw-r--r--sysdeps/powerpc/nofpu/fgetexcptflg.c37
-rw-r--r--sysdeps/powerpc/nofpu/flt-rounds.c40
-rw-r--r--sysdeps/powerpc/nofpu/fraiseexcpt.c43
-rw-r--r--sysdeps/powerpc/nofpu/fsetexcptflg.c40
-rw-r--r--sysdeps/powerpc/nofpu/ftestexcept.c28
-rw-r--r--sysdeps/powerpc/nofpu/get-rounding-mode.h35
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps2364
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps-name1
-rw-r--r--sysdeps/powerpc/nofpu/sim-full.c57
-rw-r--r--sysdeps/powerpc/nofpu/soft-supp.h63
-rw-r--r--sysdeps/powerpc/novmx-longjmp.c56
-rw-r--r--sysdeps/powerpc/novmx-sigjmp.c44
-rw-r--r--sysdeps/powerpc/novmxsetjmp.h132
-rw-r--r--sysdeps/powerpc/nptl/Makefile20
-rw-r--r--sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h79
-rw-r--r--sysdeps/powerpc/nptl/elide.h125
-rw-r--r--sysdeps/powerpc/nptl/pthread_spin_lock.c43
-rw-r--r--sysdeps/powerpc/nptl/pthread_spin_trylock.c41
-rw-r--r--sysdeps/powerpc/nptl/pthread_spin_unlock.c27
-rw-r--r--sysdeps/powerpc/nptl/pthreaddef.h33
-rw-r--r--sysdeps/powerpc/nptl/tcb-offsets.sym32
-rw-r--r--sysdeps/powerpc/nptl/tls.h263
-rw-r--r--sysdeps/powerpc/power4/fpu/Makefile7
-rw-r--r--sysdeps/powerpc/power4/fpu/mpa-arch.h56
-rw-r--r--sysdeps/powerpc/power4/fpu/mpa.c214
-rw-r--r--sysdeps/powerpc/power4/wordcopy.c212
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modf.c58
-rw-r--r--sysdeps/powerpc/power5+/fpu/s_modff.c46
-rw-r--r--sysdeps/powerpc/power6/wcschr.c96
-rw-r--r--sysdeps/powerpc/power6/wcscpy.c105
-rw-r--r--sysdeps/powerpc/power6/wcsrchr.c89
-rw-r--r--sysdeps/powerpc/power6/wordcopy.c221
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logb.c79
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logbf.c60
-rw-r--r--sysdeps/powerpc/power7/fpu/s_logbl.c83
-rw-r--r--sysdeps/powerpc/powerpc32/405/memcmp.S128
-rw-r--r--sysdeps/powerpc/powerpc32/405/memcpy.S130
-rw-r--r--sysdeps/powerpc/powerpc32/405/memset.S152
-rw-r--r--sysdeps/powerpc/powerpc32/405/strcmp.S134
-rw-r--r--sysdeps/powerpc/powerpc32/405/strcpy.S107
-rw-r--r--sysdeps/powerpc/powerpc32/405/strlen.S75
-rw-r--r--sysdeps/powerpc/powerpc32/405/strncmp.S128
-rw-r--r--sysdeps/powerpc/powerpc32/440/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/464/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/476/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/476/memset.S152
-rw-r--r--sysdeps/powerpc/powerpc32/970/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/Makefile49
-rw-r--r--sysdeps/powerpc/powerpc32/Versions40
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S82
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp.S39
-rw-r--r--sysdeps/powerpc/powerpc32/a2/memcpy.S527
-rw-r--r--sysdeps/powerpc/powerpc32/add_n.S68
-rw-r--r--sysdeps/powerpc/powerpc32/addmul_1.S48
-rw-r--r--sysdeps/powerpc/powerpc32/atomic-machine.h126
-rw-r--r--sysdeps/powerpc/powerpc32/backtrace.c131
-rw-r--r--sysdeps/powerpc/powerpc32/bits/wordsize.h11
-rw-r--r--sysdeps/powerpc/powerpc32/bsd-_setjmp.S56
-rw-r--r--sysdeps/powerpc/powerpc32/bsd-setjmp.S39
-rw-r--r--sysdeps/powerpc/powerpc32/bzero.S27
-rw-r--r--sysdeps/powerpc/powerpc32/cell/memcpy.S242
-rw-r--r--sysdeps/powerpc/powerpc32/compat-ppc-mcount.S11
-rw-r--r--sysdeps/powerpc/powerpc32/configure29
-rw-r--r--sysdeps/powerpc/powerpc32/configure.ac16
-rw-r--r--sysdeps/powerpc/powerpc32/crti.S89
-rw-r--r--sysdeps/powerpc/powerpc32/crtn.S53
-rw-r--r--sysdeps/powerpc/powerpc32/dl-dtprocnum.h3
-rw-r--r--sysdeps/powerpc/powerpc32/dl-irel.h52
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.c608
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.h455
-rw-r--r--sysdeps/powerpc/powerpc32/dl-start.S103
-rw-r--r--sysdeps/powerpc/powerpc32/dl-trampoline.S189
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/Makefile9
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c50
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c55
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c46
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c53
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c39
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c54
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c54
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c49
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c36
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c31
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c59
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c45
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h99
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c50
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c43
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c37
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c25
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c48
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c42
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c42
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c39
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c25
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c41
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c55
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c31
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h4
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S27
-rw-r--r--sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c53
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/Makefile3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S178
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/__longjmp.S40
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/configure56
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/configure.ac34
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h28
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/fprrest.S94
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/fprsave.S111
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_ceil.S83
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_ceilf.S75
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysign.S59
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysignf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysignl.S66
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_fabs.S5
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_fabsl.S52
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_floor.S83
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_floorf.S75
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_fma.S5
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_isnan.S57
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llrint.c63
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llrintf.c46
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llround.c90
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_llroundf.c72
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lrint.S46
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lround.S129
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_lroundf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S87
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S78
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_rint.S76
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_rintf.S65
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_round.S104
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_roundf.S95
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_trunc.S90
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_truncf.S82
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/setjmp-common.S183
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/setjmp.S47
-rw-r--r--sysdeps/powerpc/powerpc32/gprrest0.S69
-rw-r--r--sysdeps/powerpc/powerpc32/gprrest1.S63
-rw-r--r--sysdeps/powerpc/powerpc32/gprsave0.S87
-rw-r--r--sysdeps/powerpc/powerpc32/gprsave1.S63
-rw-r--r--sysdeps/powerpc/powerpc32/libgcc-compat.S137
-rw-r--r--sysdeps/powerpc/powerpc32/lshift.S125
-rw-r--r--sysdeps/powerpc/powerpc32/mcount.c17
-rw-r--r--sysdeps/powerpc/powerpc32/memset.S307
-rw-r--r--sysdeps/powerpc/powerpc32/mul_1.S45
-rw-r--r--sysdeps/powerpc/powerpc32/power4/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power4/Makefile6
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile43
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-power5+.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-ppc32.S27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-power6.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-ppc32.S34
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c51
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c57
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c34
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c50
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c35
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power5.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power6.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-ppc32.S32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan.c56
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power5.S28
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power6.S28
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf.c39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-power6.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power5+.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power6.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c43
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c34
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-ppc32.c28
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c21
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-ppc32.c21
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-power6x.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power5+.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power6x.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c43
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c34
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-ppc32.c29
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c44
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c30
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.S27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-power5+.S33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-ppc32.S27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-power5.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-ppc32.S31
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat.c40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-power5.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-ppc32.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S46
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S106
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt_compat.S108
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf_compat.S100
-rw-r--r--sysdeps/powerpc/powerpc32/power4/hp-timing.h54
-rw-r--r--sysdeps/powerpc/powerpc32/power4/memcmp.S1375
-rw-r--r--sysdeps/powerpc/powerpc32/power4/memcopy.h116
-rw-r--r--sysdeps/powerpc/powerpc32/power4/memcpy.S481
-rw-r--r--sysdeps/powerpc/powerpc32/power4/memset.S226
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/Makefile30
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power6.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S35
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c37
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c224
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h53
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memchr-power7.S40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c34
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-power7.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S45
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-a2.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-cell.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power6.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power7.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c48
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c44
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-power7.S35
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c44
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-power7.S40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c25
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c37
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memset-power6.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memset-power7.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/memset.c39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-power7.S40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c32
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memcmp.S19
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memset.S18
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strchr.S18
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strnlen.c18
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchr-power7.S39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchr-ppc32.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-power7.S39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c28
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c37
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strlen-power7.S36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c33
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncase-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c42
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-power7.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c39
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S40
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c28
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c43
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c41
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c22
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c22
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c20
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c20
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c26
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c36
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c23
-rw-r--r--sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c27
-rw-r--r--sysdeps/powerpc/powerpc32/power4/strncmp.S196
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/Implies4
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S36
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S29
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S36
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S29
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S59
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S57
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S36
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S29
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S36
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S29
-rw-r--r--sysdeps/powerpc/powerpc32/power5+/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power5/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S61
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S45
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt_compat.S106
-rw-r--r--sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf_compat.S98
-rw-r--r--sysdeps/powerpc/powerpc32/power5/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power6/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S58
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S61
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S44
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S46
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S38
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S59
-rw-r--r--sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power6/memcpy.S907
-rw-r--r--sysdeps/powerpc/powerpc32/power6/memset.S539
-rw-r--r--sysdeps/powerpc/powerpc32/power6/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S41
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S51
-rw-r--r--sysdeps/powerpc/powerpc32/power6x/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power7/Makefile4
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S93
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S85
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S90
-rw-r--r--sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/memchr.S193
-rw-r--r--sysdeps/powerpc/powerpc32/power7/memcmp.S1375
-rw-r--r--sysdeps/powerpc/powerpc32/power7/memcpy.S538
-rw-r--r--sysdeps/powerpc/powerpc32/power7/mempcpy.S482
-rw-r--r--sysdeps/powerpc/powerpc32/power7/memrchr.S196
-rw-r--r--sysdeps/powerpc/powerpc32/power7/memset.S431
-rw-r--r--sysdeps/powerpc/powerpc32/power7/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power7/rawmemchr.S110
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strcasecmp.S129
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S5
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strchr.S225
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strchrnul.S127
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strlen.S102
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strncmp.S199
-rw-r--r--sysdeps/powerpc/powerpc32/power7/strnlen.S176
-rw-r--r--sysdeps/powerpc/powerpc32/power8/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power8/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power8/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power9/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/power9/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/power9/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc32/ppc-mcount.S104
-rw-r--r--sysdeps/powerpc/powerpc32/register-dump.h120
-rw-r--r--sysdeps/powerpc/powerpc32/rshift.S55
-rw-r--r--sysdeps/powerpc/powerpc32/rtld-memset.c4
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp-common.S78
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp.S46
-rw-r--r--sysdeps/powerpc/powerpc32/stackguard-macros.h14
-rw-r--r--sysdeps/powerpc/powerpc32/start.S95
-rw-r--r--sysdeps/powerpc/powerpc32/stpcpy.S119
-rw-r--r--sysdeps/powerpc/powerpc32/strchr.S146
-rw-r--r--sysdeps/powerpc/powerpc32/strcmp.S150
-rw-r--r--sysdeps/powerpc/powerpc32/strcpy.S117
-rw-r--r--sysdeps/powerpc/powerpc32/strlen.S190
-rw-r--r--sysdeps/powerpc/powerpc32/strncmp.S181
-rw-r--r--sysdeps/powerpc/powerpc32/sub_n.S68
-rw-r--r--sysdeps/powerpc/powerpc32/submul_1.S51
-rw-r--r--sysdeps/powerpc/powerpc32/symbol-hacks.h21
-rw-r--r--sysdeps/powerpc/powerpc32/sysdep.h174
-rw-r--r--sysdeps/powerpc/powerpc32/tls-macros.h49
-rw-r--r--sysdeps/powerpc/powerpc32/tst-audit.h25
-rw-r--r--sysdeps/powerpc/powerpc64/970/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/Makefile49
-rw-r--r--sysdeps/powerpc/powerpc64/__longjmp-common.S183
-rw-r--r--sysdeps/powerpc/powerpc64/__longjmp.S39
-rw-r--r--sysdeps/powerpc/powerpc64/a2/memcpy.S528
-rw-r--r--sysdeps/powerpc/powerpc64/addmul_1.S208
-rw-r--r--sysdeps/powerpc/powerpc64/atomic-machine.h242
-rw-r--r--sysdeps/powerpc/powerpc64/backtrace.c104
-rw-r--r--sysdeps/powerpc/powerpc64/bits/wordsize.h11
-rw-r--r--sysdeps/powerpc/powerpc64/bsd-_setjmp.S1
-rw-r--r--sysdeps/powerpc/powerpc64/bsd-setjmp.S1
-rw-r--r--sysdeps/powerpc/powerpc64/bzero.S20
-rw-r--r--sysdeps/powerpc/powerpc64/cell/memcpy.S246
-rw-r--r--sysdeps/powerpc/powerpc64/configure33
-rw-r--r--sysdeps/powerpc/powerpc64/configure.ac23
-rw-r--r--sysdeps/powerpc/powerpc64/crti.S88
-rw-r--r--sysdeps/powerpc/powerpc64/crtn.S51
-rw-r--r--sysdeps/powerpc/powerpc64/dl-dtprocnum.h21
-rw-r--r--sysdeps/powerpc/powerpc64/dl-irel.h63
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.c47
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h1036
-rw-r--r--sysdeps/powerpc/powerpc64/dl-trampoline.S500
-rw-r--r--sysdeps/powerpc/powerpc64/entry.h37
-rw-r--r--sysdeps/powerpc/powerpc64/ffsll.c37
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile44
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c24
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c40
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S35
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c51
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c34
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c60
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c37
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c40
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S27
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c53
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c38
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S33
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c62
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c44
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c60
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S28
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c63
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c28
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c41
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c21
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c29
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c44
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c19
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c30
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c40
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S31
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c40
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S26
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c32
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_ceil.S72
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_ceilf.S66
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_copysign.S59
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_copysignf.S1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_copysignl.S48
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_fabs.S5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_fabsl.S34
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_floor.S72
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_floorf.S66
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_fma.S5
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_isnan.S56
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llrint.S47
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llrintf.S36
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llround.S96
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_llroundf.S88
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_lrint.S1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_lround.S1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_lroundf.S1
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S75
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S68
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_rint.S65
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_rintf.S56
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_round.S87
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_roundf.S81
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_trunc.S79
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/s_truncf.S73
-rw-r--r--sysdeps/powerpc/powerpc64/hp-timing.h46
-rw-r--r--sysdeps/powerpc/powerpc64/lshift.S177
-rw-r--r--sysdeps/powerpc/powerpc64/memcpy.S397
-rw-r--r--sysdeps/powerpc/powerpc64/memset.S265
-rw-r--r--sysdeps/powerpc/powerpc64/mul_1.S135
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/Makefile47
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c27
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/bcopy.c29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/bzero.c43
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c389
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/init-arch.h18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c31
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memchr.c38
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c33
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcmp.c44
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memcpy.c55
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c44
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memmove.c45
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/mempcpy.c44
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memrchr.c37
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset-power4.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset-power6.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset-power8.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S42
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/memset.c53
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S23
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c39
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.c37
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpcpy.c41
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S30
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy.c39
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp-ppc64.c21
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S31
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c40
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S35
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasestr-ppc64.c34
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasestr.c37
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c30
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c30
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcat.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchr.c42
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul.c40
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp.c42
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.c32
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.c35
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcpy.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcspn-ppc64.c26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcspn.c35
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strlen.c44
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c24
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase-ppc64.c21
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase_l.c42
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c31
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c31
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncat.c34
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp.c47
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c33
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy.c42
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S28
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strnlen.c41
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S26
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S39
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c33
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strrchr.c40
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c25
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strspn.c35
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S30
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c29
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strstr.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcschr.c43
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcscpy.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c19
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c36
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c18
-rw-r--r--sysdeps/powerpc/powerpc64/power4/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power4/Makefile6
-rw-r--r--sysdeps/powerpc/powerpc64/power4/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power4/memcmp.S1369
-rw-r--r--sysdeps/powerpc/powerpc64/power4/memcopy.h1
-rw-r--r--sysdeps/powerpc/powerpc64/power4/memcpy.S477
-rw-r--r--sysdeps/powerpc/powerpc64/power4/memset.S251
-rw-r--r--sysdeps/powerpc/powerpc64/power4/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power4/strncmp.S225
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/Implies4
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S37
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S30
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S37
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S30
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S58
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S37
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S30
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S37
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S30
-rw-r--r--sysdeps/powerpc/powerpc64/power5+/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power5/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power5/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S60
-rw-r--r--sysdeps/powerpc/powerpc64/power5/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S58
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S59
-rw-r--r--sysdeps/powerpc/powerpc64/power6/memcpy.S1499
-rw-r--r--sysdeps/powerpc/powerpc64/power6/memset.S395
-rw-r--r--sysdeps/powerpc/powerpc64/power6/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/wcschr.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/wcscpy.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power6/wcsrchr.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S58
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S44
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S54
-rw-r--r--sysdeps/powerpc/powerpc64/power6x/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power7/Makefile11
-rw-r--r--sysdeps/powerpc/powerpc64/power7/add_n.S98
-rw-r--r--sysdeps/powerpc/powerpc64/power7/bcopy.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S70
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S69
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S68
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memchr.S199
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memcmp.S1061
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memcpy.S430
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memmove.S835
-rw-r--r--sysdeps/powerpc/powerpc64/power7/mempcpy.S472
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memrchr.S201
-rw-r--r--sysdeps/powerpc/powerpc64/power7/memset.S399
-rw-r--r--sysdeps/powerpc/powerpc64/power7/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power7/rawmemchr.S115
-rw-r--r--sysdeps/powerpc/powerpc64/power7/stpncpy.S24
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strcasecmp.S126
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strchr.S230
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strchrnul.S131
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strcmp.S168
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strlen.S107
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strncmp.S227
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strncpy.S722
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strnlen.S182
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strrchr.S260
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strstr-ppc64.c27
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strstr.S521
-rw-r--r--sysdeps/powerpc/powerpc64/power7/sub_n.S23
-rw-r--r--sysdeps/powerpc/powerpc64/power8/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power8/Makefile3
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S303
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S508
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S56
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S61
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S56
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S45
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S48
-rw-r--r--sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S519
-rw-r--r--sysdeps/powerpc/powerpc64/power8/memcmp.S1447
-rw-r--r--sysdeps/powerpc/powerpc64/power8/memset.S458
-rw-r--r--sysdeps/powerpc/powerpc64/power8/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power8/stpcpy.S24
-rw-r--r--sysdeps/powerpc/powerpc64/power8/stpncpy.S24
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcasecmp.S457
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcasestr-ppc64.c29
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcasestr.S538
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strchr.S377
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strchrnul.S23
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcmp.S247
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcpy.S270
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcspn.S20
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strlen.S301
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strncase.S20
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strncmp.S327
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strncpy.S465
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strnlen.S433
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strrchr.S464
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strspn.S202
-rw-r--r--sysdeps/powerpc/powerpc64/power9/Implies2
-rw-r--r--sysdeps/powerpc/powerpc64/power9/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power9/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power9/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64/power9/strcmp.S268
-rw-r--r--sysdeps/powerpc/powerpc64/power9/strncmp.S379
-rw-r--r--sysdeps/powerpc/powerpc64/ppc-mcount.S39
-rw-r--r--sysdeps/powerpc/powerpc64/register-dump.h124
-rw-r--r--sysdeps/powerpc/powerpc64/rtld-memset.c4
-rw-r--r--sysdeps/powerpc/powerpc64/setjmp-common.S245
-rw-r--r--sysdeps/powerpc/powerpc64/setjmp.S61
-rw-r--r--sysdeps/powerpc/powerpc64/stackguard-macros.h14
-rw-r--r--sysdeps/powerpc/powerpc64/start.S92
-rw-r--r--sysdeps/powerpc/powerpc64/strchr.S155
-rw-r--r--sysdeps/powerpc/powerpc64/strcmp.S180
-rw-r--r--sysdeps/powerpc/powerpc64/strlen.S203
-rw-r--r--sysdeps/powerpc/powerpc64/strncmp.S210
-rw-r--r--sysdeps/powerpc/powerpc64/submul_1.S21
-rw-r--r--sysdeps/powerpc/powerpc64/sysdep.h425
-rw-r--r--sysdeps/powerpc/powerpc64/tls-macros.h44
-rw-r--r--sysdeps/powerpc/powerpc64/tst-audit.h33
-rw-r--r--sysdeps/powerpc/powerpc64le/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power7/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power7/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power7/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power8/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power8/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power8/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power9/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power9/fpu/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/powerpc64le/power9/multiarch/Implies1
-rw-r--r--sysdeps/powerpc/preconfigure20
-rw-r--r--sysdeps/powerpc/rtld-global-offsets.sym8
-rw-r--r--sysdeps/powerpc/sched_cpucount.c22
-rw-r--r--sysdeps/powerpc/sigjmp.c39
-rw-r--r--sysdeps/powerpc/soft-fp/sfp-machine.h114
-rw-r--r--sysdeps/powerpc/sotruss-lib.c69
-rw-r--r--sysdeps/powerpc/stackinfo.h38
-rw-r--r--sysdeps/powerpc/sys/platform/ppc.h146
-rw-r--r--sysdeps/powerpc/sysdep.h189
-rw-r--r--sysdeps/powerpc/test-arith.c604
-rw-r--r--sysdeps/powerpc/test-arithf.c6
-rw-r--r--sysdeps/powerpc/test-get_hwcap-static.c23
-rw-r--r--sysdeps/powerpc/test-get_hwcap.c177
-rw-r--r--sysdeps/powerpc/test-gettimebase.c46
-rw-r--r--sysdeps/powerpc/tls-macros.h3
-rw-r--r--sysdeps/powerpc/tst-set_ppr.c102
-rw-r--r--sysdeps/powerpc/tst-stack-align.h46
-rw-r--r--sysdeps/powerpc/tst-tlsopt-powerpc.c51
983 files changed, 0 insertions, 77241 deletions
diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies
deleted file mode 100644
index 78dba9510c..0000000000
--- a/sysdeps/powerpc/Implies
+++ /dev/null
@@ -1,5 +0,0 @@
-# On PowerPC we use the IBM extended long double format.
-ieee754/ldbl-128ibm
-ieee754/ldbl-opt
-ieee754/dbl-64
-ieee754/flt-32
diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
deleted file mode 100644
index e03a202c65..0000000000
--- a/sysdeps/powerpc/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-ifeq ($(subdir),string)
-CFLAGS-memcmp.c += -Wno-uninitialized
-endif
-
-ifeq ($(subdir),elf)
-# extra shared linker files to link into dl-allobjs.so and libc
-sysdep-dl-routines += dl-machine hwcapinfo
-sysdep_routines += dl-machine hwcapinfo
-# extra shared linker files to link only into dl-allobjs.so
-sysdep-rtld-routines += dl-machine hwcapinfo
-# Don't optimize GD tls sequence to LE.
-LDFLAGS-tst-tlsopt-powerpc += -Wl,--no-tls-optimize
-tests += tst-tlsopt-powerpc
-endif
-
-ifeq ($(subdir),setjmp)
-ifeq (yes,$(build-shared))
-sysdep_routines += novmx-longjmp novmx-sigjmp
-endif
-endif
-
-ifeq ($(subdir),csu)
-# get offset to rtld_global._dl_hwcap and rtld_global._dl_hwcap2
-gen-as-const-headers += rtld-global-offsets.sym
-# get offset to __locale_struct.__ctype_tolower
-gen-as-const-headers += locale-defines.sym
-endif
-
-ifeq ($(subdir),nptl)
-tests-internal += test-get_hwcap test-get_hwcap-static
-tests-static += test-get_hwcap-static
-endif
-
-ifeq ($(subdir),misc)
-sysdep_headers += sys/platform/ppc.h
-tests += test-gettimebase
-tests += tst-set_ppr
-endif
-
-ifneq (,$(filter %le,$(config-machine)))
-abilist-pattern = %-le.abilist
-endif
diff --git a/sysdeps/powerpc/Versions b/sysdeps/powerpc/Versions
deleted file mode 100644
index 95849668f2..0000000000
--- a/sysdeps/powerpc/Versions
+++ /dev/null
@@ -1,31 +0,0 @@
-libm {
-  GLIBC_2.1 {
-    # symbols used in macros from sysdeps/powerpc/bits/fenv.h
-    __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
-  }
-  GLIBC_2.25 {
-    __fe_dfl_mode;
-  }
-}
-
-libc {
-  GLIBC_2.3.4 {
-    _longjmp; __sigsetjmp; _setjmp;
-    longjmp; setjmp;
-  }
-  GLIBC_PRIVATE {
-    __novmx__libc_longjmp; __novmx__libc_siglongjmp;
-    __vmx__libc_longjmp; __vmx__libc_siglongjmp;
-  }
-}
-
-ld {
-  GLIBC_2.22 {
-    __tls_get_addr_opt;
-  }
-  GLIBC_2.23 {
-    # Symbol used to version control when the ABI started to specify that HWCAP
-    # and AT_PLATFORM data should be stored into the TCB.
-    __parse_hwcap_and_convert_at_platform;
-  }
-}
diff --git a/sysdeps/powerpc/abort-instr.h b/sysdeps/powerpc/abort-instr.h
deleted file mode 100644
index 43746e65ba..0000000000
--- a/sysdeps/powerpc/abort-instr.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* An op-code of 0 is guaranteed to be illegal.  */
-#define ABORT_INSTRUCTION asm (".long 0")
diff --git a/sysdeps/powerpc/atomic-machine.h b/sysdeps/powerpc/atomic-machine.h
deleted file mode 100644
index 0a58203a10..0000000000
--- a/sysdeps/powerpc/atomic-machine.h
+++ /dev/null
@@ -1,339 +0,0 @@
-/* Atomic operations.  PowerPC Common version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- * Never include sysdeps/powerpc/atomic-machine.h directly.
- * Alway use include/atomic.h which will include either
- * sysdeps/powerpc/powerpc32/atomic-machine.h
- * or
- * sysdeps/powerpc/powerpc64/atomic-machine.h
- * as appropriate and which in turn include this file.
- */
-
-#include <stdint.h>
-
-typedef int32_t atomic32_t;
-typedef uint32_t uatomic32_t;
-typedef int_fast32_t atomic_fast32_t;
-typedef uint_fast32_t uatomic_fast32_t;
-
-typedef int64_t atomic64_t;
-typedef uint64_t uatomic64_t;
-typedef int_fast64_t atomic_fast64_t;
-typedef uint_fast64_t uatomic_fast64_t;
-
-typedef intptr_t atomicptr_t;
-typedef uintptr_t uatomicptr_t;
-typedef intmax_t atomic_max_t;
-typedef uintmax_t uatomic_max_t;
-
-/*
- * Powerpc does not have byte and halfword forms of load and reserve and
- * store conditional. So for powerpc we stub out the 8- and 16-bit forms.
- */
-#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
-  (abort (), 0)
-
-#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
-  (abort (), 0)
-
-#ifdef UP
-# define __ARCH_ACQ_INSTR	""
-# define __ARCH_REL_INSTR	""
-#else
-# define __ARCH_ACQ_INSTR	"isync"
-# ifndef __ARCH_REL_INSTR
-#  define __ARCH_REL_INSTR	"sync"
-# endif
-#endif
-
-#ifndef MUTEX_HINT_ACQ
-# define MUTEX_HINT_ACQ
-#endif
-#ifndef MUTEX_HINT_REL
-# define MUTEX_HINT_REL
-#endif
-
-#define atomic_full_barrier()	__asm ("sync" ::: "memory")
-
-#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)	      \
-  ({									      \
-      __typeof (*(mem)) __tmp;						      \
-      __typeof (mem)  __memp = (mem);					      \
-      __asm __volatile (						      \
-		        "1:	lwarx	%0,0,%1" MUTEX_HINT_ACQ "\n"	      \
-		        "	cmpw	%0,%2\n"			      \
-		        "	bne	2f\n"				      \
-		        "	stwcx.	%3,0,%1\n"			      \
-		        "	bne-	1b\n"				      \
-		        "2:	" __ARCH_ACQ_INSTR			      \
-		        : "=&r" (__tmp)					      \
-		        : "b" (__memp), "r" (oldval), "r" (newval)	      \
-		        : "cr0", "memory");				      \
-      __tmp;								      \
-  })
-
-#define __arch_compare_and_exchange_val_32_rel(mem, newval, oldval)	      \
-  ({									      \
-      __typeof (*(mem)) __tmp;						      \
-      __typeof (mem)  __memp = (mem);					      \
-      __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-		        "1:	lwarx	%0,0,%1" MUTEX_HINT_REL "\n"	      \
-		        "	cmpw	%0,%2\n"			      \
-		        "	bne	2f\n"				      \
-		        "	stwcx.	%3,0,%1\n"			      \
-		        "	bne-	1b\n"				      \
-		        "2:	"					      \
-		        : "=&r" (__tmp)					      \
-		        : "b" (__memp), "r" (oldval), "r" (newval)	      \
-		        : "cr0", "memory");				      \
-      __tmp;								      \
-  })
-
-#define __arch_atomic_exchange_32_acq(mem, value)			      \
-  ({									      \
-    __typeof (*mem) __val;						      \
-    __asm __volatile (							      \
-		      "1:	lwarx	%0,0,%2" MUTEX_HINT_ACQ "\n"	      \
-		      "		stwcx.	%3,0,%2\n"			      \
-		      "		bne-	1b\n"				      \
-		      "   " __ARCH_ACQ_INSTR				      \
-		      : "=&r" (__val), "=m" (*mem)			      \
-		      : "b" (mem), "r" (value), "m" (*mem)		      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_exchange_32_rel(mem, value) \
-  ({									      \
-    __typeof (*mem) __val;						      \
-    __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-		      "1:	lwarx	%0,0,%2" MUTEX_HINT_REL "\n"	      \
-		      "		stwcx.	%3,0,%2\n"			      \
-		      "		bne-	1b"				      \
-		      : "=&r" (__val), "=m" (*mem)			      \
-		      : "b" (mem), "r" (value), "m" (*mem)		      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_exchange_and_add_32(mem, value) \
-  ({									      \
-    __typeof (*mem) __val, __tmp;					      \
-    __asm __volatile ("1:	lwarx	%0,0,%3\n"			      \
-		      "		add	%1,%0,%4\n"			      \
-		      "		stwcx.	%1,0,%3\n"			      \
-		      "		bne-	1b"				      \
-		      : "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-		      : "b" (mem), "r" (value), "m" (*mem)		      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_exchange_and_add_32_acq(mem, value) \
-  ({									      \
-    __typeof (*mem) __val, __tmp;					      \
-    __asm __volatile ("1:	lwarx	%0,0,%3" MUTEX_HINT_ACQ "\n"	      \
-		      "		add	%1,%0,%4\n"			      \
-		      "		stwcx.	%1,0,%3\n"			      \
-		      "		bne-	1b\n"				      \
-		      __ARCH_ACQ_INSTR					      \
-		      : "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-		      : "b" (mem), "r" (value), "m" (*mem)		      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_exchange_and_add_32_rel(mem, value) \
-  ({									      \
-    __typeof (*mem) __val, __tmp;					      \
-    __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-		      "1:	lwarx	%0,0,%3" MUTEX_HINT_REL "\n"	      \
-		      "		add	%1,%0,%4\n"			      \
-		      "		stwcx.	%1,0,%3\n"			      \
-		      "		bne-	1b"				      \
-		      : "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-		      : "b" (mem), "r" (value), "m" (*mem)		      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_increment_val_32(mem) \
-  ({									      \
-    __typeof (*(mem)) __val;						      \
-    __asm __volatile ("1:	lwarx	%0,0,%2\n"			      \
-		      "		addi	%0,%0,1\n"			      \
-		      "		stwcx.	%0,0,%2\n"			      \
-		      "		bne-	1b"				      \
-		      : "=&b" (__val), "=m" (*mem)			      \
-		      : "b" (mem), "m" (*mem)				      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_decrement_val_32(mem) \
-  ({									      \
-    __typeof (*(mem)) __val;						      \
-    __asm __volatile ("1:	lwarx	%0,0,%2\n"			      \
-		      "		subi	%0,%0,1\n"			      \
-		      "		stwcx.	%0,0,%2\n"			      \
-		      "		bne-	1b"				      \
-		      : "=&b" (__val), "=m" (*mem)			      \
-		      : "b" (mem), "m" (*mem)				      \
-		      : "cr0", "memory");				      \
-    __val;								      \
-  })
-
-#define __arch_atomic_decrement_if_positive_32(mem) \
-  ({ int __val, __tmp;							      \
-     __asm __volatile ("1:	lwarx	%0,0,%3\n"			      \
-		       "	cmpwi	0,%0,0\n"			      \
-		       "	addi	%1,%0,-1\n"			      \
-		       "	ble	2f\n"				      \
-		       "	stwcx.	%1,0,%3\n"			      \
-		       "	bne-	1b\n"				      \
-		       "2:	" __ARCH_ACQ_INSTR			      \
-		       : "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-		       : "b" (mem), "m" (*mem)				      \
-		       : "cr0", "memory");				      \
-     __val;								      \
-  })
-
-#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval); \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_compare_and_exchange_val_32_rel(mem, newval, oldval); \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_compare_and_exchange_val_64_rel(mem, newval, oldval); \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_exchange_acq(mem, value) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_exchange_32_acq (mem, value);		      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_exchange_64_acq (mem, value);		      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_exchange_rel(mem, value) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_exchange_32_rel (mem, value);		      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_exchange_64_rel (mem, value);		      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_exchange_and_add(mem, value) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_exchange_and_add_32 (mem, value);	      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_exchange_and_add_64 (mem, value);	      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-#define atomic_exchange_and_add_acq(mem, value) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_exchange_and_add_32_acq (mem, value);	      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_exchange_and_add_64_acq (mem, value);	      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-#define atomic_exchange_and_add_rel(mem, value) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_exchange_and_add_32_rel (mem, value);	      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_exchange_and_add_64_rel (mem, value);	      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_increment_val(mem) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*(mem)) == 4)						      \
-      __result = __arch_atomic_increment_val_32 (mem);			      \
-    else if (sizeof (*(mem)) == 8)					      \
-      __result = __arch_atomic_increment_val_64 (mem);			      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_increment(mem) ({ atomic_increment_val (mem); (void) 0; })
-
-#define atomic_decrement_val(mem) \
-  ({									      \
-    __typeof (*(mem)) __result;						      \
-    if (sizeof (*(mem)) == 4)						      \
-      __result = __arch_atomic_decrement_val_32 (mem);			      \
-    else if (sizeof (*(mem)) == 8)					      \
-      __result = __arch_atomic_decrement_val_64 (mem);			      \
-    else 								      \
-       abort ();							      \
-    __result;								      \
-  })
-
-#define atomic_decrement(mem) ({ atomic_decrement_val (mem); (void) 0; })
-
-
-/* Decrement *MEM if it is > 0, and return the old value.  */
-#define atomic_decrement_if_positive(mem) \
-  ({ __typeof (*(mem)) __result;					      \
-    if (sizeof (*mem) == 4)						      \
-      __result = __arch_atomic_decrement_if_positive_32 (mem);		      \
-    else if (sizeof (*mem) == 8)					      \
-      __result = __arch_atomic_decrement_if_positive_64 (mem);		      \
-    else								      \
-       abort ();							      \
-    __result;								      \
-  })
diff --git a/sysdeps/powerpc/bits/endian.h b/sysdeps/powerpc/bits/endian.h
deleted file mode 100644
index db150e9efc..0000000000
--- a/sysdeps/powerpc/bits/endian.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* PowerPC can be little or big endian.  Hopefully gcc will know...  */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
-# if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
-#  error Both BIG_ENDIAN and LITTLE_ENDIAN defined!
-# endif
-# define __BYTE_ORDER __BIG_ENDIAN
-#else
-# if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
-#  define __BYTE_ORDER __LITTLE_ENDIAN
-# else
-#  warning Cannot determine current byte order, assuming big-endian.
-#  define __BYTE_ORDER __BIG_ENDIAN
-# endif
-#endif
diff --git a/sysdeps/powerpc/bits/fenv.h b/sysdeps/powerpc/bits/fenv.h
deleted file mode 100644
index c279b484f5..0000000000
--- a/sysdeps/powerpc/bits/fenv.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FENV_H
-# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
-#endif
-
-
-/* Define bits representing the exception.  We use the bit positions of
-   the appropriate bits in the FPSCR...  */
-enum
-  {
-    FE_INEXACT =
-#define FE_INEXACT	(1 << (31 - 6))
-      FE_INEXACT,
-    FE_DIVBYZERO =
-#define FE_DIVBYZERO	(1 << (31 - 5))
-      FE_DIVBYZERO,
-    FE_UNDERFLOW =
-#define FE_UNDERFLOW	(1 << (31 - 4))
-      FE_UNDERFLOW,
-    FE_OVERFLOW =
-#define FE_OVERFLOW	(1 << (31 - 3))
-      FE_OVERFLOW,
-
-    /* ... except for FE_INVALID, for which we use bit 31. FE_INVALID
-       actually corresponds to bits 7 through 12 and 21 through 23
-       in the FPSCR, but we can't use that because the current draft
-       says that it must be a power of 2.  Instead we use bit 2 which
-       is the summary bit for all the FE_INVALID exceptions, which
-       kind of makes sense.  */
-    FE_INVALID =
-#define FE_INVALID	(1 << (31 - 2))
-      FE_INVALID,
-
-#ifdef __USE_GNU
-    /* Breakdown of the FE_INVALID bits. Setting FE_INVALID on an
-       input to a routine is equivalent to setting all of these bits;
-       FE_INVALID will be set on output from a routine iff one of
-       these bits is set.  Note, though, that you can't disable or
-       enable these exceptions individually.  */
-
-    /* Operation with a sNaN.  */
-    FE_INVALID_SNAN =
-# define FE_INVALID_SNAN	(1 << (31 - 7))
-      FE_INVALID_SNAN,
-
-    /* Inf - Inf */
-    FE_INVALID_ISI =
-# define FE_INVALID_ISI	(1 << (31 - 8))
-      FE_INVALID_ISI,
-
-    /* Inf / Inf */
-    FE_INVALID_IDI =
-# define FE_INVALID_IDI	(1 << (31 - 9))
-      FE_INVALID_IDI,
-
-    /* 0 / 0 */
-    FE_INVALID_ZDZ =
-# define FE_INVALID_ZDZ	(1 << (31 - 10))
-      FE_INVALID_ZDZ,
-
-    /* Inf * 0 */
-    FE_INVALID_IMZ =
-# define FE_INVALID_IMZ	(1 << (31 - 11))
-      FE_INVALID_IMZ,
-
-    /* Comparison with a NaN.  */
-    FE_INVALID_COMPARE =
-# define FE_INVALID_COMPARE	(1 << (31 - 12))
-      FE_INVALID_COMPARE,
-
-    /* Invalid operation flag for software (not set by hardware).  */
-    /* Note that some chips don't have this implemented, presumably
-       because no-one expected anyone to write software for them %-).  */
-    FE_INVALID_SOFTWARE =
-# define FE_INVALID_SOFTWARE	(1 << (31 - 21))
-      FE_INVALID_SOFTWARE,
-
-    /* Square root of negative number (including -Inf).  */
-    /* Note that some chips don't have this implemented.  */
-    FE_INVALID_SQRT =
-# define FE_INVALID_SQRT	(1 << (31 - 22))
-      FE_INVALID_SQRT,
-
-    /* Conversion-to-integer of a NaN or a number too large or too small.  */
-    FE_INVALID_INTEGER_CONVERSION =
-# define FE_INVALID_INTEGER_CONVERSION	(1 << (31 - 23))
-      FE_INVALID_INTEGER_CONVERSION
-
-# define FE_ALL_INVALID \
-        (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \
-	 | FE_INVALID_IMZ | FE_INVALID_COMPARE | FE_INVALID_SOFTWARE \
-	 | FE_INVALID_SQRT | FE_INVALID_INTEGER_CONVERSION)
-#endif
-  };
-
-#define FE_ALL_EXCEPT \
-	(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
-
-/* PowerPC chips support all of the four defined rounding modes.  We
-   use the bit pattern in the FPSCR as the values for the
-   appropriate macros.  */
-enum
-  {
-    FE_TONEAREST =
-#define FE_TONEAREST	0
-      FE_TONEAREST,
-    FE_TOWARDZERO =
-#define FE_TOWARDZERO	1
-      FE_TOWARDZERO,
-    FE_UPWARD =
-#define FE_UPWARD	2
-      FE_UPWARD,
-    FE_DOWNWARD =
-#define FE_DOWNWARD	3
-      FE_DOWNWARD
-  };
-
-/* Type representing exception flags.  */
-typedef unsigned int fexcept_t;
-
-/* Type representing floating-point environment.  We leave it as 'double'
-   for efficiency reasons (rather than writing it to a 32-bit integer). */
-typedef double fenv_t;
-
-/* If the default argument is used we use this value.  */
-extern const fenv_t __fe_dfl_env;
-#define FE_DFL_ENV	(&__fe_dfl_env)
-
-#ifdef __USE_GNU
-/* Floating-point environment where all exceptions are enabled.  Note that
-   this is not sufficient to give you SIGFPE.  */
-extern const fenv_t __fe_enabled_env;
-# define FE_ENABLED_ENV	(&__fe_enabled_env)
-
-/* Floating-point environment with (processor-dependent) non-IEEE floating
-   point.  */
-extern const fenv_t __fe_nonieee_env;
-# define FE_NONIEEE_ENV	(&__fe_nonieee_env)
-
-/* Floating-point environment with all exceptions enabled.  Note that
-   just evaluating this value does not change the processor exception mode.
-   Passing this mask to fesetenv will result in a prctl syscall to change
-   the MSR FE0/FE1 bits to "Precise Mode".  On some processors this will
-   result in slower floating point execution.  This will last until an
-   fenv or exception mask is installed that disables all FP exceptions.  */
-# define FE_NOMASK_ENV	FE_ENABLED_ENV
-
-/* Floating-point environment with all exceptions disabled.  Note that
-   just evaluating this value does not change the processor exception mode.
-   Passing this mask to fesetenv will result in a prctl syscall to change
-   the MSR FE0/FE1 bits to "Ignore Exceptions Mode".  On most processors
-   this allows the fastest possible floating point execution.*/
-# define FE_MASK_ENV	FE_DFL_ENV
-
-#endif
-
-#if __GLIBC_USE (IEC_60559_BFP_EXT)
-/* Type representing floating-point control modes.  */
-typedef double femode_t;
-
-/* Default floating-point control modes.  */
-extern const femode_t __fe_dfl_mode;
-# define FE_DFL_MODE	(&__fe_dfl_mode)
-#endif
diff --git a/sysdeps/powerpc/bits/fenvinline.h b/sysdeps/powerpc/bits/fenvinline.h
deleted file mode 100644
index 4110bdfbbf..0000000000
--- a/sysdeps/powerpc/bits/fenvinline.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Inline floating-point environment handling functions for powerpc.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
-
-/* Inline definition for fegetround.  */
-# define __fegetround() \
-  (__extension__  ({ int __fegetround_result;				      \
-		     __asm__ __volatile__				      \
-		       ("mcrfs 7,7 ; mfcr %0"				      \
-			: "=r"(__fegetround_result) : : "cr7");		      \
-		     __fegetround_result & 3; }))
-# define fegetround() __fegetround ()
-
-# ifndef __NO_MATH_INLINES
-/* The weird 'i#*X' constraints on the following suppress a gcc
-   warning when __excepts is not a constant.  Otherwise, they mean the
-   same as just plain 'i'.  */
-
-#  if __GNUC_PREREQ(3, 4)
-
-/* Inline definition for feraiseexcept.  */
-#   define feraiseexcept(__excepts) \
-  (__extension__  ({ 							      \
-    int __e = __excepts;						      \
-    int __ret;								      \
-    if (__builtin_constant_p (__e)					      \
-        && (__e & (__e - 1)) == 0					      \
-        && __e != FE_INVALID)						      \
-      {									      \
-	if (__e != 0)							      \
-	  __asm__ __volatile__ ("mtfsb1 %0"				      \
-				: : "i#*X" (__builtin_clz (__e)));	      \
-        __ret = 0;							      \
-      }									      \
-    else								      \
-      __ret = feraiseexcept (__e);					      \
-    __ret;								      \
-  }))
-
-/* Inline definition for feclearexcept.  */
-#   define feclearexcept(__excepts) \
-  (__extension__  ({ 							      \
-    int __e = __excepts;						      \
-    int __ret;								      \
-    if (__builtin_constant_p (__e)					      \
-        && (__e & (__e - 1)) == 0					      \
-        && __e != FE_INVALID)						      \
-      {									      \
-	if (__e != 0)							      \
-	  __asm__ __volatile__ ("mtfsb0 %0"				      \
-				: : "i#*X" (__builtin_clz (__e)));	      \
-        __ret = 0;							      \
-      }									      \
-    else								      \
-      __ret = feclearexcept (__e);					      \
-    __ret;								      \
-  }))
-
-#  endif /* __GNUC_PREREQ(3, 4).  */
-
-# endif /* !__NO_MATH_INLINES.  */
-
-#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */
diff --git a/sysdeps/powerpc/bits/fp-fast.h b/sysdeps/powerpc/bits/fp-fast.h
deleted file mode 100644
index 9faf1b7c51..0000000000
--- a/sysdeps/powerpc/bits/fp-fast.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Define FP_FAST_* macros.  PowerPC version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/fp-fast.h> directly; include <math.h> instead."
-#endif
-
-#ifdef __USE_ISOC99
-
-/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
-   builtins are supported.  */
-# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMA
-#  define FP_FAST_FMA 1
-# endif
-
-# if (!defined _SOFT_FLOAT && !defined __NO_FPRS__) || defined __FP_FAST_FMAF
-#  define FP_FAST_FMAF 1
-# endif
-
-# ifdef __FP_FAST_FMAL
-#  define FP_FAST_FMAL 1
-# endif
-
-#endif
diff --git a/sysdeps/powerpc/bits/hwcap.h b/sysdeps/powerpc/bits/hwcap.h
deleted file mode 100644
index c9daeedfde..0000000000
--- a/sysdeps/powerpc/bits/hwcap.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Defines for bits in AT_HWCAP and AT_HWCAP2.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if !defined(_SYS_AUXV_H) && !defined(_SYSDEPS_SYSDEP_H)
-# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
-#endif
-
-/* The bit numbers must match those in the kernel's asm/cputable.h.  */
-
-/* Feature definitions in AT_HWCAP.  */
-#define PPC_FEATURE_32		    0x80000000 /* 32-bit mode. */
-#define PPC_FEATURE_64		    0x40000000 /* 64-bit mode. */
-#define PPC_FEATURE_601_INSTR	    0x20000000 /* 601 chip, Old POWER ISA.  */
-#define PPC_FEATURE_HAS_ALTIVEC	    0x10000000 /* SIMD/Vector Unit.  */
-#define PPC_FEATURE_HAS_FPU	    0x08000000 /* Floating Point Unit.  */
-#define PPC_FEATURE_HAS_MMU	    0x04000000 /* Memory Management Unit.  */
-#define PPC_FEATURE_HAS_4xxMAC	    0x02000000 /* 4xx Multiply Accumulator.  */
-#define PPC_FEATURE_UNIFIED_CACHE   0x01000000 /* Unified I/D cache.  */
-#define PPC_FEATURE_HAS_SPE	    0x00800000 /* Signal Processing ext.  */
-#define PPC_FEATURE_HAS_EFP_SINGLE  0x00400000 /* SPE Float.  */
-#define PPC_FEATURE_HAS_EFP_DOUBLE  0x00200000 /* SPE Double.  */
-#define PPC_FEATURE_NO_TB	    0x00100000 /* 601/403gx have no timebase */
-#define PPC_FEATURE_POWER4	    0x00080000 /* POWER4 ISA 2.00 */
-#define PPC_FEATURE_POWER5	    0x00040000 /* POWER5 ISA 2.02 */
-#define PPC_FEATURE_POWER5_PLUS	    0x00020000 /* POWER5+ ISA 2.03 */
-#define PPC_FEATURE_CELL_BE	    0x00010000 /* CELL Broadband Engine */
-#define PPC_FEATURE_BOOKE	    0x00008000 /* ISA Category Embedded */
-#define PPC_FEATURE_SMT		    0x00004000 /* Simultaneous
-						  Multi-Threading */
-#define PPC_FEATURE_ICACHE_SNOOP    0x00002000
-#define PPC_FEATURE_ARCH_2_05	    0x00001000 /* ISA 2.05 */
-#define PPC_FEATURE_PA6T	    0x00000800 /* PA Semi 6T Core */
-#define PPC_FEATURE_HAS_DFP	    0x00000400 /* Decimal FP Unit */
-#define PPC_FEATURE_POWER6_EXT	    0x00000200 /* P6 + mffgpr/mftgpr */
-#define PPC_FEATURE_ARCH_2_06	    0x00000100 /* ISA 2.06 */
-#define PPC_FEATURE_HAS_VSX	    0x00000080 /* P7 Vector Extension.  */
-#define PPC_FEATURE_PSERIES_PERFMON_COMPAT  0x00000040
-#define PPC_FEATURE_TRUE_LE	    0x00000002
-#define PPC_FEATURE_PPC_LE	    0x00000001
-
-/* Feature definitions in AT_HWCAP2.  */
-#define PPC_FEATURE2_ARCH_2_07     0x80000000 /* ISA 2.07 */
-#define PPC_FEATURE2_HAS_HTM       0x40000000 /* Hardware Transactional
-						 Memory */
-#define PPC_FEATURE2_HAS_DSCR      0x20000000 /* Data Stream Control
-						 Register */
-#define PPC_FEATURE2_HAS_EBB       0x10000000 /* Event Base Branching */
-#define PPC_FEATURE2_HAS_ISEL      0x08000000 /* Integer Select */
-#define PPC_FEATURE2_HAS_TAR       0x04000000 /* Target Address Register */
-#define PPC_FEATURE2_HAS_VEC_CRYPTO  0x02000000  /* Target supports vector
-						    instruction.  */
-#define PPC_FEATURE2_HTM_NOSC	   0x01000000 /* Kernel aborts transaction
-						 when a syscall is made.  */
-#define PPC_FEATURE2_ARCH_3_00	   0x00800000 /* ISA 3.0 */
-#define PPC_FEATURE2_HAS_IEEE128   0x00400000 /* VSX IEEE Binary Float
-						 128-bit */
diff --git a/sysdeps/powerpc/bits/link.h b/sysdeps/powerpc/bits/link.h
deleted file mode 100644
index 1cab121a65..0000000000
--- a/sysdeps/powerpc/bits/link.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Machine-specific declarations for dynamic linker interface.  PowerPC version
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_LINK_H
-# error "Never include <bits/link.h> directly; use <link.h> instead."
-#endif
-
-
-#if __ELF_NATIVE_CLASS == 32
-
-/* Registers for entry into PLT on PPC32.  */
-typedef struct La_ppc32_regs
-{
-  uint32_t lr_reg[8];
-  double lr_fp[8];
-  uint32_t lr_vreg[12][4];
-  uint32_t lr_r1;
-  uint32_t lr_lr;
-} La_ppc32_regs;
-
-/* Return values for calls from PLT on PPC32.  */
-typedef struct La_ppc32_retval
-{
-  uint32_t lrv_r3;
-  uint32_t lrv_r4;
-  double lrv_fp[8];
-  uint32_t lrv_v2[4];
-} La_ppc32_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf32_Addr la_ppc32_gnu_pltenter (Elf32_Sym *__sym,
-					 unsigned int __ndx,
-					 uintptr_t *__refcook,
-					 uintptr_t *__defcook,
-					 La_ppc32_regs *__regs,
-					 unsigned int *__flags,
-					 const char *__symname,
-					 long int *__framesizep);
-extern unsigned int la_ppc32_gnu_pltexit (Elf32_Sym *__sym,
-					  unsigned int __ndx,
-					  uintptr_t *__refcook,
-					  uintptr_t *__defcook,
-					  const La_ppc32_regs *__inregs,
-					  La_ppc32_retval *__outregs,
-					  const char *__symname);
-
-__END_DECLS
-
-#elif __ELF_NATIVE_CLASS == 64
-# if _CALL_ELF != 2
-
-/* Registers for entry into PLT on PPC64.  */
-typedef struct La_ppc64_regs
-{
-  uint64_t lr_reg[8];
-  double lr_fp[13];
-  uint32_t __padding;
-  uint32_t lr_vrsave;
-  uint32_t lr_vreg[12][4];
-  uint64_t lr_r1;
-  uint64_t lr_lr;
-} La_ppc64_regs;
-
-/* Return values for calls from PLT on PPC64.  */
-typedef struct La_ppc64_retval
-{
-  uint64_t lrv_r3;
-  uint64_t lrv_r4;
-  double lrv_fp[4];	/* f1-f4, float - complex long double.  */
-  uint32_t lrv_v2[4];	/* v2.  */
-} La_ppc64_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf64_Addr la_ppc64_gnu_pltenter (Elf64_Sym *__sym,
-					 unsigned int __ndx,
-					 uintptr_t *__refcook,
-					 uintptr_t *__defcook,
-					 La_ppc64_regs *__regs,
-					 unsigned int *__flags,
-					 const char *__symname,
-					 long int *__framesizep);
-extern unsigned int la_ppc64_gnu_pltexit (Elf64_Sym *__sym,
-					  unsigned int __ndx,
-					  uintptr_t *__refcook,
-					  uintptr_t *__defcook,
-					  const La_ppc64_regs *__inregs,
-					  La_ppc64_retval *__outregs,
-					  const char *__symname);
-
-__END_DECLS
-
-# else
-
-/* Registers for entry into PLT on PPC64 in the ELFv2 ABI.  */
-typedef struct La_ppc64v2_regs
-{
-  uint64_t lr_reg[8];
-  double lr_fp[13];
-  uint32_t __padding;
-  uint32_t lr_vrsave;
-  uint32_t lr_vreg[12][4] __attribute__ ((aligned (16)));
-  uint64_t lr_r1;
-  uint64_t lr_lr;
-} La_ppc64v2_regs;
-
-/* Return values for calls from PLT on PPC64 in the ELFv2 ABI.  */
-typedef struct La_ppc64v2_retval
-{
-  uint64_t lrv_r3;
-  uint64_t lrv_r4;
-  double lrv_fp[10];
-  uint32_t lrv_vreg[8][4] __attribute__ ((aligned (16)));
-} La_ppc64v2_retval;
-
-
-__BEGIN_DECLS
-
-extern Elf64_Addr la_ppc64v2_gnu_pltenter (Elf64_Sym *__sym,
-					   unsigned int __ndx,
-					   uintptr_t *__refcook,
-					   uintptr_t *__defcook,
-					   La_ppc64v2_regs *__regs,
-					   unsigned int *__flags,
-					   const char *__symname,
-					   long int *__framesizep);
-extern unsigned int la_ppc64v2_gnu_pltexit (Elf64_Sym *__sym,
-					    unsigned int __ndx,
-					    uintptr_t *__refcook,
-					    uintptr_t *__defcook,
-					    const La_ppc64v2_regs *__inregs,
-					    La_ppc64v2_retval *__outregs,
-					    const char *__symname);
-
-__END_DECLS
-
-# endif
-#endif
diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h
deleted file mode 100644
index e5f0cd30f2..0000000000
--- a/sysdeps/powerpc/bits/mathinline.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Inline math functions for powerpc.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_H
-# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
-#endif
-
-#ifndef __extern_inline
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE __extern_inline
-#endif  /* __cplusplus */
-
-#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
-
-#ifdef __USE_ISOC99
-# if !__GNUC_PREREQ (2,97)
-#  define __unordered_cmp(x, y) \
-  (__extension__							      \
-   ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);			      \
-      unsigned __r;							      \
-      __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y)    \
-              : "cr7");  \
-      __r; }))
-
-#  undef isgreater
-#  undef isgreaterequal
-#  undef isless
-#  undef islessequal
-#  undef islessgreater
-#  undef isunordered
-
-#  define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
-#  define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
-#  define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
-#  define islessequal(x, y) ((__unordered_cmp (x, y) & 0xA) != 0)
-#  define islessgreater(x, y) ((__unordered_cmp (x, y) & 0xC) != 0)
-#  define isunordered(x, y) (__unordered_cmp (x, y) & 1)
-
-# endif /* __GNUC_PREREQ (2,97) */
-
-/* The gcc, version 2.7 or below, has problems with all this inlining
-   code.  So disable it for this version of the compiler.  */
-# if __GNUC_PREREQ (2, 8)
-/* Test for negative number.  Used in the signbit() macro.  */
-__MATH_INLINE int
-__NTH (__signbitf (float __x))
-{
-#if __GNUC_PREREQ (4, 0)
-  return __builtin_signbitf (__x);
-#else
-  __extension__ union { float __f; int __i; } __u = { __f: __x };
-  return __u.__i < 0;
-#endif
-}
-__MATH_INLINE int
-__NTH (__signbit (double __x))
-{
-#if __GNUC_PREREQ (4, 0)
-  return __builtin_signbit (__x);
-#else
-  __extension__ union { double __d; long long __i; } __u = { __d: __x };
-  return __u.__i < 0;
-#endif
-}
-#  ifdef __LONG_DOUBLE_128__
-__MATH_INLINE int
-__NTH (__signbitl (long double __x))
-{
-  return __signbit ((double) __x);
-}
-#  endif
-# endif
-#endif /* __USE_ISOC99 */
-
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-#ifdef __USE_ISOC99
-
-# ifndef __powerpc64__
-__MATH_INLINE long int lrint (double __x) __THROW;
-__MATH_INLINE long int
-__NTH (lrint (double __x))
-{
-  union {
-    double __d;
-    long long __ll;
-  } __u;
-  __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
-  return __u.__ll;
-}
-
-__MATH_INLINE long int lrintf (float __x) __THROW;
-__MATH_INLINE long int
-__NTH (lrintf (float __x))
-{
-  return lrint ((double) __x);
-}
-# endif
-
-__MATH_INLINE double fdim (double __x, double __y) __THROW;
-__MATH_INLINE double
-__NTH (fdim (double __x, double __y))
-{
-  return __x <= __y ? 0 : __x - __y;
-}
-
-__MATH_INLINE float fdimf (float __x, float __y) __THROW;
-__MATH_INLINE float
-__NTH (fdimf (float __x, float __y))
-{
-  return __x <= __y ? 0 : __x - __y;
-}
-
-#endif /* __USE_ISOC99 */
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
-#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */
diff --git a/sysdeps/powerpc/bits/setjmp.h b/sysdeps/powerpc/bits/setjmp.h
deleted file mode 100644
index 02568951e9..0000000000
--- a/sysdeps/powerpc/bits/setjmp.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define the machine-dependent type `jmp_buf'.  PowerPC version.  */
-#ifndef _BITS_SETJMP_H
-#define _BITS_SETJMP_H  1
-
-#if !defined _SETJMP_H && !defined _PTHREAD_H
-# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-#endif
-
-/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
-   We use an array of 'long int' instead, to make writing the
-   assembler easier. Naturally, user code should not depend on
-   either representation. */
-
-#include <bits/wordsize.h>
-
-/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
-   the vrsave must be at byte 248 & v20 at byte 256.  So we must pad this
-   correctly on 32 bit.  It also insists that vecregs are only gauranteed
-   4 byte alignment so we need to use vperm in the setjmp/longjmp routines.
-   We have to version the code because members like  int __mask_was_saved
-   in the jmp_buf will move as jmp_buf is now larger than 248 bytes.  We
-   cannot keep the altivec jmp_buf backward compatible with the jmp_buf.  */
-#ifndef	_ASM
-# if __WORDSIZE == 64
-typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
-# else
-/* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
-   aligned buffer as per the ABI it is just added for performance reasons.  */
-typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
-# endif
-#endif
-
-#endif  /* bits/setjmp.h */
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
deleted file mode 100644
index cd7329b84e..0000000000
--- a/sysdeps/powerpc/dl-procinfo.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Data for processor capability information.  PowerPC version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT
-   definition in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-# define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_powerpc_cap_flags
-#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[64][10]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "ppcle", "true_le", "", "",
-    "", "", "archpmu", "vsx",
-    "arch_2_06", "power6x", "dfp", "pa6t",
-    "arch_2_05", "ic_snoop", "smt", "booke",
-    "cellbe", "power5+", "power5", "power4",
-    "notb", "efpdouble", "efpsingle", "spe",
-    "ucache", "4xxmac", "mmu", "fpu",
-    "altivec", "ppc601", "ppc64", "ppc32",
-    "", "", "", "",
-    "", "", "", "",
-    "", "", "", "",
-    "", "", "", "",
-    "", "", "", "",
-    "", "", "ieee128", "arch_3_00",
-    "htm-nosc", "vcrypto", "tar", "isel",
-    "ebb", "dscr", "htm", "arch_2_07",
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
deleted file mode 100644
index 216d20fbff..0000000000
--- a/sysdeps/powerpc/dl-procinfo.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Processor capability information handling macros.  PowerPC version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H 1
-
-#include <ldsodefs.h>
-#include <sysdep.h>	/* This defines the PPC_FEATURE[2]_* macros.  */
-
-/* The total number of available bits (including those prior to
-   _DL_HWCAP_FIRST).  Some of these bits might not be used.  */
-#define _DL_HWCAP_COUNT		64
-
-/* Features started at bit 31 and decremented as new features were added.  */
-#define _DL_HWCAP_LAST		31
-
-/* AT_HWCAP2 features started at bit 31 and decremented as new features were
-   added.  HWCAP2 feature bits start at bit 0.  */
-#define _DL_HWCAP2_LAST		31
-
-/* These bits influence library search.  */
-#define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC \
-				+ PPC_FEATURE_HAS_DFP)
-
-#define _DL_PLATFORMS_COUNT	15
-
-#define _DL_FIRST_PLATFORM	32
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
-				<< _DL_FIRST_PLATFORM)
-
-/* Platform bits (relative to _DL_FIRST_PLATFORM).  */
-#define PPC_PLATFORM_POWER4		0
-#define PPC_PLATFORM_PPC970		1
-#define PPC_PLATFORM_POWER5		2
-#define PPC_PLATFORM_POWER5_PLUS	3
-#define PPC_PLATFORM_POWER6		4
-#define PPC_PLATFORM_CELL_BE		5
-#define PPC_PLATFORM_POWER6X		6
-#define PPC_PLATFORM_POWER7		7
-#define PPC_PLATFORM_PPCA2		8
-#define PPC_PLATFORM_PPC405		9
-#define PPC_PLATFORM_PPC440		10
-#define PPC_PLATFORM_PPC464		11
-#define PPC_PLATFORM_PPC476		12
-#define PPC_PLATFORM_POWER8		13
-#define PPC_PLATFORM_POWER9		14
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
-  return GLRO(dl_powerpc_cap_flags)[idx];
-}
-
-static inline int
-__attribute__ ((unused))
-_dl_string_hwcap (const char *str)
-{
-  for (int i = 0; i < _DL_HWCAP_COUNT; ++i)
-    if (strcmp (str, _dl_hwcap_string (i)) == 0)
-      return i;
-  return -1;
-}
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  if (str == NULL)
-    return -1;
-
-  if (strncmp (str, "power", 5) == 0)
-    {
-      int ret;
-      str += 5;
-      switch (*str)
-	{
-	case '4':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER4;
-	  break;
-	case '5':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5;
-	  if (str[1] == '+')
-	    {
-	      ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5_PLUS;
-	      ++str;
-	    }
-	  break;
-	case '6':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6;
-	  if (str[1] == 'x')
-	    {
-	      ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6X;
-	      ++str;
-	    }
-	  break;
-	case '7':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
-	  break;
-	case '8':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER8;
-	  break;
-	case '9':
-	  ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER9;
-	  break;
-	default:
-	  return -1;
-	}
-      if (str[1] == '\0')
-       return ret;
-    }
-  else if (strncmp (str, "ppc", 3) == 0)
-    {
-      if (strcmp (str + 3, "970") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC970;
-      else if (strcmp (str + 3, "-cell-be") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
-      else if (strcmp (str + 3, "a2") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
-      else if (strcmp (str + 3, "405") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
-      else if (strcmp (str + 3, "440") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC440;
-      else if (strcmp (str + 3, "464") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC464;
-      else if (strcmp (str + 3, "476") == 0)
-	return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC476;
-    }
-
-  return -1;
-}
-
-#if IS_IN (rtld)
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, unsigned long int word)
-{
-  switch(type)
-    {
-    case AT_HWCAP:
-      _dl_printf ("AT_HWCAP:       ");
-
-      for (int i = 0; i <= _DL_HWCAP_LAST; ++i)
-       if (word & (1 << i))
-         _dl_printf (" %s", _dl_hwcap_string (i));
-      break;
-    case AT_HWCAP2:
-      {
-       unsigned int offset = _DL_HWCAP_LAST + 1;
-
-       _dl_printf ("AT_HWCAP2:      ");
-
-        /* We have to go through them all because the kernel added the
-          AT_HWCAP2 features starting with the high bits.  */
-       for (int i = 0; i <= _DL_HWCAP2_LAST; ++i)
-         if (word & (1 << i))
-           _dl_printf (" %s", _dl_hwcap_string (offset + i));
-       break;
-      }
-    default:
-      /* This should not happen.  */
-      return -1;
-    }
-   _dl_printf ("\n");
-  return 0;
-}
-#endif
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/powerpc/dl-tls.c b/sysdeps/powerpc/dl-tls.c
deleted file mode 100644
index f666d53b49..0000000000
--- a/sysdeps/powerpc/dl-tls.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker.  PowerPC version.
-   Copyright (C) 2009-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include "elf/dl-tls.c"
-
-#ifdef SHARED
-strong_alias(__tls_get_addr, __tls_get_addr_opt)
-#endif
diff --git a/sysdeps/powerpc/dl-tls.h b/sysdeps/powerpc/dl-tls.h
deleted file mode 100644
index 54beaee5ae..0000000000
--- a/sysdeps/powerpc/dl-tls.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker.  PowerPC version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _PPC_DL_TLS_H
-# define _PPC_DL_TLS_H 1
-
-/* Type used for the representation of TLS information in the TOC.  */
-typedef struct
-{
-  unsigned long int ti_module;
-  unsigned long int ti_offset;
-} tls_index;
-
-/* The thread pointer points 0x7000 past the first static TLS block.  */
-#define TLS_TP_OFFSET		0x7000
-
-/* Dynamic thread vector pointers point 0x8000 past the start of each
-   TLS block.  */
-#define TLS_DTV_OFFSET		0x8000
-
-/* Compute the value for a @tprel reloc.  */
-#define TLS_TPREL_VALUE(sym_map, sym, reloc) \
-  ((sym_map)->l_tls_offset + (sym)->st_value + (reloc)->r_addend \
-   - TLS_TP_OFFSET)
-
-/* Compute the value for a @dtprel reloc.  */
-#define TLS_DTPREL_VALUE(sym, reloc) \
-  ((sym)->st_value + (reloc)->r_addend - TLS_DTV_OFFSET)
-
-#ifdef SHARED
-extern void *__tls_get_addr (tls_index *ti);
-
-# define GET_ADDR_OFFSET	(ti->ti_offset + TLS_DTV_OFFSET)
-# define __TLS_GET_ADDR(__ti)	(__tls_get_addr (__ti) - TLS_DTV_OFFSET)
-#endif
-
-#endif /* dl-tls.h */
diff --git a/sysdeps/powerpc/ffs.c b/sysdeps/powerpc/ffs.c
deleted file mode 100644
index 125683b0f9..0000000000
--- a/sysdeps/powerpc/ffs.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Find first set bit in a word, counted from least significant end.
-   For PowerPC.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define ffsl __something_else
-#include <limits.h>
-#include <string.h>
-
-#undef	ffs
-
-#ifdef 	__GNUC__
-
-int
-__ffs (int x)
-{
-  int cnt;
-
-  asm ("cntlzw %0,%1" : "=r" (cnt) : "r" (x & -x));
-  return 32 - cnt;
-}
-weak_alias (__ffs, ffs)
-libc_hidden_def (__ffs)
-libc_hidden_builtin_def (ffs)
-#if ULONG_MAX == UINT_MAX
-#undef ffsl
-weak_alias (__ffs, ffsl)
-#endif
-
-#else
-#include <string/ffs.c>
-#endif
diff --git a/sysdeps/powerpc/fpu/Makefile b/sysdeps/powerpc/fpu/Makefile
deleted file mode 100644
index 53470a9cf2..0000000000
--- a/sysdeps/powerpc/fpu/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(subdir),math)
-libm-support += fenv_const fe_nomask fe_mask t_sqrt
-endif
-
-ifeq ($(subdir),stdlib)
-tests += tst-setcontext-fpscr
-endif
diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c
deleted file mode 100644
index 2685ca6ba0..0000000000
--- a/sysdeps/powerpc/fpu/e_hypot.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Pythagorean addition using doubles
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <stdint.h>
-
-static const double two60   = 1.152921504606847e+18;
-static const double two500  = 3.2733906078961419e+150;
-static const double two600  = 4.149515568880993e+180;
-static const double two1022 = 4.49423283715579e+307;
-static const double twoM500 = 3.054936363499605e-151;
-static const double twoM600 = 2.4099198651028841e-181;
-static const double two60factor = 1.5592502418239997e+290;
-static const double pdnum   = 2.225073858507201e-308;
-
-/* __ieee754_hypot(x,y)
- *
- * This a FP only version without any FP->INT conversion.
- * It is similar to default C version, making appropriates
- * overflow and underflows checks as well scaling when it
- * is needed.
- */
-
-#ifdef _ARCH_PWR7
-/* POWER7 isinf and isnan optimization are fast. */
-# define TEST_INF_NAN(x, y)                                       \
-   if ((isinf(x) || isinf(y))					  \
-       && !issignaling (x) && !issignaling (y))			  \
-       return INFINITY;                                           \
-   if (isnan(x) || isnan(y))                                      \
-       return x + y;
-# else
-/* For POWER6 and below isinf/isnan triggers LHS and PLT calls are
- * costly (especially for POWER6). */
-# define GET_TW0_HIGH_WORD(d1,d2,i1,i2)                           \
- do {                                                             \
-   ieee_double_shape_type gh_u1;                                  \
-   ieee_double_shape_type gh_u2;                                  \
-   gh_u1.value = (d1);                                            \
-   gh_u2.value = (d2);                                            \
-   (i1) = gh_u1.parts.msw & 0x7fffffff;                           \
-   (i2) = gh_u2.parts.msw & 0x7fffffff;                           \
- } while (0)
-
-# define TEST_INF_NAN(x, y)                                      \
- do {                                                            \
-   uint32_t hx, hy;                                              \
-   GET_TW0_HIGH_WORD(x, y, hx, hy);                              \
-   if (hy > hx) {                                                \
-     uint32_t ht = hx; hx = hy; hy = ht;                         \
-   }                                                             \
-   if (hx >= 0x7ff00000) {                                       \
-     if ((hx == 0x7ff00000 || hy == 0x7ff00000)			 \
-	 && !issignaling (x) && !issignaling (y))		 \
-       return INFINITY;                                          \
-     return x + y;						 \
-   }                                                             \
- } while (0)
-
-#endif
-
-
-double
-__ieee754_hypot (double x, double y)
-{
-  x = fabs (x);
-  y = fabs (y);
-
-  TEST_INF_NAN (x, y);
-
-  if (y > x)
-    {
-      double t = x;
-      x = y;
-      y = t;
-    }
-  if (y == 0.0)
-    return x;
-  /* if y is higher enough, y * 2^60 might overflow. The tests if
-     y >= 1.7976931348623157e+308/2^60 (two60factor) and uses the
-     appropriate check to avoid the overflow exception generation.  */
-  if (y > two60factor)
-    {
-      if ((x / y) > two60)
-	return x + y;
-    }
-  else
-    {
-      if (x > (y * two60))
-	return x + y;
-    }
-  if (x > two500)
-    {
-      x *= twoM600;
-      y *= twoM600;
-      return __ieee754_sqrt (x * x + y * y) / twoM600;
-    }
-  if (y < twoM500)
-    {
-      if (y <= pdnum)
-	{
-	  x *= two1022;
-	  y *= two1022;
-	  double ret = __ieee754_sqrt (x * x + y * y) / two1022;
-	  math_check_force_underflow_nonneg (ret);
-	  return ret;
-	}
-      else
-	{
-	  x *= two600;
-	  y *= two600;
-	  return __ieee754_sqrt (x * x + y * y) / two600;
-	}
-    }
-  return __ieee754_sqrt (x * x + y * y);
-}
-strong_alias (__ieee754_hypot, __hypot_finite)
diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c
deleted file mode 100644
index 8502ca962a..0000000000
--- a/sysdeps/powerpc/fpu/e_hypotf.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Pythagorean addition using floats
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <stdint.h>
-
-/* __ieee754_hypotf(x,y)
-
-   This a FP only version without any FP->INT conversion.
-   It is similar to default C version, making appropriates
-   overflow and underflows checks as using double precision
-   instead of scaling.  */
-
-#ifdef _ARCH_PWR7
-/* POWER7 isinf and isnan optimizations are fast. */
-# define TEST_INF_NAN(x, y)                                      \
-   if ((isinff(x) || isinff(y))					 \
-       && !issignaling (x) && !issignaling (y))			 \
-     return INFINITY;                                            \
-   if (isnanf(x) || isnanf(y))                                   \
-     return x + y;
-# else
-/* For POWER6 and below isinf/isnan triggers LHS and PLT calls are
- * costly (especially for POWER6). */
-# define GET_TWO_FLOAT_WORD(f1,f2,i1,i2)                         \
- do {                                                            \
-   ieee_float_shape_type gf_u1;                                  \
-   ieee_float_shape_type gf_u2;                                  \
-   gf_u1.value = (f1);                                           \
-   gf_u2.value = (f2);                                           \
-   (i1) = gf_u1.word & 0x7fffffff;                               \
-   (i2) = gf_u2.word & 0x7fffffff;                               \
- } while (0)
-
-# define TEST_INF_NAN(x, y)                                      \
- do {                                                            \
-   uint32_t hx, hy;                                              \
-   GET_TWO_FLOAT_WORD(x, y, hx, hy);                             \
-   if (hy > hx) {                                                \
-     uint32_t ht = hx; hx = hy; hy = ht;                         \
-   }                                                             \
-   if (hx >= 0x7f800000) {                                       \
-     if ((hx == 0x7f800000 || hy == 0x7f800000)			 \
-	 && !issignaling (x) && !issignaling (y))		 \
-       return INFINITY;                                          \
-     return x + y;						 \
-   }                                                             \
- } while (0)
-#endif
-
-
-float
-__ieee754_hypotf (float x, float y)
-{
-  TEST_INF_NAN (x, y);
-
-  return __ieee754_sqrt ((double) x * x + (double) y * y);
-}
-strong_alias (__ieee754_hypotf, __hypotf_finite)
diff --git a/sysdeps/powerpc/fpu/e_rem_pio2f.c b/sysdeps/powerpc/fpu/e_rem_pio2f.c
deleted file mode 100644
index 8563e7c5e4..0000000000
--- a/sysdeps/powerpc/fpu/e_rem_pio2f.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* e_rem_pio2f.c -- float version of e_rem_pio2.c
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#include <math_private.h>
-#include "s_float_bitwise.h"
-
-/* defined in sysdeps/powerpc/fpu/k_rem_pio2f.c */
-int __fp_kernel_rem_pio2f (float *x, float *y, float e0, int32_t nx);
-
-/* __ieee754_rem_pio2f(x,y)
- *
- * return the remainder of x rem pi/2 in y[0]+y[1]
- */
-
-static const float npio2_hw[] = {
-  1.57077026e+00, 3.14154053e+00, 4.71228027e+00, 6.28308105e+00,
-  7.85388184e+00, 9.42456055e+00, 1.09953613e+01, 1.25661621e+01,
-  1.41369629e+01, 1.57077637e+01, 1.72783203e+01, 1.88491211e+01,
-  2.04199219e+01, 2.19907227e+01, 2.35615234e+01, 2.51323242e+01,
-  2.67031250e+01, 2.82739258e+01, 2.98447266e+01, 3.14155273e+01,
-  3.29863281e+01, 3.45566406e+01, 3.61279297e+01, 3.76982422e+01,
-  3.92695312e+01, 4.08398438e+01, 4.24111328e+01, 4.39814453e+01,
-  4.55527344e+01, 4.71230469e+01, 4.86943359e+01, 5.02646484e+01
-};
-
-
-static const float zero  = 0.0000000000e+00;
-static const float two8  = 2.5600000000e+02;
-
-static const float half    = 5.0000000000e-01;
-static const float invpio2 = 6.3661980629e-01;
-static const float pio2_1  = 1.5707855225e+00;
-static const float pio2_1t = 1.0804334124e-05;
-static const float pio2_2  = 1.0804273188e-05;
-static const float pio2_2t = 6.0770999344e-11;
-static const float pio2_3  = 6.0770943833e-11;
-static const float pio2_3t = 6.1232342629e-17;
-
-static const float pio4     = 7.8539801e-01;
-static const float pio3_4   = 2.3561945e+00;
-static const float pio2_24b = 1.5707951e+00;
-static const float pio2_2e7 = 2.0106054e+02;
-
-
-int32_t
-__ieee754_rem_pio2f (float x, float *y)
-{
-  float ax, z, n, r, w, t, e0;
-  float tx[3];
-  int32_t i, nx;
-
-  ax = __builtin_fabsf (x);
-  if (ax <= pio4)
-    {
-      y[0] = x;
-      y[1] = 0;
-      return 0;
-    }
-  if (ax < pio3_4)
-    {
-      if (x > 0)
-	{
-	  z = x - pio2_1;
-	  if (!__float_and_test28 (ax, pio2_24b))
-	    {
-	      y[0] = z - pio2_1t;
-	      y[1] = (z - y[0]) - pio2_1t;
-	    }
-	  else
-	    {
-	      z -= pio2_2;
-	      y[0] = z - pio2_2t;
-	      y[1] = (z - y[0]) - pio2_2t;
-	    }
-	  return 1;
-	}
-      else
-	{
-	  z = x + pio2_1;
-	  if (!__float_and_test28 (ax, pio2_24b))
-	    {
-	      y[0] = z + pio2_1t;
-	      y[1] = (z - y[0]) + pio2_1t;
-	    }
-	  else
-	    {
-	      z += pio2_2;
-	      y[0] = z + pio2_2t;
-	      y[1] = (z - y[0]) + pio2_2t;
-	    }
-	  return -1;
-	}
-    }
-  if (ax <= pio2_2e7)
-    {
-      n = __floorf (ax * invpio2 + half);
-      i = (int32_t) n;
-      r = ax - n * pio2_1;
-      w = n * pio2_1t;		/* 1st round good to 40 bit */
-      if (i < 32 && !__float_and_test24 (ax, npio2_hw[i - 1]))
-	{
-	  y[0] = r - w;
-	}
-      else
-	{
-	  float i, j;
-	  j = __float_and8 (ax);
-	  y[0] = r - w;
-	  i = __float_and8 (y[0]);
-	  if (j / i > 256.0 || j / i < 3.9062500e-3)
-	    {			/* 2nd iterations needed, good to 57 */
-	      t = r;
-	      w = n * pio2_2;
-	      r = t - w;
-	      w = n * pio2_2t - ((t - r) - w);
-	      y[0] = r - w;
-	      i = __float_and8 (y[0]);
-	      if (j / i > 33554432 || j / i < 2.9802322e-8)
-		{		/* 3rd iteration needed, 74 bits acc */
-		  t = r;
-		  w = n * pio2_3;
-		  r = t - w;
-		  w = n * pio2_3t - ((t - r) - w);
-		  y[0] = r - w;
-		}
-	    }
-	}
-      y[1] = (r - y[0]) - w;
-      if (x < 0)
-	{
-	  y[0] = -y[0];
-	  y[1] = -y[1];
-	  return -i;
-	}
-      else
-	{
-	  return i;
-	}
-    }
-
-  /* all other (large) arguments */
-  if (isnanf (x) || isinff (x))
-    {
-      y[0] = y[1] = x - x;
-      return 0;
-    }
-
-  /* set z = scalbn(|x|,ilogb(x)-7) */
-  e0 = __float_and8 (ax / 128.0);
-  z = ax / e0;
-
-  tx[0] = __floorf (z);
-  z = (z - tx[0]) * two8;
-  tx[1] = __floorf (z);
-  z = (z - tx[1]) * two8;
-  tx[2] = __floorf (z);
-
-  nx = 3;
-  while (tx[nx - 1] == zero)
-    nx--;
-
-  i = __fp_kernel_rem_pio2f (tx, y, e0, nx);
-  if (x < 0)
-    {
-      y[0] = -y[0];
-      y[1] = -y[1];
-      return -i;
-    }
-  return i;
-}
diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
deleted file mode 100644
index 1c8977d6ad..0000000000
--- a/sysdeps/powerpc/fpu/e_sqrt.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* Double-precision floating point square root.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <fenv_libc.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <sysdep.h>
-#include <ldsodefs.h>
-
-#ifndef _ARCH_PPCSQ
-static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */
-static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-static const float two108 = 3.245185536584267269e+32;
-static const float twom54 = 5.551115123125782702e-17;
-extern const float __t_sqrt[1024];
-
-/* The method is based on a description in
-   Computation of elementary functions on the IBM RISC System/6000 processor,
-   P. W. Markstein, IBM J. Res. Develop, 34(1) 1990.
-   Basically, it consists of two interleaved Newton-Raphson approximations,
-   one to find the actual square root, and one to find its reciprocal
-   without the expense of a division operation.   The tricky bit here
-   is the use of the POWER/PowerPC multiply-add operation to get the
-   required accuracy with high speed.
-
-   The argument reduction works by a combination of table lookup to
-   obtain the initial guesses, and some careful modification of the
-   generated guesses (which mostly runs on the integer unit, while the
-   Newton-Raphson is running on the FPU).  */
-
-double
-__slow_ieee754_sqrt (double x)
-{
-  const float inf = a_inf.value;
-
-  if (x > 0)
-    {
-      /* schedule the EXTRACT_WORDS to get separation between the store
-	 and the load.  */
-      ieee_double_shape_type ew_u;
-      ieee_double_shape_type iw_u;
-      ew_u.value = (x);
-      if (x != inf)
-	{
-	  /* Variables named starting with 's' exist in the
-	     argument-reduced space, so that 2 > sx >= 0.5,
-	     1.41... > sg >= 0.70.., 0.70.. >= sy > 0.35... .
-	     Variables named ending with 'i' are integer versions of
-	     floating-point values.  */
-	  double sx;	/* The value of which we're trying to find the
-			   square root.  */
-	  double sg, g;	/* Guess of the square root of x.  */
-	  double sd, d;	/* Difference between the square of the guess and x.  */
-	  double sy;	/* Estimate of 1/2g (overestimated by 1ulp).  */
-	  double sy2;	/* 2*sy */
-	  double e;	/* Difference between y*g and 1/2 (se = e * fsy).  */
-	  double shx;	/* == sx * fsg */
-	  double fsg;	/* sg*fsg == g.  */
-	  fenv_t fe;	/* Saved floating-point environment (stores rounding
-			   mode and whether the inexact exception is
-			   enabled).  */
-	  uint32_t xi0, xi1, sxi, fsgi;
-	  const float *t_sqrt;
-
-	  fe = fegetenv_register ();
-	  /* complete the EXTRACT_WORDS (xi0,xi1,x) operation.  */
-	  xi0 = ew_u.parts.msw;
-	  xi1 = ew_u.parts.lsw;
-	  relax_fenv_state ();
-	  sxi = (xi0 & 0x3fffffff) | 0x3fe00000;
-	  /* schedule the INSERT_WORDS (sx, sxi, xi1) to get separation
-	     between the store and the load.  */
-	  iw_u.parts.msw = sxi;
-	  iw_u.parts.lsw = xi1;
-	  t_sqrt = __t_sqrt + (xi0 >> (52 - 32 - 8 - 1) & 0x3fe);
-	  sg = t_sqrt[0];
-	  sy = t_sqrt[1];
-	  /* complete the INSERT_WORDS (sx, sxi, xi1) operation.  */
-	  sx = iw_u.value;
-
-	  /* Here we have three Newton-Raphson iterations each of a
-	     division and a square root and the remainder of the
-	     argument reduction, all interleaved.   */
-	  sd = -__builtin_fma (sg, sg, -sx);
-	  fsgi = (xi0 + 0x40000000) >> 1 & 0x7ff00000;
-	  sy2 = sy + sy;
-	  sg = __builtin_fma (sy, sd, sg);	/* 16-bit approximation to
-						   sqrt(sx). */
-
-	  /* schedule the INSERT_WORDS (fsg, fsgi, 0) to get separation
-	     between the store and the load.  */
-	  INSERT_WORDS (fsg, fsgi, 0);
-	  iw_u.parts.msw = fsgi;
-	  iw_u.parts.lsw = (0);
-	  e = -__builtin_fma (sy, sg, -almost_half);
-	  sd = -__builtin_fma (sg, sg, -sx);
-	  if ((xi0 & 0x7ff00000) == 0)
-	    goto denorm;
-	  sy = __builtin_fma (e, sy2, sy);
-	  sg = __builtin_fma (sy, sd, sg);	/* 32-bit approximation to
-						   sqrt(sx).  */
-	  sy2 = sy + sy;
-	  /* complete the INSERT_WORDS (fsg, fsgi, 0) operation.  */
-	  fsg = iw_u.value;
-	  e = -__builtin_fma (sy, sg, -almost_half);
-	  sd = -__builtin_fma (sg, sg, -sx);
-	  sy = __builtin_fma (e, sy2, sy);
-	  shx = sx * fsg;
-	  sg = __builtin_fma (sy, sd, sg);	/* 64-bit approximation to
-						   sqrt(sx), but perhaps
-						   rounded incorrectly.  */
-	  sy2 = sy + sy;
-	  g = sg * fsg;
-	  e = -__builtin_fma (sy, sg, -almost_half);
-	  d = -__builtin_fma (g, sg, -shx);
-	  sy = __builtin_fma (e, sy2, sy);
-	  fesetenv_register (fe);
-	  return __builtin_fma (sy, d, g);
-	denorm:
-	  /* For denormalised numbers, we normalise, calculate the
-	     square root, and return an adjusted result.  */
-	  fesetenv_register (fe);
-	  return __slow_ieee754_sqrt (x * two108) * twom54;
-	}
-    }
-  else if (x < 0)
-    {
-      /* For some reason, some PowerPC32 processors don't implement
-	 FE_INVALID_SQRT.  */
-#ifdef FE_INVALID_SQRT
-      __feraiseexcept (FE_INVALID_SQRT);
-
-      fenv_union_t u = { .fenv = fegetenv_register () };
-      if ((u.l & FE_INVALID) == 0)
-#endif
-	__feraiseexcept (FE_INVALID);
-      x = a_nan.value;
-    }
-  return f_wash (x);
-}
-#endif /* _ARCH_PPCSQ  */
-
-#undef __ieee754_sqrt
-double
-__ieee754_sqrt (double x)
-{
-  double z;
-
-#ifdef _ARCH_PPCSQ
-  asm ("fsqrt %0,%1\n" :"=f" (z):"f" (x));
-#else
-  z = __slow_ieee754_sqrt (x);
-#endif
-
-  return z;
-}
-strong_alias (__ieee754_sqrt, __sqrt_finite)
diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
deleted file mode 100644
index 65d27b4d42..0000000000
--- a/sysdeps/powerpc/fpu/e_sqrtf.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Single-precision floating point square root.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <fenv_libc.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <sysdep.h>
-#include <ldsodefs.h>
-
-#ifndef _ARCH_PPCSQ
-static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */
-static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-static const float two48 = 281474976710656.0;
-static const float twom24 = 5.9604644775390625e-8;
-extern const float __t_sqrt[1024];
-
-/* The method is based on a description in
-   Computation of elementary functions on the IBM RISC System/6000 processor,
-   P. W. Markstein, IBM J. Res. Develop, 34(1) 1990.
-   Basically, it consists of two interleaved Newton-Raphson approximations,
-   one to find the actual square root, and one to find its reciprocal
-   without the expense of a division operation.   The tricky bit here
-   is the use of the POWER/PowerPC multiply-add operation to get the
-   required accuracy with high speed.
-
-   The argument reduction works by a combination of table lookup to
-   obtain the initial guesses, and some careful modification of the
-   generated guesses (which mostly runs on the integer unit, while the
-   Newton-Raphson is running on the FPU).  */
-
-float
-__slow_ieee754_sqrtf (float x)
-{
-  const float inf = a_inf.value;
-
-  if (x > 0)
-    {
-      if (x != inf)
-	{
-	  /* Variables named starting with 's' exist in the
-	     argument-reduced space, so that 2 > sx >= 0.5,
-	     1.41... > sg >= 0.70.., 0.70.. >= sy > 0.35... .
-	     Variables named ending with 'i' are integer versions of
-	     floating-point values.  */
-	  float sx;		/* The value of which we're trying to find the square
-				   root.  */
-	  float sg, g;		/* Guess of the square root of x.  */
-	  float sd, d;		/* Difference between the square of the guess and x.  */
-	  float sy;		/* Estimate of 1/2g (overestimated by 1ulp).  */
-	  float sy2;		/* 2*sy */
-	  float e;		/* Difference between y*g and 1/2 (note that e==se).  */
-	  float shx;		/* == sx * fsg */
-	  float fsg;		/* sg*fsg == g.  */
-	  fenv_t fe;		/* Saved floating-point environment (stores rounding
-				   mode and whether the inexact exception is
-				   enabled).  */
-	  uint32_t xi, sxi, fsgi;
-	  const float *t_sqrt;
-
-	  GET_FLOAT_WORD (xi, x);
-	  fe = fegetenv_register ();
-	  relax_fenv_state ();
-	  sxi = (xi & 0x3fffffff) | 0x3f000000;
-	  SET_FLOAT_WORD (sx, sxi);
-	  t_sqrt = __t_sqrt + (xi >> (23 - 8 - 1) & 0x3fe);
-	  sg = t_sqrt[0];
-	  sy = t_sqrt[1];
-
-	  /* Here we have three Newton-Raphson iterations each of a
-	     division and a square root and the remainder of the
-	     argument reduction, all interleaved.   */
-	  sd = -__builtin_fmaf (sg, sg, -sx);
-	  fsgi = (xi + 0x40000000) >> 1 & 0x7f800000;
-	  sy2 = sy + sy;
-	  sg = __builtin_fmaf (sy, sd, sg);	/* 16-bit approximation to
-						   sqrt(sx). */
-	  e = -__builtin_fmaf (sy, sg, -almost_half);
-	  SET_FLOAT_WORD (fsg, fsgi);
-	  sd = -__builtin_fmaf (sg, sg, -sx);
-	  sy = __builtin_fmaf (e, sy2, sy);
-	  if ((xi & 0x7f800000) == 0)
-	    goto denorm;
-	  shx = sx * fsg;
-	  sg = __builtin_fmaf (sy, sd, sg);	/* 32-bit approximation to
-						   sqrt(sx), but perhaps
-						   rounded incorrectly.  */
-	  sy2 = sy + sy;
-	  g = sg * fsg;
-	  e = -__builtin_fmaf (sy, sg, -almost_half);
-	  d = -__builtin_fmaf (g, sg, -shx);
-	  sy = __builtin_fmaf (e, sy2, sy);
-	  fesetenv_register (fe);
-	  return __builtin_fmaf (sy, d, g);
-	denorm:
-	  /* For denormalised numbers, we normalise, calculate the
-	     square root, and return an adjusted result.  */
-	  fesetenv_register (fe);
-	  return __slow_ieee754_sqrtf (x * two48) * twom24;
-	}
-    }
-  else if (x < 0)
-    {
-      /* For some reason, some PowerPC32 processors don't implement
-	 FE_INVALID_SQRT.  */
-#ifdef FE_INVALID_SQRT
-      feraiseexcept (FE_INVALID_SQRT);
-
-      fenv_union_t u = { .fenv = fegetenv_register () };
-      if ((u.l & FE_INVALID) == 0)
-#endif
-	feraiseexcept (FE_INVALID);
-      x = a_nan.value;
-    }
-  return f_washf (x);
-}
-#endif /* _ARCH_PPCSQ  */
-
-#undef __ieee754_sqrtf
-float
-__ieee754_sqrtf (float x)
-{
-  double z;
-
-#ifdef _ARCH_PPCSQ
-  asm ("fsqrts	%0,%1\n" :"=f" (z):"f" (x));
-#else
-  z = __slow_ieee754_sqrtf (x);
-#endif
-
-  return z;
-}
-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
diff --git a/sysdeps/powerpc/fpu/fclrexcpt.c b/sysdeps/powerpc/fpu/fclrexcpt.c
deleted file mode 100644
index 2ee9547833..0000000000
--- a/sysdeps/powerpc/fpu/fclrexcpt.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Clear given exceptions in current floating-point environment.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-#undef feclearexcept
-int
-__feclearexcept (int excepts)
-{
-  fenv_union_t u, n;
-
-  /* Get the current state.  */
-  u.fenv = fegetenv_register ();
-
-  /* Clear the relevant bits.  */
-  n.l = u.l & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID)
-		| (excepts & FPSCR_STICKY_BITS));
-
-  /* Put the new state in effect.  */
-  if (u.l != n.l)
-    fesetenv_register (n.fenv);
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feclearexcept, feclearexcept)
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fe_mask.c b/sysdeps/powerpc/fpu/fe_mask.c
deleted file mode 100644
index bbe41a9d92..0000000000
--- a/sysdeps/powerpc/fpu/fe_mask.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Procedure definition for FE_MASK_ENV.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv.h>
-#include <errno.h>
-
-/* This is a generic stub. An OS specific override is required to clear
-   the FE0/FE1 bits in the MSR.  MSR update is privileged, so this will
-   normally involve a syscall.  */
-
-const fenv_t *
-__fe_mask_env(void)
-{
-  __set_errno (ENOSYS);
-  return FE_DFL_ENV;
-}
-stub_warning (__fe_mask_env)
diff --git a/sysdeps/powerpc/fpu/fe_nomask.c b/sysdeps/powerpc/fpu/fe_nomask.c
deleted file mode 100644
index 3b42aedd15..0000000000
--- a/sysdeps/powerpc/fpu/fe_nomask.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Procedure definition for FE_NOMASK_ENV.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <errno.h>
-
-/* This is a generic stub. An OS specific override is required to set
-   the FE0/FE1 bits in the MSR.  MSR update is privileged, so this will
-   normally involve a syscall.  */
-
-const fenv_t *
-__fe_nomask_env_priv (void)
-{
-  __set_errno (ENOSYS);
-  return FE_ENABLED_ENV;
-}
-stub_warning (__fe_nomask_env_priv)
diff --git a/sysdeps/powerpc/fpu/fedisblxcpt.c b/sysdeps/powerpc/fpu/fedisblxcpt.c
deleted file mode 100644
index bb10b4701a..0000000000
--- a/sysdeps/powerpc/fpu/fedisblxcpt.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Disable floating-point exceptions.
-   Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fedisableexcept (int excepts)
-{
-  fenv_union_t fe, curr;
-  int result, new;
-
-  /* Get current exception mask to return.  */
-  fe.fenv = curr.fenv = fegetenv_register ();
-  result = fenv_reg_to_exceptions (fe.l);
-
-  if ((excepts & FE_ALL_INVALID) == FE_ALL_INVALID)
-    excepts = (excepts | FE_INVALID) & ~ FE_ALL_INVALID;
-
-  /* Sets the new exception mask.  */
-  if (excepts & FE_INEXACT)
-    fe.l &= ~(1 << (31 - FPSCR_XE));
-  if (excepts & FE_DIVBYZERO)
-    fe.l &= ~(1 << (31 - FPSCR_ZE));
-  if (excepts & FE_UNDERFLOW)
-    fe.l &= ~(1 << (31 - FPSCR_UE));
-  if (excepts & FE_OVERFLOW)
-    fe.l &= ~(1 << (31 - FPSCR_OE));
-  if (excepts & FE_INVALID)
-    fe.l &= ~(1 << (31 - FPSCR_VE));
-
-  if (fe.l != curr.l)
-    fesetenv_register (fe.fenv);
-
-  new = __fegetexcept ();
-  if (new == 0 && result != 0)
-    (void)__fe_mask_env ();
-
-  if ((new & excepts) != 0)
-    result = -1;
-  return result;
-}
diff --git a/sysdeps/powerpc/fpu/feenablxcpt.c b/sysdeps/powerpc/fpu/feenablxcpt.c
deleted file mode 100644
index 7f0b333fc6..0000000000
--- a/sysdeps/powerpc/fpu/feenablxcpt.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Enable floating-point exceptions.
-   Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-feenableexcept (int excepts)
-{
-  fenv_union_t fe, curr;
-  int result, new;
-
-  /* Get current exception mask to return.  */
-  fe.fenv = curr.fenv = fegetenv_register ();
-  result = fenv_reg_to_exceptions (fe.l);
-
-  if ((excepts & FE_ALL_INVALID) == FE_ALL_INVALID)
-    excepts = (excepts | FE_INVALID) & ~ FE_ALL_INVALID;
-
-  /* Sets the new exception mask.  */
-  if (excepts & FE_INEXACT)
-    fe.l |= (1 << (31 - FPSCR_XE));
-  if (excepts & FE_DIVBYZERO)
-    fe.l |= (1 << (31 - FPSCR_ZE));
-  if (excepts & FE_UNDERFLOW)
-    fe.l |= (1 << (31 - FPSCR_UE));
-  if (excepts & FE_OVERFLOW)
-    fe.l |= (1 << (31 - FPSCR_OE));
-  if (excepts & FE_INVALID)
-    fe.l |= (1 << (31 - FPSCR_VE));
-
-  if (fe.l != curr.l)
-    fesetenv_register (fe.fenv);
-
-  new = __fegetexcept ();
-  if (new != 0 && result == 0)
-    (void) __fe_nomask_env_priv ();
-
-  if ((new & excepts) != excepts)
-    result = -1;
-
-  return result;
-}
diff --git a/sysdeps/powerpc/fpu/fegetenv.c b/sysdeps/powerpc/fpu/fegetenv.c
deleted file mode 100644
index 251977beba..0000000000
--- a/sysdeps/powerpc/fpu/fegetenv.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Store current floating-point environment.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fegetenv (fenv_t *envp)
-{
-  *envp = fegetenv_register ();
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fegetenv)
-libm_hidden_ver (__fegetenv, fegetenv)
-versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fegetexcept.c b/sysdeps/powerpc/fpu/fegetexcept.c
deleted file mode 100644
index 2b9899abe2..0000000000
--- a/sysdeps/powerpc/fpu/fegetexcept.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Get floating-point exceptions.
-   Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Geoffrey Keating <geoffk@geoffk.org>, 2000.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fegetexcept (void)
-{
-  fenv_union_t fe;
-  int result = 0;
-
-  fe.fenv = fegetenv_register ();
-
-  if (fe.l & (1 << (31 - FPSCR_XE)))
-      result |= FE_INEXACT;
-  if (fe.l & (1 << (31 - FPSCR_ZE)))
-      result |= FE_DIVBYZERO;
-  if (fe.l & (1 << (31 - FPSCR_UE)))
-      result |= FE_UNDERFLOW;
-  if (fe.l & (1 << (31 - FPSCR_OE)))
-      result |= FE_OVERFLOW;
-  if (fe.l & (1 << (31 - FPSCR_VE)))
-      result |= FE_INVALID;
-
-  return result;
-}
-weak_alias (__fegetexcept, fegetexcept)
diff --git a/sysdeps/powerpc/fpu/fegetmode.c b/sysdeps/powerpc/fpu/fegetmode.c
deleted file mode 100644
index 5597000a4b..0000000000
--- a/sysdeps/powerpc/fpu/fegetmode.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Store current floating-point control modes.  PowerPC version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fegetmode (femode_t *modep)
-{
-  *modep = fegetenv_register ();
-  return 0;
-}
diff --git a/sysdeps/powerpc/fpu/fegetround.c b/sysdeps/powerpc/fpu/fegetround.c
deleted file mode 100644
index bedb02f0e5..0000000000
--- a/sysdeps/powerpc/fpu/fegetround.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Return current rounding direction.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-(__fegetround) (void)
-{
-  return __fegetround();
-}
-#undef fegetround
-#undef __fegetround
-libm_hidden_def (__fegetround)
-weak_alias (__fegetround, fegetround)
-libm_hidden_weak (fegetround)
diff --git a/sysdeps/powerpc/fpu/feholdexcpt.c b/sysdeps/powerpc/fpu/feholdexcpt.c
deleted file mode 100644
index fef49c33a9..0000000000
--- a/sysdeps/powerpc/fpu/feholdexcpt.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Store current floating-point environment and clear exceptions.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <fpu_control.h>
-#define _FPU_MASK_ALL (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM | _FPU_MASK_XM | _FPU_MASK_IM)
-
-int
-__feholdexcept (fenv_t *envp)
-{
-  fenv_union_t old, new;
-
-  /* Save the currently set exceptions.  */
-  old.fenv = *envp = fegetenv_register ();
-
-  /* Clear everything except for the rounding modes and non-IEEE arithmetic
-     flag.  */
-  new.l = old.l & 0xffffffff00000007LL;
-
-  if (new.l == old.l)
-    return 0;
-
-  /* If the old env had any enabled exceptions, then mask SIGFPE in the
-     MSR FE0/FE1 bits.  This may allow the FPU to run faster because it
-     always takes the default action and can not generate SIGFPE. */
-  if ((old.l & _FPU_MASK_ALL) != 0)
-    (void)__fe_mask_env ();
-
-  /* Put the new state in effect.  */
-  fesetenv_register (new.fenv);
-
-  return 0;
-}
-libm_hidden_def (__feholdexcept)
-weak_alias (__feholdexcept, feholdexcept)
-libm_hidden_weak (feholdexcept)
diff --git a/sysdeps/powerpc/fpu/fenv_const.c b/sysdeps/powerpc/fpu/fenv_const.c
deleted file mode 100644
index c5e088c98e..0000000000
--- a/sysdeps/powerpc/fpu/fenv_const.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Constants for fenv_bits.h.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* We want to specify the bit pattern of the __fe_*_env constants, so
-   pretend they're really `long long' instead of `double'.  */
-
-/* If the default argument is used we use this value.  */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
-0xfff8000000000000ULL;
-
-/* The same representation is used for femode_t.  */
-extern const unsigned long long __fe_dfl_mode
-  __attribute__ ((aligned (8), alias ("__fe_dfl_env")));
-
-/* Floating-point environment where none of the exceptions are masked.  */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
-0xfff80000000000f8ULL;
-
-/* Floating-point environment with the NI bit set.  */
-const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
-0xfff8000000000004ULL;
diff --git a/sysdeps/powerpc/fpu/fenv_libc.h b/sysdeps/powerpc/fpu/fenv_libc.h
deleted file mode 100644
index 500ac042b4..0000000000
--- a/sysdeps/powerpc/fpu/fenv_libc.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Internal libc stuff for floating point environment routines.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FENV_LIBC_H
-#define _FENV_LIBC_H	1
-
-#include <fenv.h>
-#include <ldsodefs.h>
-#include <sysdep.h>
-
-extern const fenv_t *__fe_nomask_env_priv (void);
-
-extern const fenv_t *__fe_mask_env (void) attribute_hidden;
-
-/* The sticky bits in the FPSCR indicating exceptions have occurred.  */
-#define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID)
-
-/* Equivalent to fegetenv, but returns a fenv_t instead of taking a
-   pointer.  */
-#define fegetenv_register() \
-        ({ fenv_t env; asm volatile ("mffs %0" : "=f" (env)); env; })
-
-/* Equivalent to fesetenv, but takes a fenv_t instead of a pointer.  */
-#define fesetenv_register(env) \
-	do { \
-	  double d = (env); \
-	  if(GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
-	    asm volatile (".machine push; " \
-			  ".machine \"power6\"; " \
-			  "mtfsf 0xff,%0,1,0; " \
-			  ".machine pop" : : "f" (d)); \
-	  else \
-	    asm volatile ("mtfsf 0xff,%0" : : "f" (d)); \
-	} while(0)
-
-/* This very handy macro:
-   - Sets the rounding mode to 'round to nearest';
-   - Sets the processor into IEEE mode; and
-   - Prevents exceptions from being raised for inexact results.
-   These things happen to be exactly what you need for typical elementary
-   functions.  */
-#define relax_fenv_state() \
-	do { \
-	   if (GLRO(dl_hwcap) & PPC_FEATURE_HAS_DFP) \
-	     asm (".machine push; .machine \"power6\"; " \
-		  "mtfsfi 7,0,1; .machine pop"); \
-	   asm ("mtfsfi 7,0"); \
-	} while(0)
-
-/* Set/clear a particular FPSCR bit (for instance,
-   reset_fpscr_bit(FPSCR_VE);
-   prevents INVALID exceptions from being raised).  */
-#define set_fpscr_bit(x) asm volatile ("mtfsb1 %0" : : "i"(x))
-#define reset_fpscr_bit(x) asm volatile ("mtfsb0 %0" : : "i"(x))
-
-typedef union
-{
-  fenv_t fenv;
-  unsigned long long l;
-} fenv_union_t;
-
-
-static inline int
-__fesetround_inline (int round)
-{
-  if ((unsigned int) round < 2)
-    {
-       asm volatile ("mtfsb0 30");
-       if ((unsigned int) round == 0)
-         asm volatile ("mtfsb0 31");
-       else
-         asm volatile ("mtfsb1 31");
-    }
-  else
-    {
-       asm volatile ("mtfsb1 30");
-       if ((unsigned int) round == 2)
-         asm volatile ("mtfsb0 31");
-       else
-         asm volatile ("mtfsb1 31");
-    }
-
-  return 0;
-}
-
-/* Definitions of all the FPSCR bit numbers */
-enum {
-  FPSCR_FX = 0,    /* exception summary */
-  FPSCR_FEX,       /* enabled exception summary */
-  FPSCR_VX,        /* invalid operation summary */
-  FPSCR_OX,        /* overflow */
-  FPSCR_UX,        /* underflow */
-  FPSCR_ZX,        /* zero divide */
-  FPSCR_XX,        /* inexact */
-  FPSCR_VXSNAN,    /* invalid operation for sNaN */
-  FPSCR_VXISI,     /* invalid operation for Inf-Inf */
-  FPSCR_VXIDI,     /* invalid operation for Inf/Inf */
-  FPSCR_VXZDZ,     /* invalid operation for 0/0 */
-  FPSCR_VXIMZ,     /* invalid operation for Inf*0 */
-  FPSCR_VXVC,      /* invalid operation for invalid compare */
-  FPSCR_FR,        /* fraction rounded [fraction was incremented by round] */
-  FPSCR_FI,        /* fraction inexact */
-  FPSCR_FPRF_C,    /* result class descriptor */
-  FPSCR_FPRF_FL,   /* result less than (usually, less than 0) */
-  FPSCR_FPRF_FG,   /* result greater than */
-  FPSCR_FPRF_FE,   /* result equal to */
-  FPSCR_FPRF_FU,   /* result unordered */
-  FPSCR_20,        /* reserved */
-  FPSCR_VXSOFT,    /* invalid operation set by software */
-  FPSCR_VXSQRT,    /* invalid operation for square root */
-  FPSCR_VXCVI,     /* invalid operation for invalid integer convert */
-  FPSCR_VE,        /* invalid operation exception enable */
-  FPSCR_OE,        /* overflow exception enable */
-  FPSCR_UE,        /* underflow exception enable */
-  FPSCR_ZE,        /* zero divide exception enable */
-  FPSCR_XE,        /* inexact exception enable */
-#ifdef _ARCH_PWR6
-  FPSCR_29,        /* Reserved in ISA 2.05  */
-#else
-  FPSCR_NI         /* non-IEEE mode (typically, no denormalised numbers) */
-#endif /* _ARCH_PWR6 */
-  /* the remaining two least-significant bits keep the rounding mode */
-};
-
-static inline int
-fenv_reg_to_exceptions (unsigned long long l)
-{
-  int result = 0;
-  if (l & (1 << (31 - FPSCR_XE)))
-    result |= FE_INEXACT;
-  if (l & (1 << (31 - FPSCR_ZE)))
-    result |= FE_DIVBYZERO;
-  if (l & (1 << (31 - FPSCR_UE)))
-    result |= FE_UNDERFLOW;
-  if (l & (1 << (31 - FPSCR_OE)))
-    result |= FE_OVERFLOW;
-  if (l & (1 << (31 - FPSCR_VE)))
-    result |= FE_INVALID;
-  return result;
-}
-
-#ifdef _ARCH_PWR6
-  /* Not supported in ISA 2.05.  Provided for source compat only.  */
-# define FPSCR_NI 29
-#endif /* _ARCH_PWR6 */
-
-/* This operation (i) sets the appropriate FPSCR bits for its
-   parameter, (ii) converts sNaN to the corresponding qNaN, and (iii)
-   otherwise passes its parameter through unchanged (in particular, -0
-   and +0 stay as they were).  The `obvious' way to do this is optimised
-   out by gcc.  */
-#define f_wash(x) \
-   ({ double d; asm volatile ("fmul %0,%1,%2" \
-			      : "=f"(d) \
-			      : "f" (x), "f"((float)1.0)); d; })
-#define f_washf(x) \
-   ({ float f; asm volatile ("fmuls %0,%1,%2" \
-			     : "=f"(f) \
-			     : "f" (x), "f"((float)1.0)); f; })
-
-#endif /* fenv_libc.h */
diff --git a/sysdeps/powerpc/fpu/fenv_private.h b/sysdeps/powerpc/fpu/fenv_private.h
deleted file mode 100644
index 877f25bcf2..0000000000
--- a/sysdeps/powerpc/fpu/fenv_private.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Private floating point rounding and exceptions handling. PowerPC version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FENV_PRIVATE_H
-#define FENV_PRIVATE_H 1
-
-#include <fenv.h>
-#include <fenv_libc.h>
-#include <fpu_control.h>
-
-/* Mask for the exception enable bits.  */
-#define _FPU_ALL_TRAPS (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM \
-                      | _FPU_MASK_XM | _FPU_MASK_IM)
-
-/* Mask the rounding mode bits.  */
-#define _FPU_MASK_RN (~0x3)
-
-/* Mask everything but the rounding moded and non-IEEE arithmetic flags.  */
-#define _FPU_MASK_NOT_RN_NI 0xffffffff00000007LL
-
-/* Mask restore rounding mode and exception enabled.  */
-#define _FPU_MASK_TRAPS_RN 0xffffffff1fffff00LL
-
-/* Mask exception enable but fraction rounded/inexact and FP result/CC
-   bits.  */
-#define _FPU_MASK_FRAC_INEX_RET_CC 0xffffffff1ff80fff
-
-static __always_inline void
-__libc_feholdbits_ppc (fenv_t *envp, unsigned long long mask,
-	unsigned long long bits)
-{
-  fenv_union_t old, new;
-
-  old.fenv = *envp = fegetenv_register ();
-
-  new.l = (old.l & mask) | bits;
-
-  /* If the old env had any enabled exceptions, then mask SIGFPE in the
-     MSR FE0/FE1 bits.  This may allow the FPU to run faster because it
-     always takes the default action and can not generate SIGFPE.  */
-  if ((old.l & _FPU_ALL_TRAPS) != 0)
-    (void) __fe_mask_env ();
-
-  fesetenv_register (new.fenv);
-}
-
-static __always_inline void
-libc_feholdexcept_ppc (fenv_t *envp)
-{
-  __libc_feholdbits_ppc (envp, _FPU_MASK_NOT_RN_NI, 0LL);
-}
-
-static __always_inline void
-libc_feholdexcept_setround_ppc (fenv_t *envp, int r)
-{
-  __libc_feholdbits_ppc (envp, _FPU_MASK_NOT_RN_NI & _FPU_MASK_RN, r);
-}
-
-static __always_inline void
-libc_fesetround_ppc (int r)
-{
-  __fesetround_inline (r);
-}
-
-static __always_inline int
-libc_fetestexcept_ppc (int e)
-{
-  fenv_union_t u;
-  u.fenv = fegetenv_register ();
-  return u.l & e;
-}
-
-static __always_inline void
-libc_feholdsetround_ppc (fenv_t *e, int r)
-{
-  __libc_feholdbits_ppc (e, _FPU_MASK_TRAPS_RN, r);
-}
-
-static __always_inline unsigned long long
-__libc_femergeenv_ppc (const fenv_t *envp, unsigned long long old_mask,
-	unsigned long long new_mask)
-{
-  fenv_union_t old, new;
-
-  new.fenv = *envp;
-  old.fenv = fegetenv_register ();
-
-  /* Merge bits while masking unwanted bits from new and old env.  */
-  new.l = (old.l & old_mask) | (new.l & new_mask);
-
-  /* If the old env has no enabled exceptions and the new env has any enabled
-     exceptions, then unmask SIGFPE in the MSR FE0/FE1 bits.  This will put the
-     hardware into "precise mode" and may cause the FPU to run slower on some
-     hardware.  */
-  if ((old.l & _FPU_ALL_TRAPS) == 0 && (new.l & _FPU_ALL_TRAPS) != 0)
-    (void) __fe_nomask_env_priv ();
-
-  /* If the old env had any enabled exceptions and the new env has no enabled
-     exceptions, then mask SIGFPE in the MSR FE0/FE1 bits.  This may allow the
-     FPU to run faster because it always takes the default action and can not
-     generate SIGFPE.  */
-  if ((old.l & _FPU_ALL_TRAPS) != 0 && (new.l & _FPU_ALL_TRAPS) == 0)
-    (void) __fe_mask_env ();
-
-  /* Atomically enable and raise (if appropriate) exceptions set in `new'.  */
-  fesetenv_register (new.fenv);
-
-  return old.l;
-}
-
-static __always_inline void
-libc_fesetenv_ppc (const fenv_t *envp)
-{
-  /* Replace the entire environment.  */
-  __libc_femergeenv_ppc (envp, 0LL, -1LL);
-}
-
-static __always_inline void
-libc_feresetround_ppc (fenv_t *envp)
-{
-  __libc_femergeenv_ppc (envp, _FPU_MASK_TRAPS_RN, _FPU_MASK_FRAC_INEX_RET_CC);
-}
-
-static __always_inline int
-libc_feupdateenv_test_ppc (fenv_t *envp, int ex)
-{
-  return __libc_femergeenv_ppc (envp, _FPU_MASK_TRAPS_RN,
-				_FPU_MASK_FRAC_INEX_RET_CC) & ex;
-}
-
-static __always_inline void
-libc_feupdateenv_ppc (fenv_t *e)
-{
-  libc_feupdateenv_test_ppc (e, 0);
-}
-
-#define libc_feholdexceptf           libc_feholdexcept_ppc
-#define libc_feholdexcept            libc_feholdexcept_ppc
-#define libc_feholdexcept_setroundf  libc_feholdexcept_setround_ppc
-#define libc_feholdexcept_setround   libc_feholdexcept_setround_ppc
-#define libc_fetestexceptf           libc_fetestexcept_ppc
-#define libc_fetestexcept            libc_fetestexcept_ppc
-#define libc_fesetroundf             libc_fesetround_ppc
-#define libc_fesetround              libc_fesetround_ppc
-#define libc_fesetenvf               libc_fesetenv_ppc
-#define libc_fesetenv                libc_fesetenv_ppc
-#define libc_feupdateenv_testf       libc_feupdateenv_test_ppc
-#define libc_feupdateenv_test        libc_feupdateenv_test_ppc
-#define libc_feupdateenvf            libc_feupdateenv_ppc
-#define libc_feupdateenv             libc_feupdateenv_ppc
-#define libc_feholdsetroundf         libc_feholdsetround_ppc
-#define libc_feholdsetround          libc_feholdsetround_ppc
-#define libc_feresetroundf           libc_feresetround_ppc
-#define libc_feresetround            libc_feresetround_ppc
-
-
-/* We have support for rounding mode context.  */
-#define HAVE_RM_CTX 1
-
-static __always_inline void
-libc_feholdsetround_ppc_ctx (struct rm_ctx *ctx, int r)
-{
-  fenv_union_t old, new;
-
-  old.fenv = fegetenv_register ();
-
-  new.l = (old.l & _FPU_MASK_TRAPS_RN) | r;
-
-  ctx->env = old.fenv;
-  if (__glibc_unlikely (new.l != old.l))
-    {
-      if ((old.l & _FPU_ALL_TRAPS) != 0)
-	(void) __fe_mask_env ();
-      fesetenv_register (new.fenv);
-      ctx->updated_status = true;
-    }
-  else
-    ctx->updated_status = false;
-}
-
-static __always_inline void
-libc_fesetenv_ppc_ctx (struct rm_ctx *ctx)
-{
-  libc_fesetenv_ppc (&ctx->env);
-}
-
-static __always_inline void
-libc_feupdateenv_ppc_ctx (struct rm_ctx *ctx)
-{
-  if (__glibc_unlikely (ctx->updated_status))
-    libc_feresetround_ppc (&ctx->env);
-}
-
-static __always_inline void
-libc_feresetround_ppc_ctx (struct rm_ctx *ctx)
-{
-  if (__glibc_unlikely (ctx->updated_status))
-    libc_feresetround_ppc (&ctx->env);
-}
-
-#define libc_fesetenv_ctx                libc_fesetenv_ppc_ctx
-#define libc_fesetenvf_ctx               libc_fesetenv_ppc_ctx
-#define libc_fesetenvl_ctx               libc_fesetenv_ppc_ctx
-#define libc_feholdsetround_ctx          libc_feholdsetround_ppc_ctx
-#define libc_feholdsetroundf_ctx         libc_feholdsetround_ppc_ctx
-#define libc_feholdsetroundl_ctx         libc_feholdsetround_ppc_ctx
-#define libc_feresetround_ctx            libc_feresetround_ppc_ctx
-#define libc_feresetroundf_ctx           libc_feresetround_ppc_ctx
-#define libc_feresetroundl_ctx           libc_feresetround_ppc_ctx
-#define libc_feupdateenv_ctx             libc_feupdateenv_ppc_ctx
-#define libc_feupdateenvf_ctx            libc_feupdateenv_ppc_ctx
-#define libc_feupdateenvl_ctx            libc_feupdateenv_ppc_ctx
-
-#endif
diff --git a/sysdeps/powerpc/fpu/fesetenv.c b/sysdeps/powerpc/fpu/fesetenv.c
deleted file mode 100644
index 7208ab455a..0000000000
--- a/sysdeps/powerpc/fpu/fesetenv.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Install given floating-point environment.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <fpu_control.h>
-
-#define _FPU_MASK_ALL (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM | _FPU_MASK_XM | _FPU_MASK_IM)
-
-int
-__fesetenv (const fenv_t *envp)
-{
-  fenv_union_t old, new;
-
-  /* get the currently set exceptions.  */
-  new.fenv = *envp;
-  old.fenv = fegetenv_register ();
-  if (old.l == new.l)
-    return 0;
-
-  /* If the old env has no enabled exceptions and the new env has any enabled
-     exceptions, then unmask SIGFPE in the MSR FE0/FE1 bits.  This will put the
-     hardware into "precise mode" and may cause the FPU to run slower on some
-     hardware.  */
-  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
-    (void) __fe_nomask_env_priv ();
-
-  /* If the old env had any enabled exceptions and the new env has no enabled
-     exceptions, then mask SIGFPE in the MSR FE0/FE1 bits.  This may allow the
-     FPU to run faster because it always takes the default action and can not
-     generate SIGFPE. */
-  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
-    (void)__fe_mask_env ();
-
-  fesetenv_register (*envp);
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fesetenv)
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fesetexcept.c b/sysdeps/powerpc/fpu/fesetexcept.c
deleted file mode 100644
index 47ea8e499d..0000000000
--- a/sysdeps/powerpc/fpu/fesetexcept.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Set given exception flags.  PowerPC version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fesetexcept (int excepts)
-{
-  fenv_union_t u, n;
-
-  u.fenv = fegetenv_register ();
-  n.l = (u.l
-	 | (excepts & FPSCR_STICKY_BITS)
-	 /* Turn FE_INVALID into FE_INVALID_SOFTWARE.  */
-	 | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
-	    & FE_INVALID_SOFTWARE));
-  if (n.l != u.l)
-    {
-      fesetenv_register (n.fenv);
-
-      /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips.  */
-      if (excepts & FE_INVALID)
-	feraiseexcept (FE_INVALID);
-    }
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/fpu/fesetmode.c b/sysdeps/powerpc/fpu/fesetmode.c
deleted file mode 100644
index 794f762898..0000000000
--- a/sysdeps/powerpc/fpu/fesetmode.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Install given floating-point control modes.  PowerPC version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <fpu_control.h>
-
-#define _FPU_MASK_ALL (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM	\
-		       | _FPU_MASK_XM | _FPU_MASK_IM)
-
-#define FPU_STATUS 0xbffff700ULL
-
-int
-fesetmode (const femode_t *modep)
-{
-  fenv_union_t old, new;
-
-  /* Logic regarding enabled exceptions as in fesetenv.  */
-
-  new.fenv = *modep;
-  old.fenv = fegetenv_register ();
-  new.l = (new.l & ~FPU_STATUS) | (old.l & FPU_STATUS);
-
-  if (old.l == new.l)
-    return 0;
-
-  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
-    (void) __fe_nomask_env_priv ();
-
-  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
-    (void) __fe_mask_env ();
-
-  fesetenv_register (new.fenv);
-  return 0;
-}
diff --git a/sysdeps/powerpc/fpu/fesetround.c b/sysdeps/powerpc/fpu/fesetround.c
deleted file mode 100644
index a041f1add9..0000000000
--- a/sysdeps/powerpc/fpu/fesetround.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Set current rounding direction.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-#undef fesetround
-int
-__fesetround (int round)
-{
-  if ((unsigned int) round > 3)
-    return 1;
-  else
-    return __fesetround_inline(round);
-}
-libm_hidden_def (__fesetround)
-weak_alias (__fesetround, fesetround)
-libm_hidden_weak (fesetround)
diff --git a/sysdeps/powerpc/fpu/feupdateenv.c b/sysdeps/powerpc/fpu/feupdateenv.c
deleted file mode 100644
index 551cc1734d..0000000000
--- a/sysdeps/powerpc/fpu/feupdateenv.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Install given floating-point environment and raise exceptions.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <fpu_control.h>
-
-#define _FPU_MASK_ALL (_FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM | _FPU_MASK_XM | _FPU_MASK_IM)
-
-int
-__feupdateenv (const fenv_t *envp)
-{
-  fenv_union_t old, new;
-
-  /* Save the currently set exceptions.  */
-  new.fenv = *envp;
-  old.fenv = fegetenv_register ();
-
-  /* Restore rounding mode and exception enable from *envp and merge
-     exceptions.  Leave fraction rounded/inexact and FP result/CC bits
-     unchanged.  */
-  new.l = (old.l & 0xffffffff1fffff00LL) | (new.l & 0x1ff80fff);
-
-  /* If the old env has no enabled exceptions and the new env has any enabled
-     exceptions, then unmask SIGFPE in the MSR FE0/FE1 bits.  This will put
-     the hardware into "precise mode" and may cause the FPU to run slower on
-     some hardware.  */
-  if ((old.l & _FPU_MASK_ALL) == 0 && (new.l & _FPU_MASK_ALL) != 0)
-    (void) __fe_nomask_env_priv ();
-
-  /* If the old env had any enabled exceptions and the new env has no enabled
-     exceptions, then mask SIGFPE in the MSR FE0/FE1 bits.  This may allow the
-     FPU to run faster because it always takes the default action and can not
-     generate SIGFPE. */
-  if ((old.l & _FPU_MASK_ALL) != 0 && (new.l & _FPU_MASK_ALL) == 0)
-    (void)__fe_mask_env ();
-
-  /* Atomically enable and raise (if appropriate) exceptions set in `new'. */
-  fesetenv_register (new.fenv);
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feupdateenv)
-libm_hidden_ver (__feupdateenv, feupdateenv)
-versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fgetexcptflg.c b/sysdeps/powerpc/fpu/fgetexcptflg.c
deleted file mode 100644
index a11b8f3323..0000000000
--- a/sysdeps/powerpc/fpu/fgetexcptflg.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Store current representation for exceptions.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
-  fenv_union_t u;
-
-  /* Get the current state.  */
-  u.fenv = fegetenv_register ();
-
-  /* Return (all of) it.  */
-  *flagp = u.l & excepts & FE_ALL_EXCEPT;
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fix-fp-int-compare-invalid.h b/sysdeps/powerpc/fpu/fix-fp-int-compare-invalid.h
deleted file mode 100644
index 17ac1d2c83..0000000000
--- a/sysdeps/powerpc/fpu/fix-fp-int-compare-invalid.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Fix for missing "invalid" exceptions from floating-point
-   comparisons.  PowerPC version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FIX_FP_INT_COMPARE_INVALID_H
-#define FIX_FP_INT_COMPARE_INVALID_H	1
-
-/* As of GCC 5, comparisons use unordered comparison instructions when
-   they should use ordered comparisons
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58684>.  */
-#define FIX_COMPARE_INVALID 1
-
-#endif /* fix-fp-int-compare-invalid.h */
diff --git a/sysdeps/powerpc/fpu/fraiseexcpt.c b/sysdeps/powerpc/fpu/fraiseexcpt.c
deleted file mode 100644
index 05f5cb6309..0000000000
--- a/sysdeps/powerpc/fpu/fraiseexcpt.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Raise given exceptions.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-#undef feraiseexcept
-int
-__feraiseexcept (int excepts)
-{
-  fenv_union_t u;
-
-  /* Raise exceptions represented by EXCEPTS.  It is the responsibility of
-     the OS to ensure that if multiple exceptions occur they are fed back
-     to this process in the proper way; this can happen in hardware,
-     anyway (in particular, inexact with overflow or underflow). */
-
-  /* Get the current state.  */
-  u.fenv = fegetenv_register ();
-
-  /* Add the exceptions */
-  u.l = (u.l
-	 | (excepts & FPSCR_STICKY_BITS)
-	 /* Turn FE_INVALID into FE_INVALID_SOFTWARE.  */
-	 | (excepts >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
-	    & FE_INVALID_SOFTWARE));
-
-  /* Store the new status word (along with the rest of the environment),
-     triggering any appropriate exceptions.  */
-  fesetenv_register (u.fenv);
-
-  if ((excepts & FE_INVALID))
-    {
-      /* For some reason, some PowerPC chips (the 601, in particular)
-	 don't have FE_INVALID_SOFTWARE implemented.  Detect this
-	 case and raise FE_INVALID_SNAN instead.  */
-      u.fenv = fegetenv_register ();
-      if ((u.l & FE_INVALID) == 0)
-	set_fpscr_bit (FPSCR_VXSNAN);
-    }
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feraiseexcept)
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/fsetexcptflg.c b/sysdeps/powerpc/fpu/fsetexcptflg.c
deleted file mode 100644
index d5c0963688..0000000000
--- a/sysdeps/powerpc/fpu/fsetexcptflg.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Set floating-point environment exception handling.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fesetexceptflag (const fexcept_t *flagp, int excepts)
-{
-  fenv_union_t u, n;
-  fexcept_t flag;
-
-  /* Get the current state.  */
-  u.fenv = fegetenv_register ();
-
-  /* Ignore exceptions not listed in 'excepts'.  */
-  flag = *flagp & excepts;
-
-  /* Replace the exception status */
-  int excepts_mask = FPSCR_STICKY_BITS & excepts;
-  if ((excepts & FE_INVALID) != 0)
-    excepts_mask |= FE_ALL_INVALID;
-  n.l = ((u.l & ~excepts_mask)
-	 | (flag & FPSCR_STICKY_BITS)
-	 /* Turn FE_INVALID into FE_INVALID_SOFTWARE.  */
-	 | (flag >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
-	    & FE_INVALID_SOFTWARE));
-
-  /* Store the new status word (along with the rest of the environment).
-     This may cause floating-point exceptions if the restored state
-     requests it.  */
-  if (n.l != u.l)
-    fesetenv_register (n.fenv);
-
-  /* Deal with FE_INVALID_SOFTWARE not being implemented on some chips.  */
-  if (flag & FE_INVALID)
-    feraiseexcept(FE_INVALID);
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/fpu/ftestexcept.c b/sysdeps/powerpc/fpu/ftestexcept.c
deleted file mode 100644
index 8f2ecad509..0000000000
--- a/sysdeps/powerpc/fpu/ftestexcept.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Test exception in current environment.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fetestexcept (int excepts)
-{
-  fenv_union_t u;
-
-  /* Get the current state.  */
-  u.fenv = fegetenv_register ();
-
-  /* The FE_INVALID bit is dealt with correctly by the hardware, so we can
-     just:  */
-  return u.l & excepts;
-}
-libm_hidden_def (fetestexcept)
diff --git a/sysdeps/powerpc/fpu/k_cosf.c b/sysdeps/powerpc/fpu/k_cosf.c
deleted file mode 100644
index b9e31dc64d..0000000000
--- a/sysdeps/powerpc/fpu/k_cosf.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* k_cosf.c -- float version of k_cos.c
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <fenv.h>
-#include <math_private.h>
-
-static const float twom27   = 7.4505806e-09;
-static const float dot3     = 3.0000001e-01;
-static const float dot78125 = 7.8125000e-01;
-
-static const float one =  1.0000000000e+00;
-static const float C1  =  4.1666667908e-02;
-static const float C2  = -1.3888889225e-03;
-static const float C3  =  2.4801587642e-05;
-static const float C4  = -2.7557314297e-07;
-static const float C5  =  2.0875723372e-09;
-static const float C6  = -1.1359647598e-11;
-
-float
-__kernel_cosf (float x, float y)
-{
-  float a, hz, z, r, qx;
-  float ix;
-  ix = __builtin_fabsf (x);
-  if (ix < twom27)
-    {				/* |x| < 2**-27 */
-      __feraiseexcept (FE_INEXACT);
-      return one;
-    }
-  z = x * x;
-  r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * C6)))));
-  if (ix < dot3)		/* if |x| < 0.3 */
-    return one - ((float) 0.5 * z - (z * r - x * y));
-  else
-    {
-      if (ix > dot78125)
-	{			/* x > 0.78125 */
-	  qx = (float) 0.28125;
-	}
-      else
-	{
-	  qx = ix / 4.0;
-	}
-      hz = (float) 0.5 *z - qx;
-      a = one - qx;
-      return a - (hz - (z * r - x * y));
-    }
-}
diff --git a/sysdeps/powerpc/fpu/k_rem_pio2f.c b/sysdeps/powerpc/fpu/k_rem_pio2f.c
deleted file mode 100644
index 04ed62055a..0000000000
--- a/sysdeps/powerpc/fpu/k_rem_pio2f.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* k_rem_pio2f.c -- float version of e_rem_pio2.c
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#include <math_private.h>
-#include "s_float_bitwise.h"
-
-
-static const float two_over_pi[] = {
-  1.62000000e+02, 2.49000000e+02, 1.31000000e+02, 1.10000000e+02,
-  7.80000000e+01, 6.80000000e+01, 2.10000000e+01, 4.10000000e+01,
-  2.52000000e+02, 3.90000000e+01, 8.70000000e+01, 2.09000000e+02,
-  2.45000000e+02, 5.20000000e+01, 2.21000000e+02, 1.92000000e+02,
-  2.19000000e+02, 9.80000000e+01, 1.49000000e+02, 1.53000000e+02,
-  6.00000000e+01, 6.70000000e+01, 1.44000000e+02, 6.50000000e+01,
-  2.54000000e+02, 8.10000000e+01, 9.90000000e+01, 1.71000000e+02,
-  2.22000000e+02, 1.87000000e+02, 1.97000000e+02, 9.70000000e+01,
-  1.83000000e+02, 3.60000000e+01, 1.10000000e+02, 5.80000000e+01,
-  6.60000000e+01, 7.70000000e+01, 2.10000000e+02, 2.24000000e+02,
-  6.00000000e+00, 7.30000000e+01, 4.60000000e+01, 2.34000000e+02,
-  9.00000000e+00, 2.09000000e+02, 1.46000000e+02, 2.80000000e+01,
-  2.54000000e+02, 2.90000000e+01, 2.35000000e+02, 2.80000000e+01,
-  1.77000000e+02, 4.10000000e+01, 1.67000000e+02, 6.20000000e+01,
-  2.32000000e+02, 1.30000000e+02, 5.30000000e+01, 2.45000000e+02,
-  4.60000000e+01, 1.87000000e+02, 6.80000000e+01, 1.32000000e+02,
-  2.33000000e+02, 1.56000000e+02, 1.12000000e+02, 3.80000000e+01,
-  1.80000000e+02, 9.50000000e+01, 1.26000000e+02, 6.50000000e+01,
-  5.70000000e+01, 1.45000000e+02, 2.14000000e+02, 5.70000000e+01,
-  1.31000000e+02, 8.30000000e+01, 5.70000000e+01, 2.44000000e+02,
-  1.56000000e+02, 1.32000000e+02, 9.50000000e+01, 1.39000000e+02,
-  1.89000000e+02, 2.49000000e+02, 4.00000000e+01, 5.90000000e+01,
-  3.10000000e+01, 2.48000000e+02, 1.51000000e+02, 2.55000000e+02,
-  2.22000000e+02, 5.00000000e+00, 1.52000000e+02, 1.50000000e+01,
-  2.39000000e+02, 4.70000000e+01, 1.70000000e+01, 1.39000000e+02,
-  9.00000000e+01, 1.00000000e+01, 1.09000000e+02, 3.10000000e+01,
-  1.09000000e+02, 5.40000000e+01, 1.26000000e+02, 2.07000000e+02,
-  3.90000000e+01, 2.03000000e+02, 9.00000000e+00, 1.83000000e+02,
-  7.90000000e+01, 7.00000000e+01, 6.30000000e+01, 1.02000000e+02,
-  1.58000000e+02, 9.50000000e+01, 2.34000000e+02, 4.50000000e+01,
-  1.17000000e+02, 3.90000000e+01, 1.86000000e+02, 1.99000000e+02,
-  2.35000000e+02, 2.29000000e+02, 2.41000000e+02, 1.23000000e+02,
-  6.10000000e+01, 7.00000000e+00, 5.70000000e+01, 2.47000000e+02,
-  1.38000000e+02, 8.20000000e+01, 1.46000000e+02, 2.34000000e+02,
-  1.07000000e+02, 2.51000000e+02, 9.50000000e+01, 1.77000000e+02,
-  3.10000000e+01, 1.41000000e+02, 9.30000000e+01, 8.00000000e+00,
-  8.60000000e+01, 3.00000000e+00, 4.80000000e+01, 7.00000000e+01,
-  2.52000000e+02, 1.23000000e+02, 1.07000000e+02, 1.71000000e+02,
-  2.40000000e+02, 2.07000000e+02, 1.88000000e+02, 3.20000000e+01,
-  1.54000000e+02, 2.44000000e+02, 5.40000000e+01, 2.90000000e+01,
-  1.69000000e+02, 2.27000000e+02, 1.45000000e+02, 9.70000000e+01,
-  9.40000000e+01, 2.30000000e+02, 2.70000000e+01, 8.00000000e+00,
-  1.01000000e+02, 1.53000000e+02, 1.33000000e+02, 9.50000000e+01,
-  2.00000000e+01, 1.60000000e+02, 1.04000000e+02, 6.40000000e+01,
-  1.41000000e+02, 2.55000000e+02, 2.16000000e+02, 1.28000000e+02,
-  7.70000000e+01, 1.15000000e+02, 3.90000000e+01, 4.90000000e+01,
-  6.00000000e+00, 6.00000000e+00, 2.10000000e+01, 8.60000000e+01,
-  2.02000000e+02, 1.15000000e+02, 1.68000000e+02, 2.01000000e+02,
-  9.60000000e+01, 2.26000000e+02, 1.23000000e+02, 1.92000000e+02,
-  1.40000000e+02, 1.07000000e+02
-};
-
-
-static const float PIo2[] = {
-  1.5703125000e+00,		/* 0x3fc90000 */
-  4.5776367188e-04,		/* 0x39f00000 */
-  2.5987625122e-05,		/* 0x37da0000 */
-  7.5437128544e-08,		/* 0x33a20000 */
-  6.0026650317e-11,		/* 0x2e840000 */
-  7.3896444519e-13,		/* 0x2b500000 */
-  5.3845816694e-15,		/* 0x27c20000 */
-  5.6378512969e-18,		/* 0x22d00000 */
-  8.3009228831e-20,		/* 0x1fc40000 */
-  3.2756352257e-22,		/* 0x1bc60000 */
-  6.3331015649e-25,		/* 0x17440000 */
-};
-
-
-static const float zero  = 0.0000000000e+00;
-static const float one   = 1.0000000000;
-static const float twon8 = 3.9062500000e-03;
-static const float two8  = 2.5600000000e+02;
-
-
-int32_t
-__fp_kernel_rem_pio2f (float *x, float *y, float e0, int32_t nx)
-{
-  int32_t jz, jx, jv, jp, jk, carry, n, iq[20], i, j, k, m, q0, ih, exp;
-  float z, fw, f[20], fq[20], q[20];
-
-  /* initialize jk */
-  jp = jk = 9;
-
-  /* determine jx,jv,q0, note that 3>q0 */
-  jx = nx - 1;
-  exp = __float_get_exp (e0) - 127;
-  jv = (exp - 3) / 8;
-  if (jv < 0)
-    jv = 0;
-  q0 = exp - 8 * (jv + 1);
-
-  /* set up f[0] to f[jx+jk] where f[jx+jk] = two_over_pi[jv+jk] */
-  j = jv - jx;
-  m = jx + jk;
-  for (i = 0; i <= m; i++, j++)
-    f[i] = (j < 0) ? zero : two_over_pi[j];
-
-  /* compute q[0],q[1],...q[jk] */
-  for (i = 0; i <= jk; i++)
-    {
-      for (j = 0, fw = 0.0; j <= jx; j++)
-	fw += x[j] * f[jx + i - j];
-      q[i] = fw;
-    }
-
-  jz = jk;
-recompute:
-  /* distill q[] into iq[] reversingly */
-  for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--)
-    {
-      fw = __truncf (twon8 * z);
-      iq[i] = (int32_t) (z - two8 * fw);
-      z = q[j - 1] + fw;
-    }
-
-  /* compute n */
-  z = __scalbnf (z, q0);	/* actual value of z */
-  z -= 8.0 * __floorf (z * 0.125);	/* trim off integer >= 8 */
-  n = (int32_t) z;
-  z -= __truncf (z);
-  ih = 0;
-  if (q0 > 0)
-    {				/* need iq[jz-1] to determine n */
-      i = (iq[jz - 1] >> (8 - q0));
-      n += i;
-      iq[jz - 1] -= i << (8 - q0);
-      ih = iq[jz - 1] >> (7 - q0);
-    }
-  else if (q0 == 0)
-    ih = iq[jz - 1] >> 7;
-  else if (z >= 0.5)
-    ih = 2;
-
-  if (ih > 0)
-    {				/* q > 0.5 */
-      n += 1;
-      carry = 0;
-      for (i = 0; i < jz; i++)
-	{			/* compute 1-q */
-	  j = iq[i];
-	  if (carry == 0)
-	    {
-	      if (j != 0)
-		{
-		  carry = 1;
-		  iq[i] = 0x100 - j;
-		}
-	    }
-	  else
-	    iq[i] = 0xff - j;
-	}
-      if (q0 > 0)
-	{			/* rare case: chance is 1 in 12 */
-	  switch (q0)
-	    {
-	    case 1:
-	      iq[jz - 1] &= 0x7f;
-	      break;
-	    case 2:
-	      iq[jz - 1] &= 0x3f;
-	      break;
-	    }
-	}
-      if (ih == 2)
-	{
-	  z = one - z;
-	  if (carry != 0)
-	    z -= __scalbnf (one, q0);
-	}
-    }
-
-  /* check if recomputation is needed */
-  if (z == zero)
-    {
-      j = 0;
-      for (i = jz - 1; i >= jk; i--)
-	j |= iq[i];
-      if (j == 0)
-	{			/* need recomputation */
-	  for (k = 1; iq[jk - k] == 0; k++);	/* k = no. of terms needed */
-
-	  for (i = jz + 1; i <= jz + k; i++)
-	    {			/* add q[jz+1] to q[jz+k] */
-	      f[jx + i] = two_over_pi[jv + i];
-	      for (j = 0, fw = 0.0; j <= jx; j++)
-		fw += x[j] * f[jx + i - j];
-	      q[i] = fw;
-	    }
-	  jz += k;
-	  goto recompute;
-	}
-    }
-
-  /* chop off zero terms */
-  if (z == 0.0)
-    {
-      jz -= 1;
-      q0 -= 8;
-      while (iq[jz] == 0)
-	{
-	  jz--;
-	  q0 -= 8;
-	}
-    }
-  else
-    {				/* break z into 8-bit if necessary */
-      z = __scalbnf (z, -q0);
-      if (z >= two8)
-	{
-	  fw = __truncf (twon8 * z);
-	  iq[jz] = (int32_t) (z - two8 * fw);
-	  jz += 1;
-	  q0 += 8;
-	  iq[jz] = (int32_t) fw;
-	}
-      else
-	iq[jz] = (int32_t) z;
-    }
-
-  /* convert integer "bit" chunk to floating-point value */
-  fw = __scalbnf (one, q0);
-  for (i = jz; i >= 0; i--)
-    {
-      q[i] = fw * (float) iq[i];
-      fw *= twon8;
-    }
-
-  /* compute PIo2[0,...,jp]*q[jz,...,0] */
-  for (i = jz; i >= 0; i--)
-    {
-      for (fw = 0.0, k = 0; k <= jp && k <= jz - i; k++)
-	fw += PIo2[k] * q[i + k];
-      fq[jz - i] = fw;
-    }
-
-  /* compress fq[] into y[] */
-  fw = 0.0;
-  for (i = jz; i >= 0; i--)
-    fw += fq[i];
-  y[0] = (ih == 0) ? fw : -fw;
-  fw = fq[0] - fw;
-  for (i = 1; i <= jz; i++)
-    fw += fq[i];
-  y[1] = (ih == 0) ? fw : -fw;
-
-  return n & 7;
-}
diff --git a/sysdeps/powerpc/fpu/k_sinf.c b/sysdeps/powerpc/fpu/k_sinf.c
deleted file mode 100644
index 251633dc30..0000000000
--- a/sysdeps/powerpc/fpu/k_sinf.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* k_sinf.c -- float version of k_sin.c
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <float.h>
-#include <math.h>
-#include <fenv.h>
-#include <math_private.h>
-
-
-static const float twom27 =  7.4505806000e-09;
-static const float half   =  5.0000000000e-01;
-static const float S1     = -1.6666667163e-01;
-static const float S2     =  8.3333337680e-03;
-static const float S3     = -1.9841270114e-04;
-static const float S4     =  2.7557314297e-06;
-static const float S5     = -2.5050759689e-08;
-static const float S6     =  1.5896910177e-10;
-
-
-float
-__kernel_sinf (float x, float y, int iy)
-{
-  float z, r, v;
-  float ix;
-  ix = __builtin_fabsf (x);
-  if (ix < twom27)
-    {				/* |x| < 2**-27 */
-      if (ix < FLT_MIN && ix != 0.0f)
-	__feraiseexcept (FE_UNDERFLOW|FE_INEXACT);
-      else
-	__feraiseexcept (FE_INEXACT);
-      return x;
-    }
-  z = x * x;
-  v = z * x;
-  r = S2 + z * (S3 + z * (S4 + z * (S5 + z * S6)));
-  if (iy == 0)
-    return x + v * (S1 + z * r);
-  else
-    return x - ((z * (half * y - v * r) - y) - v * S1);
-}
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
deleted file mode 100644
index 72eb2b1e5a..0000000000
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ /dev/null
@@ -1,2342 +0,0 @@
-# Begin of automatic generation
-
-# Maximal error of functions:
-Function: "acos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "acos_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "acos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "acos_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "acosh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "acosh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "acosh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "acosh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 4
-
-Function: "asin":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asin_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "asin_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asinh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: "asinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "asinh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: "atan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atan2":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "atan2_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "atan2_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "atan2_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "atan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "atan_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atan_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: "atanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "cabs":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_downward":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_towardzero":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_upward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cacos":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cacos":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cacos_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "cacos_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "cacos_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "cacos_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "cacos_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "cacos_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "cacosh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cacosh_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cacosh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "cacosh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cacosh_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "cacosh_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 12
-ldouble: 12
-
-Function: Imaginary part of "cacosh_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 8
-ldouble: 8
-
-Function: "carg":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "carg_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "carg_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "carg_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "casin":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "casin_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "casin_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "casin_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "casin_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "casin_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "casin_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "casinh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "casinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casinh_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "casinh_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "casinh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "casinh_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "casinh_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 13
-ldouble: 13
-
-Function: Imaginary part of "casinh_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "catan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "catan_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "catan_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "catan_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "catan_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "catan_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "catanh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "catanh_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "catanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "catanh_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "catanh_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "catanh_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: "cbrt":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cbrt_downward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: "cbrt_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "cbrt_upward":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccos_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccos_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccos_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccos_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ccos_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccosh_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccosh_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccosh_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccosh_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccosh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ccosh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cexp":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "cexp":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cexp_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 11
-ldouble: 11
-
-Function: Imaginary part of "cexp_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: Real part of "cexp_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 11
-ldouble: 11
-
-Function: Imaginary part of "cexp_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: Real part of "cexp_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "cexp_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "clog":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "clog":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "clog10":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "clog10":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "clog10_downward":
-double: 6
-float: 6
-idouble: 6
-ifloat: 6
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "clog10_downward":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog10_towardzero":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 9
-ldouble: 9
-
-Function: Imaginary part of "clog10_towardzero":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "clog10_upward":
-double: 8
-float: 5
-idouble: 8
-ifloat: 5
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "clog10_upward":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog_downward":
-double: 7
-float: 5
-idouble: 7
-ifloat: 5
-ildouble: 11
-ldouble: 11
-
-Function: Imaginary part of "clog_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "clog_towardzero":
-double: 7
-float: 5
-idouble: 7
-ifloat: 5
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "clog_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog_upward":
-double: 8
-float: 5
-idouble: 8
-ifloat: 5
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "clog_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "cos":
-float: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "cos_downward":
-double: 1
-float: 4
-idouble: 1
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-Function: "cos_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "cos_upward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: "cosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "cosh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cosh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cosh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cpow":
-double: 2
-float: 5
-idouble: 2
-ifloat: 5
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "cpow":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cpow_downward":
-double: 4
-float: 8
-idouble: 4
-ifloat: 8
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "cpow_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cpow_towardzero":
-double: 4
-float: 8
-idouble: 4
-ifloat: 8
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cpow_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cpow_upward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "cpow_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csin_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csin_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csin_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csin_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "csin_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "csinh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csinh_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csinh_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csinh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "csinh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csqrt":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csqrt":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csqrt_downward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "csqrt_downward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "csqrt_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "csqrt_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "csqrt_upward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 12
-ldouble: 12
-
-Function: Imaginary part of "csqrt_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "ctan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ctan":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ctan_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ctan_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: Real part of "ctan_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ctan_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Real part of "ctanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ctanh":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "ctanh_downward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: Imaginary part of "ctanh_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ctanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 13
-ldouble: 13
-
-Function: Imaginary part of "ctanh_towardzero":
-double: 5
-float: 2
-idouble: 5
-ifloat: 2
-ildouble: 10
-ldouble: 10
-
-Function: Real part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: "erf":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "erf_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "erf_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "erf_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "erfc":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "erfc_downward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 10
-ldouble: 10
-
-Function: "erfc_towardzero":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 9
-ldouble: 9
-
-Function: "erfc_upward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: "exp":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "exp10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "exp10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "exp10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "exp2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp2_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp2_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp2_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp_downward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp_towardzero":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "expm1_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "expm1_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "expm1_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: "fma":
-ildouble: 1
-ldouble: 1
-
-Function: "fma_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "fma_towardzero":
-ildouble: 2
-ldouble: 2
-
-Function: "fma_upward":
-ildouble: 3
-ldouble: 3
-
-Function: "fmod":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_towardzero":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "gamma":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "gamma_downward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 15
-ldouble: 15
-
-Function: "gamma_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 16
-ldouble: 16
-
-Function: "gamma_upward":
-double: 4
-float: 5
-idouble: 4
-ifloat: 5
-ildouble: 11
-ldouble: 11
-
-Function: "hypot":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "hypot_downward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "hypot_towardzero":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "hypot_upward":
-double: 1
-idouble: 1
-ildouble: 3
-ldouble: 3
-
-Function: "j0":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "j0_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: "j0_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 8
-ldouble: 8
-
-Function: "j0_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "j1_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "j1_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "j1_upward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 6
-ldouble: 6
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: "jn_downward":
-double: 4
-float: 5
-idouble: 4
-ifloat: 5
-ildouble: 7
-ldouble: 7
-
-Function: "jn_towardzero":
-double: 4
-float: 5
-idouble: 4
-ifloat: 5
-ildouble: 7
-ldouble: 7
-
-Function: "jn_upward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-Function: "lgamma":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "lgamma_downward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 15
-ldouble: 15
-
-Function: "lgamma_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 16
-ldouble: 16
-
-Function: "lgamma_upward":
-double: 4
-float: 5
-idouble: 4
-ifloat: 5
-ildouble: 11
-ldouble: 11
-
-Function: "log":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log10":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log10_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 1
-ldouble: 1
-
-Function: "log10_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log10_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log1p":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "log1p_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log1p_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "log1p_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "log2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log2_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 2
-ldouble: 2
-
-Function: "log2_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "log2_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "log_downward":
-float: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log_towardzero":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "nextafter_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "nextafter_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "pow":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "pow_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sin":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sin_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "sin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "sin_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "sincos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sincos_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "sincos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 7
-ldouble: 7
-
-Function: "sincos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "sinh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "sinh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "sinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "sinh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "sqrt":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_towardzero":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "tan":
-float: 3
-ifloat: 3
-ildouble: 2
-ldouble: 2
-
-Function: "tan_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: "tan_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 2
-ldouble: 2
-
-Function: "tan_upward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: "tanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "tanh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "tanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "tanh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "tgamma":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-Function: "tgamma_downward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: "tgamma_towardzero":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-Function: "tgamma_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "y0_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 10
-ldouble: 10
-
-Function: "y0_towardzero":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: "y0_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 9
-ldouble: 9
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "y1_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "y1_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 9
-ldouble: 9
-
-Function: "y1_upward":
-double: 5
-float: 2
-idouble: 5
-ifloat: 2
-ildouble: 9
-ldouble: 9
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "yn_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 10
-ldouble: 10
-
-Function: "yn_towardzero":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: "yn_upward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 9
-ldouble: 9
-
-# end of automatic generation
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps-name b/sysdeps/powerpc/fpu/libm-test-ulps-name
deleted file mode 100644
index 8c5f7fa2ab..0000000000
--- a/sysdeps/powerpc/fpu/libm-test-ulps-name
+++ /dev/null
@@ -1 +0,0 @@
-PowerPC
diff --git a/sysdeps/powerpc/fpu/math_ldbl.h b/sysdeps/powerpc/fpu/math_ldbl.h
deleted file mode 100644
index 05f51217bf..0000000000
--- a/sysdeps/powerpc/fpu/math_ldbl.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Manipulation of the bit representation of 'long double' quantities.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_LDBL_H_PPC_
-#define _MATH_LDBL_H_PPC_ 1
-
-/* GCC does not optimize the default ldbl_pack code to not spill register
-   in the stack. The following optimization tells gcc that pack/unpack
-   is really a nop.  We use fr1/fr2 because those are the regs used to
-   pass/return a single long double arg.  */
-static inline long double
-ldbl_pack_ppc (double a, double aa)
-{
-  register long double x __asm__ ("fr1");
-  register double xh __asm__ ("fr1");
-  register double xl __asm__ ("fr2");
-  xh = a;
-  xl = aa;
-  __asm__ ("" : "=f" (x) : "f" (xh), "f" (xl));
-  return x;
-}
-
-static inline void
-ldbl_unpack_ppc (long double l, double *a, double *aa)
-{
-  register long double x __asm__ ("fr1");
-  register double xh __asm__ ("fr1");
-  register double xl __asm__ ("fr2");
-  x = l;
-  __asm__ ("" : "=f" (xh), "=f" (xl) : "f" (x));
-  *a = xh;
-  *aa = xl;
-}
-
-#define ldbl_pack   ldbl_pack_ppc
-#define ldbl_unpack ldbl_unpack_ppc
-
-#include <sysdeps/ieee754/ldbl-128ibm/math_ldbl.h>
-
-#endif /* math_ldbl.h */
diff --git a/sysdeps/powerpc/fpu/math_private.h b/sysdeps/powerpc/fpu/math_private.h
deleted file mode 100644
index 3c71275392..0000000000
--- a/sysdeps/powerpc/fpu/math_private.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Private inline math functions for powerpc.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _PPC_MATH_PRIVATE_H_
-#define _PPC_MATH_PRIVATE_H_
-
-#include <sysdep.h>
-#include <ldsodefs.h>
-#include <dl-procinfo.h>
-#include <fenv_private.h>
-#include_next <math_private.h>
-
-extern double __slow_ieee754_sqrt (double);
-extern __always_inline double
-__ieee754_sqrt (double __x)
-{
-  double __z;
-
-#ifdef _ARCH_PPCSQ
-   asm ("fsqrt	%0,%1" : "=f" (__z) : "f" (__x));
-#else
-   __z = __slow_ieee754_sqrt(__x);
-#endif
-
-  return __z;
-}
-
-extern float __slow_ieee754_sqrtf (float);
-extern __always_inline float
-__ieee754_sqrtf (float __x)
-{
-  float __z;
-
-#ifdef _ARCH_PPCSQ
-  asm ("fsqrts	%0,%1" : "=f" (__z) : "f" (__x));
-#else
-   __z = __slow_ieee754_sqrtf(__x);
-#endif
-
-  return __z;
-}
-
-#if defined _ARCH_PWR5X
-
-# ifndef __round
-#  define __round(x)			\
-    ({ double __z;			\
-      __asm __volatile (		\
-	"	frin %0,%1\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-# ifndef __roundf
-#  define __roundf(x)			\
-    ({ float __z;			\
-     __asm __volatile (			\
-	"	frin %0,%1\n"		\
-	"	frsp %0,%0\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-
-# ifndef __trunc
-#  define __trunc(x)			\
-    ({ double __z;			\
-     __asm __volatile (			\
-	"	friz %0,%1\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-# ifndef __truncf
-#  define __truncf(x)			\
-    ({ float __z;			\
-     __asm __volatile (			\
-	"	friz %0,%1\n"		\
-	"	frsp %0,%0\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-
-# ifndef __ceil
-#  define __ceil(x)			\
-    ({ double __z;			\
-     __asm __volatile (			\
-	"	frip %0,%1\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-# ifndef __ceilf
-#  define __ceilf(x)			\
-    ({ float __z;			\
-     __asm __volatile (			\
-	"	frip %0,%1\n"		\
-	"	frsp %0,%0\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-
-# ifndef __floor
-#  define __floor(x)			\
-    ({ double __z;			\
-     __asm __volatile (			\
-	"	frim %0,%1\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-# ifndef __floorf
-#  define __floorf(x)			\
-    ({ float __z;			\
-     __asm __volatile (			\
-	"	frim %0,%1\n"		\
-	"	frsp %0,%0\n"		\
-		: "=f" (__z)		\
-		: "f" (x));		\
-     __z; })
-# endif
-
-#endif	/* defined _ARCH_PWR5X */
-
-#endif /* _PPC_MATH_PRIVATE_H_ */
diff --git a/sysdeps/powerpc/fpu/s_cosf.c b/sysdeps/powerpc/fpu/s_cosf.c
deleted file mode 100644
index 772b138ac3..0000000000
--- a/sysdeps/powerpc/fpu/s_cosf.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* s_cosf.c -- float version of s_cos.c.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <math.h>
-#include <math_private.h>
-
-static const float pio4 = 7.8539801e-1;
-
-float
-__cosf (float x)
-{
-  float y[2], z = 0.0;
-  float ix;
-  int32_t n;
-
-  ix = __builtin_fabsf (x);
-
-  /* |x| ~< pi/4 */
-  if (ix <= pio4)
-    {
-      return __kernel_cosf (x, z);
-      /* cos(Inf or NaN) is NaN */
-    }
-  else if (isnanf (ix))
-    {
-      return x - x;
-    }
-  else if (isinff (ix))
-    {
-      __set_errno (EDOM);
-      return x - x;
-    }
-
-  /* argument reduction needed */
-  else
-    {
-      n = __ieee754_rem_pio2f (x, y);
-      switch (n & 3)
-	{
-	case 0:
-	  return __kernel_cosf (y[0], y[1]);
-	case 1:
-	  return -__kernel_sinf (y[0], y[1], 1);
-	case 2:
-	  return -__kernel_cosf (y[0], y[1]);
-	default:
-	  return __kernel_sinf (y[0], y[1], 1);
-	}
-    }
-}
-
-weak_alias (__cosf, cosf)
diff --git a/sysdeps/powerpc/fpu/s_fabs.S b/sysdeps/powerpc/fpu/s_fabs.S
deleted file mode 100644
index 87dc82eb28..0000000000
--- a/sysdeps/powerpc/fpu/s_fabs.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Floating-point absolute value.  PowerPC version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY(__fabs)
-/* double [f1] fabs (double [f1] x); */
-	fabs fp1,fp1
-	blr
-END(__fabs)
-
-weak_alias (__fabs,fabs)
-
-/* It turns out that it's safe to use this code even for single-precision.  */
-strong_alias(__fabs,__fabsf)
-weak_alias (__fabs,fabsf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fabs,__fabsl)
-weak_alias (__fabs,fabsl)
-#endif
diff --git a/sysdeps/powerpc/fpu/s_fabsf.S b/sysdeps/powerpc/fpu/s_fabsf.S
deleted file mode 100644
index 877c710ce8..0000000000
--- a/sysdeps/powerpc/fpu/s_fabsf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __fabsf is in s_fabs.S  */
diff --git a/sysdeps/powerpc/fpu/s_float_bitwise.h b/sysdeps/powerpc/fpu/s_float_bitwise.h
deleted file mode 100644
index 8e63fb253b..0000000000
--- a/sysdeps/powerpc/fpu/s_float_bitwise.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Bitwise manipulation over float. Function prototypes.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FLOAT_BITWISE_
-#define _FLOAT_BITWISE_ 1
-
-#include <math_private.h>
-
-/* Returns (int)(num & 0x7FFFFFF0 == value) */
-static inline int
-__float_and_test28 (float num, float value)
-{
-  float ret;
-#ifdef _ARCH_PWR7
-  union {
-    int i;
-    float f;
-  } mask = { .i = 0x7ffffff0 };
-  __asm__ (
-  /* the 'f' constraint is used on mask because we just need
-   * to compare floats, not full vector */
-    "xxland %x0,%x1,%x2" : "=f" (ret) : "f" (num), "f" (mask.f)
-  );
-#else
-  int32_t inum;
-  GET_FLOAT_WORD(inum, num);
-  inum = (inum & 0x7ffffff0);
-  SET_FLOAT_WORD(ret, inum);
-#endif
-  return (ret == value);
-}
-
-/* Returns (int)(num & 0x7FFFFF00 == value) */
-static inline int
-__float_and_test24 (float num, float value)
-{
-  float ret;
-#ifdef _ARCH_PWR7
-  union {
-    int i;
-    float f;
-  } mask = { .i = 0x7fffff00 };
-  __asm__ (
-    "xxland %x0,%x1,%x2" : "=f" (ret) : "f" (num), "f" (mask.f)
-  );
-#else
-  int32_t inum;
-  GET_FLOAT_WORD(inum, num);
-  inum = (inum & 0x7fffff00);
-  SET_FLOAT_WORD(ret, inum);
-#endif
-  return (ret == value);
-}
-
-/* Returns (float)(num & 0x7F800000) */
-static inline float
-__float_and8 (float num)
-{
-  float ret;
-#ifdef _ARCH_PWR7
-  union {
-    int i;
-    float f;
-  } mask = { .i = 0x7f800000 };
-  __asm__ (
-    "xxland %x0,%x1,%x2" : "=f" (ret) : "f" (num), "f" (mask.f)
-  );
-#else
-  int32_t inum;
-  GET_FLOAT_WORD(inum, num);
-  inum = (inum & 0x7f800000);
-  SET_FLOAT_WORD(ret, inum);
-#endif
-  return ret;
-}
-
-/* Returns ((int32_t)(num & 0x7F800000) >> 23) */
-static inline int32_t
-__float_get_exp (float num)
-{
-  int32_t inum;
-#ifdef _ARCH_PWR7
-  float ret;
-  union {
-    int i;
-    float f;
-  } mask = { .i = 0x7f800000 };
-  __asm__ (
-    "xxland %x0,%x1,%x2" : "=f" (ret) : "f" (num), "f" (mask.f)
-  );
-  GET_FLOAT_WORD(inum, ret);
-#else
-  GET_FLOAT_WORD(inum, num);
-  inum = inum & 0x7f800000;
-#endif
-  return inum >> 23;
-}
-
-#endif /* s_float_bitwise.h */
diff --git a/sysdeps/powerpc/fpu/s_fma.S b/sysdeps/powerpc/fpu/s_fma.S
deleted file mode 100644
index e101f374bf..0000000000
--- a/sysdeps/powerpc/fpu/s_fma.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Compute x * y + z as ternary operation.  PowerPC version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY(__fma)
-/* double [f1] fma (double [f1] x, double [f2] y, double [f3] z); */
-	fmadd	fp1,fp1,fp2,fp3
-	blr
-END(__fma)
-
-weak_alias (__fma,fma)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__fma,__fmal)
-weak_alias (__fma,fmal)
-#endif
diff --git a/sysdeps/powerpc/fpu/s_fmaf.S b/sysdeps/powerpc/fpu/s_fmaf.S
deleted file mode 100644
index 49ea298707..0000000000
--- a/sysdeps/powerpc/fpu/s_fmaf.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Compute x * y + z as ternary operation.  PowerPC version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY(__fmaf)
-/* float [f1] fmaf (float [f1] x, float [f2] y, float [f3] z); */
-	fmadds	fp1,fp1,fp2,fp3
-	blr
-END(__fmaf)
-
-weak_alias (__fmaf,fmaf)
diff --git a/sysdeps/powerpc/fpu/s_isnan.c b/sysdeps/powerpc/fpu/s_isnan.c
deleted file mode 100644
index f75391fa80..0000000000
--- a/sysdeps/powerpc/fpu/s_isnan.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Return 1 if argument is a NaN, else 0.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Ugly kludge to avoid declarations.  */
-#define __isnanf __Xisnanf
-#define isnanf Xisnanf
-#define __GI___isnanf __GI___Xisnanf
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <fenv_libc.h>
-
-#undef __isnanf
-#undef isnanf
-#undef __GI___isnanf
-
-
-/* The hidden_proto in include/math.h was obscured by the macro hackery.  */
-__typeof (__isnan) __isnanf;
-hidden_proto (__isnanf)
-
-
-int
-__isnan (double x)
-{
-  fenv_t savedstate;
-  int result;
-  savedstate = fegetenv_register ();
-  reset_fpscr_bit (FPSCR_VE);
-  result = !(x == x);
-  fesetenv_register (savedstate);
-  return result;
-}
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
diff --git a/sysdeps/powerpc/fpu/s_isnanf.S b/sysdeps/powerpc/fpu/s_isnanf.S
deleted file mode 100644
index fc22f678a1..0000000000
--- a/sysdeps/powerpc/fpu/s_isnanf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __isnanf is in s_isnan.c  */
diff --git a/sysdeps/powerpc/fpu/s_lrintf.S b/sysdeps/powerpc/fpu/s_lrintf.S
deleted file mode 100644
index e24766535f..0000000000
--- a/sysdeps/powerpc/fpu/s_lrintf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __lrintf is in s_lrint.c  */
diff --git a/sysdeps/powerpc/fpu/s_rint.c b/sysdeps/powerpc/fpu/s_rint.c
deleted file mode 100644
index a96140b2c9..0000000000
--- a/sysdeps/powerpc/fpu/s_rint.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Round a 64-bit floating point value to the nearest integer.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-double
-__rint (double x)
-{
-  static const float TWO52 = 4503599627370496.0;
-
-  if (fabs (x) < TWO52)
-    {
-      if (x > 0.0)
-	{
-	  x += TWO52;
-	  x -= TWO52;
-	}
-      else if (x < 0.0)
-	{
-	  x = TWO52 - x;
-	  x = -(x - TWO52);
-	}
-    }
-
-  return x;
-}
-weak_alias (__rint, rint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__rint, __rintl)
-weak_alias (__rint, rintl)
-#endif
diff --git a/sysdeps/powerpc/fpu/s_rintf.c b/sysdeps/powerpc/fpu/s_rintf.c
deleted file mode 100644
index 6b16c7bec4..0000000000
--- a/sysdeps/powerpc/fpu/s_rintf.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Round a 32-bit floating point value to the nearest integer.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-float
-__rintf (float x)
-{
-  static const float TWO23 = 8388608.0;
-
-  if (fabsf (x) < TWO23)
-    {
-      if (x > 0.0)
-	{
-	  x += TWO23;
-	  x -= TWO23;
-	}
-      else if (x < 0.0)
-	{
-	  x = TWO23 - x;
-	  x = -(x - TWO23);
-	}
-    }
-
-  return x;
-}
-weak_alias (__rintf, rintf)
diff --git a/sysdeps/powerpc/fpu/s_sinf.c b/sysdeps/powerpc/fpu/s_sinf.c
deleted file mode 100644
index 54a428e68a..0000000000
--- a/sysdeps/powerpc/fpu/s_sinf.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* s_sinf.c -- float version of s_sin.c.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <math.h>
-#include <math_private.h>
-
-static const float pio4 = 7.8539801e-1;
-
-float
-__sinf (float x)
-{
-  float y[2], z = 0.0;
-  float ix;
-  int32_t n;
-
-  ix = __builtin_fabsf (x);
-
-  /* |x| ~< pi/4 */
-  if (ix <= pio4)
-    {
-      return __kernel_sinf (x, z, 0);
-      /* sin(Inf or NaN) is NaN */
-    }
-  else if (isnanf (ix))
-    {
-      return x - x;
-    }
-  else if (isinff (ix))
-    {
-      __set_errno (EDOM);
-      return x - x;
-    }
-
-  /* argument reduction needed */
-  else
-    {
-      n = __ieee754_rem_pio2f (x, y);
-      switch (n & 3)
-	{
-	case 0:
-	  return __kernel_sinf (y[0], y[1], 1);
-	case 1:
-	  return __kernel_cosf (y[0], y[1]);
-	case 2:
-	  return -__kernel_sinf (y[0], y[1], 1);
-	default:
-	  return -__kernel_cosf (y[0], y[1]);
-	}
-    }
-}
-
-weak_alias (__sinf, sinf)
diff --git a/sysdeps/powerpc/fpu/t_sqrt.c b/sysdeps/powerpc/fpu/t_sqrt.c
deleted file mode 100644
index 9ed7436ae6..0000000000
--- a/sysdeps/powerpc/fpu/t_sqrt.c
+++ /dev/null
@@ -1,144 +0,0 @@
-const float __t_sqrt[1024] = {
-0.7078,0.7064, 0.7092,0.7050, 0.7106,0.7037, 0.7119,0.7023, 0.7133,0.7010,
-0.7147,0.6996, 0.7160,0.6983, 0.7174,0.6970, 0.7187,0.6957, 0.7201,0.6943,
-0.7215,0.6930, 0.7228,0.6917, 0.7242,0.6905, 0.7255,0.6892, 0.7269,0.6879,
-0.7282,0.6866, 0.7295,0.6854, 0.7309,0.6841, 0.7322,0.6829, 0.7335,0.6816,
-0.7349,0.6804, 0.7362,0.6792, 0.7375,0.6779, 0.7388,0.6767, 0.7402,0.6755,
-0.7415,0.6743, 0.7428,0.6731, 0.7441,0.6719, 0.7454,0.6708, 0.7467,0.6696,
-0.7480,0.6684, 0.7493,0.6672, 0.7507,0.6661, 0.7520,0.6649, 0.7532,0.6638,
-0.7545,0.6627, 0.7558,0.6615, 0.7571,0.6604, 0.7584,0.6593, 0.7597,0.6582,
-0.7610,0.6570, 0.7623,0.6559, 0.7635,0.6548, 0.7648,0.6537, 0.7661,0.6527,
-0.7674,0.6516, 0.7686,0.6505, 0.7699,0.6494, 0.7712,0.6484, 0.7725,0.6473,
-0.7737,0.6462, 0.7750,0.6452, 0.7762,0.6441, 0.7775,0.6431, 0.7787,0.6421,
-0.7800,0.6410, 0.7812,0.6400, 0.7825,0.6390, 0.7837,0.6380, 0.7850,0.6370,
-0.7862,0.6359, 0.7875,0.6349, 0.7887,0.6339, 0.7900,0.6330, 0.7912,0.6320,
-0.7924,0.6310, 0.7937,0.6300, 0.7949,0.6290, 0.7961,0.6281, 0.7973,0.6271,
-0.7986,0.6261, 0.7998,0.6252, 0.8010,0.6242, 0.8022,0.6233, 0.8034,0.6223,
-0.8046,0.6214, 0.8059,0.6205, 0.8071,0.6195, 0.8083,0.6186, 0.8095,0.6177,
-0.8107,0.6168, 0.8119,0.6158, 0.8131,0.6149, 0.8143,0.6140, 0.8155,0.6131,
-0.8167,0.6122, 0.8179,0.6113, 0.8191,0.6104, 0.8203,0.6096, 0.8215,0.6087,
-0.8227,0.6078, 0.8238,0.6069, 0.8250,0.6060, 0.8262,0.6052, 0.8274,0.6043,
-0.8286,0.6035, 0.8297,0.6026, 0.8309,0.6017, 0.8321,0.6009, 0.8333,0.6000,
-0.8344,0.5992, 0.8356,0.5984, 0.8368,0.5975, 0.8379,0.5967, 0.8391,0.5959,
-0.8403,0.5950, 0.8414,0.5942, 0.8426,0.5934, 0.8437,0.5926, 0.8449,0.5918,
-0.8461,0.5910, 0.8472,0.5902, 0.8484,0.5894, 0.8495,0.5886, 0.8507,0.5878,
-0.8518,0.5870, 0.8530,0.5862, 0.8541,0.5854, 0.8552,0.5846, 0.8564,0.5838,
-0.8575,0.5831, 0.8587,0.5823, 0.8598,0.5815, 0.8609,0.5808, 0.8621,0.5800,
-0.8632,0.5792, 0.8643,0.5785, 0.8655,0.5777, 0.8666,0.5770, 0.8677,0.5762,
-0.8688,0.5755, 0.8700,0.5747, 0.8711,0.5740, 0.8722,0.5733, 0.8733,0.5725,
-0.8744,0.5718, 0.8756,0.5711, 0.8767,0.5703, 0.8778,0.5696, 0.8789,0.5689,
-0.8800,0.5682, 0.8811,0.5675, 0.8822,0.5667, 0.8833,0.5660, 0.8844,0.5653,
-0.8855,0.5646, 0.8866,0.5639, 0.8877,0.5632, 0.8888,0.5625, 0.8899,0.5618,
-0.8910,0.5611, 0.8921,0.5605, 0.8932,0.5598, 0.8943,0.5591, 0.8954,0.5584,
-0.8965,0.5577, 0.8976,0.5570, 0.8987,0.5564, 0.8998,0.5557, 0.9008,0.5550,
-0.9019,0.5544, 0.9030,0.5537, 0.9041,0.5530, 0.9052,0.5524, 0.9062,0.5517,
-0.9073,0.5511, 0.9084,0.5504, 0.9095,0.5498, 0.9105,0.5491, 0.9116,0.5485,
-0.9127,0.5478, 0.9138,0.5472, 0.9148,0.5465, 0.9159,0.5459, 0.9170,0.5453,
-0.9180,0.5446, 0.9191,0.5440, 0.9202,0.5434, 0.9212,0.5428, 0.9223,0.5421,
-0.9233,0.5415, 0.9244,0.5409, 0.9254,0.5403, 0.9265,0.5397, 0.9276,0.5391,
-0.9286,0.5384, 0.9297,0.5378, 0.9307,0.5372, 0.9318,0.5366, 0.9328,0.5360,
-0.9338,0.5354, 0.9349,0.5348, 0.9359,0.5342, 0.9370,0.5336, 0.9380,0.5330,
-0.9391,0.5324, 0.9401,0.5319, 0.9411,0.5313, 0.9422,0.5307, 0.9432,0.5301,
-0.9442,0.5295, 0.9453,0.5289, 0.9463,0.5284, 0.9473,0.5278, 0.9484,0.5272,
-0.9494,0.5266, 0.9504,0.5261, 0.9515,0.5255, 0.9525,0.5249, 0.9535,0.5244,
-0.9545,0.5238, 0.9556,0.5233, 0.9566,0.5227, 0.9576,0.5221, 0.9586,0.5216,
-0.9596,0.5210, 0.9607,0.5205, 0.9617,0.5199, 0.9627,0.5194, 0.9637,0.5188,
-0.9647,0.5183, 0.9657,0.5177, 0.9667,0.5172, 0.9677,0.5167, 0.9687,0.5161,
-0.9698,0.5156, 0.9708,0.5151, 0.9718,0.5145, 0.9728,0.5140, 0.9738,0.5135,
-0.9748,0.5129, 0.9758,0.5124, 0.9768,0.5119, 0.9778,0.5114, 0.9788,0.5108,
-0.9798,0.5103, 0.9808,0.5098, 0.9818,0.5093, 0.9828,0.5088, 0.9838,0.5083,
-0.9847,0.5077, 0.9857,0.5072, 0.9867,0.5067, 0.9877,0.5062, 0.9887,0.5057,
-0.9897,0.5052, 0.9907,0.5047, 0.9917,0.5042, 0.9926,0.5037, 0.9936,0.5032,
-0.9946,0.5027, 0.9956,0.5022, 0.9966,0.5017, 0.9976,0.5012, 0.9985,0.5007,
-0.9995,0.5002,
-1.0010,0.4995, 1.0029,0.4985, 1.0049,0.4976, 1.0068,0.4966, 1.0088,0.4957,
-1.0107,0.4947, 1.0126,0.4938, 1.0145,0.4928, 1.0165,0.4919, 1.0184,0.4910,
-1.0203,0.4901, 1.0222,0.4891, 1.0241,0.4882, 1.0260,0.4873, 1.0279,0.4864,
-1.0298,0.4855, 1.0317,0.4846, 1.0336,0.4837, 1.0355,0.4829, 1.0374,0.4820,
-1.0393,0.4811, 1.0411,0.4802, 1.0430,0.4794, 1.0449,0.4785, 1.0468,0.4777,
-1.0486,0.4768, 1.0505,0.4760, 1.0523,0.4751, 1.0542,0.4743, 1.0560,0.4735,
-1.0579,0.4726, 1.0597,0.4718, 1.0616,0.4710, 1.0634,0.4702, 1.0653,0.4694,
-1.0671,0.4686, 1.0689,0.4678, 1.0707,0.4670, 1.0726,0.4662, 1.0744,0.4654,
-1.0762,0.4646, 1.0780,0.4638, 1.0798,0.4630, 1.0816,0.4623, 1.0834,0.4615,
-1.0852,0.4607, 1.0870,0.4600, 1.0888,0.4592, 1.0906,0.4585, 1.0924,0.4577,
-1.0942,0.4570, 1.0960,0.4562, 1.0978,0.4555, 1.0995,0.4547, 1.1013,0.4540,
-1.1031,0.4533, 1.1049,0.4525, 1.1066,0.4518, 1.1084,0.4511, 1.1101,0.4504,
-1.1119,0.4497, 1.1137,0.4490, 1.1154,0.4483, 1.1172,0.4476, 1.1189,0.4469,
-1.1207,0.4462, 1.1224,0.4455, 1.1241,0.4448, 1.1259,0.4441, 1.1276,0.4434,
-1.1293,0.4427, 1.1311,0.4421, 1.1328,0.4414, 1.1345,0.4407, 1.1362,0.4401,
-1.1379,0.4394, 1.1397,0.4387, 1.1414,0.4381, 1.1431,0.4374, 1.1448,0.4368,
-1.1465,0.4361, 1.1482,0.4355, 1.1499,0.4348, 1.1516,0.4342, 1.1533,0.4335,
-1.1550,0.4329, 1.1567,0.4323, 1.1584,0.4316, 1.1600,0.4310, 1.1617,0.4304,
-1.1634,0.4298, 1.1651,0.4292, 1.1668,0.4285, 1.1684,0.4279, 1.1701,0.4273,
-1.1718,0.4267, 1.1734,0.4261, 1.1751,0.4255, 1.1768,0.4249, 1.1784,0.4243,
-1.1801,0.4237, 1.1817,0.4231, 1.1834,0.4225, 1.1850,0.4219, 1.1867,0.4213,
-1.1883,0.4208, 1.1900,0.4202, 1.1916,0.4196, 1.1932,0.4190, 1.1949,0.4185,
-1.1965,0.4179, 1.1981,0.4173, 1.1998,0.4167, 1.2014,0.4162, 1.2030,0.4156,
-1.2046,0.4151, 1.2063,0.4145, 1.2079,0.4139, 1.2095,0.4134, 1.2111,0.4128,
-1.2127,0.4123, 1.2143,0.4117, 1.2159,0.4112, 1.2175,0.4107, 1.2192,0.4101,
-1.2208,0.4096, 1.2224,0.4090, 1.2239,0.4085, 1.2255,0.4080, 1.2271,0.4075,
-1.2287,0.4069, 1.2303,0.4064, 1.2319,0.4059, 1.2335,0.4054, 1.2351,0.4048,
-1.2366,0.4043, 1.2382,0.4038, 1.2398,0.4033, 1.2414,0.4028, 1.2429,0.4023,
-1.2445,0.4018, 1.2461,0.4013, 1.2477,0.4008, 1.2492,0.4003, 1.2508,0.3998,
-1.2523,0.3993, 1.2539,0.3988, 1.2555,0.3983, 1.2570,0.3978, 1.2586,0.3973,
-1.2601,0.3968, 1.2617,0.3963, 1.2632,0.3958, 1.2648,0.3953, 1.2663,0.3949,
-1.2678,0.3944, 1.2694,0.3939, 1.2709,0.3934, 1.2725,0.3929, 1.2740,0.3925,
-1.2755,0.3920, 1.2771,0.3915, 1.2786,0.3911, 1.2801,0.3906, 1.2816,0.3901,
-1.2832,0.3897, 1.2847,0.3892, 1.2862,0.3887, 1.2877,0.3883, 1.2892,0.3878,
-1.2907,0.3874, 1.2923,0.3869, 1.2938,0.3865, 1.2953,0.3860, 1.2968,0.3856,
-1.2983,0.3851, 1.2998,0.3847, 1.3013,0.3842, 1.3028,0.3838, 1.3043,0.3834,
-1.3058,0.3829, 1.3073,0.3825, 1.3088,0.3820, 1.3103,0.3816, 1.3118,0.3812,
-1.3132,0.3807, 1.3147,0.3803, 1.3162,0.3799, 1.3177,0.3794, 1.3192,0.3790,
-1.3207,0.3786, 1.3221,0.3782, 1.3236,0.3778, 1.3251,0.3773, 1.3266,0.3769,
-1.3280,0.3765, 1.3295,0.3761, 1.3310,0.3757, 1.3324,0.3753, 1.3339,0.3748,
-1.3354,0.3744, 1.3368,0.3740, 1.3383,0.3736, 1.3397,0.3732, 1.3412,0.3728,
-1.3427,0.3724, 1.3441,0.3720, 1.3456,0.3716, 1.3470,0.3712, 1.3485,0.3708,
-1.3499,0.3704, 1.3514,0.3700, 1.3528,0.3696, 1.3542,0.3692, 1.3557,0.3688,
-1.3571,0.3684, 1.3586,0.3680, 1.3600,0.3676, 1.3614,0.3673, 1.3629,0.3669,
-1.3643,0.3665, 1.3657,0.3661, 1.3672,0.3657, 1.3686,0.3653, 1.3700,0.3650,
-1.3714,0.3646, 1.3729,0.3642, 1.3743,0.3638, 1.3757,0.3634, 1.3771,0.3631,
-1.3785,0.3627, 1.3800,0.3623, 1.3814,0.3620, 1.3828,0.3616, 1.3842,0.3612,
-1.3856,0.3609, 1.3870,0.3605, 1.3884,0.3601, 1.3898,0.3598, 1.3912,0.3594,
-1.3926,0.3590, 1.3940,0.3587, 1.3954,0.3583, 1.3968,0.3580, 1.3982,0.3576,
-1.3996,0.3572, 1.4010,0.3569, 1.4024,0.3565, 1.4038,0.3562, 1.4052,0.3558,
-1.4066,0.3555, 1.4080,0.3551, 1.4094,0.3548, 1.4108,0.3544, 1.4121,0.3541,
-1.4135,0.3537
-};
-
-
-/* Generated by: */
-#if 0
-#include <math.h>
-#include <stdio.h>
-#include <assert.h>
-
-int
-main(int argc, char **argv)
-{
-  int i, j;
-
-  printf ("const float __t_sqrt[1024] = {");
-  for (i = 0; i < 2; i++)
-    {
-      putchar('\n');
-      for (j = 0; j < 256; j++)
-	{
-	  double mval = j/512.0 + 0.5;
-	  double eval = i==0 ? 1.0 : 2.0;
-	  double ls = sqrt(mval*eval);
-	  double hs = sqrt((mval+1/512.0)*eval);
-	  double as = (ls+hs)*0.5;
-	  double lx = 1/(2.0*ls);
-	  double hx = 1/(2.0*hs);
-	  double ax = (lx+hx)*0.5;
-
-	  printf("%.4f,%.4f%s",as,ax,
-		 i*j==255 ? "\n" : j % 5 == 4 ? ",\n" : ", ");
-	  assert((hs-ls)/as < 1/256.0);
-	  assert((hx-lx)/ax < 1/256.0);
-	}
-    }
-  printf ("};\n");
-  return 0;
-}
-#endif /* 0 */
diff --git a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c b/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
deleted file mode 100644
index 4e3f90d4d3..0000000000
--- a/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/* Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ryan S. Arnold <rsa@us.ibm.com>
-                  Sean Curry <spcurry@us.ibm.com>
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ucontext.h>
-#include <unistd.h>
-#include <malloc.h>
-#include <link.h>
-#include <elf.h>
-#include <fpu_control.h>
-#include <sys/auxv.h>
-
-static ucontext_t ctx[3];
-
-
-volatile int global;
-
-
-static int back_in_main;
-
-
-volatile static ElfW(auxv_t) *auxv = NULL;
-
-ElfW(Addr) query_auxv(int type)
-{
-  FILE *auxv_f;
-  ElfW(auxv_t) auxv_struct;
-  ElfW(auxv_t) *auxv_temp;
-  int i = 0;
-
-  /* if the /proc/self/auxv file has not been manually copied into the heap
-     yet, then do it */
-
-  if(auxv == NULL)
-    {
-      auxv_f = fopen("/proc/self/auxv", "r");
-
-      if(auxv_f == 0)
-	{
-	  perror("Error opening file for reading");
-	  return 0;
-	}
-      auxv = (ElfW(auxv_t) *)malloc(getpagesize());
-
-      do
-	{
-	  fread(&auxv_struct, sizeof(ElfW(auxv_t)), 1, auxv_f);
-	  auxv[i] = auxv_struct;
-	  i++;
-	} while(auxv_struct.a_type != AT_NULL);
-    }
-
-  auxv_temp = (ElfW(auxv_t) *)auxv;
-  i = 0;
-  do
-    {
-      if(auxv_temp[i].a_type == type)
-	{
-	  return auxv_temp[i].a_un.a_val;
-	}
-      i++;
-    } while (auxv_temp[i].a_type != AT_NULL);
-
-  return 0;
-}
-
-typedef unsigned int di_fpscr_t __attribute__ ((__mode__ (__DI__)));
-typedef unsigned int si_fpscr_t __attribute__ ((__mode__ (__SI__)));
-
-#define _FPSCR_RESERVED 0xfffffff8ffffff04ULL
-
-#define _FPSCR_TEST0_DRN 0x0000000400000000ULL
-#define _FPSCR_TEST0_RN  0x0000000000000003ULL
-
-#define _FPSCR_TEST1_DRN 0x0000000300000000ULL
-#define _FPSCR_TEST1_RN  0x0000000000000002ULL
-
-/* Macros for accessing the hardware control word on Power6[x].  */
-#define _GET_DI_FPSCR(__fpscr)						\
-  ({union { double d; di_fpscr_t fpscr; } u;				\
-    register double fr;							\
-    __asm__ ("mffs %0" : "=f" (fr));					\
-    u.d = fr;								\
-    (__fpscr) = u.fpscr;						\
-    u.fpscr;								\
-  })
-
-/* We make sure to zero fp after we use it in order to prevent stale data
-   in an fp register from making a test-case pass erroneously.  */
-# define _SET_DI_FPSCR(__fpscr)						\
-  { union { double d; di_fpscr_t fpscr; } u;				\
-    register double fr;							\
-    u.fpscr = __fpscr;							\
-    fr = u.d;								\
-    /* Set the entire 64-bit FPSCR.  */					\
-    __asm__ (".machine push; "						\
-	     ".machine \"power6\"; "					\
-	     "mtfsf 255,%0,1,0; "					\
-	     ".machine pop" : : "f" (fr));				\
-    fr = 0.0;								\
-  }
-
-# define _GET_SI_FPSCR(__fpscr)						\
-  ({union { double d; di_fpscr_t fpscr; } u;				\
-    register double fr;							\
-    __asm__ ("mffs %0" : "=f" (fr));					\
-    u.d = fr;								\
-    (__fpscr) = (si_fpscr_t) u.fpscr;					\
-    (si_fpscr_t) u.fpscr;						\
-  })
-
-/* We make sure to zero fp after we use it in order to prevent stale data
-   in an fp register from making a test-case pass erroneously.  */
-# define _SET_SI_FPSCR(__fpscr)						\
-  { union { double d; di_fpscr_t fpscr; } u;				\
-    register double fr;							\
-    /* More-or-less arbitrary; this is a QNaN. */			\
-    u.fpscr = 0xfff80000ULL << 32;					\
-    u.fpscr |= __fpscr & 0xffffffffULL;					\
-    fr = u.d;								\
-    __asm__ ("mtfsf 255,%0" : : "f" (fr));				\
-    fr = 0.0;								\
-  }
-
-void prime_special_regs(int which)
-{
-  ElfW(Addr) a_val;
-
-  di_fpscr_t di_fpscr __attribute__ ((__aligned__(8)));
-
-  a_val = query_auxv(AT_HWCAP);
-  if(a_val == -1)
-    {
-      puts ("querying the auxv for the hwcap failed");
-      _exit (1);
-    }
-
-  /* Indicates a 64-bit FPSCR.  */
-  if (a_val & PPC_FEATURE_HAS_DFP)
-    {
-      _GET_DI_FPSCR(di_fpscr);
-
-      /* Overwrite the existing DRN and RN if there is one.  */
-      if (which == 0)
-        di_fpscr = ((di_fpscr & _FPSCR_RESERVED) | (_FPSCR_TEST0_DRN | _FPSCR_TEST0_RN));
-      else
-        di_fpscr = ((di_fpscr & _FPSCR_RESERVED) | (_FPSCR_TEST1_DRN | _FPSCR_TEST1_RN));
-      puts ("Priming 64-bit FPSCR with:");
-      printf("0x%.16llx\n",(unsigned long long int)di_fpscr);
-
-      _SET_DI_FPSCR(di_fpscr);
-    }
-  else
-    {
-      puts ("32-bit FPSCR found and will be tested.");
-      _GET_SI_FPSCR(di_fpscr);
-
-      /* Overwrite the existing RN if there is one.  */
-      if (which == 0)
-        di_fpscr = ((di_fpscr & _FPSCR_RESERVED) | (_FPSCR_TEST0_RN));
-      else
-        di_fpscr = ((di_fpscr & _FPSCR_RESERVED) | (_FPSCR_TEST1_RN));
-      puts ("Priming 32-bit FPSCR with:");
-      printf("0x%.8lx\n",(unsigned long int) di_fpscr);
-
-      _SET_SI_FPSCR(di_fpscr);
-    }
-}
-
-void clear_special_regs(void)
-{
-  ElfW(Addr) a_val;
-
-  di_fpscr_t di_fpscr __attribute__ ((__aligned__(8)));
-
-  union {
-	  double d;
-	  unsigned long long int lli;
-	  unsigned int li[2];
-  } dlli;
-
-  a_val = query_auxv(AT_HWCAP);
-  if(a_val == -1)
-    {
-      puts ("querying the auxv for the hwcap failed");
-      _exit (1);
-    }
-
-#if __WORDSIZE == 32
-  dlli.d = ctx[0].uc_mcontext.uc_regs->fpregs.fpscr;
-#else
-  dlli.d = ctx[0].uc_mcontext.fp_regs[32];
-#endif
-
-  puts("The FPSCR value saved in the ucontext_t is:");
-
-  /* Indicates a 64-bit FPSCR.  */
-  if (a_val & PPC_FEATURE_HAS_DFP)
-    {
-      printf("0x%.16llx\n",dlli.lli);
-      di_fpscr = 0x0;
-      puts ("Clearing the 64-bit FPSCR to:");
-      printf("0x%.16llx\n",(unsigned long long int) di_fpscr);
-
-      _SET_DI_FPSCR(di_fpscr);
-    }
-  else
-    {
-      printf("0x%.8x\n",(unsigned int) dlli.li[1]);
-      di_fpscr = 0x0;
-      puts ("Clearing the 32-bit FPSCR to:");
-      printf("0x%.8lx\n",(unsigned long int) di_fpscr);
-
-      _SET_SI_FPSCR(di_fpscr);
-    }
-}
-
-void test_special_regs(int which)
-{
-  ElfW(Addr) a_val;
-  unsigned long long int test;
-
-  di_fpscr_t di_fpscr __attribute__ ((__aligned__(8)));
-
-  a_val = query_auxv(AT_HWCAP);
-  if(a_val == -1)
-    {
-      puts ("querying the auxv for the hwcap failed");
-      _exit (2);
-    }
-
-  /* Indicates a 64-bit FPSCR.  */
-  if (a_val & PPC_FEATURE_HAS_DFP)
-    {
-      _GET_DI_FPSCR(di_fpscr);
-
-      if (which == 0)
-	puts ("After setcontext the 64-bit FPSCR contains:");
-      else
-	puts ("After swapcontext the 64-bit FPSCR contains:");
-
-      printf("0x%.16llx\n",(unsigned long long int) di_fpscr);
-      test = (_FPSCR_TEST0_DRN | _FPSCR_TEST0_RN);
-      if((di_fpscr & (test)) != (test))
-        {
-	  printf ("%s: DRN and RN bits set before getcontext were not preserved across [set|swap]context call: %m",__FUNCTION__);
-	  _exit (3);
-        }
-    }
-  else
-    {
-      _GET_SI_FPSCR(di_fpscr);
-      if (which == 0)
-	puts ("After setcontext the 32-bit FPSCR contains:");
-      else
-	puts ("After swapcontext the 32-bit FPSCR contains:");
-
-      printf("0x%.8lx\n",(unsigned long int) di_fpscr);
-      test = _FPSCR_TEST0_RN;
-      if((di_fpscr & test) != test)
-        {
-	  printf ("%s: RN bit set before getcontext was not preserved across [set|swap]context call: %m",__FUNCTION__);
-	  _exit (4);
-        }
-    }
-}
-
-
-static void
-check_called (void)
-{
-  if (back_in_main == 0)
-    {
-      puts ("program did not reach main again");
-      _exit (5);
-    }
-}
-
-
-int
-main (void)
-{
-  atexit (check_called);
-
-  puts ("priming the FPSCR with a marker");
-  prime_special_regs (0);
-
-  puts ("making contexts");
-  if (getcontext (&ctx[0]) != 0)
-    {
-      if (errno == ENOSYS)
-	{
-	  back_in_main = 1;
-	  exit (0);
-	}
-
-      printf ("%s: getcontext: %m\n", __FUNCTION__);
-      exit (6);
-    }
-
-  /* Play some tricks with this context.  */
-  if (++global == 1)
-    {
-    clear_special_regs ( );
-    if (setcontext (&ctx[0]) != 0)
-      {
-	printf ("%s: setcontext: %m\n", __FUNCTION__);
-	exit (7);
-      }
-    }
-  if (global != 2)
-    {
-      printf ("%s: 'global' not incremented twice\n", __FUNCTION__);
-      exit (8);
-    }
-
-  test_special_regs (0);
-
-  global = 0;
-  if (getcontext (&ctx[0]) != 0)
-    {
-      printf ("%s: getcontext: %m\n", __FUNCTION__);
-      exit (9);
-    }
-
-  if (++global == 1)
-    {
-      puts ("priming the FPSCR with a marker");
-      prime_special_regs (1);
-
-      puts ("swapping contexts");
-      if (swapcontext (&ctx[1], &ctx[0]) != 0)
-        {
-          printf ("%s: swapcontext: %m\n", __FUNCTION__);
-          exit (9);
-        }
-    }
-  if (global != 2)
-    {
-      printf ("%s: 'global' not incremented twice\n", __FUNCTION__);
-      exit (10);
-    }
-
-  test_special_regs (1);
-
-  puts ("back at main program");
-  back_in_main = 1;
-
-  puts ("test succeeded");
-  return 0;
-}
diff --git a/sysdeps/powerpc/fpu_control.h b/sysdeps/powerpc/fpu_control.h
deleted file mode 100644
index 842cbfa03f..0000000000
--- a/sysdeps/powerpc/fpu_control.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* FPU control word definitions.  PowerPC version.
-   Copyright (C) 1996-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FPU_CONTROL_H
-#define _FPU_CONTROL_H
-
-#ifdef _SOFT_FLOAT
-
-# define _FPU_RESERVED 0xffffffff
-# define _FPU_DEFAULT  0x00000000 /* Default value.  */
-typedef unsigned int fpu_control_t;
-# define _FPU_GETCW(cw) (cw) = 0
-# define _FPU_SETCW(cw) (void) (cw)
-extern fpu_control_t __fpu_control;
-
-#elif defined __NO_FPRS__ /* e500 */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
-# define _FPU_RC_DOWN    0x03
-# define _FPU_RC_UP      0x02
-# define _FPU_RC_ZERO    0x01
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM  0x10 /* zero divide */
-# define _FPU_MASK_OM  0x04 /* overflow */
-# define _FPU_MASK_UM  0x08 /* underflow */
-# define _FPU_MASK_XM  0x40 /* inexact */
-# define _FPU_MASK_IM  0x20 /* invalid operation */
-
-# define _FPU_RESERVED 0x00c10080 /* These bits are reserved and not changed. */
-
-/* Correct IEEE semantics require traps to be enabled at the hardware
-   level; the kernel then does the emulation and determines whether
-   generation of signals from those traps was enabled using prctl.  */
-# define _FPU_DEFAULT  0x0000003c /* Default value.  */
-# define _FPU_IEEE     _FPU_DEFAULT
-
-/* Type of the control word.  */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word.  */
-# define _FPU_GETCW(cw) \
-  __asm__ volatile ("mfspefscr %0" : "=r" (cw))
-# define _FPU_SETCW(cw) \
-  __asm__ volatile ("mtspefscr %0" : : "r" (cw))
-
-/* Default control word set at startup.  */
-extern fpu_control_t __fpu_control;
-
-#else /* PowerPC 6xx floating-point.  */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00   /* RECOMMENDED */
-# define _FPU_RC_DOWN    0x03
-# define _FPU_RC_UP      0x02
-# define _FPU_RC_ZERO    0x01
-
-# define _FPU_MASK_NI  0x04 /* non-ieee mode */
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM  0x10 /* zero divide */
-# define _FPU_MASK_OM  0x40 /* overflow */
-# define _FPU_MASK_UM  0x20 /* underflow */
-# define _FPU_MASK_XM  0x08 /* inexact */
-# define _FPU_MASK_IM  0x80 /* invalid operation */
-
-# define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */
-
-/* The fdlibm code requires no interrupts for exceptions.  */
-# define _FPU_DEFAULT  0x00000000 /* Default value.  */
-
-/* IEEE:  same as above, but (some) exceptions;
-   we leave the 'inexact' exception off.
- */
-# define _FPU_IEEE     0x000000f0
-
-/* Type of the control word.  */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word.  */
-# define _FPU_GETCW(cw)						\
-  ({union { double __d; unsigned long long __ll; } __u;		\
-    register double __fr;					\
-    __asm__ ("mffs %0" : "=f" (__fr));				\
-    __u.__d = __fr;						\
-    (cw) = (fpu_control_t) __u.__ll;				\
-    (fpu_control_t) __u.__ll;					\
-  })
-
-# define _FPU_SETCW(cw)						\
-  { union { double __d; unsigned long long __ll; } __u;		\
-    register double __fr;					\
-    __u.__ll = 0xfff80000LL << 32; /* This is a QNaN.  */	\
-    __u.__ll |= (cw) & 0xffffffffLL;				\
-    __fr = __u.__d;						\
-    __asm__ ("mtfsf 255,%0" : : "f" (__fr));			\
-  }
-
-/* Default control word set at startup.  */
-extern fpu_control_t __fpu_control;
-
-#endif /* PowerPC 6xx floating-point.  */
-
-#endif /* _FPU_CONTROL_H */
diff --git a/sysdeps/powerpc/gccframe.h b/sysdeps/powerpc/gccframe.h
deleted file mode 100644
index 87edbae05b..0000000000
--- a/sysdeps/powerpc/gccframe.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Definition of object in frame unwind info.  powerpc version.
-   Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define DWARF_FRAME_REGISTERS 77
-
-#include <sysdeps/generic/gccframe.h>
diff --git a/sysdeps/powerpc/hwcapinfo.c b/sysdeps/powerpc/hwcapinfo.c
deleted file mode 100644
index 82ad222c36..0000000000
--- a/sysdeps/powerpc/hwcapinfo.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* powerpc HWCAP/HWCAP2 and AT_PLATFORM data pre-processing.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <unistd.h>
-#include <shlib-compat.h>
-#include <dl-procinfo.h>
-
-uint64_t __tcb_hwcap __attribute__ ((visibility ("hidden")));
-uint32_t __tcb_platform __attribute__ ((visibility ("hidden")));
-
-/* This function parses the HWCAP/HWCAP2 fields, adding the previous supported
-   ISA bits, as well as converting the AT_PLATFORM string to a number.  This
-   data is stored in two global variables that can be used later by the
-   powerpc-specific code to store it into the TCB.  */
-void
-__tcb_parse_hwcap_and_convert_at_platform (void)
-{
-
-  uint64_t h1, h2;
-
-  /* Read AT_PLATFORM string from auxv and convert it to a number.  */
-  __tcb_platform = _dl_string_platform (GLRO (dl_platform));
-
-  /* Read HWCAP and HWCAP2 from auxv.  */
-  h1 = GLRO (dl_hwcap);
-  h2 = GLRO (dl_hwcap2);
-
-  /* hwcap contains only the latest supported ISA, the code checks which is
-     and fills the previous supported ones.  */
-
-  if (h2 & PPC_FEATURE2_ARCH_2_07)
-    h1 |= PPC_FEATURE_ARCH_2_06
-       | PPC_FEATURE_ARCH_2_05
-       | PPC_FEATURE_POWER5_PLUS
-       | PPC_FEATURE_POWER5
-       | PPC_FEATURE_POWER4;
-  else if (h1 & PPC_FEATURE_ARCH_2_06)
-    h1 |= PPC_FEATURE_ARCH_2_05
-       | PPC_FEATURE_POWER5_PLUS
-       | PPC_FEATURE_POWER5
-       | PPC_FEATURE_POWER4;
-  else if (h1 & PPC_FEATURE_ARCH_2_05)
-    h1 |= PPC_FEATURE_POWER5_PLUS
-       | PPC_FEATURE_POWER5
-       | PPC_FEATURE_POWER4;
-  else if (h1 & PPC_FEATURE_POWER5_PLUS)
-    h1 |= PPC_FEATURE_POWER5
-       | PPC_FEATURE_POWER4;
-  else if (h1 & PPC_FEATURE_POWER5)
-    h1 |= PPC_FEATURE_POWER4;
-
-  /* Consolidate both HWCAP and HWCAP2 into a single doubleword so that
-     we can read both in a single load later.  */
-  __tcb_hwcap = h2;
-  __tcb_hwcap = (h1 << 32) | __tcb_hwcap;
-
-}
-#if IS_IN (rtld)
-versioned_symbol (ld, __tcb_parse_hwcap_and_convert_at_platform, \
-		  __parse_hwcap_and_convert_at_platform, GLIBC_2_23);
-#endif
-
-/* Export __parse_hwcap_and_convert_at_platform in libc.a.  This is used by
-   GCC to make sure that the HWCAP/Platform bits are stored in the TCB when
-   using __builtin_cpu_is()/__builtin_cpu_supports() in the static case.  */
-#ifndef SHARED
-weak_alias (__tcb_parse_hwcap_and_convert_at_platform, \
-	    __parse_hwcap_and_convert_at_platform);
-#endif
diff --git a/sysdeps/powerpc/hwcapinfo.h b/sysdeps/powerpc/hwcapinfo.h
deleted file mode 100644
index 830948a855..0000000000
--- a/sysdeps/powerpc/hwcapinfo.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* powerpc HWCAP/HWCAP2 and AT_PLATFORM data pre-processing.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdint.h>
-
-#ifndef HWCAPINFO_H
-# define HWCAPINFO_H
-
-extern uint64_t __tcb_hwcap  attribute_hidden;
-extern uint32_t __tcb_platform attribute_hidden;
-
-extern void __tcb_parse_hwcap_and_convert_at_platform (void);
-
-#endif
diff --git a/sysdeps/powerpc/ifunc-sel.h b/sysdeps/powerpc/ifunc-sel.h
deleted file mode 100644
index bdb00bf2c6..0000000000
--- a/sysdeps/powerpc/ifunc-sel.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Used by the elf ifunc tests.  */
-#ifndef ELF_IFUNC_SEL_H
-#define ELF_IFUNC_SEL_H 1
-
-extern int global;
-
-static inline void *
-inhibit_stack_protector
-ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void))
-{
-  register void *ret __asm__ ("r3");
-  __asm__ ("mflr 12\n\t"
-	   "bcl 20,31,1f\n"
-	   "1:\tmflr 11\n\t"
-	   "mtlr 12\n\t"
-	   "addis 12,11,global-1b@ha\n\t"
-	   "lwz 12,global-1b@l(12)\n\t"
-	   "addis %0,11,%2-1b@ha\n\t"
-	   "addi %0,%0,%2-1b@l\n\t"
-	   "cmpwi 12,1\n\t"
-	   "beq 2f\n\t"
-	   "addis %0,11,%3-1b@ha\n\t"
-	   "addi %0,%0,%3-1b@l\n\t"
-	   "cmpwi 12,-1\n\t"
-	   "beq 2f\n\t"
-	   "addis %0,11,%4-1b@ha\n\t"
-	   "addi %0,%0,%4-1b@l\n\t"
-	   "2:"
-	   : "=r" (ret)
-	   : "i" (&global), "i" (f1), "i" (f2), "i" (f3)
-	   : "11", "12", "cr0");
-  return ret;
-}
-
-static inline void *
-inhibit_stack_protector
-ifunc_one (int (*f1) (void))
-{
-  register void *ret __asm__ ("r3");
-  __asm__ ("mflr 12\n\t"
-	   "bcl 20,31,1f\n"
-	   "1:\tmflr %0\n\t"
-	   "mtlr 12\n\t"
-	   "addis %0,%0,%1-1b@ha\n\t"
-	   "addi %0,%0,%1-1b@l"
-	   : "=r" (ret)
-	   : "i" (f1)
-	   : "12");
-  return ret;
-}
-#endif
diff --git a/sysdeps/powerpc/jmpbuf-offsets.h b/sysdeps/powerpc/jmpbuf-offsets.h
deleted file mode 100644
index e748a35f4d..0000000000
--- a/sysdeps/powerpc/jmpbuf-offsets.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Private macros for accessing __jmp_buf contents.  PowerPC version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define JB_GPR1   0  /* Also known as the stack pointer */
-#define JB_GPR2   1
-#define JB_LR     2  /* The address we will return to */
-#if __WORDSIZE == 64
-# define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18*2 words total.  */
-# define JB_CR     21 /* Shared dword with VRSAVE.  CR word at offset 172.  */
-# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total.  */
-# define JB_SIZE   (64 * 8) /* As per PPC64-VMX ABI.  */
-# define JB_VRSAVE 21 /* Shared dword with CR.  VRSAVE word at offset 168.  */
-# define JB_VRS    40 /* VRs 20 through 31 are saved, 12*4 words total.  */
-#else
-# define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total.  */
-# define JB_CR     21 /* Condition code registers.  */
-# define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total.  */
-# define JB_SIZE   ((64 + (12 * 4)) * 4)
-# define JB_VRSAVE 62
-# define JB_VRS    64
-#endif
diff --git a/sysdeps/powerpc/jmpbuf-unwind.h b/sysdeps/powerpc/jmpbuf-unwind.h
deleted file mode 100644
index 96e2af9e3f..0000000000
--- a/sysdeps/powerpc/jmpbuf-unwind.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <setjmp.h>
-#include <jmpbuf-offsets.h>
-#include <stdint.h>
-#include <unwind.h>
-#include <sysdep.h>
-
-/* Test if longjmp to JMPBUF would unwind the frame
-   containing a local variable at ADDRESS.  */
-#define _JMPBUF_UNWINDS(jmpbuf, address, demangle)			\
-  ((void *) (address) < (void *) demangle ((jmpbuf)[JB_GPR1]))
-
-#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
-  _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
-
-static inline uintptr_t __attribute__ ((unused))
-_jmpbuf_sp (__jmp_buf regs)
-{
-  uintptr_t sp = regs[JB_GPR1];
-#ifdef PTR_DEMANGLE
-  PTR_DEMANGLE (sp);
-#endif
-  return sp;
-}
-
-#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
-  ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj))
-
-/* We use the normal longjmp for unwinding.  */
-#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
diff --git a/sysdeps/powerpc/ldsodefs.h b/sysdeps/powerpc/ldsodefs.h
deleted file mode 100644
index 466de797fc..0000000000
--- a/sysdeps/powerpc/ldsodefs.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Run-time dynamic linker data structures for loaded ELF shared objects.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_POWERPC_LDSODEFS_H
-#define	_POWERPC_LDSODEFS_H	1
-
-#include <elf.h>
-
-struct La_ppc32_regs;
-struct La_ppc32_retval;
-struct La_ppc64_regs;
-struct La_ppc64_retval;
-struct La_ppc64v2_regs;
-struct La_ppc64v2_retval;
-
-#define ARCH_PLTENTER_MEMBERS						\
-    Elf32_Addr (*ppc32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
-				      uintptr_t *, struct La_ppc32_regs *, \
-				      unsigned int *, const char *name,	\
-				      long int *framesizep);		\
-    Elf64_Addr (*ppc64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *, \
-				      uintptr_t *, struct La_ppc64_regs *, \
-				      unsigned int *, const char *name,	\
-				      long int *framesizep);		\
-    Elf64_Addr (*ppc64v2_gnu_pltenter) (Elf64_Sym *, unsigned int,	\
-					uintptr_t *,  uintptr_t *,	\
-					struct La_ppc64v2_regs *,	\
-					unsigned int *, const char *name, \
-					long int *framesizep)
-
-#define ARCH_PLTEXIT_MEMBERS						\
-    unsigned int (*ppc32_gnu_pltexit) (Elf32_Sym *, unsigned int,	\
-				       uintptr_t *,			\
-				       uintptr_t *,			\
-				       const struct La_ppc32_regs *,	\
-				       struct La_ppc32_retval *,	\
-				       const char *);			\
-    unsigned int (*ppc64_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
-				       uintptr_t *,			\
-				       uintptr_t *,			\
-				       const struct La_ppc64_regs *,	\
-				       struct La_ppc64_retval *,	\
-				       const char *);			\
-    unsigned int (*ppc64v2_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
-					 uintptr_t *,			\
-					 uintptr_t *,			\
-					 const struct La_ppc64v2_regs *,\
-					 struct La_ppc64v2_retval *,	\
-					 const char *)
-
-#include_next <ldsodefs.h>
-
-#endif
diff --git a/sysdeps/powerpc/libc-tls.c b/sysdeps/powerpc/libc-tls.c
deleted file mode 100644
index 76d5c9abb9..0000000000
--- a/sysdeps/powerpc/libc-tls.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker.  PowerPC version.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <csu/libc-tls.c>
-#include <dl-tls.h>
-
-/* On powerpc, the linker usually optimizes code sequences used to access
-   Thread Local Storage.  However, when the user disables these optimizations
-   by passing --no-tls-optimze to the linker, we need to provide __tls_get_addr
-   in static libc in order to avoid undefined references to that symbol.  */
-
-void *
-__tls_get_addr (tls_index *ti)
-{
-  dtv_t *dtv = THREAD_DTV ();
-  return (char *) dtv[1].pointer.val + ti->ti_offset + TLS_DTV_OFFSET;
-}
diff --git a/sysdeps/powerpc/locale-defines.sym b/sysdeps/powerpc/locale-defines.sym
deleted file mode 100644
index 5c5379c39f..0000000000
--- a/sysdeps/powerpc/locale-defines.sym
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <locale/localeinfo.h>
-
---
-
-LOCALE_CTYPE_TOLOWER	offsetof (struct __locale_struct, __ctype_tolower)
-LOCALE_CTYPE_TOUPPER	offsetof (struct __locale_struct, __ctype_toupper)
-_NL_CTYPE_NONASCII_CASE
-LOCALE_DATA_VALUES	offsetof (struct __locale_data, values)
-SIZEOF_VALUES		sizeof (((struct __locale_data *) 0)->values[0])
diff --git a/sysdeps/powerpc/longjmp.c b/sysdeps/powerpc/longjmp.c
deleted file mode 100644
index bd3ed8c22b..0000000000
--- a/sysdeps/powerpc/longjmp.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Versioned copy of sysdeps/generic/longjmp.c modified for AltiVec support. */
-
-#include  <shlib-compat.h>
-#include <stddef.h>
-#include <setjmp.h>
-#include <signal.h>
-
-extern void __vmx__longjmp (__jmp_buf __env, int __val)
-     __attribute__ ((noreturn));
-extern void __vmx__libc_longjmp (sigjmp_buf env, int val)
-     __attribute__ ((noreturn));
-libc_hidden_proto (__vmx__libc_longjmp)
-
-/* Set the signal mask to the one specified in ENV, and jump
-   to the position specified in ENV, causing the setjmp
-   call there to return VAL, or 1 if VAL is 0.  */
-void
-__vmx__libc_siglongjmp (sigjmp_buf env, int val)
-{
-  /* Perform any cleanups needed by the frames being unwound.  */
-  _longjmp_unwind (env, val);
-
-  if (env[0].__mask_was_saved)
-    /* Restore the saved signal mask.  */
-    (void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
-			  (sigset_t *) NULL);
-
-  /* Call the machine-dependent function to restore machine state.  */
-  __vmx__longjmp (env[0].__jmpbuf, val ?: 1);
-}
-
-strong_alias (__vmx__libc_siglongjmp, __vmx__libc_longjmp)
-libc_hidden_def (__vmx__libc_longjmp)
-weak_alias (__vmx__libc_siglongjmp, __vmx_longjmp)
-weak_alias (__vmx__libc_siglongjmp, __vmxlongjmp)
-weak_alias (__vmx__libc_siglongjmp, __vmxsiglongjmp)
-
-
-default_symbol_version (__vmx__libc_longjmp, __libc_longjmp, GLIBC_PRIVATE);
-default_symbol_version (__vmx__libc_siglongjmp, __libc_siglongjmp, GLIBC_PRIVATE);
-versioned_symbol (libc, __vmx_longjmp, _longjmp, GLIBC_2_3_4);
-versioned_symbol (libc, __vmxlongjmp, longjmp, GLIBC_2_3_4);
-versioned_symbol (libc, __vmxsiglongjmp, siglongjmp, GLIBC_2_3_4);
diff --git a/sysdeps/powerpc/machine-gmon.h b/sysdeps/powerpc/machine-gmon.h
deleted file mode 100644
index 3078426a6d..0000000000
--- a/sysdeps/powerpc/machine-gmon.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* PowerPC-specific implementation of profiling support.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* We need a special version of the `mcount' function because it has
-   to preserve more registers than your usual function.  */
-
-void __mcount_internal (unsigned long frompc, unsigned long selfpc);
-
-#define _MCOUNT_DECL(frompc, selfpc) \
-void __mcount_internal (unsigned long frompc, unsigned long selfpc)
-
-
-/* Define MCOUNT as empty since we have the implementation in another
-   file.  */
-#define MCOUNT
diff --git a/sysdeps/powerpc/math-tests.h b/sysdeps/powerpc/math-tests.h
deleted file mode 100644
index f7ba200cfc..0000000000
--- a/sysdeps/powerpc/math-tests.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Configuration for math tests.  PowerPC version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* On PowerPC, in versions of GCC up to at least 4.7.2, a type cast -- which is
-   a IEEE 754-2008 general-computational convertFormat operation (IEEE
-   754-2008, 5.4.2) -- does not turn a sNaN into a qNaN (whilst raising an
-   INVALID exception), which is contrary to IEEE 754-2008 5.1 and 7.2.  This
-   renders certain tests infeasible in this scenario.
-   <http://gcc.gnu.org/PR56828>.  */
-#define SNAN_TESTS_TYPE_CAST	0
-
-#ifndef __NO_FPRS__
-/* Setting exception flags in FPSCR results in enabled traps for those
-   exceptions being taken.  */
-# define EXCEPTION_SET_FORCES_TRAP 1
-#endif
-
-#include_next <math-tests.h>
diff --git a/sysdeps/powerpc/memusage.h b/sysdeps/powerpc/memusage.h
deleted file mode 100644
index 69f098006a..0000000000
--- a/sysdeps/powerpc/memusage.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define GETSP() ({ register uintptr_t stack_ptr asm ("%r1"); stack_ptr; })
-
-#include <sysdeps/generic/memusage.h>
diff --git a/sysdeps/powerpc/mp_clz_tab.c b/sysdeps/powerpc/mp_clz_tab.c
deleted file mode 100644
index 4b5f29bfe5..0000000000
--- a/sysdeps/powerpc/mp_clz_tab.c
+++ /dev/null
@@ -1 +0,0 @@
-/* __clz_tab not needed on powerpc.  */
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
deleted file mode 100644
index 35517b63a1..0000000000
--- a/sysdeps/powerpc/nofpu/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-# Makefile fragment for PowerPC with no FPU.
-
-ifeq ($(subdir),soft-fp)
-sysdep_routines += $(gcc-single-routines) $(gcc-double-routines) \
-		   sim-full atomic-feholdexcept atomic-feclearexcept \
-		   atomic-feupdateenv flt-rounds
-endif
-
-ifeq ($(subdir),math)
-libm-support += fenv_const
-CPPFLAGS += -I../soft-fp/
-# The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
-# "expand_abs wrong default code for floating point"
-# As this is not a regression, a fix is not likely to go into
-# gcc-4.1.1 and may be too late for gcc-4.2.  So we need these flags
-# until the fix in a gcc release and glibc drops support for earlier
-# versions of gcc.
-CFLAGS-e_atan2l.c += -fno-builtin-fabsl
-CFLAGS-e_hypotl.c += -fno-builtin-fabsl
-CFLAGS-e_powl.c += -fno-builtin-fabsl
-CFLAGS-s_ccoshl.c += -fno-builtin-fabsl
-CFLAGS-s_csinhl.c += -fno-builtin-fabsl
-CFLAGS-s_clogl.c += -fno-builtin-fabsl
-CFLAGS-s_clog10l.c += -fno-builtin-fabsl
-CFLAGS-s_csinl.c += -fno-builtin-fabsl
-CFLAGS-s_csqrtl.c += -fno-builtin-fabsl
-CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
-CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
-CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
-CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
-CFLAGS-w_j1l_compat.c += -fno-builtin-fabsl
-endif
diff --git a/sysdeps/powerpc/nofpu/Subdirs b/sysdeps/powerpc/nofpu/Subdirs
deleted file mode 100644
index 87eadf3024..0000000000
--- a/sysdeps/powerpc/nofpu/Subdirs
+++ /dev/null
@@ -1 +0,0 @@
-soft-fp
diff --git a/sysdeps/powerpc/nofpu/Versions b/sysdeps/powerpc/nofpu/Versions
deleted file mode 100644
index 9f569bd1a5..0000000000
--- a/sysdeps/powerpc/nofpu/Versions
+++ /dev/null
@@ -1,29 +0,0 @@
-libc {
-  GLIBC_2.3.2 {
-    __sim_exceptions; __sim_disabled_exceptions; __sim_round_mode;
-    __adddf3; __addsf3; __divdf3; __divsf3; __eqdf2; __eqsf2;
-    __extendsfdf2; __fixdfsi; __fixsfsi;
-    __fixunsdfsi; __fixunssfsi;
-    __floatsidf; __floatsisf;
-    __gedf2; __gesf2; __ledf2; __lesf2; __muldf3; __mulsf3;
-    __negdf2; __negsf2; __sqrtdf2; __sqrtsf2; __subdf3;
-    __subsf3; __truncdfsf2;
-  }
-  GLIBC_2.4 {
-    __floatundidf; __floatundisf;
-    __floatunsidf; __floatunsisf;
-    __unorddf2; __unordsf2;
-    __nedf2; __nesf2;
-    __gtdf2; __gtsf2;
-    __ltdf2; __ltsf2;
-  }
-  GLIBC_2.19 {
-    __atomic_feholdexcept; __atomic_feclearexcept; __atomic_feupdateenv;
-    __flt_rounds;
-  }
-  GLIBC_PRIVATE {
-    __sim_exceptions_thread;
-    __sim_disabled_exceptions_thread;
-    __sim_round_mode_thread;
-  }
-}
diff --git a/sysdeps/powerpc/nofpu/atomic-feclearexcept.c b/sysdeps/powerpc/nofpu/atomic-feclearexcept.c
deleted file mode 100644
index 6946e19337..0000000000
--- a/sysdeps/powerpc/nofpu/atomic-feclearexcept.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Clear floating-point exceptions for atomic compound assignment.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-void
-__atomic_feclearexcept (void)
-{
-  /* This function postdates the global variables being turned into
-     compat symbols, so no need to set them.  */
-  __sim_exceptions_thread = 0;
-}
diff --git a/sysdeps/powerpc/nofpu/atomic-feholdexcept.c b/sysdeps/powerpc/nofpu/atomic-feholdexcept.c
deleted file mode 100644
index 50cf1b96ae..0000000000
--- a/sysdeps/powerpc/nofpu/atomic-feholdexcept.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Store current floating-point environment and clear exceptions for
-   atomic compound assignment.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-void
-__atomic_feholdexcept (fenv_t *envp)
-{
-  fenv_union_t u;
-
-  u.l[0] = __sim_exceptions_thread;
-  /* The rounding mode is not changed by arithmetic, so no need to
-     save it.  */
-  u.l[1] = __sim_disabled_exceptions_thread;
-  *envp = u.fenv;
-
-  /* This function postdates the global variables being turned into
-     compat symbols, so no need to set them.  */
-  __sim_exceptions_thread = 0;
-  __sim_disabled_exceptions_thread = FE_ALL_EXCEPT;
-}
diff --git a/sysdeps/powerpc/nofpu/atomic-feupdateenv.c b/sysdeps/powerpc/nofpu/atomic-feupdateenv.c
deleted file mode 100644
index e74178ff12..0000000000
--- a/sysdeps/powerpc/nofpu/atomic-feupdateenv.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Install given floating-point environment and raise exceptions for
-   atomic compound assignment.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <signal.h>
-
-void
-__atomic_feupdateenv (const fenv_t *envp)
-{
-  fenv_union_t u;
-  int saved_exceptions = __sim_exceptions_thread;
-
-  /* This function postdates the global variables being turned into
-     compat symbols, so no need to set them.  */
-  u.fenv = *envp;
-  __sim_exceptions_thread |= u.l[0];
-  __sim_disabled_exceptions_thread = u.l[1];
-  if (saved_exceptions & ~__sim_disabled_exceptions_thread)
-    raise (SIGFPE);
-}
diff --git a/sysdeps/powerpc/nofpu/fclrexcpt.c b/sysdeps/powerpc/nofpu/fclrexcpt.c
deleted file mode 100644
index 1c8e578afc..0000000000
--- a/sysdeps/powerpc/nofpu/fclrexcpt.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Clear floating-point exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__feclearexcept (int x)
-{
-  __sim_exceptions_thread &= ~x;
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feclearexcept, feclearexcept)
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fedisblxcpt.c b/sysdeps/powerpc/nofpu/fedisblxcpt.c
deleted file mode 100644
index 6514f45a73..0000000000
--- a/sysdeps/powerpc/nofpu/fedisblxcpt.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Disable exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <fenv.h>
-
-int
-fedisableexcept (int x)
-{
-  int old_exceptions = ~__sim_disabled_exceptions_thread & FE_ALL_EXCEPT;
-
-  __sim_disabled_exceptions_thread |= x;
-  SIM_SET_GLOBAL (__sim_disabled_exceptions_global,
-		  __sim_disabled_exceptions_thread);
-
-  return old_exceptions;
-}
diff --git a/sysdeps/powerpc/nofpu/feenablxcpt.c b/sysdeps/powerpc/nofpu/feenablxcpt.c
deleted file mode 100644
index cd71e4e9cd..0000000000
--- a/sysdeps/powerpc/nofpu/feenablxcpt.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Enable exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-supp.h"
-#include <fenv.h>
-
-int
-feenableexcept (int exceptions)
-{
-  int old_exceptions = ~__sim_disabled_exceptions_thread & FE_ALL_EXCEPT;
-
-  __sim_disabled_exceptions_thread &= ~exceptions;
-  SIM_SET_GLOBAL (__sim_disabled_exceptions_global,
-		  __sim_disabled_exceptions_thread);
-
-  return old_exceptions;
-}
diff --git a/sysdeps/powerpc/nofpu/fegetenv.c b/sysdeps/powerpc/nofpu/fegetenv.c
deleted file mode 100644
index 079946c58e..0000000000
--- a/sysdeps/powerpc/nofpu/fegetenv.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Store current floating-point environment (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002, 2010.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fegetenv (fenv_t *envp)
-{
-  fenv_union_t u;
-
-  u.l[0] = __sim_exceptions_thread;
-  u.l[0] |= __sim_round_mode_thread;
-  u.l[1] = __sim_disabled_exceptions_thread;
-
-  *envp = u.fenv;
-
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fegetenv)
-libm_hidden_ver (__fegetenv, fegetenv)
-versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fegetexcept.c b/sysdeps/powerpc/nofpu/fegetexcept.c
deleted file mode 100644
index 36f4f45b36..0000000000
--- a/sysdeps/powerpc/nofpu/fegetexcept.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Get floating-point exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-fegetexcept (void)
-{
-  return (__sim_disabled_exceptions_thread ^ FE_ALL_EXCEPT) & FE_ALL_EXCEPT;
-}
diff --git a/sysdeps/powerpc/nofpu/fegetmode.c b/sysdeps/powerpc/nofpu/fegetmode.c
deleted file mode 100644
index 2346858eda..0000000000
--- a/sysdeps/powerpc/nofpu/fegetmode.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Store current floating-point control modes.  PowerPC soft-float version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-fegetmode (femode_t *modep)
-{
-  fenv_union_t u;
-
-  u.l[0] = __sim_round_mode_thread;
-  u.l[1] = __sim_disabled_exceptions_thread;
-
-  *modep = u.fenv;
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/nofpu/fegetround.c b/sysdeps/powerpc/nofpu/fegetround.c
deleted file mode 100644
index 7d7dfbaeef..0000000000
--- a/sysdeps/powerpc/nofpu/fegetround.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Return current rounding mode (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fegetround (void)
-{
-  return __sim_round_mode_thread;
-}
-libm_hidden_def (__fegetround)
-weak_alias (__fegetround, fegetround)
-libm_hidden_weak (fegetround)
diff --git a/sysdeps/powerpc/nofpu/feholdexcpt.c b/sysdeps/powerpc/nofpu/feholdexcpt.c
deleted file mode 100644
index b0dce0bed1..0000000000
--- a/sysdeps/powerpc/nofpu/feholdexcpt.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Store current floating-point environment and clear exceptions
-   (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__feholdexcept (fenv_t *envp)
-{
-  fenv_union_t u;
-
-  /* Get the current state.  */
-  __fegetenv (envp);
-
-  u.fenv = *envp;
-  /* Clear everything except the rounding mode.  */
-  u.l[0] &= 0x3;
-  /* Disable exceptions */
-  u.l[1] = FE_ALL_EXCEPT;
-
-  /* Put the new state in effect.  */
-  __fesetenv (&u.fenv);
-
-  return 0;
-}
-libm_hidden_def (__feholdexcept)
-weak_alias (__feholdexcept, feholdexcept)
-libm_hidden_weak (feholdexcept)
diff --git a/sysdeps/powerpc/nofpu/fenv_const.c b/sysdeps/powerpc/nofpu/fenv_const.c
deleted file mode 100644
index 451070bcdf..0000000000
--- a/sysdeps/powerpc/nofpu/fenv_const.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Constants for fenv_bits.h (soft float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* We want to specify the bit pattern of the __fe_*_env constants, so
-   pretend they're really `long long' instead of `double'.  */
-
-/* If the default argument is used we use this value.  Disable all
-   signalling exceptions as default.  */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
-0x000000003e000000ULL;
-
-/* The same representation is used for femode_t.  */
-extern const unsigned long long __fe_dfl_mode
-  __attribute__ ((aligned (8), alias ("__fe_dfl_env")));
-
-/* Floating-point environment where none of the exceptions are masked.  */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
-0x0000000000000000ULL;
-
-/* Floating-point environment with the NI bit set.  No difference for
-   soft float from the default environment.  */
-strong_alias (__fe_dfl_env, __fe_nonieee_env)
diff --git a/sysdeps/powerpc/nofpu/fesetenv.c b/sysdeps/powerpc/nofpu/fesetenv.c
deleted file mode 100644
index f6ef1737bd..0000000000
--- a/sysdeps/powerpc/nofpu/fesetenv.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Set floating point environment (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fesetenv (const fenv_t *envp)
-{
-  fenv_union_t u;
-
-  u.fenv = *envp;
-  __sim_exceptions_thread = u.l[0] & FE_ALL_EXCEPT;
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-  __sim_round_mode_thread = u.l[0] & 0x3;
-  SIM_SET_GLOBAL (__sim_round_mode_global, __sim_round_mode_thread);
-  __sim_disabled_exceptions_thread = u.l[1];
-  SIM_SET_GLOBAL (__sim_disabled_exceptions_global,
-		  __sim_disabled_exceptions_thread);
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fesetenv)
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fesetexcept.c b/sysdeps/powerpc/nofpu/fesetexcept.c
deleted file mode 100644
index c22ee2e952..0000000000
--- a/sysdeps/powerpc/nofpu/fesetexcept.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Set given exception flags.  PowerPC soft-float version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-supp.h"
-
-int
-fesetexcept (int excepts)
-{
-  __sim_exceptions_thread |= (excepts & FE_ALL_EXCEPT);
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/nofpu/fesetmode.c b/sysdeps/powerpc/nofpu/fesetmode.c
deleted file mode 100644
index 85ce8b3ae1..0000000000
--- a/sysdeps/powerpc/nofpu/fesetmode.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Install given floating-point control modes.  PowerPC soft-float version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-fesetmode (const femode_t *modep)
-{
-  fenv_union_t u;
-
-  u.fenv = *modep;
-  __sim_round_mode_thread = u.l[0];
-  SIM_SET_GLOBAL (__sim_round_mode_global, __sim_round_mode_thread);
-  __sim_disabled_exceptions_thread = u.l[1];
-  SIM_SET_GLOBAL (__sim_disabled_exceptions_global,
-		  __sim_disabled_exceptions_thread);
-  return 0;
-}
diff --git a/sysdeps/powerpc/nofpu/fesetround.c b/sysdeps/powerpc/nofpu/fesetround.c
deleted file mode 100644
index 2ca60b5014..0000000000
--- a/sysdeps/powerpc/nofpu/fesetround.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Set rounding mode (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fesetround (int round)
-{
-  if ((unsigned int) round > FE_DOWNWARD)
-    return 1;
-
-  __sim_round_mode_thread = round;
-  SIM_SET_GLOBAL (__sim_round_mode_global, __sim_round_mode_thread);
-
-  return 0;
-}
-libm_hidden_def (__fesetround)
-weak_alias (__fesetround, fesetround)
-libm_hidden_weak (fesetround)
diff --git a/sysdeps/powerpc/nofpu/feupdateenv.c b/sysdeps/powerpc/nofpu/feupdateenv.c
deleted file mode 100644
index 316b7a96f3..0000000000
--- a/sysdeps/powerpc/nofpu/feupdateenv.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Install given floating-point environment and raise exceptions
-   (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <signal.h>
-
-int
-__feupdateenv (const fenv_t *envp)
-{
-  int saved_exceptions;
-
-  /* Save currently set exceptions.  */
-  saved_exceptions = __sim_exceptions_thread;
-
-  /* Set environment.  */
-  __fesetenv (envp);
-
-  /* Raise old exceptions.  */
-  __sim_exceptions_thread |= saved_exceptions;
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-  if (saved_exceptions & ~__sim_disabled_exceptions_thread)
-    raise (SIGFPE);
-
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feupdateenv)
-libm_hidden_ver (__feupdateenv, feupdateenv)
-versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fgetexcptflg.c b/sysdeps/powerpc/nofpu/fgetexcptflg.c
deleted file mode 100644
index 4247be2352..0000000000
--- a/sysdeps/powerpc/nofpu/fgetexcptflg.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Store current representation for exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
-  *flagp = (fexcept_t) __sim_exceptions_thread & excepts & FE_ALL_EXCEPT;
-
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/flt-rounds.c b/sysdeps/powerpc/nofpu/flt-rounds.c
deleted file mode 100644
index 744ba95d60..0000000000
--- a/sysdeps/powerpc/nofpu/flt-rounds.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Return current rounding mode as correct value for FLT_ROUNDS.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdlib.h>
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__flt_rounds (void)
-{
-  switch (__sim_round_mode_thread)
-    {
-    case FP_RND_ZERO:
-      return 0;
-    case FP_RND_NEAREST:
-      return 1;
-    case FP_RND_PINF:
-      return 2;
-    case FP_RND_MINF:
-      return 3;
-    default:
-      abort ();
-    }
-}
diff --git a/sysdeps/powerpc/nofpu/fraiseexcpt.c b/sysdeps/powerpc/nofpu/fraiseexcpt.c
deleted file mode 100644
index 585c1c7d95..0000000000
--- a/sysdeps/powerpc/nofpu/fraiseexcpt.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Raise given exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-#include <signal.h>
-
-#undef feraiseexcept
-int
-__feraiseexcept (int x)
-{
-  __sim_exceptions_thread |= x;
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-  if (x & ~__sim_disabled_exceptions_thread)
-    raise (SIGFPE);
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feraiseexcept)
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/fsetexcptflg.c b/sysdeps/powerpc/nofpu/fsetexcptflg.c
deleted file mode 100644
index 10b64285d3..0000000000
--- a/sysdeps/powerpc/nofpu/fsetexcptflg.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Set floating-point environment exception handling (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-__fesetexceptflag(const fexcept_t *flagp, int excepts)
-{
-  /* Ignore exceptions not listed in 'excepts'.  */
-  __sim_exceptions_thread
-    = (__sim_exceptions_thread & ~excepts) | (*flagp & excepts);
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/nofpu/ftestexcept.c b/sysdeps/powerpc/nofpu/ftestexcept.c
deleted file mode 100644
index 56c804e558..0000000000
--- a/sysdeps/powerpc/nofpu/ftestexcept.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Test floating-point exceptions (soft-float edition).
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-int
-fetestexcept (int x)
-{
-  return __sim_exceptions_thread & x;
-}
-libm_hidden_def (fetestexcept)
diff --git a/sysdeps/powerpc/nofpu/get-rounding-mode.h b/sysdeps/powerpc/nofpu/get-rounding-mode.h
deleted file mode 100644
index 4e6206e121..0000000000
--- a/sysdeps/powerpc/nofpu/get-rounding-mode.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Determine floating-point rounding mode within libc.  PowerPC
-   soft-float version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _POWERPC_NOFPU_GET_ROUNDING_MODE_H
-#define _POWERPC_NOFPU_GET_ROUNDING_MODE_H	1
-
-#include <fenv.h>
-
-#include "soft-supp.h"
-
-/* Return the floating-point rounding mode.  */
-
-static inline int
-get_rounding_mode (void)
-{
-  return __sim_round_mode_thread;
-}
-
-#endif /* get-rounding-mode.h */
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps
deleted file mode 100644
index 8935f0d714..0000000000
--- a/sysdeps/powerpc/nofpu/libm-test-ulps
+++ /dev/null
@@ -1,2364 +0,0 @@
-# Begin of automatic generation
-
-# Maximal error of functions:
-Function: "acos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "acos_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "acos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "acos_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "acosh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "acosh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "acosh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "acosh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 4
-
-Function: "asin":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asin_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "asin_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "asinh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: "asinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "asinh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: "atan":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atan2":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "atan2_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "atan2_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "atan2_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "atan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "atan_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "atan_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: "atanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "atanh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "cabs":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_downward":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_towardzero":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cabs_upward":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cacos":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "cacos":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cacos_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "cacos_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "cacos_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "cacos_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "cacos_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "cacos_upward":
-double: 5
-float: 7
-idouble: 5
-ifloat: 7
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "cacosh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cacosh_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cacosh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "cacosh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cacosh_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "cacosh_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 12
-ldouble: 12
-
-Function: Imaginary part of "cacosh_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "carg":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "carg_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "carg_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "carg_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "casin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "casin":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "casin_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "casin_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "casin_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "casin_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "casin_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "casin_upward":
-double: 5
-float: 7
-idouble: 5
-ifloat: 7
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "casinh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "casinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "casinh_downward":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "casinh_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "casinh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "casinh_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "casinh_upward":
-double: 5
-float: 7
-idouble: 5
-ifloat: 7
-ildouble: 13
-ldouble: 13
-
-Function: Imaginary part of "casinh_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "catan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "catan_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "catan_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "catan_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "catan_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "catan_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "catanh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "catanh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "catanh_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "catanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "catanh_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "catanh_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "catanh_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: "cbrt":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "cbrt_downward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 5
-ldouble: 5
-
-Function: "cbrt_towardzero":
-double: 3
-float: 1
-idouble: 3
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "cbrt_upward":
-double: 5
-float: 1
-idouble: 5
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccos":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccos_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccos_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccos_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccos_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ccos_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "ccosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ccosh_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ccosh_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccosh_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "ccosh_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ccosh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ccosh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cexp":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "cexp":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cexp_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 11
-ldouble: 11
-
-Function: Imaginary part of "cexp_downward":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: Real part of "cexp_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 11
-ldouble: 11
-
-Function: Imaginary part of "cexp_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: Real part of "cexp_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "cexp_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "clog":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "clog":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "clog10":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "clog10":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "clog10_downward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "clog10_downward":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog10_towardzero":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "clog10_towardzero":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "clog10_upward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "clog10_upward":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog_downward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "clog_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "clog_towardzero":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "clog_towardzero":
-double: 1
-float: 3
-idouble: 1
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: Real part of "clog_upward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "clog_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "cos":
-float: 1
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "cos_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "cos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "cos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "cosh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "cosh_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cosh_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "cosh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "cpow":
-double: 2
-float: 4
-idouble: 2
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "cpow":
-float: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "cpow_downward":
-double: 4
-float: 8
-idouble: 4
-ifloat: 8
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "cpow_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cpow_towardzero":
-double: 4
-float: 8
-idouble: 4
-ifloat: 8
-ildouble: 8
-ldouble: 8
-
-Function: Imaginary part of "cpow_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: Real part of "cpow_upward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "cpow_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csin":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "csin":
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csin_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csin_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csin_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csin_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "csin_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csinh":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "csinh_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csinh_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "csinh_towardzero":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "csinh_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "csinh_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "csqrt":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Imaginary part of "csqrt":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: Real part of "csqrt_downward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "csqrt_downward":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "csqrt_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Imaginary part of "csqrt_towardzero":
-double: 4
-float: 3
-idouble: 4
-ifloat: 3
-ildouble: 5
-ldouble: 5
-
-Function: Real part of "csqrt_upward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 12
-ldouble: 12
-
-Function: Imaginary part of "csqrt_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: Real part of "ctan":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: Imaginary part of "ctan":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Real part of "ctan_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: Imaginary part of "ctan_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: Real part of "ctan_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: Imaginary part of "ctan_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 13
-ldouble: 13
-
-Function: Real part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 7
-ldouble: 7
-
-Function: Imaginary part of "ctan_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Real part of "ctanh":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: Imaginary part of "ctanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: Real part of "ctanh_downward":
-double: 4
-float: 1
-idouble: 4
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: Imaginary part of "ctanh_downward":
-double: 6
-float: 5
-idouble: 6
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: Real part of "ctanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 13
-ldouble: 13
-
-Function: Imaginary part of "ctanh_towardzero":
-double: 5
-float: 3
-idouble: 5
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Real part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: Imaginary part of "ctanh_upward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 10
-ldouble: 10
-
-Function: "erf":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "erf_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "erf_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "erf_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "erfc":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "erfc_downward":
-double: 5
-float: 6
-idouble: 5
-ifloat: 6
-ildouble: 10
-ldouble: 10
-
-Function: "erfc_towardzero":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 9
-ldouble: 9
-
-Function: "erfc_upward":
-double: 5
-float: 6
-idouble: 5
-ifloat: 6
-ildouble: 7
-ldouble: 7
-
-Function: "exp":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "exp10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "exp10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "exp10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "exp2":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp2_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp2_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp2_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "exp_downward":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp_towardzero":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "exp_upward":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "expm1":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "expm1_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "expm1_towardzero":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "expm1_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 6
-ldouble: 6
-
-Function: "fma":
-ildouble: 1
-ldouble: 1
-
-Function: "fma_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "fma_towardzero":
-ildouble: 2
-ldouble: 2
-
-Function: "fma_upward":
-ildouble: 3
-ldouble: 3
-
-Function: "fmod":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_towardzero":
-ildouble: 1
-ldouble: 1
-
-Function: "fmod_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "gamma":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "gamma_downward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 15
-ldouble: 15
-
-Function: "gamma_towardzero":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 16
-ldouble: 16
-
-Function: "gamma_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 11
-ldouble: 11
-
-Function: "hypot":
-double: 1
-idouble: 1
-ildouble: 1
-ldouble: 1
-
-Function: "hypot_downward":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "hypot_towardzero":
-double: 1
-idouble: 1
-ildouble: 2
-ldouble: 2
-
-Function: "hypot_upward":
-double: 1
-idouble: 1
-ildouble: 3
-ldouble: 3
-
-Function: "j0":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "j0_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 11
-ldouble: 11
-
-Function: "j0_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 8
-ldouble: 8
-
-Function: "j0_upward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "j1":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "j1_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "j1_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "j1_upward":
-double: 3
-float: 5
-idouble: 3
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: "jn":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: "jn_downward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: "jn_towardzero":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 6
-ldouble: 6
-
-Function: "jn_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 5
-ldouble: 5
-
-Function: "ldexp_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "ldexp_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "lgamma":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "lgamma_downward":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 15
-ldouble: 15
-
-Function: "lgamma_towardzero":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 16
-ldouble: 16
-
-Function: "lgamma_upward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 11
-ldouble: 11
-
-Function: "log":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log10":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log10_downward":
-double: 2
-float: 3
-idouble: 2
-ifloat: 3
-ildouble: 1
-ldouble: 1
-
-Function: "log10_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log10_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log1p":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "log1p_downward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log1p_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log1p_upward":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log2":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "log2_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 2
-ldouble: 2
-
-Function: "log2_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "log2_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "log_downward":
-float: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "log_towardzero":
-float: 2
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "log_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "nextafter_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "nextafter_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "pow":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow10":
-double: 2
-idouble: 2
-ildouble: 1
-ldouble: 1
-
-Function: "pow10_downward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_towardzero":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 9
-ldouble: 9
-
-Function: "pow10_upward":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "pow_downward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "pow_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "scalb_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "scalb_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "scalbln_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "scalbln_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "scalbn_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "scalbn_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "sin":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sin_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "sin_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 4
-ldouble: 4
-
-Function: "sin_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 5
-ldouble: 5
-
-Function: "sincos":
-float: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "sincos_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "sincos_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 7
-ldouble: 7
-
-Function: "sincos_upward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "sinh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "sinh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "sinh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 6
-ldouble: 6
-
-Function: "sinh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "sqrt":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_downward":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_towardzero":
-ildouble: 1
-ldouble: 1
-
-Function: "sqrt_upward":
-ildouble: 1
-ldouble: 1
-
-Function: "tan":
-float: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "tan_downward":
-double: 1
-float: 2
-idouble: 1
-ifloat: 2
-ildouble: 3
-ldouble: 3
-
-Function: "tan_towardzero":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 2
-ldouble: 2
-
-Function: "tan_upward":
-double: 1
-float: 1
-idouble: 1
-ifloat: 1
-ildouble: 3
-ldouble: 3
-
-Function: "tanh":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 1
-ldouble: 1
-
-Function: "tanh_downward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 4
-ldouble: 4
-
-Function: "tanh_towardzero":
-double: 2
-float: 2
-idouble: 2
-ifloat: 2
-ildouble: 4
-ldouble: 4
-
-Function: "tanh_upward":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 6
-ldouble: 6
-
-Function: "tgamma":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "tgamma_downward":
-double: 5
-float: 5
-idouble: 5
-ifloat: 5
-ildouble: 4
-ldouble: 4
-
-Function: "tgamma_towardzero":
-double: 5
-float: 4
-idouble: 5
-ifloat: 4
-ildouble: 3
-ldouble: 3
-
-Function: "tgamma_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 4
-ldouble: 4
-
-Function: "y0":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
-ildouble: 1
-ldouble: 1
-
-Function: "y0_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 10
-ldouble: 10
-
-Function: "y0_towardzero":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: "y0_upward":
-double: 3
-float: 4
-idouble: 3
-ifloat: 4
-ildouble: 7
-ldouble: 7
-
-Function: "y1":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "y1_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "y1_towardzero":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 7
-ldouble: 7
-
-Function: "y1_upward":
-double: 7
-float: 2
-idouble: 7
-ifloat: 2
-ildouble: 9
-ldouble: 9
-
-Function: "yn":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 2
-ldouble: 2
-
-Function: "yn_downward":
-double: 3
-float: 2
-idouble: 3
-ifloat: 2
-ildouble: 10
-ldouble: 10
-
-Function: "yn_towardzero":
-double: 3
-float: 3
-idouble: 3
-ifloat: 3
-ildouble: 8
-ldouble: 8
-
-Function: "yn_upward":
-double: 4
-float: 4
-idouble: 4
-ifloat: 4
-ildouble: 5
-ldouble: 5
-
-# end of automatic generation
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps-name b/sysdeps/powerpc/nofpu/libm-test-ulps-name
deleted file mode 100644
index 3ed2c6ec8a..0000000000
--- a/sysdeps/powerpc/nofpu/libm-test-ulps-name
+++ /dev/null
@@ -1 +0,0 @@
-PowerPC soft-float
diff --git a/sysdeps/powerpc/nofpu/sim-full.c b/sysdeps/powerpc/nofpu/sim-full.c
deleted file mode 100644
index da48f3714e..0000000000
--- a/sysdeps/powerpc/nofpu/sim-full.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Software floating-point exception handling emulation.
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <signal.h>
-#include "soft-fp.h"
-#include "soft-supp.h"
-
-/* Thread-local to store sticky exceptions.  */
-__thread int __sim_exceptions_thread __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_exceptions_thread);
-
-/* By default, no exceptions should trap.  */
-__thread int __sim_disabled_exceptions_thread = 0xffffffff;
-libc_hidden_data_def (__sim_disabled_exceptions_thread);
-
-__thread int __sim_round_mode_thread __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_round_mode_thread);
-
-#if SIM_GLOBAL_COMPAT
-int __sim_exceptions_global __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_exceptions_global);
-SIM_COMPAT_SYMBOL (__sim_exceptions_global, __sim_exceptions);
-
-int __sim_disabled_exceptions_global = 0xffffffff;
-libc_hidden_data_def (__sim_disabled_exceptions_global);
-SIM_COMPAT_SYMBOL (__sim_disabled_exceptions_global,
-		   __sim_disabled_exceptions);
-
-int __sim_round_mode_global __attribute__ ((nocommon));
-libc_hidden_data_def (__sim_round_mode_global);
-SIM_COMPAT_SYMBOL (__sim_round_mode_global, __sim_round_mode);
-#endif
-
-void
-__simulate_exceptions (int x)
-{
-  __sim_exceptions_thread |= x;
-  SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
-  if (x & ~__sim_disabled_exceptions_thread)
-    raise (SIGFPE);
-}
diff --git a/sysdeps/powerpc/nofpu/soft-supp.h b/sysdeps/powerpc/nofpu/soft-supp.h
deleted file mode 100644
index f66d9573fa..0000000000
--- a/sysdeps/powerpc/nofpu/soft-supp.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Internal support stuff for complete soft float.
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2002.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined __NO_FPRS__ && !defined _SOFT_FLOAT
-
-# include <fenv_libc.h>
-
-#else
-
-# include <fenv.h>
-
-typedef union
-{
-  fenv_t fenv;
-  unsigned int l[2];
-} fenv_union_t;
-
-#endif
-
-extern __thread int __sim_exceptions_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_exceptions_thread, tls_model ("initial-exec"));
-extern __thread int __sim_disabled_exceptions_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_disabled_exceptions_thread,
-		       tls_model ("initial-exec"));
-extern __thread int __sim_round_mode_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_round_mode_thread, tls_model ("initial-exec"));
-
-/* These variables were formerly global, so there are compat symbols
-   for global versions as well.  */
-
-#include <shlib-compat.h>
-#define SIM_GLOBAL_COMPAT SHLIB_COMPAT (libc, GLIBC_2_3_2, GLIBC_2_19)
-#if SIM_GLOBAL_COMPAT
-extern int __sim_exceptions_global;
-libc_hidden_proto (__sim_exceptions_global);
-extern int __sim_disabled_exceptions_global ;
-libc_hidden_proto (__sim_disabled_exceptions_global);
-extern int __sim_round_mode_global;
-libc_hidden_proto (__sim_round_mode_global);
-# define SIM_COMPAT_SYMBOL(GLOBAL_NAME, NAME) \
-  compat_symbol (libc, GLOBAL_NAME, NAME, GLIBC_2_3_2)
-# define SIM_SET_GLOBAL(GLOBAL_VAR, THREAD_VAR) ((GLOBAL_VAR) = (THREAD_VAR))
-#else
-# define SIM_SET_GLOBAL(GLOBAL_VAR, THREAD_VAR) ((void) 0)
-#endif
-
-extern void __simulate_exceptions (int x) attribute_hidden;
diff --git a/sysdeps/powerpc/novmx-longjmp.c b/sysdeps/powerpc/novmx-longjmp.c
deleted file mode 100644
index b0020b728a..0000000000
--- a/sysdeps/powerpc/novmx-longjmp.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Copy of sysdeps/generic/longjmp.c modified for backward compatibility
-   with old non AltiVec/VMX longjmp.  */
-
-#include <bits/wordsize.h>
-#include <shlib-compat.h>
-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-# include <stddef.h>
-# include <novmxsetjmp.h>
-# include <signal.h>
-
-
-/* Set the signal mask to the one specified in ENV, and jump
-   to the position specified in ENV, causing the setjmp
-   call there to return VAL, or 1 if VAL is 0.  */
-void
-__novmx__libc_siglongjmp (__novmx__sigjmp_buf env, int val)
-{
-  /* Perform any cleanups needed by the frames being unwound.  */
-  _longjmp_unwind (env, val);
-
-  if (env[0].__mask_was_saved)
-    /* Restore the saved signal mask.  */
-    (void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
-			  (sigset_t *) NULL);
-
-  /* Call the machine-dependent function to restore machine state.  */
-  __novmx__longjmp (env[0].__jmpbuf, val ?: 1);
-}
-
-strong_alias (__novmx__libc_siglongjmp, __novmx__libc_longjmp)
-libc_hidden_def (__novmx__libc_longjmp)
-weak_alias (__novmx__libc_siglongjmp, __novmx_longjmp)
-weak_alias (__novmx__libc_siglongjmp, __novmxlongjmp)
-weak_alias (__novmx__libc_siglongjmp, __novmxsiglongjmp)
-
-compat_symbol (libc, __novmx_longjmp, _longjmp, GLIBC_2_0);
-compat_symbol (libc, __novmxlongjmp, longjmp, GLIBC_2_0);
-compat_symbol (libc, __novmxsiglongjmp, siglongjmp, GLIBC_2_0);
-#endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4))  */
diff --git a/sysdeps/powerpc/novmx-sigjmp.c b/sysdeps/powerpc/novmx-sigjmp.c
deleted file mode 100644
index 7d0ae59437..0000000000
--- a/sysdeps/powerpc/novmx-sigjmp.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Copy of sysdeps/generic/sigjmp.c modified for backward compatibility
-   with old non AltiVec/VMX setjmp.  */
-
-#include <bits/wordsize.h>
-#include <shlib-compat.h>
-#if IS_IN (libc) && defined SHARED
-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-#  include <stddef.h>
-#  include <novmxsetjmp.h>
-#  include <signal.h>
-
-/* This function is called by the `sigsetjmp' macro
-   before doing a `__setjmp' on ENV[0].__jmpbuf.
-   Always return zero.  */
-
-int
-__novmx__sigjmp_save (__novmx__sigjmp_buf env, int savemask)
-{
-  env[0].__mask_was_saved = (savemask &&
-			     __sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
-					    &env[0].__saved_mask) == 0);
-
-  return 0;
-}
-
-# endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
-#endif /* IS_IN (libc) && SHARED  */
diff --git a/sysdeps/powerpc/novmxsetjmp.h b/sysdeps/powerpc/novmxsetjmp.h
deleted file mode 100644
index aa76bf9d1e..0000000000
--- a/sysdeps/powerpc/novmxsetjmp.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Copied from setjmp/setjmp.h, powerpc/bits/setjmp.h and modified
-   appropriately to keep backward compatible with setjmp without
-   AltiVec/VMX support.
-
-   This file is not exported and the interfaces are private to libc.  */
-
-#ifndef	__NOVMX_SETJMP_H
-#define	__NOVMX_SETJMP_H	1
-
-#include <bits/wordsize.h>
-
-/* The following definitions are needed by ASM implementations of the old
-   (novmx) __longjmp/__setjmp functions.  */
-
-# define JB_GPR1   0  /* Also known as the stack pointer */
-# define JB_GPR2   1
-# define JB_LR     2  /* The address we will return to */
-# if __WORDSIZE == 64
-#  define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18*2 words total.  */
-#  define JB_CR     21 /* Condition code registers. */
-#  define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total.  */
-#  define JB_SIZE   (40 * 8)
-# else
-#  define JB_GPRS   3  /* GPRs 14 through 31 are saved, 18 in total.  */
-#  define JB_CR     21 /* Condition code registers.  */
-#  define JB_FPRS   22 /* FPRs 14 through 31 are saved, 18*2 words total.  */
-#  define JB_SIZE   (58 * 4)
-# endif
-
-#ifndef	_ASM
-/* The following definitions are needed by the novmx* implementations of
-   setjmp/longjmp/sigsetjmp/etc that wrapper __setjmp/__longjmp.  */
-
-# if __WORDSIZE == 64
-typedef long int __jmp_buf[40];
-# else
-typedef long int __jmp_buf[58];
-# endif
-
-# include <bits/types/__sigset_t.h>
-
-/* Calling environment, plus possibly a saved signal mask.  */
-typedef struct __novmx__jmp_buf_tag
-  {
-    /* NOTE: The machine-dependent definitions of `__sigsetjmp'
-       assume that a `jmp_buf' begins with a `__jmp_buf' and that
-       `__mask_was_saved' follows it.  Do not move these members
-       or add others before it.  */
-    __jmp_buf __jmpbuf;		/* Calling environment.  */
-    int __mask_was_saved;	/* Saved the signal mask?  */
-    __sigset_t __saved_mask;	/* Saved signal mask.  */
-  } __novmx__jmp_buf[1];
-
-
-/* Store the calling environment in ENV, also saving the signal mask.
-   Return 0.  */
-extern int __novmxsetjmp (__novmx__jmp_buf __env);
-
-/* Store the calling environment in ENV, also saving the
-   signal mask if SAVEMASK is nonzero.  Return 0.
-   This is the internal name for `sigsetjmp'.  */
-extern int __novmx__sigsetjmp (struct __novmx__jmp_buf_tag __env[1],
-			       int __savemask);
-
-/* Store the calling environment in ENV, not saving the signal mask.
-   Return 0.  */
-extern int __novmx_setjmp (struct __novmx__jmp_buf_tag __env[1]);
-
-/* Jump to the environment saved in ENV, making the
-   `setjmp' call there return VAL, or 1 if VAL is 0.  */
-extern void __novmxlongjmp (struct __novmx__jmp_buf_tag __env[1], int __val)
-     __attribute__ ((__noreturn__));
-
-/* Same.  Usually `_longjmp' is used with `_setjmp', which does not save
-   the signal mask.  But it is how ENV was saved that determines whether
-   `longjmp' restores the mask; `_longjmp' is just an alias.  */
-extern void __novmx_longjmp (struct __novmx__jmp_buf_tag __env[1], int __val)
-     __attribute__ ((__noreturn__));
-
-/* Use the same type for `jmp_buf' and `sigjmp_buf'.
-   The `__mask_was_saved' flag determines whether
-   or not `longjmp' will restore the signal mask.  */
-typedef struct __novmx__jmp_buf_tag __novmx__sigjmp_buf[1];
-
-/* Jump to the environment saved in ENV, making the
-   sigsetjmp call there return VAL, or 1 if VAL is 0.
-   Restore the signal mask if that sigsetjmp call saved it.
-   This is just an alias `longjmp'.  */
-extern void __novmxsiglongjmp (__novmx__sigjmp_buf __env, int __val)
-     __attribute__ ((__noreturn__));
-
-/* Internal machine-dependent function to restore context sans signal mask.  */
-extern void __novmx__longjmp (__jmp_buf __env, int __val)
-     __attribute__ ((__noreturn__));
-
-/* Internal function to possibly save the current mask of blocked signals
-   in ENV, and always set the flag saying whether or not it was saved.
-   This is used by the machine-dependent definition of `__sigsetjmp'.
-   Always returns zero, for convenience.  */
-extern int __novmx__sigjmp_save (__novmx__jmp_buf __env, int __savemask);
-
-extern void _longjmp_unwind (__novmx__jmp_buf env, int val);
-
-extern void __novmx__libc_siglongjmp (__novmx__sigjmp_buf env, int val)
-          __attribute__ ((noreturn));
-
-extern void __novmx__libc_longjmp (__novmx__sigjmp_buf env, int val)
-     __attribute__ ((noreturn));
-
-libc_hidden_proto (__novmx__libc_longjmp)
-libc_hidden_proto (__novmx_setjmp)
-libc_hidden_proto (__novmx__sigsetjmp)
-#endif /* !_ASM */
-
-#endif
diff --git a/sysdeps/powerpc/nptl/Makefile b/sysdeps/powerpc/nptl/Makefile
deleted file mode 100644
index 13fa630f2f..0000000000
--- a/sysdeps/powerpc/nptl/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2003-2017 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-
-# The GNU C Library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-
-# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, see
-# <http://www.gnu.org/licenses/>.
-
-ifeq ($(subdir),csu)
-gen-as-const-headers += tcb-offsets.sym
-endif
diff --git a/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h b/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
deleted file mode 100644
index f29119b794..0000000000
--- a/sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Machine-specific pthread type layouts.  PowerPC version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_PTHREADTYPES_ARCH_H
-#define _BITS_PTHREADTYPES_ARCH_H	1
-
-#include <bits/wordsize.h>
-
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-#else
-# define __SIZEOF_PTHREAD_MUTEX_T 24
-# define __SIZEOF_PTHREAD_ATTR_T 36
-# define __SIZEOF_PTHREAD_RWLOCK_T 32
-# define __SIZEOF_PTHREAD_BARRIER_T 20
-#endif
-#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-#define __SIZEOF_PTHREAD_COND_T 48
-#define __SIZEOF_PTHREAD_CONDATTR_T 4
-#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
-
-/* Definitions for internal mutex struct.  */
-#define __PTHREAD_COMPAT_PADDING_MID
-#define __PTHREAD_COMPAT_PADDING_END
-#define __PTHREAD_MUTEX_LOCK_ELISION    1
-
-#define __LOCK_ALIGNMENT
-#define __ONCE_ALIGNMENT
-
-struct __pthread_rwlock_arch_t
-{
-  unsigned int __readers;
-  unsigned int __writers;
-  unsigned int __wrphase_futex;
-  unsigned int __writers_futex;
-  unsigned int __pad3;
-  unsigned int __pad4;
-#if __WORDSIZE == 64
-  int __cur_writer;
-  int __shared;
-  unsigned char __rwelision;
-  unsigned char __pad1[7];
-  unsigned long int __pad2;
-  /* FLAGS must stay at this position in the structure to maintain
-     binary compatibility.  */
-  unsigned int __flags;
-# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
-#else
-  unsigned char __rwelision;
-  unsigned char __pad2;
-  unsigned char __shared;
-  /* FLAGS must stay at this position in the structure to maintain
-     binary compatibility.  */
-  unsigned char __flags;
-  int __cur_writer;
-# define __PTHREAD_RWLOCK_ELISION_EXTRA 0
-#endif
-};
-
-#endif	/* bits/pthreadtypes.h */
diff --git a/sysdeps/powerpc/nptl/elide.h b/sysdeps/powerpc/nptl/elide.h
deleted file mode 100644
index 1c42814b71..0000000000
--- a/sysdeps/powerpc/nptl/elide.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* elide.h: Generic lock elision support for powerpc.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef ELIDE_PPC_H
-# define ELIDE_PPC_H
-
-#ifdef ENABLE_LOCK_ELISION
-# include <htm.h>
-# include <elision-conf.h>
-
-/* Get the new value of adapt_count according to the elision
-   configurations.  Returns true if the system should retry again or false
-   otherwise.  */
-static inline bool
-__get_new_count (uint8_t *adapt_count, int attempt)
-{
-  /* A persistent failure indicates that a retry will probably
-     result in another failure.  Use normal locking now and
-     for the next couple of calls.  */
-  if (_TEXASRU_FAILURE_PERSISTENT (__builtin_get_texasru ()))
-    {
-      if (__elision_aconf.skip_lock_internal_abort > 0)
-	*adapt_count = __elision_aconf.skip_lock_internal_abort;
-      return false;
-    }
-  /* Same logic as above, but for a number of temporary failures in a
-     a row.  */
-  else if (attempt <= 1 && __elision_aconf.skip_lock_out_of_tbegin_retries > 0
-	   && __elision_aconf.try_tbegin > 0)
-    *adapt_count = __elision_aconf.skip_lock_out_of_tbegin_retries;
-  return true;
-}
-
-/* CONCURRENCY NOTES:
-
-   The evaluation of the macro expression is_lock_free encompasses one or
-   more loads from memory locations that are concurrently modified by other
-   threads.  For lock elision to work, this evaluation and the rest of the
-   critical section protected by the lock must be atomic because an
-   execution with lock elision must be equivalent to an execution in which
-   the lock would have been actually acquired and released.  Therefore, we
-   evaluate is_lock_free inside of the transaction that represents the
-   critical section for which we want to use lock elision, which ensures
-   the atomicity that we require.  */
-
-/* Returns 0 if the lock defined by is_lock_free was elided.
-   ADAPT_COUNT is a per-lock state variable.  */
-# define ELIDE_LOCK(adapt_count, is_lock_free)				\
-  ({									\
-    int ret = 0;							\
-    if (adapt_count > 0)						\
-      (adapt_count)--;							\
-    else								\
-      for (int i = __elision_aconf.try_tbegin; i > 0; i--)		\
-	{								\
-	  if (__libc_tbegin (0))					\
-	    {								\
-	      if (is_lock_free)						\
-		{							\
-		  ret = 1;						\
-		  break;						\
-		}							\
-	      __libc_tabort (_ABORT_LOCK_BUSY);				\
-	    }								\
-	  else								\
-	    if (!__get_new_count (&adapt_count,i))			\
-	      break;							\
-	}								\
-    ret;								\
-  })
-
-# define ELIDE_TRYLOCK(adapt_count, is_lock_free, write)	\
-  ({								\
-    int ret = 0;						\
-    if (__elision_aconf.try_tbegin > 0)				\
-      {								\
-	if (write)						\
-	  __libc_tabort (_ABORT_NESTED_TRYLOCK);		\
-	ret = ELIDE_LOCK (adapt_count, is_lock_free);		\
-      }								\
-    ret;							\
-  })
-
-
-static inline bool
-__elide_unlock (int is_lock_free)
-{
-  if (is_lock_free)
-    {
-      /* This code is expected to crash when trying to unlock a lock not
-	 held by this thread.  More information is available in the
-	 __pthread_rwlock_unlock() implementation.  */
-      __libc_tend (0);
-      return true;
-    }
-  return false;
-}
-
-# define ELIDE_UNLOCK(is_lock_free) \
-  __elide_unlock (is_lock_free)
-
-# else
-
-# define ELIDE_LOCK(adapt_count, is_lock_free) 0
-# define ELIDE_TRYLOCK(adapt_count, is_lock_free, write) 0
-# define ELIDE_UNLOCK(is_lock_free) 0
-
-#endif /* ENABLE_LOCK_ELISION  */
-
-#endif
diff --git a/sysdeps/powerpc/nptl/pthread_spin_lock.c b/sysdeps/powerpc/nptl/pthread_spin_lock.c
deleted file mode 100644
index e377feb1cf..0000000000
--- a/sysdeps/powerpc/nptl/pthread_spin_lock.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "pthreadP.h"
-
-int
-pthread_spin_lock (pthread_spinlock_t *lock)
-{
-  unsigned int __tmp;
-
-  asm volatile (
-       "1:	lwarx	%0,0,%1" MUTEX_HINT_ACQ "\n"
-       "	cmpwi	0,%0,0\n"
-       "	bne-	2f\n"
-       "	stwcx.	%2,0,%1\n"
-       "	bne-	2f\n"
-                __ARCH_ACQ_INSTR "\n"
-       "	.subsection 1\n"
-       "2:	lwzx	%0,0,%1\n"
-       "	cmpwi	0,%0,0\n"
-       "	bne	2b\n"
-       "	b	1b\n"
-       "	.previous"
-       : "=&r" (__tmp)
-       : "r" (lock), "r" (1)
-       : "cr0", "memory");
-  return 0;
-}
diff --git a/sysdeps/powerpc/nptl/pthread_spin_trylock.c b/sysdeps/powerpc/nptl/pthread_spin_trylock.c
deleted file mode 100644
index d81d984237..0000000000
--- a/sysdeps/powerpc/nptl/pthread_spin_trylock.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include "pthreadP.h"
-
-int
-pthread_spin_trylock (pthread_spinlock_t *lock)
-{
-  unsigned int old;
-  int err = EBUSY;
-
-  asm ("1:	lwarx	%0,0,%2" MUTEX_HINT_ACQ "\n"
-       "	cmpwi	0,%0,0\n"
-       "	bne	2f\n"
-       "	stwcx.	%3,0,%2\n"
-       "	bne-	1b\n"
-       "	li	%1,0\n"
-                __ARCH_ACQ_INSTR "\n"
-       "2:	"
-       : "=&r" (old), "=&r" (err)
-       : "r" (lock), "r" (1), "1" (err)
-       : "cr0", "memory");
-
-  return err;
-}
diff --git a/sysdeps/powerpc/nptl/pthread_spin_unlock.c b/sysdeps/powerpc/nptl/pthread_spin_unlock.c
deleted file mode 100644
index fa30a82491..0000000000
--- a/sysdeps/powerpc/nptl/pthread_spin_unlock.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* pthread_spin_unlock -- unlock a spin lock.  PowerPC version.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "pthreadP.h"
-#include <lowlevellock.h>
-
-int
-pthread_spin_unlock (pthread_spinlock_t *lock)
-{
-  atomic_store_release (lock, 0);
-  return 0;
-}
diff --git a/sysdeps/powerpc/nptl/pthreaddef.h b/sysdeps/powerpc/nptl/pthreaddef.h
deleted file mode 100644
index e3e407a4c4..0000000000
--- a/sysdeps/powerpc/nptl/pthreaddef.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Default stack size.  */
-#define ARCH_STACK_DEFAULT_SIZE	(4 * 1024 * 1024)
-
-/* Required stack pointer alignment at beginning.  The ABI requires 16
-   bytes (for both 32-bit and 64-bit PowerPC).  */
-#define STACK_ALIGN		16
-
-/* Minimal stack size after allocating thread descriptor and guard size.  */
-#define MINIMAL_REST_STACK	4096
-
-/* Alignment requirement for TCB.  */
-#define TCB_ALIGNMENT		16
-
-
-/* Location of current stack frame.  */
-#define CURRENT_STACK_FRAME	__builtin_frame_address (0)
diff --git a/sysdeps/powerpc/nptl/tcb-offsets.sym b/sysdeps/powerpc/nptl/tcb-offsets.sym
deleted file mode 100644
index 7c9fd33562..0000000000
--- a/sysdeps/powerpc/nptl/tcb-offsets.sym
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <sysdep.h>
-#include <tls.h>
-#include <kernel-features.h>
-
---
-
--- Abuse tls.h macros to derive offsets relative to the thread register.
-# undef __thread_register
-# define __thread_register	((void *) 0)
-# define thread_offsetof(mem)	((ptrdiff_t) THREAD_SELF + offsetof (struct pthread, mem))
-
-
-#if TLS_MULTIPLE_THREADS_IN_TCB
-MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
-#endif
-TID				thread_offsetof (tid)
-POINTER_GUARD			(offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-TAR_SAVE			(offsetof (tcbhead_t, tar_save) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-DSO_SLOT1			(offsetof (tcbhead_t, dso_slot1) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-DSO_SLOT2			(offsetof (tcbhead_t, dso_slot2) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-#ifdef __powerpc64__
-TCB_AT_PLATFORM			(offsetof (tcbhead_t, at_platform) - TLS_TCB_OFFSET - sizeof(tcbhead_t))
-#endif
-TM_CAPABLE			(offsetof (tcbhead_t, tm_capable) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-#ifndef __powerpc64__
-TCB_AT_PLATFORM			(offsetof (tcbhead_t, at_platform) - TLS_TCB_OFFSET - sizeof(tcbhead_t))
-PADDING				(offsetof (tcbhead_t, padding) - TLS_TCB_OFFSET - sizeof(tcbhead_t))
-#endif
-TCB_HWCAP			(offsetof (tcbhead_t, hwcap) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
-#ifndef __ASSUME_PRIVATE_FUTEX
-PRIVATE_FUTEX_OFFSET		thread_offsetof (header.private_futex)
-#endif
diff --git a/sysdeps/powerpc/nptl/tls.h b/sysdeps/powerpc/nptl/tls.h
deleted file mode 100644
index 7556e7c8b8..0000000000
--- a/sysdeps/powerpc/nptl/tls.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/* Definition for thread-local data handling.  NPTL/PowerPC version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _TLS_H
-#define _TLS_H	1
-
-# include <dl-sysdep.h>
-
-#ifndef __ASSEMBLER__
-# include <stdbool.h>
-# include <stddef.h>
-# include <stdint.h>
-# include <dl-dtv.h>
-
-#else /* __ASSEMBLER__ */
-# include <tcb-offsets.h>
-#endif /* __ASSEMBLER__ */
-
-
-#ifndef __ASSEMBLER__
-
-# include <hwcapinfo.h>
-
-/* Get system call information.  */
-# include <sysdep.h>
-
-/* The TP points to the start of the thread blocks.  */
-# define TLS_DTV_AT_TP	1
-# define TLS_TCB_AT_TP	0
-
-/* We use the multiple_threads field in the pthread struct */
-#define TLS_MULTIPLE_THREADS_IN_TCB	1
-
-/* Get the thread descriptor definition.  */
-# include <nptl/descr.h>
-
-
-/* The stack_guard is accessed directly by GCC -fstack-protector code,
-   so it is a part of public ABI.  The dtv and pointer_guard fields
-   are private.  */
-typedef struct
-{
-  /* Reservation for HWCAP data.  To be accessed by GCC in
-     __builtin_cpu_supports(), so it is a part of public ABI.  */
-  uint64_t hwcap;
-  /* Reservation for AT_PLATFORM data.  To be accessed by GCC in
-     __builtin_cpu_is(), so it is a part of public ABI.  Since there
-     are different ABIs for 32 and 64 bit, we put this field in a
-     previously empty padding space for powerpc64.  */
-#ifndef __powerpc64__
-  /* Padding to maintain alignment.  */
-  uint32_t padding;
-  uint32_t at_platform;
-#endif
-  /* Indicate if HTM capable (ISA 2.07).  */
-  uint32_t tm_capable;
-  /* Reservation for AT_PLATFORM data - powerpc64.  */
-#ifdef __powerpc64__
-  uint32_t at_platform;
-#endif
-  /* Reservation for Dynamic System Optimizer ABI.  */
-  uintptr_t dso_slot2;
-  uintptr_t dso_slot1;
-  /* Reservation for tar register (ISA 2.07).  */
-  uintptr_t tar_save;
-  /* GCC split stack support.  */
-  void *__private_ss;
-  /* Reservation for the Event-Based Branching ABI.  */
-  uintptr_t ebb_handler;
-  uintptr_t ebb_ctx_pointer;
-  uintptr_t ebb_reserved1;
-  uintptr_t ebb_reserved2;
-  uintptr_t pointer_guard;
-  uintptr_t stack_guard;
-  dtv_t *dtv;
-} tcbhead_t;
-
-/* This is the size of the initial TCB.  */
-# define TLS_INIT_TCB_SIZE	0
-
-/* Alignment requirements for the initial TCB.  */
-# define TLS_INIT_TCB_ALIGN	__alignof__ (struct pthread)
-
-/* This is the size of the TCB.  */
-# define TLS_TCB_SIZE		0
-
-/* Alignment requirements for the TCB.  */
-# define TLS_TCB_ALIGN		__alignof__ (struct pthread)
-
-/* This is the size we need before TCB.  */
-# define TLS_PRE_TCB_SIZE \
-  (sizeof (struct pthread)						      \
-   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
-
-# ifndef __powerpc64__
-/* Register r2 (tp) is reserved by the ABI as "thread pointer". */
-register void *__thread_register __asm__ ("r2");
-#  define PT_THREAD_POINTER PT_R2
-# else
-/* Register r13 (tp) is reserved by the ABI as "thread pointer". */
-register void *__thread_register __asm__ ("r13");
-#  define PT_THREAD_POINTER PT_R13
-# endif
-
-/* The following assumes that TP (R2 or R13) points to the end of the
-   TCB + 0x7000 (per the ABI).  This implies that TCB address is
-   TP - 0x7000.  As we define TLS_DTV_AT_TP we can
-   assume that the pthread struct is allocated immediately ahead of the
-   TCB.  This implies that the pthread_descr address is
-   TP - (TLS_PRE_TCB_SIZE + 0x7000).  */
-# define TLS_TCB_OFFSET	0x7000
-
-/* Install the dtv pointer.  The pointer passed is to the element with
-   index -1 which contain the length.  */
-# define INSTALL_DTV(tcbp, dtvp) \
-  ((tcbhead_t *) (tcbp))[-1].dtv = dtvp + 1
-
-/* Install new dtv for current thread.  */
-# define INSTALL_NEW_DTV(dtv) (THREAD_DTV() = (dtv))
-
-/* Return dtv of given thread descriptor.  */
-# define GET_DTV(tcbp)	(((tcbhead_t *) (tcbp))[-1].dtv)
-
-/* Code to initially initialize the thread pointer.  This might need
-   special attention since 'errno' is not yet available and if the
-   operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp) \
-  ({ 									      \
-    __thread_register = (void *) (tcbp) + TLS_TCB_OFFSET;		      \
-    THREAD_SET_TM_CAPABLE (__tcb_hwcap & PPC_FEATURE2_HAS_HTM ? 1 : 0);	      \
-    THREAD_SET_HWCAP (__tcb_hwcap);					      \
-    THREAD_SET_AT_PLATFORM (__tcb_platform);				      \
-    NULL;								      \
-  })
-
-/* Value passed to 'clone' for initialization of the thread register.  */
-# define TLS_DEFINE_INIT_TP(tp, pd) \
-    void *tp = (void *) (pd) + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE;	      \
-    (((tcbhead_t *) ((char *) tp - TLS_TCB_OFFSET))[-1].tm_capable) =	      \
-      THREAD_GET_TM_CAPABLE ();						      \
-    (((tcbhead_t *) ((char *) tp - TLS_TCB_OFFSET))[-1].hwcap) =	      \
-      THREAD_GET_HWCAP ();						      \
-    (((tcbhead_t *) ((char *) tp - TLS_TCB_OFFSET))[-1].at_platform) =	      \
-      THREAD_GET_AT_PLATFORM ();
-
-/* Return the address of the dtv for the current thread.  */
-# define THREAD_DTV() \
-    (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv)
-
-/* Return the thread descriptor for the current thread.  */
-# define THREAD_SELF \
-    ((struct pthread *) (__thread_register \
-			 - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
-
-/* Magic for libthread_db to know how to do THREAD_SELF.  */
-# define DB_THREAD_SELF							      \
-  REGISTER (32, 32, PT_THREAD_POINTER * 4,				      \
-	    - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)			      \
-  REGISTER (64, 64, PT_THREAD_POINTER * 8,				      \
-	    - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)
-
-/* Read member of the thread descriptor directly.  */
-# define THREAD_GETMEM(descr, member) ((void)(descr), (THREAD_SELF)->member)
-
-/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */
-# define THREAD_GETMEM_NC(descr, member, idx) \
-    ((void)(descr), (THREAD_SELF)->member[idx])
-
-/* Set member of the thread descriptor directly.  */
-# define THREAD_SETMEM(descr, member, value) \
-    ((void)(descr), (THREAD_SELF)->member = (value))
-
-/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */
-# define THREAD_SETMEM_NC(descr, member, idx, value) \
-    ((void)(descr), (THREAD_SELF)->member[idx] = (value))
-
-/* Set the stack guard field in TCB head.  */
-# define THREAD_SET_STACK_GUARD(value) \
-    (((tcbhead_t *) ((char *) __thread_register				      \
-		     - TLS_TCB_OFFSET))[-1].stack_guard = (value))
-# define THREAD_COPY_STACK_GUARD(descr) \
-    (((tcbhead_t *) ((char *) (descr)					      \
-		     + TLS_PRE_TCB_SIZE))[-1].stack_guard		      \
-     = ((tcbhead_t *) ((char *) __thread_register			      \
-		       - TLS_TCB_OFFSET))[-1].stack_guard)
-
-/* Set the stack guard field in TCB head.  */
-# define THREAD_GET_POINTER_GUARD() \
-    (((tcbhead_t *) ((char *) __thread_register				      \
-		     - TLS_TCB_OFFSET))[-1].pointer_guard)
-# define THREAD_SET_POINTER_GUARD(value) \
-    (THREAD_GET_POINTER_GUARD () = (value))
-# define THREAD_COPY_POINTER_GUARD(descr) \
-    (((tcbhead_t *) ((char *) (descr)					      \
-		     + TLS_PRE_TCB_SIZE))[-1].pointer_guard		      \
-     = THREAD_GET_POINTER_GUARD())
-
-/* tm_capable field in TCB head.  */
-# define THREAD_GET_TM_CAPABLE() \
-    (((tcbhead_t *) ((char *) __thread_register				      \
-		     - TLS_TCB_OFFSET))[-1].tm_capable)
-# define THREAD_SET_TM_CAPABLE(value) \
-    (THREAD_GET_TM_CAPABLE () = (value))
-
-/* hwcap field in TCB head.  */
-# define THREAD_GET_HWCAP() \
-    (((tcbhead_t *) ((char *) __thread_register				      \
-		     - TLS_TCB_OFFSET))[-1].hwcap)
-# define THREAD_SET_HWCAP(value) \
-    (THREAD_GET_HWCAP () = (value))
-
-/* at_platform field in TCB head.  */
-# define THREAD_GET_AT_PLATFORM() \
-    (((tcbhead_t *) ((char *) __thread_register				      \
-		     - TLS_TCB_OFFSET))[-1].at_platform)
-# define THREAD_SET_AT_PLATFORM(value) \
-    (THREAD_GET_AT_PLATFORM () = (value))
-
-/* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some
-   different value to mean unset l_tls_offset.  */
-# define NO_TLS_OFFSET		-1
-
-/* Get and set the global scope generation counter in struct pthread.  */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED   1
-#define THREAD_GSCOPE_FLAG_WAIT   2
-#define THREAD_GSCOPE_RESET_FLAG() \
-  do									     \
-    { int __res								     \
-	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
-			       THREAD_GSCOPE_FLAG_UNUSED);		     \
-      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
-	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
-    }									     \
-  while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
-  do									     \
-    {									     \
-      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
-      atomic_write_barrier ();						     \
-    }									     \
-  while (0)
-#define THREAD_GSCOPE_WAIT() \
-  GL(dl_wait_lookup_done) ()
-
-#endif /* __ASSEMBLER__ */
-
-#endif	/* tls.h */
diff --git a/sysdeps/powerpc/power4/fpu/Makefile b/sysdeps/powerpc/power4/fpu/Makefile
deleted file mode 100644
index e17d32f30e..0000000000
--- a/sysdeps/powerpc/power4/fpu/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# Makefile fragment for POWER4/5/5+ with FPU.
-
-ifeq ($(subdir),math)
-CFLAGS-mpa.c += --param max-unroll-times=4 -funroll-loops -fpeel-loops
-CPPFLAGS-slowpow.c += -DUSE_LONG_DOUBLE_FOR_MP=1
-CPPFLAGS-slowexp.c += -DUSE_LONG_DOUBLE_FOR_MP=1
-endif
diff --git a/sysdeps/powerpc/power4/fpu/mpa-arch.h b/sysdeps/powerpc/power4/fpu/mpa-arch.h
deleted file mode 100644
index 4754c1b0f9..0000000000
--- a/sysdeps/powerpc/power4/fpu/mpa-arch.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Overridable constants and operations.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
-   the Free Software Foundation; either version 2.1 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
-
-typedef double mantissa_t;
-typedef double mantissa_store_t;
-
-#define TWOPOW(i) (0x1.0p##i)
-
-#define RADIX TWOPOW (24)		/* 2^24    */
-#define CUTTER TWOPOW (76)		/* 2^76    */
-#define RADIXI 0x1.0p-24		/* 2^-24 */
-#define TWO52 TWOPOW (52)		/* 2^52 */
-
-/* Divide D by RADIX and put the remainder in R.  */
-#define DIV_RADIX(d,r) \
-  ({									      \
-    double u = ((d) + CUTTER) - CUTTER;					      \
-    if (u > (d))							      \
-      u -= RADIX;							      \
-    r = (d) - u;							      \
-    (d) = u * RADIXI;							      \
-  })
-
-/* Put the integer component of a double X in R and retain the fraction in
-   X.  */
-#define INTEGER_OF(x, r) \
-  ({									      \
-    double u = ((x) + TWO52) - TWO52;					      \
-    if (u > (x))							      \
-      u -= 1;								      \
-    (r) = u;								      \
-    (x) -= u;								      \
-  })
-
-/* Align IN down to a multiple of F, where F is a power of two.  */
-#define ALIGN_DOWN_TO(in, f) \
-  ({									      \
-    double factor = f * TWO52;						      \
-    double u = (in + factor) - factor;					      \
-    if (u > in)								      \
-      u -= f;								      \
-    u;									      \
-  })
diff --git a/sysdeps/powerpc/power4/fpu/mpa.c b/sysdeps/powerpc/power4/fpu/mpa.c
deleted file mode 100644
index 0a0f7175b4..0000000000
--- a/sysdeps/powerpc/power4/fpu/mpa.c
+++ /dev/null
@@ -1,214 +0,0 @@
-
-/*
- * IBM Accurate Mathematical Library
- * written by International Business Machines Corp.
- * Copyright (C) 2001-2017 Free Software Foundation, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-/* Define __mul and __sqr and use the rest from generic code.  */
-#define NO__MUL
-#define NO__SQR
-
-#include <sysdeps/ieee754/dbl-64/mpa.c>
-
-/* Multiply *X and *Y and store result in *Z.  X and Y may overlap but not X
-   and Z or Y and Z.  For P in [1, 2, 3], the exact result is truncated to P
-   digits.  In case P > 3 the error is bounded by 1.001 ULP.  */
-void
-__mul (const mp_no *x, const mp_no *y, mp_no *z, int p)
-{
-  long i, i1, i2, j, k, k2;
-  long p2 = p;
-  double u, zk, zk2;
-
-  /* Is z=0?  */
-  if (__glibc_unlikely (X[0] * Y[0] == 0))
-    {
-      Z[0] = 0;
-      return;
-    }
-
-  /* Multiply, add and carry */
-  k2 = (p2 < 3) ? p2 + p2 : p2 + 3;
-  zk = Z[k2] = 0;
-  for (k = k2; k > 1;)
-    {
-      if (k > p2)
-	{
-	  i1 = k - p2;
-	  i2 = p2 + 1;
-	}
-      else
-	{
-	  i1 = 1;
-	  i2 = k;
-	}
-#if 1
-      /* Rearrange this inner loop to allow the fmadd instructions to be
-         independent and execute in parallel on processors that have
-         dual symmetrical FP pipelines.  */
-      if (i1 < (i2 - 1))
-	{
-	  /* Make sure we have at least 2 iterations.  */
-	  if (((i2 - i1) & 1L) == 1L)
-	    {
-	      /* Handle the odd iterations case.  */
-	      zk2 = x->d[i2 - 1] * y->d[i1];
-	    }
-	  else
-	    zk2 = 0.0;
-	  /* Do two multiply/adds per loop iteration, using independent
-	     accumulators; zk and zk2.  */
-	  for (i = i1, j = i2 - 1; i < i2 - 1; i += 2, j -= 2)
-	    {
-	      zk += x->d[i] * y->d[j];
-	      zk2 += x->d[i + 1] * y->d[j - 1];
-	    }
-	  zk += zk2;		/* Final sum.  */
-	}
-      else
-	{
-	  /* Special case when iterations is 1.  */
-	  zk += x->d[i1] * y->d[i1];
-	}
-#else
-      /* The original code.  */
-      for (i = i1, j = i2 - 1; i < i2; i++, j--)
-	zk += X[i] * Y[j];
-#endif
-
-      u = (zk + CUTTER) - CUTTER;
-      if (u > zk)
-	u -= RADIX;
-      Z[k] = zk - u;
-      zk = u * RADIXI;
-      --k;
-    }
-  Z[k] = zk;
-
-  int e = EX + EY;
-  /* Is there a carry beyond the most significant digit?  */
-  if (Z[1] == 0)
-    {
-      for (i = 1; i <= p2; i++)
-	Z[i] = Z[i + 1];
-      e--;
-    }
-
-  EZ = e;
-  Z[0] = X[0] * Y[0];
-}
-
-/* Square *X and store result in *Y.  X and Y may not overlap.  For P in
-   [1, 2, 3], the exact result is truncated to P digits.  In case P > 3 the
-   error is bounded by 1.001 ULP.  This is a faster special case of
-   multiplication.  */
-void
-__sqr (const mp_no *x, mp_no *y, int p)
-{
-  long i, j, k, ip;
-  double u, yk;
-
-  /* Is z=0?  */
-  if (__glibc_unlikely (X[0] == 0))
-    {
-      Y[0] = 0;
-      return;
-    }
-
-  /* We need not iterate through all X's since it's pointless to
-     multiply zeroes.  */
-  for (ip = p; ip > 0; ip--)
-    if (X[ip] != 0)
-      break;
-
-  k = (__glibc_unlikely (p < 3)) ? p + p : p + 3;
-
-  while (k > 2 * ip + 1)
-    Y[k--] = 0;
-
-  yk = 0;
-
-  while (k > p)
-    {
-      double yk2 = 0.0;
-      long lim = k / 2;
-
-      if (k % 2 == 0)
-        {
-	  yk += X[lim] * X[lim];
-	  lim--;
-	}
-
-      /* In __mul, this loop (and the one within the next while loop) run
-         between a range to calculate the mantissa as follows:
-
-         Z[k] = X[k] * Y[n] + X[k+1] * Y[n-1] ... + X[n-1] * Y[k+1]
-		+ X[n] * Y[k]
-
-         For X == Y, we can get away with summing halfway and doubling the
-	 result.  For cases where the range size is even, the mid-point needs
-	 to be added separately (above).  */
-      for (i = k - p, j = p; i <= lim; i++, j--)
-	yk2 += X[i] * X[j];
-
-      yk += 2.0 * yk2;
-
-      u = (yk + CUTTER) - CUTTER;
-      if (u > yk)
-	u -= RADIX;
-      Y[k--] = yk - u;
-      yk = u * RADIXI;
-    }
-
-  while (k > 1)
-    {
-      double yk2 = 0.0;
-      long lim = k / 2;
-
-      if (k % 2 == 0)
-        {
-	  yk += X[lim] * X[lim];
-	  lim--;
-	}
-
-      /* Likewise for this loop.  */
-      for (i = 1, j = k - 1; i <= lim; i++, j--)
-	yk2 += X[i] * X[j];
-
-      yk += 2.0 * yk2;
-
-      u = (yk + CUTTER) - CUTTER;
-      if (u > yk)
-	u -= RADIX;
-      Y[k--] = yk - u;
-      yk = u * RADIXI;
-    }
-  Y[k] = yk;
-
-  /* Squares are always positive.  */
-  Y[0] = 1.0;
-
-  int e = EX * 2;
-  /* Is there a carry beyond the most significant digit?  */
-  if (__glibc_unlikely (Y[1] == 0))
-    {
-      for (i = 1; i <= p; i++)
-	Y[i] = Y[i + 1];
-      e--;
-    }
-  EY = e;
-}
diff --git a/sysdeps/powerpc/power4/wordcopy.c b/sysdeps/powerpc/power4/wordcopy.c
deleted file mode 100644
index 2648e25c58..0000000000
--- a/sysdeps/powerpc/power4/wordcopy.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/* _memcopy.c -- subroutines for memory copy functions.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* BE VERY CAREFUL IF YOU CHANGE THIS CODE...!  */
-
-#include <stddef.h>
-#include <memcopy.h>
-
-/* _wordcopy_fwd_aligned -- Copy block beginning at SRCP to
-   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
-   Both SRCP and DSTP should be aligned for memory operations on `op_t's.  */
-
-#ifndef WORDCOPY_FWD_ALIGNED
-# define WORDCOPY_FWD_ALIGNED _wordcopy_fwd_aligned
-#endif
-
-void
-WORDCOPY_FWD_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1;
-
-  if (len & 1)
-  {
-    ((op_t *) dstp)[0] = ((op_t *) srcp)[0];
-
-    if (len == 1)
-      return;
-    srcp += OPSIZ;
-    dstp += OPSIZ;
-    len -= 1;
-  }
-
-  do
-    {
-      a0 = ((op_t *) srcp)[0];
-      a1 = ((op_t *) srcp)[1];
-      ((op_t *) dstp)[0] = a0;
-      ((op_t *) dstp)[1] = a1;
-
-      srcp += 2 * OPSIZ;
-      dstp += 2 * OPSIZ;
-      len -= 2;
-    }
-  while (len != 0);
-}
-
-/* _wordcopy_fwd_dest_aligned -- Copy block beginning at SRCP to
-   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
-   DSTP should be aligned for memory operations on `op_t's, but SRCP must
-   *not* be aligned.  */
-
-#ifndef WORDCOPY_FWD_DEST_ALIGNED
-# define WORDCOPY_FWD_DEST_ALIGNED _wordcopy_fwd_dest_aligned
-#endif
-
-void
-WORDCOPY_FWD_DEST_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1, a2;
-  int sh_1, sh_2;
-
-  /* Calculate how to shift a word read at the memory operation
-     aligned srcp to make it aligned for copy.  */
-
-  sh_1 = 8 * (srcp % OPSIZ);
-  sh_2 = 8 * OPSIZ - sh_1;
-
-  /* Make SRCP aligned by rounding it down to the beginning of the `op_t'
-     it points in the middle of.  */
-  srcp &= -OPSIZ;
-  a0 = ((op_t *) srcp)[0];
-
-  if (len & 1)
-  {
-    a1 = ((op_t *) srcp)[1];
-    ((op_t *) dstp)[0] = MERGE (a0, sh_1, a1, sh_2);
-
-    if (len == 1)
-      return;
-
-    a0 = a1;
-    srcp += OPSIZ;
-    dstp += OPSIZ;
-    len -= 1;
-  }
-
-  do
-    {
-      a1 = ((op_t *) srcp)[1];
-      a2 = ((op_t *) srcp)[2];
-      ((op_t *) dstp)[0] = MERGE (a0, sh_1, a1, sh_2);
-      ((op_t *) dstp)[1] = MERGE (a1, sh_1, a2, sh_2);
-      a0 = a2;
-
-      srcp += 2 * OPSIZ;
-      dstp += 2 * OPSIZ;
-      len -= 2;
-    }
-  while (len != 0);
-}
-
-/* _wordcopy_bwd_aligned -- Copy block finishing right before
-   SRCP to block finishing right before DSTP with LEN `op_t' words
-   (not LEN bytes!).  Both SRCP and DSTP should be aligned for memory
-   operations on `op_t's.  */
-
-#ifndef WORDCOPY_BWD_ALIGNED
-# define WORDCOPY_BWD_ALIGNED _wordcopy_bwd_aligned
-#endif
-
-void
-WORDCOPY_BWD_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1;
-
-  if (len & 1)
-  {
-    srcp -= OPSIZ;
-    dstp -= OPSIZ;
-    ((op_t *) dstp)[0] = ((op_t *) srcp)[0];
-
-    if (len == 1)
-      return;
-    len -= 1;
-  }
-
-  do
-    {
-      srcp -= 2 * OPSIZ;
-      dstp -= 2 * OPSIZ;
-
-      a1 = ((op_t *) srcp)[1];
-      a0 = ((op_t *) srcp)[0];
-      ((op_t *) dstp)[1] = a1;
-      ((op_t *) dstp)[0] = a0;
-
-      len -= 2;
-    }
-  while (len != 0);
-}
-
-/* _wordcopy_bwd_dest_aligned -- Copy block finishing right
-   before SRCP to block finishing right before DSTP with LEN `op_t'
-   words (not LEN bytes!).  DSTP should be aligned for memory
-   operations on `op_t', but SRCP must *not* be aligned.  */
-
-#ifndef WORDCOPY_BWD_DEST_ALIGNED
-# define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned
-#endif
-
-void
-WORDCOPY_BWD_DEST_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1, a2;
-  int sh_1, sh_2;
-
-  /* Calculate how to shift a word read at the memory operation
-     aligned srcp to make it aligned for copy.  */
-
-  sh_1 = 8 * (srcp % OPSIZ);
-  sh_2 = 8 * OPSIZ - sh_1;
-
-  /* Make srcp aligned by rounding it down to the beginning of the op_t
-     it points in the middle of.  */
-  srcp &= -OPSIZ;
-  a2 = ((op_t *) srcp)[0];
-
-  if (len & 1)
-  {
-    srcp -= OPSIZ;
-    dstp -= OPSIZ;
-    a1 = ((op_t *) srcp)[0];
-    ((op_t *) dstp)[0] = MERGE (a1, sh_1, a2, sh_2);
-
-    if (len == 1)
-      return;
-
-    a2 = a1;
-    len -= 1;
-  }
-
-  do
-    {
-      srcp -= 2 * OPSIZ;
-      dstp -= 2 * OPSIZ;
-
-      a1 = ((op_t *) srcp)[1];
-      a0 = ((op_t *) srcp)[0];
-      ((op_t *) dstp)[1] = MERGE (a1, sh_1, a2, sh_2);
-      ((op_t *) dstp)[0] = MERGE (a0, sh_1, a1, sh_2);
-      a2 = a0;
-
-      len -= 2;
-    }
-  while (len != 0);
-}
diff --git a/sysdeps/powerpc/power5+/fpu/s_modf.c b/sysdeps/powerpc/power5+/fpu/s_modf.c
deleted file mode 100644
index ee0c62874b..0000000000
--- a/sysdeps/powerpc/power5+/fpu/s_modf.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <math_ldbl_opt.h>
-
-double
-__modf (double x, double *iptr)
-{
-  if (__builtin_isinf (x))
-    {
-      *iptr = x;
-      return __copysign (0.0, x);
-    }
-  else if (__builtin_isnan (x))
-    {
-      *iptr = NAN;
-      return NAN;
-    }
-
-  if (x >= 0.0)
-    {
-      *iptr = __floor (x);
-      return __copysign (x - *iptr, x);
-    }
-  else
-    {
-      *iptr = __ceil (x);
-      return __copysign (x - *iptr, x);
-    }
-}
-weak_alias (__modf, modf)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __modf, modfl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/power5+/fpu/s_modff.c b/sysdeps/powerpc/power5+/fpu/s_modff.c
deleted file mode 100644
index 35bed46fa7..0000000000
--- a/sysdeps/powerpc/power5+/fpu/s_modff.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-
-float
-__modff (float x, float *iptr)
-{
-  if (__builtin_isinff (x))
-    {
-      *iptr = x;
-      return __copysignf (0.0, x);
-    }
-  else if (__builtin_isnanf (x))
-    {
-      *iptr = NAN;
-      return NAN;
-    }
-
-  if (x >= 0.0)
-    {
-      *iptr = __floorf (x);
-      return __copysignf (x - *iptr, x);
-    }
-  else
-    {
-      *iptr = __ceilf (x);
-      return __copysignf (x - *iptr, x);
-    }
-}
-weak_alias (__modff, modff)
diff --git a/sysdeps/powerpc/power6/wcschr.c b/sysdeps/powerpc/power6/wcschr.c
deleted file mode 100644
index a416f31f7c..0000000000
--- a/sysdeps/powerpc/power6/wcschr.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* wcschr.c - Wide Character Search for POWER6+.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#ifndef WCSCHR
-# define WCSCHR __wcschr
-# define DEFAULT_WCSCHR
-#endif
-
-/* Find the first occurrence of WC in WCS.  */
-wchar_t *
-WCSCHR (const wchar_t *wcs, const wchar_t wc)
-{
-  const wchar_t *wcs2 = wcs + 1;
-
-  if (*wcs == wc)
-    return (wchar_t *) wcs;
-  if (*wcs == L'\0')
-    return NULL;
-
-  do
-    {
-      wcs += 2;
-
-      if (*wcs2 == wc)
-        return (wchar_t *) wcs2;
-      if (*wcs2 == L'\0')
-        return NULL;
-       wcs2 += 2;
-
-      if (*wcs == wc)
-        return (wchar_t *) wcs;
-      if (*wcs == L'\0')
-        return NULL;
-      wcs += 2;
-
-      if (*wcs2 == wc)
-        return (wchar_t *) wcs2;
-      if (*wcs2 == L'\0')
-        return NULL;
-      wcs2 += 2;
-
-      if (*wcs == wc)
-        return (wchar_t *) wcs;
-      if (*wcs == L'\0')
-        return NULL;
-      wcs += 2;
-
-      if (*wcs2 == wc)
-        return (wchar_t *) wcs2;
-      if (*wcs2 == L'\0')
-        return NULL;
-      wcs2 += 2;
-
-      if (*wcs == wc)
-        return (wchar_t *) wcs;
-      if (*wcs == L'\0')
-        return NULL;
-      wcs += 2;
-
-      if (*wcs2 == wc)
-        return (wchar_t *) wcs2;
-      if (*wcs2 == L'\0')
-        return NULL;
-      wcs2 += 2;
-
-      if (*wcs == wc)
-        return (wchar_t *) wcs;
-    }
-  while (*wcs != L'\0');
-
-  return NULL;
-}
-#ifdef DEFAULT_WCSCHR
-libc_hidden_def (__wcschr)
-weak_alias (__wcschr, wcschr)
-libc_hidden_weak (wcschr)
-#else
-libc_hidden_def (wcschr)
-#endif
diff --git a/sysdeps/powerpc/power6/wcscpy.c b/sysdeps/powerpc/power6/wcscpy.c
deleted file mode 100644
index e6de240746..0000000000
--- a/sysdeps/powerpc/power6/wcscpy.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* wcscpy.c - Wide Character Copy for POWER6+.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <stddef.h>
-#include <wchar.h>
-
-#ifndef WCSCPY
-# define WCSCPY wcscpy
-#endif
-
-/* Copy SRC to DEST.  */
-wchar_t *
-WCSCPY (wchar_t *dest, const wchar_t *src)
-{
-  wint_t c,d;
-  wchar_t *wcp, *wcp2;
-
-  if (__alignof__ (wchar_t) >= sizeof (wchar_t))
-    {
-      const ptrdiff_t off = dest - src;
-
-      wcp = (wchar_t *) src;
-      wcp2 = wcp + 1 ;
-
-      do
-        {
-          d = *wcp;
-          wcp[off] = d;
-          if (d == L'\0')
-            return dest;
-          wcp += 2;
-
-          c = *wcp2;
-          wcp2[off] = c;
-          if (c == L'\0')
-            return dest;
-          wcp2 += 2;
-
-          d = *wcp;
-          wcp[off] = d;
-          if (d == L'\0')
-            return dest;
-          wcp += 2;
-
-          c = *wcp2;
-          wcp2[off] = c;
-          if (c == L'\0')
-            return dest;
-          wcp2 += 2;
-
-          d = *wcp;
-          wcp[off] = d;
-          if (d == L'\0')
-            return dest;
-          wcp += 2;
-
-          c = *wcp2;
-          wcp2[off] = c;
-          if (c == L'\0')
-            return dest;
-          wcp2 += 2;
-
-          d = *wcp;
-          wcp[off] = d;
-          if (d == L'\0')
-            return dest;
-          wcp += 2;
-
-          c = *wcp2;
-          wcp2[off] = c;
-          if (c == L'\0')
-            return dest;
-          wcp2 += 2;
-        }
-      while (c != L'\0');
-
-    }
-  else
-    {
-      wcp = dest;
-
-      do
-        {
-          c = *src++;
-          *wcp++ = c;
-        }
-      while (c != L'\0');
-    }
-  return dest;
-}
diff --git a/sysdeps/powerpc/power6/wcsrchr.c b/sysdeps/powerpc/power6/wcsrchr.c
deleted file mode 100644
index f9fb399b31..0000000000
--- a/sysdeps/powerpc/power6/wcsrchr.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* wcsrchr.c - Wide Character Reverse Search for POWER6+.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#ifndef WCSRCHR
-# define WCSRCHR wcsrchr
-#endif
-
-/* Find the last occurrence of WC in WCS.  */
-wchar_t *
-WCSRCHR (const wchar_t *wcs, const wchar_t wc)
-{
-  const wchar_t *wcs2 = wcs + 1;
-  const wchar_t *retval = NULL;
-
-  if (*wcs == wc)
-    retval = wcs;
-
-  if (*wcs == L'\0') return (wchar_t *) retval;
-
-  do
-    {
-    wcs+=2;
-
-    if (*wcs2 == wc)
-      retval = wcs2;
-    if (*wcs2 == L'\0')
-      return (wchar_t *) retval;
-    wcs2+=2;
-
-    if (*wcs == wc)
-      retval = wcs;
-    if (*wcs == L'\0')
-      return (wchar_t *) retval;
-    wcs+=2;
-
-    if (*wcs2 == wc)
-      retval = wcs2;
-    if (*wcs2 == L'\0')
-      return (wchar_t *) retval;
-    wcs2+=2;
-
-    if (*wcs == wc)
-      retval = wcs;
-    if (*wcs == L'\0')
-      return (wchar_t *) retval;
-    wcs+=2;
-
-    if (*wcs2 == wc)
-      retval = wcs2;
-    if (*wcs2 == L'\0')
-      return (wchar_t *) retval;
-    wcs2+=2;
-
-    if (*wcs == wc)
-      retval = wcs;
-    if (*wcs == L'\0')
-      return (wchar_t *) retval;
-    wcs+=2;
-
-    if (*wcs2 == wc)
-      retval = wcs2;
-    if (*wcs2 == L'\0')
-      return (wchar_t *) retval;
-    wcs2+=2;
-
-    if (*wcs == wc)
-      retval = wcs;
-    }
-  while (*wcs != L'\0');
-
-  return (wchar_t *) retval;
-}
diff --git a/sysdeps/powerpc/power6/wordcopy.c b/sysdeps/powerpc/power6/wordcopy.c
deleted file mode 100644
index 545a67bf5d..0000000000
--- a/sysdeps/powerpc/power6/wordcopy.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* _memcopy.c -- subroutines for memory copy functions.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-   Updated for POWER6 by Steven Munroe (sjmunroe@us.ibm.com).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* BE VERY CAREFUL IF YOU CHANGE THIS CODE...!  */
-
-#include <stddef.h>
-#include <memcopy.h>
-
-/* _wordcopy_fwd_aligned -- Copy block beginning at SRCP to
-   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
-   Both SRCP and DSTP should be aligned for memory operations on `op_t's.  */
-
-#ifndef WORDCOPY_FWD_ALIGNED
-# define WORDCOPY_FWD_ALIGNED _wordcopy_fwd_aligned
-#endif
-
-void
-WORDCOPY_FWD_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1;
-
-  if (len & 1)
-  {
-    ((op_t *) dstp)[0] = ((op_t *) srcp)[0];
-
-    if (len == 1)
-      return;
-    srcp += OPSIZ;
-    dstp += OPSIZ;
-    len -= 1;
-  }
-
-  do
-    {
-      a0 = ((op_t *) srcp)[0];
-      a1 = ((op_t *) srcp)[1];
-      ((op_t *) dstp)[0] = a0;
-      ((op_t *) dstp)[1] = a1;
-
-      srcp += 2 * OPSIZ;
-      dstp += 2 * OPSIZ;
-      len -= 2;
-    }
-  while (len != 0);
-}
-
-/* _wordcopy_fwd_dest_aligned -- Copy block beginning at SRCP to
-   block beginning at DSTP with LEN `op_t' words (not LEN bytes!).
-   DSTP should be aligned for memory operations on `op_t's, but SRCP must
-   *not* be aligned.  */
-
-#define fwd_align_merge(align)                                         \
-  do                                                                   \
-    {                                                                  \
-      a1 = ((op_t *) srcp)[1];                                         \
-      a2 = ((op_t *) srcp)[2];                                         \
-      ((op_t *) dstp)[0] = MERGE (a0, align*8, a1, (__WORDSIZE-align*8)); \
-      ((op_t *) dstp)[1] = MERGE (a1, align*8, a2, (__WORDSIZE-align*8)); \
-      a0 = a2;                                                         \
-      srcp += 2 * OPSIZ;                                               \
-      dstp += 2 * OPSIZ;                                               \
-      len -= 2;                                                                \
-    }                                                                  \
-  while (len != 0)
-
-#ifndef WORDCOPY_FWD_DEST_ALIGNED
-# define WORDCOPY_FWD_DEST_ALIGNED _wordcopy_fwd_dest_aligned
-#endif
-
-void
-WORDCOPY_FWD_DEST_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1, a2;
-  int sh_1, sh_2;
-  int align;
-
-  /* Calculate how to shift a word read at the memory operation
-     aligned srcp to make it aligned for copy.  */
-
-  align = srcp % OPSIZ;
-  sh_1 = 8 * (srcp % OPSIZ);
-  sh_2 = 8 * OPSIZ - sh_1;
-
-  /* Make SRCP aligned by rounding it down to the beginning of the `op_t'
-     it points in the middle of.  */
-  srcp &= -OPSIZ;
-  a0 = ((op_t *) srcp)[0];
-
-  if (len & 1)
-  {
-    a1 = ((op_t *) srcp)[1];
-    ((op_t *) dstp)[0] = MERGE (a0, sh_1, a1, sh_2);
-
-    if (len == 1)
-      return;
-
-    a0 = a1;
-    srcp += OPSIZ;
-    dstp += OPSIZ;
-    len -= 1;
-  }
-
-  fwd_align_merge (align);
-
-}
-
-/* _wordcopy_bwd_aligned -- Copy block finishing right before
-   SRCP to block finishing right before DSTP with LEN `op_t' words
-   (not LEN bytes!).  Both SRCP and DSTP should be aligned for memory
-   operations on `op_t's.  */
-
-#ifndef WORDCOPY_BWD_ALIGNED
-# define WORDCOPY_BWD_ALIGNED _wordcopy_bwd_aligned
-#endif
-
-void
-WORDCOPY_BWD_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1;
-
-  if (len & 1)
-  {
-    srcp -= OPSIZ;
-    dstp -= OPSIZ;
-    ((op_t *) dstp)[0] = ((op_t *) srcp)[0];
-
-    if (len == 1)
-      return;
-    len -= 1;
-  }
-
-  do
-    {
-      srcp -= 2 * OPSIZ;
-      dstp -= 2 * OPSIZ;
-
-      a1 = ((op_t *) srcp)[1];
-      a0 = ((op_t *) srcp)[0];
-      ((op_t *) dstp)[1] = a1;
-      ((op_t *) dstp)[0] = a0;
-
-      len -= 2;
-    }
-  while (len != 0);
-}
-
-#define bwd_align_merge(align)                                         \
-  do                                                                   \
-    {                                                                  \
-      srcp -= 2 * OPSIZ;                                               \
-      dstp -= 2 * OPSIZ;                                               \
-      a1 = ((op_t *) srcp)[1];                                         \
-      a0 = ((op_t *) srcp)[0];                                         \
-      ((op_t *) dstp)[1] = MERGE (a1, align*8, a2, (__WORDSIZE-align*8)); \
-      ((op_t *) dstp)[0] = MERGE (a0, align*8, a1, (__WORDSIZE-align*8)); \
-      a2 = a0;                                                         \
-      len -= 2;                                                                \
-    }                                                                  \
-  while (len != 0)
-
-/* _wordcopy_bwd_dest_aligned -- Copy block finishing right
-   before SRCP to block finishing right before DSTP with LEN `op_t'
-   words (not LEN bytes!).  DSTP should be aligned for memory
-   operations on `op_t', but SRCP must *not* be aligned.  */
-
-#ifndef WORDCOPY_BWD_DEST_ALIGNED
-# define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned
-#endif
-
-void
-WORDCOPY_BWD_DEST_ALIGNED (long int dstp, long int srcp, size_t len)
-{
-  op_t a0, a1, a2;
-  int sh_1, sh_2;
-  int align;
-
-  /* Calculate how to shift a word read at the memory operation
-     aligned srcp to make it aligned for copy.  */
-
-  align = srcp % OPSIZ;
-  sh_1 = 8 * (srcp % OPSIZ);
-  sh_2 = 8 * OPSIZ - sh_1;
-
-  /* Make srcp aligned by rounding it down to the beginning of the op_t
-     it points in the middle of.  */
-  srcp &= -OPSIZ;
-  a2 = ((op_t *) srcp)[0];
-
-  if (len & 1)
-  {
-    srcp -= OPSIZ;
-    dstp -= OPSIZ;
-    a1 = ((op_t *) srcp)[0];
-    ((op_t *) dstp)[0] = MERGE (a1, sh_1, a2, sh_2);
-
-    if (len == 1)
-      return;
-
-    a2 = a1;
-    len -= 1;
-  }
-
-  bwd_align_merge (align);
-}
diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/power7/fpu/s_logb.c
deleted file mode 100644
index af74b1d024..0000000000
--- a/sysdeps/powerpc/power7/fpu/s_logb.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* logb(). PowerPC/POWER7 version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math_ldbl_opt.h>
-
-/* This implementation avoids FP to INT conversions by using VSX
-   bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* 2**10 -1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
-double
-__logb (double x)
-{
-  double ret;
-
-  if (__builtin_expect (x == 0.0, 0))
-    /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
-    return -1.0 / __builtin_fabs (x);
-
-  /* ret = x & 0x7ff0000000000000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f" (ret)
-    : "f" (x), "f" (mask.d));
-  /* ret = (ret >> 52) - 1023.0;  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two10m1, 0))
-    /* Multiplication is used to set logb (+-INF) = INF.  */
-    return (x * x);
-  else if (__builtin_expect (ret == two10m1, 0))
-    {
-      /* POSIX specifies that denormal numbers are treated as
-         though they were normalized.  */
-      int32_t lx, ix;
-      int ma;
-
-      EXTRACT_WORDS (ix, lx, x);
-      ix &= 0x7fffffff;
-      if (ix == 0)
-	ma = __builtin_clz (lx) + 32;
-      else
-	ma = __builtin_clz (ix);
-      return (double) (-1023 - (ma - 12));
-    }
-  /* Test to avoid logb_downward (0.0) == -0.0.  */
-  return ret == -0.0 ? 0.0 : ret;
-}
-weak_alias (__logb, logb)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, logb, logbl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/power7/fpu/s_logbf.c b/sysdeps/powerpc/power7/fpu/s_logbf.c
deleted file mode 100644
index 1461327cd1..0000000000
--- a/sysdeps/powerpc/power7/fpu/s_logbf.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* logbf(). PowerPC/POWER7 version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "math_private.h"
-
-/* This implementation avoids FP to INT conversions by using VSX
-   bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* -2**10 + 1  */
-static const double two7m1    = -127.0;			/* -2**7 + 1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
-float
-__logbf (float x)
-{
-  /* VSX operation are all done internally as double.  */
-  double ret;
-
-  if (__builtin_expect (x == 0.0, 0))
-    /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
-    return -1.0 / __builtin_fabsf (x);
-
-  /* ret = x & 0x7f800000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f"(ret)
-    : "f" (x), "f" (mask.d));
-  /* ret = (ret >> 52) - 1023.0, since ret is double.  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two7m1, 0))
-    /* Multiplication is used to set logb (+-INF) = INF.  */
-    return (x * x);
-  /* Since operations are done with double we don't need
-     additional tests for subnormal numbers.
-     The test is to avoid logb_downward (0.0) == -0.0.  */
-  return ret == -0.0 ? 0.0 : ret;
-}
-weak_alias (__logbf, logbf)
diff --git a/sysdeps/powerpc/power7/fpu/s_logbl.c b/sysdeps/powerpc/power7/fpu/s_logbl.c
deleted file mode 100644
index 3ae383a831..0000000000
--- a/sysdeps/powerpc/power7/fpu/s_logbl.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* logbl(). PowerPC/POWER7 version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <math_ldbl_opt.h>
-
-/* This implementation avoids FP to INT conversions by using VSX
-   bitwise instructions over FP values.  */
-
-static const double two1div52 = 2.220446049250313e-16;	/* 1/2**52  */
-static const double two10m1   = -1023.0;		/* 2**10 -1  */
-
-/* FP mask to extract the exponent.  */
-static const union {
-  unsigned long long mask;
-  double d;
-} mask = { 0x7ff0000000000000ULL };
-
-long double
-__logbl (long double x)
-{
-  double xh, xl;
-  double ret;
-  int64_t hx;
-
-  if (__builtin_expect (x == 0.0L, 0))
-    /* Raise FE_DIVBYZERO and return -HUGE_VAL[LF].  */
-    return -1.0L / __builtin_fabsl (x);
-
-  ldbl_unpack (x, &xh, &xl);
-  EXTRACT_WORDS64 (hx, xh);
-  /* ret = x & 0x7ff0000000000000;  */
-  asm (
-    "xxland %x0,%x1,%x2\n"
-    "fcfid  %0,%0"
-    : "=f" (ret)
-    : "f" (xh), "f" (mask.d));
-  /* ret = (ret >> 52) - 1023.0;  */
-  ret = (ret * two1div52) + two10m1;
-  if (__builtin_expect (ret > -two10m1, 0))
-    /* Multiplication is used to set logb (+-INF) = INF.  */
-    return (xh * xh);
-  else if (__builtin_expect (ret == two10m1, 0))
-    {
-      /* POSIX specifies that denormal number is treated as
-         though it were normalized.  */
-      return (long double) (- (__builtin_clzll (hx & 0x7fffffffffffffffLL) \
-			       - 12) - 1023);
-    }
-  else if ((hx & 0x000fffffffffffffLL) == 0)
-    {
-      /* If the high part is a power of 2, and the low part is nonzero
-	 with the opposite sign, the low part affects the
-	 exponent.  */
-      int64_t lx, rhx;
-      EXTRACT_WORDS64 (lx, xl);
-      rhx = (hx & 0x7ff0000000000000LL) >> 52;
-      if ((hx ^ lx) < 0 && (lx & 0x7fffffffffffffffLL) != 0)
-	rhx--;
-      return (long double) (rhx - 1023);
-    }
-  /* Test to avoid logb_downward (0.0) == -0.0.  */
-  return ret == -0.0 ? 0.0 : ret;
-}
-#ifndef __logbl
-long_double_symbol (libm, __logbl, logbl);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/405/memcmp.S b/sysdeps/powerpc/powerpc32/405/memcmp.S
deleted file mode 100644
index d1865140eb..0000000000
--- a/sysdeps/powerpc/powerpc32/405/memcmp.S
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Optimized memcmp implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* memcmp
-
-       r3:source1 address, return equality
-       r4:source2 address
-       r5:byte count
-
-       Check 2 words from src1 and src2. If unequal jump to end and
-       return src1 > src2 or src1 < src2.
-       If count = zero check bytes before zero counter and then jump to end and
-       return src1 > src2, src1 < src2 or src1 = src2.
-       If src1 = src2 and no null, repeat. */
-
-EALIGN (memcmp, 5, 0)
-       srwi.   r6,r5,5
-       beq     L(preword2_count_loop)
-       mtctr   r6
-       clrlwi  r5,r5,27
-
-L(word8_compare_loop):
-       lwz     r10,0(r3)
-       lwz     r6,4(r3)
-       lwz     r8,0(r4)
-       lwz     r9,4(r4)
-       cmplw   cr5,r8,r10
-       cmplw   cr1,r9,r6
-       bne     cr5,L(st2)
-       bne     cr1,L(st1)
-       lwz     r10,8(r3)
-       lwz     r6,12(r3)
-       lwz     r8,8(r4)
-       lwz     r9,12(r4)
-       cmplw   cr5,r8,r10
-       cmplw   cr1,r9,r6
-       bne     cr5,L(st2)
-       bne     cr1,L(st1)
-       lwz     r10,16(r3)
-       lwz     r6,20(r3)
-       lwz     r8,16(r4)
-       lwz     r9,20(r4)
-       cmplw   cr5,r8,r10
-       cmplw   cr1,r9,r6
-       bne     cr5,L(st2)
-       bne     cr1,L(st1)
-       lwz     r10,24(r3)
-       lwz     r6,28(r3)
-       addi    r3,r3,0x20
-       lwz     r8,24(r4)
-       lwz     r9,28(r4)
-       addi    r4,r4,0x20
-       cmplw   cr5,r8,r10
-       cmplw   cr1,r9,r6
-       bne     cr5,L(st2)
-       bne     cr1,L(st1)
-       bdnz    L(word8_compare_loop)
-
-L(preword2_count_loop):
-       srwi.   r6,r5,3
-       beq     L(prebyte_count_loop)
-       mtctr   r6
-       clrlwi  r5,r5,29
-
-L(word2_count_loop):
-       lwz     r10,0(r3)
-       lwz     r6,4(r3)
-       addi    r3,r3,0x08
-       lwz     r8,0(r4)
-       lwz     r9,4(r4)
-       addi    r4,r4,0x08
-       cmplw   cr5,r8,r10
-       cmplw   cr1,r9,r6
-       bne     cr5,L(st2)
-       bne     cr1,L(st1)
-       bdnz    L(word2_count_loop)
-
-L(prebyte_count_loop):
-       addi    r5,r5,1
-       mtctr   r5
-       bdz     L(end_memcmp)
-
-L(byte_count_loop):
-       lbz     r6,0(r3)
-       addi    r3,r3,0x01
-       lbz     r8,0(r4)
-       addi    r4,r4,0x01
-       cmplw   cr5,r8,r6
-       bne     cr5,L(st2)
-       bdnz    L(byte_count_loop)
-
-L(end_memcmp):
-       addi    r3,r0,0
-       blr
-
-L(l_r):
-       addi    r3,r0,1
-       blr
-
-L(st1):
-       blt     cr1,L(l_r)
-       addi    r3,r0,-1
-       blr
-
-L(st2):
-       blt     cr5,L(l_r)
-       addi    r3,r0,-1
-       blr
-END (memcmp)
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp,bcmp)
diff --git a/sysdeps/powerpc/powerpc32/405/memcpy.S b/sysdeps/powerpc/powerpc32/405/memcpy.S
deleted file mode 100644
index 9878dbceac..0000000000
--- a/sysdeps/powerpc/powerpc32/405/memcpy.S
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Optimized memcpy implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* memcpy
-
-       r0:return address
-       r3:destination address
-       r4:source address
-       r5:byte count
-
-       Save return address in r0.
-       If destinationn and source are unaligned and copy count is greater than 256
-       then copy 0-3 bytes to make destination aligned.
-       If 32 or more bytes to copy we use 32 byte copy loop.
-       Finaly we copy 0-31 extra bytes. */
-
-EALIGN (memcpy, 5, 0)
-/* Check if bytes to copy are greater than 256 and if
-       source and destination are unaligned */
-       cmpwi   r5,0x0100
-       addi    r0,r3,0
-       ble     L(string_count_loop)
-       neg     r6,r3
-       clrlwi. r6,r6,30
-       beq     L(string_count_loop)
-       neg     r6,r4
-       clrlwi. r6,r6,30
-       beq     L(string_count_loop)
-       mtctr   r6
-       subf    r5,r6,r5
-
-L(unaligned_bytecopy_loop): /* Align destination by coping 0-3 bytes */
-       lbz     r8,0x0(r4)
-       addi    r4,r4,1
-       stb     r8,0x0(r3)
-       addi    r3,r3,1
-       bdnz    L(unaligned_bytecopy_loop)
-       srwi.   r7,r5,5
-       beq     L(preword2_count_loop)
-       mtctr   r7
-
-L(word8_count_loop_no_dcbt): /* Copy 32 bytes at a time */
-       lwz     r6,0(r4)
-       lwz     r7,4(r4)
-       lwz     r8,8(r4)
-       lwz     r9,12(r4)
-       subi    r5,r5,0x20
-       stw     r6,0(r3)
-       stw     r7,4(r3)
-       stw     r8,8(r3)
-       stw     r9,12(r3)
-       lwz     r6,16(r4)
-       lwz     r7,20(r4)
-       lwz     r8,24(r4)
-       lwz     r9,28(r4)
-       addi    r4,r4,0x20
-       stw     r6,16(r3)
-       stw     r7,20(r3)
-       stw     r8,24(r3)
-       stw     r9,28(r3)
-       addi    r3,r3,0x20
-       bdnz    L(word8_count_loop_no_dcbt)
-
-L(preword2_count_loop): /* Copy remaining 0-31 bytes */
-       clrlwi. r12,r5,27
-       beq     L(end_memcpy)
-       mtxer   r12
-       lswx    r5,0,r4
-       stswx   r5,0,r3
-       mr       r3,r0
-       blr
-
-L(string_count_loop): /* Copy odd 0-31 bytes */
-       clrlwi. r12,r5,28
-       add     r3,r3,r5
-       add     r4,r4,r5
-       beq     L(pre_string_copy)
-       mtxer   r12
-       subf    r4,r12,r4
-       subf    r3,r12,r3
-       lswx    r6,0,r4
-       stswx   r6,0,r3
-
-L(pre_string_copy): /* Check how many 32 byte chunks to copy */
-       srwi.   r7,r5,4
-       beq     L(end_memcpy)
-       mtctr   r7
-
-L(word4_count_loop_no_dcbt): /* Copy 32 bytes at a time */
-       lwz     r6,-4(r4)
-       lwz     r7,-8(r4)
-       lwz     r8,-12(r4)
-       lwzu    r9,-16(r4)
-       stw     r6,-4(r3)
-       stw     r7,-8(r3)
-       stw     r8,-12(r3)
-       stwu    r9,-16(r3)
-       bdz     L(end_memcpy)
-       lwz     r6,-4(r4)
-       lwz     r7,-8(r4)
-       lwz     r8,-12(r4)
-       lwzu    r9,-16(r4)
-       stw     r6,-4(r3)
-       stw     r7,-8(r3)
-       stw     r8,-12(r3)
-       stwu    r9,-16(r3)
-       bdnz    L(word4_count_loop_no_dcbt)
-
-L(end_memcpy):
-       mr       r3,r0
-       blr
-END (memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/405/memset.S b/sysdeps/powerpc/powerpc32/405/memset.S
deleted file mode 100644
index 18aea515ba..0000000000
--- a/sysdeps/powerpc/powerpc32/405/memset.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Optimized memset for PowerPC405,440,464 (32-byte cacheline).
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* memset
-
-       r3:destination address and return address
-       r4:source integer to copy
-       r5:byte count
-       r11:sources integer to copy in all 32 bits of reg
-       r12:temp return address
-
-       Save return address in r12
-       If destinationn is unaligned and count is greater tha 255 bytes
-       set 0-3 bytes to make destination aligned
-       If count is greater tha 255 bytes and setting zero to memory
-       use dbcz to set memeory when we can
-       otherwsie do the follwoing
-       If 16 or more words to set we use 16 word copy loop.
-       Finaly we set 0-15 extra bytes with string store. */
-
-EALIGN (memset, 5, 0)
-       rlwinm  r11,r4,0,24,31
-       rlwimi  r11,r4,8,16,23
-       rlwimi  r11,r11,16,0,15
-       addi    r12,r3,0
-       cmpwi   r5,0x00FF
-       ble     L(preword8_count_loop)
-       cmpwi   r4,0x00
-       beq     L(use_dcbz)
-       neg     r6,r3
-       clrlwi. r6,r6,30
-       beq     L(preword8_count_loop)
-       addi    r8,0,1
-       mtctr   r6
-       subi    r3,r3,1
-
-L(unaligned_bytecopy_loop):
-       stbu    r11,0x1(r3)
-       subf.   r5,r8,r5
-       beq     L(end_memset)
-       bdnz    L(unaligned_bytecopy_loop)
-       addi    r3,r3,1
-
-L(preword8_count_loop):
-       srwi.   r6,r5,4
-       beq     L(preword2_count_loop)
-       mtctr   r6
-       addi    r3,r3,-4
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-
-L(word8_count_loop_no_dcbt):
-       stwu    r8,4(r3)
-       stwu    r9,4(r3)
-       subi    r5,r5,0x10
-       stwu    r10,4(r3)
-       stwu    r11,4(r3)
-       bdnz    L(word8_count_loop_no_dcbt)
-       addi    r3,r3,4
-
-L(preword2_count_loop):
-       clrlwi. r7,r5,28
-       beq     L(end_memset)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       mtxer   r7
-       stswx   r8,0,r3
-
-L(end_memset):
-       addi    r3,r12,0
-       blr
-
-L(use_dcbz):
-       neg     r6,r3
-       clrlwi. r7,r6,28
-       beq     L(skip_string_loop)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       subf    r5,r7,r5
-       mtxer   r7
-       stswx   r8,0,r3
-       add     r3,r3,r7
-
-L(skip_string_loop):
-       clrlwi  r8,r6,27
-       srwi.   r8,r8,4
-       beq     L(dcbz_pre_loop)
-       mtctr   r8
-
-L(word_loop):
-       stw     r11,0(r3)
-       subi    r5,r5,0x10
-       stw     r11,4(r3)
-       stw     r11,8(r3)
-       stw     r11,12(r3)
-       addi    r3,r3,0x10
-       bdnz    L(word_loop)
-
-L(dcbz_pre_loop):
-       srwi    r6,r5,5
-       mtctr   r6
-       addi    r7,0,0
-
-L(dcbz_loop):
-       dcbz    r3,r7
-       addi    r3,r3,0x20
-       subi    r5,r5,0x20
-       bdnz    L(dcbz_loop)
-       srwi.   r6,r5,4
-       beq     L(postword2_count_loop)
-       mtctr   r6
-
-L(postword8_count_loop):
-       stw     r11,0(r3)
-       subi    r5,r5,0x10
-       stw     r11,4(r3)
-       stw     r11,8(r3)
-       stw     r11,12(r3)
-       addi    r3,r3,0x10
-       bdnz    L(postword8_count_loop)
-
-L(postword2_count_loop):
-       clrlwi. r7,r5,28
-       beq     L(end_memset)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       mtxer   r7
-       stswx   r8,0,r3
-       b       L(end_memset)
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/405/strcmp.S b/sysdeps/powerpc/powerpc32/405/strcmp.S
deleted file mode 100644
index 42e04e9552..0000000000
--- a/sysdeps/powerpc/powerpc32/405/strcmp.S
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Optimized strcmp implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* strcmp
-
-       Register Use
-       r0:temp return equality
-       r3:source1 address, return equality
-       r4:source2 address
-
-       Implementation description
-       Check 2 words from src1 and src2. If unequal jump to end and
-       return src1 > src2 or src1 < src2.
-       If null check bytes before null and then jump to end and
-       return src1 > src2, src1 < src2 or src1 = src2.
-       If src1 = src2 and no null, repeat. */
-
-EALIGN (strcmp,5,0)
-       neg     r7,r3
-       clrlwi  r7,r7,20
-       neg     r8,r4
-       clrlwi  r8,r8,20
-       srwi.   r7,r7,5
-       beq     L(byte_loop)
-       srwi.   r8,r8,5
-       beq     L(byte_loop)
-       cmplw   r7,r8
-       mtctr   r7
-       ble     L(big_loop)
-       mtctr   r8
-
-L(big_loop):
-       lwz     r5,0(r3)
-       lwz     r6,4(r3)
-       lwz     r8,0(r4)
-       lwz     r9,4(r4)
-       dlmzb.  r12,r5,r6
-       bne     L(end_check)
-       cmplw   r5,r8
-       bne     L(st1)
-       cmplw   r6,r9
-       bne     L(st1)
-       lwz     r5,8(r3)
-       lwz     r6,12(r3)
-       lwz     r8,8(r4)
-       lwz     r9,12(r4)
-       dlmzb.  r12,r5,r6
-       bne     L(end_check)
-       cmplw   r5,r8
-       bne     L(st1)
-       cmplw   r6,r9
-       bne     L(st1)
-       lwz     r5,16(r3)
-       lwz     r6,20(r3)
-       lwz     r8,16(r4)
-       lwz     r9,20(r4)
-       dlmzb.  r12,r5,r6
-       bne     L(end_check)
-       cmplw   r5,r8
-       bne     L(st1)
-       cmplw   r6,r9
-       bne     L(st1)
-       lwz     r5,24(r3)
-       lwz     r6,28(r3)
-       addi    r3,r3,0x20
-       lwz     r8,24(r4)
-       lwz     r9,28(r4)
-       addi    r4,r4,0x20
-       dlmzb.  r12,r5,r6
-       bne     L(end_check)
-       cmplw   r5,r8
-       bne     L(st1)
-       cmplw   r6,r9
-       bne     L(st1)
-       bdnz    L(big_loop)
-       b       L(byte_loop)
-
-L(end_check):
-       subfic  r12,r12,4
-       blt     L(end_check2)
-       rlwinm  r12,r12,3,0,31
-       srw     r5,r5,r12
-       srw     r8,r8,r12
-       cmplw   r5,r8
-       bne     L(st1)
-       b       L(end_strcmp)
-
-L(end_check2):
-       addi    r12,r12,4
-       cmplw   r5,r8
-       rlwinm  r12,r12,3,0,31
-       bne     L(st1)
-       srw     r6,r6,r12
-       srw     r9,r9,r12
-       cmplw   r6,r9
-       bne     L(st1)
-
-L(end_strcmp):
-       addi    r3,r0,0
-       blr
-
-L(st1):
-       mfcr    r3
-       blr
-
-L(byte_loop):
-       lbz     r5,0(r3)
-       addi    r3,r3,1
-       lbz     r6,0(r4)
-       addi    r4,r4,1
-       cmplw   r5,r6
-       bne     L(st1)
-       cmpwi   r5,0
-       beq     L(end_strcmp)
-       b       L(byte_loop)
-END (strcmp)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc32/405/strcpy.S b/sysdeps/powerpc/powerpc32/405/strcpy.S
deleted file mode 100644
index 2a554dc32e..0000000000
--- a/sysdeps/powerpc/powerpc32/405/strcpy.S
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Optimized strcpy implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* strcpy
-
-       Register Use
-       r3:destination and return address
-       r4:source address
-       r10:temp destination address
-
-       Implementation description
-       Loop by checking 2 words at a time, with dlmzb. Check if there is a null
-       in the 2 words. If there is a null jump to end checking to determine
-       where in the last 8 bytes it is. Copy the appropriate bytes of the last
-       8 according to the null position. */
-
-EALIGN (strcpy, 5, 0)
-       neg     r7,r4
-       subi    r4,r4,1
-       clrlwi. r8,r7,29
-       subi    r10,r3,1
-       beq     L(pre_word8_loop)
-       mtctr   r8
-
-L(loop):
-       lbzu    r5,0x01(r4)
-       cmpi    cr5,r5,0x0
-       stbu    r5,0x01(r10)
-       beq     cr5,L(end_strcpy)
-       bdnz    L(loop)
-
-L(pre_word8_loop):
-       subi    r4,r4,3
-       subi    r10,r10,3
-
-L(word8_loop):
-       lwzu    r5,0x04(r4)
-       lwzu    r6,0x04(r4)
-       dlmzb.  r11,r5,r6
-       bne     L(byte_copy)
-       stwu    r5,0x04(r10)
-       stwu    r6,0x04(r10)
-       lwzu    r5,0x04(r4)
-       lwzu    r6,0x04(r4)
-       dlmzb.  r11,r5,r6
-       bne     L(byte_copy)
-       stwu    r5,0x04(r10)
-       stwu    r6,0x04(r10)
-       lwzu    r5,0x04(r4)
-       lwzu    r6,0x04(r4)
-       dlmzb.  r11,r5,r6
-       bne     L(byte_copy)
-       stwu    r5,0x04(r10)
-       stwu    r6,0x04(r10)
-       lwzu    r5,0x04(r4)
-       lwzu    r6,0x04(r4)
-       dlmzb.  r11,r5,r6
-       bne     L(byte_copy)
-       stwu    r5,0x04(r10)
-       stwu    r6,0x04(r10)
-       b       L(word8_loop)
-
-L(last_bytes_copy):
-       stwu    r5,0x04(r10)
-       subi    r11,r11,4
-       mtctr   r11
-       addi    r10,r10,3
-       subi    r4,r4,1
-
-L(last_bytes_copy_loop):
-       lbzu    r5,0x01(r4)
-       stbu    r5,0x01(r10)
-       bdnz    L(last_bytes_copy_loop)
-       blr
-
-L(byte_copy):
-       blt     L(last_bytes_copy)
-       mtctr   r11
-       addi    r10,r10,3
-       subi    r4,r4,5
-
-L(last_bytes_copy_loop2):
-       lbzu    r5,0x01(r4)
-       stbu    r5,0x01(r10)
-       bdnz    L(last_bytes_copy_loop2)
-
-L(end_strcpy):
-       blr
-END (strcpy)
-libc_hidden_builtin_def (strcpy)
diff --git a/sysdeps/powerpc/powerpc32/405/strlen.S b/sysdeps/powerpc/powerpc32/405/strlen.S
deleted file mode 100644
index 25e54dafc7..0000000000
--- a/sysdeps/powerpc/powerpc32/405/strlen.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Optimized strlen implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* strlen
-
-       Register Use
-       r3:source address and return length of string
-       r4:byte counter
-
-       Implementation description
-       Load 2 words at a time and count bytes, if we find null we subtract one from
-       the count and return the count value. We need to subtract one because
-       we don't count the null character as a byte. */
-
-EALIGN (strlen,5,0)
-       neg     r7,r3
-       clrlwi. r8,r7,29
-       addi    r4,0,0
-       beq     L(byte_count_loop)
-       mtctr   r8
-
-L(loop):
-       lbz     r5,0(r3)
-       cmpi    cr5,r5,0x0
-       addi    r3,r3,0x1
-       addi    r4,r4,0x1
-       beq     cr5,L(end_strlen)
-       bdnz    L(loop)
-
-L(byte_count_loop):
-       lwz     r5,0(r3)
-       lwz     r6,4(r3)
-       dlmzb.  r12,r5,r6
-       add     r4,r4,r12
-       bne     L(end_strlen)
-       lwz     r5,8(r3)
-       lwz     r6,12(r3)
-       dlmzb.  r12,r5,r6
-       add     r4,r4,r12
-       bne     L(end_strlen)
-       lwz     r5,16(r3)
-       lwz     r6,20(r3)
-       dlmzb.  r12,r5,r6
-       add     r4,r4,r12
-       bne     L(end_strlen)
-       lwz     r5,24(r3)
-       lwz     r6,28(r3)
-       addi    r3,r3,0x20
-       dlmzb.  r12,r5,r6
-       add     r4,r4,r12
-       bne     L(end_strlen)
-       b       L(byte_count_loop)
-
-L(end_strlen):
-       addi    r3,r4,-1
-       blr
-END (strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc32/405/strncmp.S b/sysdeps/powerpc/powerpc32/405/strncmp.S
deleted file mode 100644
index 9c5a8feb9d..0000000000
--- a/sysdeps/powerpc/powerpc32/405/strncmp.S
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Optimized strncmp implementation for PowerPC476.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* strncmp
-
-       Register Use
-       r0:temp return equality
-       r3:source1 address, return equality
-       r4:source2 address
-       r5:byte count
-
-       Implementation description
-       Touch in 3 lines of D-cache.
-       If source1 or source2 is unaligned copy 0-3 bytes to make source1 aligned
-       Check 2 words from src1 and src2. If unequal jump to end and
-       return src1 > src2 or src1 < src2.
-       If null check bytes before null and then jump to end and
-       return src1 > src2, src1 < src2 or src1 = src2.
-       If count = zero check bytes before zero counter and then jump to end and
-       return src1 > src2, src1 < src2 or src1 = src2.
-       If src1 = src2 and no null, repeat. */
-
-EALIGN (strncmp,5,0)
-       neg     r7,r3
-       clrlwi  r7,r7,20
-       neg     r8,r4
-       clrlwi  r8,r8,20
-       srwi.   r7,r7,3
-       beq     L(prebyte_count_loop)
-       srwi.   r8,r8,3
-       beq     L(prebyte_count_loop)
-       cmplw   r7,r8
-       mtctr   r7
-       ble     L(preword2_count_loop)
-       mtctr   r8
-
-L(preword2_count_loop):
-       srwi.   r6,r5,3
-       beq     L(prebyte_count_loop)
-       mfctr   r7
-       cmplw   r6,r7
-       bgt     L(set_count_loop)
-       mtctr   r6
-       clrlwi  r5,r5,29
-
-L(word2_count_loop):
-       lwz     r10,0(r3)
-       lwz     r6,4(r3)
-       addi    r3,r3,0x08
-       lwz     r8,0(r4)
-       lwz     r9,4(r4)
-       addi    r4,r4,0x08
-       dlmzb.  r12,r10,r6
-       bne     L(end_check)
-       cmplw   r10,r8
-       bne     L(st1)
-       cmplw   r6,r9
-       bne     L(st1)
-       bdnz    L(word2_count_loop)
-
-L(prebyte_count_loop):
-       addi    r5,r5,1
-       mtctr   r5
-       bdz     L(end_strncmp)
-
-L(byte_count_loop):
-       lbz     r6,0(r3)
-       addi    r3,r3,1
-       lbz     r7,0(r4)
-       addi    r4,r4,1
-       cmplw   r6,r7
-       bne     L(st1)
-       cmpwi   r6,0
-       beq     L(end_strncmp)
-       bdnz    L(byte_count_loop)
-       b       L(end_strncmp)
-
-L(set_count_loop):
-       slwi    r7,r7,3
-       subf    r5,r7,r5
-       b       L(word2_count_loop)
-
-L(end_check):
-       subfic  r12,r12,4
-       blt     L(end_check2)
-       rlwinm  r12,r12,3,0,31
-       srw     r10,r10,r12
-       srw     r8,r8,r12
-       cmplw   r10,r8
-       bne     L(st1)
-       b       L(end_strncmp)
-
-L(end_check2):
-       addi    r12,r12,4
-       cmplw   r10,r8
-       rlwinm  r12,r12,3,0,31
-       bne     L(st1)
-       srw     r6,r6,r12
-       srw     r9,r9,r12
-       cmplw   r6,r9
-       bne     L(st1)
-
-L(end_strncmp):
-       addi    r3,r0,0
-       blr
-
-L(st1):
-       mfcr    r3
-       blr
-END (strncmp)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc32/440/Implies b/sysdeps/powerpc/powerpc32/440/Implies
deleted file mode 100644
index 70c0d2eda3..0000000000
--- a/sysdeps/powerpc/powerpc32/440/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/405/fpu
-powerpc/powerpc32/405
diff --git a/sysdeps/powerpc/powerpc32/464/Implies b/sysdeps/powerpc/powerpc32/464/Implies
deleted file mode 100644
index c3e52c5504..0000000000
--- a/sysdeps/powerpc/powerpc32/464/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/440/fpu
-powerpc/powerpc32/440
diff --git a/sysdeps/powerpc/powerpc32/476/Implies b/sysdeps/powerpc/powerpc32/476/Implies
deleted file mode 100644
index 2829f9ccaf..0000000000
--- a/sysdeps/powerpc/powerpc32/476/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/464/fpu
-powerpc/powerpc32/464
diff --git a/sysdeps/powerpc/powerpc32/476/memset.S b/sysdeps/powerpc/powerpc32/476/memset.S
deleted file mode 100644
index 17c91238e1..0000000000
--- a/sysdeps/powerpc/powerpc32/476/memset.S
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Optimized memset for PowerPC476 (128-byte cacheline).
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* memset
-
-       r3:destination address and return address
-       r4:source integer to copy
-       r5:byte count
-       r11:sources integer to copy in all 32 bits of reg
-       r12:temp return address
-
-       Save return address in r12
-       If destinationn is unaligned and count is greater tha 255 bytes
-       set 0-3 bytes to make destination aligned
-       If count is greater tha 255 bytes and setting zero to memory
-       use dbcz to set memeory when we can
-       otherwsie do the follwoing
-       If 16 or more words to set we use 16 word copy loop.
-       Finaly we set 0-15 extra bytes with string store. */
-
-EALIGN (memset, 5, 0)
-       rlwinm  r11,r4,0,24,31
-       rlwimi  r11,r4,8,16,23
-       rlwimi  r11,r11,16,0,15
-       addi    r12,r3,0
-       cmpwi   r5,0x00FF
-       ble     L(preword8_count_loop)
-       cmpwi   r4,0x00
-       beq     L(use_dcbz)
-       neg     r6,r3
-       clrlwi. r6,r6,30
-       beq     L(preword8_count_loop)
-       addi    r8,0,1
-       mtctr   r6
-       subi    r3,r3,1
-
-L(unaligned_bytecopy_loop):
-       stbu    r11,0x1(r3)
-       subf.   r5,r8,r5
-       beq     L(end_memset)
-       bdnz    L(unaligned_bytecopy_loop)
-       addi    r3,r3,1
-
-L(preword8_count_loop):
-       srwi.   r6,r5,4
-       beq     L(preword2_count_loop)
-       mtctr   r6
-       addi    r3,r3,-4
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-
-L(word8_count_loop_no_dcbt):
-       stwu    r8,4(r3)
-       stwu    r9,4(r3)
-       subi    r5,r5,0x10
-       stwu    r10,4(r3)
-       stwu    r11,4(r3)
-       bdnz    L(word8_count_loop_no_dcbt)
-       addi    r3,r3,4
-
-L(preword2_count_loop):
-       clrlwi. r7,r5,28
-       beq     L(end_memset)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       mtxer   r7
-       stswx   r8,0,r3
-
-L(end_memset):
-       addi    r3,r12,0
-       blr
-
-L(use_dcbz):
-       neg     r6,r3
-       clrlwi. r7,r6,28
-       beq     L(skip_string_loop)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       subf    r5,r7,r5
-       mtxer   r7
-       stswx   r8,0,r3
-       add     r3,r3,r7
-
-L(skip_string_loop):
-       clrlwi  r8,r6,25
-       srwi.   r8,r8,4
-       beq     L(dcbz_pre_loop)
-       mtctr   r8
-
-L(word_loop):
-       stw     r11,0(r3)
-       subi    r5,r5,0x10
-       stw     r11,4(r3)
-       stw     r11,8(r3)
-       stw     r11,12(r3)
-       addi    r3,r3,0x10
-       bdnz    L(word_loop)
-
-L(dcbz_pre_loop):
-       srwi    r6,r5,7
-       mtctr   r6
-       addi    r7,0,0
-
-L(dcbz_loop):
-       dcbz    r3,r7
-       addi    r3,r3,0x80
-       subi    r5,r5,0x80
-       bdnz    L(dcbz_loop)
-       srwi.   r6,r5,4
-       beq     L(postword2_count_loop)
-       mtctr   r6
-
-L(postword8_count_loop):
-       stw     r11,0(r3)
-       subi    r5,r5,0x10
-       stw     r11,4(r3)
-       stw     r11,8(r3)
-       stw     r11,12(r3)
-       addi    r3,r3,0x10
-       bdnz    L(postword8_count_loop)
-
-L(postword2_count_loop):
-       clrlwi. r7,r5,28
-       beq     L(end_memset)
-       mr      r8,r11
-       mr      r9,r11
-       mr      r10,r11
-       mtxer   r7
-       stswx   r8,0,r3
-       b       L(end_memset)
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/970/Implies b/sysdeps/powerpc/powerpc32/970/Implies
deleted file mode 100644
index 17139bf21c..0000000000
--- a/sysdeps/powerpc/powerpc32/970/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power4/fpu
-powerpc/powerpc32/power4
diff --git a/sysdeps/powerpc/powerpc32/Implies b/sysdeps/powerpc/powerpc32/Implies
deleted file mode 100644
index 39a34c5f57..0000000000
--- a/sysdeps/powerpc/powerpc32/Implies
+++ /dev/null
@@ -1 +0,0 @@
-wordsize-32
diff --git a/sysdeps/powerpc/powerpc32/Makefile b/sysdeps/powerpc/powerpc32/Makefile
deleted file mode 100644
index cf620c8269..0000000000
--- a/sysdeps/powerpc/powerpc32/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# Powerpc32 specific build options.
-
-# Some Powerpc32 variants assume soft-fp is the default even though there is
-# an fp variant so provide -mhard-float if --with-fp is explicitly passed.
-
-ifeq ($(with-fp),yes)
-+cflags += -mhard-float
-ASFLAGS += -mhard-float
-sysdep-LDFLAGS += -mhard-float
-endif
-
-ifeq ($(subdir),gmon)
-sysdep_routines += ppc-mcount compat-ppc-mcount
-static-only-routines += ppc-mcount
-shared-only-routines += compat-ppc-mcount
-endif
-
-ifeq ($(subdir),misc)
-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
-endif
-
-# On PPC, -fpic works until the GOT contains 32768 bytes, and possibly
-# more depending on how clever the linker is.  Each GOT entry takes 4 bytes,
-# so that's at least 8192 entries.  Since libc only uses about 2000 entries,
-# we want to use -fpic, because this generates fewer relocs.
-ifeq (yes,$(build-shared))
-pic-ccflag = -fpic
-endif
-
-ifeq ($(subdir),csu)
-# There is no benefit to using sdata for these objects, and the user
-# of the library should be able to control what goes into sdata.
-CFLAGS-init.o = -G0
-CFLAGS-gmon-start.o = -G0
-
-ifeq (yes,$(build-shared))
-# Compatibility
-ifeq (yes,$(have-protected))
-CPPFLAGS-libgcc-compat.S = -DHAVE_DOT_HIDDEN
-endif
-sysdep_routines += libgcc-compat
-shared-only-routines += libgcc-compat
-endif
-endif
-
-ifeq ($(subdir),elf)
-# extra shared linker files to link only into dl-allobjs.so
-sysdep-rtld-routines += dl-start
-endif
diff --git a/sysdeps/powerpc/powerpc32/Versions b/sysdeps/powerpc/powerpc32/Versions
deleted file mode 100644
index b0782fecd4..0000000000
--- a/sysdeps/powerpc/powerpc32/Versions
+++ /dev/null
@@ -1,40 +0,0 @@
-libc {
-  GLIBC_2.0 {
-    # Functions from libgcc.
-    __divdi3; __moddi3; __udivdi3; __umoddi3;
-    __cmpdi2; __ucmpdi2;
-    __ashldi3; __ashrdi3; __lshrdi3;
-    __fixdfdi; __fixunsdfdi;
-    __fixsfdi; __fixunssfdi;
-    __floatdidf; __floatdisf;
-  }
-  GLIBC_2.16 {
-    __mcount_internal;
-  }
-  GLIBC_PRIVATE {
-    __mcount_internal;
-  }
-}
-
-libm {
-  GLIBC_2.2 {
-    # Special functions to save and restore registers used by the
-    # runtime libraries.
-    _restgpr0_13; _restgpr0_14; _restgpr0_15; _restgpr0_16; _restgpr0_17;
-    _restgpr0_18; _restgpr0_19; _restgpr0_20; _restgpr0_21; _restgpr0_22;
-    _restgpr0_22; _restgpr0_23; _restgpr0_24; _restgpr0_25; _restgpr0_26;
-    _restgpr0_27; _restgpr0_28; _restgpr0_29; _restgpr0_30; _restgpr0_31;
-    _savegpr0_13; _savegpr0_14; _savegpr0_15; _savegpr0_16; _savegpr0_17;
-    _savegpr0_18; _savegpr0_19; _savegpr0_20; _savegpr0_21; _savegpr0_22;
-    _savegpr0_22; _savegpr0_23; _savegpr0_24; _savegpr0_25; _savegpr0_26;
-    _savegpr0_27; _savegpr0_28; _savegpr0_29; _savegpr0_30; _savegpr0_31;
-    _restgpr1_13; _restgpr1_14; _restgpr1_15; _restgpr1_16; _restgpr1_17;
-    _restgpr1_18; _restgpr1_19; _restgpr1_20; _restgpr1_21; _restgpr1_22;
-    _restgpr1_22; _restgpr1_23; _restgpr1_24; _restgpr1_25; _restgpr1_26;
-    _restgpr1_27; _restgpr1_28; _restgpr1_29; _restgpr1_30; _restgpr1_31;
-    _savegpr1_13; _savegpr1_14; _savegpr1_15; _savegpr1_16; _savegpr1_17;
-    _savegpr1_18; _savegpr1_19; _savegpr1_20; _savegpr1_21; _savegpr1_22;
-    _savegpr1_22; _savegpr1_23; _savegpr1_24; _savegpr1_25; _savegpr1_26;
-    _savegpr1_27; _savegpr1_28; _savegpr1_29; _savegpr1_30; _savegpr1_31;
-  }
-}
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
deleted file mode 100644
index 4b60a2f9a8..0000000000
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ /dev/null
@@ -1,82 +0,0 @@
-/* longjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#ifdef __NO_VMX__
-# include <novmxsetjmp.h>
-#else
-# include <jmpbuf-offsets.h>
-#endif
-
-#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
-# define LOAD_GP(N)	evldd r##N,((JB_FPRS+((N)-14)*2)*4)(r3)
-#else
-# define LOAD_GP(N)	lwz r##N,((JB_GPRS+(N)-14)*4)(r3)
-#endif
-
-ENTRY (__longjmp_symbol)
-
-#if defined PTR_DEMANGLE || defined CHECK_SP
-	lwz r24,(JB_GPR1*4)(r3)
-# ifdef CHECK_SP
-#  ifdef PTR_DEMANGLE
-	PTR_DEMANGLE3 (r24, r24, r25)
-#  endif
-	CHECK_SP (r24)
-	mr r1,r24
-# endif
-#else
-	lwz r1,(JB_GPR1*4)(r3)
-#endif
-	lwz r0,(JB_LR*4)(r3)
-	LOAD_GP (14)
-	LOAD_GP (15)
-	LOAD_GP (16)
-	LOAD_GP (17)
-	LOAD_GP (18)
-	LOAD_GP (19)
-	LOAD_GP (20)
-#ifdef PTR_DEMANGLE
-# ifndef CHECK_SP
-	PTR_DEMANGLE3 (r1, r24, r25)
-# endif
-	PTR_DEMANGLE2 (r0, r25)
-#endif
-	/* longjmp/longjmp_target probe expects longjmp first argument (4@3),
-	   second argument (-4@4), and target address (4@0), respectively.  */
-	LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
-	mtlr r0
-	LOAD_GP (21)
-	LOAD_GP (22)
-	lwz r5,(JB_CR*4)(r3)
-	LOAD_GP (23)
-	LOAD_GP (24)
-	LOAD_GP (25)
-	mtcrf 0xFF,r5
-	LOAD_GP (26)
-	LOAD_GP (27)
-	LOAD_GP (28)
-	LOAD_GP (29)
-	LOAD_GP (30)
-	LOAD_GP (31)
-	LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
-	mr r3,r4
-	blr
-END (__longjmp_symbol)
diff --git a/sysdeps/powerpc/powerpc32/__longjmp.S b/sysdeps/powerpc/powerpc32/__longjmp.S
deleted file mode 100644
index 42127c6ff2..0000000000
--- a/sysdeps/powerpc/powerpc32/__longjmp.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* AltiVec/VMX (new) version of __longjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-symbols.h>
-#include <shlib-compat.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# define __longjmp_symbol __longjmp
-# include "__longjmp-common.S"
-
-#else /* IS_IN (libc) */
-strong_alias (__vmx__longjmp, __longjmp);
-# define __longjmp_symbol  __vmx__longjmp
-# include "__longjmp-common.S"
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-#  define __NO_VMX__
-#  undef JB_SIZE
-#  undef __longjmp_symbol
-#  define __longjmp_symbol  __novmx__longjmp
-#  include "__longjmp-common.S"
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc32/a2/memcpy.S b/sysdeps/powerpc/powerpc32/a2/memcpy.S
deleted file mode 100644
index c795ff48fe..0000000000
--- a/sysdeps/powerpc/powerpc32/a2/memcpy.S
+++ /dev/null
@@ -1,527 +0,0 @@
-/* Optimized memcpy implementation for PowerPC A2.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Michael Brutman <brutman@us.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define PREFETCH_AHEAD 4        /* no cache lines SRC prefetching ahead  */
-#define ZERO_AHEAD 2            /* no cache lines DST zeroing ahead  */
-
-	.machine  a2
-EALIGN (memcpy, 5, 0)
-	CALL_MCOUNT
-
-	dcbt    0,r4            /* Prefetch ONE SRC cacheline  */
-	cmplwi  cr1,r5,16       /* is size < 16 ?  */
-	mr      r6,r3           /* Copy dest reg to r6; */
-	blt+    cr1,L(shortcopy)
-
-
-	/* Big copy (16 bytes or more)
-
-	   Figure out how far to the nearest quadword boundary, or if we are
-	   on one already.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	*/
-
-	neg     r8,r3           /* LS 4 bits = # bytes to 8-byte dest bdry  */
-	clrlwi  r8,r8,32-4      /* align to 16byte boundary  */
-	sub     r7,r4,r3        /* compute offset to src from dest */
-	cmplwi  cr0,r8,0        /* Were we aligned on a 16 byte bdy? */
-	beq+    L(dst_aligned)
-
-
-
-	/* Destination is not aligned on quadword boundary.  Get us to one.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	   r7 - offset to src from dest
-	   r8 - number of bytes to quadword boundary
-	*/
-
-	mtcrf   0x01,r8         /* put #bytes to boundary into cr7  */
-	subf    r5,r8,r5        /* adjust remaining len */
-
-	bf      cr7*4+3,1f
-	lbzx    r0,r7,r6        /* copy 1 byte addr */
-	stb     r0,0(r6)
-	addi    r6,r6,1
-1:
-	bf      cr7*4+2,2f
-	lhzx    r0,r7,r6        /* copy 2 byte addr */
-	sth     r0,0(r6)
-	addi    r6,r6,2
-2:
-	bf      cr7*4+1,4f
-	lwzx    r0,r7,r6        /* copy 4 byte addr */
-	stw     r0,0(r6)
-	addi    r6,r6,4
-4:
-	bf      cr7*4+0,8f
-	lfdx    r0,r7,r6        /* copy 8 byte addr */
-	stfd    r0,0(r6)
-	addi    r6,r6,8
-8:
-	add     r4,r7,r6        /* update src addr */
-
-
-
-	/* Dest is quadword aligned now.
-
-	   Lots of decisions to make.  If we are copying less than a cache
-	   line we won't be here long.  If we are not on a cache line
-	   boundary we need to get there.  And then we need to figure out
-	   how many cache lines ahead to pre-touch.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	*/
-
-
-	.align  4
-L(dst_aligned):
-
-
-#ifdef SHARED
-	mflr    r0
-/* Establishes GOT addressability so we can load __cache_line_size
-   from static. This value was set from the aux vector during startup.  */
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis   r9,r9,__cache_line_size-got_label@ha
-	lwz     r9,__cache_line_size-got_label@l(r9)
-	mtlr    r0
-#else
-/* Load __cache_line_size from static. This value was set from the
-   aux vector during startup.  */
-	lis     r9,__cache_line_size@ha
-	lwz     r9,__cache_line_size@l(r9)
-#endif
-
-	cmplwi  cr5, r9, 0
-	bne+    cr5,L(cachelineset)
-
-/* __cache_line_size not set: generic byte copy without much optimization */
-	andi.	r0,r5,1		/* If length is odd copy one byte.  */
-	beq	L(cachelinenotset_align)
-	lbz	r7,0(r4)	/* Read one byte from source.  */
-	addi	r5,r5,-1	/* Update length.  */
-	addi	r4,r4,1		/* Update source pointer address.  */
-	stb	r7,0(r6)	/* Store one byte on dest.  */
-	addi	r6,r6,1		/* Update dest pointer address.  */
-L(cachelinenotset_align):
-	cmpwi   cr7,r5,0	/* If length is 0 return.  */
-	beqlr	cr7
-	ori	r2,r2,0		/* Force a new dispatch group.  */
-L(cachelinenotset_loop):
-	addic.	r5,r5,-2	/* Update length.  */
-	lbz	r7,0(r4)	/* Load 2 bytes from source.  */
-	lbz	r8,1(r4)
-	addi	r4,r4,2		/* Update source pointer address.  */
-	stb	r7,0(r6)	/* Store 2 bytes on dest.  */
-	stb	r8,1(r6)
-	addi	r6,r6,2		/* Update dest pointer address.  */
-	bne	L(cachelinenotset_loop)
-	blr
-
-
-L(cachelineset):
-
-	addi   r10,r9,-1
-
-	cmpw   cr5,r5,r10       /* Less than a cacheline to go? */
-
-	neg     r7,r6           /* How far to next cacheline bdy? */
-
-	addi    r6,r6,-8        /* prepare for stdu  */
-	cmpwi   cr0,r9,128
-	addi    r4,r4,-8        /* prepare for ldu  */
-
-
-	ble+    cr5,L(lessthancacheline)
-
-	beq-    cr0,L(big_lines) /* 128 byte line code */
-
-
-
-
-	/* More than a cacheline left to go, and using 64 byte cachelines */
-
-	clrlwi  r7,r7,32-6      /* How far to next cacheline bdy? */
-
-	cmplwi  cr6,r7,0        /* Are we on a cacheline bdy already? */
-
-	/* Reduce total len by what it takes to get to the next cache line */
-	subf    r5,r7,r5
-	srwi    r7,r7,4         /* How many qws to get to the line bdy? */
-
-	/* How many full cache lines to copy after getting to a line bdy? */
-	srwi    r10,r5,6
-
-	cmplwi  r10,0           /* If no full cache lines to copy ... */
-	li      r11,0           /* number cachelines to copy with prefetch  */
-	beq     L(nocacheprefetch)
-
-
-	/* We are here because we have at least one full cache line to copy,
-	   and therefore some pre-touching to do. */
-
-	cmplwi  r10,PREFETCH_AHEAD
-	li      r12,64+8        /* prefetch distance  */
-	ble     L(lessthanmaxprefetch)
-
-	/* We can only do so much pre-fetching.  R11 will have the count of
-	   lines left to prefetch after the initial batch of prefetches
-	   are executed. */
-
-	subi    r11,r10,PREFETCH_AHEAD
-	li      r10,PREFETCH_AHEAD
-
-L(lessthanmaxprefetch):
-	mtctr   r10
-
-	/* At this point r10/ctr hold the number of lines to prefetch in this
-	   initial batch, and r11 holds any remainder. */
-
-L(prefetchSRC):
-	dcbt    r12,r4
-	addi    r12,r12,64
-	bdnz    L(prefetchSRC)
-
-
-	/* Prefetching is done, or was not needed.
-
-	   cr6 - are we on a cacheline boundary already?
-	   r7  - number of quadwords to the next cacheline boundary
-	*/
-
-L(nocacheprefetch):
-	mtctr   r7
-
-	cmplwi  cr1,r5,64   /* Less than a cache line to copy? */
-
-	/* How many bytes are left after we copy whatever full
-	   cache lines we can get? */
-	clrlwi  r5,r5,32-6
-
-	beq     cr6,L(cachelinealigned)
-
-
-	/* Copy quadwords up to the next cacheline boundary */
-
-L(aligntocacheline):
-	lfd     fp9,0x08(r4)
-	lfdu    fp10,0x10(r4)
-	stfd    fp9,0x08(r6)
-	stfdu   fp10,0x10(r6)
-	bdnz    L(aligntocacheline)
-
-
-	.align 4
-L(cachelinealigned):            /* copy while cache lines  */
-
-	blt-    cr1,L(lessthancacheline) /* size <64  */
-
-L(outerloop):
-	cmpwi   r11,0
-	mtctr   r11
-	beq-    L(endloop)
-
-	li      r11,64*ZERO_AHEAD +8    /* DCBZ dist  */
-
-	.align  4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-L(loop):                        /* Copy aligned body  */
-	dcbt    r12,r4          /* PREFETCH SOURCE some cache lines ahead  */
-	lfd     fp9,  0x08(r4)
-	dcbz    r11,r6
-	lfd     fp10, 0x10(r4)
-	lfd     fp11, 0x18(r4)
-	lfd     fp12, 0x20(r4)
-	stfd    fp9,  0x08(r6)
-	stfd    fp10, 0x10(r6)
-	stfd    fp11, 0x18(r6)
-	stfd    fp12, 0x20(r6)
-	lfd     fp9,  0x28(r4)
-	lfd     fp10, 0x30(r4)
-	lfd     fp11, 0x38(r4)
-	lfdu    fp12, 0x40(r4)
-	stfd    fp9,  0x28(r6)
-	stfd    fp10, 0x30(r6)
-	stfd    fp11, 0x38(r6)
-	stfdu   fp12, 0x40(r6)
-
-	bdnz    L(loop)
-
-
-L(endloop):
-	cmpwi   r10,0
-	beq-    L(endloop2)
-	mtctr   r10
-
-L(loop2):                       /* Copy aligned body  */
-	lfd     fp9,  0x08(r4)
-	lfd     fp10, 0x10(r4)
-	lfd     fp11, 0x18(r4)
-	lfd     fp12, 0x20(r4)
-	stfd    fp9,  0x08(r6)
-	stfd    fp10, 0x10(r6)
-	stfd    fp11, 0x18(r6)
-	stfd    fp12, 0x20(r6)
-	lfd     fp9,  0x28(r4)
-	lfd     fp10, 0x30(r4)
-	lfd     fp11, 0x38(r4)
-	lfdu    fp12, 0x40(r4)
-	stfd    fp9,  0x28(r6)
-	stfd    fp10, 0x30(r6)
-	stfd    fp11, 0x38(r6)
-	stfdu   fp12, 0x40(r6)
-
-	bdnz    L(loop2)
-L(endloop2):
-
-
-	.align  4
-L(lessthancacheline):           /* Was there less than cache to do ?  */
-	cmplwi  cr0,r5,16
-	srwi    r7,r5,4         /* divide size by 16  */
-	blt-    L(do_lt16)
-	mtctr   r7
-
-L(copy_remaining):
-	lfd     fp9,  0x08(r4)
-	lfdu    fp10, 0x10(r4)
-	stfd    fp9,  0x08(r6)
-	stfdu   fp10, 0x10(r6)
-	bdnz    L(copy_remaining)
-
-L(do_lt16):                     /* less than 16 ?  */
-	cmplwi  cr0,r5,0        /* copy remaining bytes (0-15)  */
-	beqlr+                  /* no rest to copy  */
-	addi    r4,r4,8
-	addi    r6,r6,8
-
-L(shortcopy):                   /* SIMPLE COPY to handle size =< 15 bytes  */
-	mtcrf   0x01,r5
-	sub     r7,r4,r6
-	bf-     cr7*4+0,8f
-	lfdx    fp9,r7,r6       /* copy 8 byte  */
-	stfd    fp9,0(r6)
-	addi    r6,r6,8
-8:
-	bf      cr7*4+1,4f
-	lwzx    r0,r7,r6        /* copy 4 byte  */
-	stw     r0,0(r6)
-	addi    r6,r6,4
-4:
-	bf      cr7*4+2,2f
-	lhzx    r0,r7,r6        /* copy 2 byte  */
-	sth     r0,0(r6)
-	addi    r6,r6,2
-2:
-	bf      cr7*4+3,1f
-	lbzx    r0,r7,r6        /* copy 1 byte  */
-	stb     r0,0(r6)
-1:
-	blr
-
-
-
-
-
-	/* Similar to above, but for use with 128 byte lines. */
-
-
-L(big_lines):
-
-	clrlwi  r7,r7,32-7      /* How far to next cacheline bdy? */
-
-	cmplwi  cr6,r7,0        /* Are we on a cacheline bdy already? */
-
-	/* Reduce total len by what it takes to get to the next cache line */
-	subf    r5,r7,r5
-	srwi    r7,r7,4         /* How many qw to get to the line bdy? */
-
-	/* How many full cache lines to copy after getting to a line bdy? */
-	srwi    r10,r5,7
-
-	cmplwi  r10,0           /* If no full cache lines to copy ... */
-	li      r11,0           /* number cachelines to copy with prefetch  */
-	beq     L(nocacheprefetch_128)
-
-
-	/* We are here because we have at least one full cache line to copy,
-	   and therefore some pre-touching to do. */
-
-	cmplwi  r10,PREFETCH_AHEAD
-	li      r12,128+8       /* prefetch distance  */
-	ble     L(lessthanmaxprefetch_128)
-
-	/* We can only do so much pre-fetching.  R11 will have the count of
-	   lines left to prefetch after the initial batch of prefetches
-	   are executed. */
-
-	subi    r11,r10,PREFETCH_AHEAD
-	li      r10,PREFETCH_AHEAD
-
-L(lessthanmaxprefetch_128):
-	mtctr   r10
-
-	/* At this point r10/ctr hold the number of lines to prefetch in this
-	   initial batch, and r11 holds any remainder. */
-
-L(prefetchSRC_128):
-	dcbt    r12,r4
-	addi    r12,r12,128
-	bdnz    L(prefetchSRC_128)
-
-
-	/* Prefetching is done, or was not needed.
-
-	   cr6 - are we on a cacheline boundary already?
-	   r7  - number of quadwords to the next cacheline boundary
-	*/
-
-L(nocacheprefetch_128):
-	mtctr   r7
-
-	cmplwi  cr1,r5,128  /* Less than a cache line to copy? */
-
-	/* How many bytes are left after we copy whatever full
-	   cache lines we can get? */
-	clrlwi  r5,r5,32-7
-
-	beq     cr6,L(cachelinealigned_128)
-
-
-	/* Copy quadwords up to the next cacheline boundary */
-
-L(aligntocacheline_128):
-	lfd     fp9,0x08(r4)
-	lfdu    fp10,0x10(r4)
-	stfd    fp9,0x08(r6)
-	stfdu   fp10,0x10(r6)
-	bdnz    L(aligntocacheline_128)
-
-
-L(cachelinealigned_128):        /* copy while cache lines  */
-
-	blt-    cr1,L(lessthancacheline) /* size <128  */
-
-L(outerloop_128):
-	cmpwi   r11,0
-	mtctr   r11
-	beq-    L(endloop_128)
-
-	li      r11,128*ZERO_AHEAD +8    /* DCBZ dist  */
-
-	.align  4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-L(loop_128):                    /* Copy aligned body  */
-	dcbt    r12,r4          /* PREFETCH SOURCE some cache lines ahead  */
-	lfd     fp9,  0x08(r4)
-	dcbz    r11,r6
-	lfd     fp10, 0x10(r4)
-	lfd     fp11, 0x18(r4)
-	lfd     fp12, 0x20(r4)
-	stfd    fp9,  0x08(r6)
-	stfd    fp10, 0x10(r6)
-	stfd    fp11, 0x18(r6)
-	stfd    fp12, 0x20(r6)
-	lfd     fp9,  0x28(r4)
-	lfd     fp10, 0x30(r4)
-	lfd     fp11, 0x38(r4)
-	lfd     fp12, 0x40(r4)
-	stfd    fp9,  0x28(r6)
-	stfd    fp10, 0x30(r6)
-	stfd    fp11, 0x38(r6)
-	stfd    fp12, 0x40(r6)
-	lfd     fp9,  0x48(r4)
-	lfd     fp10, 0x50(r4)
-	lfd     fp11, 0x58(r4)
-	lfd     fp12, 0x60(r4)
-	stfd    fp9,  0x48(r6)
-	stfd    fp10, 0x50(r6)
-	stfd    fp11, 0x58(r6)
-	stfd    fp12, 0x60(r6)
-	lfd     fp9,  0x68(r4)
-	lfd     fp10, 0x70(r4)
-	lfd     fp11, 0x78(r4)
-	lfdu    fp12, 0x80(r4)
-	stfd    fp9,  0x68(r6)
-	stfd    fp10, 0x70(r6)
-	stfd    fp11, 0x78(r6)
-	stfdu   fp12, 0x80(r6)
-
-	bdnz    L(loop_128)
-
-
-L(endloop_128):
-	cmpwi   r10,0
-	beq-    L(endloop2_128)
-	mtctr   r10
-
-L(loop2_128):                   /* Copy aligned body  */
-	lfd     fp9,  0x08(r4)
-	lfd     fp10, 0x10(r4)
-	lfd     fp11, 0x18(r4)
-	lfd     fp12, 0x20(r4)
-	stfd    fp9,  0x08(r6)
-	stfd    fp10, 0x10(r6)
-	stfd    fp11, 0x18(r6)
-	stfd    fp12, 0x20(r6)
-	lfd     fp9,  0x28(r4)
-	lfd     fp10, 0x30(r4)
-	lfd     fp11, 0x38(r4)
-	lfd     fp12, 0x40(r4)
-	stfd    fp9,  0x28(r6)
-	stfd    fp10, 0x30(r6)
-	stfd    fp11, 0x38(r6)
-	stfd    fp12, 0x40(r6)
-	lfd     fp9,  0x48(r4)
-	lfd     fp10, 0x50(r4)
-	lfd     fp11, 0x58(r4)
-	lfd     fp12, 0x60(r4)
-	stfd    fp9,  0x48(r6)
-	stfd    fp10, 0x50(r6)
-	stfd    fp11, 0x58(r6)
-	stfd    fp12, 0x60(r6)
-	lfd     fp9,  0x68(r4)
-	lfd     fp10, 0x70(r4)
-	lfd     fp11, 0x78(r4)
-	lfdu    fp12, 0x80(r4)
-	stfd    fp9,  0x68(r6)
-	stfd    fp10, 0x70(r6)
-	stfd    fp11, 0x78(r6)
-	stfdu   fp12, 0x80(r6)
-	bdnz    L(loop2_128)
-L(endloop2_128):
-
-	b       L(lessthancacheline)
-
-
-END (memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/add_n.S b/sysdeps/powerpc/powerpc32/add_n.S
deleted file mode 100644
index 0687be6236..0000000000
--- a/sysdeps/powerpc/powerpc32/add_n.S
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Add two limb vectors of equal, non-zero length for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_add_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
-                        mp_size_t size)
-   Calculate s1+s2 and put result in res_ptr; return carry, 0 or 1.  */
-
-/* Note on optimisation: This code is optimal for the 601.  Almost every other
-   possible 2-unrolled inner loop will not be.  Also, watch out for the
-   alignment...  */
-
-EALIGN (__mpn_add_n, 3, 0)
-
-/* Set up for loop below.  */
-	mtcrf 0x01,r6
-	srwi. r7,r6,1
-	li    r10,0
-	mtctr r7
-	bt    31,L(2)
-
-/* Clear the carry.  */
-	addic r0,r0,0
-/* Adjust pointers for loop.  */
-	addi  r3,r3,-4
-	addi  r4,r4,-4
-	addi  r5,r5,-4
-	b     L(0)
-
-L(2):	lwz  r7,0(r5)
-	lwz  r6,0(r4)
-	addc r6,r6,r7
-	stw  r6,0(r3)
-        beq  L(1)
-
-/* The loop.  */
-
-/* Align start of loop to an odd word boundary to guarantee that the
-   last two words can be fetched in one access (for 601).  */
-L(0):	lwz  r9,4(r4)
-	lwz  r8,4(r5)
-	lwzu r6,8(r4)
-	lwzu r7,8(r5)
-	adde r8,r9,r8
-	stw  r8,4(r3)
-	adde r6,r6,r7
-	stwu r6,8(r3)
-	bdnz L(0)
-/* Return the carry.  */
-L(1):	addze r3,r10
-	blr
-END (__mpn_add_n)
diff --git a/sysdeps/powerpc/powerpc32/addmul_1.S b/sysdeps/powerpc/powerpc32/addmul_1.S
deleted file mode 100644
index f742be21b8..0000000000
--- a/sysdeps/powerpc/powerpc32/addmul_1.S
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Multiply a limb vector by a single limb, for PowerPC.
-   Copyright (C) 1993-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_addmul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
-                           mp_size_t s1_size, mp_limb_t s2_limb)
-   Calculate res+s1*s2 and put result back in res; return carry.  */
-ENTRY (__mpn_addmul_1)
-	mtctr	r5
-
-	lwz	r0,0(r4)
-	mullw	r7,r0,r6
-	mulhwu	r10,r0,r6
-	lwz     r9,0(r3)
-	addc	r8,r7,r9
-	addi	r3,r3,-4		/* adjust res_ptr */
-	bdz	L(1)
-
-L(0):	lwzu	r0,4(r4)
-	stwu	r8,4(r3)
-	mullw	r8,r0,r6
-	adde	r7,r8,r10
-	mulhwu	r10,r0,r6
-	lwz     r9,4(r3)
-	addze   r10,r10
-	addc    r8,r7,r9
-	bdnz	L(0)
-
-L(1):	stw	r8,4(r3)
-	addze	r3,r10
-	blr
-END (__mpn_addmul_1)
diff --git a/sysdeps/powerpc/powerpc32/atomic-machine.h b/sysdeps/powerpc/powerpc32/atomic-machine.h
deleted file mode 100644
index 96c7d81359..0000000000
--- a/sysdeps/powerpc/powerpc32/atomic-machine.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Atomic operations.  PowerPC32 version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*  POWER6 adds a "Mutex Hint" to the Load and Reserve instruction.
-    This is a hint to the hardware to expect additional updates adjacent
-    to the lock word or not.  If we are acquiring a Mutex, the hint
-    should be true. Otherwise we releasing a Mutex or doing a simple
-    atomic operation.  In that case we don't expect additional updates
-    adjacent to the lock word after the Store Conditional and the hint
-    should be false.  */
-
-#if defined _ARCH_PWR6 || defined _ARCH_PWR6X
-# define MUTEX_HINT_ACQ	",1"
-# define MUTEX_HINT_REL	",0"
-#else
-# define MUTEX_HINT_ACQ
-# define MUTEX_HINT_REL
-#endif
-
-#define __HAVE_64B_ATOMICS 0
-#define USE_ATOMIC_COMPILER_BUILTINS 0
-#define ATOMIC_EXCHANGE_USES_CAS 1
-
-/*
- * The 32-bit exchange_bool is different on powerpc64 because the subf
- * does signed 64-bit arithmetic while the lwarx is 32-bit unsigned
- * (a load word and zero (high 32) form).  So powerpc64 has a slightly
- * different version in sysdeps/powerpc/powerpc64/atomic-machine.h.
- */
-#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval)         \
-({									      \
-  unsigned int __tmp;							      \
-  __asm __volatile (							      \
-		    "1:	lwarx	%0,0,%1" MUTEX_HINT_ACQ "\n"		      \
-		    "	subf.	%0,%2,%0\n"				      \
-		    "	bne	2f\n"					      \
-		    "	stwcx.	%3,0,%1\n"				      \
-		    "	bne-	1b\n"					      \
-		    "2:	" __ARCH_ACQ_INSTR				      \
-		    : "=&r" (__tmp)					      \
-		    : "b" (mem), "r" (oldval), "r" (newval)		      \
-		    : "cr0", "memory");					      \
-  __tmp != 0;								      \
-})
-
-/* Powerpc32 processors don't implement the 64-bit (doubleword) forms of
-   load and reserve (ldarx) and store conditional (stdcx.) instructions.
-   So for powerpc32 we stub out the 64-bit forms.  */
-#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-  (abort (), 0)
-
-#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-  (abort (), (__typeof (*mem)) 0)
-
-#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
-  (abort (), (__typeof (*mem)) 0)
-
-#define __arch_atomic_exchange_64_acq(mem, value) \
-    ({ abort (); (*mem) = (value); })
-
-#define __arch_atomic_exchange_64_rel(mem, value) \
-    ({ abort (); (*mem) = (value); })
-
-#define __arch_atomic_exchange_and_add_64(mem, value) \
-    ({ abort (); (*mem) = (value); })
-
-#define __arch_atomic_exchange_and_add_64_acq(mem, value) \
-    ({ abort (); (*mem) = (value); })
-
-#define __arch_atomic_exchange_and_add_64_rel(mem, value) \
-    ({ abort (); (*mem) = (value); })
-
-#define __arch_atomic_increment_val_64(mem) \
-    ({ abort (); (*mem)++; })
-
-#define __arch_atomic_decrement_val_64(mem) \
-    ({ abort (); (*mem)--; })
-
-#define __arch_atomic_decrement_if_positive_64(mem) \
-    ({ abort (); (*mem)--; })
-
-#ifdef _ARCH_PWR4
-/*
- * Newer powerpc64 processors support the new "light weight" sync (lwsync)
- * So if the build is using -mcpu=[power4,power5,power5+,970] we can
- * safely use lwsync.
- */
-# define atomic_read_barrier()	__asm ("lwsync" ::: "memory")
-/*
- * "light weight" sync can also be used for the release barrier.
- */
-# ifndef UP
-#  define __ARCH_REL_INSTR	"lwsync"
-# endif
-# define atomic_write_barrier()	__asm ("lwsync" ::: "memory")
-#else
-/*
- * Older powerpc32 processors don't support the new "light weight"
- * sync (lwsync).  So the only safe option is to use normal sync
- * for all powerpc32 applications.
- */
-# define atomic_read_barrier()	__asm ("sync" ::: "memory")
-# define atomic_write_barrier()	__asm ("sync" ::: "memory")
-#endif
-
-/*
- * Include the rest of the atomic ops macros which are common to both
- * powerpc32 and powerpc64.
- */
-#include_next <atomic-machine.h>
diff --git a/sysdeps/powerpc/powerpc32/backtrace.c b/sysdeps/powerpc/powerpc32/backtrace.c
deleted file mode 100644
index 394062136c..0000000000
--- a/sysdeps/powerpc/powerpc32/backtrace.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Return backtrace of current program state.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <execinfo.h>
-#include <stddef.h>
-#include <string.h>
-#include <signal.h>
-#include <libc-vdso.h>
-
-/* This is the stack layout we see with every stack frame.
-   Note that every routine is required by the ABI to lay out the stack
-   like this.
-
-            +----------------+        +-----------------+
-    %r1  -> | %r1 last frame--------> | %r1 last frame--->...  --> NULL
-            |                |        |                 |
-            | (unused)       |        | return address  |
-            +----------------+        +-----------------+
-*/
-struct layout
-{
-  struct layout *next;
-  void *return_address;
-};
-
-#define SIGNAL_FRAMESIZE 64
-
-/* Since the signal handler is just like any other function it needs to
-   save/restore its LR and it will save it into callers stack frame.
-   Since a signal handler doesn't have a caller, the kernel creates a
-   dummy frame to make it look like it has a caller.  */
-struct signal_frame_32 {
-  char               dummy[SIGNAL_FRAMESIZE];
-  struct sigcontext  sctx;
-  mcontext_t         mctx;
-  /* We don't care about the rest, since IP value is at 'mctx' field.  */
-};
-
-static inline int
-is_sigtramp_address (void *nip)
-{
-#ifdef SHARED
-  if (nip == VDSO_SYMBOL (sigtramp32))
-    return 1;
-#endif
-  return 0;
-}
-
-struct rt_signal_frame_32 {
-  char               dummy[SIGNAL_FRAMESIZE + 16];
-  siginfo_t          info;
-  struct ucontext    uc;
-  /* We don't care about the rest, since IP value is at 'uc' field.  */
-};
-
-static inline int
-is_sigtramp_address_rt (void * nip)
-{
-#ifdef SHARED
-  if (nip == VDSO_SYMBOL (sigtramp_rt32))
-    return 1;
-#endif
-  return 0;
-}
-
-int
-__backtrace (void **array, int size)
-{
-  struct layout *current;
-  int count;
-
-  /* Force gcc to spill LR.  */
-  asm volatile ("" : "=l"(current));
-
-  /* Get the address on top-of-stack.  */
-  asm volatile ("lwz %0,0(1)" : "=r"(current));
-
-  for (				count = 0;
-       current != NULL && 	count < size;
-       current = current->next, count++)
-    {
-      gregset_t *gregset = NULL;
-
-      array[count] = current->return_address;
-
-      /* Check if the symbol is the signal trampoline and get the interrupted
-       * symbol address from the trampoline saved area.  */
-      if (is_sigtramp_address (current->return_address))
-	{
-	  struct signal_frame_32 *sigframe =
-	    (struct signal_frame_32*) current;
-          gregset = &sigframe->mctx.gregs;
-        }
-      else if (is_sigtramp_address_rt (current->return_address))
-	{
-	  struct rt_signal_frame_32 *sigframe =
-            (struct rt_signal_frame_32*) current;
-          gregset = &sigframe->uc.uc_mcontext.uc_regs->gregs;
-        }
-      if (gregset)
-	{
-	  array[++count] = (void*)((*gregset)[PT_NIP]);
-	  current = (void*)((*gregset)[PT_R1]);
-	}
-    }
-
-  /* It's possible the second-last stack frame can't return
-     (that is, it's __libc_start_main), in which case
-     the CRT startup code will have set its LR to 'NULL'.  */
-  if (count > 0 && array[count-1] == NULL)
-    count--;
-
-  return count;
-}
-weak_alias (__backtrace, backtrace)
-libc_hidden_def (__backtrace)
diff --git a/sysdeps/powerpc/powerpc32/bits/wordsize.h b/sysdeps/powerpc/powerpc32/bits/wordsize.h
deleted file mode 100644
index 04ca9debf0..0000000000
--- a/sysdeps/powerpc/powerpc32/bits/wordsize.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Determine the wordsize from the preprocessor defines.  */
-
-#if defined __powerpc64__
-# define __WORDSIZE	64
-# define __WORDSIZE_TIME64_COMPAT32	1
-#else
-# define __WORDSIZE	32
-# define __WORDSIZE_TIME64_COMPAT32	0
-# define __WORDSIZE32_SIZE_ULONG	0
-# define __WORDSIZE32_PTRDIFF_LONG	0
-#endif
diff --git a/sysdeps/powerpc/powerpc32/bsd-_setjmp.S b/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
deleted file mode 100644
index 169766c304..0000000000
--- a/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.  PowerPC32/64 version.
-   Copyright (C) 1994-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#include <shlib-compat.h>
-#include <libc-symbols.h>
-#include <sysdep.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-ENTRY (_setjmp)
-	li r4,0			/* Set second argument to 0.  */
-	b __sigsetjmp@local
-END (_setjmp)
-libc_hidden_def (_setjmp)
-#else
-/* Build a versioned object for libc.  */
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-compat_symbol (libc, __novmx_setjmp, _setjmp, GLIBC_2_0);
-
-ENTRY (__novmx_setjmp)
-	li r4,0			/* Set second argument to 0.  */
-	b __novmx__sigsetjmp@local
-END (__novmx_setjmp)
-libc_hidden_def (__novmx_setjmp)
-# endif /* defined SHARED  && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) */
-
-versioned_symbol (libc, __vmx_setjmp, _setjmp, GLIBC_2_3_4)
-/* __GI__setjmp prototype is needed for ntpl i.e. _setjmp is defined
-   as a libc_hidden_proto & is used in sysdeps/generic/libc-start.c
-   if HAVE_CLEANUP_JMP_BUF is defined */
-ENTRY (__GI__setjmp)
-	li r4,0			/* Set second argument to 0.  */
-	b __vmx__sigsetjmp@local
-END (__GI__setjmp)
-
-ENTRY (__vmx_setjmp)
-	li r4,0			/* Set second argument to 0.  */
-	b __vmx__sigsetjmp@local
-END (__vmx_setjmp)
-libc_hidden_def (__vmx_setjmp)
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc32/bsd-setjmp.S b/sysdeps/powerpc/powerpc32/bsd-setjmp.S
deleted file mode 100644
index 212d6ce8b1..0000000000
--- a/sysdeps/powerpc/powerpc32/bsd-setjmp.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.  PowerPC32/64 version.
-   Copyright (C) 1994-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#include <shlib-compat.h>
-#include <libc-symbols.h>
-#include <sysdep.h>
-
-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-
-ENTRY (__novmxsetjmp)
-	li r4,1			/* Set second argument to 1.  */
-	b __novmx__sigsetjmp@local
-END (__novmxsetjmp)
-strong_alias (__novmxsetjmp, __novmx__setjmp)
-compat_symbol (libc, __novmxsetjmp, setjmp, GLIBC_2_0)
-
-#endif  /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4) ) */
-
-ENTRY (__vmxsetjmp)
-	li r4,1			/* Set second argument to 1.  */
-	b __vmx__sigsetjmp@local
-END (__vmxsetjmp)
-strong_alias (__vmxsetjmp, __vmx__setjmp)
-strong_alias (__vmx__setjmp, __setjmp)
-versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4)
diff --git a/sysdeps/powerpc/powerpc32/bzero.S b/sysdeps/powerpc/powerpc32/bzero.S
deleted file mode 100644
index 2638b12db0..0000000000
--- a/sysdeps/powerpc/powerpc32/bzero.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Optimized bzero `implementation' for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY (__bzero)
-
-	mr	r5,r4
-	li	r4,0
-	b	memset@local
-END (__bzero)
-weak_alias (__bzero, bzero)
diff --git a/sysdeps/powerpc/powerpc32/cell/memcpy.S b/sysdeps/powerpc/powerpc32/cell/memcpy.S
deleted file mode 100644
index a7f761408a..0000000000
--- a/sysdeps/powerpc/powerpc32/cell/memcpy.S
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Optimized memcpy implementation for CELL BE PowerPC.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define PREFETCH_AHEAD 6	/* no cache lines SRC prefetching ahead  */
-#define ZERO_AHEAD 4		/* no cache lines DST zeroing ahead  */
-
-/* memcpy routine optimized for CELL-BE-PPC	v2.0
- *
- * The CELL PPC core has 1 integer unit and 1 load/store unit
- * CELL:
- * 1st level data cache = 32K
- * 2nd level data cache = 512K
- * 3rd level data cache = 0K
- * With 3.2 GHz clockrate the latency to 2nd level cache is >36 clocks,
- * latency to memory is >400 clocks
- * To improve copy performance we need to prefetch source data
- * far ahead to hide this latency
- * For best performance instruction forms ending in "." like "andi."
- * should be avoided as the are implemented in microcode on CELL.
- * The below code is loop unrolled for the CELL cache line of 128 bytes
- */
-
-.align  7
-
-EALIGN (memcpy, 5, 0)
-	CALL_MCOUNT
-
-	dcbt	0,r4		/* Prefetch ONE SRC cacheline  */
-	cmplwi	cr1,r5,16	/* is size < 16 ?  */
-	mr	r6,r3
-	blt+	cr1,.Lshortcopy
-
-.Lbigcopy:
-	neg	r8,r3		/* LS 3 bits = # bytes to 8-byte dest bdry  */
-	clrlwi  r8,r8,32-4	/* align to 16byte boundary  */
-	sub     r7,r4,r3
-	cmplwi	cr0,r8,0
-	beq+	.Ldst_aligned
-
-.Ldst_unaligned:
-	mtcrf	0x01,r8		/* put #bytes to boundary into cr7  */
-	subf	r5,r8,r5
-
-	bf	cr7*4+3,1f
-	lbzx	r0,r7,r6	/* copy 1 byte  */
-	stb	r0,0(r6)
-	addi	r6,r6,1
-1:	bf	cr7*4+2,2f
-	lhzx	r0,r7,r6	/* copy 2 byte  */
-	sth	r0,0(r6)
-	addi	r6,r6,2
-2:	bf	cr7*4+1,4f
-	lwzx	r0,r7,r6	/* copy 4 byte  */
-	stw	r0,0(r6)
-	addi	r6,r6,4
-4:	bf	cr7*4+0,8f
-	lfdx	fp9,r7,r6	/* copy 8 byte  */
-	stfd	fp9,0(r6)
-	addi	r6,r6,8
-8:
-	add	r4,r7,r6
-
-.Ldst_aligned:
-
-	cmpwi	cr5,r5,128-1
-
-	neg	r7,r6
-	addi	r6,r6,-8	/* prepare for stfdu  */
-	addi	r4,r4,-8	/* prepare for lfdu  */
-
-	clrlwi  r7,r7,32-7	/* align to cacheline boundary  */
-	ble+	cr5,.Llessthancacheline
-
-	cmplwi	cr6,r7,0
-	subf	r5,r7,r5
-	srwi	r7,r7,4		/* divide size by 16  */
-	srwi	r10,r5,7	/* number of cache lines to copy  */
-
-	cmplwi	r10,0
-	li	r11,0		/* number cachelines to copy with prefetch  */
-	beq	.Lnocacheprefetch
-
-	cmplwi	r10,PREFETCH_AHEAD
-	li	r12,128+8	/* prefetch distance  */
-	ble	.Llessthanmaxprefetch
-
-	subi	r11,r10,PREFETCH_AHEAD
-	li	r10,PREFETCH_AHEAD
-
-.Llessthanmaxprefetch:
-	mtctr	r10
-
-.LprefetchSRC:
-	dcbt    r12,r4
-	addi    r12,r12,128
-	bdnz    .LprefetchSRC
-
-.Lnocacheprefetch:
-	mtctr	r7
-	cmplwi	cr1,r5,128
-	clrlwi  r5,r5,32-7
-	beq	cr6,.Lcachelinealigned
-
-.Laligntocacheline:
-	lfd	fp9,0x08(r4)
-	lfdu	fp10,0x10(r4)
-	stfd	fp9,0x08(r6)
-	stfdu	fp10,0x10(r6)
-	bdnz	.Laligntocacheline
-
-
-.Lcachelinealigned:		/* copy while cache lines  */
-
-	blt-	cr1,.Llessthancacheline	/* size <128  */
-
-.Louterloop:
-	cmpwi   r11,0
-	mtctr	r11
-	beq-	.Lendloop
-
-	li	r11,128*ZERO_AHEAD +8	/* DCBZ dist  */
-
-.align	4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-.Lloop:				/* Copy aligned body  */
-	dcbt	r12,r4		/* PREFETCH SOURCE some cache lines ahead  */
-	lfd	fp9, 0x08(r4)
-	dcbz	r11,r6
-	lfd	fp10, 0x10(r4)	/* 4 register stride copy is optimal  */
-	lfd	fp11, 0x18(r4)	/* to hide 1st level cache latency.  */
-	lfd	fp12, 0x20(r4)
-	stfd	fp9, 0x08(r6)
-	stfd	fp10, 0x10(r6)
-	stfd	fp11, 0x18(r6)
-	stfd	fp12, 0x20(r6)
-	lfd	fp9, 0x28(r4)
-	lfd	fp10, 0x30(r4)
-	lfd	fp11, 0x38(r4)
-	lfd	fp12, 0x40(r4)
-	stfd	fp9, 0x28(r6)
-	stfd	fp10, 0x30(r6)
-	stfd	fp11, 0x38(r6)
-	stfd	fp12, 0x40(r6)
-	lfd	fp9, 0x48(r4)
-	lfd	fp10, 0x50(r4)
-	lfd	fp11, 0x58(r4)
-	lfd	fp12, 0x60(r4)
-	stfd	fp9, 0x48(r6)
-	stfd	fp10, 0x50(r6)
-	stfd	fp11, 0x58(r6)
-	stfd	fp12, 0x60(r6)
-	lfd	fp9, 0x68(r4)
-	lfd	fp10, 0x70(r4)
-	lfd	fp11, 0x78(r4)
-	lfdu	fp12, 0x80(r4)
-	stfd	fp9, 0x68(r6)
-	stfd	fp10, 0x70(r6)
-	stfd	fp11, 0x78(r6)
-	stfdu	fp12, 0x80(r6)
-
-	bdnz	.Lloop
-
-.Lendloop:
-	cmpwi	r10,0
-	slwi	r10,r10,2	/* adjust from 128 to 32 byte stride  */
-	beq-	.Lendloop2
-	mtctr	r10
-
-.Lloop2:			/* Copy aligned body  */
-	lfd	fp9, 0x08(r4)
-	lfd	fp10, 0x10(r4)
-	lfd	fp11, 0x18(r4)
-	lfdu	fp12, 0x20(r4)
-	stfd	fp9, 0x08(r6)
-	stfd	fp10, 0x10(r6)
-	stfd	fp11, 0x18(r6)
-	stfdu	fp12, 0x20(r6)
-
-	bdnz	.Lloop2
-.Lendloop2:
-
-.Llessthancacheline:		/* less than cache to do ?  */
-	cmplwi	cr0,r5,16
-	srwi	r7,r5,4		/* divide size by 16  */
-	blt-	.Ldo_lt16
-	mtctr	r7
-
-.Lcopy_remaining:
-	lfd	fp9,0x08(r4)
-	lfdu	fp10,0x10(r4)
-	stfd	fp9,0x08(r6)
-	stfdu	fp10,0x10(r6)
-	bdnz	.Lcopy_remaining
-
-.Ldo_lt16:			/* less than 16 ?  */
-	cmplwi	cr0,r5,0	/* copy remaining bytes (0-15)  */
-	beqlr+			/* no rest to copy  */
-	addi	r4,r4,8
-	addi	r6,r6,8
-
-.Lshortcopy:			/* SIMPLE COPY to handle size =< 15 bytes  */
-	mtcrf	0x01,r5
-	sub	r7,r4,r6
-	bf-	cr7*4+0,8f
-	lfdx	fp9,r7,r6	/* copy 8 byte  */
-	stfd	fp9,0(r6)
-	addi	r6,r6,8
-8:
-	bf	cr7*4+1,4f
-	lwzx	r0,r7,r6	/* copy 4 byte  */
-	stw	r0,0(r6)
-	addi	r6,r6,4
-4:
-	bf	cr7*4+2,2f
-	lhzx	r0,r7,r6	/* copy 2 byte  */
-	sth	r0,0(r6)
-	addi	r6,r6,2
-2:
-	bf	cr7*4+3,1f
-	lbzx	r0,r7,r6	/* copy 1 byte  */
-	stb	r0,0(r6)
-1:	blr
-
-END (memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S b/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S
deleted file mode 100644
index 2a9cb24072..0000000000
--- a/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_15)
-
-	compat_text_section
-# define _mcount __compat_mcount
-# include "ppc-mcount.S"
-# undef _mcount
-
-compat_symbol (libc, __compat_mcount, _mcount, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/configure b/sysdeps/powerpc/powerpc32/configure
deleted file mode 100644
index 29cfd53e8b..0000000000
--- a/sysdeps/powerpc/powerpc32/configure
+++ /dev/null
@@ -1,29 +0,0 @@
-# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
- # Local configure fragment for sysdeps/powerpc/powerpc32.
-
-# See whether GCC uses -msecure-plt.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -msecure-plt by default" >&5
-$as_echo_n "checking for -msecure-plt by default... " >&6; }
-if ${libc_cv_ppc_secure_plt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  echo 'int foo (void) { extern int bar; return bar; }' > conftest.c
-libc_cv_ppc_secure_plt=no
-if { ac_try='${CC-cc} -S $CFLAGS conftest.c -fpic -o conftest.s 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-  if grep '_GLOBAL_OFFSET_TABLE_-.*@ha' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_secure_plt=yes
-  fi
-fi
-rm -rf conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_secure_plt" >&5
-$as_echo "$libc_cv_ppc_secure_plt" >&6; }
-if test $libc_cv_ppc_secure_plt = yes; then
-  $as_echo "#define HAVE_PPC_SECURE_PLT 1" >>confdefs.h
-
-fi
diff --git a/sysdeps/powerpc/powerpc32/configure.ac b/sysdeps/powerpc/powerpc32/configure.ac
deleted file mode 100644
index 5d3a9b509d..0000000000
--- a/sysdeps/powerpc/powerpc32/configure.ac
+++ /dev/null
@@ -1,16 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/powerpc/powerpc32.
-
-# See whether GCC uses -msecure-plt.
-AC_CACHE_CHECK(for -msecure-plt by default, libc_cv_ppc_secure_plt, [dnl
-echo 'int foo (void) { extern int bar; return bar; }' > conftest.c
-libc_cv_ppc_secure_plt=no
-if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS conftest.c -fpic -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-  if grep '_GLOBAL_OFFSET_TABLE_-.*@ha' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_secure_plt=yes
-  fi
-fi
-rm -rf conftest*])
-if test $libc_cv_ppc_secure_plt = yes; then
-  AC_DEFINE(HAVE_PPC_SECURE_PLT)
-fi
diff --git a/sysdeps/powerpc/powerpc32/crti.S b/sysdeps/powerpc/powerpc32/crti.S
deleted file mode 100644
index 50b02630c3..0000000000
--- a/sysdeps/powerpc/powerpc32/crti.S
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Special .init and .fini section support for PowerPC.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* crti.S puts a function prologue at the beginning of the .init and
-   .fini sections and defines global symbols for those addresses, so
-   they can be called as functions.  The symbols _init and _fini are
-   magic and cause the linker to emit DT_INIT and DT_FINI.  */
-
-#include <libc-symbols.h>
-#include <sysdep.h>
-
-#ifndef PREINIT_FUNCTION
-# define PREINIT_FUNCTION __gmon_start__
-#endif
-
-#ifndef PREINIT_FUNCTION_WEAK
-# define PREINIT_FUNCTION_WEAK 1
-#endif
-
-#if PREINIT_FUNCTION_WEAK
-	weak_extern (PREINIT_FUNCTION)
-#else
-	.hidden PREINIT_FUNCTION
-#endif
-
-	.section .init,"ax",@progbits
-	.align	2
-	.globl	_init
-	.type	_init, @function
-_init:
-	stwu r1, -16(r1)
-	mflr r0
-	stw r0, 20(r1)
-	stw r30, 8(r1)
-	SETUP_GOT_ACCESS (r30, .Lgot_label_i)
-	addis r30, r30, _GLOBAL_OFFSET_TABLE_-.Lgot_label_i@ha
-	addi r30, r30, _GLOBAL_OFFSET_TABLE_-.Lgot_label_i@l
-#if PREINIT_FUNCTION_WEAK
-	lwz r0, PREINIT_FUNCTION@got(r30)
-	cmpwi cr7, r0, 0
-	beq+ cr7, 1f
-	bl PREINIT_FUNCTION@plt
-1:
-#else
-	bl PREINIT_FUNCTION@local
-#endif
-
-	.section .fini,"ax",@progbits
-	.align	2
-	.globl	_fini
-	.type	_fini, @function
-_fini:
-	stwu r1, -16(r1)
-	mflr r0
-	stw r0, 20(r1)
-	stw r30, 8(r1)
-	SETUP_GOT_ACCESS (r30, .Lgot_label_f)
diff --git a/sysdeps/powerpc/powerpc32/crtn.S b/sysdeps/powerpc/powerpc32/crtn.S
deleted file mode 100644
index 67be2950fe..0000000000
--- a/sysdeps/powerpc/powerpc32/crtn.S
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Special .init and .fini section support for PowerPC.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* crtn.S puts function epilogues in the .init and .fini sections
-   corresponding to the prologues in crti.S. */
-
-#include <sysdep.h>
-
-	.section .init,"ax",@progbits
-	lwz r0, 20(r1)
-	mtlr r0
-	lwz r30, 8(r1)
-	addi r1, r1, 16
-	blr
-
-	.section .fini,"ax",@progbits
-	lwz r0, 20(r1)
-	mtlr r0
-	lwz r30, 8(r1)
-	addi r1, r1, 16
-	blr
diff --git a/sysdeps/powerpc/powerpc32/dl-dtprocnum.h b/sysdeps/powerpc/powerpc32/dl-dtprocnum.h
deleted file mode 100644
index 7fe2be7939..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-dtprocnum.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Number of extra dynamic section entries for this architecture.  By
-   default there are none.  */
-#define DT_THISPROCNUM	DT_PPC_NUM
diff --git a/sysdeps/powerpc/powerpc32/dl-irel.h b/sysdeps/powerpc/powerpc32/dl-irel.h
deleted file mode 100644
index e5d6540ce4..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-irel.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Machine-dependent ELF indirect relocation inline functions.
-   PowerPC version.
-   Copyright (C) 2009-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_IREL_H
-#define _DL_IREL_H
-
-#include <stdio.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-
-#define ELF_MACHINE_IRELA	1
-
-static inline Elf32_Addr
-__attribute ((always_inline))
-elf_ifunc_invoke (Elf32_Addr addr)
-{
-  return ((Elf32_Addr (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap));
-}
-
-static inline void
-__attribute ((always_inline))
-elf_irela (const Elf32_Rela *reloc)
-{
-  unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
-
-  if (__glibc_likely (r_type == R_PPC_IRELATIVE))
-    {
-      Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
-      Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend);
-      *reloc_addr = value;
-    }
-  else
-    __libc_fatal ("unexpected reloc type in static binary");
-}
-
-#endif /* dl-irel.h */
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c
deleted file mode 100644
index 2d6a576552..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-machine.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/* Machine-dependent ELF dynamic relocation functions.  PowerPC version.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <unistd.h>
-#include <string.h>
-#include <sys/param.h>
-#include <link.h>
-#include <ldsodefs.h>
-#include <elf/dynamic-link.h>
-#include <dl-machine.h>
-#include <_itoa.h>
-
-/* The value __cache_line_size is defined in dl-sysdep.c and is initialised
-   by _dl_sysdep_start via DL_PLATFORM_INIT.  */
-extern int __cache_line_size attribute_hidden;
-
-
-/* Stuff for the PLT.  */
-#define PLT_INITIAL_ENTRY_WORDS 18
-#define PLT_LONGBRANCH_ENTRY_WORDS 0
-#define PLT_TRAMPOLINE_ENTRY_WORDS 6
-#define PLT_DOUBLE_SIZE (1<<13)
-#define PLT_ENTRY_START_WORDS(entry_number) \
-  (PLT_INITIAL_ENTRY_WORDS + (entry_number)*2				\
-   + ((entry_number) > PLT_DOUBLE_SIZE					\
-      ? ((entry_number) - PLT_DOUBLE_SIZE)*2				\
-      : 0))
-#define PLT_DATA_START_WORDS(num_entries) PLT_ENTRY_START_WORDS(num_entries)
-
-/* Macros to build PowerPC opcode words.  */
-#define OPCODE_ADDI(rd,ra,simm) \
-  (0x38000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
-#define OPCODE_ADDIS(rd,ra,simm) \
-  (0x3c000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
-#define OPCODE_ADD(rd,ra,rb) \
-  (0x7c000214 | (rd) << 21 | (ra) << 16 | (rb) << 11)
-#define OPCODE_B(target) (0x48000000 | ((target) & 0x03fffffc))
-#define OPCODE_BA(target) (0x48000002 | ((target) & 0x03fffffc))
-#define OPCODE_BCTR() 0x4e800420
-#define OPCODE_LWZ(rd,d,ra) \
-  (0x80000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
-#define OPCODE_LWZU(rd,d,ra) \
-  (0x84000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
-#define OPCODE_MTCTR(rd) (0x7C0903A6 | (rd) << 21)
-#define OPCODE_RLWINM(ra,rs,sh,mb,me) \
-  (0x54000000 | (rs) << 21 | (ra) << 16 | (sh) << 11 | (mb) << 6 | (me) << 1)
-
-#define OPCODE_LI(rd,simm)    OPCODE_ADDI(rd,0,simm)
-#define OPCODE_ADDIS_HI(rd,ra,value) \
-  OPCODE_ADDIS(rd,ra,((value) + 0x8000) >> 16)
-#define OPCODE_LIS_HI(rd,value) OPCODE_ADDIS_HI(rd,0,value)
-#define OPCODE_SLWI(ra,rs,sh) OPCODE_RLWINM(ra,rs,sh,0,31-sh)
-
-
-#define PPC_DCBST(where) asm volatile ("dcbst 0,%0" : : "r"(where) : "memory")
-#define PPC_SYNC asm volatile ("sync" : : : "memory")
-#define PPC_ISYNC asm volatile ("sync; isync" : : : "memory")
-#define PPC_ICBI(where) asm volatile ("icbi 0,%0" : : "r"(where) : "memory")
-#define PPC_DIE asm volatile ("tweq 0,0")
-
-/* Use this when you've modified some code, but it won't be in the
-   instruction fetch queue (or when it doesn't matter if it is). */
-#define MODIFIED_CODE_NOQUEUE(where) \
-     do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); } while (0)
-/* Use this when it might be in the instruction queue. */
-#define MODIFIED_CODE(where) \
-     do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); PPC_ISYNC; } while (0)
-
-
-/* The idea here is that to conform to the ABI, we are supposed to try
-   to load dynamic objects between 0x10000 (we actually use 0x40000 as
-   the lower bound, to increase the chance of a memory reference from
-   a null pointer giving a segfault) and the program's load address;
-   this may allow us to use a branch instruction in the PLT rather
-   than a computed jump.  The address is only used as a preference for
-   mmap, so if we get it wrong the worst that happens is that it gets
-   mapped somewhere else.  */
-
-ElfW(Addr)
-__elf_preferred_address (struct link_map *loader, size_t maplength,
-			 ElfW(Addr) mapstartpref)
-{
-  ElfW(Addr) low, high;
-  struct link_map *l;
-  Lmid_t nsid;
-
-  /* If the object has a preference, load it there!  */
-  if (mapstartpref != 0)
-    return mapstartpref;
-
-  /* Otherwise, quickly look for a suitable gap between 0x3FFFF and
-     0x70000000.  0x3FFFF is so that references off NULL pointers will
-     cause a segfault, 0x70000000 is just paranoia (it should always
-     be superseded by the program's load address).  */
-  low =  0x0003FFFF;
-  high = 0x70000000;
-  for (nsid = 0; nsid < DL_NNS; ++nsid)
-    for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next)
-      {
-	ElfW(Addr) mapstart, mapend;
-	mapstart = l->l_map_start & ~(GLRO(dl_pagesize) - 1);
-	mapend = l->l_map_end | (GLRO(dl_pagesize) - 1);
-	assert (mapend > mapstart);
-
-	/* Prefer gaps below the main executable, note that l ==
-	   _dl_loaded does not work for static binaries loading
-	   e.g. libnss_*.so.  */
-	if ((mapend >= high || l->l_type == lt_executable)
-	    && high >= mapstart)
-	  high = mapstart;
-	else if (mapend >= low && low >= mapstart)
-	  low = mapend;
-	else if (high >= mapend && mapstart >= low)
-	  {
-	    if (high - mapend >= mapstart - low)
-	      low = mapend;
-	    else
-	      high = mapstart;
-	  }
-      }
-
-  high -= 0x10000; /* Allow some room between objects.  */
-  maplength = (maplength | (GLRO(dl_pagesize) - 1)) + 1;
-  if (high <= low || high - low < maplength )
-    return 0;
-  return high - maplength;  /* Both high and maplength are page-aligned.  */
-}
-
-/* Set up the loaded object described by L so its unrelocated PLT
-   entries will jump to the on-demand fixup code in dl-runtime.c.
-   Also install a small trampoline to be used by entries that have
-   been relocated to an address too far away for a single branch.  */
-
-/* There are many kinds of PLT entries:
-
-   (1)	A direct jump to the actual routine, either a relative or
-	absolute branch.  These are set up in __elf_machine_fixup_plt.
-
-   (2)	Short lazy entries.  These cover the first 8192 slots in
-        the PLT, and look like (where 'index' goes from 0 to 8191):
-
-	li %r11, index*4
-	b  &plt[PLT_TRAMPOLINE_ENTRY_WORDS+1]
-
-   (3)	Short indirect jumps.  These replace (2) when a direct jump
-	wouldn't reach.  They look the same except that the branch
-	is 'b &plt[PLT_LONGBRANCH_ENTRY_WORDS]'.
-
-   (4)  Long lazy entries.  These cover the slots when a short entry
-	won't fit ('index*4' overflows its field), and look like:
-
-	lis %r11, %hi(index*4 + &plt[PLT_DATA_START_WORDS])
-	lwzu %r12, %r11, %lo(index*4 + &plt[PLT_DATA_START_WORDS])
-	b  &plt[PLT_TRAMPOLINE_ENTRY_WORDS]
-	bctr
-
-   (5)	Long indirect jumps.  These replace (4) when a direct jump
-	wouldn't reach.  They look like:
-
-	lis %r11, %hi(index*4 + &plt[PLT_DATA_START_WORDS])
-	lwz %r12, %r11, %lo(index*4 + &plt[PLT_DATA_START_WORDS])
-	mtctr %r12
-	bctr
-
-   (6) Long direct jumps.  These are used when thread-safety is not
-       required.  They look like:
-
-       lis %r12, %hi(finaladdr)
-       addi %r12, %r12, %lo(finaladdr)
-       mtctr %r12
-       bctr
-
-
-   The lazy entries, (2) and (4), are set up here in
-   __elf_machine_runtime_setup.  (1), (3), and (5) are set up in
-   __elf_machine_fixup_plt.  (1), (3), and (6) can also be constructed
-   in __process_machine_rela.
-
-   The reason for the somewhat strange construction of the long
-   entries, (4) and (5), is that we need to ensure thread-safety.  For
-   (1) and (3), this is obvious because only one instruction is
-   changed and the PPC architecture guarantees that aligned stores are
-   atomic.  For (5), this is more tricky.  When changing (4) to (5),
-   the `b' instruction is first changed to `mtctr'; this is safe
-   and is why the `lwzu' instruction is not just a simple `addi'.
-   Once this is done, and is visible to all processors, the `lwzu' can
-   safely be changed to a `lwz'.  */
-int
-__elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
-{
-  if (map->l_info[DT_JMPREL])
-    {
-      Elf32_Word i;
-      Elf32_Word *plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
-      Elf32_Word num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
-				    / sizeof (Elf32_Rela));
-      Elf32_Word rel_offset_words = PLT_DATA_START_WORDS (num_plt_entries);
-      Elf32_Word data_words = (Elf32_Word) (plt + rel_offset_words);
-      Elf32_Word size_modified;
-
-      extern void _dl_runtime_resolve (void);
-      extern void _dl_prof_resolve (void);
-
-      /* Convert the index in r11 into an actual address, and get the
-	 word at that address.  */
-      plt[PLT_LONGBRANCH_ENTRY_WORDS] = OPCODE_ADDIS_HI (11, 11, data_words);
-      plt[PLT_LONGBRANCH_ENTRY_WORDS + 1] = OPCODE_LWZ (11, data_words, 11);
-
-      /* Call the procedure at that address.  */
-      plt[PLT_LONGBRANCH_ENTRY_WORDS + 2] = OPCODE_MTCTR (11);
-      plt[PLT_LONGBRANCH_ENTRY_WORDS + 3] = OPCODE_BCTR ();
-
-      if (lazy)
-	{
-	  Elf32_Word *tramp = plt + PLT_TRAMPOLINE_ENTRY_WORDS;
-	  Elf32_Word dlrr;
-	  Elf32_Word offset;
-
-#ifndef PROF
-	  dlrr = (Elf32_Word) (profile
-			       ? _dl_prof_resolve
-			       : _dl_runtime_resolve);
-	  if (profile && GLRO(dl_profile) != NULL
-	      && _dl_name_match_p (GLRO(dl_profile), map))
-	    /* This is the object we are looking for.  Say that we really
-	       want profiling and the timers are started.  */
-	    GL(dl_profile_map) = map;
-#else
-	  dlrr = (Elf32_Word) _dl_runtime_resolve;
-#endif
-
-	  /* For the long entries, subtract off data_words.  */
-	  tramp[0] = OPCODE_ADDIS_HI (11, 11, -data_words);
-	  tramp[1] = OPCODE_ADDI (11, 11, -data_words);
-
-	  /* Multiply index of entry by 3 (in r11).  */
-	  tramp[2] = OPCODE_SLWI (12, 11, 1);
-	  tramp[3] = OPCODE_ADD (11, 12, 11);
-	  if (dlrr <= 0x01fffffc || dlrr >= 0xfe000000)
-	    {
-	      /* Load address of link map in r12.  */
-	      tramp[4] = OPCODE_LI (12, (Elf32_Word) map);
-	      tramp[5] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map);
-
-	      /* Call _dl_runtime_resolve.  */
-	      tramp[6] = OPCODE_BA (dlrr);
-	    }
-	  else
-	    {
-	      /* Get address of _dl_runtime_resolve in CTR.  */
-	      tramp[4] = OPCODE_LI (12, dlrr);
-	      tramp[5] = OPCODE_ADDIS_HI (12, 12, dlrr);
-	      tramp[6] = OPCODE_MTCTR (12);
-
-	      /* Load address of link map in r12.  */
-	      tramp[7] = OPCODE_LI (12, (Elf32_Word) map);
-	      tramp[8] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map);
-
-	      /* Call _dl_runtime_resolve.  */
-	      tramp[9] = OPCODE_BCTR ();
-	    }
-
-	  /* Set up the lazy PLT entries.  */
-	  offset = PLT_INITIAL_ENTRY_WORDS;
-	  i = 0;
-	  while (i < num_plt_entries && i < PLT_DOUBLE_SIZE)
-	    {
-	      plt[offset  ] = OPCODE_LI (11, i * 4);
-	      plt[offset+1] = OPCODE_B ((PLT_TRAMPOLINE_ENTRY_WORDS + 2
-					 - (offset+1))
-					* 4);
-	      i++;
-	      offset += 2;
-	    }
-	  while (i < num_plt_entries)
-	    {
-	      plt[offset  ] = OPCODE_LIS_HI (11, i * 4 + data_words);
-	      plt[offset+1] = OPCODE_LWZU (12, i * 4 + data_words, 11);
-	      plt[offset+2] = OPCODE_B ((PLT_TRAMPOLINE_ENTRY_WORDS
-					 - (offset+2))
-					* 4);
-	      plt[offset+3] = OPCODE_BCTR ();
-	      i++;
-	      offset += 4;
-	    }
-	}
-
-      /* Now, we've modified code.  We need to write the changes from
-	 the data cache to a second-level unified cache, then make
-	 sure that stale data in the instruction cache is removed.
-	 (In a multiprocessor system, the effect is more complex.)
-	 Most of the PLT shouldn't be in the instruction cache, but
-	 there may be a little overlap at the start and the end.
-
-	 Assumes that dcbst and icbi apply to lines of 16 bytes or
-	 more.  Current known line sizes are 16, 32, and 128 bytes.
-	 The following gets the __cache_line_size, when available.  */
-
-      /* Default minimum 4 words per cache line.  */
-      int line_size_words = 4;
-
-      if (lazy && __cache_line_size != 0)
-	/* Convert bytes to words.  */
-	line_size_words = __cache_line_size / 4;
-
-      size_modified = lazy ? rel_offset_words : 6;
-      for (i = 0; i < size_modified; i += line_size_words)
-        PPC_DCBST (plt + i);
-      PPC_DCBST (plt + size_modified - 1);
-      PPC_SYNC;
-
-      for (i = 0; i < size_modified; i += line_size_words)
-        PPC_ICBI (plt + i);
-      PPC_ICBI (plt + size_modified - 1);
-      PPC_ISYNC;
-    }
-
-  return lazy;
-}
-
-Elf32_Addr
-__elf_machine_fixup_plt (struct link_map *map,
-			 Elf32_Addr *reloc_addr, Elf32_Addr finaladdr)
-{
-  Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
-  if (delta << 6 >> 6 == delta)
-    *reloc_addr = OPCODE_B (delta);
-  else if (finaladdr <= 0x01fffffc || finaladdr >= 0xfe000000)
-    *reloc_addr = OPCODE_BA (finaladdr);
-  else
-    {
-      Elf32_Word *plt, *data_words;
-      Elf32_Word index, offset, num_plt_entries;
-
-      num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
-			 / sizeof(Elf32_Rela));
-      plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
-      offset = reloc_addr - plt;
-      index = (offset - PLT_INITIAL_ENTRY_WORDS)/2;
-      data_words = plt + PLT_DATA_START_WORDS (num_plt_entries);
-
-      reloc_addr += 1;
-
-      if (index < PLT_DOUBLE_SIZE)
-	{
-	  data_words[index] = finaladdr;
-	  PPC_SYNC;
-	  *reloc_addr = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - (offset+1))
-				  * 4);
-	}
-      else
-	{
-	  index -= (index - PLT_DOUBLE_SIZE)/2;
-
-	  data_words[index] = finaladdr;
-	  PPC_SYNC;
-
-	  reloc_addr[1] = OPCODE_MTCTR (12);
-	  MODIFIED_CODE_NOQUEUE (reloc_addr + 1);
-	  PPC_SYNC;
-
-	  reloc_addr[0] = OPCODE_LWZ (12,
-				      (Elf32_Word) (data_words + index), 11);
-	}
-    }
-  MODIFIED_CODE (reloc_addr);
-  return finaladdr;
-}
-
-void
-_dl_reloc_overflow (struct link_map *map,
-		    const char *name,
-		    Elf32_Addr *const reloc_addr,
-		    const Elf32_Sym *refsym)
-{
-  char buffer[128];
-  char *t;
-  t = stpcpy (buffer, name);
-  t = stpcpy (t, " relocation at 0x00000000");
-  _itoa_word ((unsigned) reloc_addr, t, 16, 0);
-  if (refsym)
-    {
-      const char *strtab;
-
-      strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-      t = stpcpy (t, " for symbol `");
-      t = stpcpy (t, strtab + refsym->st_name);
-      t = stpcpy (t, "'");
-    }
-  t = stpcpy (t, " out of range");
-  _dl_signal_error (0, map->l_name, NULL, buffer);
-}
-
-void
-__process_machine_rela (struct link_map *map,
-			const Elf32_Rela *reloc,
-			struct link_map *sym_map,
-			const Elf32_Sym *sym,
-			const Elf32_Sym *refsym,
-			Elf32_Addr *const reloc_addr,
-			Elf32_Addr const finaladdr,
-			int rinfo)
-{
-  union unaligned
-    {
-      uint16_t u2;
-      uint32_t u4;
-    } __attribute__((__packed__));
-
-  switch (rinfo)
-    {
-    case R_PPC_NONE:
-      return;
-
-    case R_PPC_ADDR32:
-    case R_PPC_GLOB_DAT:
-    case R_PPC_RELATIVE:
-      *reloc_addr = finaladdr;
-      return;
-
-    case R_PPC_IRELATIVE:
-      *reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) ();
-      return;
-
-    case R_PPC_UADDR32:
-      ((union unaligned *) reloc_addr)->u4 = finaladdr;
-      break;
-
-    case R_PPC_ADDR24:
-      if (__glibc_unlikely (finaladdr > 0x01fffffc && finaladdr < 0xfe000000))
-	_dl_reloc_overflow (map,  "R_PPC_ADDR24", reloc_addr, refsym);
-      *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
-      break;
-
-    case R_PPC_ADDR16:
-      if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
-	_dl_reloc_overflow (map,  "R_PPC_ADDR16", reloc_addr, refsym);
-      *(Elf32_Half*) reloc_addr = finaladdr;
-      break;
-
-    case R_PPC_UADDR16:
-      if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
-	_dl_reloc_overflow (map,  "R_PPC_UADDR16", reloc_addr, refsym);
-      ((union unaligned *) reloc_addr)->u2 = finaladdr;
-      break;
-
-    case R_PPC_ADDR16_LO:
-      *(Elf32_Half*) reloc_addr = finaladdr;
-      break;
-
-    case R_PPC_ADDR16_HI:
-      *(Elf32_Half*) reloc_addr = finaladdr >> 16;
-      break;
-
-    case R_PPC_ADDR16_HA:
-      *(Elf32_Half*) reloc_addr = (finaladdr + 0x8000) >> 16;
-      break;
-
-    case R_PPC_ADDR14:
-    case R_PPC_ADDR14_BRTAKEN:
-    case R_PPC_ADDR14_BRNTAKEN:
-      if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
-	_dl_reloc_overflow (map,  "R_PPC_ADDR14", reloc_addr, refsym);
-      *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
-      if (rinfo != R_PPC_ADDR14)
-	*reloc_addr = ((*reloc_addr & 0xffdfffff)
-		       | ((rinfo == R_PPC_ADDR14_BRTAKEN)
-			  ^ (finaladdr >> 31)) << 21);
-      break;
-
-    case R_PPC_REL24:
-      {
-	Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
-	if (delta << 6 >> 6 != delta)
-	  _dl_reloc_overflow (map,  "R_PPC_REL24", reloc_addr, refsym);
-	*reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
-      }
-      break;
-
-    case R_PPC_COPY:
-      if (sym == NULL)
-	/* This can happen in trace mode when an object could not be
-	   found.  */
-	return;
-      if (sym->st_size > refsym->st_size
-	  || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
-	{
-	  const char *strtab;
-
-	  strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-	  _dl_error_printf ("\
-%s: Symbol `%s' has different size in shared object, consider re-linking\n",
-			    RTLD_PROGNAME, strtab + refsym->st_name);
-	}
-      memcpy (reloc_addr, (char *) finaladdr, MIN (sym->st_size,
-						   refsym->st_size));
-      return;
-
-    case R_PPC_REL32:
-      *reloc_addr = finaladdr - (Elf32_Word) reloc_addr;
-      return;
-
-    case R_PPC_JMP_SLOT:
-      /* It used to be that elf_machine_fixup_plt was used here,
-	 but that doesn't work when ld.so relocates itself
-	 for the second time.  On the bright side, there's
-         no need to worry about thread-safety here.  */
-      {
-	Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
-	if (delta << 6 >> 6 == delta)
-	  *reloc_addr = OPCODE_B (delta);
-	else if (finaladdr <= 0x01fffffc || finaladdr >= 0xfe000000)
-	  *reloc_addr = OPCODE_BA (finaladdr);
-	else
-	  {
-	    Elf32_Word *plt, *data_words;
-	    Elf32_Word index, offset, num_plt_entries;
-
-	    plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
-	    offset = reloc_addr - plt;
-
-	    if (offset < PLT_DOUBLE_SIZE*2 + PLT_INITIAL_ENTRY_WORDS)
-	      {
-		index = (offset - PLT_INITIAL_ENTRY_WORDS)/2;
-		num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
-				   / sizeof(Elf32_Rela));
-		data_words = plt + PLT_DATA_START_WORDS (num_plt_entries);
-		data_words[index] = finaladdr;
-		reloc_addr[0] = OPCODE_LI (11, index * 4);
-		reloc_addr[1] = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS
-					   - (offset+1))
-					  * 4);
-		MODIFIED_CODE_NOQUEUE (reloc_addr + 1);
-	      }
-	    else
-	      {
-		reloc_addr[0] = OPCODE_LIS_HI (12, finaladdr);
-		reloc_addr[1] = OPCODE_ADDI (12, 12, finaladdr);
-		reloc_addr[2] = OPCODE_MTCTR (12);
-		reloc_addr[3] = OPCODE_BCTR ();
-		MODIFIED_CODE_NOQUEUE (reloc_addr + 3);
-	      }
-	  }
-      }
-      break;
-
-#define DO_TLS_RELOC(suffix)						      \
-    case R_PPC_DTPREL##suffix:						      \
-      /* During relocation all TLS symbols are defined and used.	      \
-	 Therefore the offset is already correct.  */			      \
-      if (sym_map != NULL)						      \
-	do_reloc##suffix ("R_PPC_DTPREL"#suffix,			      \
-			  TLS_DTPREL_VALUE (sym, reloc));		      \
-      break;								      \
-    case R_PPC_TPREL##suffix:						      \
-      if (sym_map != NULL)						      \
-	{								      \
-	  CHECK_STATIC_TLS (map, sym_map);				      \
-	  do_reloc##suffix ("R_PPC_TPREL"#suffix,			      \
-			    TLS_TPREL_VALUE (sym_map, sym, reloc));	      \
-	}								      \
-      break;
-
-    inline void do_reloc16 (const char *r_name, Elf32_Addr value)
-      {
-	if (__glibc_unlikely (value > 0x7fff && value < 0xffff8000))
-	  _dl_reloc_overflow (map, r_name, reloc_addr, refsym);
-	*(Elf32_Half *) reloc_addr = value;
-      }
-    inline void do_reloc16_LO (const char *r_name, Elf32_Addr value)
-      {
-	*(Elf32_Half *) reloc_addr = value;
-      }
-    inline void do_reloc16_HI (const char *r_name, Elf32_Addr value)
-      {
-	*(Elf32_Half *) reloc_addr = value >> 16;
-      }
-    inline void do_reloc16_HA (const char *r_name, Elf32_Addr value)
-      {
-	*(Elf32_Half *) reloc_addr = (value + 0x8000) >> 16;
-      }
-    DO_TLS_RELOC (16)
-    DO_TLS_RELOC (16_LO)
-    DO_TLS_RELOC (16_HI)
-    DO_TLS_RELOC (16_HA)
-
-    default:
-      _dl_reloc_bad_type (map, rinfo, 0);
-      return;
-    }
-
-  MODIFIED_CODE_NOQUEUE (reloc_addr);
-}
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h
deleted file mode 100644
index 28eb50f92d..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-machine.h
+++ /dev/null
@@ -1,455 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions.  PowerPC version.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef dl_machine_h
-#define dl_machine_h
-
-#define ELF_MACHINE_NAME "powerpc"
-
-#include <assert.h>
-#include <dl-tls.h>
-#include <dl-irel.h>
-#include <hwcapinfo.h>
-
-/* Translate a processor specific dynamic tag to the index
-   in l_info array.  */
-#define DT_PPC(x) (DT_PPC_##x - DT_LOPROC + DT_NUM)
-
-/* Return nonzero iff ELF header is compatible with the running host.  */
-static inline int
-elf_machine_matches_host (const Elf32_Ehdr *ehdr)
-{
-  return ehdr->e_machine == EM_PPC;
-}
-
-/* Return the value of the GOT pointer.  */
-static inline Elf32_Addr * __attribute__ ((const))
-ppc_got (void)
-{
-  Elf32_Addr *got;
-
-  asm ("bcl 20,31,1f\n"
-       "1:	mflr %0\n"
-       "	addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n"
-       "	addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n"
-       : "=b" (got) : : "lr");
-
-  return got;
-}
-
-/* Return the link-time address of _DYNAMIC, stored as
-   the first value in the GOT. */
-static inline Elf32_Addr __attribute__ ((const))
-elf_machine_dynamic (void)
-{
-  return *ppc_got ();
-}
-
-/* Return the run-time load address of the shared object.  */
-static inline Elf32_Addr __attribute__ ((const))
-elf_machine_load_address (void)
-{
-  Elf32_Addr *branchaddr;
-  Elf32_Addr runtime_dynamic;
-
-  /* This is much harder than you'd expect.  Possibly I'm missing something.
-     The 'obvious' way:
-
-       Apparently, "bcl 20,31,$+4" is what should be used to load LR
-       with the address of the next instruction.
-       I think this is so that machines that do bl/blr pairing don't
-       get confused.
-
-     asm ("bcl 20,31,0f ;"
-	  "0: mflr 0 ;"
-	  "lis %0,0b@ha;"
-	  "addi %0,%0,0b@l;"
-	  "subf %0,%0,0"
-	  : "=b" (addr) : : "r0", "lr");
-
-     doesn't work, because the linker doesn't have to (and in fact doesn't)
-     update the @ha and @l references; the loader (which runs after this
-     code) will do that.
-
-     Instead, we use the following trick:
-
-     The linker puts the _link-time_ address of _DYNAMIC at the first
-     word in the GOT. We could branch to that address, if we wanted,
-     by using an @local reloc; the linker works this out, so it's safe
-     to use now. We can't, of course, actually branch there, because
-     we'd cause an illegal instruction exception; so we need to compute
-     the address ourselves. That gives us the following code: */
-
-  /* Get address of the 'b _DYNAMIC@local'...  */
-  asm ("bcl 20,31,0f;"
-       "b _DYNAMIC@local;"
-       "0:"
-       : "=l" (branchaddr));
-
-  /* So now work out the difference between where the branch actually points,
-     and the offset of that location in memory from the start of the file.  */
-  runtime_dynamic = ((Elf32_Addr) branchaddr
-		     + ((Elf32_Sword) (*branchaddr << 6 & 0xffffff00) >> 6));
-
-  return runtime_dynamic - elf_machine_dynamic ();
-}
-
-#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) /* nothing */
-
-/* The PLT uses Elf32_Rela relocs.  */
-#define elf_machine_relplt elf_machine_rela
-
-/* Mask identifying addresses reserved for the user program,
-   where the dynamic linker should not map anything.  */
-#define ELF_MACHINE_USER_ADDRESS_MASK	0xf0000000UL
-
-/* The actual _start code is in dl-start.S.  Use a really
-   ugly bit of assembler to let dl-start.o see _dl_start.  */
-#define RTLD_START asm (".globl _dl_start");
-
-/* Decide where a relocatable object should be loaded.  */
-extern ElfW(Addr)
-__elf_preferred_address(struct link_map *loader, size_t maplength,
-			ElfW(Addr) mapstartpref);
-#define ELF_PREFERRED_ADDRESS(loader, maplength, mapstartpref) \
-  __elf_preferred_address (loader, maplength, mapstartpref)
-
-/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
-   PLT entries should not be allowed to define the value.
-   ELF_RTYPE_CLASS_COPY iff TYPE should not be allowed to resolve to one
-   of the main executable's symbols, as for a COPY reloc.  */
-/* We never want to use a PLT entry as the destination of a
-   reloc, when what is being relocated is a branch. This is
-   partly for efficiency, but mostly so we avoid loops.  */
-#define elf_machine_type_class(type)			\
-  ((((type) == R_PPC_JMP_SLOT				\
-    || (type) == R_PPC_REL24				\
-    || ((type) >= R_PPC_DTPMOD32 /* contiguous TLS */	\
-	&& (type) <= R_PPC_DTPREL32)			\
-    || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT)	\
-   | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
-
-/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
-#define ELF_MACHINE_JMP_SLOT	R_PPC_JMP_SLOT
-
-/* The PowerPC never uses REL relocations.  */
-#define ELF_MACHINE_NO_REL 1
-#define ELF_MACHINE_NO_RELA 0
-
-/* We define an initialization function to initialize HWCAP/HWCAP2 and
-   platform data so it can be copied into the TCB later.  This is called
-   very early in _dl_sysdep_start for dynamically linked binaries.  */
-#ifdef SHARED
-# define DL_PLATFORM_INIT dl_platform_init ()
-
-static inline void __attribute__ ((unused))
-dl_platform_init (void)
-{
-  __tcb_parse_hwcap_and_convert_at_platform ();
-}
-#endif
-
-/* Set up the loaded object described by MAP so its unrelocated PLT
-   entries will jump to the on-demand fixup code in dl-runtime.c.
-   Also install a small trampoline to be used by entries that have
-   been relocated to an address too far away for a single branch.  */
-extern int __elf_machine_runtime_setup (struct link_map *map,
-					int lazy, int profile);
-
-static inline int
-elf_machine_runtime_setup (struct link_map *map,
-			   int lazy, int profile)
-{
-  if (map->l_info[DT_JMPREL] == 0)
-    return lazy;
-
-  if (map->l_info[DT_PPC(GOT)] == 0)
-    /* Handle old style PLT.  */
-    return __elf_machine_runtime_setup (map, lazy, profile);
-
-  /* New style non-exec PLT consisting of an array of addresses.  */
-  map->l_info[DT_PPC(GOT)]->d_un.d_ptr += map->l_addr;
-  if (lazy)
-    {
-      Elf32_Addr *plt, *got, glink;
-      Elf32_Word num_plt_entries;
-      void (*dlrr) (void);
-      extern void _dl_runtime_resolve (void);
-      extern void _dl_prof_resolve (void);
-
-      if (__glibc_likely (!profile))
-	dlrr = _dl_runtime_resolve;
-      else
-	{
-	  if (GLRO(dl_profile) != NULL
-	      &&_dl_name_match_p (GLRO(dl_profile), map))
-	    GL(dl_profile_map) = map;
-	  dlrr = _dl_prof_resolve;
-	}
-      got = (Elf32_Addr *) map->l_info[DT_PPC(GOT)]->d_un.d_ptr;
-      glink = got[1];
-      got[1] = (Elf32_Addr) dlrr;
-      got[2] = (Elf32_Addr) map;
-
-      /* Relocate everything in .plt by the load address offset.  */
-      plt = (Elf32_Addr *) D_PTR (map, l_info[DT_PLTGOT]);
-      num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
-			 / sizeof (Elf32_Rela));
-
-      /* If a library is prelinked but we have to relocate anyway,
-	 we have to be able to undo the prelinking of .plt section.
-	 The prelinker saved us at got[1] address of .glink
-	 section's start.  */
-      if (glink)
-	{
-	  glink += map->l_addr;
-	  while (num_plt_entries-- != 0)
-	    *plt++ = glink, glink += 4;
-	}
-      else
-	while (num_plt_entries-- != 0)
-	  *plt++ += map->l_addr;
-    }
-  return lazy;
-}
-
-/* Change the PLT entry whose reloc is 'reloc' to call the actual routine.  */
-extern Elf32_Addr __elf_machine_fixup_plt (struct link_map *map,
-					   Elf32_Addr *reloc_addr,
-					   Elf32_Addr finaladdr);
-
-static inline Elf32_Addr
-elf_machine_fixup_plt (struct link_map *map, lookup_t t,
-		       const Elf32_Rela *reloc,
-		       Elf32_Addr *reloc_addr, Elf64_Addr finaladdr)
-{
-  if (map->l_info[DT_PPC(GOT)] == 0)
-    /* Handle old style PLT.  */
-    return __elf_machine_fixup_plt (map, reloc_addr, finaladdr);
-
-  *reloc_addr = finaladdr;
-  return finaladdr;
-}
-
-/* Return the final value of a plt relocation.  */
-static inline Elf32_Addr
-elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
-		       Elf32_Addr value)
-{
-  return value + reloc->r_addend;
-}
-
-
-/* Names of the architecture-specific auditing callback functions.  */
-#define ARCH_LA_PLTENTER ppc32_gnu_pltenter
-#define ARCH_LA_PLTEXIT ppc32_gnu_pltexit
-
-#endif /* dl_machine_h */
-
-#ifdef RESOLVE_MAP
-
-/* Do the actual processing of a reloc, once its target address
-   has been determined.  */
-extern void __process_machine_rela (struct link_map *map,
-				    const Elf32_Rela *reloc,
-				    struct link_map *sym_map,
-				    const Elf32_Sym *sym,
-				    const Elf32_Sym *refsym,
-				    Elf32_Addr *const reloc_addr,
-				    Elf32_Addr finaladdr,
-				    int rinfo) attribute_hidden;
-
-/* Call _dl_signal_error when a resolved value overflows a relocated area.  */
-extern void _dl_reloc_overflow (struct link_map *map,
-				const char *name,
-				Elf32_Addr *const reloc_addr,
-				const Elf32_Sym *refsym) attribute_hidden;
-
-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
-   LOADADDR is the load address of the object; INFO is an array indexed
-   by DT_* of the .dynamic section info.  */
-
-auto inline void __attribute__ ((always_inline))
-elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg, int skip_ifunc)
-{
-  Elf32_Addr *const reloc_addr = reloc_addr_arg;
-  const Elf32_Sym *const refsym = sym;
-  Elf32_Addr value;
-  const int r_type = ELF32_R_TYPE (reloc->r_info);
-  struct link_map *sym_map = NULL;
-
-#ifndef RESOLVE_CONFLICT_FIND_MAP
-  if (r_type == R_PPC_RELATIVE)
-    {
-      *reloc_addr = map->l_addr + reloc->r_addend;
-      return;
-    }
-
-  if (__glibc_unlikely (r_type == R_PPC_NONE))
-    return;
-
-  /* binutils on ppc32 includes st_value in r_addend for relocations
-     against local symbols.  */
-  if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)
-      && sym->st_shndx != SHN_UNDEF)
-    value = map->l_addr;
-  else
-    {
-      sym_map = RESOLVE_MAP (&sym, version, r_type);
-      value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
-    }
-  value += reloc->r_addend;
-#else
-  value = reloc->r_addend;
-#endif
-
-  if (sym != NULL
-      && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
-      && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
-      && __builtin_expect (!skip_ifunc, 1))
-    value = elf_ifunc_invoke (value);
-
-  /* A small amount of code is duplicated here for speed.  In libc,
-     more than 90% of the relocs are R_PPC_RELATIVE; in the X11 shared
-     libraries, 60% are R_PPC_RELATIVE, 24% are R_PPC_GLOB_DAT or
-     R_PPC_ADDR32, and 16% are R_PPC_JMP_SLOT (which this routine
-     wouldn't usually handle).  As an bonus, doing this here allows
-     the switch statement in __process_machine_rela to work.  */
-  switch (r_type)
-    {
-    case R_PPC_GLOB_DAT:
-    case R_PPC_ADDR32:
-      *reloc_addr = value;
-      break;
-
-#ifndef RESOLVE_CONFLICT_FIND_MAP
-# ifdef RTLD_BOOTSTRAP
-#  define NOT_BOOTSTRAP 0
-# else
-#  define NOT_BOOTSTRAP 1
-# endif
-
-    case R_PPC_DTPMOD32:
-      if (map->l_info[DT_PPC(OPT)]
-	  && (map->l_info[DT_PPC(OPT)]->d_un.d_val & PPC_OPT_TLS))
-	{
-	  if (!NOT_BOOTSTRAP)
-	    {
-	      reloc_addr[0] = 0;
-	      reloc_addr[1] = (sym_map->l_tls_offset - TLS_TP_OFFSET
-			       + TLS_DTV_OFFSET);
-	      break;
-	    }
-	  else if (sym_map != NULL)
-	    {
-# ifndef SHARED
-	      CHECK_STATIC_TLS (map, sym_map);
-# else
-	      if (TRY_STATIC_TLS (map, sym_map))
-# endif
-		{
-		  reloc_addr[0] = 0;
-		  /* Set up for local dynamic.  */
-		  reloc_addr[1] = (sym_map->l_tls_offset - TLS_TP_OFFSET
-				   + TLS_DTV_OFFSET);
-		  break;
-		}
-	    }
-	}
-      if (!NOT_BOOTSTRAP)
-	/* During startup the dynamic linker is always index 1.  */
-	*reloc_addr = 1;
-      else if (sym_map != NULL)
-	/* Get the information from the link map returned by the
-	   RESOLVE_MAP function.  */
-	*reloc_addr = sym_map->l_tls_modid;
-      break;
-    case R_PPC_DTPREL32:
-      if (map->l_info[DT_PPC(OPT)]
-	  && (map->l_info[DT_PPC(OPT)]->d_un.d_val & PPC_OPT_TLS))
-	{
-	  if (!NOT_BOOTSTRAP)
-	    {
-	      *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-	      break;
-	    }
-	  else if (sym_map != NULL)
-	    {
-	      /* This reloc is always preceded by R_PPC_DTPMOD32.  */
-# ifndef SHARED
-	      assert (HAVE_STATIC_TLS (map, sym_map));
-# else
-	      if (HAVE_STATIC_TLS (map, sym_map))
-# endif
-		{
-		  *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-		  break;
-		}
-	    }
-	}
-      /* During relocation all TLS symbols are defined and used.
-	 Therefore the offset is already correct.  */
-      if (NOT_BOOTSTRAP && sym_map != NULL)
-	*reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
-      break;
-    case R_PPC_TPREL32:
-      if (!NOT_BOOTSTRAP || sym_map != NULL)
-	{
-	  if (NOT_BOOTSTRAP)
-	    CHECK_STATIC_TLS (map, sym_map);
-	  *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-	}
-      break;
-#endif
-
-    case R_PPC_JMP_SLOT:
-#ifdef RESOLVE_CONFLICT_FIND_MAP
-      RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-#endif
-      if (map->l_info[DT_PPC(GOT)] != 0)
-	{
-	  *reloc_addr = value;
-	  break;
-	}
-      /* FALLTHROUGH */
-
-    default:
-      __process_machine_rela (map, reloc, sym_map, sym, refsym,
-			      reloc_addr, value, r_type);
-    }
-}
-
-auto inline void __attribute__ ((always_inline))
-elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   void *const reloc_addr_arg)
-{
-  Elf32_Addr *const reloc_addr = reloc_addr_arg;
-  *reloc_addr = l_addr + reloc->r_addend;
-}
-
-auto inline void __attribute__ ((always_inline))
-elf_machine_lazy_rel (struct link_map *map,
-		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
-		      int skip_ifunc)
-{
-  /* elf_machine_runtime_setup handles this. */
-}
-
-#endif /* RESOLVE_MAP */
diff --git a/sysdeps/powerpc/powerpc32/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S
deleted file mode 100644
index ab429567aa..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-start.S
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Machine-dependent ELF startup code.  PowerPC version.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* Initial entry point code for the dynamic linker.
-   The C function `_dl_start' is the real entry point;
-   its return value is the user program's entry point.	*/
-ENTRY(_start)
-/* We start with the following on the stack, from top:
-   argc (4 bytes);
-   arguments for program (terminated by NULL);
-   environment variables (terminated by NULL);
-   arguments for the program loader. */
-
-/* Call _dl_start with one parameter pointing at argc */
-	mr	r3,r1
-/* (we have to frob the stack pointer a bit to allow room for
-   _dl_start to save the link register).  */
-	li	r4,0
-	addi	r1,r1,-16
-	stw	r4,0(r1)
-	bl	_dl_start@local
-
-	/* FALLTHRU */
-_dl_start_user:
-/* Now, we do our main work of calling initialisation procedures.
-   The ELF ABI doesn't say anything about parameters for these,
-   so we just pass argc, argv, and the environment.
-   Changing these is strongly discouraged (not least because argc is
-   passed by value!).  */
-
-/*  Put our GOT pointer in r31, */
-	SETUP_GOT_ACCESS(r31,got_label)
-	addis	r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@l
-/*  the address of _start in r30, */
-	mr	r30,r3
-/*  &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28.  */
-	lwz	r28,_rtld_local@got(r31)
-	lwz	r29,_dl_argc@got(r31)
-	lwz	r27,__GI__dl_argv@got(r31)
-
-/* Call _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1). */
-	lwz	r3,0(r28)
-	lwz	r4,0(r29)
-	lwz	r5,0(r27)
-	slwi	r6,r4,2
-	add	r6,r5,r6
-	addi	r6,r6,4
-	bl	_dl_init@local
-
-/* Now, to conform to the ELF ABI, we have to: */
-/* Pass argc (actually _dl_argc) in r3; */
-	lwz	r3,0(r29)
-/* pass argv (actually _dl_argv) in r4; */
-	lwz	r4,0(r27)
-/* pass envp (actually _dl_argv+_dl_argc+1) in r5; */
-	slwi	r5,r3,2
-	add	r6,r4,r5
-	addi	r5,r6,4
-/* pass the auxiliary vector in r6. This is passed to us just after _envp.  */
-2:	lwzu	r0,4(r6)
-	cmpwi	r0,0
-	bne	2b
-	addi	r6,r6,4
-/* Pass a termination function pointer (in this case _dl_fini) in r7.  */
-	lwz	r7,_dl_fini@got(r31)
-/* Now, call the start function in r30... */
-	mtctr	r30
-/* Pass the stack pointer in r1 (so far so good), pointing to a NULL value.
-   (This lets our startup code distinguish between a program linked statically,
-   which linux will call with argc on top of the stack which will hopefully
-   never be zero, and a dynamically linked program which will always have
-   a NULL on the top of the stack).
-   Take the opportunity to clear LR, so anyone who accidentally returns
-   from _start gets SEGV.  Also clear the next few words of the stack.  */
-
-_dl_main_dispatch:
-	li	r31,0
-	stw	r31,0(r1)
-	mtlr	r31
-	stw	r31,4(r1)
-	stw	r31,8(r1)
-	stw	r31,12(r1)
-/* Go do it!  */
-	bctr
-END(_start)
diff --git a/sysdeps/powerpc/powerpc32/dl-trampoline.S b/sysdeps/powerpc/powerpc32/dl-trampoline.S
deleted file mode 100644
index 16b12db0e4..0000000000
--- a/sysdeps/powerpc/powerpc32/dl-trampoline.S
+++ /dev/null
@@ -1,189 +0,0 @@
-/* PLT trampolines.  PPC32 version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section ".text"
-	.align 2
-	.globl _dl_runtime_resolve
-	.type _dl_runtime_resolve,@function
-_dl_runtime_resolve:
-	cfi_startproc
- # We need to save the registers used to pass parameters, and register 0,
- # which is used by _mcount; the registers are saved in a stack frame.
-	stwu r1,-64(r1)
-	cfi_adjust_cfa_offset (64)
-	stw r0,12(r1)
-	stw r3,16(r1)
-	stw r4,20(r1)
- # The code that calls this has put parameters for `fixup' in r12 and r11.
-	mr r3,r12
-	stw r5,24(r1)
-	mr r4,r11
-	stw r6,28(r1)
-	mflr r0
- # We also need to save some of the condition register fields
-	stw r7,32(r1)
- # Don't clobber the caller's LRSAVE, it is needed by _mcount.
-	stw r0,48(r1)
- 	cfi_offset (lr, -16)
-	stw r8,36(r1)
-	mfcr r0
-	stw r9,40(r1)
-	stw r10,44(r1)
-	stw r0,8(r1)
-	bl _dl_fixup@local
- # 'fixup' returns the address we want to branch to.
-	mtctr r3
- # Put the registers back...
-	lwz r0,48(r1)
-	lwz r10,44(r1)
-	lwz r9,40(r1)
-	mtlr r0
-	lwz r8,36(r1)
-	lwz r0,8(r1)
-	lwz r7,32(r1)
-	lwz r6,28(r1)
-	mtcrf 0xFF,r0
-	lwz r5,24(r1)
-	lwz r4,20(r1)
-	lwz r3,16(r1)
-	lwz r0,12(r1)
- # ...unwind the stack frame, and jump to the PLT entry we updated.
-	addi r1,r1,64
-	bctr
-	cfi_endproc
-	.size	 _dl_runtime_resolve,.-_dl_runtime_resolve
-
-#ifndef PROF
-	.align 2
-	.globl _dl_prof_resolve
-	.type _dl_prof_resolve,@function
-_dl_prof_resolve:
-	cfi_startproc
- # We need to save the registers used to pass parameters, and register 0,
- # which is used by _mcount; the registers are saved in a stack frame.
-	stwu r1,-320(r1)
-	cfi_adjust_cfa_offset (320)
-	/* Stack layout:
-
-	  +312   stackframe
-	  +308   lr
-	  +304   r1
-	  +288   v12
-	  +272   v11
-	  +256   v10
-	  +240   v9
-	  +224   v8
-	  +208   v7
-	  +192   v6
-	  +176   v5
-	  +160   v4
-	  +144   v3
-	  +128   v2
-	  +112   v1
-	  +104   fp8
-	  +96    fp7
-	  +88    fp6
-	  +80    fp5
-	  +72    fp4
-	  +64    fp3
-	  +56    fp2
-	  +48    fp1
-	  +44    r10
-	  +40    r9
-	  +36    r8
-	  +32    r7
-	  +28    r6
-	  +24    r5
-	  +20    r4
-	  +16    r3
-	  +12    r0
-	  +8     cr
-	   r1    link
-	*/
-        stw r0,12(r1)
-	stw r3,16(r1)
-	stw r4,20(r1)
- # The code that calls this has put parameters for `fixup' in r12 and r11.
-	mr r3,r12
-	stw r5,24(r1)
-	mr r4,r11
-	stw r6,28(r1)
-	mflr r5
- # We also need to save some of the condition register fields.
-	stw r7,32(r1)
- # Don't clobber the caller's LRSAVE, it is needed by _mcount.
-	stw r5,308(r1)
-	cfi_offset (lr, -12)
-	stw r8,36(r1)
-	mfcr r0
-	stw r9,40(r1)
-	stw r10,44(r1)
-	stw r0,8(r1)
-#ifndef __NO_FPRS__
- # Save the floating point registers
-	stfd fp1,48(r1)
-	stfd fp2,56(r1)
-	stfd fp3,64(r1)
-	stfd fp4,72(r1)
-	stfd fp5,80(r1)
-	stfd fp6,88(r1)
-	stfd fp7,96(r1)
-	stfd fp8,104(r1)
-#endif
- # XXX TODO: store vmx registers
- # Load the extra parameters.
-	addi r6,r1,16
-	addi r7,r1,312
-	li r0,-1
-	stw r0,0(r7)
-	bl _dl_profile_fixup@local
- # 'fixup' returns the address we want to branch to.
-	mtctr r3
- # Put the registers back...
-	lwz r0,308(r1)
-	lwz r10,44(r1)
-	lwz r9,40(r1)
-	mtlr r0
-	lwz r8,36(r1)
-	lwz r0,8(r1)
-	lwz r7,32(r1)
-	lwz r6,28(r1)
-	mtcrf 0xFF,r0
-	lwz r5,24(r1)
-	lwz r4,20(r1)
-	lwz r3,16(r1)
-        lwz r0,12(r1)
-#ifndef __NO_FPRS__
- # Load the floating point registers.
-	lfd fp1,48(r1)
-	lfd fp2,56(r1)
-	lfd fp3,64(r1)
-	lfd fp4,72(r1)
-	lfd fp5,80(r1)
-	lfd fp6,88(r1)
-	lfd fp7,96(r1)
-	lfd fp8,104(r1)
-#endif
- # ...unwind the stack frame, and jump to the PLT entry we updated.
-	addi r1,r1,320
-	bctr
-	cfi_endproc
-	.size	 _dl_prof_resolve,.-_dl_prof_resolve
-#endif
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile b/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile
deleted file mode 100644
index adf556870a..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-ifeq ($(subdir),math)
-libm-routines += fexcepts_to_spe fexcepts_from_spe
-libm-routines += fexcepts_to_prctl fexcepts_from_prctl
-libm-routines += fe_note_change
-endif
-
-ifeq ($(subdir),soft-fp)
-sysdep_routines += fraiseexcept-soft
-endif
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c
deleted file mode 100644
index 09132451a0..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feclearexcept.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Clear floating-point exceptions for atomic compound assignment.
-   e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feclearexcept (void)
-{
-  unsigned int fpescr, old_fpescr;
-
-  /* Get the current state.  */
-  old_fpescr = fpescr = fegetenv_register ();
-
-  /* Clear the relevant bits.  */
-  fpescr &= ~SPEFSCR_ALL_EXCEPT;
-
-  /* Put the new state in effect.  */
-  fesetenv_register (fpescr);
-
-  /* Let the kernel know if the "invalid" or "underflow" bit was
-     cleared.  */
-  if (old_fpescr & (SPEFSCR_FINVS | SPEFSCR_FUNFS))
-    {
-      int pflags __attribute__ ((__unused__)), r;
-      INTERNAL_SYSCALL_DECL (err);
-
-      r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
-      if (INTERNAL_SYSCALL_ERROR_P (r, err))
-	abort ();
-    }
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c
deleted file mode 100644
index 3d6e10f1b6..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feholdexcept.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Store current floating-point environment and clear exceptions for
-   atomic compound assignment.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feholdexcept (fenv_t *envp)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  /* Get the current state.  */
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    abort ();
-
-  u.l[1] = fegetenv_register ();
-  *envp = u.fenv;
-
-  /* Clear everything except for the rounding mode and trapping to the
-     kernel.  */
-  u.l[0] &= ~(PR_FP_EXC_DIV
-	      | PR_FP_EXC_OVF
-	      | PR_FP_EXC_UND
-	      | PR_FP_EXC_RES
-	      | PR_FP_EXC_INV);
-  u.l[1] &= SPEFSCR_FRMC | (SPEFSCR_ALL_EXCEPT_ENABLE & ~SPEFSCR_FINXE);
-
-  /* Put the new state in effect.  */
-  fesetenv_register (u.l[1]);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			u.l[0] | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    abort ();
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c
deleted file mode 100644
index a4615a1b01..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/atomic-feupdateenv.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Install given floating-point environment and raise exceptions for
-   atomic compound assignment.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-void
-__atomic_feupdateenv (const fenv_t *envp)
-{
-  int exc;
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  /* Save the currently set exceptions.  */
-  exc = fegetenv_register () & SPEFSCR_ALL_EXCEPT;
-
-  u.fenv = *envp;
-
-  fesetenv_register (u.l[1]);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			u.l[0] | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    abort ();
-
-  /* Raise (if appropriate) saved exceptions. */
-  __feraiseexcept_soft (exc);
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
deleted file mode 100644
index cbf8d9df6c..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fclrexcpt.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Clear given exceptions in current floating-point environment.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-#undef feclearexcept
-int
-__feclearexcept (int excepts)
-{
-  unsigned int fpescr;
-  int excepts_spe = __fexcepts_to_spe (excepts);
-
-  /* Get the current state.  */
-  fpescr = fegetenv_register ();
-
-  /* Clear the relevant bits.  */
-  fpescr &= ~excepts_spe;
-
-  /* Put the new state in effect.  */
-  fesetenv_register (fpescr);
-
-  /* Let the kernel know if the "invalid" or "underflow" bit was
-     cleared.  */
-  if (excepts & (FE_INVALID | FE_UNDERFLOW))
-    __fe_note_change ();
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feclearexcept, __old_feclearexcept)
-compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_ver (__feclearexcept, feclearexcept)
-versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c
deleted file mode 100644
index 3dd3161f7d..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fe_note_change.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Note a change to floating-point exceptions.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-/* Inform the kernel of a change to floating-point exceptions.  */
-
-void
-__fe_note_change (void)
-{
-  int pflags, r;
-  INTERNAL_SYSCALL_DECL (err);
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return;
-  if ((pflags & PR_FP_EXC_SW_ENABLE) == 0)
-    INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-		      pflags | PR_FP_EXC_SW_ENABLE);
-}
-
-libm_hidden_def (__fe_note_change)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c
deleted file mode 100644
index 94ce45463c..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fedisblxcpt.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Disable floating-point exceptions.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fedisableexcept (int excepts)
-{
-  int result = 0, pflags, r;
-  INTERNAL_SYSCALL_DECL (err);
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  /* Save old enable bits.  */
-  result = __fexcepts_from_prctl (pflags);
-
-  pflags &= ~__fexcepts_to_prctl (excepts);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			pflags | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  /* If disabling signals for "inexact", also disable trapping to the
-     kernel.  */
-  if ((excepts & FE_INEXACT) != 0)
-    {
-      unsigned long fpescr;
-
-      fpescr = fegetenv_register ();
-      fpescr &= ~SPEFSCR_FINXE;
-      fesetenv_register (fpescr);
-    }
-
-  return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c
deleted file mode 100644
index 32116d1608..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feenablxcpt.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Enable floating-point exceptions.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-feenableexcept (int excepts)
-{
-  unsigned int result = 0, pflags, r;
-  INTERNAL_SYSCALL_DECL (err);
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  /* Save old enable bits.  */
-  result = __fexcepts_from_prctl (pflags);
-
-  pflags |= __fexcepts_to_prctl (excepts);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			pflags | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  /* If enabling signals for "inexact", also enable trapping to the
-     kernel.  */
-  if ((excepts & FE_INEXACT) != 0)
-    {
-      unsigned long fpescr;
-
-      fpescr = fegetenv_register ();
-      fpescr |= SPEFSCR_FINXE;
-      fesetenv_register (fpescr);
-    }
-
-  return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
deleted file mode 100644
index 01b8fa4c9a..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Store current floating-point environment.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__fegetenv (fenv_t *envp)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  u.l[1] = fegetenv_register ();
-  *envp = u.fenv;
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetenv, __old_fegetenv)
-compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
-#endif
-libm_hidden_def (__fegetenv)
-libm_hidden_ver (__fegetenv, fegetenv)
-
-versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c
deleted file mode 100644
index 74fdb5a1c9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetexcept.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Get floating-point exceptions.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fegetexcept (void)
-{
-  int result = 0, pflags, r;
-  INTERNAL_SYSCALL_DECL (err);
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &pflags);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  result = __fexcepts_from_prctl (pflags);
-
-  return result;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c
deleted file mode 100644
index d262714266..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetmode.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Store current floating-point control modes.  e500 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-fegetmode (femode_t *modep)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  u.l[1] = fegetenv_register ();
-  *modep = u.fenv;
-  return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c
deleted file mode 100644
index afcc5d18cc..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetround.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Return current rounding direction.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fegetround (void)
-{
-  unsigned long fpescr;
-
-  fpescr = fegetenv_register ();
-  return fpescr & 3;
-}
-libm_hidden_def (__fegetround)
-weak_alias (__fegetround, fegetround)
-libm_hidden_weak (fegetround)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
deleted file mode 100644
index cba1239561..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feholdexcpt.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Store current floating-point environment and clear exceptions.
-   e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__feholdexcept (fenv_t *envp)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  /* Get the current state.  */
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_GET_FPEXC, &u.l[0]);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  u.l[1] = fegetenv_register ();
-  *envp = u.fenv;
-
-  /* Clear everything except for the rounding mode and trapping to the
-     kernel.  */
-  u.l[0] &= ~(PR_FP_EXC_DIV
-	      | PR_FP_EXC_OVF
-	      | PR_FP_EXC_UND
-	      | PR_FP_EXC_RES
-	      | PR_FP_EXC_INV);
-  u.l[1] &= SPEFSCR_FRMC | (SPEFSCR_ALL_EXCEPT_ENABLE & ~SPEFSCR_FINXE);
-
-  /* Put the new state in effect.  */
-  fesetenv_register (u.l[1]);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			u.l[0] | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  return 0;
-}
-libm_hidden_def (__feholdexcept)
-weak_alias (__feholdexcept, feholdexcept)
-libm_hidden_weak (feholdexcept)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
deleted file mode 100644
index 9fc3f53bc7..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_const.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Constant floating-point environments for e500.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* The use of "unsigned long long" as the type to define the
-   bit-pattern explicitly, rather than the type "double" used in
-   <bits/fenv.h>, means that we cannot include <fenv_libc.h> here to
-   get the enum constants for the SPEFSCR bits to enable
-   exceptions.  */
-
-#include <sys/prctl.h>
-
-/* If the default argument is used we use this value.  */
-const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
-  0x3cULL;
-
-/* The same representation is used for femode_t.  */
-extern const unsigned long long __fe_dfl_mode
-  __attribute__ ((aligned (8), alias ("__fe_dfl_env")));
-
-/* Floating-point environment where none of the exceptions are masked.  */
-const unsigned long long __fe_enabled_env __attribute__ ((aligned (8))) =
-  (((unsigned long long) (PR_FP_EXC_DIV
-			  | PR_FP_EXC_OVF
-			  | PR_FP_EXC_UND
-			  | PR_FP_EXC_RES
-			  | PR_FP_EXC_INV)) << 32) | 0x7cULL;
-
-/* Non-IEEE mode.  */
-const unsigned long long __fe_nonieee_env __attribute__ ((aligned (8))) =
-  0x0ULL;
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h b/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
deleted file mode 100644
index 13437f8052..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fenv_libc.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Internal libc stuff for floating point environment routines.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FENV_LIBC_H
-#define _FENV_LIBC_H	1
-
-#include <fenv.h>
-
-int __feraiseexcept_spe (int);
-libm_hidden_proto (__feraiseexcept_spe)
-
-int __feraiseexcept_soft (int);
-libc_hidden_proto (__feraiseexcept_soft)
-
-int __fexcepts_to_spe (int);
-libm_hidden_proto (__fexcepts_to_spe)
-
-int __fexcepts_from_spe (int);
-libm_hidden_proto (__fexcepts_from_spe)
-
-int __fexcepts_to_prctl (int);
-libm_hidden_proto (__fexcepts_to_prctl)
-
-int __fexcepts_from_prctl (int);
-libm_hidden_proto (__fexcepts_from_prctl)
-
-void __fe_note_change (void);
-libm_hidden_proto (__fe_note_change)
-
-/* Equivalent to fegetenv, but returns an unsigned int instead of
-   taking a pointer.  */
-#define fegetenv_register() \
-  ({ unsigned int fscr; asm volatile ("mfspefscr %0" : "=r" (fscr)); fscr; })
-
-/* Equivalent to fesetenv, but takes an unsigned int instead of a
-   pointer.  */
-#define fesetenv_register(fscr) \
-  ({ asm volatile ("mtspefscr %0" : : "r" (fscr)); })
-
-typedef union
-{
-  fenv_t fenv;
-  unsigned int l[2];
-} fenv_union_t;
-
-/* Definitions of all the SPEFSCR bit numbers.  */
-enum {
-  SPEFSCR_SOVH          = 0x80000000,
-  SPEFSCR_OVH           = 0x40000000,
-  SPEFSCR_FGH           = 0x20000000,
-  SPEFSCR_FXH           = 0x10000000,
-  SPEFSCR_FINVH         = 0x08000000,
-  SPEFSCR_FDBZH         = 0x04000000,
-  SPEFSCR_FUNFH         = 0x02000000,
-  SPEFSCR_FOVFH         = 0x01000000,
-  /* 2 unused bits.  */
-  SPEFSCR_FINXS         = 0x00200000,
-  SPEFSCR_FINVS         = 0x00100000,
-  SPEFSCR_FDBZS         = 0x00080000,
-  SPEFSCR_FUNFS         = 0x00040000,
-  SPEFSCR_FOVFS         = 0x00020000,
-  /* Combination of the exception bits.  */
-  SPEFSCR_ALL_EXCEPT    = 0x003e0000,
-  SPEFSCR_MODE          = 0x00010000,
-  SPEFSCR_SOV           = 0x00008000,
-  SPEFSCR_OV            = 0x00004000,
-  SPEFSCR_FG            = 0x00002000,
-  SPEFSCR_FX            = 0x00001000,
-  SPEFSCR_FINV          = 0x00000800,
-  SPEFSCR_FDBZ          = 0x00000400,
-  SPEFSCR_FUNF          = 0x00000200,
-  SPEFSCR_FOVF          = 0x00000100,
-  /* 1 unused bit.  */
-  SPEFSCR_FINXE         = 0x00000040,
-  SPEFSCR_FINVE         = 0x00000020,
-  SPEFSCR_FDBZE         = 0x00000010,
-  SPEFSCR_FUNFE         = 0x00000008,
-  SPEFSCR_FOVFE         = 0x00000004,
-  /* Combination of the exception trap enable bits.  */
-  SPEFSCR_ALL_EXCEPT_ENABLE = 0x0000007c,
-  SPEFSCR_FRMC          = 0x00000003
-};
-
-#endif /* fenv_libc.h */
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c
deleted file mode 100644
index 185bcdb051..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetenv.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Install given floating-point environment.  e500 version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-int
-__fesetenv (const fenv_t *envp)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  u.fenv = *envp;
-
-  fesetenv_register (u.l[1]);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			u.l[0] | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetenv, __old_fesetenv)
-compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__fesetenv)
-libm_hidden_ver (__fesetenv, fesetenv)
-versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
deleted file mode 100644
index 688583a6e7..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetexcept.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Set given exception flags.  e500 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fesetexcept (int excepts)
-{
-  unsigned long old_spefscr, spefscr;
-  int excepts_spe = __fexcepts_to_spe (excepts);
-
-  old_spefscr = fegetenv_register ();
-  spefscr = old_spefscr | excepts_spe;
-  fesetenv_register (spefscr);
-
-  /* If the state of the "invalid" or "underflow" flag has changed,
-     inform the kernel.  */
-  if (((spefscr ^ old_spefscr) & (SPEFSCR_FINVS | SPEFSCR_FUNFS)) != 0)
-    __fe_note_change ();
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c
deleted file mode 100644
index 360e500b27..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetmode.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Install given floating-point control modes.  e500 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sysdep.h>
-#include <sys/prctl.h>
-
-#define SPEFSCR_STATUS 0xff3eff00
-
-int
-fesetmode (const femode_t *modep)
-{
-  fenv_union_t u;
-  INTERNAL_SYSCALL_DECL (err);
-  int r;
-
-  u.fenv = *modep;
-  unsigned int spefscr = fegetenv_register ();
-  spefscr = (spefscr & SPEFSCR_STATUS) | (u.l[1] & ~SPEFSCR_STATUS);
-
-  fesetenv_register (spefscr);
-  r = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC,
-			u.l[0] | PR_FP_EXC_SW_ENABLE);
-  if (INTERNAL_SYSCALL_ERROR_P (r, err))
-    return -1;
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c
deleted file mode 100644
index 15aaa62079..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fesetround.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Set current rounding direction.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fesetround (int round)
-{
-  unsigned long fpescr;
-
-  if ((unsigned int) round > 3)
-    return 1;
-
-  fpescr = fegetenv_register ();
-  fpescr = (fpescr & ~SPEFSCR_FRMC) | (round & 3);
-  fesetenv_register (fpescr);
-
-  return 0;
-}
-libm_hidden_def (__fesetround)
-weak_alias (__fesetround, fesetround)
-libm_hidden_weak (fesetround)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c
deleted file mode 100644
index 9d42d919ec..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fetestexceptflag.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test exception in saved exception state.  e500 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fetestexceptflag (const fexcept_t *flagp, int excepts)
-{
-  return __fexcepts_from_spe (*flagp) & excepts & FE_ALL_EXCEPT;
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
deleted file mode 100644
index 54de708449..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/feupdateenv.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Install given floating-point environment and raise exceptions.
-   e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__feupdateenv (const fenv_t *envp)
-{
-  int exc;
-
-  /* Save the currently set exceptions.  */
-  exc = fegetenv_register () & SPEFSCR_ALL_EXCEPT;
-
-  /* Install new environment.  */
-  __fesetenv (envp);
-
-  /* Raise (if appropriate) saved exceptions. */
-  __feraiseexcept_spe (exc);
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feupdateenv, __old_feupdateenv)
-compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feupdateenv)
-libm_hidden_ver (__feupdateenv, feupdateenv)
-versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c
deleted file mode 100644
index b260fc8df1..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_prctl.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Convert floating-point exceptions from prctl form.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sys/prctl.h>
-
-/* Convert EXCEPTS from prctl bits to FE_* form, returning the
-   converted value.  */
-
-int
-__fexcepts_from_prctl (int excepts)
-{
-  int result = 0;
-  if (excepts & PR_FP_EXC_OVF)
-    result |= FE_OVERFLOW;
-  if (excepts & PR_FP_EXC_UND)
-    result |= FE_UNDERFLOW;
-  if (excepts & PR_FP_EXC_INV)
-    result |= FE_INVALID;
-  if (excepts & PR_FP_EXC_DIV)
-    result |= FE_DIVBYZERO;
-  if (excepts & PR_FP_EXC_RES)
-    result |= FE_INEXACT;
-  return result;
-}
-
-libm_hidden_def (__fexcepts_from_prctl)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c
deleted file mode 100644
index a925fe4c37..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_from_spe.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Convert floating-point exceptions from SPEFSCR form.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-/* Convert EXCEPTS from SPEFSCR bits to FE_* form, returning the
-   converted value.  */
-
-int
-__fexcepts_from_spe (int excepts)
-{
-  int result = 0;
-  if (excepts & SPEFSCR_FINXS)
-    result |= FE_INEXACT;
-  if (excepts & SPEFSCR_FDBZS)
-    result |= FE_DIVBYZERO;
-  if (excepts & SPEFSCR_FUNFS)
-    result |= FE_UNDERFLOW;
-  if (excepts & SPEFSCR_FOVFS)
-    result |= FE_OVERFLOW;
-  if (excepts & SPEFSCR_FINVS)
-    result |= FE_INVALID;
-  return result;
-}
-
-libm_hidden_def (__fexcepts_from_spe)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c
deleted file mode 100644
index e4626312ee..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_prctl.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Convert floating-point exceptions to prctl form.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <sys/prctl.h>
-
-/* Convert EXCEPTS from FE_* form to prctl bits, returning the
-   converted value.  */
-
-int
-__fexcepts_to_prctl (int excepts)
-{
-  int result = 0;
-  if (excepts & FE_INEXACT)
-    result |= PR_FP_EXC_RES;
-  if (excepts & FE_DIVBYZERO)
-    result |= PR_FP_EXC_DIV;
-  if (excepts & FE_UNDERFLOW)
-    result |= PR_FP_EXC_UND;
-  if (excepts & FE_OVERFLOW)
-    result |= PR_FP_EXC_OVF;
-  if (excepts & FE_INVALID)
-    result |= PR_FP_EXC_INV;
-  return result;
-}
-
-libm_hidden_def (__fexcepts_to_prctl)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c
deleted file mode 100644
index 3eed4ae6e9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fexcepts_to_spe.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Convert floating-point exceptions to SPEFSCR form.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-/* Convert EXCEPTS from FE_* form to SPEFSCR bits, returning the
-   converted value.  */
-
-int
-__fexcepts_to_spe (int excepts)
-{
-  int result = 0;
-  if (excepts & FE_INEXACT)
-    result |= SPEFSCR_FINXS;
-  if (excepts & FE_DIVBYZERO)
-    result |= SPEFSCR_FDBZS;
-  if (excepts & FE_UNDERFLOW)
-    result |= SPEFSCR_FUNFS;
-  if (excepts & FE_OVERFLOW)
-    result |= SPEFSCR_FOVFS;
-  if (excepts & FE_INVALID)
-    result |= SPEFSCR_FINVS;
-  return result;
-}
-
-libm_hidden_def (__fexcepts_to_spe)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c
deleted file mode 100644
index cff4330a9c..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fgetexcptflg.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Store current representation for exceptions.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fegetexceptflag (fexcept_t *flagp, int excepts)
-{
-  unsigned long fpescr;
-
-  /* Get the current state.  */
-  fpescr = fegetenv_register ();
-
-  *flagp = fpescr & SPEFSCR_ALL_EXCEPT;
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fegetexceptflag, __old_fegetexceptflag)
-compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c b/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c
deleted file mode 100644
index 4fb8d034c4..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/flt-rounds.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Return current rounding mode as correct value for FLT_ROUNDS.  e500
-   version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <stdlib.h>
-
-int
-__flt_rounds (void)
-{
-  switch (fegetenv_register () & SPEFSCR_FRMC)
-    {
-    case FE_TOWARDZERO:
-      return 0;
-    case FE_TONEAREST:
-      return 1;
-    case FE_UPWARD:
-      return 2;
-    case FE_DOWNWARD:
-      return 3;
-    default:
-      abort ();
-    }
-}
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c
deleted file mode 100644
index ef35a9426d..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcept-soft.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Raise given exceptions.  e500 version for use from soft-fp.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Aldy Hernandez <aldyh@redhat.com>, 2004.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-#include <libc-symbols.h>
-
-#define __FERAISEEXCEPT_INTERNAL __feraiseexcept_soft
-#include "spe-raise.c"
-libc_hidden_def (__feraiseexcept_soft)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c
deleted file mode 100644
index 915642a1dc..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fraiseexcpt.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Raise given exceptions.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-#define __FERAISEEXCEPT_INTERNAL __feraiseexcept_spe
-#include "spe-raise.c"
-
-libm_hidden_def (__feraiseexcept_spe)
-
-#undef feraiseexcept
-int
-__feraiseexcept (int excepts)
-{
-  return __feraiseexcept_spe (__fexcepts_to_spe (excepts));
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__feraiseexcept, __old_feraiseexcept)
-compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
-#endif
-
-libm_hidden_def (__feraiseexcept)
-libm_hidden_ver (__feraiseexcept, feraiseexcept)
-versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c
deleted file mode 100644
index f1e6a02681..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fsetexcptflg.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Set floating-point environment exception handling.  e500 version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__fesetexceptflag (const fexcept_t *flagp, int excepts)
-{
-  unsigned long old_spefscr, spefscr;
-  fexcept_t flag;
-  int excepts_spe = __fexcepts_to_spe (excepts);
-
-  /* Get the current state.  */
-  old_spefscr = fegetenv_register ();
-
-  /* Ignore exceptions not listed in 'excepts'.  */
-  flag = *flagp & excepts_spe;
-
-  /* Replace the exception status */
-  spefscr = (old_spefscr & ~excepts_spe) | flag;
-
-  /* Store the new status word (along with the rest of the environment).  */
-  fesetenv_register (spefscr);
-
-  /* If the state of the "invalid" or "underflow" flag has changed,
-     inform the kernel.  */
-  if (((spefscr ^ old_spefscr) & (SPEFSCR_FINVS | SPEFSCR_FUNFS)) != 0)
-    __fe_note_change ();
-
-  /* Success.  */
-  return 0;
-}
-
-#include <shlib-compat.h>
-#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
-strong_alias (__fesetexceptflag, __old_fesetexceptflag)
-compat_symbol (libm, __old_fesetexceptflag, fesetexceptflag, GLIBC_2_1);
-#endif
-
-versioned_symbol (libm, __fesetexceptflag, fesetexceptflag, GLIBC_2_2);
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c b/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c
deleted file mode 100644
index 05040d7224..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/ftestexcept.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Test exception in current environment.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-fetestexcept (int excepts)
-{
-  unsigned long f;
-
-  /* Get the current state.  */
-  f = fegetenv_register ();
-
-  return __fexcepts_from_spe (f) & excepts;
-}
-libm_hidden_def (fetestexcept)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h b/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h
deleted file mode 100644
index 117e7331e9..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/get-rounding-mode.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* The generic version of get-rounding-mode.h using fpu_control.h, not
-   the one using the software rounding mode, is correct for e500.  */
-
-#include <sysdeps/generic/get-rounding-mode.h>
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S b/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S
deleted file mode 100644
index 9d00b62923..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/s_fabsf.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Floating-point absolute value.  e500 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY (__fabsf)
-/* float [r3] fabsf (float [r3] x) ;  */
-	efsabs r3,r3
-	blr
-END (__fabsf)
-
-weak_alias (__fabsf, fabsf)
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c b/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c
deleted file mode 100644
index cc13c67786..0000000000
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/spe-raise.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Raise given exceptions, given the SPEFSCR bits for those exceptions.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <fenv_libc.h>
-
-int
-__FERAISEEXCEPT_INTERNAL (int excepts)
-{
-  unsigned long f;
-
-  f = fegetenv_register ();
-  f |= (excepts & SPEFSCR_ALL_EXCEPT);
-  fesetenv_register (f);
-
-  /* Force the operations that cause the exceptions.  */
-  if ((SPEFSCR_FINVS & excepts) != 0)
-    /* 0 / 0 */
-    asm volatile ("efsdiv %0,%0,%1" : : "r" (0), "r" (0));
-
-  if ((SPEFSCR_FDBZS & excepts) != 0)
-    /* 1.0 / 0.0 */
-    asm volatile ("efsdiv %0,%0,%1" : : "r" (1.0F), "r" (0));
-
-  if ((SPEFSCR_FOVFS & excepts) != 0)
-    /* Largest normalized number plus itself.  */
-    asm volatile ("efsadd %0,%0,%1" : : "r" (0x7f7fffff), "r" (0x7f7fffff));
-
-  if ((SPEFSCR_FUNFS & excepts) != 0)
-    /* Smallest normalized number times itself.  */
-    asm volatile ("efsmul %0,%0,%1" : : "r" (0x800000), "r" (0x800000));
-
-  if ((SPEFSCR_FINXS & excepts) != 0)
-    /* Smallest normalized minus 1.0 raises the inexact flag.  */
-    asm volatile ("efssub %0,%0,%1" : : "r" (0x00800000), "r" (1.0F));
-
-  /* Success.  */
-  return 0;
-}
diff --git a/sysdeps/powerpc/powerpc32/fpu/Makefile b/sysdeps/powerpc/powerpc32/fpu/Makefile
deleted file mode 100644
index e05073970d..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifeq ($(subdir),misc)
-sysdep_routines += fprsave fprrest
-endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
deleted file mode 100644
index c01c94dfb7..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
+++ /dev/null
@@ -1,178 +0,0 @@
-/* longjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#ifdef __NO_VMX__
-# include <novmxsetjmp.h>
-#else
-# include <jmpbuf-offsets.h>
-#endif
-
-	.machine	"altivec"
-ENTRY (__longjmp_symbol)
-#ifndef __NO_VMX__
-# ifdef PIC
-	mflr    r6
-	cfi_register (lr,r6)
-	SETUP_GOT_ACCESS(r5,got_label)
-	addis	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
-#  ifdef SHARED
-#   if IS_IN (rtld)
-	/* Inside ld.so we use the local alias to avoid runtime GOT
-	   relocations.  */
-	lwz     r5,_rtld_local_ro@got(r5)
-#   else
-	lwz     r5,_rtld_global_ro@got(r5)
-#   endif
-	mtlr    r6
-	cfi_same_value (lr)
-	lwz     r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET+LOWORD(r5)
-#  else
-	lwz     r5,_dl_hwcap@got(r5)
-	mtlr    r6
-	cfi_same_value (lr)
-	lwz     r5,LOWORD(r5)
-#  endif
-# else
-	lis	r5,(_dl_hwcap+LOWORD)@ha
-	lwz     r5,(_dl_hwcap+LOWORD)@l(r5)
-# endif
-	andis.	r5,r5,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-	beq	L(no_vmx)
-	la	r5,((JB_VRS)*4)(3)
-	andi.	r6,r5,0xf
-	lwz	r0,((JB_VRSAVE)*4)(3)
-	mtspr	VRSAVE,r0
-	beq+	L(aligned_restore_vmx)
-	addi    r6,r5,16
-	lvsl	v0,0,r5
-	lvx	v1,0,r5
-	addi    r5,r5,32
-	lvx	v21,0,r6
-	vperm   v20,v1,v21,v0
-# define load_misaligned_vmx_lo_loaded(loadvr,lovr,shiftvr,loadgpr,addgpr) \
-	addi    addgpr,addgpr,32; \
-	lvx	lovr,0,loadgpr; \
-	vperm   loadvr,loadvr,lovr,shiftvr;
-	load_misaligned_vmx_lo_loaded(v21,v22,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v22,v23,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v23,v24,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v24,v25,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v25,v26,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v26,v27,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v27,v28,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v28,v29,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v29,v30,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v30,v31,v0,r6,r5)
-	lvx	v1,0,r5
-	vperm   v31,v31,v1,v0
-	b       L(no_vmx)
-L(aligned_restore_vmx):
-	addi	r6,r5,16
-	lvx	v20,0,r5
-	addi	r5,r5,32
-	lvx	v21,0,r6
-	addi	r6,r6,32
-	lvx	v22,0,r5
-	addi	r5,r5,32
-	lvx	v23,0,r6
-	addi	r6,r6,32
-	lvx	v24,0,r5
-	addi	r5,r5,32
-	lvx	v25,0,r6
-	addi	r6,r6,32
-	lvx	v26,0,r5
-	addi	r5,r5,32
-	lvx	v27,0,r6
-	addi	r6,r6,32
-	lvx	v28,0,r5
-	addi	r5,r5,32
-	lvx	v29,0,r6
-	addi	r6,r6,32
-	lvx	v30,0,r5
-	lvx	v31,0,r6
-L(no_vmx):
-#endif
-#if defined PTR_DEMANGLE || defined CHECK_SP
-	lwz r24,(JB_GPR1*4)(r3)
-# ifdef CHECK_SP
-#  ifdef PTR_DEMANGLE
-	PTR_DEMANGLE3 (r24, r24, r25)
-#  endif
-	CHECK_SP (r24)
-	mr r1,r24
-# endif
-#else
-	lwz r1,(JB_GPR1*4)(r3)
-#endif
-	lwz r0,(JB_LR*4)(r3)
-	lwz r14,((JB_GPRS+0)*4)(r3)
-	lfd fp14,((JB_FPRS+0*2)*4)(r3)
-	lwz r15,((JB_GPRS+1)*4)(r3)
-	lfd fp15,((JB_FPRS+1*2)*4)(r3)
-	lwz r16,((JB_GPRS+2)*4)(r3)
-	lfd fp16,((JB_FPRS+2*2)*4)(r3)
-	lwz r17,((JB_GPRS+3)*4)(r3)
-	lfd fp17,((JB_FPRS+3*2)*4)(r3)
-	lwz r18,((JB_GPRS+4)*4)(r3)
-	lfd fp18,((JB_FPRS+4*2)*4)(r3)
-	lwz r19,((JB_GPRS+5)*4)(r3)
-	lfd fp19,((JB_FPRS+5*2)*4)(r3)
-	lwz r20,((JB_GPRS+6)*4)(r3)
-	lfd fp20,((JB_FPRS+6*2)*4)(r3)
-#ifdef PTR_DEMANGLE
-# ifndef CHECK_SP
-	PTR_DEMANGLE3 (r1, r24, r25)
-# endif
-	PTR_DEMANGLE2 (r0, r25)
-#endif
-	/* longjmp/longjmp_target probe expects longjmp first argument (4@3),
-	   second argument (-4@4), and target address (4@0), respectively.  */
-	LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
-	mtlr r0
-	lwz r21,((JB_GPRS+7)*4)(r3)
-	lfd fp21,((JB_FPRS+7*2)*4)(r3)
-	lwz r22,((JB_GPRS+8)*4)(r3)
-	lfd fp22,((JB_FPRS+8*2)*4)(r3)
-	lwz r5,(JB_CR*4)(r3)
-	lwz r23,((JB_GPRS+9)*4)(r3)
-	lfd fp23,((JB_FPRS+9*2)*4)(r3)
-	lwz r24,((JB_GPRS+10)*4)(r3)
-	lfd fp24,((JB_FPRS+10*2)*4)(r3)
-	lwz r25,((JB_GPRS+11)*4)(r3)
-	lfd fp25,((JB_FPRS+11*2)*4)(r3)
-	mtcrf 0xFF,r5
-	lwz r26,((JB_GPRS+12)*4)(r3)
-	lfd fp26,((JB_FPRS+12*2)*4)(r3)
-	lwz r27,((JB_GPRS+13)*4)(r3)
-	lfd fp27,((JB_FPRS+13*2)*4)(r3)
-	lwz r28,((JB_GPRS+14)*4)(r3)
-	lfd fp28,((JB_FPRS+14*2)*4)(r3)
-	lwz r29,((JB_GPRS+15)*4)(r3)
-	lfd fp29,((JB_FPRS+15*2)*4)(r3)
-	lwz r30,((JB_GPRS+16)*4)(r3)
-	lfd fp30,((JB_FPRS+16*2)*4)(r3)
-	lwz r31,((JB_GPRS+17)*4)(r3)
-	lfd fp31,((JB_FPRS+17*2)*4)(r3)
-	LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
-	mr r3,r4
-	blr
-END (__longjmp_symbol)
diff --git a/sysdeps/powerpc/powerpc32/fpu/__longjmp.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
deleted file mode 100644
index 0e62245927..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* AltiVec/VMX (new) version of __longjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-symbols.h>
-#include <rtld-global-offsets.h>
-#include <shlib-compat.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# define __longjmp_symbol __longjmp
-# include "__longjmp-common.S"
-
-#else /* IS_IN (libc) */
-strong_alias (__vmx__longjmp, __longjmp)
-# define __longjmp_symbol  __vmx__longjmp
-# include "__longjmp-common.S"
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-#  define __NO_VMX__
-#  undef JB_SIZE
-#  undef __longjmp_symbol
-#  define __longjmp_symbol  __novmx__longjmp
-#  include "__longjmp-common.S"
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc32/fpu/configure b/sysdeps/powerpc/powerpc32/fpu/configure
deleted file mode 100644
index 98c6f30ca3..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/configure
+++ /dev/null
@@ -1,56 +0,0 @@
-# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
- # Local configure fragment for sysdeps/powerpc/powerpc32/fpu.
-
-# Test whether integer to floating point conversions use fcfid.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fcfid use" >&5
-$as_echo_n "checking for fcfid use... " >&6; }
-if ${libc_cv_ppc_fcfid+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  echo 'double foo (int x) { return (double) x; }' > conftest.c
-libc_cv_ppc_fcfid=no
-if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-  if grep '[ 	]fcfid' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_fcfid=yes
-  fi
-fi
-rm -rf conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_fcfid" >&5
-$as_echo "$libc_cv_ppc_fcfid" >&6; }
-if test $libc_cv_ppc_fcfid = yes; then
-  $as_echo "#define HAVE_PPC_FCFID 1" >>confdefs.h
-
-fi
-
-# Test whether floating point to long long conversions use fctidz.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fctidz use" >&5
-$as_echo_n "checking for fctidz use... " >&6; }
-if ${libc_cv_ppc_fctidz+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  echo 'long long int foo (double x) { return (long long int) x; }' > conftest.c
-libc_cv_ppc_fctidz=no
-if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-  if grep '[ 	]fctidz' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_fctidz=yes
-  fi
-fi
-rm -rf conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_fctidz" >&5
-$as_echo "$libc_cv_ppc_fctidz" >&6; }
-if test $libc_cv_ppc_fctidz = yes; then
-  $as_echo "#define HAVE_PPC_FCTIDZ 1" >>confdefs.h
-
-fi
diff --git a/sysdeps/powerpc/powerpc32/fpu/configure.ac b/sysdeps/powerpc/powerpc32/fpu/configure.ac
deleted file mode 100644
index 1899705aab..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/configure.ac
+++ /dev/null
@@ -1,34 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/powerpc/powerpc32/fpu.
-
-# Test whether integer to floating point conversions use fcfid.
-AC_CACHE_CHECK([for fcfid use], [libc_cv_ppc_fcfid], [dnl
-echo 'double foo (int x) { return (double) x; }' > conftest.c
-libc_cv_ppc_fcfid=no
-if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-changequote(,)dnl
-  if grep '[ 	]fcfid' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_fcfid=yes
-  fi
-changequote([,])dnl
-fi
-rm -rf conftest*])
-if test $libc_cv_ppc_fcfid = yes; then
-  AC_DEFINE([HAVE_PPC_FCFID])
-fi
-
-# Test whether floating point to long long conversions use fctidz.
-AC_CACHE_CHECK([for fctidz use], [libc_cv_ppc_fctidz], [dnl
-echo 'long long int foo (double x) { return (long long int) x; }' > conftest.c
-libc_cv_ppc_fctidz=no
-if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-changequote(,)dnl
-  if grep '[ 	]fctidz' conftest.s > /dev/null 2>&1; then
-    libc_cv_ppc_fctidz=yes
-  fi
-changequote([,])dnl
-fi
-rm -rf conftest*])
-if test $libc_cv_ppc_fctidz = yes; then
-  AC_DEFINE([HAVE_PPC_FCTIDZ])
-fi
diff --git a/sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h b/sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h
deleted file mode 100644
index bd3eb62bf5..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Fix for conversion of integer 0 to floating point.  PowerPC version.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FIX_INT_FP_CONVERT_ZERO_H
-#define FIX_INT_FP_CONVERT_ZERO_H	1
-
-/* The code sequences GCC generates for conversion of integers to
-   floating point result in -0 instead of +0 in FE_DOWNWARD mode when
-   the fcfid instruction is not used, as of GCC 5.  See
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67771>.  */
-#define FIX_INT_FP_CONVERT_ZERO (!HAVE_PPC_FCFID)
-
-#endif /* fix-int-fp-convert-zero.h */
diff --git a/sysdeps/powerpc/powerpc32/fpu/fprrest.S b/sysdeps/powerpc/powerpc32/fpu/fprrest.S
deleted file mode 100644
index 7b2346471b..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/fprrest.S
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    Floating Point Registers (FPRs) restore routine
-*/
-
-#include <sysdep.h>
-
-ENTRY(_restfpr_all)
-		.globl C_TEXT(_restf14)
-		.globl C_TEXT(_restfpr_14)
-C_TEXT(_restf14):
-C_TEXT(_restfpr_14):	lfd	fp14,-144(r1)
-		.globl C_TEXT(_restf15)
-		.globl C_TEXT(_restfpr_15)
-C_TEXT(_restf15):
-C_TEXT(_restfpr_15):	lfd	fp15,-136(r1)
-		.globl C_TEXT(_restf16)
-		.globl C_TEXT(_restfpr_16)
-C_TEXT(_restf16):
-C_TEXT(_restfpr_16):	lfd	fp16,-128(r1)
-		.globl C_TEXT(_restf17)
-		.globl C_TEXT(_restfpr_17)
-C_TEXT(_restf17):
-C_TEXT(_restfpr_17):	lfd	fp17,-120(r1)
-		.globl C_TEXT(_restf18)
-		.globl C_TEXT(_restfpr_18)
-C_TEXT(_restf18):
-C_TEXT(_restfpr_18):	lfd	fp18,-112(r1)
-		.globl C_TEXT(_restf19)
-		.globl C_TEXT(_restfpr_19)
-C_TEXT(_restf19):
-C_TEXT(_restfpr_19):	lfd	fp19,-104(r1)
-		.globl C_TEXT(_restf20)
-		.globl C_TEXT(_restfpr_20)
-C_TEXT(_restf20):
-C_TEXT(_restfpr_20):	lfd	fp20,-96(r1)
-		.globl C_TEXT(_restf21)
-		.globl C_TEXT(_restfpr_21)
-C_TEXT(_restf21):
-C_TEXT(_restfpr_21):	lfd	fp21,-88(r1)
-		.globl C_TEXT(_restf22)
-		.globl C_TEXT(_restfpr_22)
-C_TEXT(_restf22):
-C_TEXT(_restfpr_22):	lfd	fp22,-80(r1)
-		.globl C_TEXT(_restf23)
-		.globl C_TEXT(_restfpr_23)
-C_TEXT(_restf23):
-C_TEXT(_restfpr_23):	lfd	fp23,-72(r1)
-		.globl C_TEXT(_restf24)
-		.globl C_TEXT(_restfpr_24)
-C_TEXT(_restf24):
-C_TEXT(_restfpr_24):	lfd	fp24,-64(r1)
-		.globl C_TEXT(_restf25)
-		.globl C_TEXT(_restfpr_25)
-C_TEXT(_restf25):
-C_TEXT(_restfpr_25):	lfd	fp25,-56(r1)
-		.globl C_TEXT(_restf26)
-		.globl C_TEXT(_restfpr_26)
-C_TEXT(_restf26):
-C_TEXT(_restfpr_26):	lfd	fp26,-48(r1)
-		.globl C_TEXT(_restf27)
-		.globl C_TEXT(_restfpr_27)
-C_TEXT(_restf27):
-C_TEXT(_restfpr_27):	lfd	fp27,-40(r1)
-		.globl C_TEXT(_restf28)
-		.globl C_TEXT(_restfpr_28)
-C_TEXT(_restf28):
-C_TEXT(_restfpr_28):	lfd	fp28,-32(r1)
-		.globl C_TEXT(_restf29)
-		.globl C_TEXT(_restfpr_29)
-C_TEXT(_restf29):
-C_TEXT(_restfpr_29):	lwz	r0,8(r1)	#get return address from frame
-			lfd	fp29,-24(r1)    #restore f29
-			mtlr	r0		#move return address to LR
-			lfd	fp30,-16(r1)	#restore f30
-			lfd	fp31,-8(r1)	#restore f31
-			blr			#return
-END (_restfpr_all)
diff --git a/sysdeps/powerpc/powerpc32/fpu/fprsave.S b/sysdeps/powerpc/powerpc32/fpu/fprsave.S
deleted file mode 100644
index 975a8216cb..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/fprsave.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    Floating Point Registers (FPRs) save routine
-*/
-
-#include <sysdep.h>
-
-ENTRY(_savefpr_all)
-                .globl C_TEXT(_savef14)
-		.globl C_TEXT(_savefpr_14)
-C_TEXT(_savef14):
-C_TEXT(_savefpr_14):	stfd	fp14,-144(r1)
-			cfi_offset(fp14,-144)
-		.globl C_TEXT(_savef15)
-		.globl C_TEXT(_savefpr_15)
-C_TEXT(_savef15):
-C_TEXT(_savefpr_15):	stfd	fp15,-136(r1)
-			cfi_offset(fp15,-136)
-		.globl C_TEXT(_savef16)
-		.globl C_TEXT(_savefpr_16)
-C_TEXT(_savef16):
-C_TEXT(_savefpr_16):	stfd	fp16,-128(r1)
-			cfi_offset(fp16,-128)
-		.globl C_TEXT(_savef17)
-		.globl C_TEXT(_savefpr_17)
-C_TEXT(_savef17):
-C_TEXT(_savefpr_17):	stfd	fp17,-120(r1)
-			cfi_offset(fp17,-120)
-		.globl C_TEXT(_savef18)
-		.globl C_TEXT(_savefpr_18)
-C_TEXT(_savef18):
-C_TEXT(_savefpr_18):	stfd	fp18,-112(r1)
-			cfi_offset(fp18,-112)
-		.globl C_TEXT(_savef19)
-		.globl C_TEXT(_savefpr_19)
-C_TEXT(_savef19):
-C_TEXT(_savefpr_19):	stfd	fp19,-104(r1)
-			cfi_offset(fp19,-104)
-		.globl C_TEXT(_savef20)
-		.globl C_TEXT(_savefpr_20)
-C_TEXT(_savef20):
-C_TEXT(_savefpr_20):	stfd	fp20,-96(r1)
-			cfi_offset(fp20,-96)
-		.globl C_TEXT(_savef21)
-		.globl C_TEXT(_savefpr_21)
-C_TEXT(_savef21):
-C_TEXT(_savefpr_21):	stfd	fp21,-88(r1)
-			cfi_offset(fp21,-88)
-		.globl C_TEXT(_savef22)
-		.globl C_TEXT(_savefpr_22)
-C_TEXT(_savef22):
-C_TEXT(_savefpr_22):	stfd	fp22,-80(r1)
-			cfi_offset(fp22,-80)
-		.globl C_TEXT(_savef23)
-		.globl C_TEXT(_savefpr_23)
-C_TEXT(_savef23):
-C_TEXT(_savefpr_23):	stfd	fp23,-72(r1)
-			cfi_offset(fp23,-72)
-		.globl C_TEXT(_savef24)
-		.globl C_TEXT(_savefpr_24)
-C_TEXT(_savef24):
-C_TEXT(_savefpr_24):	stfd	fp24,-64(r1)
-			cfi_offset(fp24,-64)
-		.globl C_TEXT(_savef25)
-		.globl C_TEXT(_savefpr_25)
-C_TEXT(_savef25):
-C_TEXT(_savefpr_25):	stfd	fp25,-56(r1)
-			cfi_offset(fp25,-56)
-		.globl C_TEXT(_savef26)
-		.globl C_TEXT(_savefpr_26)
-C_TEXT(_savef26):
-C_TEXT(_savefpr_26):	stfd	fp26,-48(r1)
-			cfi_offset(fp26,-48)
-		.globl C_TEXT(_savef27)
-		.globl C_TEXT(_savefpr_27)
-C_TEXT(_savef27):
-C_TEXT(_savefpr_27):	stfd	fp27,-40(r1)
-			cfi_offset(fp27,-40)
-		.globl C_TEXT(_savef28)
-		.globl C_TEXT(_savefpr_28)
-C_TEXT(_savef28):
-C_TEXT(_savefpr_28):	stfd	fp28,-32(r1)
-			cfi_offset(fp28,-32)
-		.globl C_TEXT(_savef29)
-		.globl C_TEXT(_savefpr_29)
-C_TEXT(_savef29):
-C_TEXT(_savefpr_29):	stfd	fp29,-24(r1)	#save f29
-			stfd	fp30,-16(r1)	#save f30
-			stfd	fp31,-8(r1)	#save f31
-			cfi_offset(fp29,-24)
-			cfi_offset(fp30,-16)
-			cfi_offset(fp31,-8)
-			stw	r0,8(r1)	#save LR in callers frame
-			blr			#return
-END (_savefpr_all)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
deleted file mode 100644
index 51b8c21027..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/* ceil function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000
-
-	.section	".text"
-ENTRY (__ceil)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,2		/* Set rounding mode toward +inf.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__ceil)
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
deleted file mode 100644
index 9d8d8aa294..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/* float ceil function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-
-	.section	".text"
-ENTRY (__ceilf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,2		/* Set rounding mode toward +inf.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
deleted file mode 100644
index 850dded3b6..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copy a sign bit between floating-point values.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysign)
-/* double [f1] copysign (double [f1] x, double [f2] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	stfd	fp2,8(r1)
-	lwz	r3,8+HIWORD(r1)
-	cmpwi   r3,0
-	addi    r1,r1,16
-	cfi_adjust_cfa_offset (-16)
-	blt     L(0)
-	fabs    fp1,fp1
-	blr
-L(0):	fnabs   fp1,fp1
-	blr
-	END (__copysign)
-
-weak_alias (__copysign,copysign)
-
-/* It turns out that it's safe to use this code even for single-precision.  */
-weak_alias (__copysign,copysignf)
-strong_alias(__copysign,__copysignf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S
deleted file mode 100644
index e05438ae7d..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __copysignf is in s_copysign.S  */
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S b/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
deleted file mode 100644
index 272032b49e..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copy a sign bit between floating-point values.
-   IBM extended format long double version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysignl)
-/* long double [f1,f2] copysign (long double [f1,f2] x, long double [f3,f4] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-#ifdef _ARCH_PPCGR
-	/* fsel available.  */
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	stfd	fp3,8(r1)
-	fmr	fp0,fp1
-	fabs	fp1,fp1
-	lwz	r3,8+HIWORD(r1)
-	cmpwi	cr6,r3,0
-	addi	r1,r1,16
-	cfi_adjust_cfa_offset (-16)
-	fneg	fp3,fp2
-	fsel	fp2,fp0,fp2,fp3
-	bgelr	cr6
-	fneg	fp1,fp1
-	fneg	fp2,fp2
-	blr
-#else
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	stfd	fp3,8(r1)
-	stfd	fp1,16(r1)
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,16+HIWORD(r1)
-	xor	r3,r3,r4
-	cmpwi	cr6,r3,0
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	bgelr	cr6
-	fneg	fp1,fp1
-	fneg	fp2,fp2
-	blr
-#endif
-END (__copysignl)
-
-#if IS_IN (libm)
-long_double_symbol (libm, __copysignl, copysignl)
-#else
-long_double_symbol (libc, __copysignl, copysignl)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_fabs.S b/sysdeps/powerpc/powerpc32/fpu/s_fabs.S
deleted file mode 100644
index 53d21301ee..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_fabs.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fabs.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __fabs, fabsl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_fabsl.S b/sysdeps/powerpc/powerpc32/fpu/s_fabsl.S
deleted file mode 100644
index 75608ec70c..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_fabsl.S
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copy a sign bit between floating-point values.
-   IBM extended format long double version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__fabsl)
-/* long double [f1,f2] fabs (long double [f1,f2] x);
-   fabs(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-#ifdef _ARCH_PPCGR
-	/* fsel available.  */
-	fmr	fp0,fp1
-#else
-	/* Use integer operations to test sign of high part to avoid
-	   exceptions on sNaNs.  */
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	stfd	fp1,8(r1)
-#endif
-	fabs	fp1,fp1
-#ifdef _ARCH_PPCGR
-	fneg	fp3,fp2
-	fsel	fp2,fp0,fp2,fp3
-#else
-	lwz	r3,8+HIWORD(r1)
-	cmpwi	cr6,r3,0
-	addi	r1,r1,16
-	cfi_adjust_cfa_offset (-16)
-	bgelr	cr6
-	fneg	fp2,fp2
-#endif
-	blr
-END (__fabsl)
-
-long_double_symbol (libm, __fabsl, fabsl)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/fpu/s_floor.S
deleted file mode 100644
index 90a1b184df..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_floor.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Floor function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000
-
-	.section	".text"
-ENTRY (__floor)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,3		/* Set rounding mode toward -inf.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__floor)
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
deleted file mode 100644
index b87e3bf33e..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/* float Floor function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-
-	.section	".text"
-ENTRY (__floorf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,3		/* Set rounding mode toward -inf.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__floorf)
-
-weak_alias (__floorf, floorf)
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_fma.S b/sysdeps/powerpc/powerpc32/fpu/s_fma.S
deleted file mode 100644
index d40695c633..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_fma.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fma.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fma, fmal, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
deleted file mode 100644
index 363535dcdb..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power4
-EALIGN (__isnan, 4, 0)
-	mffs	fp0
-	mtfsb0	4*cr6+lt /* reset_fpscr_bit (FPSCR_VE) */
-	fcmpu	cr7,fp1,fp1
-	mtfsf	255,fp0
-	li	r3,0
-	beqlr+	cr7	/* (x == x) then not a NAN */
-	li	r3,1	/* else must be a NAN */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-#ifndef __isnan
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-#endif
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llrint.c b/sysdeps/powerpc/powerpc32/fpu/s_llrint.c
deleted file mode 100644
index 13d150cd68..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_llrint.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Round a double value to a long long in the current rounding mode.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <limits.h>
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <math_private.h>
-#include <stdint.h>
-
-long long int
-__llrint (double x)
-{
-  double rx = __rint (x);
-  if (HAVE_PPC_FCTIDZ || rx != x)
-    return (long long int) rx;
-  else
-    {
-      /* Avoid incorrect exceptions from libgcc conversions (as of GCC
-	 5): <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59412>.  */
-      if (fabs (rx) < 0x1p31)
-	return (long long int) (long int) rx;
-      uint64_t i0;
-      EXTRACT_WORDS64 (i0, rx);
-      int exponent = ((i0 >> 52) & 0x7ff) - 0x3ff;
-      if (exponent < 63)
-	{
-	  unsigned long long int mant
-	    = (i0 & ((1ULL << 52) - 1)) | (1ULL << 52);
-	  if (exponent < 52)
-	    mant >>= 52 - exponent;
-	  else
-	    mant <<= exponent - 52;
-	  return (long long int) ((i0 & (1ULL << 63)) != 0 ? -mant : mant);
-	}
-      else if (rx == (double) LLONG_MIN)
-	return LLONG_MIN;
-      else
-	return (long long int) (long int) rx << 32;
-    }
-}
-weak_alias (__llrint, llrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c b/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c
deleted file mode 100644
index 46365452a8..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_llrintf.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Round a float value to a long long in the current rounding mode.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <stdint.h>
-
-long long int
-__llrintf (float x)
-{
-  float rx = __rintf (x);
-  if (HAVE_PPC_FCTIDZ || rx != x)
-    return (long long int) rx;
-  else
-    {
-      float arx = fabsf (rx);
-      /* Avoid incorrect exceptions from libgcc conversions (as of GCC
-	 5): <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59412>.  */
-      if (arx < 0x1p31f)
-	return (long long int) (long int) rx;
-      else if (!(arx < 0x1p55f))
-	return (long long int) (long int) (rx * 0x1p-32f) << 32;
-      uint32_t i0;
-      GET_FLOAT_WORD (i0, rx);
-      int exponent = ((i0 >> 23) & 0xff) - 0x7f;
-      unsigned long long int mant = (i0 & 0x7fffff) | 0x800000;
-      mant <<= exponent - 23;
-      return (long long int) ((i0 & 0x80000000) != 0 ? -mant : mant);
-    }
-}
-weak_alias (__llrintf, llrintf)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llround.c b/sysdeps/powerpc/powerpc32/fpu/s_llround.c
deleted file mode 100644
index 5e5a237b0c..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_llround.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Round double value to long long int.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <limits.h>
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <math_private.h>
-#include <stdint.h>
-
-/* Round to the nearest integer, with values exactly on a 0.5 boundary
-   rounded away from zero, regardless of the current rounding mode.
-   If (long long)x, when x is out of range of a long long, clips at
-   LLONG_MAX or LLONG_MIN, then this implementation also clips.  */
-
-long long int
-__llround (double x)
-{
-  long long xr;
-  if (HAVE_PPC_FCTIDZ)
-    xr = (long long) x;
-  else
-    {
-      /* Avoid incorrect exceptions from libgcc conversions (as of GCC
-	 5): <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59412>.  */
-      if (fabs (x) < 0x1p31)
-	xr = (long long int) (long int) x;
-      else
-	{
-	  uint64_t i0;
-	  EXTRACT_WORDS64 (i0, x);
-	  int exponent = ((i0 >> 52) & 0x7ff) - 0x3ff;
-	  if (exponent < 63)
-	    {
-	      unsigned long long int mant
-		= (i0 & ((1ULL << 52) - 1)) | (1ULL << 52);
-	      if (exponent < 52)
-		/* llround is not required to raise "inexact".  */
-		mant >>= 52 - exponent;
-	      else
-		mant <<= exponent - 52;
-	      xr = (long long int) ((i0 & (1ULL << 63)) != 0 ? -mant : mant);
-	    }
-	  else if (x == (double) LLONG_MIN)
-	    xr = LLONG_MIN;
-	  else
-	    xr = (long long int) (long int) x << 32;
-	}
-    }
-  /* Avoid spurious "inexact" converting LLONG_MAX to double, and from
-     subtraction when the result is out of range, by returning early
-     for arguments large enough that no rounding is needed.  */
-  if (!(fabs (x) < 0x1p52))
-    return xr;
-  double xrf = (double) xr;
-
-  if (x >= 0.0)
-    {
-      if (x - xrf >= 0.5)
-	xr += (long long) ((unsigned long long) xr + 1) > 0;
-    }
-  else
-    {
-      if (xrf - x >= 0.5)
-	xr -= (long long) ((unsigned long long) xr - 1) < 0;
-    }
-  return xr;
-}
-weak_alias (__llround, llround)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c b/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c
deleted file mode 100644
index 55452bac73..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_llroundf.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Round float value to long long int.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_private.h>
-#include <stdint.h>
-
-/* Round to the nearest integer, with values exactly on a 0.5 boundary
-   rounded away from zero, regardless of the current rounding mode.
-   If (long long)x, when x is out of range of a long long, clips at
-   LLONG_MAX or LLONG_MIN, then this implementation also clips.  */
-
-long long int
-__llroundf (float x)
-{
-  long long xr;
-  if (HAVE_PPC_FCTIDZ)
-    xr = (long long) x;
-  else
-    {
-      float ax = fabsf (x);
-      /* Avoid incorrect exceptions from libgcc conversions (as of GCC
-	 5): <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59412>.  */
-      if (ax < 0x1p31f)
-	xr = (long long int) (long int) x;
-      else if (!(ax < 0x1p55f))
-	xr = (long long int) (long int) (x * 0x1p-32f) << 32;
-      else
-	{
-	  uint32_t i0;
-	  GET_FLOAT_WORD (i0, x);
-	  int exponent = ((i0 >> 23) & 0xff) - 0x7f;
-	  unsigned long long int mant = (i0 & 0x7fffff) | 0x800000;
-	  mant <<= exponent - 23;
-	  xr = (long long int) ((i0 & 0x80000000) != 0 ? -mant : mant);
-	}
-    }
-  /* Avoid spurious "inexact" converting LLONG_MAX to float, and from
-     subtraction when the result is out of range, by returning early
-     for arguments large enough that no rounding is needed.  */
-  if (!(fabsf (x) < 0x1p23f))
-    return xr;
-  float xrf = (float) xr;
-
-  if (x >= 0.0)
-    {
-      if (x - xrf >= 0.5)
-	xr += (long long) ((unsigned long long) xr + 1) > 0;
-    }
-  else
-    {
-      if (xrf - x >= 0.5)
-	xr -= (long long) ((unsigned long long) xr - 1) < 0;
-    }
-  return xr;
-}
-weak_alias (__llroundf, llroundf)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
deleted file mode 100644
index 8d54d95b6a..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_lrint.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Round double to long int.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long int[r3] __lrint (double x[fp1])  */
-ENTRY (__lrint)
-	stwu	r1,-16(r1)
-	fctiw	fp13,fp1
-	stfd	fp13,8(r1)
-	nop	/* Ensure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__lrint)
-
-weak_alias (__lrint, lrint)
-
-strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/fpu/s_lround.S
deleted file mode 100644
index e4ec1bb0b6..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_lround.S
+++ /dev/null
@@ -1,129 +0,0 @@
-/* lround function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 0.5 */
-	.long 0x3f000000
-.LC1:	/* 2^52.  */
-	.long 0x59800000
-	.section	.rodata.cst8,"aM",@progbits,8
-	.align	3
-.LC2:	/* 0x7fffffff.8p0.  */
-	.long 0x41dfffff
-	.long 0xffe00000
-.LC3:	/* -0x80000000.8p0.  */
-	.long 0xc1e00000
-	.long 0x00100000
-	.section	".text"
-
-/* long [r3] lround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "round to Nearest" mode. Instead we set
-   "round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.  It is necessary to detect when x is
-   (+-)0x1.fffffffffffffp-2 because adding +-0.5 in this case will
-   cause an erroneous shift, carry and round.  We simply return 0 if
-   0.5 > x > -0.5.  */
-
-ENTRY (__lround)
-	stwu    r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r10,r9,.LC0-got_label@ha
-	lfs	fp10,.LC0-got_label@l(r10)
-	addis	r10,r9,.LC1-got_label@ha
-	lfs	fp11,.LC1-got_label@l(r10)
-	addis	r10,r9,.LC2-got_label@ha
-	lfd	fp9,.LC2-got_label@l(r10)
-	addis	r10,r9,.LC3-got_label@ha
-	lfd	fp8,.LC3-got_label@l(r10)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp10,.LC0@l(r9)
-	lis	r9,.LC1@ha
-	lfs	fp11,.LC1@l(r9)
-	lis	r9,.LC2@ha
-	lfd	fp9,.LC2@l(r9)
-	lis	r9,.LC3@ha
-	lfd	fp8,.LC3@l(r9)
-#endif
-	fabs	fp2, fp1	/* Get the absolute value of x.  */
-	fsub	fp12,fp10,fp10	/* Compute 0.0.  */
-	fcmpu	cr6, fp2, fp10	/* if |x| < 0.5  */
-	fcmpu	cr5, fp1, fp9	/* if x >= 0x7fffffff.8p0  */
-	fcmpu	cr1, fp1, fp8	/* if x <= -0x80000000.8p0  */
-	fcmpu	cr7, fp1, fp12	/* x is negative? x < 0.0  */
-	blt-	cr6,.Lretzero
-	bge-	cr5,.Loflow
-	ble-	cr1,.Loflow
-	/* Test whether an integer to avoid spurious "inexact".  */
-	fadd	fp3,fp2,fp11
-	fsub	fp3,fp3,fp11
-	fcmpu	cr5, fp2, fp3
-	beq	cr5,.Lnobias
-	fadd	fp3,fp2,fp10	/* |x|+=0.5 bias to prepare to round.  */
-	bge	cr7,.Lconvert	/* x is positive so don't negate x.  */
-	fnabs	fp3,fp3		/* -(|x|+=0.5)  */
-.Lconvert:
-	fctiwz	fp4,fp3		/* Convert to Integer word lround toward 0.  */
-	stfd	fp4,8(r1)
-	nop	/* Ensure the following load is in a different dispatch  */
-	nop	/* group to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+LOWORD(r1)	/* Load return as integer.  */
-.Lout:
-	addi	r1,r1,16
-	blr
-.Lretzero:			/* when 0.5 > x > -0.5  */
-	li	r3,0		/* return 0.  */
-	b	.Lout
-.Lnobias:
-	fmr	fp3,fp1
-	b	.Lconvert
-.Loflow:
-	fmr	fp3,fp11
-	bge	cr7,.Lconvert
-	fnabs	fp3,fp3
-	b	.Lconvert
-	END (__lround)
-
-weak_alias (__lround, lround)
-
-strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_lroundf.S b/sysdeps/powerpc/powerpc32/fpu/s_lroundf.S
deleted file mode 100644
index 6289e0be58..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_lroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __lroundf is in s_lround.S */
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S b/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
deleted file mode 100644
index df590e08bd..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Round to int floating-point values.  PowerPC32 version.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-
-/* double [fp1] nearbyint(double [fp1] x) */
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000	/* TWO52: 2**52 */
-
-	.section	".text"
-ENTRY (__nearbyint)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	bcl	20,31,1f
-1:	mflr	r9
-	addis	r9,r9,.LC0-1b@ha
-	lfs	fp13,.LC0-1b@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub    fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52 */
-	bge	cr7,.L10
-	fcmpu	cr7,fp1,fp12	/* if (x > 0.0 */
-	ble	cr7,L(lessthanzero)
-	mffs	fp11
-	mtfsb0	4*cr7+lt	/* Disable FE_INEXACT exception */
-	fadd	fp1,fp1,fp13	/* x += TWO52 */
-	fsub	fp1,fp1,fp13	/* x -= TWO52 */
-	fabs	fp1,fp1		/* if (x == 0.0 */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr
-L(lessthanzero):
-	bgelr	cr7
-	mffs	fp11
-	mtfsb0	4*cr7+lt	/* Disable FE_INEXACT exception */
-	fsub	fp1,fp1,fp13	/* x -= TWO52 */
-	fadd	fp1,fp1,fp13	/* x += TWO52 */
-	fnabs	fp1,fp1		/* if (x == 0.0) */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-END (__nearbyint)
-
-weak_alias (__nearbyint, nearbyint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__nearbyint, nearbyintl)
-strong_alias (__nearbyint, __nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S b/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
deleted file mode 100644
index fb4c6e4cee..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Round to int floating-point values.  PowerPC32 version.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-
-
-/* float [fp1] nearbyintf(float [fp1] x) */
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:
-	.long 0x4B000000	/* TWO23: 2**23 */
-
-	.section	".text"
-ENTRY (__nearbyintf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	bcl	20,31,1f
-1:	mflr	r9
-	addis	r9,r9,.LC0-1b@ha
-	lfs	fp13,.LC0-1b@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub    fp12,fp13,fp13		/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13		/* if (fabs(x) > TWO23 */
-	bge	cr7,.L10
-	fcmpu	cr7,fp1,fp12		/* if (x > 0.0 */
-	ble	cr7,L(lessthanzero)
-	mffs	fp11
-	mtfsb0	4*cr7+lt		/* Disable FE_INEXACT exception */
-	fadds	fp1,fp1,fp13		/* x += TWO23 */
-	fsubs	fp1,fp1,fp13		/* x -= TWO23 */
-	fabs	fp1,fp1			/* if (x == 0.0) */
-	mtfsf	0xff,fp11		/* Restore FE_INEXACT state.  */
-	blr
-L(lessthanzero):
-	bgelr	cr7
-	mffs	fp11
-	mtfsb0	4*cr7+lt		/* Disable FE_INEXACT exception */
-	fsubs	fp1,fp1,fp13		/* x -= TWO23 */
-	fadds	fp1,fp1,fp13		/* x += TWO23 */
-	fnabs	fp1,fp1			/* if (x == 0.0) */
-	mtfsf	0xff,fp11		/* Restore FE_INEXACT state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-END (__nearbyintf)
-
-weak_alias (__nearbyintf, nearbyintf)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rint.S b/sysdeps/powerpc/powerpc32/fpu/s_rint.S
deleted file mode 100644
index a1c3116447..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_rint.S
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Round to int floating-point values.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000
-
-	.section	".text"
-ENTRY (__rint)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl	cr7,.L10
-	bng	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = 0.0; */
-.L4:
-	bnllr	cr6		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__rint)
-
-weak_alias (__rint, rint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__rint, rintl)
-strong_alias (__rint, __rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S b/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
deleted file mode 100644
index 70e52e894d..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Round float to int floating-point values.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-
-	.section	".text"
-ENTRY (__rintf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl	cr7,.L10
-	bng	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = 0.0; */
-.L4:
-	bnllr	cr6		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__rintf)
-
-weak_alias (__rintf, rintf)
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_round.S b/sysdeps/powerpc/powerpc32/fpu/s_round.S
deleted file mode 100644
index f539890b17..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_round.S
+++ /dev/null
@@ -1,104 +0,0 @@
-/* round function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst8,"aM",@progbits,8
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000
-.LC1:	/* 0.5 */
-	.long 0x3f000000
-
-/* double [fp1] round (double x [fp1])
-   IEEE 1003.1 round function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "Round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "Round to Nearest" mode. Instead we set
-   "Round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.  */
-
-	.section	".text"
-ENTRY (__round)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	addi	r9,r9,.LC0-got_label@l
-	mtlr	r11
-	cfi_same_value (lr)
-	lfs	fp13,0(r9)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-#ifdef SHARED
-	lfs	fp10,.LC1-.LC0(r9)
-#else
-	lis	r9,.LC1@ha
-	lfs	fp10,.LC1@l(r9)
-#endif
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp10	/* x+= 0.5;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	fsub	fp9,fp1,fp10	/* x+= 0.5;  */
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp9,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__round)
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
deleted file mode 100644
index 5daf84b598..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/* roundf  function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	.rodata.cst8,"aM",@progbits,8
-	.align	3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-.LC1:	/* 0.5 */
-	.long 0x3f000000
-
-/* float [fp1] roundf  (float x [fp1])
-   IEEE 1003.1 round function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "Round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "Round to Nearest" mode. Instead we set
-   "Round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.  */
-
-	.section	".text"
-ENTRY (__roundf )
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	addi	r9,r9,.LC0-got_label@l
-	mtlr	r11
-	cfi_same_value (lr)
-	lfs	fp13,0(r9)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-#ifdef SHARED
-	lfs	fp10,.LC1-.LC0(r9)
-#else
-	lfs	fp10,.LC1@l(r9)
-#endif
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp10	/* x+= 0.5;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	fsubs	fp9,fp1,fp10	/* x+= 0.5;  */
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp9,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__roundf)
-
-weak_alias (__roundf, roundf)
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
deleted file mode 100644
index 85d292c03c..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
+++ /dev/null
@@ -1,90 +0,0 @@
-/* trunc function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**52 */
-	.long 0x59800000
-
-/* double [fp1] trunc (double x [fp1])
-   IEEE 1003.1 trunc function.  IEEE specifies "trunc to the integer
-   value, in floating format, nearest to but no larger in magnitude
-   then the argument."
-   We set "round toward Zero" mode and trunc by adding +-2**52 then
-   subtracting +-2**52.  */
-
-	.section	".text"
-ENTRY (__trunc)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding toward 0 mode.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__trunc)
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
deleted file mode 100644
index 9b91e3f0a5..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
+++ /dev/null
@@ -1,82 +0,0 @@
-/* truncf function.  PowerPC32 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	.rodata.cst4,"aM",@progbits,4
-	.align	2
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-
-/* float [fp1] truncf (float x [fp1])
-   IEEE 1003.1 trunc function.  IEEE specifies "trunc to the integer
-   value, in floating format, nearest to but no larger in magnitude
-   then the argument."
-   We set "round toward Zero" mode and trunc by adding +-2**23 then
-   subtracting +-2**23.  */
-
-	.section	".text"
-ENTRY (__truncf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfs	fp13,.LC0-got_label@l(r9)
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfs	fp13,.LC0@l(r9)
-#endif
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding toward 0 mode.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__truncf)
-
-weak_alias (__truncf, truncf)
-
diff --git a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
deleted file mode 100644
index 19ad07ee56..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
+++ /dev/null
@@ -1,183 +0,0 @@
-/* setjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#ifdef __NO_VMX__
-# include <novmxsetjmp.h>
-#else
-# include <jmpbuf-offsets.h>
-#endif
-
-	.machine	"altivec"
-ENTRY (__sigsetjmp_symbol)
-
-#ifdef PTR_MANGLE
-	mr   r5,r1
-	PTR_MANGLE(r5, r6)
-	stw  r5,(JB_GPR1*4)(3)
-#else
-	stw  r1,(JB_GPR1*4)(3)
-#endif
-	mflr r0
-	/* setjmp probe expects longjmp first argument (4@3), second argument
-	   (-4@4), and target address (4@0), respectively.  */
-	LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
-	stw  r14,((JB_GPRS+0)*4)(3)
-	stfd fp14,((JB_FPRS+0*2)*4)(3)
-#ifdef PTR_MANGLE
-	PTR_MANGLE2 (r0, r6)
-#endif
-	stw  r0,(JB_LR*4)(3)
-	stw  r15,((JB_GPRS+1)*4)(3)
-	stfd fp15,((JB_FPRS+1*2)*4)(3)
-	mfcr r0
-	stw  r16,((JB_GPRS+2)*4)(3)
-	stfd fp16,((JB_FPRS+2*2)*4)(3)
-	stw  r0,(JB_CR*4)(3)
-	stw  r17,((JB_GPRS+3)*4)(3)
-	stfd fp17,((JB_FPRS+3*2)*4)(3)
-	stw  r18,((JB_GPRS+4)*4)(3)
-	stfd fp18,((JB_FPRS+4*2)*4)(3)
-	stw  r19,((JB_GPRS+5)*4)(3)
-	stfd fp19,((JB_FPRS+5*2)*4)(3)
-	stw  r20,((JB_GPRS+6)*4)(3)
-	stfd fp20,((JB_FPRS+6*2)*4)(3)
-	stw  r21,((JB_GPRS+7)*4)(3)
-	stfd fp21,((JB_FPRS+7*2)*4)(3)
-	stw  r22,((JB_GPRS+8)*4)(3)
-	stfd fp22,((JB_FPRS+8*2)*4)(3)
-	stw  r23,((JB_GPRS+9)*4)(3)
-	stfd fp23,((JB_FPRS+9*2)*4)(3)
-	stw  r24,((JB_GPRS+10)*4)(3)
-	stfd fp24,((JB_FPRS+10*2)*4)(3)
-	stw  r25,((JB_GPRS+11)*4)(3)
-	stfd fp25,((JB_FPRS+11*2)*4)(3)
-	stw  r26,((JB_GPRS+12)*4)(3)
-	stfd fp26,((JB_FPRS+12*2)*4)(3)
-	stw  r27,((JB_GPRS+13)*4)(3)
-	stfd fp27,((JB_FPRS+13*2)*4)(3)
-	stw  r28,((JB_GPRS+14)*4)(3)
-	stfd fp28,((JB_FPRS+14*2)*4)(3)
-	stw  r29,((JB_GPRS+15)*4)(3)
-	stfd fp29,((JB_FPRS+15*2)*4)(3)
-	stw  r30,((JB_GPRS+16)*4)(3)
-	stfd fp30,((JB_FPRS+16*2)*4)(3)
-	stw  r31,((JB_GPRS+17)*4)(3)
-	stfd fp31,((JB_FPRS+17*2)*4)(3)
-#ifndef __NO_VMX__
-# ifdef PIC
-	mflr    r6
-	cfi_register(lr,r6)
-	SETUP_GOT_ACCESS(r5,got_label)
-	addis	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
-	mtlr	r6
-	cfi_same_value (lr)
-#  ifdef SHARED
-#   if IS_IN (rtld)
-	/* Inside ld.so we use the local alias to avoid runtime GOT
-	   relocations.  */
-	lwz     r5,_rtld_local_ro@got(r5)
-#   else
-	lwz     r5,_rtld_global_ro@got(r5)
-#   endif
-	lwz     r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET+LOWORD(r5)
-#  else
-	lwz     r5,_dl_hwcap@got(r5)
-	lwz     r5,LOWORD(r5)
-#  endif
-# else
-	lis	r6,(_dl_hwcap+LOWORD)@ha
-	lwz     r5,(_dl_hwcap+LOWORD)@l(r6)
-# endif
-	andis.	r5,r5,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-	beq	L(no_vmx)
-	la	r5,((JB_VRS)*4)(3)
-	andi.	r6,r5,0xf
-	mfspr	r0,VRSAVE
-	stw	r0,((JB_VRSAVE)*4)(3)
-	addi	r6,r5,16
-	beq+	L(aligned_save_vmx)
-
-	lvsr	v0,0,r5
-	lvsl	v1,0,r5
-	addi	r6,r5,-16
-
-# define save_misaligned_vmx(savevr,prevvr,shiftvr,tmpvr,savegpr,addgpr) \
-	addi	addgpr,addgpr,32;					 \
-	vperm	tmpvr,prevvr,savevr,shiftvr;				 \
-	stvx	tmpvr,0,savegpr
-
-	/*
-	 * We have to be careful not to corrupt the data below v20 and
-	 * above v31. To keep things simple we just rotate both ends in
-	 * the opposite direction to our main permute so we can use
-	 * the common macro.
-	 */
-
-	/* load and rotate data below v20 */
-	lvx	v2,0,r5
-	vperm	v2,v2,v2,v1
-	save_misaligned_vmx(v20,v2,v0,v3,r5,r6)
-	save_misaligned_vmx(v21,v20,v0,v3,r6,r5)
-	save_misaligned_vmx(v22,v21,v0,v3,r5,r6)
-	save_misaligned_vmx(v23,v22,v0,v3,r6,r5)
-	save_misaligned_vmx(v24,v23,v0,v3,r5,r6)
-	save_misaligned_vmx(v25,v24,v0,v3,r6,r5)
-	save_misaligned_vmx(v26,v25,v0,v3,r5,r6)
-	save_misaligned_vmx(v27,v26,v0,v3,r6,r5)
-	save_misaligned_vmx(v28,v27,v0,v3,r5,r6)
-	save_misaligned_vmx(v29,v28,v0,v3,r6,r5)
-	save_misaligned_vmx(v30,v29,v0,v3,r5,r6)
-	save_misaligned_vmx(v31,v30,v0,v3,r6,r5)
-	/* load and rotate data above v31 */
-	lvx	v2,0,r6
-	vperm	v2,v2,v2,v1
-	save_misaligned_vmx(v2,v31,v0,v3,r5,r6)
-
-	b	L(no_vmx)
-
-L(aligned_save_vmx):
-	stvx	20,0,r5
-	addi	r5,r5,32
-	stvx	21,0,r6
-	addi	r6,r6,32
-	stvx	22,0,r5
-	addi	r5,r5,32
-	stvx	23,0,r6
-	addi	r6,r6,32
-	stvx	24,0,r5
-	addi	r5,r5,32
-	stvx	25,0,r6
-	addi	r6,r6,32
-	stvx	26,0,r5
-	addi	r5,r5,32
-	stvx	27,0,r6
-	addi	r6,r6,32
-	stvx	28,0,r5
-	addi	r5,r5,32
-	stvx	29,0,r6
-	addi	r6,r6,32
-	stvx	30,0,r5
-	stvx	31,0,r6
-L(no_vmx):
-#endif
-	b __sigjmp_save_symbol@local
-END (__sigsetjmp_symbol)
diff --git a/sysdeps/powerpc/powerpc32/fpu/setjmp.S b/sysdeps/powerpc/powerpc32/fpu/setjmp.S
deleted file mode 100644
index 02b17d3467..0000000000
--- a/sysdeps/powerpc/powerpc32/fpu/setjmp.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* non altivec (old) version of setjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-symbols.h>
-#include <rtld-global-offsets.h>
-#include <shlib-compat.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# define __sigsetjmp_symbol __sigsetjmp
-# define __sigjmp_save_symbol __sigjmp_save
-# include "setjmp-common.S"
-
-#else /* IS_IN (libc) */
-/* Build a versioned object for libc.  */
-versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
-# define __sigsetjmp_symbol __vmx__sigsetjmp
-# define __sigjmp_save_symbol __vmx__sigjmp_save
-# include "setjmp-common.S"
-libc_hidden_ver (__vmx__sigsetjmp, __sigsetjmp)
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-#  define __NO_VMX__
-#  undef __sigsetjmp_symbol
-#  undef __sigjmp_save_symbol
-#  undef JB_SIZE
-compat_symbol (libc, __novmx__sigsetjmp, __sigsetjmp, GLIBC_2_0)
-#  define __sigsetjmp_symbol __novmx__sigsetjmp
-#  define __sigjmp_save_symbol __novmx__sigjmp_save
-#  include "setjmp-common.S"
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc32/gprrest0.S b/sysdeps/powerpc/powerpc32/gprrest0.S
deleted file mode 100644
index a379e0248e..0000000000
--- a/sysdeps/powerpc/powerpc32/gprrest0.S
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    General Purpose Register (GPR) restore routine
-    when Floating Point Registers (FPRs) are not saved
-
-    Note: This restore routine must not be called when GPR30 or
-    GPR31, or both, are the only registers beings saved. In these
-    cases, the saving and restoring must be done inline.
-*/
-
-#include <sysdep.h>
-
-ENTRY(_restgpr0_all)
-		.globl C_TEXT(_restgpr0_13)
-C_TEXT(_restgpr0_13):	lwz	r13,-76(r1)
-		.globl C_TEXT(_restgpr0_14)
-C_TEXT(_restgpr0_14):	lwz	r14,-72(r1)
-		.globl C_TEXT(_restgpr0_15)
-C_TEXT(_restgpr0_15):	lwz	r15,-68(r1)
-		.globl C_TEXT(_restgpr0_16)
-C_TEXT(_restgpr0_16):	lwz	r16,-64(r1)
-		.globl C_TEXT(_restgpr0_17)
-C_TEXT(_restgpr0_17):	lwz	r17,-60(r1)
-		.globl C_TEXT(_restgpr0_18)
-C_TEXT(_restgpr0_18):	lwz	r18,-56(r1)
-		.globl C_TEXT(_restgpr0_19)
-C_TEXT(_restgpr0_19):	lwz	r19,-52(r1)
-		.globl C_TEXT(_restgpr0_20)
-C_TEXT(_restgpr0_20):	lwz	r20,-48(r1)
-		.globl C_TEXT(_restgpr0_21)
-C_TEXT(_restgpr0_21):	lwz	r21,-44(r1)
-		.globl C_TEXT(_restgpr0_22)
-C_TEXT(_restgpr0_22):	lwz	r22,-40(r1)
-		.globl C_TEXT(_restgpr0_23)
-C_TEXT(_restgpr0_23):	lwz	r23,-36(r1)
-		.globl C_TEXT(_restgpr0_24)
-C_TEXT(_restgpr0_24):	lwz	r24,-32(r1)
-		.globl C_TEXT(_restgpr0_25)
-C_TEXT(_restgpr0_25):	lwz	r25,-28(r1)
-		.globl C_TEXT(_restgpr0_26)
-C_TEXT(_restgpr0_26):	lwz	r26,-24(r1)
-		.globl C_TEXT(_restgpr0_27)
-C_TEXT(_restgpr0_27):	lwz	r27,-20(r1)
-		.globl C_TEXT(_restgpr0_28)
-C_TEXT(_restgpr0_28):	lwz	r28,-16(r1)
-		.globl C_TEXT(_restgpr0_29)
-C_TEXT(_restgpr0_29):	lwz	r0,8(r1)	#get return address from frame
-			lwz	r29,-12(r1)	#restore r29
-			mtlr	r0		#move return address to LR
-			lwz	r30,-8(r1)	#restore r30
-			lwz	r31,-4(r1)	#restore r31
-			blr			#return
-END (_restgpr0_all)
diff --git a/sysdeps/powerpc/powerpc32/gprrest1.S b/sysdeps/powerpc/powerpc32/gprrest1.S
deleted file mode 100644
index c3ac120ca5..0000000000
--- a/sysdeps/powerpc/powerpc32/gprrest1.S
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    General Purpose Register (GPR) restore routine
-    when Floating Point Registers (FPRs) are saved
-*/
-
-#include <sysdep.h>
-
-ENTRY(_restgpr1_all)
-		.globl	C_TEXT(_restgpr1_13)
-C_TEXT(_restgpr1_13):	lwz	r13,-76(r12)
-		.globl	C_TEXT(_restgpr1_14)
-C_TEXT(_restgpr1_14):	lwz	r14,-72(r12)
-		.globl	C_TEXT(_restgpr1_15)
-C_TEXT(_restgpr1_15):	lwz	r15,-68(r12)
-		.globl	C_TEXT(_restgpr1_16)
-C_TEXT(_restgpr1_16):	lwz	r16,-64(r12)
-		.globl	C_TEXT(_restgpr1_17)
-C_TEXT(_restgpr1_17):	lwz	r17,-60(r12)
-		.globl	C_TEXT(_restgpr1_18)
-C_TEXT(_restgpr1_18):	lwz	r18,-56(r12)
-		.globl	C_TEXT(_restgpr1_19)
-C_TEXT(_restgpr1_19):	lwz	r19,-52(r12)
-		.globl	C_TEXT(_restgpr1_20)
-C_TEXT(_restgpr1_20):	lwz	r20,-48(r12)
-		.globl	C_TEXT(_restgpr1_21)
-C_TEXT(_restgpr1_21):	lwz	r21,-44(r12)
-		.globl	C_TEXT(_restgpr1_22)
-C_TEXT(_restgpr1_22):	lwz	r22,-40(r12)
-		.globl	C_TEXT(_restgpr1_23)
-C_TEXT(_restgpr1_23):	lwz	r23,-36(r12)
-		.globl	C_TEXT(_restgpr1_24)
-C_TEXT(_restgpr1_24):	lwz	r24,-32(r12)
-		.globl	C_TEXT(_restgpr1_25)
-C_TEXT(_restgpr1_25):	lwz	r25,-28(r12)
-		.globl	C_TEXT(_restgpr1_26)
-C_TEXT(_restgpr1_26):	lwz	r26,-24(r12)
-		.globl	C_TEXT(_restgpr1_27)
-C_TEXT(_restgpr1_27):	lwz	r27,-20(r12)
-		.globl	C_TEXT(_restgpr1_28)
-C_TEXT(_restgpr1_28):	lwz	r28,-16(r12)
-		.globl	C_TEXT(_restgpr1_29)
-C_TEXT(_restgpr1_29):	lwz	r29,-12(r12)	#restore r29
-			lwz	r30,-8(r12)	#restore r30
-			lwz	r31,-4(r12)	#restore r31
-			blr			#return
-END (_restgpr1_all)
diff --git a/sysdeps/powerpc/powerpc32/gprsave0.S b/sysdeps/powerpc/powerpc32/gprsave0.S
deleted file mode 100644
index 4c474514c6..0000000000
--- a/sysdeps/powerpc/powerpc32/gprsave0.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    General Purpose Register (GPR) save routine
-    when Floating Point Registers (FPRs) are not saved
-
-    Note: This save routine must not be called when GPR30 or
-    GPR31, or both, are the only registers beings saved. In these
-    cases, the saving and restoring must be done inline.
-*/
-
-#include <sysdep.h>
-
-ENTRY(_savegpr0_all)
-		.globl C_TEXT(_savegpr0_13)
-C_TEXT(_savegpr0_13):	stw	r13,-76(r1)
-			cfi_offset(r13,-76)
-		.globl C_TEXT(_savegpr0_14)
-C_TEXT(_savegpr0_14):	stw	r14,-72(r1)
-			cfi_offset(r14,-72)
-		.globl C_TEXT(_savegpr0_15)
-C_TEXT(_savegpr0_15):	stw	r15,-68(r1)
-			cfi_offset(r15,-68)
-		.globl C_TEXT(_savegpr0_16)
-C_TEXT(_savegpr0_16):	stw	r16,-64(r1)
-			cfi_offset(r16,-64)
-		.globl C_TEXT(_savegpr0_17)
-C_TEXT(_savegpr0_17):	stw	r17,-60(r1)
-			cfi_offset(r17,-60)
-		.globl C_TEXT(_savegpr0_18)
-C_TEXT(_savegpr0_18):	stw	r18,-56(r1)
-			cfi_offset(r18,-56)
-		.globl C_TEXT(_savegpr0_19)
-C_TEXT(_savegpr0_19):	stw	r19,-52(r1)
-			cfi_offset(r19,-52)
-		.globl C_TEXT(_savegpr0_20)
-C_TEXT(_savegpr0_20):	stw	r20,-48(r1)
-			cfi_offset(r20,-48)
-		.globl C_TEXT(_savegpr0_21)
-C_TEXT(_savegpr0_21):	stw	r21,-44(r1)
-			cfi_offset(r21,-44)
-		.globl C_TEXT(_savegpr0_22)
-C_TEXT(_savegpr0_22):	stw	r22,-40(r1)
-			cfi_offset(r22,-40)
-		.globl C_TEXT(_savegpr0_23)
-C_TEXT(_savegpr0_23):	stw	r23,-36(r1)
-			cfi_offset(r23,-36)
-		.globl C_TEXT(_savegpr0_24)
-C_TEXT(_savegpr0_24):	stw	r24,-32(r1)
-			cfi_offset(r24,-32)
-		.globl C_TEXT(_savegpr0_25)
-C_TEXT(_savegpr0_25):	stw	r25,-28(r1)
-			cfi_offset(r25,-28)
-		.globl C_TEXT(_savegpr0_26)
-C_TEXT(_savegpr0_26):	stw	r26,-24(r1)
-			cfi_offset(r26,-24)
-		.globl C_TEXT(_savegpr0_27)
-C_TEXT(_savegpr0_27):	stw	r27,-20(r1)
-			cfi_offset(r27,-20)
-		.globl C_TEXT(_savegpr0_28)
-C_TEXT(_savegpr0_28):	stw	r28,-16(r1)
-			cfi_offset(r28,-16)
-		.globl C_TEXT(_savegpr0_29)
-C_TEXT(_savegpr0_29):	stw	r29,-12(r1) #save r29
-			stw	r30,-8(r1)  #save r30
-			stw	r31,-4(r1)  #save r31
-			cfi_offset(r29,-12)
-			cfi_offset(r30,-8)
-			cfi_offset(r31,-4)
-			stw	r0,8(r1)    #save LR in callers frame
-			blr		    #return
-END (_savegpr0_all)
diff --git a/sysdeps/powerpc/powerpc32/gprsave1.S b/sysdeps/powerpc/powerpc32/gprsave1.S
deleted file mode 100644
index 89da657070..0000000000
--- a/sysdeps/powerpc/powerpc32/gprsave1.S
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
-    General Purpose Register (GPR) save routine
-    when Floating Point Registers (FPRs) are saved
-*/
-
-#include <sysdep.h>
-
-ENTRY(_savegpr1_all)
-		.globl C_TEXT(_savegpr1_13)
-C_TEXT(_savegpr1_13):	stw	r13,-76(r12)
-		.globl C_TEXT(_savegpr1_14)
-C_TEXT(_savegpr1_14):	stw	r14,-72(r12)
-		.globl C_TEXT(_savegpr1_15)
-C_TEXT(_savegpr1_15):	stw	r15,-68(r12)
-		.globl C_TEXT(_savegpr1_16)
-C_TEXT(_savegpr1_16):	stw	r16,-64(r12)
-		.globl C_TEXT(_savegpr1_17)
-C_TEXT(_savegpr1_17):	stw	r17,-60(r12)
-		.globl C_TEXT(_savegpr1_18)
-C_TEXT(_savegpr1_18):	stw	r18,-56(r12)
-		.globl C_TEXT(_savegpr1_19)
-C_TEXT(_savegpr1_19):	stw	r19,-52(r12)
-		.globl C_TEXT(_savegpr1_20)
-C_TEXT(_savegpr1_20):	stw	r20,-48(r12)
-		.globl C_TEXT(_savegpr1_21)
-C_TEXT(_savegpr1_21):	stw	r21,-44(r12)
-		.globl C_TEXT(_savegpr1_22)
-C_TEXT(_savegpr1_22):	stw	r22,-40(r12)
-		.globl C_TEXT(_savegpr1_23)
-C_TEXT(_savegpr1_23):	stw	r23,-36(r12)
-		.globl C_TEXT(_savegpr1_24)
-C_TEXT(_savegpr1_24):	stw	r24,-32(r12)
-		.globl C_TEXT(_savegpr1_25)
-C_TEXT(_savegpr1_25):	stw	r25,-28(r12)
-		.globl C_TEXT(_savegpr1_26)
-C_TEXT(_savegpr1_26):	stw	r26,-24(r12)
-		.globl C_TEXT(_savegpr1_27)
-C_TEXT(_savegpr1_27):	stw	r27,-20(r12)
-		.globl C_TEXT(_savegpr1_28)
-C_TEXT(_savegpr1_28):	stw	r28,-16(r12)
-		.globl C_TEXT(_savegpr1_29)
-C_TEXT(_savegpr1_29):	stw	r29,-12(r12)	#save r29
-			stw	r30,-8(r12)	#save r30
-			stw	r31,-4(r12)	#save r31
-			blr			#return
-END (_savegpr1_all)
diff --git a/sysdeps/powerpc/powerpc32/libgcc-compat.S b/sysdeps/powerpc/powerpc32/libgcc-compat.S
deleted file mode 100644
index 431ccaa4b3..0000000000
--- a/sysdeps/powerpc/powerpc32/libgcc-compat.S
+++ /dev/null
@@ -1,137 +0,0 @@
-/* pre-.hidden libgcc compatibility
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-	.file	"libgcc-compat.S"
-
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_6)
-
-	.symver __ashldi3_v_glibc20,__ashldi3@GLIBC_2.0
-	.symver __ashrdi3_v_glibc20,__ashrdi3@GLIBC_2.0
-	.symver __lshrdi3_v_glibc20,__lshrdi3@GLIBC_2.0
-	.symver __cmpdi2_v_glibc20,__cmpdi2@GLIBC_2.0
-	.symver __ucmpdi2_v_glibc20,__ucmpdi2@GLIBC_2.0
-#if !defined _SOFT_FLOAT && !defined __NO_FPRS__
-	.symver __fixdfdi_v_glibc20,__fixdfdi@GLIBC_2.0
-	.symver __fixunsdfdi_v_glibc20,__fixunsdfdi@GLIBC_2.0
-	.symver __fixsfdi_v_glibc20,__fixsfdi@GLIBC_2.0
-	.symver __fixunssfdi_v_glibc20,__fixunssfdi@GLIBC_2.0
-	.symver __floatdidf_v_glibc20,__floatdidf@GLIBC_2.0
-	.symver __floatdisf_v_glibc20,__floatdisf@GLIBC_2.0
-#endif
-
-#ifdef HAVE_DOT_HIDDEN
-	.hidden __ashldi3
-	.hidden __ashrdi3
-	.hidden __lshrdi3
-	.hidden __cmpdi2
-	.hidden __ucmpdi2
-# if !defined _SOFT_FLOAT && !defined __NO_FPRS__
-	.hidden __fixdfdi
-	.hidden __fixsfdi
-	.hidden __fixunsdfdi
-	.hidden __fixunssfdi
-	.hidden __floatdidf
-	.hidden __floatdisf
-# endif
-#endif
-
-	.section	".text"
-
-	.align 2
-	.globl __ashldi3_v_glibc20
-	.type	__ashldi3_v_glibc20,@function
-__ashldi3_v_glibc20:
-	b __ashldi3@local
-.Lfe5:
-	.size	__ashldi3_v_glibc20,.Lfe5-__ashldi3_v_glibc20
-	.align 2
-	.globl __ashrdi3_v_glibc20
-	.type	__ashrdi3_v_glibc20,@function
-__ashrdi3_v_glibc20:
-	b __ashrdi3@local
-.Lfe6:
-	.size	__ashrdi3_v_glibc20,.Lfe6-__ashrdi3_v_glibc20
-	.align 2
-	.globl __lshrdi3_v_glibc20
-	.type	__lshrdi3_v_glibc20,@function
-__lshrdi3_v_glibc20:
-	b __lshrdi3@local
-.Lfe7:
-	.size	__lshrdi3_v_glibc20,.Lfe7-__lshrdi3_v_glibc20
-	.align 2
-	.globl __cmpdi2_v_glibc20
-	.type	__cmpdi2_v_glibc20,@function
-__cmpdi2_v_glibc20:
-	b __cmpdi2@local
-.Lfe8:
-	.size	__cmpdi2_v_glibc20,.Lfe8-__cmpdi2_v_glibc20
-	.align 2
-	.globl __ucmpdi2_v_glibc20
-	.type	__ucmpdi2_v_glibc20,@function
-__ucmpdi2_v_glibc20:
-	b __ucmpdi2@local
-.Lfe9:
-	.size	__ucmpdi2_v_glibc20,.Lfe9-__ucmpdi2_v_glibc20
-#if !defined _SOFT_FLOAT && !defined __NO_FPRS__
-	.align 2
-	.globl __fixdfdi_v_glibc20
-	.type	__fixdfdi_v_glibc20,@function
-__fixdfdi_v_glibc20:
-	b __fixdfdi@local
-.Lfe10:
-	.size	__fixdfdi_v_glibc20,.Lfe10-__fixdfdi_v_glibc20
-	.align 2
-	.globl __fixunsdfdi_v_glibc20
-	.type	__fixunsdfdi_v_glibc20,@function
-__fixunsdfdi_v_glibc20:
-	b __fixunsdfdi@local
-.Lfe11:
-	.size	__fixunsdfdi_v_glibc20,.Lfe11-__fixunsdfdi_v_glibc20
-	.align 2
-	.globl __fixsfdi_v_glibc20
-	.type	__fixsfdi_v_glibc20,@function
-__fixsfdi_v_glibc20:
-	b __fixsfdi@local
-.Lfe12:
-	.size	__fixsfdi_v_glibc20,.Lfe12-__fixsfdi_v_glibc20
-	.align 2
-	.globl __fixunssfdi_v_glibc20
-	.type	__fixunssfdi_v_glibc20,@function
-__fixunssfdi_v_glibc20:
-	b __fixunssfdi@local
-.Lfe13:
-	.size	__fixunssfdi_v_glibc20,.Lfe13-__fixunssfdi_v_glibc20
-	.align 2
-	.globl __floatdidf_v_glibc20
-	.type	__floatdidf_v_glibc20,@function
-__floatdidf_v_glibc20:
-	b __floatdidf@local
-.Lfe14:
-	.size	__floatdidf_v_glibc20,.Lfe14-__floatdidf_v_glibc20
-	.align 2
-	.globl __floatdisf_v_glibc20
-	.type	__floatdisf_v_glibc20,@function
-__floatdisf_v_glibc20:
-	b __floatdisf@local
-.Lfe15:
-	.size	__floatdisf_v_glibc20,.Lfe15-__floatdisf_v_glibc20
-#endif
-
-#endif
diff --git a/sysdeps/powerpc/powerpc32/lshift.S b/sysdeps/powerpc/powerpc32/lshift.S
deleted file mode 100644
index 78c151f101..0000000000
--- a/sysdeps/powerpc/powerpc32/lshift.S
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Shift a limb left, low level routine.
-   Copyright (C) 1996-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_lshift (mp_ptr wp, mp_srcptr up, mp_size_t usize,
-			 unsigned int cnt)  */
-
-EALIGN (__mpn_lshift, 3, 0)
-
-	mtctr	r5		# copy size into CTR
-	cmplwi	cr0,r5,16	# is size < 16
-	slwi	r0,r5,2
-	add	r7,r3,r0	# make r7 point at end of res
-	add	r4,r4,r0	# make r4 point at end of s1
-	lwzu	r11,-4(r4)	# load first s1 limb
-	subfic	r8,r6,32
-	srw	r3,r11,r8	# compute function return value
-	bge	cr0,L(big)	# branch if size >= 16
-
-	bdz	L(end1)
-
-L(0):	lwzu	r10,-4(r4)
-	slw	r9,r11,r6
-	srw	r12,r10,r8
-	or	r9,r9,r12
-	stwu	r9,-4(r7)
-	bdz	L(end2)
-	lwzu	r11,-4(r4)
-	slw	r9,r10,r6
-	srw	r12,r11,r8
-	or	r9,r9,r12
-	stwu	r9,-4(r7)
-	bdnz	L(0)
-
-L(end1):slw	r0,r11,r6
-	stw	r0,-4(r7)
-	blr
-
-
-/* Guaranteed not to succeed.  */
-L(boom): tweq    r0,r0
-
-/* We imitate a case statement, by using (yuk!) fixed-length code chunks,
-   of size 4*12 bytes.  We have to do this (or something) to make this PIC.  */
-L(big):	mflr    r9
-	cfi_register(lr,r9)
-	bltl-   cr0,L(boom)	# Never taken, only used to set LR.
-	slwi    r10,r6,4
-	mflr    r12
-	add     r10,r12,r10
-	slwi	r8,r6,5
-	add     r10,r8,r10
-	mtctr   r10
-	addi	r5,r5,-1
-	mtlr	r9
-	cfi_same_value (lr)
-	bctr
-
-L(end2):slw	r0,r10,r6
-	stw	r0,-4(r7)
-	blr
-
-#define DO_LSHIFT(n) \
-	mtctr	r5;							\
-L(n):	lwzu	r10,-4(r4);						\
-	slwi	r9,r11,n;						\
-	inslwi	r9,r10,n,32-n;					\
-	stwu	r9,-4(r7);						\
-	bdz-	L(end2);						\
-	lwzu	r11,-4(r4);						\
-	slwi	r9,r10,n;						\
-	inslwi	r9,r11,n,32-n;					\
-	stwu	r9,-4(r7);						\
-	bdnz	L(n);							\
-	b	L(end1)
-
-	DO_LSHIFT(1)
-	DO_LSHIFT(2)
-	DO_LSHIFT(3)
-	DO_LSHIFT(4)
-	DO_LSHIFT(5)
-	DO_LSHIFT(6)
-	DO_LSHIFT(7)
-	DO_LSHIFT(8)
-	DO_LSHIFT(9)
-	DO_LSHIFT(10)
-	DO_LSHIFT(11)
-	DO_LSHIFT(12)
-	DO_LSHIFT(13)
-	DO_LSHIFT(14)
-	DO_LSHIFT(15)
-	DO_LSHIFT(16)
-	DO_LSHIFT(17)
-	DO_LSHIFT(18)
-	DO_LSHIFT(19)
-	DO_LSHIFT(20)
-	DO_LSHIFT(21)
-	DO_LSHIFT(22)
-	DO_LSHIFT(23)
-	DO_LSHIFT(24)
-	DO_LSHIFT(25)
-	DO_LSHIFT(26)
-	DO_LSHIFT(27)
-	DO_LSHIFT(28)
-	DO_LSHIFT(29)
-	DO_LSHIFT(30)
-	DO_LSHIFT(31)
-
-END (__mpn_lshift)
diff --git a/sysdeps/powerpc/powerpc32/mcount.c b/sysdeps/powerpc/powerpc32/mcount.c
deleted file mode 100644
index d8c063222a..0000000000
--- a/sysdeps/powerpc/powerpc32/mcount.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <shlib-compat.h>
-
-#define __mcount_internal ___mcount_internal
-
-#include <gmon/mcount.c>
-
-#undef __mcount_internal
-
-/* __mcount_internal was added in glibc 2.15 with version GLIBC_PRIVATE,
-   but it should have been put in version GLIBC_2.15.  Mark the
-   GLIBC_PRIVATE version obsolete and add it to GLIBC_2.16 instead.  */
-versioned_symbol (libc, ___mcount_internal, __mcount_internal, GLIBC_2_16);
-
-#if SHLIB_COMPAT (libc, GLIBC_2_15, GLIBC_2_16)
-strong_alias (___mcount_internal, ___mcount_internal_private);
-symbol_version (___mcount_internal_private, __mcount_internal, GLIBC_PRIVATE);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/memset.S b/sysdeps/powerpc/powerpc32/memset.S
deleted file mode 100644
index 8913a02698..0000000000
--- a/sysdeps/powerpc/powerpc32/memset.S
+++ /dev/null
@@ -1,307 +0,0 @@
-/* Optimized memset implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in four sizes: byte (8 bits), word (32 bits),
-   32-byte blocks (256 bits) and __cache_line_size (128, 256, 1024 bits).
-   There is a special case for setting whole cache lines to 0, which
-   takes advantage of the dcbz instruction.  */
-
-	.section	".text"
-EALIGN (memset, 5, 1)
-
-#define rTMP	r0
-#define rRTN	r3	/* initial value of 1st argument */
-#define rMEMP0	r3	/* original value of 1st arg */
-#define rCHR	r4	/* char to set in each byte */
-#define rLEN	r5	/* length of region to set */
-#define rMEMP	r6	/* address at which we are storing */
-#define rALIGN	r7	/* number of bytes we are setting now (when aligning) */
-#define rMEMP2	r8
-
-#define rPOS32	r7	/* constant +32 for clearing with dcbz */
-#define rNEG64	r8	/* constant -64 for clearing with dcbz */
-#define rNEG32	r9	/* constant -32 for clearing with dcbz */
-
-#define rGOT	r9	/* Address of the Global Offset Table.  */
-#define rCLS	r8	/* Cache line size obtained from static.  */
-#define rCLM	r9	/* Cache line size mask to check for cache alignment.  */
-
-/* take care of case for size <= 4  */
-	cmplwi	cr1, rLEN, 4
-	andi.	rALIGN, rMEMP0, 3
-	mr	rMEMP, rMEMP0
-	ble-	cr1, L(small)
-/* align to word boundary  */
-	cmplwi	cr5, rLEN, 31
-	rlwimi	rCHR, rCHR, 8, 16, 23
-	beq+	L(aligned)	/* 8th instruction from .align */
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 4
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):	sth	rCHR, -2(rMEMP)	/* 16th instruction from .align */
-/* take care of case for size < 31 */
-L(aligned):
-	mtcrf	0x01, rLEN
-	rlwimi	rCHR, rCHR, 16, 0, 15
-	ble	cr5, L(medium)
-/* align to cache line boundary...  */
-	andi.	rALIGN, rMEMP, 0x1C
-	subfic	rALIGN, rALIGN, 0x20
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-	stw	rCHR, -4(rMEMP2)
-	stwu	rCHR, -8(rMEMP2)
-L(a1):	blt	cr1, L(a2)
-	stw	rCHR, -4(rMEMP2) /* 32nd instruction from .align */
-	stw	rCHR, -8(rMEMP2)
-	stw	rCHR, -12(rMEMP2)
-	stwu	rCHR, -16(rMEMP2)
-L(a2):	bf	29, L(caligned)
-	stw	rCHR, -4(rMEMP2)
-/* now aligned to a cache line.  */
-L(caligned):
-	cmplwi	cr1, rCHR, 0
-	clrrwi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN	/* 40th instruction from .align */
-
-/* Check if we can use the special case for clearing memory using dcbz.
-   This requires that we know the correct cache line size for this
-   processor.  Getting the __cache_line_size may require establishing GOT
-   addressability, so branch out of line to set this up.  */
-	beq	cr1, L(checklinesize)
-
-/* Store blocks of 32-bytes (256-bits) starting on a 32-byte boundary.
-   Can't assume that rCHR is zero or that the cache line size is either
-   32-bytes or even known.  */
-L(nondcbz):
-	srwi	rTMP, rALIGN, 5
-	mtctr	rTMP
-	beq	L(medium)	/* we may not actually get to do a full line */
-	clrlwi.	rLEN, rLEN, 27
-	add	rMEMP, rMEMP, rALIGN
-	li	rNEG64, -0x40
-	bdz	L(cloopdone)	/* 48th instruction from .align */
-
-/* We can't use dcbz here as we don't know the cache line size.  We can
-   use "data cache block touch for store", which is safe.  */
-L(c3):	dcbtst	rNEG64, rMEMP
-	stw	rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	stw	rCHR, -12(rMEMP)
-	stw	rCHR, -16(rMEMP)
-	nop			/* let 601 fetch last 4 instructions of loop */
-	stw	rCHR, -20(rMEMP)
-	stw	rCHR, -24(rMEMP) /* 56th instruction from .align */
-	nop			/* let 601 fetch first 8 instructions of loop */
-	stw	rCHR, -28(rMEMP)
-	stwu	rCHR, -32(rMEMP)
-	bdnz	L(c3)
-L(cloopdone):
-	stw	rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	stw	rCHR, -12(rMEMP)
-	stw	rCHR, -16(rMEMP) /* 64th instruction from .align */
-	stw	rCHR, -20(rMEMP)
-	cmplwi	cr1, rLEN, 16
-	stw	rCHR, -24(rMEMP)
-	stw	rCHR, -28(rMEMP)
-	stwu	rCHR, -32(rMEMP)
-	beqlr
-	add	rMEMP, rMEMP, rALIGN
-	b	L(medium_tail2)	/* 72nd instruction from .align */
-
-	.align	5
-	nop
-/* Clear cache lines of memory in 128-byte chunks.
-   This code is optimized for processors with 32-byte cache lines.
-   It is further optimized for the 601 processor, which requires
-   some care in how the code is aligned in the i-cache.  */
-L(zloopstart):
-	clrlwi	rLEN, rLEN, 27
-	mtcrf	0x02, rALIGN
-	srwi.	rTMP, rALIGN, 7
-	mtctr	rTMP
-	li	rPOS32, 0x20
-	li	rNEG64, -0x40
-	cmplwi	cr1, rLEN, 16	/* 8 */
-	bf	26, L(z0)
-	dcbz	0, rMEMP
-	addi	rMEMP, rMEMP, 0x20
-L(z0):	li	rNEG32, -0x20
-	bf	25, L(z1)
-	dcbz	0, rMEMP
-	dcbz	rPOS32, rMEMP
-	addi	rMEMP, rMEMP, 0x40 /* 16 */
-L(z1):	cmplwi	cr5, rLEN, 0
-	beq	L(medium)
-L(zloop):
-	dcbz	0, rMEMP
-	dcbz	rPOS32, rMEMP
-	addi	rMEMP, rMEMP, 0x80
-	dcbz	rNEG64, rMEMP
-	dcbz	rNEG32, rMEMP
-	bdnz	L(zloop)
-	beqlr	cr5
-	b	L(medium_tail2)
-
-	.align	5
-L(small):
-/* Memset of 4 bytes or less.  */
-	cmplwi	cr5, rLEN, 1
-	cmplwi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	nop
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	nop
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align	5
-L(medium):
-	cmplwi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt-	29, L(medium_29t)
-L(medium_29f):
-	bge-	cr1, L(medium_27t)
-	bflr-	28
-	stw	rCHR, -4(rMEMP)	/* 8th instruction from .align */
-	stw	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt-	cr1, L(medium_27f) /* 16th instruction from .align */
-L(medium_27t):
-	stw	rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	stw	rCHR, -12(rMEMP)
-	stwu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr-	28
-L(medium_28t):
-	stw	rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	blr
-
-L(checklinesize):
-#ifdef SHARED
-	mflr	rTMP
-/* If the remaining length is less the 32 bytes then don't bother getting
-   the cache line size.  */
-	beq	L(medium)
-/* Establishes GOT addressability so we can load __cache_line_size
-   from static. This value was set from the aux vector during startup.  */
-	SETUP_GOT_ACCESS(rGOT,got_label)
-	addis	rGOT,rGOT,__cache_line_size-got_label@ha
-	lwz	rCLS,__cache_line_size-got_label@l(rGOT)
-	mtlr	rTMP
-#else
-/* Load __cache_line_size from static. This value was set from the
-   aux vector during startup.  */
-	lis	rCLS,__cache_line_size@ha
-/* If the remaining length is less the 32 bytes then don't bother getting
-   the cache line size.  */
-	beq	L(medium)
-	lwz	rCLS,__cache_line_size@l(rCLS)
-#endif
-
-/* If the cache line size was not set then goto to L(nondcbz), which is
-   safe for any cache line size.  */
-	cmplwi	cr1,rCLS,0
-	beq	cr1,L(nondcbz)
-
-/* If the cache line size is 32 bytes then goto to L(zloopstart),
-   which is coded specifically for 32-byte lines (and 601).  */
-	cmplwi	cr1,rCLS,32
-	beq	cr1,L(zloopstart)
-
-/* Now we know the cache line size and it is not 32-bytes.  However
-   we may not yet be aligned to the cache line and may have a partial
-   line to fill.  Touch it 1st to fetch the cache line.  */
-	dcbtst	0,rMEMP
-
-	addi	rCLM,rCLS,-1
-L(getCacheAligned):
-	cmplwi	cr1,rLEN,32
-	and.	rTMP,rCLM,rMEMP
-	blt	cr1,L(handletail32)
-	beq	L(cacheAligned)
-/* We are not aligned to start of a cache line yet.  Store 32-byte
-   of data and test again.  */
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	stw	rCHR,-32(rMEMP)
-	stw	rCHR,-28(rMEMP)
-	stw	rCHR,-24(rMEMP)
-	stw	rCHR,-20(rMEMP)
-	stw	rCHR,-16(rMEMP)
-	stw	rCHR,-12(rMEMP)
-	stw	rCHR,-8(rMEMP)
-	stw	rCHR,-4(rMEMP)
-	b	L(getCacheAligned)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-L(cacheAligned):
-	cmplw	cr1,rLEN,rCLS
-	blt	cr1,L(handletail32)
-	dcbz	0,rMEMP
-	subf	rLEN,rCLS,rLEN
-	add	rMEMP,rMEMP,rCLS
-	b	L(cacheAligned)
-
-/* We are here because; the cache line size was set, it was not
-   32-bytes, and the remainder (rLEN) is now less than the actual cache
-   line size.  Set up the preconditions for L(nondcbz) and go there to
-   store the remaining bytes.  */
-L(handletail32):
-	clrrwi.	rALIGN, rLEN, 5
-	b	L(nondcbz)
-
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/mul_1.S b/sysdeps/powerpc/powerpc32/mul_1.S
deleted file mode 100644
index c3093e2bc6..0000000000
--- a/sysdeps/powerpc/powerpc32/mul_1.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Multiply a limb vector by a limb, for PowerPC.
-   Copyright (C) 1993-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_mul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
-                        mp_size_t s1_size, mp_limb_t s2_limb)
-   Calculate s1*s2 and put result in res_ptr; return carry.  */
-
-ENTRY (__mpn_mul_1)
-	mtctr	r5
-
-	lwz	r0,0(r4)
-	mullw	r7,r0,r6
-	mulhwu	r10,r0,r6
-	addi	r3,r3,-4		# adjust res_ptr
-	addic	r5,r5,0			# clear cy with dummy insn
-	bdz	L(1)
-
-L(0):	lwzu	r0,4(r4)
-	stwu	r7,4(r3)
-	mullw	r8,r0,r6
-	adde	r7,r8,r10
-	mulhwu	r10,r0,r6
-	bdnz	L(0)
-
-L(1):	stw	r7,4(r3)
-	addze	r3,r10
-	blr
-END (__mpn_mul_1)
diff --git a/sysdeps/powerpc/powerpc32/power4/Implies b/sysdeps/powerpc/powerpc32/power4/Implies
deleted file mode 100644
index a372141bb7..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/power4/fpu
-powerpc/power4
diff --git a/sysdeps/powerpc/powerpc32/power4/Makefile b/sysdeps/powerpc/powerpc32/power4/Makefile
deleted file mode 100644
index ba06adb5d0..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# Makefile fragment for POWER4/5/5+.
-
-ifeq ($(subdir),string)
-CFLAGS-wordcopy.c += --param max-variable-expansions-in-unroller=2 --param max-unroll-times=2 -funroll-loops -fpeel-loops
-CFLAGS-memmove.c += --param max-variable-expansions-in-unroller=2 --param max-unroll-times=2 -funroll-loops -fpeel-loops
-endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
deleted file mode 100644
index 5afbade15f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-ifeq ($(subdir),math)
-sysdep_routines += s_isnan-power7 s_isnan-power6 s_isnan-power5 s_isnan-ppc32 \
-		   s_isnanf-power6 s_isnanf-power5 s_isinf-power7 \
-		   s_isinf-ppc32 s_isinff-ppc32 s_finite-power7 \
-		   s_finite-ppc32 s_finitef-ppc32 s_copysign-power6 \
-		   s_copysign-ppc32 s_modf-power5+ s_modf-ppc32 \
-		   s_modff-power5+ s_modff-ppc32
-
-libm-sysdep_routines += s_llrintf-power6 s_llrintf-ppc32 s_llrint-power6 \
-			s_llrint-ppc32 s_llround-power6 s_llround-power5+ \
-			s_llround-ppc32 s_isnan-power7 \
-			w_sqrt_compat-power5 w_sqrt_compat-ppc32 \
-			w_sqrtf_compat-power5 w_sqrtf_compat-ppc32 \
-			s_isnan-power6 s_isnan-power5 s_isnan-ppc32 \
-			s_isnanf-power6 s_isnanf-power5 s_isinf-power7 \
-			s_isinf-ppc32 s_isinff-ppc32 s_finite-power7 \
-			s_finite-ppc32 s_finitef-ppc32 s_ceil-power5+ \
-			s_ceil-ppc32 s_ceilf-power5+ s_ceilf-ppc32 \
-			s_floor-power5+ s_floor-ppc32 s_floorf-power5+ \
-			s_floorf-ppc32 s_round-power5+ s_round-ppc32 \
-			s_roundf-power5+ s_roundf-ppc32 s_trunc-power5+ \
-			s_trunc-ppc32 s_truncf-power5+ s_truncf-ppc32 \
-			s_copysign-power6 s_copysign-ppc32 s_lround-power6x \
-			s_lround-power5+ s_lround-ppc32 s_lrint-power6x \
-			s_lrint-ppc32 s_modf-power5+ s_modf-ppc32 \
-			s_modff-power5+ s_modff-ppc32 s_logbl-power7 \
-			s_logbl-ppc32 s_logb-power7 s_logb-ppc32 \
-			s_logbf-power7 s_logbf-ppc32 e_hypot-power7 \
-			e_hypot-ppc32 e_hypotf-power7 e_hypotf-ppc32
-
-CFLAGS-s_modf-power5+.c = -mcpu=power5+
-CFLAGS-s_modff-power5+.c = -mcpu=power5+
-CFLAGS-s_logbl-power7.c = -mcpu=power7
-CFLAGS-s_logb-power7.c = -mcpu=power7
-CFLAGS-s_logbf-power7.c = -mcpu=power7
-CFLAGS-e_hypot-power7.c = -mcpu=power7
-CFLAGS-e_hypotf-power7.c = -mcpu=power7
-
-# These files quiet sNaNs in a way that is optimized away without
-# -fsignaling-nans.
-CFLAGS-s_modf-ppc32.c += -fsignaling-nans
-CFLAGS-s_modff-ppc32.c += -fsignaling-nans
-endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
deleted file mode 100644
index d62b7c4f7b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee_hypot() POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypot __ieee754_hypot_power7
-
-#include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
deleted file mode 100644
index 25984b724c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee_hypot() PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypot __ieee754_hypot_ppc32
-
-#include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
deleted file mode 100644
index 5b8a06b4d1..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ieee754_hypot.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ieee754_hypot) __ieee754_hypot_ppc32 attribute_hidden;
-extern __typeof (__ieee754_hypot) __ieee754_hypot_power7 attribute_hidden;
-
-libc_ifunc (__ieee754_hypot,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __ieee754_hypot_power7
-            : __ieee754_hypot_ppc32);
-
-strong_alias (__ieee754_hypot, __hypot_finite)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
deleted file mode 100644
index f52bc635d1..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee754_hypot POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypotf __ieee754_hypotf_power7
-
-#include <sysdeps/powerpc/fpu/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
deleted file mode 100644
index d9f86163c9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee_hypot() PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypotf __ieee754_hypotf_ppc32
-
-#include <sysdeps/ieee754/flt-32/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
deleted file mode 100644
index d1fc0ce532..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ieee754_hypotf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ieee754_hypotf) __ieee754_hypotf_ppc32 attribute_hidden;
-extern __typeof (__ieee754_hypotf) __ieee754_hypotf_power7 attribute_hidden;
-
-libc_ifunc (__ieee754_hypotf,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __ieee754_hypotf_power7
-            : __ieee754_hypotf_ppc32);
-
-strong_alias (__ieee754_hypotf, __hypotf_finite)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-power5+.S
deleted file mode 100644
index 670d6bbffb..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-power5+.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* ceil function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __ceil __ceil_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-ppc32.S
deleted file mode 100644
index 77d43c5de7..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* ceil function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __ceil __ceil_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_ceil.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c
deleted file mode 100644
index 4e3d980ce6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceil.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of ceil.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ceil) __ceil_ppc32 attribute_hidden;
-extern __typeof (__ceil) __ceil_power5plus attribute_hidden;
-
-libc_ifunc (__ceil,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __ceil_power5plus
-            : __ceil_ppc32);
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ceil, __ceill)
-weak_alias (__ceil, ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-power5+.S
deleted file mode 100644
index 089261460e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* ceilf function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __ceilf __ceilf_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-ppc32.S
deleted file mode 100644
index c783919f3a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf-ppc32.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* ceilf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __ceilf __ceilf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_ceilf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c
deleted file mode 100644
index 9674001caa..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ceilf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ceilf) __ceilf_ppc32 attribute_hidden;
-extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden;
-
-libc_ifunc (__ceilf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __ceilf_power5plus
-            : __ceilf_ppc32);
-
-weak_alias (__ceilf, ceilf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-power6.S
deleted file mode 100644
index 1f58420763..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-power6.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* copysign().  PowerPC32/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __copysign __copysign_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-ppc32.S
deleted file mode 100644
index 5d46f0379a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign-ppc32.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/* copysign().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a, b, c, d)
-
-#define __copysign __copysign_ppc32
-#undef hidden_def
-#define hidden_def(name)
-  strong_alias (__copysign_ppc32, __GI___copysign)
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_copysign.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c
deleted file mode 100644
index bddc1ab3c5..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysign.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Multiple versions of copysign.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Redefine copysign so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias below.  */
-#undef __copysign
-#define __copysign __redirect_copysign
-#include <math.h>
-#include <math_ldbl_opt.h>
-#undef __copysign
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__redirect_copysign) __copysign_ppc32 attribute_hidden;
-extern __typeof (__redirect_copysign) __copysign_power6 attribute_hidden;
-
-extern __typeof (__redirect_copysign) __libm_copysign;
-libc_ifunc (__libm_copysign,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __copysign_power6
-            : __copysign_ppc32);
-
-strong_alias (__libm_copysign, __copysign)
-weak_alias (__copysign, copysign)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c
deleted file mode 100644
index 7709e08968..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of copysignf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-/* It's safe to use double-precision implementation for single-precision.  */
-extern __typeof (__copysignf) __copysign_ppc32 attribute_hidden;
-extern __typeof (__copysignf) __copysign_power6 attribute_hidden;
-
-libc_ifunc (__copysignf,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __copysign_power6
-            : __copysign_ppc32);
-
-weak_alias (__copysignf, copysignf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S
deleted file mode 100644
index eb23f73e6e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* finite().  PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __finite __finite_power7
-
-#include <sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c
deleted file mode 100644
index 495dd36d0b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* finite().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define FINITE __finite_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finite_ppc32, __GI___finite, __finite_ppc32);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_finite.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c
deleted file mode 100644
index d3d0755bc0..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Multiple versions of finite.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finite __redirect___finite
-#define __finitef __redirect___finitef
-#define __finitel __redirect___finitel
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finite) __finite_ppc32 attribute_hidden;
-extern __typeof (__finite) __finite_power7 attribute_hidden;
-#undef __finite
-#undef __finitef
-#undef __finitel
-
-libc_ifunc_redirected (__redirect___finite,  __finite,
-		       (hwcap & PPC_FEATURE_ARCH_2_06)
-		       ? __finite_power7
-		       : __finite_ppc32);
-
-weak_alias (__finite, finite)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0);
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c
deleted file mode 100644
index 4a52949066..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* finitef().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define FINITEF __finitef_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finitef_ppc32, __GI___finitef, __finitef_ppc32);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_finitef.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c
deleted file mode 100644
index fa214f37ae..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Multiple versions of finitef.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finitef __redirect___finitef
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finitef) __finitef_ppc32 attribute_hidden;
-/* The power7 finite(double) works for float.  */
-extern __typeof (__finitef) __finite_power7 attribute_hidden;
-#undef __finitef
-
-libc_ifunc_redirected  (__redirect___finitef, __finitef,
-			(hwcap & PPC_FEATURE_ARCH_2_06)
-			? __finite_power7
-			: __finitef_ppc32);
-
-weak_alias (__finitef, finitef)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S
deleted file mode 100644
index dfecd1c59e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* floor function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __floor __floor_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S
deleted file mode 100644
index 3af604ca25..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* floor function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __floor __floor_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
deleted file mode 100644
index 0da528c922..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of floor.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__floor) __floor_ppc32 attribute_hidden;
-extern __typeof (__floor) __floor_power5plus attribute_hidden;
-
-libc_ifunc (__floor,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __floor_power5plus
-            : __floor_ppc32);
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__floor, __floorl)
-weak_alias (__floor, floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S
deleted file mode 100644
index fd2fa331bb..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* floorf function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __floorf __floorf_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S
deleted file mode 100644
index 55bee8652b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* floorf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __floorf __floorf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_floorf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
deleted file mode 100644
index 56375097f7..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of floorf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__floorf) __floorf_ppc32 attribute_hidden;
-extern __typeof (__floorf) __floorf_power5plus attribute_hidden;
-
-libc_ifunc (__floorf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __floorf_power5plus
-            : __floorf_ppc32);
-
-weak_alias (__floorf, floorf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S
deleted file mode 100644
index f7c7510649..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isinf().  PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __isinf __isinf_power7
-
-#include <sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c
deleted file mode 100644
index 0d1cb75cf3..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isinf().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __isinf __isinf_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__isinf_ppc32, __GI___isinf, __isinf_ppc32);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_isinf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c
deleted file mode 100644
index c7d7568ce0..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Multiple versions of isinf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isinf __redirect___isinf
-#define __isinff __redirect___isinff
-#define __isinfl __redirect___isinfl
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isinf) __isinf_ppc32 attribute_hidden;
-extern __typeof (__isinf) __isinf_power7 attribute_hidden;
-#undef __isinf
-#undef __isinff
-#undef __isinfl
-
-libc_ifunc_redirected (__redirect___isinf,  __isinf,
-		       (hwcap & PPC_FEATURE_ARCH_2_06)
-		       ? __isinf_power7
-		       : __isinf_ppc32);
-
-weak_alias (__isinf, isinf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
-weak_alias (__isinf, isinfl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
-compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c
deleted file mode 100644
index 25fd22d0c3..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* isinff().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __isinff __isinff_ppc32
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__isinff_ppc32, __GI___isinff, __isinff_ppc32);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_isinff.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c
deleted file mode 100644
index fd6e9983f6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Multiple versions of isinf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isinff __redirect___isinff
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isinff) __isinff_ppc32 attribute_hidden;
-/* The power7 isinf(double) works for float.  */
-extern __typeof (__isinff) __isinf_power7 attribute_hidden;
-#undef __isinff
-
-libc_ifunc_redirected (__redirect___isinff,  __isinff,
-		       (hwcap & PPC_FEATURE_ARCH_2_06)
-		       ? __isinf_power7
-		       : __isinff_ppc32);
-
-weak_alias (__isinff, isinff)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power5.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power5.S
deleted file mode 100644
index 36d6709ab0..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power5.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC32/POWER5 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power5
-
-#include <sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power6.S
deleted file mode 100644
index 0ee970330c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power6.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC32/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power7.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power7.S
deleted file mode 100644
index 24d5a21d73..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power7
-
-#include <sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-ppc32.S
deleted file mode 100644
index 175229edd6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan-ppc32.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* isnan().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef compat_symbol
-#define compat_symbol(a, b, c, d)
-
-#define __isnan __isnan_ppc32
-#undef hidden_def
-#define hidden_def(name)
-  strong_alias (__isnan_ppc32, __GI___isnan)
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan.c
deleted file mode 100644
index 79447af535..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnan.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Multiple versions of isnan.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isnan __redirect___isnan
-#define __isnanf __redirect___isnanf
-#define __isnanl __redirect___isnanl
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isnan) __isnan_ppc32 attribute_hidden;
-extern __typeof (__isnan) __isnan_power5 attribute_hidden;
-extern __typeof (__isnan) __isnan_power6 attribute_hidden;
-extern __typeof (__isnan) __isnan_power7 attribute_hidden;
-#undef __isnan
-#undef __isnanf
-#undef __isnanl
-
-libc_ifunc_redirected (__redirect___isnan, __isnan,
-		       (hwcap & PPC_FEATURE_ARCH_2_06)
-		       ? __isnan_power7
-		       : (hwcap & PPC_FEATURE_ARCH_2_05)
-			 ? __isnan_power6
-			 : (hwcap & PPC_FEATURE_POWER5)
-			   ? __isnan_power5
-			   : __isnan_ppc32);
-
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power5.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power5.S
deleted file mode 100644
index 4e57289794..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power5.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* isnanf().  PowerPC32/POWER5 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __isnanf __isnanf_power5
-
-#include <sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power6.S
deleted file mode 100644
index 40687b5f43..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf-power6.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* isnanf().  PowerPC32/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __isnanf __isnanf_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf.c
deleted file mode 100644
index 12bdcffcec..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isnanf.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of isnanf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-/* Both ppc32 and power7 isnan(double) work for float.  */
-extern __typeof (__isnanf) __isnan_ppc32 attribute_hidden;
-extern __typeof (__isnanf) __isnanf_power5 attribute_hidden;
-extern __typeof (__isnanf) __isnanf_power6 attribute_hidden;
-extern __typeof (__isnanf) __isnan_power7 attribute_hidden;
-
-libc_ifunc_hidden (__isnanf, __isnanf,
-		   (hwcap & PPC_FEATURE_ARCH_2_06)
-		   ? __isnan_power7
-		   : (hwcap & PPC_FEATURE_ARCH_2_05)
-		     ? __isnanf_power6
-		     : (hwcap & PPC_FEATURE_POWER5)
-		       ? __isnanf_power5
-		       : __isnan_ppc32);
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-power6.S
deleted file mode 100644
index 07c0f94a2f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-power6.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Round double to long int.  PowerPC32/Power6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llrint __llrint_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-ppc32.S
deleted file mode 100644
index 390cd9a8bc..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* llrint function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llrint __llrint_ppc32
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c
deleted file mode 100644
index 88357ebdd9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrint.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of llrint.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__llrint) __llrint_ppc32 attribute_hidden;
-extern __typeof (__llrint) __llrint_power6 attribute_hidden;
-
-libc_ifunc (__llrint,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __llrint_power6
-            : __llrint_ppc32);
-
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.S
deleted file mode 100644
index 8ebbefd3dd..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Round float to long int.  PowerPC32/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __llrintf __llrintf_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.S
deleted file mode 100644
index aa66e1ed9d..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* llrintf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __llrintf __llrintf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c
deleted file mode 100644
index f513e61944..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Multiple versions of llrintf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__llrintf) __llrintf_ppc32 attribute_hidden;
-extern __typeof (__llrintf) __llrintf_power6 attribute_hidden;
-
-libc_ifunc (__llrintf,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __llrintf_power6
-            : __llrintf_ppc32);
-
-weak_alias (__llrintf, llrintf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power5+.S
deleted file mode 100644
index 16e3124a3c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power5+.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lround function.  PowerPC32/POWER5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llround __llround_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power6.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power6.S
deleted file mode 100644
index 508c6b7a29..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-power6.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lround function.  PowerPC32/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llround __llround_power6
-
-#include <sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-ppc32.S
deleted file mode 100644
index 4ecd2a266f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* llround function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llround __llround_ppc32
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c
deleted file mode 100644
index caf8953c81..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llround.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Multiple versions of llround.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__llround) __llround_ppc32 attribute_hidden;
-extern __typeof (__llround) __llround_power5plus attribute_hidden;
-extern __typeof (__llround) __llround_power6 attribute_hidden;
-
-libc_ifunc (__llround,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __llround_power6 :
-	      (hwcap & PPC_FEATURE_POWER5_PLUS)
-	      ? __llround_power5plus
-            : __llround_ppc32);
-
-weak_alias (__llround, llround)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c
deleted file mode 100644
index 1b7e45653a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Multiple versions of llroundf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-/* It's safe to use double-precision implementation for single-precision.  */
-extern __typeof (__llroundf) __llround_ppc32 attribute_hidden;
-extern __typeof (__llroundf) __llround_power5plus attribute_hidden;
-extern __typeof (__llroundf) __llround_power6 attribute_hidden;
-
-libc_ifunc (__llroundf,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __llround_power6 :
-	      (hwcap & PPC_FEATURE_POWER5_PLUS)
-	      ? __llround_power5plus
-            : __llround_ppc32);
-
-weak_alias (__llroundf, llroundf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c
deleted file mode 100644
index 20fd02a5ee..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* logb(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __logb __logb_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-ppc32.c
deleted file mode 100644
index 3920579dbc..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-ppc32.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* logb(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __logb __logb_ppc32
-
-#include <sysdeps/ieee754/dbl-64/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c
deleted file mode 100644
index fddd1ecbec..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of logb.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logb) __logb_ppc32 attribute_hidden;
-extern __typeof (__logb) __logb_power7 attribute_hidden;
-
-libc_ifunc (__logb,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logb_power7
-            : __logb_ppc32);
-
-weak_alias (__logb, logb)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, logb, logbl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c
deleted file mode 100644
index 6e064bedbf..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* logbf(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __logbf __logbf_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-ppc32.c
deleted file mode 100644
index ca9865d784..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* logbf().  PowerPC32 default implementation.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __logbf __logbf_ppc32
-
-#include <sysdeps/ieee754/flt-32/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c
deleted file mode 100644
index 3b9de174bd..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of logbf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logbf) __logbf_ppc32 attribute_hidden;
-extern __typeof (__logbf) __logbf_power7 attribute_hidden;
-
-libc_ifunc (__logbf,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logbf_power7
-            : __logbf_ppc32);
-
-weak_alias (__logbf, logbf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c
deleted file mode 100644
index 547664dd4b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* logbl(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __logbl __logbl_power7
-
-#include <sysdeps/powerpc/power7/fpu/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-ppc32.c
deleted file mode 100644
index c4361226dd..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-ppc32.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* logbl(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __logbl __logbl_ppc32
-
-#include <sysdeps/ieee754/ldbl-128ibm/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl.c
deleted file mode 100644
index 167e9535cb..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of logbl.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logbl) __logbl_ppc32 attribute_hidden;
-extern __typeof (__logbl) __logbl_power7 attribute_hidden;
-
-libc_ifunc (__logbl,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logbl_power7
-            : __logbl_ppc32);
-
-long_double_symbol (libm, __logbl, logbl);
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-power6x.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-power6x.S
deleted file mode 100644
index 3be812e5dc..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-power6x.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Round double to long int.  POWER6x PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __lrint __lrint_power6x
-
-#include <sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-ppc32.S
deleted file mode 100644
index ee5725db03..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Round double to long int.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __lrint __lrint_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_lrint.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c
deleted file mode 100644
index ec7c991464..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrint.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of lrint.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__lrint) __lrint_ppc32 attribute_hidden;
-extern __typeof (__lrint) __lrint_power6x attribute_hidden;
-
-libc_ifunc (__lrint,
-	    (hwcap & PPC_FEATURE_POWER6_EXT) ?
-	      __lrint_power6x
-            : __lrint_ppc32);
-
-weak_alias (__lrint, lrint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lrint, lrintl)
-strong_alias (__lrint, __lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c
deleted file mode 100644
index 4a7fa4bcfa..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Multiple versions of lrintf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-/* It's safe to use double-precision implementation for single-precision.  */
-extern __typeof (__lrintf) __lrint_ppc32 attribute_hidden;
-extern __typeof (__lrintf) __lrint_power6x attribute_hidden;
-
-libc_ifunc (__lrintf,
-	    (hwcap & PPC_FEATURE_POWER6_EXT) ?
-	      __lrint_power6x
-            : __lrint_ppc32);
-
-weak_alias (__lrintf, lrintf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power5+.S
deleted file mode 100644
index 7aa2364183..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power5+.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* lround function.  POWER5+, PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __lround __lround_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power6x.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power6x.S
deleted file mode 100644
index a9d54d560d..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-power6x.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* lround function.  POWER6x, PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __lround __lround_power6x
-
-#include <sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-ppc32.S
deleted file mode 100644
index 78a931238a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lround function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __lround __lround_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_lround.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c
deleted file mode 100644
index fdc0c3dd8d..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lround.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Multiple versions of lround.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__lround) __lround_ppc32 attribute_hidden;
-extern __typeof (__lround) __lround_power5plus attribute_hidden;
-extern __typeof (__lround) __lround_power6x attribute_hidden;
-
-libc_ifunc (__lround,
-	    (hwcap & PPC_FEATURE_POWER6_EXT) ?
-	      __lround_power6x
-		: (hwcap & PPC_FEATURE_POWER5_PLUS) ?
-		  __lround_power5plus
-            : __lround_ppc32);
-
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c
deleted file mode 100644
index ff61dd6ca7..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Multiple versions of lroundf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-/* It's safe to use double-precision implementation for single-precision.  */
-extern __typeof (__lroundf) __lround_ppc32 attribute_hidden;
-extern __typeof (__lroundf) __lround_power5plus attribute_hidden;
-extern __typeof (__lroundf) __lround_power6x attribute_hidden;
-
-libc_ifunc (__lroundf,
-	    (hwcap & PPC_FEATURE_POWER6_EXT) ?
-	      __lround_power6x
-		: (hwcap & PPC_FEATURE_POWER5_PLUS) ?
-		  __lround_power5plus
-            : __lround_ppc32);
-
-weak_alias (__lroundf, lroundf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c
deleted file mode 100644
index 955b265045..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* PowerPC/POWER5+ implementation for modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __modf __modf_power5plus
-
-#include <sysdeps/powerpc/power5+/fpu/s_modf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-ppc32.c
deleted file mode 100644
index 6561fdf8e1..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-ppc32.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* PowerPC32 default implementation for modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-
-#define __modf __modf_ppc32
-
-#include <sysdeps/ieee754/dbl-64/s_modf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c
deleted file mode 100644
index 537592ab16..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__modf) __modf_ppc32 attribute_hidden;
-extern __typeof (__modf) __modf_power5plus attribute_hidden;
-
-libc_ifunc (__modf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __modf_power5plus
-            : __modf_ppc32);
-
-weak_alias (__modf, modf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __modf, modfl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c
deleted file mode 100644
index f5a12a282a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* PowerPC/POWER5+ implementation for modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __modff __modff_power5plus
-
-#include <sysdeps/powerpc/power5+/fpu/s_modff.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-ppc32.c
deleted file mode 100644
index 9b9fa971bf..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* PowerPC32 default implementation for modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __modff __modff_ppc32
-
-#include <sysdeps/ieee754/flt-32/s_modff.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c
deleted file mode 100644
index 7ae682d124..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Multiple versions of modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-extern __typeof (__modff) __modff_ppc32 attribute_hidden;
-extern __typeof (__modff) __modff_power5plus attribute_hidden;
-
-libc_ifunc (__modff,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __modff_power5plus
-            : __modff_ppc32);
-
-weak_alias (__modff, modff)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.S
deleted file mode 100644
index 02ab78b33c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* round function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __round __round_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.S
deleted file mode 100644
index b9e5bb6170..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* round function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __round __round_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_round.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
deleted file mode 100644
index 46102862ac..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of round.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__round) __round_ppc32 attribute_hidden;
-extern __typeof (__round) __round_power5plus attribute_hidden;
-
-libc_ifunc (__round,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __round_power5plus
-            : __round_ppc32);
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__round, __roundl)
-weak_alias (__round, roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.S
deleted file mode 100644
index 442af4c1ea..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* roundf function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __roundf __roundf_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.S
deleted file mode 100644
index abe74e2e1a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* roundf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __roundf __roundf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_roundf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
deleted file mode 100644
index 0a2e6d53cc..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of roundf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__roundf) __roundf_ppc32 attribute_hidden;
-extern __typeof (__roundf) __roundf_power5plus attribute_hidden;
-
-libc_ifunc (__roundf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __roundf_power5plus
-            : __roundf_ppc32);
-
-weak_alias (__roundf, roundf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-power5+.S
deleted file mode 100644
index 129570ca34..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-power5+.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* trunc function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __trunc __trunc_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-ppc32.S
deleted file mode 100644
index 5e74248a9f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* trunc function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __trunc __trunc_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_trunc.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c
deleted file mode 100644
index 110e701218..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_trunc.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of trunc.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__trunc) __trunc_ppc32 attribute_hidden;
-extern __typeof (__trunc) __trunc_power5plus attribute_hidden;
-
-libc_ifunc (__trunc,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __trunc_power5plus
-            : __trunc_ppc32);
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__trunc, __truncl)
-weak_alias (__trunc, truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-power5+.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-power5+.S
deleted file mode 100644
index 57ab878876..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* truncf function.  PowerPC32/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#define __truncf __truncf_power5plus
-
-#include <sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-ppc32.S
deleted file mode 100644
index 4dd0a6021a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf-ppc32.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* truncf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __truncf __truncf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/fpu/s_truncf.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c
deleted file mode 100644
index ef6e97d000..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of truncf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__truncf) __truncf_ppc32 attribute_hidden;
-extern __typeof (__truncf) __truncf_power5plus attribute_hidden;
-
-libc_ifunc (__truncf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __truncf_power5plus
-            : __truncf_ppc32);
-
-weak_alias (__truncf, truncf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-power5.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-power5.S
deleted file mode 100644
index 7c5a504177..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-power5.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* sqrt function.  PowerPC32/POWER5 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __sqrt __sqrt_power5
-
-#include <sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt_compat.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-ppc32.S
deleted file mode 100644
index 534e934ac9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat-ppc32.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* sqrt function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __sqrt __sqrt_ppc32
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt_compat.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat.c
deleted file mode 100644
index 1e1892034e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrt_compat.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of sqrt.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__sqrt) __sqrt_ppc32 attribute_hidden;
-extern __typeof (__sqrt) __sqrt_power5 attribute_hidden;
-
-libc_ifunc (__sqrt,
-	    (hwcap & PPC_FEATURE_POWER5)
-	    ? __sqrt_power5
-	    : __sqrt_ppc32);
-
-weak_alias (__sqrt, sqrt)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__sqrt, __sqrtl)
-weak_alias (__sqrt, sqrtl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-power5.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-power5.S
deleted file mode 100644
index eacc042850..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-power5.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* sqrtf function.  PowerPC32/POWER5 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __sqrtf __sqrtf_power5
-
-#include <sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf_compat.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-ppc32.S b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-ppc32.S
deleted file mode 100644
index 72191fc9a5..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat-ppc32.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* sqrtf function.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __sqrtf __sqrtf_ppc32
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf_compat.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat.c
deleted file mode 100644
index bbab4d4f93..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/w_sqrtf_compat.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of sqrtf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__sqrtf) __sqrtf_ppc32 attribute_hidden;
-extern __typeof (__sqrtf) __sqrtf_power5 attribute_hidden;
-
-libc_ifunc (__sqrtf,
-	    (hwcap & PPC_FEATURE_POWER5)
-	    ? __sqrtf_power5
-	    : __sqrtf_ppc32);
-
-weak_alias (__sqrtf, sqrtf)
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
deleted file mode 100644
index d16dbb8406..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Round double to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long long int[r3, r4] __llrint (double x[fp1])  */
-ENTRY (__llrint)
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llrint)
-
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
deleted file mode 100644
index 9c3dd77863..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Round float to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* long long int[r3, r4] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llrintf)
-
-weak_alias (__llrintf, llrintf)
-
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
deleted file mode 100644
index 24bd533748..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S
+++ /dev/null
@@ -1,106 +0,0 @@
-/* llround function.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
- .section .rodata.cst8,"aM",@progbits,8
- .align 3
- .LC0:	.long (52+127)<<23 /* 0x1p+52  */
-	.long (-1+127)<<23 /* 0.5  */
-
-	.section	".text"
-
-/* long [r3] lround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "round to Nearest" mode. Instead we set
-   "round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.
-
-   It is necessary to detect when x is (+-)0x1.fffffffffffffp-2
-   because adding +-0.5 in this case will cause an erroneous shift,
-   carry and round.  We simply return 0 if 0.5 > x > -0.5.  Likewise
-   if x is and odd number between +-(2^52 and 2^53-1) a shift and
-   carry will erroneously round if biased with +-0.5.  Therefore if x
-   is greater/less than +-2^52 we don't need to bias the number with
-   +-0.5.  */
-
-ENTRY (__llround)
-	stwu    r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	addi	r9,r9,.LC0-got_label@l
-	mtlr	r11
-	cfi_same_value (lr)
-	lfs	fp9,0(r9)
-	lfs	fp10,4(r9)
-#else
-	lis r9,.LC0@ha
-	lfs fp9,.LC0@l(r9)	/* Load 2^52 into fpr9.  */
-	lfs fp10,.LC0@l+4(r9)	/* Load 0.5 into fpr10.  */
-#endif
-	fabs	fp2,fp1		/* Get the absolute value of x.  */
-	fsub	fp12,fp10,fp10	/* Compute 0.0 into fpr12.  */
-	fcmpu	cr6,fp2,fp10	/* if |x| < 0.5  */
-	fcmpu	cr7,fp2,fp9	/* if |x| >= 2^52  */
-	fcmpu	cr1,fp1,fp12	/* x is negative? x < 0.0  */
-	blt-	cr6,.Lretzero	/* 0.5 > x < -0.5 so just return 0.  */
-	bge-	cr7,.Lnobias	/* 2^52 > x < -2^52 just convert with no bias.  */
-	fadd	fp3,fp2,fp10	/* |x|+=0.5 bias to prepare to round.  */
-	bge	cr1,.Lconvert	/* x is positive so don't negate x.  */
-	fnabs	fp3,fp3		/* -(|x|+=0.5)  */
-.Lconvert:
-	fctidz	fp4,fp3		/* Convert to Integer double word round toward 0.  */
-	stfd	fp4,8(r1)
-	nop
-	nop
-	nop
-	lwz	r3,8+HIWORD(r1)	/* Load return as integer.  */
-	lwz	r4,8+LOWORD(r1)
-.Lout:
-	addi	r1,r1,16
-	blr
-.Lretzero:			/* 0.5 > x > -0.5  */
-	li	r3,0		/* return 0.  */
-	li	r4,0
-	b	.Lout
-.Lnobias:
-	fmr	fp3,fp1
-	b	.Lconvert
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S
deleted file mode 100644
index 72d6181541..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S */
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt_compat.S b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt_compat.S
deleted file mode 100644
index bb896a33cd..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt_compat.S
+++ /dev/null
@@ -1,108 +0,0 @@
-/* sqrt function.  PowerPC32 version.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* double [fp1] sqrt (double x [fp1])
-   Power4 (ISA V2.0) and above implement sqrt in hardware (not optional).
-   The fsqrt instruction generates the correct value for all inputs and
-   sets the appropriate floating point exceptions.  Extended checking is
-   only needed to set errno (via __kernel_standard) if the input value
-   is negative.
-
-   The fsqrt will set FPCC and FU (Floating Point Unordered or NaN
-   to indicated that the input value was negative or NaN. Use Move to
-   Condition Register from FPSCR to copy the FPCC field to cr1.  The
-   branch on summary overflow transfers control to w_sqrt to process
-   any error conditions. Otherwise we can return the result directly.
-
-   This part of the function is a leaf routine,  so no need to stack a
-   frame or execute prologue/epilogue code. This means it is safe to
-   transfer directly to w_sqrt as long as the input value (f1) is
-   preserved. Putting the sqrt result into f2 (double parameter 2)
-   allows passing both the input value and sqrt result into the extended
-   wrapper so there is no need to recompute.
-
-   This tactic avoids the overhead of stacking a frame for the normal
-   (non-error) case.  Until gcc supports prologue shrink-wrapping
-   this is the best we can do.  */
-
-	.section	".text"
-	.machine power4
-EALIGN (__sqrt, 5, 0)
-	fsqrt	fp2,fp1
-	mcrfs	cr1,4
-	bso-	cr1,.Lw_sqrt
-	fmr	fp1,fp2
-	blr
-	.align	4
-.Lw_sqrt:
-	mflr	r0
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset(16)
-	fmr	fp12,fp2
-	stw	r0,20(r1)
-	stw	r30,8(r1)
-	cfi_offset(lr,20-16)
-	cfi_offset(r30,8-16)
-#ifdef SHARED
-	SETUP_GOT_ACCESS(r30,got_label)
-	addis	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
-	lwz	r9,_LIB_VERSION@got(30)
-	lwz	r0,0(r9)
-#else
-	lis	r9,_LIB_VERSION@ha
-	lwz	r0,_LIB_VERSION@l(r9)
-#endif
-/*  if (_LIB_VERSION == _IEEE_) return z; */
-	cmpwi	cr7,r0,-1
-	beq-	cr7,.L4
-/*  if (x != x) return z; !isnan*/
-	fcmpu	cr7,fp1,fp1
-	bne-	cr7,.L4
-/*  if  (x < 0.0)
-    return __kernel_standard (x, x, 26) */
-	fmr	fp2,fp1
-	fabs	fp0,fp1
-	li	r3,26
-	fcmpu	cr7,fp1,fp0
-	bne- 	cr7,.L11
-.L4:
-	lwz	r0,20(r1)
-	fmr	fp1,fp12
-	lwz	r30,8(r1)
-	addi	r1,r1,16
-	mtlr 	r0
-	blr
-.L11:
-	bl	__kernel_standard@plt
-	fmr	fp12,fp1
-	b	.L4
-	END	(__sqrt)
-
-weak_alias (__sqrt, sqrt)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__sqrt, sqrtl)
-strong_alias (__sqrt, __sqrtl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf_compat.S b/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf_compat.S
deleted file mode 100644
index c304ab5ca2..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf_compat.S
+++ /dev/null
@@ -1,100 +0,0 @@
-/* sqrtf function.  PowerPC32 version.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* float [fp1] sqrts (float x [fp1])
-   Power4 (ISA V2.0) and above implement sqrt in hardware (not optional).
-   The fsqrts instruction generates the correct value for all inputs and
-   sets the appropriate floating point exceptions.  Extended checking is
-   only needed to set errno (via __kernel_standard) if the input value
-   is negative.
-
-   The fsqrts will set FPCC and FU (Floating Point Unordered or NaN
-   to indicated that the input value was negative or NaN. Use Move to
-   Condition Register from FPSCR to copy the FPCC field to cr1.  The
-   branch on summary overflow transfers control to w_sqrt to process
-   any error conditions. Otherwise we can return the result directly.
-
-   This part of the function is a leaf routine,  so no need to stack a
-   frame or execute prologue/epilogue code. This means it is safe to
-   transfer directly to w_sqrt as long as the input value (f1) is
-   preserved. Putting the sqrt result into f2 (float parameter 2)
-   allows passing both the input value and sqrt result into the extended
-   wrapper so there is no need to recompute.
-
-   This tactic avoids the overhead of stacking a frame for the normal
-   (non-error) case.  Until gcc supports prologue shrink-wrapping
-   this is the best we can do.  */
-
-	.section	".text"
-	.machine power4
-EALIGN (__sqrtf, 5, 0)
-	fsqrts	fp2,fp1
-	mcrfs	cr1,4
-	bso-	cr1,.Lw_sqrtf
-	fmr	fp1,fp2
-	blr
-        .align 4
-.Lw_sqrtf:
-	mflr	r0
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset(16)
-	fmr	fp12,fp2
-	stw	r0,20(r1)
-	stw	r30,8(r1)
-	cfi_offset(lr,20-16)
-	cfi_offset(r30,8-16)
-#ifdef SHARED
-	SETUP_GOT_ACCESS(r30,got_label)
-	addis	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
-	lwz	r9,_LIB_VERSION@got(30)
-	lwz	r0,0(r9)
-#else
-	lis	r9,_LIB_VERSION@ha
-	lwz	r0,_LIB_VERSION@l(r9)
-#endif
-/*  if (_LIB_VERSION == _IEEE_) return z; */
-	cmpwi	cr7,r0,-1
-	beq-	cr7,.L4
-/*  if (x != x, 0) return z; !isnan */
-	fcmpu	cr7,fp1,fp1
-	bne-	cr7,.L4
-/*  if  (x < 0.0)
-    return __kernel_standard (x, x, 126) */
-	fmr	fp2,fp1
-	fabs	fp0,fp1
-	li	r3,126
-	fcmpu	cr7,1,0
-	bne- 	cr7,.L11
-.L4:
-	lwz	r0,20(r1)
-	fmr	fp1,fp12
-	lwz	r30,8(r1)
-	addi	r1,r1,16
-	mtlr 	r0
-	blr
-.L11:
-	bl	__kernel_standard@plt
-	fmr	fp12,fp1
-	b	.L4
-	END	(__sqrtf)
-
-weak_alias (__sqrtf, sqrtf)
diff --git a/sysdeps/powerpc/powerpc32/power4/hp-timing.h b/sysdeps/powerpc/powerpc32/power4/hp-timing.h
deleted file mode 100644
index 93cce4625a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/hp-timing.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* High precision, low overhead timing functions.  powerpc64 version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _HP_TIMING_H
-#define _HP_TIMING_H	1
-
-/* We always assume having the timestamp register.  */
-#define HP_TIMING_AVAIL		(1)
-#define HP_SMALL_TIMING_AVAIL	(1)
-
-/* We indeed have inlined functions.  */
-#define HP_TIMING_INLINE	(1)
-
-/* We use 64bit values for the times.  */
-typedef unsigned long long int hp_timing_t;
-
-/* That's quite simple.  Use the `mftb' instruction.  Note that the value
-   might not be 100% accurate since there might be some more instructions
-   running in this moment.  This could be changed by using a barrier like
-   'lwsync' right before the `mftb' instruction.  But we are not interested
-   in accurate clock cycles here so we don't do this.  */
-
-#define HP_TIMING_NOW(Var)						\
-  do {									\
-    unsigned int hi, lo, tmp;						\
-    __asm__ __volatile__ ("1:	mfspr	%0,269;"			\
-			  "	mfspr	%1,268;"			\
-			  "	mfspr	%2,269;"			\
-			  "	cmpw	%0,%2;"				\
-			  "	bne	1b;"				\
-			  : "=&r" (hi), "=&r" (lo), "=&r" (tmp)		\
-			  : : "cr0");					\
-    Var = ((hp_timing_t) hi << 32) | lo;				\
-  } while (0)
-
-#include <hp-timing-common.h>
-
-#endif	/* hp-timing.h */
diff --git a/sysdeps/powerpc/powerpc32/power4/memcmp.S b/sysdeps/powerpc/powerpc32/power4/memcmp.S
deleted file mode 100644
index c6270d347f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/memcmp.S
+++ /dev/null
@@ -1,1375 +0,0 @@
-/* Optimized strcmp implementation for PowerPC32.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memcmp (const char *s1 [r3],
-		    const char *s2 [r4],
-		    size_t size [r5])  */
-
-	.machine power4
-EALIGN (memcmp, 4, 0)
-	CALL_MCOUNT
-
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3	r8	/* next word in s1 */
-#define rWORD4	r9	/* next word in s2 */
-#define rWORD5	r10	/* next word in s1 */
-#define rWORD6	r11	/* next word in s2 */
-#define rWORD7	r30	/* next word in s1 */
-#define rWORD8	r31	/* next word in s2 */
-
-	xor	r0, rSTR2, rSTR1
-	cmplwi	cr6, rN, 0
-	cmplwi	cr1, rN, 12
-	clrlwi.	r0, r0, 30
-	clrlwi	r12, rSTR1, 30
-	cmplwi	cr5, r12, 0
-	beq-	cr6, L(zeroLength)
-	dcbt	0, rSTR1
-	dcbt	0, rSTR2
-/* If less than 8 bytes or not aligned, use the unaligned
-   byte loop.  */
-	blt	cr1, L(bytealigned)
-	stwu	1, -64(r1)
-	cfi_adjust_cfa_offset(64)
-	stw	rWORD8, 48(r1)
-	stw	rWORD7, 44(r1)
-	cfi_offset(rWORD8, (48-64))
-	cfi_offset(rWORD7, (44-64))
-	bne	L(unaligned)
-/* At this point we know both strings have the same alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   2 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then we are already word
-   aligned and can perform the word aligned loop.
-
-   Otherwise we know the two strings have the same alignment (but not
-   yet word aligned).  So we force the string addresses to the next lower
-   word boundary and special case this first word using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (word aligned) compare loop, starting at the second word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first word. This ensures that the loop count is
-   correct and the first word (shifted) is in the expected register pair. */
-	.align	4
-L(samealignment):
-	clrrwi	rSTR1, rSTR1, 2
-	clrrwi	rSTR2, rSTR2, 2
-	beq	cr5, L(Waligned)
-	add	rN, rN, r12
-	slwi	rWORD6, r12, 3
-	srwi	r0, rN, 4	/* Divide by 16 */
-	andi.	r12, rN, 12	/* Get the word remainder */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	beq	L(dPs4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(dPs3)
-	beq	cr1, L(dPs2)
-
-/* Remainder is 4 */
-	.align	3
-L(dsP1):
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD2, rWORD6
-	cmplw	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(dP1e)
-/* Remainder is 8 */
-	.align	4
-L(dPs2):
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD2, rWORD6
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	b	L(dP2e)
-/* Remainder is 12 */
-	.align	4
-L(dPs3):
-	slw	rWORD3, rWORD1, rWORD6
-	slw	rWORD4, rWORD2, rWORD6
-	cmplw	cr1, rWORD3, rWORD4
-	b	L(dP3e)
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(dPs4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	slw	rWORD1, rWORD1, rWORD6
-	slw	rWORD2, rWORD2, rWORD6
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(dP4e)
-
-/* At this point we know both strings are word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(Waligned):
-	andi.	r12, rN, 12	/* Get the word remainder */
-	srwi	r0, rN, 4	/* Divide by 16 */
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	beq	L(dP4)
-	bgt	cr1, L(dP3)
-	beq	cr1, L(dP2)
-
-/* Remainder is 4 */
-	.align	4
-L(dP1):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-/* Normally we'd use rWORD7/rWORD8 here, but since we might exit early
-   (8-15 byte compare), we want to use only volatile registers.  This
-   means we can avoid restoring non-volatile registers since we did not
-   change any on the early exit path.  The key here is the non-early
-   exit path only cares about the condition code (cr5), not about which
-   register pair was used.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-	lwz	rWORD6, 0(rSTR2)
-#endif
-	cmplw	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-L(dP1e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5x)
-	bne	cr7, L(dLcr7x)
-
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	bne	cr1, L(dLcr1)
-	cmplw	cr5, rWORD7, rWORD8
-	bdnz	L(dLoop)
-	bne	cr6, L(dLcr6)
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-	.align	3
-L(dP1x):
-	slwi.	r12, rN, 3
-	bne	cr5, L(dLcr5x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 8 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP2):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-	lwz	rWORD6, 0(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-L(dP2e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 12(rSTR1)
-	lwz	rWORD4, 12(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr6, L(dLcr6)
-	bne	cr5, L(dLcr5)
-	b	L(dLoop2)
-/* Again we are on a early exit path (16-23 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP2x):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	slwi.	r12, rN, 3
-	bne	cr6, L(dLcr6x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr1, L(dLcr1x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 12 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP3):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 0(rSTR1)
-	lwz	rWORD4, 0(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-L(dP3e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 4(rSTR1)
-	lwz	rWORD6, 4(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP3x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 8(rSTR1)
-	lwz	rWORD8, 8(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 12(rSTR1)
-	lwz	rWORD2, 12(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr1, L(dLcr1)
-	bne	cr6, L(dLcr6)
-	b	L(dLoop1)
-/* Again we are on a early exit path (24-31 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP3x):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	slwi.	r12, rN, 3
-	bne	cr1, L(dLcr1x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr6, L(dLcr6x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	bne	cr7, L(dLcr7x)
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-L(dP4e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 8(rSTR1)
-	lwz	rWORD6, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 12(rSTR1)
-	lwzu	rWORD8, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-	bne	cr1, L(dLcr1)
-	bdz-	L(d24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(dLoop):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-L(dLoop1):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-L(dLoop2):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-L(dLoop3):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	bne-	cr1, L(dLcr1)
-	cmplw	cr7, rWORD1, rWORD2
-	bdnz+	L(dLoop)
-
-L(dL4):
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-	cmplw	cr5, rWORD7, rWORD8
-L(d44):
-	bne	cr7, L(dLcr7)
-L(d34):
-	bne	cr1, L(dLcr1)
-L(d24):
-	bne	cr6, L(dLcr6)
-L(d14):
-	slwi.	r12, rN, 3
-	bne	cr5, L(dLcr5)
-L(d04):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	beq	L(zeroLength)
-/* At this point we have a remainder of 1 to 3 bytes to compare.  Since
-   we are aligned it is safe to load the whole word, and use
-   shift right to eliminate bits beyond the compare length.  */
-L(d00):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	rWORD1, rWORD1, rN
-	srw	rWORD2, rWORD2, rN
-	sub	rRTN, rWORD1, rWORD2
-	blr
-
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr7):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr7x):
-	li	rRTN, 1
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr1):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr1x):
-	li	rRTN, 1
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr6):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr6x):
-	li	rRTN, 1
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr5):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr5x):
-	li	rRTN, 1
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr5
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(bytealigned):
-	mtctr	rN	/* Power4 wants mtctr 1st in dispatch group */
-
-/* We need to prime this loop.  This loop is swing modulo scheduled
-   to avoid pipe delays.  The dependent instruction latencies (load to
-   compare to conditional branch) is 2 to 3 cycles.  In this loop each
-   dispatch group ends in a branch and takes 1 cycle.  Effectively
-   the first iteration of the loop only serves to load operands and
-   branches based on compares are delayed until the next loop.
-
-   So we must precondition some registers and condition codes so that
-   we don't exit the loop early on the first iteration.  */
-
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	bdz-	L(b11)
-	cmplw	cr7, rWORD1, rWORD2
-	lbz	rWORD3, 1(rSTR1)
-	lbz	rWORD4, 1(rSTR2)
-	bdz-	L(b12)
-	cmplw	cr1, rWORD3, rWORD4
-	lbzu	rWORD5, 2(rSTR1)
-	lbzu	rWORD6, 2(rSTR2)
-	bdz-	L(b13)
-	.align	4
-L(bLoop):
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	bne-	cr7, L(bLcr7)
-
-	cmplw	cr6, rWORD5, rWORD6
-	bdz-	L(b3i)
-
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	bne-	cr1, L(bLcr1)
-
-	cmplw	cr7, rWORD1, rWORD2
-	bdz-	L(b2i)
-
-	lbzu	rWORD5, 1(rSTR1)
-	lbzu	rWORD6, 1(rSTR2)
-	bne-	cr6, L(bLcr6)
-
-	cmplw	cr1, rWORD3, rWORD4
-	bdnz+	L(bLoop)
-
-/* We speculatively loading bytes before we have tested the previous
-   bytes.  But we must avoid overrunning the length (in the ctr) to
-   prevent these speculative loads from causing a segfault.  In this
-   case the loop will exit early (before the all pending bytes are
-   tested.  In this case we must complete the pending operations
-   before returning.  */
-L(b1i):
-	bne-	cr7, L(bLcr7)
-	bne-	cr1, L(bLcr1)
-	b	L(bx56)
-	.align	4
-L(b2i):
-	bne-	cr6, L(bLcr6)
-	bne-	cr7, L(bLcr7)
-	b	L(bx34)
-	.align	4
-L(b3i):
-	bne-	cr1, L(bLcr1)
-	bne-	cr6, L(bLcr6)
-	b	L(bx12)
-	.align	4
-L(bLcr7):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-L(bLcr1):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-L(bLcr6):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-L(b13):
-	bne-	cr7, L(bx12)
-	bne-	cr1, L(bx34)
-L(bx56):
-	sub	rRTN, rWORD5, rWORD6
-	blr
-	nop
-L(b12):
-	bne-	cr7, L(bx12)
-L(bx34):
-	sub	rRTN, rWORD3, rWORD4
-	blr
-L(b11):
-L(bx12):
-	sub	rRTN, rWORD1, rWORD2
-	blr
-	.align	4
-L(zeroLength):
-	li	rRTN, 0
-	blr
-
-	.align	4
-/* At this point we know the strings have different alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   2 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then rStr1 is word aligned and can
-   perform the Wunaligned loop.
-
-   Otherwise we know that rSTR1 is not already word aligned yet.
-   So we can force the string addresses to the next lower word
-   boundary and special case this first word using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (Wualigned) compare loop, starting at the second word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first W. This ensures that the loop count is
-   correct and the first W (shifted) is in the expected resister pair.  */
-#define rSHL		r29	/* Unaligned shift left count.  */
-#define rSHR		r28	/* Unaligned shift right count.  */
-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
-	cfi_adjust_cfa_offset(64)
-L(unaligned):
-	stw	rSHL, 40(r1)
-	cfi_offset(rSHL, (40-64))
-	clrlwi	rSHL, rSTR2, 30
-	stw	rSHR, 36(r1)
-	cfi_offset(rSHR, (36-64))
-	beq	cr5, L(Wunaligned)
-	stw	rWORD8_SHIFT, 32(r1)
-	cfi_offset(rWORD8_SHIFT, (32-64))
-/* Adjust the logical start of rSTR2 to compensate for the extra bits
-   in the 1st rSTR1 W.  */
-	sub	rWORD8_SHIFT, rSTR2, r12
-/* But do not attempt to address the W before that W that contains
-   the actual start of rSTR2.  */
-	clrrwi	rSTR2, rSTR2, 2
-	stw	rWORD2_SHIFT, 28(r1)
-/* Compute the left/right shift counts for the unaligned rSTR2,
-   compensating for the logical (W aligned) start of rSTR1.  */
-	clrlwi	rSHL, rWORD8_SHIFT, 30
-	clrrwi	rSTR1, rSTR1, 2
-	stw	rWORD4_SHIFT, 24(r1)
-	slwi	rSHL, rSHL, 3
-	cmplw	cr5, rWORD8_SHIFT, rSTR2
-	add	rN, rN, r12
-	slwi	rWORD6, r12, 3
-	stw	rWORD6_SHIFT, 20(r1)
-	cfi_offset(rWORD2_SHIFT, (28-64))
-	cfi_offset(rWORD4_SHIFT, (24-64))
-	cfi_offset(rWORD6_SHIFT, (20-64))
-	subfic	rSHR, rSHL, 32
-	srwi	r0, rN, 4	/* Divide by 16 */
-	andi.	r12, rN, 12	/* Get the W remainder */
-/* We normally need to load 2 Ws to start the unaligned rSTR2, but in
-   this special case those bits may be discarded anyway.  Also we
-   must avoid loading a W where none of the bits are part of rSTR2 as
-   this may cross a page boundary and cause a page fault.  */
-	li	rWORD8, 0
-	blt	cr5, L(dus0)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD8, 0(rSTR2)
-	addi	rSTR2, rSTR2, 4
-#endif
-	slw	rWORD8, rWORD8, rSHL
-
-L(dus0):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	srw	r12, rWORD2, rSHR
-	clrlwi	rN, rN, 30
-	beq	L(duPs4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	or	rWORD8, r12, rWORD8
-	bgt	cr1, L(duPs3)
-	beq	cr1, L(duPs2)
-
-/* Remainder is 4 */
-	.align	4
-L(dusP1):
-	slw	rWORD8_SHIFT, rWORD2, rSHL
-	slw	rWORD7, rWORD1, rWORD6
-	slw	rWORD8, rWORD8, rWORD6
-	bge	cr7, L(duP1e)
-/* At this point we exit early with the first word compare
-   complete and remainder of 0 to 3 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-	cmplw	cr5, rWORD7, rWORD8
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 8 */
-	.align	4
-L(duPs2):
-	slw	rWORD6_SHIFT, rWORD2, rSHL
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD8, rWORD6
-	b	L(duP2e)
-/* Remainder is 12 */
-	.align	4
-L(duPs3):
-	slw	rWORD4_SHIFT, rWORD2, rSHL
-	slw	rWORD3, rWORD1, rWORD6
-	slw	rWORD4, rWORD8, rWORD6
-	b	L(duP3e)
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(duPs4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	or	rWORD8, r12, rWORD8
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	slw	rWORD1, rWORD1, rWORD6
-	slw	rWORD2, rWORD8, rWORD6
-	b	L(duP4e)
-
-/* At this point we know rSTR1 is word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(Wunaligned):
-	stw	rWORD8_SHIFT, 32(r1)
-	clrrwi	rSTR2, rSTR2, 2
-	stw	rWORD2_SHIFT, 28(r1)
-	srwi	r0, rN, 4	/* Divide by 16 */
-	stw	rWORD4_SHIFT, 24(r1)
-	andi.	r12, rN, 12	/* Get the W remainder */
-	stw	rWORD6_SHIFT, 20(r1)
-	cfi_offset(rWORD8_SHIFT, (32-64))
-	cfi_offset(rWORD2_SHIFT, (28-64))
-	cfi_offset(rWORD4_SHIFT, (24-64))
-	cfi_offset(rWORD6_SHIFT, (20-64))
-	slwi	rSHL, rSHL, 3
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD6, 0(rSTR2)
-	lwzu	rWORD8, 4(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	subfic	rSHR, rSHL, 32
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	beq	L(duP4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(duP3)
-	beq	cr1, L(duP2)
-
-/* Remainder is 4 */
-	.align	4
-L(duP1):
-	srw	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD7, 0(rSTR1)
-#endif
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP1x)
-L(duP1e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	bne	cr5, L(duLcr5)
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	bne	cr7, L(duLcr7)
-	or	rWORD6, r0, rWORD4_SHIFT
-	cmplw	cr6, rWORD5, rWORD6
-	b	L(duLoop3)
-	.align	4
-/* At this point we exit early with the first word compare
-   complete and remainder of 0 to 3 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-L(duP1x):
-	cmplw	cr5, rWORD7, rWORD8
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 8 */
-	.align	4
-L(duP2):
-	srw	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-#endif
-	or	rWORD6, r0, rWORD6_SHIFT
-	slw	rWORD6_SHIFT, rWORD8, rSHL
-L(duP2e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP2x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 12(rSTR1)
-	lwz	rWORD4, 12(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	bne	cr5, L(duLcr5)
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	b	L(duLoop2)
-	.align	4
-L(duP2x):
-	cmplw	cr5, rWORD7, rWORD8
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr6, L(duLcr6)
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Remainder is 12 */
-	.align	4
-L(duP3):
-	srw	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD3, 0(rSTR1)
-#endif
-	slw	rWORD4_SHIFT, rWORD8, rSHL
-	or	rWORD4, r12, rWORD6_SHIFT
-L(duP3e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 4(rSTR1)
-	lwz	rWORD6, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 8(rSTR1)
-	lwz	rWORD8, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP3x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 12(rSTR1)
-	lwz	rWORD2, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(duLoop1)
-	.align	4
-L(duP3x):
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(duP4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	srw	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-#endif
-	slw	rWORD2_SHIFT, rWORD8, rSHL
-	or	rWORD2, r0, rWORD6_SHIFT
-L(duP4e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 8(rSTR1)
-	lwz	rWORD6, 8(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr7, L(duLcr7)
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 12(rSTR1)
-	lwzu	rWORD8, 12(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	cmplw	cr5, rWORD7, rWORD8
-	bdz-	L(du24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(duLoop):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-L(duLoop1):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-L(duLoop2):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(duLcr7)
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-L(duLoop3):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	bne-	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	bdnz+	L(duLoop)
-
-L(duL4):
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	cmplw	cr5, rWORD7, rWORD8
-L(du44):
-	bne	cr7, L(duLcr7)
-L(du34):
-	bne	cr1, L(duLcr1)
-L(du24):
-	bne	cr6, L(duLcr6)
-L(du14):
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-/* At this point we have a remainder of 1 to 3 bytes to compare.  We use
-   shift right to eliminate bits beyond the compare length.
-   This allows the use of word subtract to compute the final result.
-
-   However it may not be safe to load rWORD2 which may be beyond the
-   string length. So we compare the bit length of the remainder to
-   the right shift count (rSHR). If the bit count is less than or equal
-   we do not need to load rWORD2 (all significant bits are already in
-   rWORD8_SHIFT).  */
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	.align	4
-L(dutrim):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-#else
-	lwz	rWORD1, 4(rSTR1)
-#endif
-	lwz	rWORD8, 48(r1)
-	subfic	rN, rN, 32	/* Shift count is 32 - (rN * 8).  */
-	or	rWORD2, r0, rWORD8_SHIFT
-	lwz	rWORD7, 44(r1)
-	lwz	rSHL, 40(r1)
-	srw	rWORD1, rWORD1, rN
-	srw	rWORD2, rWORD2, rN
-	lwz	rSHR, 36(r1)
-	lwz	rWORD8_SHIFT, 32(r1)
-	sub	rRTN, rWORD1, rWORD2
-	b	L(dureturn26)
-	.align	4
-L(duLcr7):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr7, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr1):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr1, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr6):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr6, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr5):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr5, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	3
-L(duZeroReturn):
-	li	rRTN, 0
-	.align	4
-L(dureturn):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-L(dureturn29):
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-L(dureturn27):
-	lwz	rWORD8_SHIFT, 32(r1)
-L(dureturn26):
-	lwz	rWORD2_SHIFT, 28(r1)
-L(dureturn25):
-	lwz	rWORD4_SHIFT, 24(r1)
-	lwz	rWORD6_SHIFT, 20(r1)
-	addi	1, 1, 64
-	cfi_adjust_cfa_offset(-64)
-	blr
-END (memcmp)
-
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc32/power4/memcopy.h b/sysdeps/powerpc/powerpc32/power4/memcopy.h
deleted file mode 100644
index c76739e390..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/memcopy.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* memcopy.h -- definitions for memory copy functions.  Generic C version.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* The strategy of the memory functions is:
-
-     1. Copy bytes until the destination pointer is aligned.
-
-     2. Copy words in unrolled loops.  If the source and destination
-     are not aligned in the same way, use word memory operations,
-     but shift and merge two read words before writing.
-
-     3. Copy the few remaining bytes.
-
-   This is fast on processors that have at least 10 registers for
-   allocation by GCC, and that can access memory at reg+const in one
-   instruction.
-
-   I made an "exhaustive" test of this memmove when I wrote it,
-   exhaustive in the sense that I tried all alignment and length
-   combinations, with and without overlap.  */
-
-#include <sysdeps/generic/memcopy.h>
-
-/* The macros defined in this file are:
-
-   BYTE_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_to_copy)
-
-   BYTE_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_to_copy)
-
-   WORD_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_remaining, nbytes_to_copy)
-
-   WORD_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_remaining, nbytes_to_copy)
-
-   MERGE(old_word, sh_1, new_word, sh_2)
-     [I fail to understand.  I feel stupid.  --roland]
-*/
-
-
-/* Threshold value for when to enter the unrolled loops.  */
-#undef	OP_T_THRES
-#define OP_T_THRES 16
-
-/* Copy exactly NBYTES bytes from SRC_BP to DST_BP,
-   without any assumptions about alignment of the pointers.  */
-#undef BYTE_COPY_FWD
-#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes)				      \
-  do									      \
-    {									      \
-      size_t __nbytes = (nbytes);					      \
-      if (__nbytes & 1)							      \
-        {								      \
-	  ((byte *) dst_bp)[0] =  ((byte *) src_bp)[0];			      \
-	  src_bp += 1;							      \
-	  dst_bp += 1;							      \
-	  __nbytes -= 1;						      \
-        }								      \
-      while (__nbytes > 0)						      \
-	{								      \
-	  byte __x = ((byte *) src_bp)[0];				      \
-	  byte __y = ((byte *) src_bp)[1];				      \
-	  src_bp += 2;							      \
-	  __nbytes -= 2;						      \
-	  ((byte *) dst_bp)[0] = __x;					      \
-	  ((byte *) dst_bp)[1] = __y;					      \
-	  dst_bp += 2;							      \
-	}								      \
-    } while (0)
-
-/* Copy exactly NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
-   beginning at the bytes right before the pointers and continuing towards
-   smaller addresses.  Don't assume anything about alignment of the
-   pointers.  */
-#undef BYTE_COPY_BWD
-#define BYTE_COPY_BWD(dst_ep, src_ep, nbytes)				      \
-  do									      \
-    {									      \
-      size_t __nbytes = (nbytes);					      \
-      if (__nbytes & 1)							      \
-        {								      \
-	  src_ep -= 1;							      \
-	  dst_ep -= 1;							      \
-	  ((byte *) dst_ep)[0] =  ((byte *) src_ep)[0];			      \
-	  __nbytes -= 1;						      \
-        }								      \
-      while (__nbytes > 0)						      \
-	{								      \
-	  byte __x, __y;						      \
-	  src_ep -= 2;							      \
-	  __y = ((byte *) src_ep)[1];					      \
-	  __x = ((byte *) src_ep)[0];					      \
-	  dst_ep -= 2;							      \
-	  __nbytes -= 2;						      \
-	  ((byte *) dst_ep)[1] = __y;					      \
-	  ((byte *) dst_ep)[0] = __x;					      \
-	}								      \
-    } while (0)
-
-/* The powerpc memcpy implementation is safe to use for memmove.  */
-#undef MEMCPY_OK_FOR_FWD_MEMMOVE
-#define MEMCPY_OK_FOR_FWD_MEMMOVE 1
diff --git a/sysdeps/powerpc/powerpc32/power4/memcpy.S b/sysdeps/powerpc/powerpc32/power4/memcpy.S
deleted file mode 100644
index 37bc712dd9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/memcpy.S
+++ /dev/null
@@ -1,481 +0,0 @@
-/* Optimized memcpy implementation for PowerPC32 on PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.
-
-   Memcpy handles short copies (< 32-bytes) using a binary move blocks
-   (no loops) of lwz/stw.  The tail (remaining 1-3) bytes is handled
-   with the appropriate combination of byte and halfword load/stores.
-   There is minimal effort to optimize the alignment of short moves.
-
-   Longer moves (>= 32-bytes) justify the effort to get at least the
-   destination word (4-byte) aligned.  Further optimization is
-   possible when both source and destination are word aligned.
-   Each case has an optimized unrolled loop.   */
-
-	.machine power4
-EALIGN (memcpy, 5, 0)
-	CALL_MCOUNT
-
-    stwu  1,-32(1)
-    cfi_adjust_cfa_offset(32)
-    stw   30,20(1)
-    cfi_offset(30,(20-32))
-    mr    30,3
-    cmplwi cr1,5,31
-    stw   31,24(1)
-    cfi_offset(31,(24-32))
-    neg   0,3
-    andi. 11,3,3	/* check alignment of dst.  */
-    clrlwi 0,0,30	/* Number of bytes until the 1st word of dst.  */
-    clrlwi 10,4,30	/* check alignment of src.  */
-    cmplwi cr6,5,8
-    ble-  cr1,.L2	/* If move < 32 bytes use short move code.  */
-    cmplw cr6,10,11
-    mr    12,4
-    srwi  9,5,2		/* Number of full words remaining.  */
-    mtcrf 0x01,0
-    mr    31,5
-    beq   .L0
-
-    subf  31,0,5
-  /* Move 0-3 bytes as needed to get the destination word aligned.  */
-1:  bf    31,2f
-    lbz   6,0(12)
-    addi  12,12,1
-    stb   6,0(3)
-    addi  3,3,1
-2:  bf    30,0f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-0:
-    clrlwi 10,12,30	/* check alignment of src again.  */
-    srwi  9,31,2	/* Number of full words remaining.  */
-
-  /* Copy words from source to destination, assuming the destination is
-     aligned on a word boundary.
-
-     At this point we know there are at least 25 bytes left (32-7) to copy.
-     The next step is to determine if the source is also word aligned.
-     If not branch to the unaligned move code at .L6. which uses
-     a load, shift, store strategy.
-
-     Otherwise source and destination are word aligned, and we can use
-     the optimized word copy loop.  */
-.L0:
-    clrlwi	11,31,30  /* calculate the number of tail bytes */
-    mtcrf 0x01,9
-    bne-  cr6,.L6   /* If source is not word aligned.  */
-
-  /* Move words where destination and source are word aligned.
-     Use an unrolled loop to copy 4 words (16-bytes) per iteration.
-     If the copy is not an exact multiple of 16 bytes, 1-3
-     words are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-3 bytes. These bytes are
-     copied a halfword/byte at a time as needed to preserve alignment.  */
-
-    srwi  8,31,4    /* calculate the 16 byte loop count */
-    cmplwi	cr1,9,4
-    cmplwi	cr6,11,0
-    mr    11,12
-
-    bf    30,1f
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  11,12,8
-    mtctr 8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  10,3,8
-    bf    31,4f
-    lwz   0,8(12)
-    stw   0,8(3)
-    blt   cr1,3f
-    addi  11,12,12
-    addi  10,3,12
-    b     4f
-    .align  4
-1:
-    mr    10,3
-    mtctr 8
-    bf    31,4f
-    lwz   6,0(12)
-    addi  11,12,4
-    stw   6,0(3)
-    addi  10,3,4
-
-    .align  4
-4:
-    lwz   6,0(11)
-    lwz   7,4(11)
-    lwz   8,8(11)
-    lwz   0,12(11)
-    stw   6,0(10)
-    stw   7,4(10)
-    stw   8,8(10)
-    stw   0,12(10)
-    addi  11,11,16
-    addi  10,10,16
-    bdnz  4b
-3:
-    clrrwi 0,31,2
-    mtcrf 0x01,31
-    beq   cr6,0f
-.L9:
-    add   3,3,0
-    add   12,12,0
-
-/*  At this point we have a tail of 0-3 bytes and we know that the
-    destination is word aligned.  */
-2:  bf    30,1f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-1:  bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    mr  3,30
-    lwz 30,20(1)
-    lwz 31,24(1)
-    addi 1,1,32
-    blr
-
-/* Copy up to 31 bytes.  This is divided into two cases 0-8 bytes and
-   9-31 bytes.  Each case is handled without loops, using binary
-   (1,2,4,8) tests.
-
-   In the short (0-8 byte) case no attempt is made to force alignment
-   of either source or destination.  The hardware will handle the
-   unaligned load/stores with small delays for crossing 32- 64-byte, and
-   4096-byte boundaries. Since these short moves are unlikely to be
-   unaligned or cross these boundaries, the overhead to force
-   alignment is not justified.
-
-   The longer (9-31 byte) move is more likely to cross 32- or 64-byte
-   boundaries.  Since only loads are sensitive to the 32-/64-byte
-   boundaries it is more important to align the source than the
-   destination.  If the source is not already word aligned, we first
-   move 1-3 bytes as needed.  While the destination and stores may
-   still be unaligned, this is only an issue for page (4096 byte
-   boundary) crossing, which should be rare for these short moves.
-   The hardware handles this case automatically with a small delay.  */
-
-    .align  4
-.L2:
-    mtcrf 0x01,5
-    neg   8,4
-    clrrwi 11,4,2
-    andi. 0,8,3
-    ble   cr6,.LE8	/* Handle moves of 0-8 bytes.  */
-/* At least 9 bytes left.  Get the source word aligned.  */
-    cmplwi	cr1,5,16
-    mr    10,5
-    mr    12,4
-    cmplwi	cr6,0,2
-    beq   .L3	/* If the source is already word aligned skip this.  */
-/* Copy 1-3 bytes to get source address word aligned.  */
-    lwz   6,0(11)
-    subf  10,0,5
-    add   12,4,0
-    blt   cr6,5f
-    srwi  7,6,16
-    bgt	  cr6,3f
-#ifdef __LITTLE_ENDIAN__
-    sth   7,0(3)
-#else
-    sth   6,0(3)
-#endif
-    b     7f
-    .align  4
-3:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,24
-    stb   6,0(3)
-    sth   7,1(3)
-#else
-    stb   7,0(3)
-    sth   6,1(3)
-#endif
-    b     7f
-    .align  4
-5:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,8
-#endif
-    stb   6,0(3)
-7:
-    cmplwi	cr1,10,16
-    add   3,3,0
-    mtcrf 0x01,10
-    .align  4
-.L3:
-/* At least 6 bytes left and the source is word aligned.  */
-    blt   cr1,8f
-16: /* Move 16 bytes.  */
-    lwz   6,0(12)
-    lwz   7,4(12)
-    stw   6,0(3)
-    lwz   6,8(12)
-    stw   7,4(3)
-    lwz   7,12(12)
-    addi  12,12,16
-    stw   6,8(3)
-    stw   7,12(3)
-    addi  3,3,16
-8:  /* Move 8 bytes.  */
-    bf    28,4f
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  12,12,8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  3,3,8
-4:  /* Move 4 bytes.  */
-    bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  /* Move 2-3 bytes.  */
-    bf    30,1f
-    lhz   6,0(12)
-    sth   6,0(3)
-    bf    31,0f
-    lbz   7,2(12)
-    stb   7,2(3)
-    mr    3,30
-    lwz   30,20(1)
-    addi  1,1,32
-    blr
-1:  /* Move 1 byte.  */
-    bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    mr   3,30
-    lwz  30,20(1)
-    addi 1,1,32
-    blr
-
-/* Special case to copy 0-8 bytes.  */
-    .align  4
-.LE8:
-    mr    12,4
-    bne   cr6,4f
-    lwz   6,0(4)
-    lwz   7,4(4)
-    stw   6,0(3)
-    stw   7,4(3)
-  /* Return original dst pointer.  */
-    mr    3,30
-    lwz   30,20(1)
-    addi  1,1,32
-    blr
-    .align  4
-4:  bf    29,2b
-    lwz   6,0(4)
-    stw   6,0(3)
-6:
-    bf    30,5f
-    lhz   7,4(4)
-    sth   7,4(3)
-    bf    31,0f
-    lbz   8,6(4)
-    stb   8,6(3)
-    mr    3,30
-    lwz   30,20(1)
-    addi  1,1,32
-    blr
-    .align  4
-5:
-    bf    31,0f
-    lbz   6,4(4)
-    stb   6,4(3)
-    .align  4
-0:
-  /* Return original dst pointer.  */
-    mr   3,30
-    lwz  30,20(1)
-    addi 1,1,32
-    blr
-
-    .align  4
-.L6:
-
-  /* Copy words where the destination is aligned but the source is
-     not.  Use aligned word loads from the source, shifted to realign
-     the data, to allow aligned destination stores.
-     Use an unrolled loop to copy 4 words (16-bytes) per iteration.
-     A single word is retained for storing at loop exit to avoid walking
-     off the end of a page within the loop.
-     If the copy is not an exact multiple of 16 bytes, 1-3
-     words are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-3 bytes. These bytes are
-     copied a halfword/byte at a time as needed to preserve alignment.  */
-
-
-    cmplwi  cr6,11,0  /* are there tail bytes left ? */
-    subf    5,10,12   /* back up src pointer to prev word alignment */
-    slwi    10,10,3   /* calculate number of bits to shift 1st word left */
-    addi    11,9,-1   /* we move one word after the loop */
-    srwi    8,11,2    /* calculate the 16 byte loop count */
-    lwz     6,0(5)    /* load 1st src word into R6 */
-    mr      4,3
-    lwz     7,4(5)    /* load 2nd src word into R7 */
-    mtcrf   0x01,11
-    subfic  9,10,32   /* number of bits to shift 2nd word right */
-    mtctr   8
-    bf      30,1f
-
-    /* there are at least two words to copy, so copy them */
-#ifdef __LITTLE_ENDIAN__
-    srw   0,6,10
-    slw   8,7,9
-#else
-    slw   0,6,10  /* shift 1st src word to left align it in R0 */
-    srw   8,7,9   /* shift 2nd src word to right align it in R8 */
-#endif
-    or    0,0,8   /* or them to get word to store */
-    lwz   6,8(5)  /* load the 3rd src word */
-    stw   0,0(4)  /* store the 1st dst word */
-#ifdef __LITTLE_ENDIAN__
-    srw   0,7,10
-    slw   8,6,9
-#else
-    slw   0,7,10  /* now left align 2nd src word into R0 */
-    srw   8,6,9   /* shift 3rd src word to right align it in R8 */
-#endif
-    or    0,0,8   /* or them to get word to store */
-    lwz   7,12(5)
-    stw   0,4(4)  /* store the 2nd dst word */
-    addi  4,4,8
-    addi  5,5,16
-    bf    31,4f
-    /* there is a third word to copy, so copy it */
-#ifdef __LITTLE_ENDIAN__
-    srw   0,6,10
-    slw   8,7,9
-#else
-    slw   0,6,10  /* shift 3rd src word to left align it in R0 */
-    srw   8,7,9   /* shift 4th src word to right align it in R8 */
-#endif
-    or    0,0,8   /* or them to get word to store */
-    stw   0,0(4)  /* store 3rd dst word */
-    mr    6,7
-    lwz   7,0(5)
-    addi  5,5,4
-    addi  4,4,4
-    b     4f
-    .align 4
-1:
-#ifdef __LITTLE_ENDIAN__
-    srw     0,6,10
-    slw     8,7,9
-#else
-    slw     0,6,10  /* shift 1st src word to left align it in R0 */
-    srw     8,7,9   /* shift 2nd src word to right align it in R8 */
-#endif
-    addi  5,5,8
-    or    0,0,8   /* or them to get word to store */
-    bf    31,4f
-    mr    6,7
-    lwz   7,0(5)
-    addi  5,5,4
-    stw   0,0(4)  /* store the 1st dst word */
-    addi  4,4,4
-
-    .align  4
-4:
-    /* copy 16 bytes at a time */
-#ifdef __LITTLE_ENDIAN__
-    srw   0,6,10
-    slw   8,7,9
-#else
-    slw   0,6,10
-    srw   8,7,9
-#endif
-    or    0,0,8
-    lwz   6,0(5)
-    stw   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srw   0,7,10
-    slw   8,6,9
-#else
-    slw   0,7,10
-    srw   8,6,9
-#endif
-    or    0,0,8
-    lwz   7,4(5)
-    stw   0,4(4)
-#ifdef __LITTLE_ENDIAN__
-    srw   0,6,10
-    slw   8,7,9
-#else
-    slw   0,6,10
-    srw   8,7,9
-#endif
-    or    0,0,8
-    lwz   6,8(5)
-    stw   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srw   0,7,10
-    slw   8,6,9
-#else
-    slw   0,7,10
-    srw   8,6,9
-#endif
-    or    0,0,8
-    lwz   7,12(5)
-    stw   0,12(4)
-    addi  5,5,16
-    addi  4,4,16
-    bdnz+ 4b
-8:
-    /* calculate and store the final word */
-#ifdef __LITTLE_ENDIAN__
-    srw   0,6,10
-    slw   8,7,9
-#else
-    slw   0,6,10
-    srw   8,7,9
-#endif
-    or    0,0,8
-    stw   0,0(4)
-3:
-    clrrwi 0,31,2
-    mtcrf 0x01,31
-    bne   cr6,.L9	/* If the tail is 0 bytes we are done!  */
-
-  /* Return original dst pointer.  */
-    mr   3,30
-    lwz  30,20(1)
-    lwz  31,24(1)
-    addi 1,1,32
-    blr
-END (memcpy)
-
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/power4/memset.S b/sysdeps/powerpc/powerpc32/power4/memset.S
deleted file mode 100644
index 25319f7233..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/memset.S
+++ /dev/null
@@ -1,226 +0,0 @@
-/* Optimized memset implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in three sizes: byte (8 bits), word (32 bits),
-   cache line (1024 bits). There is a special case for setting cache lines
-   to 0, to take advantage of the dcbz instruction.  */
-
-	.machine power4
-EALIGN (memset, 5, 0)
-	CALL_MCOUNT
-
-#define rTMP	r0
-#define rRTN	r3	/* Initial value of 1st argument.  */
-#define rMEMP0	r3	/* Original value of 1st arg.  */
-#define rCHR	r4	/* Char to set in each byte.  */
-#define rLEN	r5	/* Length of region to set.  */
-#define rMEMP	r6	/* Address at which we are storing.  */
-#define rALIGN	r7	/* Number of bytes we are setting now (when aligning). */
-#define rMEMP2	r8
-
-#define rNEG64	r8	/* Constant -64 for clearing with dcbz.  */
-#define rCLS	r8	/* Cache line size (known to be 128).  */
-#define rCLM	r9	/* Cache line size mask to check for cache alignment.  */
-L(_memset):
-/* Take care of case for size <= 4.  */
-	cmplwi	cr1, rLEN, 4
-	andi.	rALIGN, rMEMP0, 3
-	mr	rMEMP, rMEMP0
-	ble-	cr1, L(small)
-
-/* Align to word boundary.  */
-	cmplwi	cr5, rLEN, 31
-	insrwi	rCHR, rCHR, 8, 16     /* Replicate byte to halfword.  */
-	beq+	L(aligned)
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 4
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):
-	sth	rCHR, -2(rMEMP)
-
-/* Handle the case of size < 31.  */
-L(aligned):
-	mtcrf	0x01, rLEN
-	insrwi	rCHR, rCHR, 16, 0    /* Replicate halfword to word.  */
-	ble	cr5, L(medium)
-/* Align to 32-byte boundary.  */
-	andi.	rALIGN, rMEMP, 0x1C
-	subfic	rALIGN, rALIGN, 0x20
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-        stw     rCHR, -4(rMEMP2)
-	stwu	rCHR, -8(rMEMP2)
-L(a1):	blt	cr1, L(a2)
-        stw     rCHR, -4(rMEMP2)
-	stw	rCHR, -8(rMEMP2)
-	stw	rCHR, -12(rMEMP2)
-	stwu	rCHR, -16(rMEMP2)
-L(a2):  bf      29, L(caligned)
-        stw     rCHR, -4(rMEMP2)
-
-/* Now aligned to a 32 byte boundary.  */
-L(caligned):
-	cmplwi	cr1, rCHR, 0
-	clrrwi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN
-	beq	cr1, L(zloopstart) /* Special case for clearing memory using dcbz.  */
-L(nondcbz):
-	srwi	rTMP, rALIGN, 5
-	mtctr	rTMP
-	beq	L(medium)	/* We may not actually get to do a full line.  */
-	clrlwi.	rLEN, rLEN, 27
-	add	rMEMP, rMEMP, rALIGN
-	li	rNEG64, -0x40
-	bdz	L(cloopdone)
-
-        .align 4
-L(c3): 	dcbtst	rNEG64, rMEMP
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-        stw     rCHR, -12(rMEMP)
-	stw	rCHR, -16(rMEMP)
-        stw     rCHR, -20(rMEMP)
-	stw	rCHR, -24(rMEMP)
-        stw     rCHR, -28(rMEMP)
-	stwu	rCHR, -32(rMEMP)
-	bdnz	L(c3)
-L(cloopdone):
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-        stw     rCHR, -12(rMEMP)
-	stw	rCHR, -16(rMEMP)
-	cmplwi	cr1, rLEN, 16
-        stw     rCHR, -20(rMEMP)
-	stw	rCHR, -24(rMEMP)
-        stw     rCHR, -28(rMEMP)
-	stwu	rCHR, -32(rMEMP)
-	beqlr
-	add	rMEMP, rMEMP, rALIGN
-	b	L(medium_tail2)
-
-	.align 5
-/* Clear lines of memory in 128-byte chunks.  */
-L(zloopstart):
-/* If the remaining length is less the 32 bytes, don't bother getting
-	 the cache line size.  */
-	beq	L(medium)
-	li      rCLS,128  /* cache line size is 128 */
-	dcbt	0,rMEMP
-L(getCacheAligned):
-	cmplwi	cr1,rLEN,32
-	andi.	rTMP,rMEMP,127
-	blt	cr1,L(handletail32)
-	beq	L(cacheAligned)
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	stw	rCHR,-32(rMEMP)
-        stw     rCHR,-28(rMEMP)
-	stw	rCHR,-24(rMEMP)
-	stw     rCHR,-20(rMEMP)
-	stw	rCHR,-16(rMEMP)
-        stw     rCHR,-12(rMEMP)
-	stw	rCHR,-8(rMEMP)
-        stw     rCHR,-4(rMEMP)
-	b	L(getCacheAligned)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-        .align 4
-L(cacheAligned):
-	cmplw	cr1,rLEN,rCLS
-	blt	cr1,L(handletail32)
-	dcbz	0,rMEMP
-	subf	rLEN,rCLS,rLEN
-	add	rMEMP,rMEMP,rCLS
-	b	L(cacheAligned)
-
-/* We are here because the cache line size was set and the remainder
-  (rLEN) is less than the actual cache line size.
-   So set up the preconditions for L(nondcbz) and go there.  */
-L(handletail32):
-	clrrwi.	rALIGN, rLEN, 5
-	b		L(nondcbz)
-
-	.align 5
-L(small):
-/* Memset of 4 bytes or less.  */
-	cmplwi	cr5, rLEN, 1
-	cmplwi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align 5
-L(medium):
-	cmplwi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt-	29, L(medium_29t)
-L(medium_29f):
-	bge-	cr1, L(medium_27t)
-	bflr-	28
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt-	cr1, L(medium_27f)
-L(medium_27t):
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-        stw     rCHR, -12(rMEMP)
-	stwu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr-	28
-L(medium_28t):
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	blr
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile b/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile
deleted file mode 100644
index bd9d360efa..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-ifeq ($(subdir),string)
-sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
-		   memcpy-ppc32 memcmp-power7 memcmp-ppc32 memset-power7 \
-		   memset-power6 memset-ppc32 bzero-power7 bzero-power6 \
-		   bzero-ppc32 mempcpy-power7 mempcpy-ppc32 memchr-power7 \
-		   memchr-ppc32 memrchr-power7 memrchr-ppc32 rawmemchr-power7 \
-		   rawmemchr-ppc32 strlen-power7 strlen-ppc32 strnlen-power7 \
-		   strnlen-ppc32 strncmp-power7 strncmp-ppc32 \
-		   strcasecmp-power7 strcasecmp_l-power7 strncase-power7 \
-		   strncase_l-power7 strchrnul-power7 strchrnul-ppc32 \
-		   strchr-power7 strchr-ppc32 \
-		   wordcopy-power7 wordcopy-ppc32 \
-		   memmove-power7 memmove-ppc
-
-CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops
-CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops
-endif
-
-ifeq ($(subdir),wcsmbs)
-sysdep_routines += wcschr-power7 wcschr-power6 wcschr-ppc32 \
-		   wcsrchr-power7 wcsrchr-power6 wcsrchr-ppc32 \
-		   wcscpy-power7 wcscpy-power6 wcscpy-ppc32
-
-CFLAGS-wcschr-power7.c += -mcpu=power7
-CFLAGS-wcschr-power6.c += -mcpu=power6
-CFLAGS-wcsrchr-power7.c += -mcpu=power7
-CFLAGS-wcsrchr-power6.c += -mcpu=power6
-CFLAGS-wcscpy-power7.c += -mcpu=power7
-CFLAGS-wcscpy-power6.c += -mcpu=power6
-endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power6.S b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power6.S
deleted file mode 100644
index 4e000309cf..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power6.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized bzero implementation for PowerPC32/POWER6.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY (__bzero_power6)
-        mr      r5,r4
-        li      r4,0
-        b       __memset_power6@local
-END (__bzero_power6)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power7.S
deleted file mode 100644
index 580da55166..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized bzero implementation for PowerPC32/POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-ENTRY (__bzero_power7)
-        mr      r5,r4
-        li      r4,0
-        b       __memset_power7@local
-END (__bzero_power7)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
deleted file mode 100644
index 33c69cbfb9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero-ppc32.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Optimized bzero implementation for PowerPC32/PPC32.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* memset ifunc selector is not built for static and memset@local
-   for shared builds makes the linker point the call to the ifunc
-   selector.  */
-#ifdef SHARED
-# define MEMSET __memset_ppc
-#else
-# define MEMSET memset
-#endif
-
-ENTRY (__bzero_ppc)
-        mr      r5,r4
-        li      r4,0
-        b       MEMSET@local
-END (__bzero_ppc)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c b/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
deleted file mode 100644
index 865920ee26..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of bzero.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# include <string.h>
-# include <strings.h>
-# include "init-arch.h"
-
-extern __typeof (bzero) __bzero_ppc attribute_hidden;
-extern __typeof (bzero) __bzero_power6 attribute_hidden;
-extern __typeof (bzero) __bzero_power7 attribute_hidden;
-
-libc_ifunc (__bzero,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __bzero_power7 :
-	      (hwcap & PPC_FEATURE_ARCH_2_05)
-		? __bzero_power6
-            : __bzero_ppc);
-
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c
deleted file mode 100644
index 1caf15a07d..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/ifunc-impl-list.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* Enumerate available IFUNC implementations of a function.  PowerPC32 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <assert.h>
-#include <string.h>
-#include <wchar.h>
-#include <ldsodefs.h>
-#include <ifunc-impl-list.h>
-
-/* Maximum number of IFUNC implementations.  */
-#define MAX_IFUNC	6
-
-size_t
-__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
-			size_t max)
-{
-  assert (max >= MAX_IFUNC);
-
-  size_t i = 0;
-
-  unsigned long int hwcap = GLRO(dl_hwcap);
-  /* hwcap contains only the latest supported ISA, the code checks which is
-     and fills the previous supported ones.  */
-  if (hwcap & PPC_FEATURE_ARCH_2_06)
-    hwcap |= PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_POWER5_PLUS |
-             PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_ARCH_2_05)
-    hwcap |= PPC_FEATURE_POWER5_PLUS | PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5_PLUS)
-    hwcap |= PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5)
-    hwcap |= PPC_FEATURE_POWER4;
-
-#ifdef SHARED
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c.  */
-  IFUNC_IMPL (i, name, memcpy,
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_06,
-			      __memcpy_a2)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __memcpy_power6)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_CELL_BE,
-			      __memcpy_cell)
-	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c.  */
-  IFUNC_IMPL (i, name, memmove,
-	      IFUNC_IMPL_ADD (array, i, memmove, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memmove_power7)
-	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memset.c.  */
-  IFUNC_IMPL (i, name, memset,
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memset_power7)
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __memset_power6)
-	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c.  */
-  IFUNC_IMPL (i, name, bzero,
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_HAS_VSX,
-			      __bzero_power7)
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __bzero_power6)
-	      IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c.  */
-  IFUNC_IMPL (i, name, strlen,
-	      IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strlen_power7)
-	      IFUNC_IMPL_ADD (array, i, strlen, 1,
-			      __strlen_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c.  */
-  IFUNC_IMPL (i, name, strnlen,
-	      IFUNC_IMPL_ADD (array, i, strnlen, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strnlen_power7)
-	      IFUNC_IMPL_ADD (array, i, strnlen, 1,
-			      __strnlen_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/multiarch/strncmp.c.  */
-  IFUNC_IMPL (i, name, strncmp,
-	      IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strncmp, 1,
-			      __strncmp_ppc))
-#endif
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c.  */
-  IFUNC_IMPL (i, name, memcmp,
-	      IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memcmp_power7)
-	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c.  */
-  IFUNC_IMPL (i, name, mempcpy,
-	      IFUNC_IMPL_ADD (array, i, mempcpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __mempcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, mempcpy, 1,
-			      __mempcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c.  */
-  IFUNC_IMPL (i, name, memchr,
-	      IFUNC_IMPL_ADD (array, i, memchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __memchr_power7)
-	      IFUNC_IMPL_ADD (array, i, memchr, 1,
-			      __memchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c.  */
-  IFUNC_IMPL (i, name, memrchr,
-	      IFUNC_IMPL_ADD (array, i, memrchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __memrchr_power7)
-	      IFUNC_IMPL_ADD (array, i, memrchr, 1,
-			      __memrchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c.  */
-  IFUNC_IMPL (i, name, rawmemchr,
-	      IFUNC_IMPL_ADD (array, i, rawmemchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __rawmemchr_power7)
-	      IFUNC_IMPL_ADD (array, i, rawmemchr, 1,
-			      __rawmemchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c.  */
-  IFUNC_IMPL (i, name, strcasecmp,
-	      IFUNC_IMPL_ADD (array, i, strcasecmp,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcasecmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c.  */
-  IFUNC_IMPL (i, name, strcasecmp_l,
-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcasecmp_l_power7)
-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
-			      __strcasecmp_l_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c.  */
-  IFUNC_IMPL (i, name, strncasecmp,
-	      IFUNC_IMPL_ADD (array, i, strncasecmp,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncasecmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strncasecmp, 1, __strncasecmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c.  */
-  IFUNC_IMPL (i, name, strncasecmp_l,
-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncasecmp_l_power7)
-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
-			      __strncasecmp_l_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c.  */
-  IFUNC_IMPL (i, name, strchrnul,
-	      IFUNC_IMPL_ADD (array, i, strchrnul,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strchrnul_power7)
-	      IFUNC_IMPL_ADD (array, i, strchrnul, 1,
-			      __strchrnul_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c.  */
-  IFUNC_IMPL (i, name, strchr,
-	      IFUNC_IMPL_ADD (array, i, strchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strchr_power7)
-	      IFUNC_IMPL_ADD (array, i, strchr, 1,
-			      __strchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c.  */
-  IFUNC_IMPL (i, name, wcschr,
-	      IFUNC_IMPL_ADD (array, i, wcschr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcschr_power7)
-	      IFUNC_IMPL_ADD (array, i, wcschr,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcschr_power6)
-	      IFUNC_IMPL_ADD (array, i, wcschr, 1,
-			      __wcschr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c.  */
-  IFUNC_IMPL (i, name, wcsrchr,
-	      IFUNC_IMPL_ADD (array, i, wcsrchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcsrchr_power7)
-	      IFUNC_IMPL_ADD (array, i, wcsrchr,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcsrchr_power6)
-	      IFUNC_IMPL_ADD (array, i, wcsrchr, 1,
-			      __wcsrchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c.  */
-  IFUNC_IMPL (i, name, wcscpy,
-	      IFUNC_IMPL_ADD (array, i, wcscpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcscpy_power7)
-	      IFUNC_IMPL_ADD (array, i, wcscpy,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcscpy_power6)
-	      IFUNC_IMPL_ADD (array, i, wcscpy, 1,
-			      __wcscpy_ppc))
-
-  return i;
-}
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h b/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
deleted file mode 100644
index f2e6a4b705..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of the GNU C Library.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <ldsodefs.h>
-
-/* The code checks if _rtld_global_ro was realocated before trying to access
-   the dl_hwcap field. The assembly is to make the compiler not optimize the
-   test (&_rtld_global_ro != NULL), which is always true in ISO C (but not
-   in that case since _rtld_global_ro might not been realocated yet).  */
-#if defined(SHARED) && !IS_IN (rtld)
-# define __GLRO(value) \
-  ({ volatile void **__p = (volatile void**)(&_rtld_global_ro);	\
-    unsigned long int __ret;					\
-     asm ("# x in %0" : "+r" (__p));				\
-     __ret = (__p) ? GLRO(value) : 0;				\
-     __ret; })
-#else
-# define __GLRO(value)  GLRO(value)
-#endif
-
-/* dl_hwcap contains only the latest supported ISA, the macro checks which is
-   and fills the previous ones.  */
-#define INIT_ARCH() \
-  unsigned long int hwcap = __GLRO(dl_hwcap); 			\
-  unsigned long int __attribute__((unused)) hwcap2 = __GLRO(dl_hwcap2); \
-  if (hwcap & PPC_FEATURE_ARCH_2_06)				\
-    hwcap |= PPC_FEATURE_ARCH_2_05 |				\
-	     PPC_FEATURE_POWER5_PLUS |				\
-	     PPC_FEATURE_POWER5 |				\
-	     PPC_FEATURE_POWER4;				\
-  else if (hwcap & PPC_FEATURE_ARCH_2_05)			\
-    hwcap |= PPC_FEATURE_POWER5_PLUS |				\
-	     PPC_FEATURE_POWER5 |				\
-	     PPC_FEATURE_POWER4;				\
-  else if (hwcap & PPC_FEATURE_POWER5_PLUS)			\
-    hwcap |= PPC_FEATURE_POWER5 |				\
-	     PPC_FEATURE_POWER4;				\
-  else if (hwcap & PPC_FEATURE_POWER5)				\
-    hwcap |= PPC_FEATURE_POWER4;
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-power7.S
deleted file mode 100644
index e7eb56a8fc..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-power7.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Optimized memchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__memchr_power7);				\
- .type C_SYMBOL_NAME(__memchr_power7),@function;		\
- C_LABEL(__memchr_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memchr_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/memchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c
deleted file mode 100644
index 1e4b88f9e9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* PowerPC32 default implementation of memchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define MEMCHR  __memchr_ppc
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#ifdef SHARED
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__memchr_ppc, __GI_memchr, __memchr_ppc);
-#endif
-
-extern __typeof (memchr) __memchr_ppc attribute_hidden;
-
-#include <string/memchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c
deleted file mode 100644
index 7eb4be7248..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of memchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# undef memchr
-/* Redefine memchr so that the compiler won't make the weak_alias point
-   to internal hidden definition (__GI_memchr), since PPC32 does not
-   support local IFUNC calls.  */
-# define memchr __redirect_memchr
-# include <string.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_memchr) __memchr_ppc attribute_hidden;
-extern __typeof (__redirect_memchr) __memchr_power7 attribute_hidden;
-
-extern __typeof (__redirect_memchr) __libc_memchr;
-
-libc_ifunc (__libc_memchr,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memchr_power7
-            : __memchr_ppc);
-#undef memchr
-weak_alias (__libc_memchr, memchr)
-#else
-#include <string/memchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-power7.S
deleted file mode 100644
index e002aef057..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-power7.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Optimized memcmp implementation for POWER7/PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memcmp_power7);				\
- .type C_SYMBOL_NAME(__memcmp_power7),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memcmp_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memcmp_power7)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#include <sysdeps/powerpc/powerpc32/power7/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S
deleted file mode 100644
index dc1f21bcb5..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Default memcmp implementation for PowerPC32.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .globl C_SYMBOL_NAME(__memcmp_ppc);				\
-  .type C_SYMBOL_NAME(__memcmp_ppc),@function;		\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  C_LABEL(__memcmp_ppc)					\
-  cfi_startproc;
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  ASM_SIZE_DIRECTIVE(__memcmp_ppc)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-  .globl __GI_memcmp; __GI_memcmp = __memcmp_ppc
-
-# undef weak_alias
-# define weak_alias(a, b)					\
-  .weak b ; b = __memcmp_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc32/power4/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c
deleted file mode 100644
index 00bbcfaa4c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of memcmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# define memcmp __redirect_memcmp
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (memcmp) __memcmp_ppc attribute_hidden;
-extern __typeof (memcmp) __memcmp_power7 attribute_hidden;
-# undef memcmp
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_memcmp, memcmp,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __memcmp_power7
-		       : __memcmp_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-a2.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-a2.S
deleted file mode 100644
index 17a31226c5..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-a2.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized memcpy implementation for PowerPC A2.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memcpy_a2);				\
- .type C_SYMBOL_NAME(__memcpy_a2),@function;			\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memcpy_a2)						\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memcpy_a2)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/a2/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-cell.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-cell.S
deleted file mode 100644
index 59859c6b94..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-cell.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized memcpy implementation for CELL BE PowerPC.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memcpy_cell);				\
- .type C_SYMBOL_NAME(__memcpy_cell),@function;			\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memcpy_cell)						\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memcpy_cell)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/cell/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power6.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power6.S
deleted file mode 100644
index 750151973b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power6.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized memcpy implementation for PowerPC32 on POWER6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memcpy_power6);				\
- .type C_SYMBOL_NAME(__memcpy_power6),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memcpy_power6)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memcpy_power6)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power6/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power7.S
deleted file mode 100644
index 3ac7c32084..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-power7.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized memcpy implementation for PowerPC32/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memcpy_power7);				\
- .type C_SYMBOL_NAME(__memcpy_power7),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memcpy_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memcpy_power7)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S
deleted file mode 100644
index f018684155..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Default memcpy implementation for PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .globl C_SYMBOL_NAME(__memcpy_ppc);				\
-  .type C_SYMBOL_NAME(__memcpy_ppc),@function;		\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  C_LABEL(__memcpy_ppc)					\
-  cfi_startproc;
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  ASM_SIZE_DIRECTIVE(__memcpy_ppc)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_memcpy; __GI_memcpy = __memcpy_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc32/power4/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c
deleted file mode 100644
index b414ba946b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Multiple versions of memcpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for the definition in lib and for
-   DSO.  In static binaries we need memcpy before the initialization
-   happened.  */
-#if defined SHARED && IS_IN (libc)
-# undef memcpy
-# define memcpy __redirect_memcpy
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (memcpy) __memcpy_ppc attribute_hidden;
-extern __typeof (memcpy) __memcpy_cell attribute_hidden;
-extern __typeof (memcpy) __memcpy_power6 attribute_hidden;
-extern __typeof (memcpy) __memcpy_a2 attribute_hidden;
-extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
-# undef memcpy
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_memcpy, memcpy,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __memcpy_power7
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __memcpy_a2
-			 : (hwcap & PPC_FEATURE_ARCH_2_05)
-			   ? __memcpy_power6
-			   : (hwcap & PPC_FEATURE_CELL_BE)
-			     ? __memcpy_cell
-			     : __memcpy_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c
deleted file mode 100644
index 12902fec3f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-power7.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Power7 multiarch memmove.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <memcopy.h>
-
-extern __typeof (_wordcopy_fwd_aligned) _wordcopy_fwd_aligned_power7;
-extern __typeof (_wordcopy_fwd_dest_aligned) _wordcopy_fwd_dest_aligned_power7;
-extern __typeof (_wordcopy_bwd_aligned) _wordcopy_bwd_aligned_power7;
-extern __typeof (_wordcopy_bwd_dest_aligned) _wordcopy_bwd_dest_aligned_power7;
-
-#define _wordcopy_fwd_aligned       _wordcopy_fwd_aligned_power7
-#define _wordcopy_fwd_dest_aligned  _wordcopy_fwd_dest_aligned_power7
-#define _wordcopy_bwd_aligned       _wordcopy_bwd_aligned_power7
-#define _wordcopy_bwd_dest_aligned  _wordcopy_bwd_dest_aligned_power7
-
-extern __typeof (memcpy) __memcpy_power7;
-#define memcpy __memcpy_power7
-
-extern __typeof (memmove) __memmove_power7;
-#define MEMMOVE __memmove_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <string/memmove.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c
deleted file mode 100644
index 59f298507c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove-ppc.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Power7 multiarch memmove.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <memcopy.h>
-
-extern __typeof (_wordcopy_fwd_aligned) _wordcopy_fwd_aligned_ppc;
-extern __typeof (_wordcopy_fwd_dest_aligned) _wordcopy_fwd_dest_aligned_ppc;
-extern __typeof (_wordcopy_bwd_aligned) _wordcopy_bwd_aligned_ppc;
-extern __typeof (_wordcopy_bwd_dest_aligned) _wordcopy_bwd_dest_aligned_ppc;
-
-#define _wordcopy_fwd_aligned       _wordcopy_fwd_aligned_ppc
-#define _wordcopy_fwd_dest_aligned  _wordcopy_fwd_dest_aligned_ppc
-#define _wordcopy_bwd_aligned       _wordcopy_bwd_aligned_ppc
-#define _wordcopy_bwd_dest_aligned  _wordcopy_bwd_dest_aligned_ppc
-
-extern __typeof (memcpy) __memcpy_ppc;
-#define memcpy __memcpy_ppc
-
-extern __typeof (memmove) __memmove_ppc;
-#define MEMMOVE __memmove_ppc
-
-#if defined SHARED
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)  \
-  __hidden_ver1 (__memmove_ppc, __GI_memmove, __memmove_ppc);
-#endif
-
-#include <string/memmove.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c
deleted file mode 100644
index 481139fae8..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of memmove. PowerPC32 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-/* Redefine memmove so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias, below.  */
-# define memmove __redirect_memmove
-# include <string.h>
-# include "init-arch.h"
-
-extern __typeof (memmove) __memmove_ppc attribute_hidden;
-extern __typeof (memmove) __memmove_power7 attribute_hidden;
-# undef memmove
-
-libc_ifunc_redirected (__redirect_memmove, memmove,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __memmove_power7
-		       : __memmove_ppc);
-#else
-# include <string/memmove.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-power7.S
deleted file mode 100644
index a1a078dec6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-power7.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Optimized mempcpy implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__mempcpy_power7);			\
- .type C_SYMBOL_NAME(__mempcpy_power7),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__mempcpy_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__mempcpy_power7)
-
-#include <sysdeps/powerpc/powerpc32/power7/mempcpy.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c
deleted file mode 100644
index 2a20060e5b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* PowerPC32 default implementation of mempcpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define MEMPCPY  __mempcpy_ppc
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-#undef weak_alias
-#define weak_alias(a, b)
-
-#if defined SHARED
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)  \
-  __hidden_ver1 (__mempcpy_ppc, __GI_mempcpy, __mempcpy_ppc);
-#endif
-
-#include <string/mempcpy.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
deleted file mode 100644
index 0c7250a4bf..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of mempcpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define mempcpy __redirect_mempcpy
-# define __mempcpy __redirect___mempcpy
-# define NO_MEMPCPY_STPCPY_REDIRECT
-/* Omit the mempcpy inline definitions because it would redefine mempcpy.  */
-# define _HAVE_STRING_ARCH_mempcpy 1
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__mempcpy) __mempcpy_ppc attribute_hidden;
-extern __typeof (__mempcpy) __mempcpy_power7 attribute_hidden;
-# undef mempcpy
-# undef __mempcpy
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect___mempcpy,  __mempcpy,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __mempcpy_power7
-		       : __mempcpy_ppc);
-
-weak_alias (__mempcpy, mempcpy)
-#else
-# include <string/mempcpy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-power7.S
deleted file mode 100644
index 4c3f6af9f3..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-power7.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Optimized memrchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__memrchr_power7);			\
- .type C_SYMBOL_NAME(__memrchr_power7),@function;		\
- C_LABEL(__memrchr_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memrchr_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/memrchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
deleted file mode 100644
index a0247f49c8..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* PowerPC32 default implementation of memrchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define MEMRCHR  __memrchr_ppc
-# include <string.h>
-extern void *__memrchr_ppc (const void *, int, size_t);
-#endif
-
-#include <string/memrchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c
deleted file mode 100644
index fb09fdf89c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of memrchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__memrchr) __memrchr_ppc attribute_hidden;
-extern __typeof (__memrchr) __memrchr_power7 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__memrchr,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memrchr_power7
-            : __memrchr_ppc);
-
-weak_alias (__memrchr, memrchr)
-#else
-#include <string/memrchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power6.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power6.S
deleted file mode 100644
index 55ff437a20..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power6.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized 32-bit memset implementation for POWER6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memset_power6);				\
- .type C_SYMBOL_NAME(__memset_power6),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memset_power6)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memset_power6)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power6/memset.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power7.S
deleted file mode 100644
index ced4cb015b..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-power7.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized memset implementation for PowerPC32/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__memset_power7);				\
- .type C_SYMBOL_NAME(__memset_power7),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__memset_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__memset_power7)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/memset.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S
deleted file mode 100644
index 63cd5b4eea..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Default memset implementation for PowerPC32.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .globl C_SYMBOL_NAME(__memset_ppc);				\
-  .type C_SYMBOL_NAME(__memset_ppc),@function;		\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  C_LABEL(__memset_ppc)					\
-  cfi_startproc;
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  ASM_SIZE_DIRECTIVE(__memset_ppc)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_memset; __GI_memset = __memset_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc32/power4/memset.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memset.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memset.c
deleted file mode 100644
index afcca12c78..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memset.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of memset.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-# define memset __redirect_memset
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (memset) __memset_ppc attribute_hidden;
-extern __typeof (memset) __memset_power6 attribute_hidden;
-extern __typeof (memset) __memset_power7 attribute_hidden;
-# undef memset
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_memset, memset,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __memset_power7
-		       : (hwcap & PPC_FEATURE_ARCH_2_05)
-			 ? __memset_power6
-			 : __memset_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-power7.S
deleted file mode 100644
index e088c6b046..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-power7.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Optimized rawrawmemchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__rawmemchr_power7);			\
- .type C_SYMBOL_NAME(__rawmemchr_power7),@function;		\
- C_LABEL(__rawmemchr_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__rawmemchr_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/rawmemchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c
deleted file mode 100644
index bce76cbe75..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* PowerPC32 default implementation of rawmemchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define RAWMEMCHR  __rawmemchr_ppc
-#undef weak_alias
-#define weak_alias(a, b)
-#ifdef SHARED
-# undef libc_hidden_def
-# define libc_hidden_def(name)  \
-  __hidden_ver1 (__rawmemchr_ppc, __GI___rawmemchr, __rawmemchr_ppc);
-#endif
-
-extern __typeof (rawmemchr) __rawmemchr_ppc attribute_hidden;
-
-#include <string/rawmemchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c
deleted file mode 100644
index 6ea56db0af..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Multiple versions of rawmemchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define __rawmemchr __redirect___rawmemchr
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__rawmemchr) __rawmemchr_ppc attribute_hidden;
-extern __typeof (__rawmemchr) __rawmemchr_power7 attribute_hidden;
-# undef __rawmemchr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect___rawmemchr, __rawmemchr,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __rawmemchr_power7
-		       : __rawmemchr_ppc);
-weak_alias (__rawmemchr, rawmemchr)
-#else
-#include <string/rawmemchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memcmp.S b/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memcmp.S
deleted file mode 100644
index b676dd147e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memcmp.S
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Loader memcmp implementation for PowerPC32.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memset.S b/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memset.S
deleted file mode 100644
index b9eb81328f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-memset.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/memset.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strchr.S b/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strchr.S
deleted file mode 100644
index 5d197557af..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strchr.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/strchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strnlen.c b/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strnlen.c
deleted file mode 100644
index 79704aa2d9..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/rtld-strnlen.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string/strnlen.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S
deleted file mode 100644
index f9324a972e..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp-power7.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Optimized strcasecmp implementation for PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strcasecmp_power7);			\
- .type C_SYMBOL_NAME(__strcasecmp_power7),@function;		\
- C_LABEL(__strcasecmp_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strcasecmp_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c
deleted file mode 100644
index da7d8415d2..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of strcasecmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strcasecmp __strcasecmp_ppc
-
-extern __typeof (__strcasecmp) __strcasecmp_ppc attribute_hidden;
-extern __typeof (__strcasecmp) __strcasecmp_power7 attribute_hidden;
-#endif
-
-#include <string/strcasecmp.c>
-#undef strcasecmp
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strcasecmp) __libc_strcasecmp;
-libc_ifunc (__libc_strcasecmp,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strcasecmp_power7
-            : __strcasecmp_ppc);
-
-weak_alias (__libc_strcasecmp, strcasecmp)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S
deleted file mode 100644
index 66e0584139..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l-power7.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Default strcasecmp implementation for PowerPC32.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strcasecmp_l_power7);			\
- .type C_SYMBOL_NAME(__strcasecmp_l_power7),@function;		\
- C_LABEL(__strcasecmp_l_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strcasecmp_l_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#define USE_IN_EXTENDED_LOCALE_MODEL
-
-#include <sysdeps/powerpc/powerpc32/power7/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c
deleted file mode 100644
index 85411f5558..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of strcasecmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strcasecmp_l __strcasecmp_l_ppc
-
-extern __typeof (__strcasecmp_l) __strcasecmp_l_ppc attribute_hidden;
-extern __typeof (__strcasecmp_l) __strcasecmp_l_power7 attribute_hidden;
-#endif
-
-#include <string/strcasecmp_l.c>
-#undef strcasecmp_l
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strcasecmp_l) __libc_strcasecmp_l;
-libc_ifunc (__libc_strcasecmp_l,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strcasecmp_l_power7
-            : __strcasecmp_l_ppc);
-
-weak_alias (__libc_strcasecmp_l, strcasecmp_l)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-power7.S
deleted file mode 100644
index 7624a27bbd..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-power7.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Optimized strchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strchr_power7);			\
- .type C_SYMBOL_NAME(__strchr_power7),@function;		\
- C_LABEL(__strchr_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strchr_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-ppc32.S
deleted file mode 100644
index 7dcd55af59..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr-ppc32.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* PowerPC32 default implementation of strchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef SHARED
-# undef ENTRY
-# define ENTRY(name)						\
-    .globl C_SYMBOL_NAME(__strchr_ppc);			\
-    .type C_SYMBOL_NAME(__strchr_ppc),@function;		\
-    .align ALIGNARG(2);						\
-    C_LABEL(__strchr_ppc)					\
-    cfi_startproc;						\
-    CALL_MCOUNT
-
-# undef END
-# define END(name)						\
-    cfi_endproc;						\
-    ASM_SIZE_DIRECTIVE(__strchr_ppc)				\
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_strchr; __GI_strchr = __strchr_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc32/strchr.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c
deleted file mode 100644
index 712bc1a4b8..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of strchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-# define strchr __redirect_strchr
-/* Omit the strchr inline definitions because it would redefine strchr.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strchr) __strchr_ppc attribute_hidden;
-extern __typeof (strchr) __strchr_power7 attribute_hidden;
-# undef strchr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strchr,  strchr,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strchr_power7
-		       : __strchr_ppc);
-weak_alias (strchr, index)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-power7.S
deleted file mode 100644
index 3baad50818..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-power7.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Optimized strchrnul implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strchrnul_power7);			\
- .type C_SYMBOL_NAME(__strchrnul_power7),@function;		\
- C_LABEL(__strchrnul_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strchrnul_power7)
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strchrnul.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c
deleted file mode 100644
index c981eb67f3..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* PowerPC32 default implementation of strchrnul.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRCHRNUL  __strchrnul_ppc
-
-#undef weak_alias
-#define weak_alias(a,b )
-
-extern __typeof (strchrnul) __strchrnul_ppc attribute_hidden;
-
-#include <string/strchrnul.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c
deleted file mode 100644
index b8f853d8e4..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of strchrnul.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strchrnul) __strchrnul_ppc attribute_hidden;
-extern __typeof (__strchrnul) __strchrnul_power7 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__strchrnul,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strchrnul_power7
-            : __strchrnul_ppc);
-
-weak_alias (__strchrnul, strchrnul)
-#else
-#include <string/strchrnul.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-power7.S
deleted file mode 100644
index 7681b827d6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-power7.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Optimized strlen implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strlen_power7);				\
- .type C_SYMBOL_NAME(__strlen_power7),@function;		\
- C_LABEL(__strlen_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strlen_power7)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strlen.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S
deleted file mode 100644
index b665977e17..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Default strlen implementation for PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-
-#include <sysdep.h>
-
-# undef ENTRY
-# define ENTRY(name)						\
-  .globl C_SYMBOL_NAME(__strlen_ppc);				\
-  .type C_SYMBOL_NAME(__strlen_ppc),@function;		\
-  C_LABEL(__strlen_ppc)					\
-  cfi_startproc;
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  ASM_SIZE_DIRECTIVE(__strlen_ppc)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-  .globl __GI_strlen; __GI_strlen = __strlen_ppc
-
-#endif
-
-#include <sysdeps/powerpc/powerpc32/strlen.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c
deleted file mode 100644
index c13940e999..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Multiple versions of strlen.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-# define strlen __redirect_strlen
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strlen) __strlen_ppc attribute_hidden;
-extern __typeof (strlen) __strlen_power7 attribute_hidden;
-# undef strlen
-
-libc_ifunc_redirected (__redirect_strlen, strlen,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strlen_power7
-		       : __strlen_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strncase-power7.c
deleted file mode 100644
index a49bed9278..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcasecmp_l implememtation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-
-#include <string.h>
-
-#define __strncasecmp __strncasecmp_power7
-
-extern __typeof (strncasecmp) __strncasecmp_power7 attribute_hidden;
-
-#include <string/strncase.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c
deleted file mode 100644
index 089faa9853..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of strncasecmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strncasecmp __strncasecmp_ppc
-extern __typeof (__strncasecmp) __strncasecmp_ppc attribute_hidden;
-extern __typeof (__strncasecmp) __strncasecmp_power7 attribute_hidden;
-#endif
-
-#include <string/strncase.c>
-#undef strncasecmp
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-extern __typeof (__strncasecmp) __libc_strncasecmp;
-libc_ifunc (__libc_strncasecmp,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __strncasecmp_power7
-             : __strncasecmp_ppc);
-weak_alias (__libc_strncasecmp, strncasecmp)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l-power7.c
deleted file mode 100644
index 80f7d48133..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcasecmp_l implememtation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define __strncasecmp_l __strncasecmp_l_power7
-#define USE_IN_EXTENDED_LOCALE_MODEL    1
-
-extern __typeof (strncasecmp_l) __strncasecmp_l_power7 attribute_hidden;
-
-#include <string/strncase.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c
deleted file mode 100644
index c988c8dd3f..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Multiple versions of strncasecmp_l.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strncasecmp_l __strncasecmp_l_ppc
-extern __typeof (__strncasecmp_l) __strncasecmp_l_ppc attribute_hidden;
-extern __typeof (__strncasecmp_l) __strncasecmp_l_power7 attribute_hidden;
-#endif
-
-#include <string/strncase_l.c>
-#undef strncasecmp_l
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-extern __typeof (__strncasecmp_l) __libc_strncasecmp_l;
-libc_ifunc (__libc_strncasecmp_l,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __strncasecmp_l_power7
-             : __strncasecmp_l_ppc);
-
-weak_alias (__libc_strncasecmp_l, strncasecmp_l)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-power7.S
deleted file mode 100644
index cbe969a5a4..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-power7.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Optimized strcmp implementation for POWER7/PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
- .globl C_SYMBOL_NAME(__strncmp_power7);			\
- .type C_SYMBOL_NAME(__strncmp_power7),@function;		\
- .align ALIGNARG(alignt);					\
- EALIGN_W_##words;						\
- C_LABEL(__strncmp_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strncmp_power7)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S
deleted file mode 100644
index 2f5d2d3651..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .globl C_SYMBOL_NAME(__strncmp_ppc);			\
-  .type C_SYMBOL_NAME(__strncmp_ppc),@function;		\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  C_LABEL(__strncmp_ppc)					\
-  cfi_startproc;
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  ASM_SIZE_DIRECTIVE(__strncmp_ppc)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_strncmp; __GI_strncmp = __strncmp_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc32/power4/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c
deleted file mode 100644
index bb4e892df8..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of strncmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-# define strncmp __redirect_strncmp
-/* Omit the strncmp inline definitions because it would redefine strncmp.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strncmp) __strncmp_ppc attribute_hidden;
-extern __typeof (strncmp) __strncmp_power4 attribute_hidden;
-extern __typeof (strncmp) __strncmp_power7 attribute_hidden;
-# undef strncmp
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strncmp, strncmp,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strncmp_power7
-		       : __strncmp_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S b/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S
deleted file mode 100644
index 3f5a32f0c6..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Optimized strnlen implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
- .globl C_SYMBOL_NAME(__strnlen_power7);			\
- .type C_SYMBOL_NAME(__strnlen_power7),@function;		\
- C_LABEL(__strnlen_power7)					\
- cfi_startproc;
-
-#undef END
-#define END(name)						\
- cfi_endproc;							\
- ASM_SIZE_DIRECTIVE(__strnlen_power7)
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc32/power7/strnlen.S>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c
deleted file mode 100644
index b41fc9d359..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Default strnlen implementation for PowerPC32.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define STRNLEN  __strnlen_ppc
-#ifdef SHARED
-# undef libc_hidden_def
-# define libc_hidden_def(name)  \
-    __hidden_ver1 (__strnlen_ppc, __GI_strnlen, __strnlen_ppc); \
-    strong_alias (__strnlen_ppc, __strnlen_ppc_1); \
-    __hidden_ver1 (__strnlen_ppc_1, __GI___strnlen, __strnlen_ppc_1);
-#endif
-
-#include <string/strnlen.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c
deleted file mode 100644
index f2883e69eb..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strnlen.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define strnlen __redirect_strnlen
-# define __strnlen __redirect___strnlen
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strnlen) __strnlen_ppc attribute_hidden;
-extern __typeof (__strnlen) __strnlen_power7 attribute_hidden;
-# undef strnlen
-# undef __strnlen
-
-libc_ifunc_redirected (__redirect___strnlen, __strnlen,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strnlen_power7
-		       : __strnlen_ppc);
-weak_alias (__strnlen, strnlen)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c
deleted file mode 100644
index 6610b5ef82..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* wcschr.c - Wide Character Search for powerpc32/power6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#define WCSCHR __wcschr_power6
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-#include <sysdeps/powerpc/power6/wcschr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c
deleted file mode 100644
index 7e22c441ac..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* wcschr.c - Wide Character Search for powerpc32/power7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#define WCSCHR __wcschr_power7
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-#include <sysdeps/powerpc/power6/wcschr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
deleted file mode 100644
index 777ec080b2..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#if IS_IN (libc)
-# undef libc_hidden_weak
-# define libc_hidden_weak(name)
-
-# undef weak_alias
-# undef libc_hidden_def
-
-# ifdef SHARED
-#  define libc_hidden_def(name)  \
-    __hidden_ver1 (__wcschr_ppc, __GI_wcschr, __wcschr_ppc); \
-    strong_alias (__wcschr_ppc, __wcschr_ppc_1); \
-    __hidden_ver1 (__wcschr_ppc_1, __GI___wcschr, __wcschr_ppc_1);
-#  define weak_alias(name,alias)
-# else
-#  define weak_alias(name, alias) \
-    _weak_alias(__wcschr_ppc, __wcschr)
-#  define libc_hidden_def(name)
-# endif /* SHARED  */
-#endif
-
-extern __typeof (wcschr) __wcschr_ppc;
-
-#define WCSCHR  __wcschr_ppc
-#include <wcsmbs/wcschr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c
deleted file mode 100644
index 059665f1b1..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of wcschr
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define wcschr __redirect_wcschr
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_wcschr) __wcschr_ppc attribute_hidden;
-extern __typeof (__redirect_wcschr) __wcschr_power6 attribute_hidden;
-extern __typeof (__redirect_wcschr) __wcschr_power7 attribute_hidden;
-
-extern __typeof (__redirect_wcschr) __libc_wcschr;
-
-libc_ifunc (__libc_wcschr,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __wcschr_power7 :
-	       (hwcap & PPC_FEATURE_ARCH_2_05)
-	       ? __wcschr_power6
-             : __wcschr_ppc);
-#undef wcschr
-weak_alias (__libc_wcschr, wcschr)
-#else
-#include <wcsmbs/wcschr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c
deleted file mode 100644
index 8e732fc80c..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#define WCSCPY __wcscpy_power6
-
-#include <sysdeps/powerpc/power6/wcscpy.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c
deleted file mode 100644
index dece1024f4..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#define WCSCPY __wcscpy_power7
-
-#include <sysdeps/powerpc/power6/wcscpy.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
deleted file mode 100644
index b48ff54d92..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#if IS_IN (libc)
-# define WCSCPY  __wcscpy_ppc
-#endif
-
-extern __typeof (wcscpy) __wcscpy_ppc;
-
-#include <wcsmbs/wcscpy.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c
deleted file mode 100644
index a59e794f03..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of wcscpy
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (wcscpy) __wcscpy_ppc attribute_hidden;
-extern __typeof (wcscpy) __wcscpy_power6 attribute_hidden;
-extern __typeof (wcscpy) __wcscpy_power7 attribute_hidden;
-
-libc_ifunc (wcscpy,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __wcscpy_power7 :
-	       (hwcap & PPC_FEATURE_ARCH_2_05)
-	       ? __wcscpy_power6
-             : __wcscpy_ppc);
-#else
-#include <wcsmbs/wcscpy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c
deleted file mode 100644
index 0391e12442..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define WCSRCHR      __wcsrchr_power6
-
-#include <sysdeps/powerpc/power6/wcsrchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c
deleted file mode 100644
index 1167a75734..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define WCSRCHR      __wcsrchr_power7
-
-#include <sysdeps/powerpc/power6/wcsrchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c
deleted file mode 100644
index 1c8e12eefb..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <wchar.h>
-
-#if IS_IN (libc)
-# define WCSRCHR  __wcsrchr_ppc
-#endif
-
-extern __typeof (wcsrchr) __wcsrchr_ppc;
-
-#include <wcsmbs/wcsrchr.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c
deleted file mode 100644
index 10820443b4..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of wcsrchr
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (wcsrchr) __wcsrchr_ppc attribute_hidden;
-extern __typeof (wcsrchr) __wcsrchr_power6 attribute_hidden;
-extern __typeof (wcsrchr) __wcsrchr_power7 attribute_hidden;
-
-libc_ifunc (wcsrchr,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __wcsrchr_power7 :
-	       (hwcap & PPC_FEATURE_ARCH_2_05)
-	       ? __wcsrchr_power6
-             : __wcsrchr_ppc);
-#else
-#include <wcsmbs/wcsrchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c
deleted file mode 100644
index d2095d85ac..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define WORDCOPY_FWD_ALIGNED      _wordcopy_fwd_aligned_power7
-#define WORDCOPY_FWD_DEST_ALIGNED _wordcopy_fwd_dest_aligned_power7
-#define WORDCOPY_BWD_ALIGNED      _wordcopy_bwd_aligned_power7
-#define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned_power7
-
-#include <sysdeps/powerpc/power6/wordcopy.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c
deleted file mode 100644
index ecdc2fa73d..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define WORDCOPY_FWD_ALIGNED      _wordcopy_fwd_aligned_ppc
-# define WORDCOPY_FWD_DEST_ALIGNED _wordcopy_fwd_dest_aligned_ppc
-# define WORDCOPY_BWD_ALIGNED      _wordcopy_bwd_aligned_ppc
-# define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned_ppc
-
-# include <sysdeps/powerpc/power4/wordcopy.c>
-#else
-# include <string/wordcopy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/strncmp.S b/sysdeps/powerpc/powerpc32/power4/strncmp.S
deleted file mode 100644
index 42a67e7e8a..0000000000
--- a/sysdeps/powerpc/powerpc32/power4/strncmp.S
+++ /dev/null
@@ -1,196 +0,0 @@
-/* Optimized strcmp implementation for PowerPC32.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
-
-EALIGN (strncmp, 4, 0)
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3  r10
-#define rWORD4  r11
-#define rFEFE	r8	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	or	rTMP, rSTR2, rSTR1
-	lis	r7F7F, 0x7f7f
-	dcbt	0,rSTR2
-	clrlwi.	rTMP, rTMP, 30
-	cmplwi	cr1, rN, 0
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-/* We are word aligned so set up for two loops.  first a word
-   loop, then fall into the byte loop if any residual.  */
-	srwi.	rTMP, rN, 2
-	clrlwi	rN, rN, 30
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	cmplwi	cr1, rN, 0
-	beq	L(unaligned)
-
-	mtctr	rTMP	/* Power4 wants mtctr 1st in dispatch group.  */
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-	b	L(g1)
-
-L(g0):
-	lwzu	rWORD1, 4(rSTR1)
-	bne-	cr1, L(different)
-	lwzu	rWORD2, 4(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	bdz	L(tail)
-	and.	rTMP, rTMP, rNEG
-	cmpw	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	slwi	rTMP, rTMP, 1
-	addi    rTMP2, rTMP, -1
-	andc    rTMP2, rTMP2, rTMP
-	and	rWORD2, rWORD2, rTMP2		/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rldimi	rTMP2, rWORD2, 24, 32
-	rldimi	rTMP, rWORD1, 24, 32
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rldimi	rTMP2, rWORD2, 24, 32
-	rldimi	rTMP, rWORD1, 24, 32
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzw	rBITDIF, rBITDIF
-	cntlzw	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpw	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+	cr1
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+
-L(highbit):
-	ori	rRTN, rWORD2, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(tail):
-	and.	rTMP, rTMP, rNEG
-	cmpw	cr1, rWORD1, rWORD2
-	bne-	L(endstring)
-	addi	rSTR1, rSTR1, 4
-	bne-	cr1, L(different)
-	addi	rSTR2, rSTR2, 4
-	cmplwi	cr1, rN, 0
-L(unaligned):
-	mtctr   rN	/* Power4 wants mtctr 1st in dispatch group */
-	ble	cr1, L(ux)
-L(uz):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	.align 4
-L(u1):
-	cmpwi	cr1, rWORD1, 0
-	bdz	L(u4)
-	cmpw	rWORD1, rWORD2
-	beq-	cr1, L(u4)
-	bne-	L(u4)
-	lbzu    rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	cmpwi	cr1, rWORD3, 0
-	bdz	L(u3)
-	cmpw	rWORD3, rWORD4
-	beq-    cr1, L(u3)
-	bne-    L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	cmpwi	cr1, rWORD1, 0
-	bdz	L(u4)
-	cmpw	rWORD1, rWORD2
-	beq-	cr1, L(u4)
-	bne-	L(u4)
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	cmpwi	cr1, rWORD3, 0
-	bdz	L(u3)
-	cmpw	rWORD3, rWORD4
-	beq-    cr1, L(u3)
-	bne-	L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	b       L(u1)
-
-L(u3):  sub     rRTN, rWORD3, rWORD4
-	blr
-L(u4):	sub	rRTN, rWORD1, rWORD2
-	blr
-L(ux):
-	li	rRTN, 0
-	blr
-END (strncmp)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc32/power5+/Implies b/sysdeps/powerpc/powerpc32/power5+/Implies
deleted file mode 100644
index 02d222d22a..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-powerpc/power5+/fpu
-powerpc/power5+
-powerpc/powerpc32/power5/fpu
-powerpc/powerpc32/power5
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power5+/fpu/multiarch/Implies
deleted file mode 100644
index 76a985188e..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
deleted file mode 100644
index efe7be8242..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceil.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* ceil function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__ceil, 4, 0)
-	frip	fp1, fp1
-	blr
-	END (__ceil)
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
deleted file mode 100644
index cff058e7ef..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* ceilf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__ceilf, 4, 0)
-	frip	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
deleted file mode 100644
index 9f040d8457..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* floor function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__floor, 4, 0)
-	frim	fp1, fp1
-	blr
-	END (__floor)
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
deleted file mode 100644
index b84e4c64fb..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* floorf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__floorf, 4, 0)
-	frim	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__floorf)
-
-weak_alias (__floorf, floorf)
-
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
deleted file mode 100644
index adbc7ebe18..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/* lround function.  POWER5+, PowerPC32 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long [r3] llround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use the Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power5"
-ENTRY (__llround)
-	stwu    r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	frin	fp2,fp1
-	fctidz	fp3,fp2		/* Convert To Integer Word lround toward 0.  */
-	stfd	fp3,8(r1)
-	nop	/* Ensure the following load is in a different dispatch  */
-	nop	/* group to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S
deleted file mode 100644
index 030d2fdff8..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S  */
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
deleted file mode 100644
index f61846331d..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S
+++ /dev/null
@@ -1,57 +0,0 @@
-/* lround function.  POWER5+, PowerPC32 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long [r3] lround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use the Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power5"
-ENTRY (__lround)
-	stwu    r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	frin	fp2,fp1
-	fctiwz	fp3,fp2		/* Convert To Integer Word lround toward 0.  */
-	stfd	fp3,8(r1)
-	nop	/* Ensure the following load is in a different dispatch  */
-	nop	/* group to avoid pipe stall on POWER4&5.  */
-	nop
-	lwz	r3,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__lround)
-
-weak_alias (__lround, lround)
-
-strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
deleted file mode 100644
index 91b42352f3..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* round function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__round, 4, 0)
-	frin	fp1, fp1
-	blr
-	END (__round)
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
deleted file mode 100644
index 4e0c7e5cec..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* roundf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__roundf, 4, 0)
-	frin	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__roundf)
-
-weak_alias (__roundf, roundf)
-
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
deleted file mode 100644
index ceca529826..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_trunc.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* trunc function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__trunc, 4, 0)
-	friz	fp1, fp1
-	blr
-	END (__trunc)
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
deleted file mode 100644
index 60be314c28..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* truncf function.  PowerPC32/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__truncf, 4, 0)
-	friz	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__truncf)
-
-weak_alias (__truncf, truncf)
-
diff --git a/sysdeps/powerpc/powerpc32/power5+/multiarch/Implies b/sysdeps/powerpc/powerpc32/power5+/multiarch/Implies
deleted file mode 100644
index 54b3931625..0000000000
--- a/sysdeps/powerpc/powerpc32/power5+/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power5/Implies b/sysdeps/powerpc/powerpc32/power5/Implies
deleted file mode 100644
index 17139bf21c..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power4/fpu
-powerpc/powerpc32/power4
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power5/fpu/multiarch/Implies
deleted file mode 100644
index c6c090a60e..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power4/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
deleted file mode 100644
index 09a2fe3865..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power5
-EALIGN (__isnan, 4, 0)
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	ori	r1,r1,0
-	stfd	fp1,24(r1)	/* copy FPR to GPR */
-	ori	r1,r1,0
-	lwz	r4,24+HIWORD(r1)
-	lwz	r5,24+LOWORD(r1)
-	lis	r0,0x7ff0	/* const long r0 0x7ff00000 00000000 */
-	clrlwi	r4,r4,1		/* x = fabs(x) */
-	cmpw	cr7,r4,r0	/* if (fabs(x) =< inf) */
-	cmpwi	cr6,r5,0
-	li	r3,0		/* then return 0 */
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	bltlr+	cr7
-	bgt-	cr7,L(NaN)
-	beqlr+	cr6
-L(NaN):
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
deleted file mode 100644
index 7948f52e84..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/fpu/s_isnanf.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnanf(x)  */
-	.machine power5
-EALIGN (__isnanf, 4, 0)
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	stfs	fp1,28(r1)	/* copy FPR to GPR */
-	nop
-	nop
-	lwz	r4,28(r1)
-	lis	r0,0x7f80	/* const long r0 0x7f800000 */
-	clrlwi	r4,r4,1		/* x = fabs(x) */
-	cmpw	cr7,r4,r0	/* if (fabs(x) =< inf) */
-	li	r3,0		/* then return 0 */
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	blelr+	cr7
-L(NaN):
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnanf)
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt_compat.S b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt_compat.S
deleted file mode 100644
index 93625c5aa9..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt_compat.S
+++ /dev/null
@@ -1,106 +0,0 @@
-/* sqrt function.  PowerPC32 version.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* double [fp1] sqrt (double x [fp1])
-   Power4 (ISA V2.0) and above implement sqrt in hardware (not optional).
-   The fsqrt instruction generates the correct value for all inputs and
-   sets the appropriate floating point exceptions.  Extended checking is
-   only needed to set errno (via __kernel_standard) if the input value
-   is negative.
-
-   So compare the input value against the absolute value of itself.
-   This will compare equal unless the value is negative (EDOM) or a NAN,
-   in which case we branch to the extend wrapper.  If equal we can return
-   the result directly.
-
-   This part of the function looks like a leaf routine,  so no need to
-   stack a frame or execute prologue/epilogue code. It is safe to
-   branch directly to w_sqrt as long as the input value (f1) is
-   preserved. Putting the sqrt result into f2 (float parameter 2)
-   allows passing both the input value and sqrt result into the extended
-   wrapper so there is no need to recompute.
-
-   This tactic avoids the overhead of stacking a frame for the normal
-   (non-error) case.  Until gcc supports prologue shrink-wrapping
-   this is the best we can do.  */
-
-	.section	".text"
-	.machine power4
-EALIGN (__sqrt, 5, 0)
-	fabs	fp0,fp1
-	fsqrt	fp2,fp1
-	fcmpu	cr1,fp0,fp1
-	bne-	cr1,.Lw_sqrt
-	fmr	fp1,fp2
-	blr
-	.align	4
-.Lw_sqrt:
-	mflr	r0
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset(16)
-	fmr	fp12,fp2
-	stw	r0,20(r1)
-	stw	r30,8(r1)
-	cfi_offset(lr,20-16)
-	cfi_offset(r30,8-16)
-#ifdef SHARED
-	SETUP_GOT_ACCESS(r30,got_label)
-	addis	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
-	lwz	r9,_LIB_VERSION@got(30)
-	lwz	r0,0(r9)
-#else
-	lis	r9,_LIB_VERSION@ha
-	lwz	r0,_LIB_VERSION@l(r9)
-#endif
-/*  if (_LIB_VERSION == _IEEE_) return z; */
-	cmpwi	cr7,r0,-1
-	beq-	cr7,.L4
-/*  if (x != x) return z; !isnan*/
-	fcmpu	cr7,fp1,fp1
-	bne-	cr7,.L4
-/*  if  (x < 0.0)
-    return __kernel_standard (x, x, 26) */
-	fmr	fp2,fp1
-	li	r3,26
-	bne- 	cr1,.L11
-.L4:
-	lwz	r0,20(r1)
-	fmr	fp1,fp12
-	lwz	r30,8(r1)
-	addi	r1,r1,16
-	mtlr 	r0
-	blr
-.L11:
-	bl	__kernel_standard@plt
-	fmr	fp12,fp1
-	b	.L4
-	END	(__sqrt)
-
-weak_alias (__sqrt, sqrt)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__sqrt, sqrtl)
-strong_alias (__sqrt, __sqrtl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf_compat.S b/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf_compat.S
deleted file mode 100644
index 2ca86b6155..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf_compat.S
+++ /dev/null
@@ -1,98 +0,0 @@
-/* sqrtf function.  PowerPC32 version.
-   Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* float [fp1] sqrts (float x [fp1])
-   Power4 (ISA V2.0) and above implement sqrt in hardware (not optional).
-   The fsqrts instruction generates the correct value for all inputs and
-   sets the appropriate floating point exceptions.  Extended checking is
-   only needed to set errno (via __kernel_standard) if the input value
-   is negative.
-
-   So compare the input value against the absolute value of itself.
-   This will compare equal unless the value is negative (EDOM) or a NAN,
-   in which case we branch to the extend wrapper.  If equal we can return
-   the result directly.
-
-   This part of the function looks like a leaf routine,  so no need to
-   stack a frame or execute prologue/epilogue code. It is safe to
-   branch directly to w_sqrt as long as the input value (f1) is
-   preserved. Putting the sqrt result into f2 (float parameter 2)
-   allows passing both the input value and sqrt result into the extended
-   wrapper so there is no need to recompute.
-
-   This tactic avoids the overhead of stacking a frame for the normal
-   (non-error) case.  Until gcc supports prologue shrink-wrapping
-   this is the best we can do.  */
-
-	.section	".text"
-	.machine power4
-EALIGN (__sqrtf, 5, 0)
-	fabs	fp0,fp1
-	fsqrts	fp2,fp1
-	fcmpu	cr1,fp0,fp1
-	bne-	cr1,.Lw_sqrtf
-	fmr	fp1,fp2
-	blr
-        .align 4
-.Lw_sqrtf:
-	mflr	r0
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset(16)
-	fmr	fp12,fp2
-	stw	r0,20(r1)
-	stw	r30,8(r1)
-	cfi_offset(lr,20-16)
-	cfi_offset(r30,8-16)
-#ifdef SHARED
-	SETUP_GOT_ACCESS(r30,got_label)
-	addis	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addi	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
-	lwz	r9,_LIB_VERSION@got(30)
-	lwz	r0,0(r9)
-#else
-	lis	r9,_LIB_VERSION@ha
-	lwz	r0,_LIB_VERSION@l(r9)
-#endif
-/*  if (_LIB_VERSION == _IEEE_) return z; */
-	cmpwi	cr7,r0,-1
-	beq-	cr7,.L4
-/*  if (x != x, 0) return z; !isnan */
-	fcmpu	cr7,fp1,fp1
-	bne-	cr7,.L4
-/*  if  (x < 0.0)
-    return __kernel_standard (x, x, 126) */
-	fmr	fp2,fp1
-	li	r3,126
-	bne- 	cr1,.L11
-.L4:
-	lwz	r0,20(r1)
-	fmr	fp1,fp12
-	lwz	r30,8(r1)
-	addi	r1,r1,16
-	mtlr 	r0
-	blr
-.L11:
-	bl	__kernel_standard@plt
-	fmr	fp12,fp1
-	b	.L4
-	END	(__sqrtf)
-
-weak_alias (__sqrtf, sqrtf)
diff --git a/sysdeps/powerpc/powerpc32/power5/multiarch/Implies b/sysdeps/powerpc/powerpc32/power5/multiarch/Implies
deleted file mode 100644
index d29e3853ab..0000000000
--- a/sysdeps/powerpc/powerpc32/power5/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power4/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power6/Implies b/sysdeps/powerpc/powerpc32/power6/Implies
deleted file mode 100644
index 8e5b58a57a..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power5+/fpu
-powerpc/powerpc32/power5+
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power6/fpu/multiarch/Implies
deleted file mode 100644
index c66805ee63..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5+/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
deleted file mode 100644
index d6cc8011ae..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* copysign().  PowerPC32/POWER6 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* double [f1] copysign (double [f1] x, double [f2] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-
-	.section    ".text"
-	.type	    __copysign, @function
-	.machine    power6
-EALIGN (__copysign, 4, 0)
-	CALL_MCOUNT
-	fcpsgn	fp1,fp2,fp1
-	blr
-END (__copysign)
-
-hidden_def (__copysign)
-weak_alias (__copysign, copysign)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__copysign, __copysignf)
-hidden_def (__copysignf)
-weak_alias (__copysignf, copysignf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
deleted file mode 100644
index d4aa702d07..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_copysign.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
deleted file mode 100644
index 5b19433cbf..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* isnan().  PowerPC32 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power6
-EALIGN (__isnan, 4, 0)
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	ori	r1,r1,0
-	stfd	fp1,24(r1)	/* copy FPR to GPR */
-	ori	r1,r1,0
-	lwz	r4,24+HIWORD(r1)
-	lwz	r5,24+LOWORD(r1)
-	lis	r0,0x7ff0	/* const long r0 0x7ff00000 00000000 */
-	clrlwi	r4,r4,1		/* x = fabs(x) */
-	cmpw	cr7,r4,r0	/* if (fabs(x) =< inf) */
-	cmpwi	cr6,r5,0
-	li	r3,0		/* then return 0 */
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	bltlr+	cr7
-	bgt-	cr7,L(NaN)
-	beqlr+	cr6
-L(NaN):
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S
deleted file mode 100644
index 7a19ed86d2..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_isnanf.S
+++ /dev/null
@@ -1,44 +0,0 @@
-/* isnanf().  PowerPC32 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnanf(x)  */
-	.machine power6
-EALIGN (__isnanf, 4, 0)
-	stwu	r1,-32(r1)
-	cfi_adjust_cfa_offset (32)
-	ori	r1,r1,0
-	stfs	fp1,24(r1)	/* copy FPR to GPR */
-	ori	r1,r1,0
-	lwz	r4,24(r1)
-	lis	r0,0x7f80	/* const long r0 0x7f800000 */
-	clrlwi	r4,r4,1		/* x = fabs(x) */
-	cmpw	cr7,r4,r0	/* if (fabs(x) =< inf) */
-	li	r3,0		/* then return 0 */
-	addi	r1,r1,32
-	cfi_adjust_cfa_offset (-32)
-	blelr+	cr7
-L(NaN):
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnanf)
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
deleted file mode 100644
index 326e77361b..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Round double to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long long int[r3, r4] __llrint (double x[fp1])  */
-ENTRY (__llrint)
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-/* Insure the following load is in a different dispatch group by
-   inserting "group ending nop".  */
-	ori	r1,r1,0
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llrint)
-
-weak_alias (__llrint, llrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
deleted file mode 100644
index 0950e7e7c7..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Round float to long int.  PowerPC32 on PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* long long int[r3, r4] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)
-	CALL_MCOUNT
-	stwu	r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	fctid	fp13,fp1
-	stfd	fp13,8(r1)
-/* Insure the following load is in a different dispatch group by
-   inserting "group ending nop".  */
-	ori	r1,r1,0
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llrintf)
-
-weak_alias (__llrintf, llrintf)
-
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
deleted file mode 100644
index 83ba999a39..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/* lround function.  POWER5+, PowerPC32 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long [r3] llround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use the Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power5"
-ENTRY (__llround)
-	stwu    r1,-16(r1)
-	cfi_adjust_cfa_offset (16)
-	frin	fp2,fp1
-	fctidz	fp3,fp2		/* Convert To Integer Word lround toward 0.  */
-	stfd	fp3,8(r1)
-/* Insure the following load is in a different dispatch group by
-   inserting "group ending nop".  */
-	ori	r1,r1,0
-	lwz	r3,8+HIWORD(r1)
-	lwz	r4,8+LOWORD(r1)
-	addi	r1,r1,16
-	blr
-	END (__llround)
-
-weak_alias (__llround, llround)
-
-strong_alias (__llround, __llroundf)
-weak_alias (__llround, llroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S
deleted file mode 100644
index 030d2fdff8..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/fpu/s_llroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __llroundf is in s_llround.S  */
diff --git a/sysdeps/powerpc/powerpc32/power6/memcpy.S b/sysdeps/powerpc/powerpc32/power6/memcpy.S
deleted file mode 100644
index 81b62cba21..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/memcpy.S
+++ /dev/null
@@ -1,907 +0,0 @@
-/* Optimized memcpy implementation for PowerPC32 on POWER6.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.
-
-   Memcpy handles short copies (< 32-bytes) using a binary move blocks
-   (no loops) of lwz/stw.  The tail (remaining 1-3) bytes is handled
-   with the appropriate combination of byte and halfword load/stores.
-   There is minimal effort to optimize the alignment of short moves.
-
-   Longer moves (>= 32-bytes) justify the effort to get at least the
-   destination word (4-byte) aligned.  Further optimization is
-   possible when both source and destination are word aligned.
-   Each case has an optimized unrolled loop.   */
-
-	.machine power6
-EALIGN (memcpy, 5, 0)
-	CALL_MCOUNT
-
-    stwu   1,-32(1)
-    cfi_adjust_cfa_offset(32)
-    cmplwi cr1,5,31     /* check for short move.  */
-    neg    0,3
-    cmplwi cr1,5,31
-    clrlwi 10,4,30	/* check alignment of src.  */
-    andi.  11,3,3	/* check alignment of dst.  */
-    clrlwi 0,0,30	/* Number of bytes until the 1st word of dst.  */
-    ble-   cr1,L(word_unaligned_short)	/* If move < 32 bytes.  */
-    cmplw  cr6,10,11
-    stw    31,24(1)
-    stw    30,20(1)
-    cfi_offset(31,(24-32))
-    cfi_offset(30,(20-32))
-    mr     30,3
-    beq    .L0
-    mtcrf  0x01,0
-    subf  31,0,5        /* Length after alignment.  */
-    add   12,4,0        /* Compute src addr after alignment.  */
-  /* Move 0-3 bytes as needed to get the destination word aligned.  */
-1:  bf    31,2f
-    lbz   6,0(4)
-    bf    30,3f
-    lhz   7,1(4)
-    stb   6,0(3)
-    sth   7,1(3)
-    addi  3,3,3
-    b     0f
-3:
-    stb   6,0(3)
-    addi  3,3,1
-    b     0f
-2:  bf    30,0f
-    lhz   6,0(4)
-    sth   6,0(3)
-    addi  3,3,2
-0:
-    clrlwi 10,12,30	/* check alignment of src again.  */
-    srwi   9,31,2	/* Number of full words remaining.  */
-    bne-   cr6,L(wdu)   /* If source is not word aligned. .L6 */
-    clrlwi 11,31,30  /* calculate the number of tail bytes */
-    b      L(word_aligned)
-  /* Copy words from source to destination, assuming the destination is
-     aligned on a word boundary.
-
-     At this point we know there are at least 29 bytes left (32-3) to copy.
-     The next step is to determine if the source is also word aligned.
-     If not branch to the unaligned move code at .L6. which uses
-     a load, shift, store strategy.
-
-     Otherwise source and destination are word aligned, and we can use
-     the optimized word copy loop.  */
-    .align  4
-.L0:
-    mr     31,5
-    mr     12,4
-    bne-   cr6,L(wdu)   /* If source is not word aligned. .L6 */
-    srwi   9,5,2	/* Number of full words remaining.  */
-    clrlwi 11,5,30      /* calculate the number of tail bytes */
-
-  /* Move words where destination and source are word aligned.
-     Use an unrolled loop to copy 4 words (16-bytes) per iteration.
-     If the copy is not an exact multiple of 16 bytes, 1-3
-     words are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-3 bytes. These bytes are
-     copied a halfword/byte at a time as needed to preserve alignment.  */
-L(word_aligned):
-    mtcrf 0x01,9
-    srwi  8,31,4    /* calculate the 16 byte loop count */
-    cmplwi	cr1,9,4
-    cmplwi	cr6,11,0
-    mr    11,12
-
-    bf    30,1f
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  11,12,8
-    mtctr 8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  10,3,8
-    bf    31,4f
-    lwz   0,8(12)
-    stw   0,8(3)
-    blt   cr1,3f
-    addi  11,12,12
-    addi  10,3,12
-    b     4f
-    .align  4
-1:
-    mr    10,3
-    mtctr 8
-    bf    31,4f
-    lwz   6,0(12)
-    addi  11,12,4
-    stw   6,0(3)
-    addi  10,3,4
-
-    .align  4
-4:
-    lwz   6,0(11)
-    lwz   7,4(11)
-    lwz   8,8(11)
-    lwz   0,12(11)
-    stw   6,0(10)
-    stw   7,4(10)
-    stw   8,8(10)
-    stw   0,12(10)
-    addi  11,11,16
-    addi  10,10,16
-    bdnz  4b
-3:
-    clrrwi 0,31,2
-    mtcrf 0x01,31
-    beq   cr6,0f
-.L9:
-    add   3,3,0
-    add   12,12,0
-
-/*  At this point we have a tail of 0-3 bytes and we know that the
-    destination is word aligned.  */
-2:  bf    30,1f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-1:  bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    mr  3,30
-    lwz 30,20(1)
-    lwz 31,24(1)
-    addi 1,1,32
-    blr
-
-/* Copy up to 31 bytes.  This divided into two cases 0-8 bytes and 9-31
-   bytes.  Each case is handled without loops, using binary (1,2,4,8)
-   tests.
-
-   In the short (0-8 byte) case no attempt is made to force alignment
-   of either source or destination.  The hardware will handle the
-   unaligned load/stores with small delays for crossing 32- 128-byte,
-   and 4096-byte boundaries. Since these short moves are unlikely to be
-   unaligned or cross these boundaries, the overhead to force
-   alignment is not justified.
-
-   The longer (9-31 byte) move is more likely to cross 32- or 128-byte
-   boundaries.  Since only loads are sensitive to the 32-/128-byte
-   boundaries it is more important to align the source then the
-   destination.  If the source is not already word aligned, we first
-   move 1-3 bytes as needed.  Since we are only word aligned we don't
-   use double word load/stores to insure that all loads are aligned.
-   While the destination and stores may still be unaligned, this
-   is only an issue for page (4096 byte boundary) crossing, which
-   should be rare for these short moves.  The hardware handles this
-   case automatically with a small (~20 cycle) delay.  */
-    .align  4
-
-    cfi_same_value (31)
-    cfi_same_value (30)
-L(word_unaligned_short):
-    mtcrf 0x01,5
-    cmplwi cr6,5,8
-    neg   8,4
-    clrrwi	9,4,2
-    andi. 0,8,3
-    beq   cr6,L(wus_8)	/* Handle moves of 8 bytes.  */
-/* At least 9 bytes left.  Get the source word aligned.  */
-    cmplwi	cr1,5,16
-    mr    12,4
-    ble   cr6,L(wus_4)  /* Handle moves of 0-8 bytes.  */
-    mr    11,3
-    mr    10,5
-    cmplwi	cr6,0,2
-    beq   L(wus_tail)	/* If the source is already word aligned skip this.  */
-/* Copy 1-3 bytes to get source address word aligned.  */
-    lwz   6,0(9)
-    subf  10,0,5
-    add   12,4,0
-    blt   cr6,5f
-    srwi  7,6,16
-    bgt	  cr6,3f
-#ifdef __LITTLE_ENDIAN__
-    sth   7,0(3)
-#else
-    sth   6,0(3)
-#endif
-    b     7f
-    .align  4
-3:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,24
-    stb   6,0(3)
-    sth   7,1(3)
-#else
-    stb   7,0(3)
-    sth   6,1(3)
-#endif
-    b     7f
-    .align  4
-5:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,8
-#endif
-    stb   6,0(3)
-7:
-    cmplwi	cr1,10,16
-    add   11,3,0
-    mtcrf 0x01,10
-    .align  4
-L(wus_tail):
-/* At least 6 bytes left and the source is word aligned.  This allows
-   some speculative loads up front.  */
-/* We need to special case the fall-through because the biggest delays
-   are due to address computation not being ready in time for the
-   AGEN.  */
-    lwz   6,0(12)
-    lwz   7,4(12)
-    blt   cr1,L(wus_tail8)
-    cmplwi	cr0,10,24
-L(wus_tail16): /* Move 16 bytes.  */
-    stw   6,0(11)
-    stw   7,4(11)
-    lwz   6,8(12)
-    lwz   7,12(12)
-    stw   6,8(11)
-    stw   7,12(11)
-/* Move 8 bytes more.  */
-    bf    28,L(wus_tail16p8)
-    cmplwi	cr1,10,28
-    lwz   6,16(12)
-    lwz   7,20(12)
-    stw   6,16(11)
-    stw   7,20(11)
-/* Move 4 bytes more.  */
-    bf    29,L(wus_tail16p4)
-    lwz   6,24(12)
-    stw   6,24(11)
-    addi  12,12,28
-    addi  11,11,28
-    bgt   cr1,L(wus_tail2)
- /* exactly 28 bytes.  Return original dst pointer and exit.  */
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_tail16p8):  /* less than 8 bytes left.  */
-    beq   cr1,L(wus_tailX) /* exactly 16 bytes, early exit.  */
-    cmplwi	cr1,10,20
-    bf    29,L(wus_tail16p2)
-/* Move 4 bytes more.  */
-    lwz   6,16(12)
-    stw   6,16(11)
-    addi  12,12,20
-    addi  11,11,20
-    bgt   cr1,L(wus_tail2)
- /* exactly 20 bytes.  Return original dst pointer and exit.  */
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_tail16p4):  /* less than 4 bytes left.  */
-    addi  12,12,24
-    addi  11,11,24
-    bgt   cr0,L(wus_tail2)
- /* exactly 24 bytes.  Return original dst pointer and exit.  */
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_tail16p2):  /* 16 bytes moved, less than 4 bytes left.  */
-    addi  12,12,16
-    addi  11,11,16
-    b     L(wus_tail2)
-
-    .align  4
-L(wus_tail8):  /* Move 8 bytes.  */
-/*  r6, r7 already loaded speculatively.  */
-    cmplwi	cr1,10,8
-    cmplwi	cr0,10,12
-    bf    28,L(wus_tail4)
-    stw   6,0(11)
-    stw   7,4(11)
-/* Move 4 bytes more.  */
-    bf    29,L(wus_tail8p4)
-    lwz   6,8(12)
-    stw   6,8(11)
-    addi  12,12,12
-    addi  11,11,12
-    bgt   cr0,L(wus_tail2)
- /* exactly 12 bytes.  Return original dst pointer and exit.  */
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_tail8p4):  /* less than 4 bytes left.  */
-    addi  12,12,8
-    addi  11,11,8
-    bgt   cr1,L(wus_tail2)
- /* exactly 8 bytes.  Return original dst pointer and exit.  */
-    addi  1,1,32
-    blr
-
-    .align  4
-L(wus_tail4):  /* Move 4 bytes.  */
-/*  r6 already loaded speculatively.  If we are here we know there is
-    more than 4 bytes left.  So there is no need to test.  */
-    addi  12,12,4
-    stw   6,0(11)
-    addi  11,11,4
-L(wus_tail2):  /* Move 2-3 bytes.  */
-    bf    30,L(wus_tail1)
-    lhz   6,0(12)
-    sth   6,0(11)
-    bf    31,L(wus_tailX)
-    lbz   7,2(12)
-    stb   7,2(11)
-    addi  1,1,32
-    blr
-L(wus_tail1):  /* Move 1 byte.  */
-    bf    31,L(wus_tailX)
-    lbz   6,0(12)
-    stb   6,0(11)
-L(wus_tailX):
-  /* Return original dst pointer.  */
-    addi  1,1,32
-    blr
-
-/* Special case to copy 0-8 bytes.  */
-    .align  4
-L(wus_8):
-    lwz   6,0(4)
-    lwz   7,4(4)
-    stw   6,0(3)
-    stw   7,4(3)
-  /* Return original dst pointer.  */
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_4):
-    bf    29,L(wus_2)
-    lwz   6,0(4)
-    stw   6,0(3)
-    bf    30,L(wus_5)
-    lhz   7,4(4)
-    sth   7,4(3)
-    bf    31,L(wus_0)
-    lbz   8,6(4)
-    stb   8,6(3)
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_5):
-    bf    31,L(wus_0)
-    lbz   6,4(4)
-    stb   6,4(3)
-  /* Return original dst pointer.  */
-    addi 1,1,32
-    blr
-    .align  4
-L(wus_2):  /* Move 2-3 bytes.  */
-    bf    30,L(wus_1)
-    lhz   6,0(4)
-    sth   6,0(3)
-    bf    31,L(wus_0)
-    lbz   7,2(4)
-    stb   7,2(3)
-    addi  1,1,32
-    blr
-    .align  4
-L(wus_1):  /* Move 1 byte.  */
-    bf    31,L(wus_0)
-    lbz   6,0(4)
-    stb   6,0(3)
-    .align  3
-L(wus_0):
-  /* Return original dst pointer.  */
-    addi  1,1,32
-    blr
-
-    .align  4
-    cfi_offset(31,(24-32))
-    cfi_offset(30,(20-32))
-L(wdu):
-
-  /* Copy words where the destination is aligned but the source is
-     not.  For power4, power5 and power6 machines there is penalty for
-     unaligned loads (src) that cross 32-byte, cacheline, or page
-     boundaries. So we want to use simple (unaligned) loads where
-     possible but avoid them where we know the load would span a 32-byte
-     boundary.
-
-     At this point we know we have at least 29 (32-3) bytes to copy
-     the src is unaligned. and we may cross at least one 32-byte
-     boundary. Also we have the following register values:
-     r3 == adjusted dst, word aligned
-     r4 == unadjusted src
-     r5 == unadjusted len
-     r9 == adjusted Word length
-     r10 == src alignment (1-3)
-     r12 == adjusted src, not aligned
-     r31 == adjusted len
-
-     First we need to copy word up to but not crossing the next 32-byte
-     boundary. Then perform aligned loads just before and just after
-     the boundary and use shifts and or to generate the next aligned
-     word for dst. If more than 32 bytes remain we copy (unaligned src)
-     the next 7 words and repeat the loop until less than 32-bytes
-     remain.
-
-     Then if more than 4 bytes remain we again use aligned loads,
-     shifts and or to generate the next dst word. We then process the
-     remaining words using unaligned loads as needed. Finally we check
-     if there are more than 0 bytes (1-3) bytes remaining and use
-     halfword and or byte load/stores to complete the copy.
-*/
-    mr      4,12      /* restore unaligned adjusted src ptr */
-    clrlwi  0,12,27   /* Find dist from previous 32-byte boundary.  */
-    slwi    10,10,3   /* calculate number of bits to shift 1st word left */
-    cmplwi  cr5,0,16
-    subfic  8,0,32   /* Number of bytes to next 32-byte boundary.  */
-
-    mtcrf   0x01,8
-    cmplwi  cr1,10,16
-    subfic  9,10,32  /* number of bits to shift 2nd word right */
-/*  This test is reversed because the timing to compare the bytes to
-    32-byte boundary could not be meet.  So we compare the bytes from
-    previous 32-byte boundary and invert the test.  */
-    bge     cr5,L(wdu_h32_8)
-    .align  4
-    lwz   6,0(4)
-    lwz   7,4(4)
-    addi  12,4,16    /* generate alternate pointers to avoid agen */
-    addi  11,3,16    /* timing issues downstream.  */
-    stw   6,0(3)
-    stw   7,4(3)
-    subi  31,31,16
-    lwz   6,8(4)
-    lwz   7,12(4)
-    addi  4,4,16
-    stw   6,8(3)
-    stw   7,12(3)
-    addi  3,3,16
-    bf    28,L(wdu_h32_4)
-    lwz   6,0(12)
-    lwz   7,4(12)
-    subi  31,31,8
-    addi  4,4,8
-    stw   6,0(11)
-    stw   7,4(11)
-    addi  3,3,8
-    bf    29,L(wdu_h32_0)
-    lwz   6,8(12)
-    addi  4,4,4
-    subi  31,31,4
-    stw   6,8(11)
-    addi  3,3,4
-    b     L(wdu_h32_0)
-    .align  4
-L(wdu_h32_8):
-    bf    28,L(wdu_h32_4)
-    lwz   6,0(4)
-    lwz   7,4(4)
-    subi  31,31,8
-    bf    29,L(wdu_h32_8x)
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,8(4)
-    addi  4,4,12
-    subi  31,31,4
-    stw   6,8(3)
-    addi  3,3,12
-    b     L(wdu_h32_0)
-    .align  4
-L(wdu_h32_8x):
-    addi  4,4,8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  3,3,8
-    b     L(wdu_h32_0)
-    .align  4
-L(wdu_h32_4):
-    bf    29,L(wdu_h32_0)
-    lwz   6,0(4)
-    subi  31,31,4
-    addi  4,4,4
-    stw   6,0(3)
-    addi  3,3,4
-    .align  4
-L(wdu_h32_0):
-/*  set up for 32-byte boundary crossing word move and possibly 32-byte
-    move loop.  */
-    clrrwi  12,4,2
-    cmplwi  cr5,31,32
-    bge     cr1,L(wdu2_32)
-#if 0
-    b       L(wdu1_32)
-/*
-    cmplwi  cr1,10,8
-    beq     cr1,L(wdu1_32)
-    cmplwi  cr1,10,16
-    beq     cr1,L(wdu2_32)
-    cmplwi  cr1,10,24
-    beq     cr1,L(wdu3_32)
-*/
-L(wdu_32):
-    lwz     6,0(12)
-    cmplwi  cr6,31,4
-    srwi    8,31,5    /* calculate the 32 byte loop count */
-    slw     0,6,10
-    clrlwi  31,31,27   /* The remaining bytes, < 32.  */
-    blt     cr5,L(wdu_32tail)
-    mtctr   8
-    cmplwi  cr6,31,4
-    .align  4
-L(wdu_loop32):
-    /* copy 32 bytes at a time */
-    lwz   8,4(12)
-    addi  12,12,32
-    lwz   7,4(4)
-    srw   8,8,9
-    or    0,0,8
-    stw   0,0(3)
-    stw   7,4(3)
-    lwz   6,8(4)
-    lwz   7,12(4)
-    stw   6,8(3)
-    stw   7,12(3)
-    lwz   6,16(4)
-    lwz   7,20(4)
-    stw   6,16(3)
-    stw   7,20(3)
-    lwz   6,24(4)
-    lwz   7,28(4)
-    lwz   8,0(12)
-    addi  4,4,32
-    stw   6,24(3)
-    stw   7,28(3)
-    addi  3,3,32
-    slw   0,8,10
-    bdnz+ L(wdu_loop32)
-
-L(wdu_32tail):
-    mtcrf   0x01,31
-    cmplwi  cr5,31,16
-    blt     cr6,L(wdu_4tail)
-    /* calculate and store the final word */
-    lwz   8,4(12)
-    srw   8,8,9
-    or    6,0,8
-    b     L(wdu_32tailx)
-#endif
-    .align  4
-L(wdu1_32):
-    lwz     6,-1(4)
-    cmplwi  cr6,31,4
-    srwi    8,31,5    /* calculate the 32 byte loop count */
-#ifdef __LITTLE_ENDIAN__
-    srwi    6,6,8
-#else
-    slwi    6,6,8
-#endif
-    clrlwi  31,31,27   /* The remaining bytes, < 32.  */
-    blt     cr5,L(wdu1_32tail)
-    mtctr   8
-    cmplwi  cr6,31,4
-
-    lwz   8,3(4)
-    lwz   7,4(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,24,32
-#else
-/*  Equivalent to: srwi   8,8,32-8;  or    6,6,8 */
-    rlwimi 6,8,8,(32-8),31
-#endif
-    b      L(wdu1_loop32x)
-    .align  4
-L(wdu1_loop32):
-    /* copy 32 bytes at a time */
-    lwz   8,3(4)
-    lwz   7,4(4)
-    stw   10,-8(3)
-    stw   11,-4(3)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,24,32
-#else
-/*  Equivalent to  srwi   8,8,32-8; or    6,6,8 */
-    rlwimi 6,8,8,(32-8),31
-#endif
-L(wdu1_loop32x):
-    lwz   10,8(4)
-    lwz   11,12(4)
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,16(4)
-    lwz   7,20(4)
-    stw   10,8(3)
-    stw   11,12(3)
-    lwz   10,24(4)
-    lwz   11,28(4)
-    lwz   8,32-1(4)
-    addi  4,4,32
-    stw   6,16(3)
-    stw   7,20(3)
-    addi  3,3,32
-#ifdef __LITTLE_ENDIAN__
-    srwi  6,8,8
-#else
-    slwi  6,8,8
-#endif
-    bdnz+ L(wdu1_loop32)
-    stw   10,-8(3)
-    stw   11,-4(3)
-
-L(wdu1_32tail):
-    mtcrf   0x01,31
-    cmplwi  cr5,31,16
-    blt     cr6,L(wdu_4tail)
-    /* calculate and store the final word */
-    lwz   8,3(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,24,32
-#else
-/*  Equivalent to: srwi   8,8,32-8;  or    6,6,8  */
-    rlwimi 6,8,8,(32-8),31
-#endif
-    b     L(wdu_32tailx)
-
-L(wdu2_32):
-    bgt     cr1,L(wdu3_32)
-    lwz     6,-2(4)
-    cmplwi  cr6,31,4
-    srwi    8,31,5    /* calculate the 32 byte loop count */
-#ifdef __LITTLE_ENDIAN__
-    srwi    6,6,16
-#else
-    slwi    6,6,16
-#endif
-    clrlwi  31,31,27   /* The remaining bytes, < 32.  */
-    blt     cr5,L(wdu2_32tail)
-    mtctr   8
-    cmplwi  cr6,31,4
-
-    lwz   8,2(4)
-    lwz   7,4(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,16,32
-#else
-    rlwimi 6,8,16,(32-16),31
-#endif
-    b      L(wdu2_loop32x)
-    .align  4
-L(wdu2_loop32):
-    /* copy 32 bytes at a time */
-    lwz   8,2(4)
-    lwz   7,4(4)
-    stw   10,-8(3)
-    stw   11,-4(3)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,16,32
-#else
-    rlwimi 6,8,16,(32-16),31
-#endif
-L(wdu2_loop32x):
-    lwz   10,8(4)
-    lwz   11,12(4)
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,16(4)
-    lwz   7,20(4)
-    stw   10,8(3)
-    stw   11,12(3)
-    lwz   10,24(4)
-    lwz   11,28(4)
-/*    lwz   8,0(12) */
-    lwz   8,32-2(4)
-    addi  4,4,32
-    stw   6,16(3)
-    stw   7,20(3)
-    addi  3,3,32
-#ifdef __LITTLE_ENDIAN__
-    srwi  6,8,16
-#else
-    slwi  6,8,16
-#endif
-    bdnz+ L(wdu2_loop32)
-    stw   10,-8(3)
-    stw   11,-4(3)
-
-L(wdu2_32tail):
-    mtcrf   0x01,31
-    cmplwi  cr5,31,16
-    blt     cr6,L(wdu_4tail)
-    /* calculate and store the final word */
-    lwz   8,2(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,16,32
-#else
-    rlwimi 6,8,16,(32-16),31
-#endif
-    b     L(wdu_32tailx)
-
-L(wdu3_32):
-/*    lwz     6,0(12) */
-    lwz     6,-3(4)
-    cmplwi  cr6,31,4
-    srwi    8,31,5    /* calculate the 32 byte loop count */
-#ifdef __LITTLE_ENDIAN__
-    srwi    6,6,24
-#else
-    slwi    6,6,24
-#endif
-    clrlwi  31,31,27   /* The remaining bytes, < 32.  */
-    blt     cr5,L(wdu3_32tail)
-    mtctr   8
-    cmplwi  cr6,31,4
-
-    lwz   8,1(4)
-    lwz   7,4(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,8,32
-#else
-    rlwimi 6,8,24,(32-24),31
-#endif
-    b      L(wdu3_loop32x)
-    .align  4
-L(wdu3_loop32):
-    /* copy 32 bytes at a time */
-    lwz   8,1(4)
-    lwz   7,4(4)
-    stw   10,-8(3)
-    stw   11,-4(3)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,8,32
-#else
-    rlwimi 6,8,24,(32-24),31
-#endif
-L(wdu3_loop32x):
-    lwz   10,8(4)
-    lwz   11,12(4)
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,16(4)
-    lwz   7,20(4)
-    stw   10,8(3)
-    stw   11,12(3)
-    lwz   10,24(4)
-    lwz   11,28(4)
-    lwz   8,32-3(4)
-    addi  4,4,32
-    stw   6,16(3)
-    stw   7,20(3)
-    addi  3,3,32
-#ifdef __LITTLE_ENDIAN__
-    srwi  6,8,24
-#else
-    slwi  6,8,24
-#endif
-    bdnz+ L(wdu3_loop32)
-    stw   10,-8(3)
-    stw   11,-4(3)
-
-L(wdu3_32tail):
-    mtcrf   0x01,31
-    cmplwi  cr5,31,16
-    blt     cr6,L(wdu_4tail)
-    /* calculate and store the final word */
-    lwz   8,1(4)
-#ifdef __LITTLE_ENDIAN__
-    rldimi 6,8,8,32
-#else
-    rlwimi 6,8,24,(32-24),31
-#endif
-    b     L(wdu_32tailx)
-    .align  4
-L(wdu_32tailx):
-    blt     cr5,L(wdu_t32_8)
-    lwz   7,4(4)
-    addi  12,4,16    /* generate alternate pointers to avoid agen */
-    addi  11,3,16    /* timing issues downstream.  */
-    stw   6,0(3)
-    stw   7,4(3)
-    subi  31,31,16
-    lwz   6,8(4)
-    lwz   7,12(4)
-    addi  4,4,16
-    stw   6,8(3)
-    stw   7,12(3)
-    addi  3,3,16
-    bf    28,L(wdu_t32_4x)
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  4,4,8
-    subi  31,31,8
-    stw   6,0(11)
-    stw   7,4(11)
-    addi  3,3,8
-    bf    29,L(wdu_t32_0)
-    lwz   6,8(12)
-    addi  4,4,4
-    subi  31,31,4
-    stw   6,8(11)
-    addi  3,3,4
-    b     L(wdu_t32_0)
-    .align  4
-L(wdu_t32_4x):
-    bf    29,L(wdu_t32_0)
-    lwz   6,0(4)
-    addi  4,4,4
-    subi  31,31,4
-    stw   6,0(3)
-    addi  3,3,4
-    b     L(wdu_t32_0)
-    .align  4
-L(wdu_t32_8):
-    bf    28,L(wdu_t32_4)
-    lwz   7,4(4)
-    subi  31,31,8
-    bf    29,L(wdu_t32_8x)
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,8(4)
-    subi  31,31,4
-    addi  4,4,12
-    stw   6,8(3)
-    addi  3,3,12
-    b     L(wdu_t32_0)
-    .align  4
-L(wdu_t32_8x):
-    addi  4,4,8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  3,3,8
-    b     L(wdu_t32_0)
-    .align  4
-L(wdu_t32_4):
-    subi  31,31,4
-    stw   6,0(3)
-    addi  4,4,4
-    addi  3,3,4
-    .align  4
-L(wdu_t32_0):
-L(wdu_4tail):
-    cmplwi  cr6,31,0
-    beq   cr6,L(wdus_0)	/* If the tail is 0 bytes we are done!  */
-    bf    30,L(wdus_3)
-    lhz   7,0(4)
-    sth   7,0(3)
-    bf    31,L(wdus_0)
-    lbz   8,2(4)
-    stb   8,2(3)
-    mr    3,30
-    lwz   30,20(1)
-    lwz   31,24(1)
-    addi  1,1,32
-    blr
-    .align  4
-L(wdus_3):
-    bf    31,L(wus_0)
-    lbz   6,0(4)
-    stb   6,0(3)
-    .align  4
-L(wdus_0):
-  /* Return original dst pointer.  */
-    mr   3,30
-    lwz  30,20(1)
-    lwz  31,24(1)
-    addi 1,1,32
-    blr
-END (memcpy)
-
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/power6/memset.S b/sysdeps/powerpc/powerpc32/power6/memset.S
deleted file mode 100644
index f221c32d2f..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/memset.S
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Optimized 32-bit memset implementation for POWER6.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in three sizes: byte (8 bits), word (32 bits),
-   cache line (1024 bits). There is a special case for setting cache lines
-   to 0, to take advantage of the dcbz instruction.  */
-
-	.machine power6
-EALIGN (memset, 7, 0)
-	CALL_MCOUNT
-
-#define rTMP	r0
-#define rRTN	r3	/* Initial value of 1st argument.  */
-#define rMEMP0	r3	/* Original value of 1st arg.  */
-#define rCHR	r4	/* Char to set in each byte.  */
-#define rLEN	r5	/* Length of region to set.  */
-#define rMEMP	r6	/* Address at which we are storing.  */
-#define rALIGN	r7	/* Number of bytes we are setting now (when aligning). */
-#define rMEMP2	r8
-
-#define rNEG64	r8	/* Constant -64 for clearing with dcbz.  */
-#define rMEMP3	r9	/* Alt mem pointer.  */
-L(_memset):
-/* Take care of case for size <= 4.  */
-	cmplwi	cr1, rLEN, 4
-	andi.	rALIGN, rMEMP0, 3
-	mr	rMEMP, rMEMP0
-	ble-	cr1, L(small)
-/* Align to word boundary.  */
-	cmplwi	cr5, rLEN, 31
-	insrwi	rCHR, rCHR, 8, 16	/* Replicate byte to halfword.  */
-	beq+	L(aligned)
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 4
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):
-	sth	rCHR, -2(rMEMP)
-
-        .align 4
-/* Handle the case of size < 31.  */
-L(aligned):
-	mtcrf	0x01, rLEN
-	insrwi	rCHR, rCHR, 16, 0	/* Replicate halfword to word.  */
-	ble	cr5, L(medium)
-/* Align to 32-byte boundary.  */
-	andi.	rALIGN, rMEMP, 0x1C
-	subfic	rALIGN, rALIGN, 0x20
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-        stw     rCHR, -4(rMEMP2)
-	stwu	rCHR, -8(rMEMP2)
-	nop
-L(a1):	blt	cr1, L(a2)
-        stw     rCHR, -4(rMEMP2)
-	stw	rCHR, -8(rMEMP2)
-	stw	rCHR, -12(rMEMP2)
-	stwu	rCHR, -16(rMEMP2)
-L(a2):  bf      29, L(caligned)
-        stw     rCHR, -4(rMEMP2)
-
-        .align 3
-/* Now aligned to a 32 byte boundary.  */
-L(caligned):
-	cmplwi	cr1, rCHR, 0
-	clrrwi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN
-	beq	cr1, L(zloopstart) /* Special case for clearing memory using dcbz.  */
-L(nondcbz):
-	beq	L(medium)	/* We may not actually get to do a full line.  */
-	nop
-/* Storing a non-zero "c" value. We are aligned at a sector (32-byte)
-   boundary may not be at cache line (128-byte) boundary.  */
-L(nzloopstart):
-/* memset in 32-byte chunks until we get to a cache line boundary.
-   If rLEN is less than the distance to the next cache-line boundary use
-   cacheAligned1 code to finish the tail.  */
-	cmplwi	cr1,rLEN,128
-
-	andi.	rTMP,rMEMP,127
-	blt	cr1,L(cacheAligned1)
-	addi	rMEMP3,rMEMP,32
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-	stw	rCHR,0(rMEMP)
-        stw     rCHR,4(rMEMP)
-	stw	rCHR,8(rMEMP)
-	stw     rCHR,12(rMEMP)
-	stw	rCHR,16(rMEMP)
-        stw     rCHR,20(rMEMP)
-	addi	rMEMP,rMEMP,32
-	andi.	rTMP,rMEMP3,127
-	stw	rCHR,-8(rMEMP3)
-        stw     rCHR,-4(rMEMP3)
-
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-	stw	rCHR,0(rMEMP3)
-        stw     rCHR,4(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	stw	rCHR,8(rMEMP3)
-	stw     rCHR,12(rMEMP3)
-	andi.	rTMP,rMEMP,127
-	stw	rCHR,16(rMEMP3)
-        stw     rCHR,20(rMEMP3)
-	stw	rCHR,24(rMEMP3)
-        stw     rCHR,28(rMEMP3)
-
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-/* At this point we can overrun the store queue (pipe reject) so it is
-   time to slow things down. The store queue can merge two adjacent
-   stores into a single L1/L2 op, but the L2 is clocked at 1/2 the CPU.
-   So we add "group ending nops" to guarantee that we dispatch only two
-   stores every other cycle. */
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,32(rMEMP3)
-        stw     rCHR,36(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmplwi	cr1,rLEN,128
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,40(rMEMP3)
-	stw     rCHR,44(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,48(rMEMP3)
-        stw     rCHR,52(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,56(rMEMP3)
-        stw     rCHR,60(rMEMP3)
-	blt	cr1,L(cacheAligned1)
-	b	L(nzCacheAligned)
-
-/* Now we are aligned to the cache line and can use dcbtst.  */
-        .align 5
-L(nzCacheAligned):
-	cmplwi	cr1,rLEN,128
-	cmplwi	cr6,rLEN,256
-	blt	cr1,L(cacheAligned1)
-	blt	cr6,L(nzCacheAligned128)
-        .align 4
-L(nzCacheAligned128):
-	nop
-	addi	rMEMP3,rMEMP,64
-	stw	rCHR,0(rMEMP)
-        stw     rCHR,4(rMEMP)
-	stw	rCHR,8(rMEMP)
-	stw     rCHR,12(rMEMP)
-	stw	rCHR,16(rMEMP)
-        stw     rCHR,20(rMEMP)
-	stw	rCHR,24(rMEMP)
-        stw     rCHR,28(rMEMP)
-	stw	rCHR,32(rMEMP)
-        stw     rCHR,36(rMEMP)
-	stw	rCHR,40(rMEMP)
-	stw     rCHR,44(rMEMP)
-	stw	rCHR,48(rMEMP)
-        stw     rCHR,52(rMEMP)
-	stw	rCHR,56(rMEMP)
-        stw     rCHR,60(rMEMP)
-	addi	rMEMP,rMEMP3,64
-	addi	rLEN,rLEN,-128
-/* At this point we can overrun the store queue (pipe reject) so it is
-   time to slow things down. The store queue can merge two adjacent
-   stores into a single L1/L2 op, but the L2 is clocked at 1/2 the CPU.
-   So we add "group ending nops" to guarantee that we dispatch only one
-   store per cycle. */
-	stw	rCHR,0(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,4(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,8(rMEMP3)
-	ori	r1,r1,0
-	stw     rCHR,12(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,16(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,20(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,24(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,28(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,32(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,36(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,40(rMEMP3)
-	ori	r1,r1,0
-	stw     rCHR,44(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,48(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,52(rMEMP3)
-	ori	r1,r1,0
-	stw	rCHR,56(rMEMP3)
-	ori	r1,r1,0
-        stw     rCHR,60(rMEMP3)
-	blt	cr6,L(cacheAligned1)
-#if IS_IN (libc)
-	lfd	0,-128(rMEMP)
-#endif
-	b	L(nzCacheAligned256)
-        .align 5
-L(nzCacheAligned256):
-	cmplwi	cr1,rLEN,256
-	addi	rMEMP3,rMEMP,64
-#if !IS_IN (libc)
-/* When we are not in libc we should use only GPRs to avoid the FPU lock
-   interrupt.  */
-	stw	rCHR,0(rMEMP)
-        stw     rCHR,4(rMEMP)
-	stw	rCHR,8(rMEMP)
-	stw     rCHR,12(rMEMP)
-	stw	rCHR,16(rMEMP)
-        stw     rCHR,20(rMEMP)
-	stw	rCHR,24(rMEMP)
-        stw     rCHR,28(rMEMP)
-	stw	rCHR,32(rMEMP)
-        stw     rCHR,36(rMEMP)
-	stw	rCHR,40(rMEMP)
-	stw     rCHR,44(rMEMP)
-	stw	rCHR,48(rMEMP)
-        stw     rCHR,52(rMEMP)
-	stw	rCHR,56(rMEMP)
-        stw     rCHR,60(rMEMP)
-	addi	rMEMP,rMEMP3,64
-	addi	rLEN,rLEN,-128
-	stw	rCHR,0(rMEMP3)
-        stw     rCHR,4(rMEMP3)
-	stw	rCHR,8(rMEMP3)
-	stw     rCHR,12(rMEMP3)
-	stw	rCHR,16(rMEMP3)
-        stw     rCHR,20(rMEMP3)
-	stw	rCHR,24(rMEMP3)
-        stw     rCHR,28(rMEMP3)
-	stw	rCHR,32(rMEMP3)
-        stw     rCHR,36(rMEMP3)
-	stw	rCHR,40(rMEMP3)
-	stw     rCHR,44(rMEMP3)
-	stw	rCHR,48(rMEMP3)
-        stw     rCHR,52(rMEMP3)
-	stw	rCHR,56(rMEMP3)
-        stw     rCHR,60(rMEMP3)
-#else
-/* We are in libc and this is a long memset so we can use FPRs and can afford
-   occasional FPU locked interrupts.  */
-	stfd	0,0(rMEMP)
-	stfd	0,8(rMEMP)
-	stfd	0,16(rMEMP)
-	stfd	0,24(rMEMP)
-	stfd	0,32(rMEMP)
-	stfd	0,40(rMEMP)
-	stfd	0,48(rMEMP)
-	stfd	0,56(rMEMP)
-	addi	rMEMP,rMEMP3,64
-	addi	rLEN,rLEN,-128
-	stfd	0,0(rMEMP3)
-	stfd	0,8(rMEMP3)
-	stfd	0,16(rMEMP3)
-	stfd	0,24(rMEMP3)
-	stfd	0,32(rMEMP3)
-	stfd	0,40(rMEMP3)
-	stfd	0,48(rMEMP3)
-	stfd	0,56(rMEMP3)
-#endif
-	bge	cr1,L(nzCacheAligned256)
-	dcbtst	0,rMEMP
-	b	L(cacheAligned1)
-
-	.align 4
-/* Storing a zero "c" value. We are aligned at a sector (32-byte)
-   boundary but may not be at cache line (128-byte) boundary.  If the
-   remaining length spans a full cache line we can use the Data cache
-   block zero instruction. */
-L(zloopstart):
-/* memset in 32-byte chunks until we get to a cache line boundary.
-   If rLEN is less than the distance to the next cache-line boundary use
-   cacheAligned1 code to finish the tail.  */
-	cmplwi	cr1,rLEN,128
-	beq	L(medium)
-L(getCacheAligned):
-	andi.	rTMP,rMEMP,127
-	blt	cr1,L(cacheAligned1)
-	addi	rMEMP3,rMEMP,32
-	beq	L(cacheAligned)
-	addi	rLEN,rLEN,-32
-	stw	rCHR,0(rMEMP)
-        stw     rCHR,4(rMEMP)
-	stw	rCHR,8(rMEMP)
-	stw     rCHR,12(rMEMP)
-	stw	rCHR,16(rMEMP)
-        stw     rCHR,20(rMEMP)
-	addi	rMEMP,rMEMP,32
-	andi.	rTMP,rMEMP3,127
-	stw	rCHR,-8(rMEMP3)
-        stw     rCHR,-4(rMEMP3)
-L(getCacheAligned2):
-	beq	L(cacheAligned)
-	addi	rLEN,rLEN,-32
-	addi	rMEMP,rMEMP,32
-	stw	rCHR,0(rMEMP3)
-        stw     rCHR,4(rMEMP3)
-	stw	rCHR,8(rMEMP3)
-	stw     rCHR,12(rMEMP3)
-	andi.	rTMP,rMEMP,127
-	nop
-	stw	rCHR,16(rMEMP3)
-        stw     rCHR,20(rMEMP3)
-	stw	rCHR,24(rMEMP3)
-        stw     rCHR,28(rMEMP3)
-L(getCacheAligned3):
-	beq	L(cacheAligned)
-/* At this point we can overrun the store queue (pipe reject) so it is
-   time to slow things down. The store queue can merge two adjacent
-   stores into a single L1/L2 op, but the L2 is clocked at 1/2 the CPU.
-   So we add "group ending nops" to guarantee that we dispatch only two
-   stores every other cycle. */
-	addi	rLEN,rLEN,-32
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,32(rMEMP3)
-        stw     rCHR,36(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmplwi	cr1,rLEN,128
-	ori	r1,r1,0
-	stw	rCHR,40(rMEMP3)
-	stw     rCHR,44(rMEMP3)
-	cmplwi	cr6,rLEN,256
-	li	rMEMP2,128
-	ori	r1,r1,0
-	stw	rCHR,48(rMEMP3)
-        stw     rCHR,52(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,56(rMEMP3)
-        stw     rCHR,60(rMEMP3)
-	blt	cr1,L(cacheAligned1)
-	blt	cr6,L(cacheAligned128)
-	b	L(cacheAlignedx)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-        .align 4
-L(cacheAligned):
-	cmplwi	cr1,rLEN,128
-	cmplwi	cr6,rLEN,256
-	blt	cr1,L(cacheAligned1)
-	li	rMEMP2,128
-L(cacheAlignedx):
-	cmplwi	cr5,rLEN,640
-	blt	cr6,L(cacheAligned128)
-	bgt	cr5,L(cacheAligned512)
-	cmplwi	cr6,rLEN,512
-	dcbz	0,rMEMP
-	cmplwi	cr1,rLEN,384
-	dcbz	rMEMP2,rMEMP
-	addi	rMEMP,rMEMP,256
-	addi	rLEN,rLEN,-256
-	blt	cr1,L(cacheAligned1)
-	blt	cr6,L(cacheAligned128)
-	b	L(cacheAligned256)
-	.align 5
-/* A simple loop for the longer (>640 bytes) lengths.  This form limits
-   the branch miss-predicted to exactly 1 at loop exit.*/
-L(cacheAligned512):
-	cmplwi	cr1,rLEN,128
-	blt	cr1,L(cacheAligned1)
-	dcbz	0,rMEMP
-	addi	rLEN,rLEN,-128
-	addi	rMEMP,rMEMP,128
-	b	L(cacheAligned512)
-        .align 5
-L(cacheAligned256):
-	cmplwi	cr6,rLEN,512
-	dcbz	0,rMEMP
-	cmplwi	cr1,rLEN,384
-	dcbz	rMEMP2,rMEMP
-	addi	rMEMP,rMEMP,256
-	addi	rLEN,rLEN,-256
-	bge	cr6,L(cacheAligned256)
-	blt	cr1,L(cacheAligned1)
-        .align 4
-L(cacheAligned128):
-	dcbz	0,rMEMP
-	addi	rMEMP,rMEMP,128
-	addi	rLEN,rLEN,-128
-        .align 4
-L(cacheAligned1):
-	cmplwi	cr1,rLEN,32
-	blt	cr1,L(handletail32)
-	addi	rMEMP3,rMEMP,32
-	addi	rLEN,rLEN,-32
-	stw	rCHR,0(rMEMP)
-        stw     rCHR,4(rMEMP)
-	stw	rCHR,8(rMEMP)
-	stw     rCHR,12(rMEMP)
-	stw	rCHR,16(rMEMP)
-        stw     rCHR,20(rMEMP)
-	addi	rMEMP,rMEMP,32
-	cmplwi	cr1,rLEN,32
-	stw	rCHR,-8(rMEMP3)
-        stw     rCHR,-4(rMEMP3)
-L(cacheAligned2):
-	blt	cr1,L(handletail32)
-	addi	rLEN,rLEN,-32
-	stw	rCHR,0(rMEMP3)
-        stw     rCHR,4(rMEMP3)
-	stw	rCHR,8(rMEMP3)
-	stw     rCHR,12(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmplwi	cr1,rLEN,32
-	stw	rCHR,16(rMEMP3)
-        stw     rCHR,20(rMEMP3)
-	stw	rCHR,24(rMEMP3)
-        stw     rCHR,28(rMEMP3)
-	nop
-L(cacheAligned3):
-	blt	cr1,L(handletail32)
-/* At this point we can overrun the store queue (pipe reject) so it is
-   time to slow things down. The store queue can merge two adjacent
-   stores into a single L1/L2 op, but the L2 is clocked at 1/2 the CPU.
-   So we add "group ending nops" to guarantee that we dispatch only two
-   stores every other cycle. */
-	ori	r1,r1,0
-	ori	r1,r1,0
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,32(rMEMP3)
-        stw     rCHR,36(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,40(rMEMP3)
-	stw     rCHR,44(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,48(rMEMP3)
-        stw     rCHR,52(rMEMP3)
-	ori	r1,r1,0
-	ori	r1,r1,0
-	stw	rCHR,56(rMEMP3)
-        stw     rCHR,60(rMEMP3)
-
-/* We are here because the length or remainder (rLEN) is less than the
-   cache line/sector size and does not justify aggressive loop unrolling.
-   So set up the preconditions for L(medium) and go there.  */
-        .align 3
-L(handletail32):
-	cmplwi	cr1,rLEN,0
-	beqlr   cr1
-	b	L(medium)
-
-	.align 4
-L(small):
-/* Memset of 4 bytes or less.  */
-	cmplwi	cr5, rLEN, 1
-	cmplwi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align 5
-L(medium):
-	cmplwi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt	29, L(medium_29t)
-L(medium_29f):
-	bge	cr1, L(medium_27t)
-	bflr	28
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt	cr1, L(medium_27f)
-L(medium_27t):
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-        stw     rCHR, -12(rMEMP)
-	stwu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr	28
-L(medium_28t):
-        stw     rCHR, -4(rMEMP)
-	stw	rCHR, -8(rMEMP)
-	blr
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/power6/multiarch/Implies b/sysdeps/powerpc/powerpc32/power6/multiarch/Implies
deleted file mode 100644
index ff9f999749..0000000000
--- a/sysdeps/powerpc/powerpc32/power6/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5+/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power6x/Implies b/sysdeps/powerpc/powerpc32/power6x/Implies
deleted file mode 100644
index c0e1bea435..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power6/fpu
-powerpc/powerpc32/power6
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/Implies b/sysdeps/powerpc/powerpc32/power6x/fpu/Implies
deleted file mode 100644
index d53ce2573c..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power6/fpu
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power6x/fpu/multiarch/Implies
deleted file mode 100644
index c66805ee63..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5+/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
deleted file mode 100644
index cb780516b5..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Round double to long int.  POWER6x PowerPC32 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power6"
-/* long int[r3] __lrint (double x[fp1])  */
-ENTRY (__lrint)
-	fctiw	fp13,fp1
-	mftgpr  r3,fp13
-	blr
-	END (__lrint)
-
-weak_alias (__lrint, lrint)
-
-strong_alias (__lrint, __lrintf)
-weak_alias (__lrint, lrintf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S b/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
deleted file mode 100644
index 05b13cd34c..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* lround function.  POWER6x, PowerPC32 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long [r3] lround (float x [fp1])
-   IEEE 1003.1 lround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use the Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power6"
-ENTRY (__lround)
-	frin	fp2,fp1	/* Pre-round +-0.5.  */
-	fctiwz	fp3,fp2	/* Convert To Integer Word lround toward 0.  */
-	mftgpr	r3,fp3	/* Transfer fpr3 to r3.  */
-	blr
-	END (__lround)
-
-weak_alias (__lround, lround)
-
-strong_alias (__lround, __lroundf)
-weak_alias (__lround, lroundf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power6x/multiarch/Implies b/sysdeps/powerpc/powerpc32/power6x/multiarch/Implies
deleted file mode 100644
index ff9f999749..0000000000
--- a/sysdeps/powerpc/powerpc32/power6x/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power5+/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power7/Implies b/sysdeps/powerpc/powerpc32/power7/Implies
deleted file mode 100644
index c0e1bea435..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power6/fpu
-powerpc/powerpc32/power6
diff --git a/sysdeps/powerpc/powerpc32/power7/Makefile b/sysdeps/powerpc/powerpc32/power7/Makefile
deleted file mode 100644
index 5e8f4a28ba..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-ifeq ($(subdir),string)
-CFLAGS-strncase.c += -funroll-loops
-CFLAGS-strncase_l.c += -funroll-loops
-endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power7/fpu/multiarch/Implies
deleted file mode 100644
index 45cbaede9f..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power6/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
deleted file mode 100644
index da4efa0fb9..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S
+++ /dev/null
@@ -1,93 +0,0 @@
-/* finite().  PowerPC32/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __finite(x)  */
-	.section    .rodata.cst8,"aM",@progbits,8
-	.align 3
-.LC0:   /* 1.0 */
-	.quad	    0x3ff0000000000000
-
-	.section    ".text"
-	.type	    __finite, @function
-	.machine    power7
-ENTRY (__finite)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfd	fp0,.LC0-got_label@l(r9)
-
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfd	fp0,.LC0@l(r9)
-#endif
-	ftdiv	cr7,fp1,fp0
-	li	r3,1
-	bflr	30
-
-	/* We have -INF/+INF/NaN or a denormal.  */
-
-	stwu	r1,-16(r1)    /* Allocate stack space.  */
-	stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
-
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz	r0,8+HISHORT(r1) /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	clrlwi	r0,r0,17      /* r0 = abs(r0).  */
-	addi	r1,r1,16      /* Reset the stack pointer.  */
-	cmpwi	cr7,r0,0x7ff0 /* r4 == 0x7ff0?.  */
-	bltlr	cr7	      /* LT means we have a denormal.  */
-	li	r3,0
-	blr
-	END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S
deleted file mode 100644
index 54bd94176d..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
deleted file mode 100644
index 668815761a..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S
+++ /dev/null
@@ -1,85 +0,0 @@
-/* isinf().  PowerPC32/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isinf(x)  */
-	.section    .rodata.cst8,"aM",@progbits,8
-	.align 3
-.LC0:   /* 1.0 */
-	.quad	    0x3ff0000000000000
-
-	.section    ".text"
-	.type	    __isinf, @function
-	.machine    power7
-ENTRY (__isinf)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfd	fp0,.LC0-got_label@l(r9)
-
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfd	fp0,.LC0@l(r9)
-#endif
-	ftdiv	cr7,fp1,fp0
-	li	r3,0
-	bflr    29	      /* If not INF, return.  */
-
-	/* Either we have +INF or -INF.  */
-
-	stwu    r1,-16(r1)    /* Allocate stack space.  */
-	stfd    fp1,8(r1)     /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz	r4,8+HISHORT(r1) /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	addi	r1,r1,16      /* Reset the stack pointer.  */
-	cmpwi	cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
-	li	r3,1
-	beqlr   cr7	      /* EQ means INF, otherwise -INF.  */
-	li      r3,-1
-	blr
-	END (__isinf)
-
-hidden_def (__isinf)
-weak_alias (__isinf, isinf)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isinf, __isinff)
-hidden_def (__isinff)
-weak_alias (__isinff, isinff)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
-weak_alias (__isinf, isinfl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
-compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S
deleted file mode 100644
index be759e091e..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isinf.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
deleted file mode 100644
index 433137f1c4..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S
+++ /dev/null
@@ -1,90 +0,0 @@
-/* isnan().  PowerPC32/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.section    .rodata.cst8,"aM",@progbits,8
-	.align 3
-.LC0:   /* 1.0 */
-	.quad	    0x3ff0000000000000
-
-	.section    ".text"
-	.type	    __isnan, @function
-	.machine    power7
-ENTRY (__isnan)
-#ifdef SHARED
-	mflr	r11
-	cfi_register(lr,r11)
-
-	SETUP_GOT_ACCESS(r9,got_label)
-	addis	r9,r9,.LC0-got_label@ha
-	lfd	fp0,.LC0-got_label@l(r9)
-
-	mtlr	r11
-	cfi_same_value (lr)
-#else
-	lis	r9,.LC0@ha
-	lfd	fp0,.LC0@l(r9)
-#endif
-	ftdiv	cr7,fp1,fp0
-	li	r3,0
-	bflr	30	      /* If not NaN or Inf, finish. */
-
-	/* We have -INF/+INF/NaN or a denormal.  */
-
-	stwu	r1,-16(r1)    /* Allocate stack space.  */
-	stfd	fp1,8(r1)     /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lwz     r4,8+HIWORD(r1) /* Load the upper half of the FP value.  */
-	lwz     r5,8+LOWORD(r1) /* Load the lower half of the FP value.  */
-	addi	r1,r1,16      /* Reset the stack pointer.  */
-	lis     r0,0x7ff0     /* Load the upper portion for an INF/NaN.  */
-	clrlwi  r4,r4,1	      /* r4 = abs(r4).  */
-	cmpw    cr7,r4,r0     /* if (abs(r4) <= inf).  */
-	cmpwi   cr6,r5,0      /* r5 == 0x00000000?  */
-	bltlr	cr7	      /* LT means we have a denormal.  */
-	bgt	cr7,L(NaN)    /* GT means we have a NaN.  */
-	beqlr	cr6	      /* EQ means we have +/-INF.  */
-L(NaN):
-	li      r3,1	      /* x == NaN?  */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
deleted file mode 100644
index b48c85e0d3..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/fpu/s_isnanf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isnan.S.  */
diff --git a/sysdeps/powerpc/powerpc32/power7/memchr.S b/sysdeps/powerpc/powerpc32/power7/memchr.S
deleted file mode 100644
index 9ce8507a82..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/memchr.S
+++ /dev/null
@@ -1,193 +0,0 @@
-/* Optimized memchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memchr (char *s [r3], int byte [r4], int size [r5])  */
-	.machine  power7
-ENTRY (__memchr)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi  r8,r3,2
-	insrwi	r4,r4,8,16    /* Replicate byte to word.  */
-
-	/* Calculate the last acceptable address and check for possible
-	   addition overflow by using satured math:
-	   r7 = r3 + r5
-	   r7 |= -(r7 < x)  */
-	add     r7,r3,r5
-	subfc   r6,r3,r7
-	subfe   r9,r9,r9
-	or      r7,r7,r9
-
-	insrwi	r4,r4,16,0
-	cmplwi	r5,16
-	li	r9, -1
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	addi	r7,r7,-1
-#ifdef __LITTLE_ENDIAN__
-	slw	r9,r9,r6
-#else
-	srw	r9,r9,r6
-#endif
-	ble	L(small_range)
-
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r3,r12,r4     /* Check for BYTEs in WORD1.  */
-	and	r3,r3,r9
-	clrlwi	r5,r7,30      /* Byte count - 1 in last word.  */
-	clrrwi	r7,r7,2       /* Address of last word.  */
-	cmplwi	cr7,r3,0      /* If r3 == 0, no BYTEs have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-	bt	29,L(loop_setup)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr7,r3,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last word we want to read in the loop below is the one
-	   containing the last byte of the string, ie. the word at
-	   (s + size - 1) & ~3, or r7.  The first word read is at
-	   r8 + 4, we read 2 * cnt words, so the last word read will
-	   be at r8 + 4 + 8 * cnt - 4.  Solving for cnt gives
-	   cnt = (r7 - r8) / 8  */
-	sub	r6,r7,r8
-	srwi	r6,r6,3	      /* Number of loop iterations.  */
-	mtctr	r6            /* Setup the counter.  */
-
-	/* Main loop to look for BYTE in the string.  Since
-	   it's a small loop (8 instructions), align it to 32-bytes.  */
-	.align	5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-	lwz	r12,4(r8)
-	lwzu	r11,8(r8)
-	cmpb	r3,r12,r4
-	cmpb	r9,r11,r4
-	or	r6,r9,r3      /* Merge everything in one word.  */
-	cmplwi	cr7,r6,0
-	bne	cr7,L(found)
-	bdnz	L(loop)
-
-	/* We may have one more dword to read.  */
-	cmplw	r8,r7
-	beqlr
-
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr6,r3,0
-	bne	cr6,L(done)
-	blr
-
-	.align	4
-L(found):
-	/* OK, one (or both) of the words contains BYTE.  Check
-	   the first word and decrement the address in case the first
-	   word really contains BYTE.  */
-	cmplwi	cr6,r3,0
-	addi	r8,r8,-4
-	bne	cr6,L(done)
-
-	/* BYTE must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r3 so we can calculate the
-	   pointer.  */
-
-	mr	r3,r9
-	addi	r8,r8,4
-
-	/* r3 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as BYTE in the original
-	   word from the string.  Use that to calculate the pointer.
-	   We need to make sure BYTE is *before* the end of the range.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r3,-1
-	andc    r0,r0,r3
-	popcntw	r0,r0	      /* Count trailing zeros.  */
-#else
-	cntlzw	r0,r3	      /* Count leading zeros before the match.  */
-#endif
-	cmplw	r8,r7         /* Are we on the last word?  */
-	srwi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r8,r0
-	cmplw	cr7,r0,r5     /* If on the last dword, check byte offset.  */
-	bnelr
-	blelr	cr7
-	li	r3,0
-	blr
-
-	.align	4
-L(null):
-	li	r3,0
-	blr
-
-/* Deals with size <= 16.  */
-	.align	4
-L(small_range):
-	cmplwi	r5,0
-	beq	L(null)
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r3,r12,r4     /* Check for BYTE in DWORD1.  */
-	and	r3,r3,r9
-	cmplwi	cr7,r3,0
-	clrlwi	r5,r7,30      /* Byte count - 1 in last word.  */
-	clrrwi	r7,r7,2       /* Address of last word.  */
-	cmplw	r8,r7         /* Are we done already?  */
-	bne	cr7,L(done)
-	beqlr
-
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr6,r3,0
-	cmplw	r8,r7
-	bne	cr6,L(done)
-	beqlr
-
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr6,r3,0
-	cmplw	r8,r7
-	bne	cr6,L(done)
-	beqlr
-
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr6,r3,0
-	cmplw	r8,r7
-	bne	cr6,L(done)
-	beqlr
-
-	lwzu	r12,4(r8)
-	cmpb	r3,r12,r4
-	cmplwi	cr6,r3,0
-	bne	cr6,L(done)
-	blr
-
-END (__memchr)
-weak_alias (__memchr, memchr)
-libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/powerpc/powerpc32/power7/memcmp.S b/sysdeps/powerpc/powerpc32/power7/memcmp.S
deleted file mode 100644
index 09c9b9bf4d..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/memcmp.S
+++ /dev/null
@@ -1,1375 +0,0 @@
-/* Optimized memcmp implementation for POWER7/PowerPC32.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memcmp (const char *s1 [r3],
-		    const char *s2 [r4],
-		    size_t size [r5])  */
-
-	.machine power7
-EALIGN (memcmp, 4, 0)
-	CALL_MCOUNT
-
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3	r8	/* next word in s1 */
-#define rWORD4	r9	/* next word in s2 */
-#define rWORD5	r10	/* next word in s1 */
-#define rWORD6	r11	/* next word in s2 */
-#define rWORD7	r30	/* next word in s1 */
-#define rWORD8	r31	/* next word in s2 */
-
-	xor	r0, rSTR2, rSTR1
-	cmplwi	cr6, rN, 0
-	cmplwi	cr1, rN, 12
-	clrlwi.	r0, r0, 30
-	clrlwi	r12, rSTR1, 30
-	cmplwi	cr5, r12, 0
-	beq-	cr6, L(zeroLength)
-	dcbt	0, rSTR1
-	dcbt	0, rSTR2
-/* If less than 8 bytes or not aligned, use the unaligned
-   byte loop.  */
-	blt	cr1, L(bytealigned)
-	stwu	1, -64(r1)
-	cfi_adjust_cfa_offset(64)
-	stw	rWORD8, 48(r1)
-	stw	rWORD7, 44(r1)
-	cfi_offset(rWORD8, (48-64))
-	cfi_offset(rWORD7, (44-64))
-	bne	L(unaligned)
-/* At this point we know both strings have the same alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   2 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then we are already word
-   aligned and can perform the word aligned loop.
-
-   Otherwise we know the two strings have the same alignment (but not
-   yet word aligned).  So we force the string addresses to the next lower
-   word boundary and special case this first word using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (word aligned) compare loop, starting at the second word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first word. This ensures that the loop count is
-   correct and the first word (shifted) is in the expected register pair. */
-	.align	4
-L(samealignment):
-	clrrwi	rSTR1, rSTR1, 2
-	clrrwi	rSTR2, rSTR2, 2
-	beq	cr5, L(Waligned)
-	add	rN, rN, r12
-	slwi	rWORD6, r12, 3
-	srwi	r0, rN, 4	/* Divide by 16 */
-	andi.	r12, rN, 12	/* Get the word remainder */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	beq	L(dPs4)
-	mtctr	r0
-	bgt	cr1, L(dPs3)
-	beq	cr1, L(dPs2)
-
-/* Remainder is 4 */
-	.align	3
-L(dsP1):
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD2, rWORD6
-	cmplw	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(dP1e)
-/* Remainder is 8 */
-	.align	4
-L(dPs2):
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD2, rWORD6
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	b	L(dP2e)
-/* Remainder is 12 */
-	.align	4
-L(dPs3):
-	slw	rWORD3, rWORD1, rWORD6
-	slw	rWORD4, rWORD2, rWORD6
-	cmplw	cr1, rWORD3, rWORD4
-	b	L(dP3e)
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(dPs4):
-	mtctr	r0
-	slw	rWORD1, rWORD1, rWORD6
-	slw	rWORD2, rWORD2, rWORD6
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(dP4e)
-
-/* At this point we know both strings are word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(Waligned):
-	andi.	r12, rN, 12	/* Get the word remainder */
-	srwi	r0, rN, 4	/* Divide by 16 */
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	beq	L(dP4)
-	bgt	cr1, L(dP3)
-	beq	cr1, L(dP2)
-
-/* Remainder is 4 */
-	.align	4
-L(dP1):
-	mtctr	r0
-/* Normally we'd use rWORD7/rWORD8 here, but since we might exit early
-   (8-15 byte compare), we want to use only volatile registers.  This
-   means we can avoid restoring non-volatile registers since we did not
-   change any on the early exit path.  The key here is the non-early
-   exit path only cares about the condition code (cr5), not about which
-   register pair was used.  */
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-	lwz	rWORD6, 0(rSTR2)
-#endif
-	cmplw	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-L(dP1e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5x)
-	bne	cr7, L(dLcr7x)
-
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	bne	cr1, L(dLcr1)
-	cmplw	cr5, rWORD7, rWORD8
-	bdnz	L(dLoop)
-	bne	cr6, L(dLcr6)
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-	.align	3
-L(dP1x):
-	slwi.	r12, rN, 3
-	bne	cr5, L(dLcr5x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 8 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP2):
-	mtctr	r0
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-	lwz	rWORD6, 0(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-L(dP2e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 12(rSTR1)
-	lwz	rWORD4, 12(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr6, L(dLcr6)
-	bne	cr5, L(dLcr5)
-	b	L(dLoop2)
-/* Again we are on a early exit path (16-23 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP2x):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	slwi.	r12, rN, 3
-	bne	cr6, L(dLcr6x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr1, L(dLcr1x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 12 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP3):
-	mtctr	r0
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 0(rSTR1)
-	lwz	rWORD4, 0(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-L(dP3e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 4(rSTR1)
-	lwz	rWORD6, 4(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP3x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 8(rSTR1)
-	lwz	rWORD8, 8(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 12(rSTR1)
-	lwz	rWORD2, 12(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr1, L(dLcr1)
-	bne	cr6, L(dLcr6)
-	b	L(dLoop1)
-/* Again we are on a early exit path (24-31 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP3x):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	slwi.	r12, rN, 3
-	bne	cr1, L(dLcr1x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr6, L(dLcr6x)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	bne	cr7, L(dLcr7x)
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dP4):
-	mtctr	r0
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-L(dP4e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 8(rSTR1)
-	lwz	rWORD6, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 12(rSTR1)
-	lwzu	rWORD8, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-	bne	cr1, L(dLcr1)
-	bdz-	L(d24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(dLoop):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-L(dLoop1):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-L(dLoop2):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-L(dLoop3):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	bne	cr1, L(dLcr1)
-	cmplw	cr7, rWORD1, rWORD2
-	bdnz	L(dLoop)
-
-L(dL4):
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-	cmplw	cr5, rWORD7, rWORD8
-L(d44):
-	bne	cr7, L(dLcr7)
-L(d34):
-	bne	cr1, L(dLcr1)
-L(d24):
-	bne	cr6, L(dLcr6)
-L(d14):
-	slwi.	r12, rN, 3
-	bne	cr5, L(dLcr5)
-L(d04):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	subfic	rN, r12, 32	/* Shift count is 32 - (rN * 8).  */
-	beq	L(zeroLength)
-/* At this point we have a remainder of 1 to 3 bytes to compare.  Since
-   we are aligned it is safe to load the whole word, and use
-   shift right to eliminate bits beyond the compare length.  */
-L(d00):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	rWORD1, rWORD1, rN
-	srw	rWORD2, rWORD2, rN
-	sub	rRTN, rWORD1, rWORD2
-	blr
-
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr7):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr7x):
-	li	rRTN, 1
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr1):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr1x):
-	li	rRTN, 1
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr6):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr6x):
-	li	rRTN, 1
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-	cfi_adjust_cfa_offset(64)
-L(dLcr5):
-	lwz	rWORD7, 44(r1)
-	lwz	rWORD8, 48(r1)
-L(dLcr5x):
-	li	rRTN, 1
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	bgtlr	cr5
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(bytealigned):
-	mtctr	rN
-
-/* We need to prime this loop.  This loop is swing modulo scheduled
-   to avoid pipe delays.  The dependent instruction latencies (load to
-   compare to conditional branch) is 2 to 3 cycles.  In this loop each
-   dispatch group ends in a branch and takes 1 cycle.  Effectively
-   the first iteration of the loop only serves to load operands and
-   branches based on compares are delayed until the next loop.
-
-   So we must precondition some registers and condition codes so that
-   we don't exit the loop early on the first iteration.  */
-
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	bdz	L(b11)
-	cmplw	cr7, rWORD1, rWORD2
-	lbz	rWORD3, 1(rSTR1)
-	lbz	rWORD4, 1(rSTR2)
-	bdz	L(b12)
-	cmplw	cr1, rWORD3, rWORD4
-	lbzu	rWORD5, 2(rSTR1)
-	lbzu	rWORD6, 2(rSTR2)
-	bdz	L(b13)
-	.align	4
-L(bLoop):
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	bne	cr7, L(bLcr7)
-
-	cmplw	cr6, rWORD5, rWORD6
-	bdz	L(b3i)
-
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	bne	cr1, L(bLcr1)
-
-	cmplw	cr7, rWORD1, rWORD2
-	bdz	L(b2i)
-
-	lbzu	rWORD5, 1(rSTR1)
-	lbzu	rWORD6, 1(rSTR2)
-	bne	cr6, L(bLcr6)
-
-	cmplw	cr1, rWORD3, rWORD4
-	bdnz	L(bLoop)
-
-/* We speculatively loading bytes before we have tested the previous
-   bytes.  But we must avoid overrunning the length (in the ctr) to
-   prevent these speculative loads from causing a segfault.  In this
-   case the loop will exit early (before the all pending bytes are
-   tested.  In this case we must complete the pending operations
-   before returning.  */
-L(b1i):
-	bne	cr7, L(bLcr7)
-	bne	cr1, L(bLcr1)
-	b	L(bx56)
-	.align	4
-L(b2i):
-	bne	cr6, L(bLcr6)
-	bne	cr7, L(bLcr7)
-	b	L(bx34)
-	.align	4
-L(b3i):
-	bne	cr1, L(bLcr1)
-	bne	cr6, L(bLcr6)
-	b	L(bx12)
-	.align	4
-L(bLcr7):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-L(bLcr1):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-L(bLcr6):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-L(b13):
-	bne	cr7, L(bx12)
-	bne	cr1, L(bx34)
-L(bx56):
-	sub	rRTN, rWORD5, rWORD6
-	blr
-	nop
-L(b12):
-	bne	cr7, L(bx12)
-L(bx34):
-	sub	rRTN, rWORD3, rWORD4
-	blr
-L(b11):
-L(bx12):
-	sub	rRTN, rWORD1, rWORD2
-	blr
-	.align	4
-L(zeroLength):
-	li	rRTN, 0
-	blr
-
-	.align	4
-/* At this point we know the strings have different alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   2 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then rStr1 is word aligned and can
-   perform the Wunaligned loop.
-
-   Otherwise we know that rSTR1 is not already word aligned yet.
-   So we can force the string addresses to the next lower word
-   boundary and special case this first word using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (Wualigned) compare loop, starting at the second word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first W. This ensures that the loop count is
-   correct and the first W (shifted) is in the expected resister pair.  */
-#define rSHL		r29	/* Unaligned shift left count.  */
-#define rSHR		r28	/* Unaligned shift right count.  */
-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
-	cfi_adjust_cfa_offset(64)
-L(unaligned):
-	stw	rSHL, 40(r1)
-	cfi_offset(rSHL, (40-64))
-	clrlwi	rSHL, rSTR2, 30
-	stw	rSHR, 36(r1)
-	cfi_offset(rSHR, (36-64))
-	beq	cr5, L(Wunaligned)
-	stw	rWORD8_SHIFT, 32(r1)
-	cfi_offset(rWORD8_SHIFT, (32-64))
-/* Adjust the logical start of rSTR2 to compensate for the extra bits
-   in the 1st rSTR1 W.  */
-	sub	rWORD8_SHIFT, rSTR2, r12
-/* But do not attempt to address the W before that W that contains
-   the actual start of rSTR2.  */
-	clrrwi	rSTR2, rSTR2, 2
-	stw	rWORD2_SHIFT, 28(r1)
-/* Compute the left/right shift counts for the unaligned rSTR2,
-   compensating for the logical (W aligned) start of rSTR1.  */
-	clrlwi	rSHL, rWORD8_SHIFT, 30
-	clrrwi	rSTR1, rSTR1, 2
-	stw	rWORD4_SHIFT, 24(r1)
-	slwi	rSHL, rSHL, 3
-	cmplw	cr5, rWORD8_SHIFT, rSTR2
-	add	rN, rN, r12
-	slwi	rWORD6, r12, 3
-	stw	rWORD6_SHIFT, 20(r1)
-	cfi_offset(rWORD2_SHIFT, (28-64))
-	cfi_offset(rWORD4_SHIFT, (24-64))
-	cfi_offset(rWORD6_SHIFT, (20-64))
-	subfic	rSHR, rSHL, 32
-	srwi	r0, rN, 4	/* Divide by 16 */
-	andi.	r12, rN, 12	/* Get the W remainder */
-/* We normally need to load 2 Ws to start the unaligned rSTR2, but in
-   this special case those bits may be discarded anyway.  Also we
-   must avoid loading a W where none of the bits are part of rSTR2 as
-   this may cross a page boundary and cause a page fault.  */
-	li	rWORD8, 0
-	blt	cr5, L(dus0)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD8, 0(rSTR2)
-	addi	rSTR2, rSTR2, 4
-#endif
-	slw	rWORD8, rWORD8, rSHL
-
-L(dus0):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	srw	r12, rWORD2, rSHR
-	clrlwi	rN, rN, 30
-	beq	L(duPs4)
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	bgt	cr1, L(duPs3)
-	beq	cr1, L(duPs2)
-
-/* Remainder is 4 */
-	.align	4
-L(dusP1):
-	slw	rWORD8_SHIFT, rWORD2, rSHL
-	slw	rWORD7, rWORD1, rWORD6
-	slw	rWORD8, rWORD8, rWORD6
-	bge	cr7, L(duP1e)
-/* At this point we exit early with the first word compare
-   complete and remainder of 0 to 3 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-	cmplw	cr5, rWORD7, rWORD8
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 8 */
-	.align	4
-L(duPs2):
-	slw	rWORD6_SHIFT, rWORD2, rSHL
-	slw	rWORD5, rWORD1, rWORD6
-	slw	rWORD6, rWORD8, rWORD6
-	b	L(duP2e)
-/* Remainder is 12 */
-	.align	4
-L(duPs3):
-	slw	rWORD4_SHIFT, rWORD2, rSHL
-	slw	rWORD3, rWORD1, rWORD6
-	slw	rWORD4, rWORD8, rWORD6
-	b	L(duP3e)
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(duPs4):
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	slw	rWORD1, rWORD1, rWORD6
-	slw	rWORD2, rWORD8, rWORD6
-	b	L(duP4e)
-
-/* At this point we know rSTR1 is word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(Wunaligned):
-	stw	rWORD8_SHIFT, 32(r1)
-	clrrwi	rSTR2, rSTR2, 2
-	stw	rWORD2_SHIFT, 28(r1)
-	srwi	r0, rN, 4	/* Divide by 16 */
-	stw	rWORD4_SHIFT, 24(r1)
-	andi.	r12, rN, 12	/* Get the W remainder */
-	stw	rWORD6_SHIFT, 20(r1)
-	cfi_offset(rWORD8_SHIFT, (32-64))
-	cfi_offset(rWORD2_SHIFT, (28-64))
-	cfi_offset(rWORD4_SHIFT, (24-64))
-	cfi_offset(rWORD6_SHIFT, (20-64))
-	slwi	rSHL, rSHL, 3
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD6, 0(rSTR2)
-	lwzu	rWORD8, 4(rSTR2)
-#endif
-	cmplwi	cr1, r12, 8
-	cmplwi	cr7, rN, 16
-	clrlwi	rN, rN, 30
-	subfic	rSHR, rSHL, 32
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	beq	L(duP4)
-	mtctr	r0
-	bgt	cr1, L(duP3)
-	beq	cr1, L(duP2)
-
-/* Remainder is 4 */
-	.align	4
-L(duP1):
-	srw	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD7, 0(rSTR1)
-#endif
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP1x)
-L(duP1e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	bne	cr5, L(duLcr5)
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	bne	cr7, L(duLcr7)
-	or	rWORD6, r0, rWORD4_SHIFT
-	cmplw	cr6, rWORD5, rWORD6
-	b	L(duLoop3)
-	.align	4
-/* At this point we exit early with the first word compare
-   complete and remainder of 0 to 3 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-L(duP1x):
-	cmplw	cr5, rWORD7, rWORD8
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 8 */
-	.align	4
-L(duP2):
-	srw	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD5, 0(rSTR1)
-#endif
-	or	rWORD6, r0, rWORD6_SHIFT
-	slw	rWORD6_SHIFT, rWORD8, rSHL
-L(duP2e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 4(rSTR1)
-	lwz	rWORD8, 4(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP2x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 8(rSTR1)
-	lwz	rWORD2, 8(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 12(rSTR1)
-	lwz	rWORD4, 12(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	bne	cr5, L(duLcr5)
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	b	L(duLoop2)
-	.align	4
-L(duP2x):
-	cmplw	cr5, rWORD7, rWORD8
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#endif
-	bne	cr6, L(duLcr6)
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Remainder is 12 */
-	.align	4
-L(duP3):
-	srw	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD3, 0(rSTR1)
-#endif
-	slw	rWORD4_SHIFT, rWORD8, rSHL
-	or	rWORD4, r12, rWORD6_SHIFT
-L(duP3e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 4(rSTR1)
-	lwz	rWORD6, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD7, 8(rSTR1)
-	lwz	rWORD8, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP3x)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 12(rSTR1)
-	lwz	rWORD2, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	b	L(duLoop1)
-	.align	4
-L(duP3x):
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Count is a multiple of 16, remainder is 0 */
-	.align	4
-L(duP4):
-	mtctr	r0
-	srw	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	addi	rSTR1, rSTR1, 4
-#else
-	lwz	rWORD1, 0(rSTR1)
-#endif
-	slw	rWORD2_SHIFT, rWORD8, rSHL
-	or	rWORD2, r0, rWORD6_SHIFT
-L(duP4e):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 4(rSTR1)
-	lwz	rWORD4, 4(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 8(rSTR1)
-	lwz	rWORD6, 8(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr7, L(duLcr7)
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 12(rSTR1)
-	lwzu	rWORD8, 12(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	cmplw	cr5, rWORD7, rWORD8
-	bdz	L(du24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(duLoop):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD1, 4(rSTR1)
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	srw	r0, rWORD2, rSHR
-	slw	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-L(duLoop1):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD3, 0, rSTR1
-	lwbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD3, 8(rSTR1)
-	lwz	rWORD4, 8(rSTR2)
-#endif
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	srw	r12, rWORD4, rSHR
-	slw	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-L(duLoop2):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD5, 0, rSTR1
-	lwbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD5, 12(rSTR1)
-	lwz	rWORD6, 12(rSTR2)
-#endif
-	cmplw	cr5, rWORD7, rWORD8
-	bne	cr7, L(duLcr7)
-	srw	r0, rWORD6, rSHR
-	slw	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-L(duLoop3):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD7, 0, rSTR1
-	lwbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-#else
-	lwzu	rWORD7, 16(rSTR1)
-	lwzu	rWORD8, 16(rSTR2)
-#endif
-	cmplw	cr7, rWORD1, rWORD2
-	bne	cr1, L(duLcr1)
-	srw	r12, rWORD8, rSHR
-	slw	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	bdnz	L(duLoop)
-
-L(duL4):
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmplw	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	cmplw	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	cmplw	cr5, rWORD7, rWORD8
-L(du44):
-	bne	cr7, L(duLcr7)
-L(du34):
-	bne	cr1, L(duLcr1)
-L(du24):
-	bne	cr6, L(duLcr6)
-L(du14):
-	slwi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-/* At this point we have a remainder of 1 to 3 bytes to compare.  We use
-   shift right to eliminate bits beyond the compare length.
-   This allows the use of word subtract to compute the final result.
-
-   However it may not be safe to load rWORD2 which may be beyond the
-   string length. So we compare the bit length of the remainder to
-   the right shift count (rSHR). If the bit count is less than or equal
-   we do not need to load rWORD2 (all significant bits are already in
-   rWORD8_SHIFT).  */
-	cmplw	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 4
-#else
-	lwz	rWORD2, 4(rSTR2)
-#endif
-	srw	r0, rWORD2, rSHR
-	.align	4
-L(dutrim):
-#ifdef __LITTLE_ENDIAN__
-	lwbrx	rWORD1, 0, rSTR1
-#else
-	lwz	rWORD1, 4(rSTR1)
-#endif
-	lwz	rWORD8, 48(r1)
-	subfic	rN, rN, 32	/* Shift count is 32 - (rN * 8).  */
-	or	rWORD2, r0, rWORD8_SHIFT
-	lwz	rWORD7, 44(r1)
-	lwz	rSHL, 40(r1)
-	srw	rWORD1, rWORD1, rN
-	srw	rWORD2, rWORD2, rN
-	lwz	rSHR, 36(r1)
-	lwz	rWORD8_SHIFT, 32(r1)
-	sub	rRTN, rWORD1, rWORD2
-	b	L(dureturn26)
-	.align	4
-L(duLcr7):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr7, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr1):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr1, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr6):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr6, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr5):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-	li	rRTN, 1
-	bgt	cr5, L(dureturn29)
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	3
-L(duZeroReturn):
-	li	rRTN, 0
-	.align	4
-L(dureturn):
-	lwz	rWORD8, 48(r1)
-	lwz	rWORD7, 44(r1)
-L(dureturn29):
-	lwz	rSHL, 40(r1)
-	lwz	rSHR, 36(r1)
-L(dureturn27):
-	lwz	rWORD8_SHIFT, 32(r1)
-L(dureturn26):
-	lwz	rWORD2_SHIFT, 28(r1)
-L(dureturn25):
-	lwz	rWORD4_SHIFT, 24(r1)
-	lwz	rWORD6_SHIFT, 20(r1)
-	addi	r1, r1, 64
-	cfi_adjust_cfa_offset(-64)
-	blr
-END (memcmp)
-
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc32/power7/memcpy.S b/sysdeps/powerpc/powerpc32/power7/memcpy.S
deleted file mode 100644
index 8e33c1d733..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/memcpy.S
+++ /dev/null
@@ -1,538 +0,0 @@
-/* Optimized memcpy implementation for PowerPC32/POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.  */
-
-	.machine  power7
-EALIGN (memcpy, 5, 0)
-	CALL_MCOUNT
-
-	stwu    1,-32(1)
-	cfi_adjust_cfa_offset(32)
-	stw	30,20(1)
-	cfi_offset(30,(20-32))
-	stw	31,24(1)
-	mr      30,3
-	cmplwi  cr1,5,31
-	neg	0,3
-	cfi_offset(31,-8)
-	ble	cr1, L(copy_LT_32)  /* If move < 32 bytes use short move
-				    code.  */
-
-	andi.   11,3,15	      /* Check alignment of DST.  */
-	clrlwi  10,4,28	      /* Check alignment of SRC.  */
-	cmplw   cr6,10,11     /* SRC and DST alignments match?  */
-	mr	12,4
-	mr	31,5
-	bne	cr6,L(copy_GE_32_unaligned)
-
-	srwi    9,5,3	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_aligned_cont)
-
-	clrlwi  0,0,29
-	mtcrf   0x01,0
-	subf    31,0,5
-
-	/* Get the SRC aligned to 8 bytes.  */
-
-1:	bf	31,2f
-	lbz	6,0(12)
-	addi    12,12,1
-	stb	6,0(3)
-	addi    3,3,1
-2:	bf      30,4f
-	lhz     6,0(12)
-	addi    12,12,2
-	sth     6,0(3)
-	addi    3,3,2
-4:	bf      29,0f
-	lwz     6,0(12)
-	addi    12,12,4
-	stw     6,0(3)
-	addi    3,3,4
-0:
-	clrlwi  10,12,29      /* Check alignment of SRC again.  */
-	srwi    9,31,3	      /* Number of full doublewords remaining.  */
-
-L(copy_GE_32_aligned_cont):
-
-	clrlwi  11,31,29
-	mtcrf   0x01,9
-
-	srwi    8,31,5
-	cmplwi  cr1,9,4
-	cmplwi  cr6,11,0
-	mr	11,12
-
-	/* Copy 1~3 doublewords so the main loop starts
-	at a multiple of 32 bytes.  */
-
-	bf	30,1f
-	lfd     6,0(12)
-	lfd     7,8(12)
-	addi    11,12,16
-	mtctr   8
-	stfd    6,0(3)
-	stfd    7,8(3)
-	addi    10,3,16
-	bf      31,4f
-	lfd     0,16(12)
-	stfd    0,16(3)
-	blt     cr1,3f
-	addi    11,12,24
-	addi    10,3,24
-	b       4f
-
-	.align  4
-1:	/* Copy 1 doubleword and set the counter.  */
-	mr	10,3
-	mtctr   8
-	bf      31,4f
-	lfd     6,0(12)
-	addi    11,12,8
-	stfd    6,0(3)
-	addi    10,3,8
-
-L(aligned_copy):
-	/* Main aligned copy loop. Copies up to 128-bytes at a time. */
-	.align  4
-4:
-	/* check for any 32-byte or 64-byte lumps that are outside of a
-	   nice 128-byte range.  R8 contains the number of 32-byte
-	   lumps, so drop this into the CR, and use the SO/EQ bits to help
-	   handle the 32- or 64- byte lumps.  Then handle the rest with an
-	   unrolled 128-bytes-at-a-time copy loop. */
-	mtocrf	1,8
-	li	6,16	# 16() index
-	li	7,32	# 32() index
-	li	8,48	# 48() index
-
-L(aligned_32byte):
-	/* if the SO bit (indicating a 32-byte lump) is not set, move along. */
-	bns	cr7,L(aligned_64byte)
-	lxvd2x	6,0,11
-	lxvd2x	7,11,6
-	addi	11,11,32
-	stxvd2x	6,0,10
-	stxvd2x	7,10,6
-	addi	10,10,32
-
-L(aligned_64byte):
-	/* if the EQ bit (indicating a 64-byte lump) is not set, move along. */
-	bne	cr7,L(aligned_128setup)
-	lxvd2x	6,0,11
-	lxvd2x	7,11,6
-	lxvd2x	8,11,7
-	lxvd2x	9,11,8
-	addi	11,11,64
-	stxvd2x	6,0,10
-	stxvd2x	7,10,6
-	stxvd2x	8,10,7
-	stxvd2x	9,10,8
-	addi	10,10,64
-
-L(aligned_128setup):
-	/* Set up for the 128-byte at a time copy loop.  */
-	srwi	8,31,7
-	cmpwi	8,0	# Any 4x lumps left?
-	beq	3f	# if not, move along.
-	lxvd2x	6,0,11
-	lxvd2x	7,11,6
-	mtctr	8	# otherwise, load the ctr and begin.
-	li	8,48	# 48() index
-	b	L(aligned_128loop)
-
-L(aligned_128head):
-	/* for the 2nd + iteration of this loop. */
-	lxvd2x	6,0,11
-	lxvd2x	7,11,6
-L(aligned_128loop):
-	lxvd2x	8,11,7
-	lxvd2x	9,11,8
-	stxvd2x	6,0,10
-	addi	11,11,64
-	stxvd2x	7,10,6
-	stxvd2x	8,10,7
-	stxvd2x	9,10,8
-	lxvd2x	6,0,11
-	lxvd2x	7,11,6
-	addi	10,10,64
-	lxvd2x	8,11,7
-	lxvd2x	9,11,8
-	addi	11,11,64
-	stxvd2x	6,0,10
-	stxvd2x	7,10,6
-	stxvd2x	8,10,7
-	stxvd2x	9,10,8
-	addi	10,10,64
-	bdnz	L(aligned_128head)
-
-3:
-	/* Check for tail bytes.  */
-	clrrwi  0,31,3
-	mtcrf   0x01,31
-	beq	cr6,0f
-
-.L9:
-	add	3,3,0
-	add	12,12,0
-
-	/*  At this point we have a tail of 0-7 bytes and we know that the
-	destination is doubleword-aligned.  */
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz     6,0(12)
-	addi    12,12,4
-	stw     6,0(3)
-	addi    3,3,4
-2:	/* Copy 2 bytes.  */
-	bf	30,1f
-
-	lhz     6,0(12)
-	addi    12,12,2
-	sth     6,0(3)
-	addi    3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return original DST pointer.  */
-	mr	3,30
-	lwz	30,20(1)
-	lwz     31,24(1)
-	addi    1,1,32
-	blr
-
-	/* Handle copies of 0~31 bytes.  */
-	.align  4
-L(copy_LT_32):
-	cmplwi  cr6,5,8
-	mr	12,4
-	mtcrf   0x01,5
-	ble	cr6,L(copy_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	8,4
-	clrrwi  11,4,2
-	andi.   0,8,3
-	cmplwi  cr1,5,16
-	mr	10,5
-	beq	L(copy_LT_32_aligned)
-
-	/* Force 4-bytes alignment for SRC.  */
-	mtocrf  0x01,0
-	subf    10,0,5
-2:	bf	30,1f
-
-	lhz	6,0(12)
-	addi    12,12,2
-	sth	6,0(3)
-	addi    3,3,2
-1:	bf	31,L(end_4bytes_alignment)
-
-	lbz	6,0(12)
-	addi    12,12,1
-	stb	6,0(3)
-	addi    3,3,1
-
-	.align  4
-L(end_4bytes_alignment):
-	cmplwi  cr1,10,16
-	mtcrf   0x01,10
-
-L(copy_LT_32_aligned):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	6,0(12)
-	lwz     7,4(12)
-	stw     6,0(3)
-	lwz     8,8(12)
-	stw     7,4(3)
-	lwz     6,12(12)
-	addi    12,12,16
-	stw     8,8(3)
-	stw     6,12(3)
-	addi    3,3,16
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz     6,0(12)
-	lwz     7,4(12)
-	addi    12,12,8
-	stw     6,0(3)
-	stw     7,4(3)
-	addi    3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz     6,0(12)
-	addi    12,12,4
-	stw     6,0(3)
-	addi    3,3,4
-2:	/* Copy 2-3 bytes.  */
-	bf	30,1f
-
-	lhz     6,0(12)
-	sth     6,0(3)
-	bf      31,0f
-	lbz     7,2(12)
-	stb     7,2(3)
-
-	/* Return original DST pointer.  */
-	mr      3,30
-	lwz     30,20(1)
-	addi    1,1,32
-	blr
-
-	.align  4
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return original DST pointer.  */
-	mr	3,30
-	lwz	30,20(1)
-	addi    1,1,32
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align  4
-L(copy_LE_8):
-	bne	cr6,4f
-
-	/* Though we could've used lfd/stfd here, they are still
-	slow for unaligned cases.  */
-
-	lwz	6,0(4)
-	lwz     7,4(4)
-	stw     6,0(3)
-	stw     7,4(3)
-
-	/* Return original DST pointer.  */
-	mr      3,30
-	lwz     30,20(1)
-	addi    1,1,32
-	blr
-
-	.align  4
-4:	/* Copies 4~7 bytes.  */
-	bf	29,2b
-
-	lwz	6,0(4)
-	stw     6,0(3)
-	bf      30,5f
-	lhz     7,4(4)
-	sth     7,4(3)
-	bf      31,0f
-	lbz     8,6(4)
-	stb     8,6(3)
-
-	/* Return original DST pointer.  */
-	mr      3,30
-	lwz     30,20(1)
-	addi    1,1,32
-	blr
-
-	.align  4
-5:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,4(4)
-	stb	6,4(3)
-
-0:	/* Return original DST pointer.  */
-	mr	3,30
-	lwz     30,20(1)
-	addi    1,1,32
-	blr
-
-	/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-	SRC is not. Use aligned quadword loads from SRC, shifted to realign
-	the data, allowing for aligned DST stores.  */
-	.align  4
-L(copy_GE_32_unaligned):
-	andi.   11,3,15	      /* Check alignment of DST.  */
-	clrlwi  0,0,28	      /* Number of bytes until the 1st
-			      quadword of DST.  */
-	srwi    9,5,4	      /* Number of full quadwords remaining.  */
-
-	beq    L(copy_GE_32_unaligned_cont)
-
-	/* DST is not quadword aligned, get it aligned.  */
-
-	mtcrf   0x01,0
-	subf    31,0,5
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:	/* Copy 1 byte.  */
-	bf	31,2f
-
-	lbz	6,0(12)
-	addi    12,12,1
-	stb	6,0(3)
-	addi    3,3,1
-2:	/* Copy 2 bytes.  */
-	bf	    30,4f
-
-	lhz     6,0(12)
-	addi    12,12,2
-	sth     6,0(3)
-	addi    3,3,2
-4:	/* Copy 4 bytes.  */
-	bf	29,8f
-
-	lwz     6,0(12)
-	addi    12,12,4
-	stw     6,0(3)
-	addi    3,3,4
-8:	/* Copy 8 bytes.  */
-	bf	28,0f
-
-	lfd	6,0(12)
-	addi    12,12,8
-	stfd    6,0(3)
-	addi    3,3,8
-0:
-	clrlwi  10,12,28      /* Check alignment of SRC.  */
-	srwi    9,31,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrlwi  11,31,28
-	li      6,16	      /* Index for 16-bytes offsets.  */
-	li	7,32	      /* Index for 32-bytes offsets.  */
-	cmplwi  cr1,11,0
-	srwi    8,31,5	      /* Setup the loop counter.  */
-	mr      10,3
-	mr      11,12
-	mtcrf   0x01,9
-	cmplwi  cr6,9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr    5,0,12
-#else
-	lvsl    5,0,12
-#endif
-	lvx     3,0,12
-	bf      31,L(setup_unaligned_loop)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop .  */
-	lvx     4,12,6
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	addi    11,12,16
-	addi    10,3,16
-	stvx    6,0,3
-	vor	3,4,4
-
-L(setup_unaligned_loop):
-	mtctr   8
-	ble     cr6,L(end_unaligned_loop)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align  4
-L(unaligned_loop):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	4,11,6	      /* vr4 = r11+16.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	lvx	3,11,7	      /* vr3 = r11+32.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   10,3,4,5
-#else
-	vperm   10,4,3,5
-#endif
-	addi    11,11,32
-	stvx    6,0,10
-	stvx    10,10,6
-	addi    10,10,32
-
-	bdnz    L(unaligned_loop)
-
-	.align  4
-L(end_unaligned_loop):
-
-	/* Check for tail bytes.  */
-	clrrwi  0,31,4
-	mtcrf   0x01,31
-	beq	cr1,0f
-
-	add	3,3,0
-	add	12,12,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz	6,0(12)
-	lwz	7,4(12)
-	addi    12,12,8
-	stw	6,0(3)
-	stw	7,4(3)
-	addi    3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi    12,12,4
-	stw	6,0(3)
-	addi    3,3,4
-2:	/* Copy 2~3 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	addi    12,12,2
-	sth	6,0(3)
-	addi    3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return original DST pointer.  */
-	mr	3,30
-	lwz     30,20(1)
-	lwz	31,24(1)
-	addi    1,1,32
-	blr
-
-END (memcpy)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc32/power7/mempcpy.S b/sysdeps/powerpc/powerpc32/power7/mempcpy.S
deleted file mode 100644
index 1682fbcd2a..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/mempcpy.S
+++ /dev/null
@@ -1,482 +0,0 @@
-/* Optimized mempcpy implementation for POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] __mempcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-	Returns 'dst' + 'len'.  */
-
-	.machine  power7
-EALIGN (__mempcpy, 5, 0)
-	CALL_MCOUNT
-
-	stwu	1,-32(1)
-	cfi_adjust_cfa_offset(32)
-	stw	30,20(1)
-	cfi_offset(30,(20-32))
-	stw	31,24(1)
-	mr	30,3
-	cmplwi	cr1,5,31
-	neg	0,3
-	cfi_offset(31,-8)
-	ble	cr1,L(copy_LT_32)  /* If move < 32 bytes use short move
-					code.  */
-
-	andi.	11,3,7	      /* Check alignment of DST.  */
-	clrlwi	10,4,29	      /* Check alignment of SRC.  */
-	cmplw	cr6,10,11     /* SRC and DST alignments match?  */
-	mr	12,4
-	mr	31,5
-	bne	cr6,L(copy_GE_32_unaligned)
-
-	srwi	9,5,3	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_aligned_cont)
-
-	clrlwi	0,0,29
-	mtcrf	0x01,0
-	subf	31,0,5
-
-	/* Get the SRC aligned to 8 bytes.  */
-
-1:	bf	31,2f
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-2:	bf	30,4f
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-4:	bf	29,0f
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-0:
-	clrlwi	10,12,29      /* Check alignment of SRC again.  */
-	srwi	9,31,3	      /* Number of full doublewords remaining.  */
-
-L(copy_GE_32_aligned_cont):
-
-	clrlwi	11,31,29
-	mtcrf	0x01,9
-
-	srwi	8,31,5
-	cmplwi	cr1,9,4
-	cmplwi	cr6,11,0
-	mr	11,12
-
-	/* Copy 1~3 doublewords so the main loop starts
-	at a multiple of 32 bytes.  */
-
-	bf	30,1f
-	lfd	6,0(12)
-	lfd	7,8(12)
-	addi	11,12,16
-	mtctr	8
-	stfd	6,0(3)
-	stfd	7,8(3)
-	addi	10,3,16
-	bf	31,4f
-	lfd	0,16(12)
-	stfd	0,16(3)
-	blt	cr1,3f
-	addi	11,12,24
-	addi	10,3,24
-	b	4f
-
-	.align	4
-1:	/* Copy 1 doubleword and set the counter.  */
-	mr	10,3
-	mtctr	8
-	bf	31,4f
-	lfd	6,0(12)
-	addi	11,12,8
-	stfd	6,0(3)
-	addi	10,3,8
-
-	.align	4
-4:	/* Main aligned copy loop. Copies 32-bytes at a time.  */
-	lfd	6,0(11)
-	lfd	7,8(11)
-	lfd	8,16(11)
-	lfd	0,24(11)
-	addi	11,11,32
-
-	stfd	6,0(10)
-	stfd	7,8(10)
-	stfd	8,16(10)
-	stfd	0,24(10)
-	addi	10,10,32
-	bdnz	4b
-3:
-
-	/* Check for tail bytes.  */
-
-	clrrwi	0,31,3
-	mtcrf	0x01,31
-	beq	cr6,0f
-
-.L9:
-	add	3,3,0
-	add	12,12,0
-
-	/*  At this point we have a tail of 0-7 bytes and we know that the
-	destination is doubleword-aligned.  */
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	lwz	31,24(1)
-	addi	1,1,32
-	blr
-
-	/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32):
-	cmplwi	cr6,5,8
-	mr	12,4
-	mtcrf	0x01,5
-	ble	cr6,L(copy_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	8,4
-	clrrwi	11,4,2
-	andi.	0,8,3
-	cmplwi	cr1,5,16
-	mr	10,5
-	beq	L(copy_LT_32_aligned)
-
-	/* Force 4-bytes alignment for SRC.  */
-	mtocrf  0x01,0
-	subf	10,0,5
-2:	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	bf	31,L(end_4bytes_alignment)
-
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-
-	.align	4
-L(end_4bytes_alignment):
-	cmplwi	cr1,10,16
-	mtcrf	0x01,10
-
-L(copy_LT_32_aligned):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	6,0(12)
-	lwz	7,4(12)
-	stw	6,0(3)
-	lwz	8,8(12)
-	stw	7,4(3)
-	lwz	6,12(12)
-	addi	12,12,16
-	stw	8,8(3)
-	stw	6,12(3)
-	addi	3,3,16
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz	6,0(12)
-	lwz	7,4(12)
-	addi	12,12,8
-	stw	6,0(3)
-	stw	7,4(3)
-	addi	3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2-3 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	sth	6,0(3)
-	bf	31,0f
-	lbz	7,2(12)
-	stb	7,2(3)
-
-	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	addi	1,1,32
-	blr
-
-	.align	4
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	addi	1,1,32
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8):
-	bne	cr6,4f
-
-	/* Though we could've used lfd/stfd here, they are still
-	slow for unaligned cases.  */
-
-	lwz	6,0(4)
-	lwz	7,4(4)
-	stw	6,0(3)
-	stw	7,4(3)
-
-	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	addi	1,1,32
-	blr
-
-	.align	4
-4:	/* Copies 4~7 bytes.  */
-	bf	29,2b
-
-	lwz	6,0(4)
-	stw	6,0(3)
-	bf	30,5f
-	lhz	7,4(4)
-	sth	7,4(3)
-	bf	31,0f
-	lbz	8,6(4)
-	stb	8,6(3)
-
-	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	addi	1,1,32
-	blr
-
-	.align	4
-5:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,4(4)
-	stb	6,4(3)
-
-0:	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	addi	1,1,32
-	blr
-
-	/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-	SRC is not. Use aligned quadword loads from SRC, shifted to realign
-	the data, allowing for aligned DST stores.  */
-	.align	4
-L(copy_GE_32_unaligned):
-	andi.	11,3,15	      /* Check alignment of DST.  */
-	clrlwi	0,0,28	      /* Number of bytes until the 1st
-				 quadword of DST.  */
-	srwi	9,5,4	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_unaligned_cont)
-
-	/* DST is not quadword aligned, get it aligned.  */
-
-	mtcrf	0x01,0
-	subf	31,0,5
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:	/* Copy 1 byte.  */
-	bf	31,2f
-
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-2:	/* Copy 2 bytes.  */
-	bf		30,4f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-4:	/* Copy 4 bytes.  */
-	bf	29,8f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-8:	/* Copy 8 bytes.  */
-	bf	28,0f
-
-	lfd	6,0(12)
-	addi	12,12,8
-	stfd	6,0(3)
-	addi	3,3,8
-0:
-	clrlwi	10,12,28      /* Check alignment of SRC.  */
-	srwi	9,31,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrlwi	11,31,28
-	li	6,16	      /* Index for 16-bytes offsets.  */
-	li	7,32	      /* Index for 32-bytes offsets.  */
-	cmplwi	cr1,11,0
-	srwi	8,31,5	      /* Setup the loop counter.  */
-	mr	10,3
-	mr	11,12
-	mtcrf	0x01,9
-	cmplwi	cr6,9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr    5,0,12
-#else
-	lvsl    5,0,12
-#endif
-	lvx	3,0,12
-	bf	31,L(setup_unaligned_loop)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop .  */
-	lvx	4,12,6
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	addi	11,12,16
-	addi	10,3,16
-	stvx	6,0,3
-	vor	3,4,4
-
-L(setup_unaligned_loop):
-	mtctr	8
-	ble	cr6,L(end_unaligned_loop)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align	4
-L(unaligned_loop):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	4,11,6	      /* vr4 = r11+16.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	lvx	3,11,7	      /* vr3 = r11+32.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   10,3,4,5
-#else
-	vperm   10,4,3,5
-#endif
-	addi	11,11,32
-	stvx	6,0,10
-	stvx	10,10,6
-	addi	10,10,32
-
-	bdnz	L(unaligned_loop)
-
-	.align	4
-L(end_unaligned_loop):
-
-	/* Check for tail bytes.  */
-	clrrwi	0,31,4
-	mtcrf	0x01,31
-	beq	cr1,0f
-
-	add	3,3,0
-	add	12,12,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz	6,0(12)
-	lwz	7,4(12)
-	addi	12,12,8
-	stw	6,0(3)
-	stw	7,4(3)
-	addi	3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2~3 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	add	3,30,5
-	lwz	30,20(1)
-	lwz	31,24(1)
-	addi	1,1,32
-	blr
-
-END (__mempcpy)
-libc_hidden_def (__mempcpy)
-weak_alias (__mempcpy, mempcpy)
-libc_hidden_builtin_def (mempcpy)
diff --git a/sysdeps/powerpc/powerpc32/power7/memrchr.S b/sysdeps/powerpc/powerpc32/power7/memrchr.S
deleted file mode 100644
index eb0c1bb8eb..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/memrchr.S
+++ /dev/null
@@ -1,196 +0,0 @@
-/* Optimized memrchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memrchr (char *s [r3], int byte [r4], int size [r5])  */
-	.machine  power7
-ENTRY (__memrchr)
-	CALL_MCOUNT
-	add	r7,r3,r5      /* Calculate the last acceptable address.  */
-	neg	r0,r7
-	addi	r7,r7,-1
-	mr	r10,r3
-	clrrwi	r6,r7,7
-	li	r9,3<<5
-	dcbt	r9,r6,16      /* Stream hint, decreasing addresses.  */
-
-	/* Replicate BYTE to word.  */
-	insrwi	r4,r4,8,16
-	insrwi	r4,r4,16,0
-	li	r6,-4
-	li	r9,-1
-	rlwinm	r0,r0,3,27,28 /* Calculate padding.  */
-	clrrwi	r8,r7,2
-	srw	r9,r9,r0
-	cmplwi	r5,16
-	clrrwi	r0,r10,2
-	ble	L(small_range)
-
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,0,r8
-#else
-	lwbrx	r12,0,r8      /* Load reversed word from memory.  */
-#endif
-	cmpb	r3,r12,r4     /* Check for BYTE in WORD1.  */
-	and	r3,r3,r9
-	cmplwi	cr7,r3,0      /* If r3 == 0, no BYTEs have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-	bf	29,L(loop_setup)
-
-	/* Handle WORD2 of pair.  */
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,r8,r6
-#else
-	lwbrx	r12,r8,r6
-#endif
-	addi	r8,r8,-4
-	cmpb	r3,r12,r4
-	cmplwi	cr7,r3,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last word we want to read in the loop below is the one
-	   containing the first byte of the string, ie. the word at
-	   s & ~3, or r0.  The first word read is at r8 - 4, we
-	   read 2 * cnt words, so the last word read will be at
-	   r8 - 4 - 8 * cnt + 4.  Solving for cnt gives
-	   cnt = (r8 - r0) / 8  */
-	sub	r5,r8,r0
-	addi	r8,r8,-4
-	srwi	r9,r5,3       /* Number of loop iterations.  */
-	mtctr	r9	      /* Setup the counter.  */
-
-	/* Main loop to look for BYTE backwards in the string.
-	   FIXME: Investigate whether 32 byte align helps with this
-	   9 instruction loop.  */
-	.align	5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,0,r8
-	lwzx	r11,r8,r6
-#else
-	lwbrx	r12,0,r8
-	lwbrx	r11,r8,r6
-#endif
-	cmpb	r3,r12,r4
-	cmpb	r9,r11,r4
-	or	r5,r9,r3      /* Merge everything in one word.  */
-	cmplwi	cr7,r5,0
-	bne	cr7,L(found)
-	addi	r8,r8,-8
-	bdnz	L(loop)
-
-	/* We may have one more word to read.  */
-	cmplw	r8,r0
-	bnelr
-
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,0,r8
-#else
-	lwbrx	r12,0,r8
-#endif
-	cmpb	r3,r12,r4
-	cmplwi	cr7,r3,0
-	bne	cr7,L(done)
-	blr
-
-	.align	4
-L(found):
-	/* OK, one (or both) of the words contains BYTE.  Check
-	   the first word.  */
-	cmplwi	cr6,r3,0
-	bne	cr6,L(done)
-
-	/* BYTE must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r3 so we can calculate the
-	   pointer.  */
-
-	mr	r3,r9
-	addi	r8,r8,-4
-
-	/* r3 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as BYTE in the original
-	   word from the string.  Use that to calculate the pointer.
-	   We need to make sure BYTE is *before* the end of the
-	   range.  */
-L(done):
-	cntlzw	r9,r3	      /* Count leading zeros before the match.  */
-	cmplw	r8,r0         /* Are we on the last word?  */
-	srwi	r6,r9,3	      /* Convert leading zeros to bytes.  */
-	addi	r0,r6,-3
-	sub	r3,r8,r0
-	cmplw	cr7,r3,r10
-	bnelr
-	bgelr	cr7
-	li	r3,0
-	blr
-
-	.align	4
-L(null):
-	li	r3,0
-	blr
-
-/* Deals with size <= 16.  */
-	.align	4
-L(small_range):
-	cmplwi	r5,0
-	beq	L(null)
-
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,0,r8
-#else
-	lwbrx	r12,0,r8      /* Load reversed word from memory.  */
-#endif
-	cmpb	r3,r12,r4     /* Check for BYTE in WORD1.  */
-	and	r3,r3,r9
-	cmplwi	cr7,r3,0
-	bne	cr7,L(done)
-
-	/* Are we done already?  */
-	cmplw	r8,r0
-	addi	r8,r8,-4
-	beqlr
-
-	.align	5
-L(loop_small):
-#ifdef __LITTLE_ENDIAN__
-	lwzx	r12,0,r8
-#else
-	lwbrx	r12,0,r8
-#endif
-	cmpb	r3,r12,r4
-	cmplw	r8,r0
-	cmplwi	cr7,r3,0
-	bne	cr7,L(done)
-	addi	r8,r8,-4
-	bne	L(loop_small)
-	blr
-
-END (__memrchr)
-weak_alias (__memrchr, memrchr)
-libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/powerpc/powerpc32/power7/memset.S b/sysdeps/powerpc/powerpc32/power7/memset.S
deleted file mode 100644
index b431f5086d..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/memset.S
+++ /dev/null
@@ -1,431 +0,0 @@
-/* Optimized memset implementation for PowerPC32/POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.  */
-
-	.machine  power7
-EALIGN (memset, 5, 0)
-	CALL_MCOUNT
-
-	.align	4
-L(_memset):
-	cmplwi	cr7,5,31
-	cmplwi	cr6,5,8
-	mr	10,3		/* Save original argument for later.  */
-	mr	7,1		/* Save original r1 for later.  */
-	cfi_offset(31,-8)
-
-	/* Replicate byte to word.  */
-	insrwi	4,4,8,16
-	insrwi	4,4,16,0
-
-	ble	cr6,L(small)	/* If length <= 8, use short copy code.  */
-
-	neg	0,3
-	ble	cr7,L(medium)	/* If length < 32, use medium copy code.  */
-
-	/* Save our word twice to create a doubleword that we will later
-	   copy to a FPR.  */
-	stwu	1,-32(1)
-	andi.	11,10,7		/* Check alignment of DST.  */
-	mr	12,5
-	stw	4,24(1)
-	stw	4,28(1)
-	beq	L(big_aligned)
-
-	clrlwi	0,0,29
-	mtocrf	0x01,0
-	subf	5,0,5
-
-	/* Get DST aligned to 8 bytes.  */
-1:	bf	31,2f
-
-	stb	4,0(10)
-	addi	10,10,1
-2:	bf	30,4f
-
-	sth	4,0(10)
-	addi	10,10,2
-4:	bf	29,L(big_aligned)
-
-	stw	4,0(10)
-	addi	10,10,4
-
-	.align	4
-L(big_aligned):
-	cmplwi	cr5,5,255
-	li	0,32
-	cmplwi	cr1,5,160
-	dcbtst	0,10
-	cmplwi	cr6,4,0
-	srwi	9,5,3		/* Number of full doublewords remaining.  */
-	crand	27,26,21
-	mtocrf	0x01,9
-	bt	27,L(huge)
-
-	/* From this point on, we'll copy 32+ bytes and the value
-	   isn't 0 (so we can't use dcbz).  */
-
-	srwi	8,5,5
-	clrlwi	11,5,29
-	cmplwi	cr6,11,0
-	cmplwi	cr1,9,4
-	mtctr	8
-
-	/* Copy 1~3 doublewords so the main loop starts
-	at a multiple of 32 bytes.  */
-
-	bf	30,1f
-
-	stw	4,0(10)
-	stw	4,4(10)
-	stw	4,8(10)
-	stw	4,12(10)
-	addi	10,10,16
-	bf	31,L(big_loop)
-
-	stw	4,0(10)
-	stw	4,4(10)
-	addi	10,10,8
-	mr	12,10
-	blt	cr1,L(tail_bytes)
-
-	b	L(big_loop)
-
-	.align	4
-1:	/* Copy 1 doubleword.  */
-	bf	31,L(big_loop)
-
-	stw	4,0(10)
-	stw	4,4(10)
-	addi	10,10,8
-
-	/* First use a 32-bytes loop with stw's to try and avoid the LHS due
-	   to the lfd we will do next.  Also, ping-pong through r10 and r12
-	   to avoid AGEN delays.  */
-	.align	4
-L(big_loop):
-	addi	12,10,32
-	stw	4,0(10)
-	stw	4,4(10)
-	stw	4,8(10)
-	stw	4,12(10)
-	stw	4,16(10)
-	stw	4,20(10)
-	stw	4,24(10)
-	stw	4,28(10)
-	bdz	L(tail_bytes)
-
-	addi	10,10,64
-	stw	4,0(12)
-	stw	4,4(12)
-	stw	4,8(12)
-	stw	4,12(12)
-	stw	4,16(12)
-	stw	4,20(12)
-	stw	4,24(12)
-	stw	4,28(12)
-	bdnz	L(big_loop_fast_setup)
-
-	mr	12,10
-	b	L(tail_bytes)
-
-	/* Now that we're probably past the LHS window, use the VSX to
-	   speed up the loop.  */
-L(big_loop_fast_setup):
-	li	11,24
-	li	6,16
-	lxvdsx	4,1,11
-
-	.align	4
-L(big_loop_fast):
-	addi	12,10,32
-	stxvd2x	4,0,10
-	stxvd2x	4,10,6
-	bdz	L(tail_bytes)
-
-	addi	10,10,64
-	stxvd2x	4,0,12
-	stxvd2x	4,12,6
-	bdnz	L(big_loop_fast)
-
-	mr	12,10
-
-	.align	4
-L(tail_bytes):
-
-	/* Check for tail bytes.  */
-	mr	1,7		/* Restore r1.  */
-	beqlr	cr6
-
-	clrlwi	0,5,29
-	mtocrf	0x01,0
-
-	/*  At this point we have a tail of 0-7 bytes and we know that the
-	destination is doubleword-aligned.  */
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	stw	4,0(12)
-	addi	12,12,4
-2:	/* Copy 2 bytes.  */
-	bf	30,1f
-
-	sth	4,0(12)
-	addi	12,12,2
-1:	/* Copy 1 byte.  */
-	bflr	31
-
-	stb	4,0(12)
-	blr
-
-
-	/* Special case when value is 0 and we have a long length to deal
-	   with.  Use dcbz to zero out 128-bytes at a time.  Before using
-	   dcbz though, we need to get the destination 128-bytes aligned.  */
-	.align	4
-L(huge):
-	lfd	4,24(1)
-	andi.	11,10,127
-	neg	0,10
-	beq	L(huge_aligned)
-
-	clrlwi	0,0,25
-	subf	5,0,5
-	srwi	0,0,3
-	mtocrf  0x01,0
-
-	/* Get DST aligned to 128 bytes.  */
-8:	bf	28,4f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	stfd	4,16(10)
-	stfd	4,24(10)
-	stfd	4,32(10)
-	stfd	4,40(10)
-	stfd	4,48(10)
-	stfd	4,56(10)
-	addi	10,10,64
-	.align	4
-4:	bf	29,2f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	stfd	4,16(10)
-	stfd	4,24(10)
-	addi	10,10,32
-	.align	4
-2:	bf	30,1f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	addi	10,10,16
-	.align	4
-1:	bf	31,L(huge_aligned)
-
-	stfd	4,0(10)
-	addi	10,10,8
-
-L(huge_aligned):
-	srwi	8,5,7
-	clrlwi	11,5,25
-	cmplwi	cr6,11,0
-	mtctr	8
-
-	/* Copies 128-bytes at a time.  */
-	.align	4
-L(huge_loop):
-	dcbz	0,10
-	addi	10,10,128
-	bdnz	L(huge_loop)
-
-	/* We have a tail of 0~127 bytes to handle.  */
-	mr	1,7		/* Restore r1.  */
-	beqlr	cr6
-
-	subf	9,3,10
-	subf	5,9,12
-	srwi	8,5,3
-	cmplwi	cr6,8,0
-	mtocrf	0x01,8
-
-	/* We have a tail o 1~127 bytes. Copy up to 15 doublewords for
-	speed.  We'll handle the resulting tail bytes later.  */
-	beq	cr6,L(tail)
-
-8:	bf	28,4f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	stfd	4,16(10)
-	stfd	4,24(10)
-	stfd	4,32(10)
-	stfd	4,40(10)
-	stfd	4,48(10)
-	stfd	4,56(10)
-	addi	10,10,64
-	.align	4
-4:	bf	29,2f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	stfd	4,16(10)
-	stfd	4,24(10)
-	addi	10,10,32
-	.align	4
-2:	bf	30,1f
-
-	stfd	4,0(10)
-	stfd	4,8(10)
-	addi	10,10,16
-	.align	4
-1:	bf	31,L(tail)
-
-	stfd	4,0(10)
-	addi	10,10,8
-
-	/* Handle the rest of the tail bytes here.  */
-L(tail):
-	mtocrf	0x01,5
-
-	.align	4
-4:	bf	29,2f
-
-	stw	4,0(10)
-	addi	10,10,4
-	.align	4
-2:	bf	30,1f
-
-	sth	4,0(10)
-	addi	10,10,2
-	.align	4
-1:	bflr	31
-
-	stb	4,0(10)
-	blr
-
-
-	/* Expanded tree to copy tail bytes without increments.  */
-	.align	4
-L(copy_tail):
-	bf	29,L(FXX)
-
-	stw	4,0(10)
-	bf	30,L(TFX)
-
-	sth	4,4(10)
-	bflr	31
-
-	stb	4,6(10)
-	blr
-
-	.align	4
-L(FXX):	bf	30,L(FFX)
-
-	sth	4,0(10)
-	bflr	31
-
-	stb	4,2(10)
-	blr
-
-	.align	4
-L(TFX):	bflr	31
-
-	stb	4,4(10)
-	blr
-
-	.align	4
-L(FFX):	bflr	31
-
-	stb	4,0(10)
-	blr
-
-	/* Handle copies of 9~31 bytes.  */
-	.align	4
-L(medium):
-	/* At least 9 bytes to go.  */
-	andi.	11,10,3
-	clrlwi	0,0,30
-	beq	L(medium_aligned)
-
-	/* Force 4-bytes alignment for DST.  */
-	mtocrf	0x01,0
-	subf	5,0,5
-1:	/* Copy 1 byte.  */
-	bf	31,2f
-
-	stb	4,0(10)
-	addi	10,10,1
-2:	/* Copy 2 bytes.  */
-	bf	30,L(medium_aligned)
-
-	sth	4,0(10)
-	addi	10,10,2
-
-	.align	4
-L(medium_aligned):
-	/* At least 6 bytes to go, and DST is word-aligned.  */
-	cmplwi	cr1,5,16
-	mtocrf	0x01,5
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	stw	4,0(10)
-	stw	4,4(10)
-	stw	4,8(10)
-	stw	4,12(10)
-	addi	10,10,16
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	stw	4,0(10)
-	stw	4,4(10)
-	addi	10,10,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	stw	4,0(10)
-	addi	10,10,4
-2:	/* Copy 2-3 bytes.  */
-	bf	30,1f
-
-	sth	4,0(10)
-	addi	10,10,2
-1:	/* Copy 1 byte.  */
-	bflr	31
-
-	stb	4,0(10)
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(small):
-	mtocrf	0x01,5
-	bne	cr6,L(copy_tail)
-
-	stw	4,0(10)
-	stw	4,4(10)
-	blr
-
-END (memset)
-libc_hidden_builtin_def (memset)
diff --git a/sysdeps/powerpc/powerpc32/power7/multiarch/Implies b/sysdeps/powerpc/powerpc32/power7/multiarch/Implies
deleted file mode 100644
index 22c12fd393..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power6/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power7/rawmemchr.S b/sysdeps/powerpc/powerpc32/power7/rawmemchr.S
deleted file mode 100644
index 22edcfb209..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/rawmemchr.S
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Optimized rawmemchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] rawmemchr (void *s [r3], int c [r4])  */
-	.machine  power7
-ENTRY (__rawmemchr)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi	r8,r3,2	      /* Align the address to word boundary.  */
-
-	/* Replicate byte to word.  */
-	insrwi	r4,r4,8,16
-	insrwi	r4,r4,16,0
-
-	/* Now r4 has a word of c bytes.  */
-
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r5,r12,r4     /* Compare each byte against c byte.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r5,r5,r6
-	slw	r5,r5,r6
-#else
-	slw	r5,r5,r6      /* Move left to discard ignored bits.  */
-	srw	r5,r5,r6      /* Bring the bits back as zeros.  */
-#endif
-	cmpwi	cr7,r5,0      /* If r5 == 0, no c bytes have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb	r5,r12,r4
-	cmpwi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-	lwz	r12,4(r8)
-	lwzu	r11,8(r8)
-	cmpb	r5,r12,r4
-	cmpb	r6,r11,r4
-	or	r7,r5,r6
-	cmpwi	cr7,r7,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the words contains a 'c' byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a c byte.  */
-
-	cmpwi	cr6,r5,0
-	addi	r8,r8,-4
-	bne	cr6,L(done)
-
-	/* The 'c' byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-	mr	r5,r6
-	addi	r8,r8,4
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the 'c' byte in the original
-	   word from the string.  Use that fact to find out what is
-	   the position of the byte inside the string.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntw	r0,r0
-#else
-	cntlzw	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srwi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching char.  */
-	blr
-END (__rawmemchr)
-weak_alias (__rawmemchr,rawmemchr)
-libc_hidden_builtin_def (__rawmemchr)
diff --git a/sysdeps/powerpc/powerpc32/power7/strcasecmp.S b/sysdeps/powerpc/powerpc32/power7/strcasecmp.S
deleted file mode 100644
index 964875a13b..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strcasecmp.S
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Optimized strcasecmp implementation for PowerPC32.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <locale-defines.h>
-
-/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] )
-
-   or if defined USE_IN_EXTENDED_LOCALE_MODEL:
-
-   int [r3] strcasecmp_l (const char *s1 [r3], const char *s2 [r4],
-                          __locale_t loc [r5]) */
-
-#ifndef STRCMP
-# define __STRCMP __strcasecmp
-# define STRCMP   strcasecmp
-#endif
-
-ENTRY (__STRCMP)
-
-#define rRTN	r3	/* Return value */
-#define rSTR1	r5	/* 1st string */
-#define rSTR2	r4	/* 2nd string */
-#define rLOCARG	r5	/* 3rd argument: locale_t */
-#define rCHAR1	r6	/* Byte read from 1st string */
-#define rCHAR2	r7	/* Byte read from 2nd string */
-#define rADDR1	r8	/* Address of tolower(rCHAR1) */
-#define rADDR2	r12	/* Address of tolower(rCHAR2) */
-#define rLWR1	r8	/* Byte tolower(rCHAR1) */
-#define rLWR2	r12	/* Byte tolower(rCHAR2) */
-#define rTMP	r0
-#define rGOT	r9	/* Address of the Global Offset Table */
-#define rLOC	r11	/* Default locale address */
-
-	cmpw    cr7, r3, r4
-#ifndef USE_IN_EXTENDED_LOCALE_MODEL
-# ifdef SHARED
-	mflr	rTMP
-	bcl	20,31,.L1
-.L1:	mflr	rGOT
-	addis	rGOT, rGOT, _GLOBAL_OFFSET_TABLE_-.L1@ha
-	addi 	rGOT, rGOT, _GLOBAL_OFFSET_TABLE_-.L1@l
-	lwz	rLOC, __libc_tsd_LOCALE@got@tprel(rGOT)
-	add 	rLOC, rLOC, __libc_tsd_LOCALE@tls
-	lwz	rLOC, 0(rLOC)
-	mtlr	rTMP
-# else
-	lis	rTMP,_GLOBAL_OFFSET_TABLE_@ha
-	la	rLOC,_GLOBAL_OFFSET_TABLE_@l(rTMP)
-	lwz	rLOC, __libc_tsd_LOCALE@got@tprel(rGOT)
-	add	rLOC, rLOC, __libc_tsd_LOCALE@tls
-	lwz	rLOC, 0(rLOC)
-# endif /* SHARED */
-#else
-	mr	rLOC, rLOCARG
-#endif
-	mr	rSTR1, rRTN
-	lwz	rLOC, LOCALE_CTYPE_TOLOWER(rLOC)
-	li	rRTN, 0
-	beqlr	cr7
-
-	/* Unrolling loop for POWER: loads are done with 'lbz' plus
-	offset and string descriptors are only updated in the end
-	of loop unrolling. */
-
-L(loop):
-	lbz	rCHAR1, 0(rSTR1)	/* Load char from s1 */
-	lbz	rCHAR2, 0(rSTR2)	/* Load char from s2 */
-	sldi	rADDR1, rCHAR1, 2	/* Calculate address for tolower(*s1) */
-	sldi	rADDR2, rCHAR2, 2	/* Calculate address for tolower(*s2) */
-	lwzx	rLWR1, rLOC, rADDR1	/* Load tolower(*s1) */
-	lwzx	rLWR2, rLOC, rADDR2	/* Load tolower(*s2) */
-	cmpwi	cr7, rCHAR1, 0		/* *s1 == '\0' ? */
-	subf.	r3, rLWR2, rLWR1
-	bnelr
-	beqlr	cr7
-	lbz	rCHAR1, 1(rSTR1)
-	lbz	rCHAR2, 1(rSTR2)
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpwi	cr7, rCHAR1, 0
-	subf.	r3, rLWR2, rLWR1
-	bnelr
-	beqlr	cr7
-	lbz	rCHAR1, 2(rSTR1)
-	lbz	rCHAR2, 2(rSTR2)
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpwi	cr7, rCHAR1, 0
-	subf.	r3, rLWR2, rLWR1
-	bnelr
-	beqlr	cr7
-	lbz	rCHAR1, 3(rSTR1)
-	lbz	rCHAR2, 3(rSTR2)
-	/* Increment both string descriptors */
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpwi	cr7, rCHAR1, 0
-	subf.	r3, rLWR2, rLWR1
-	bnelr
-	bne	cr7,L(loop)
-	blr
-END (__STRCMP)
-
-weak_alias (__STRCMP, STRCMP)
-libc_hidden_builtin_def (__STRCMP)
diff --git a/sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S b/sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S
deleted file mode 100644
index c13c4ebcb8..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strcasecmp_l.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#define USE_IN_EXTENDED_LOCALE_MODEL
-#define STRCMP   strcasecmp_l
-#define __STRCMP __strcasecmp_l
-
-#include "strcasecmp.S"
diff --git a/sysdeps/powerpc/powerpc32/power7/strchr.S b/sysdeps/powerpc/powerpc32/power7/strchr.S
deleted file mode 100644
index 75ca6acb98..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strchr.S
+++ /dev/null
@@ -1,225 +0,0 @@
-/* Optimized strchr implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strchr (char *s [r3], int c [r4])  */
-	.machine  power7
-ENTRY (strchr)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi	r8,r3,2	      /* Align the address to word boundary.  */
-	cmpwi	cr7,r4,0
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	li	r0,0	      /* Word with null chars to use
-				 with cmpb.  */
-
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-
-	beq	cr7,L(null_match)
-
-	/* Replicate byte to word.  */
-	insrwi	r4,r4,8,16
-	insrwi	r4,r4,16,0
-
-	/* Now r4 has a word of c bytes and r0 has
-	   a word of null bytes.  */
-
-	cmpb	r10,r12,r4     /* Compare each byte against c byte.  */
-	cmpb	r11,r12,r0     /* Compare each byte against null byte.  */
-
-	/* Move the words left and right to discard the bits that are
-	   not part of the string and to bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r10,r10,r6
-	srw	r11,r11,r6
-	slw	r10,r10,r6
-	slw	r11,r11,r6
-#else
-	slw	r10,r10,r6
-	slw	r11,r11,r6
-	srw	r10,r10,r6
-	srw	r11,r11,r6
-#endif
-	or	r5,r10,r11    /* OR the results to speed things up.  */
-	cmpwi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	or	r5,r10,r11
-	cmpwi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	.p2align  5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	lwz	r12,4(r8)
-	lwzu	r9,8(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	cmpb	r6,r9,r4
-	cmpb	r7,r9,r0
-	or	r12,r10,r11
-	or	r9,r6,r7
-	or	r5,r12,r9
-	cmpwi	cr7,r5,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the words contains a c/null byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a c/null byte.  */
-
-	cmpwi	cr6,r12,0
-	addi	r8,r8,-4
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r10/r11 so we can calculate
-	   the pointer.  */
-
-	mr	r10,r6
-	mr	r11,r7
-	addi	r8,r8,4
-
-	/* r10/r11 have the output of the cmpb instructions, that is,
-	   0xff in the same position as the c/null byte in the original
-	   word from the string.  Use that to calculate the pointer.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r3,r10,-1
-	andc    r3,r3,r10
-	popcntw	r0,r3
-	addi    r4,r11,-1
-	andc    r4,r4,r11
-	cmplw	cr7,r3,r4
-	bgt	cr7,L(no_match)
-#else
-	cntlzw	r0,r10	      /* Count leading zeros before c matches.  */
-	cmplw	cr7,r11,r10
-	bgt	cr7,L(no_match)
-#endif
-	srwi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching c byte
-				 or null in case c was not found.  */
-	blr
-
-	.align	4
-L(no_match):
-	li	r3,0
-	blr
-
-/* We are here because strchr was called with a null byte.  */
-	.align	4
-L(null_match):
-	/* r0 has a word of null bytes.  */
-
-	cmpb	r5,r12,r0     /* Compare each byte against null bytes.  */
-
-	/* Move the words left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r5,r5,r6
-	slw	r5,r5,r6
-#else
-	slw	r5,r5,r6
-	srw	r5,r5,r6
-#endif
-	cmpwi	cr7,r5,0      /* If r10 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done_null)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop_null)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb    r5,r12,r0
-	cmpwi	cr7,r5,0
-	bne	cr7,L(done_null)
-	b	L(loop_null)  /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop_null):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	lwz	r12,4(r8)
-	lwzu    r11,8(r8)
-	cmpb	r5,r12,r0
-	cmpb	r10,r11,r0
-	or	r6,r5,r10
-	cmpwi	cr7,r6,0
-	beq	cr7,L(loop_null)
-
-	/* OK, one (or both) of the words contains a null byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a null byte.  */
-
-	cmpwi	cr6,r5,0
-	addi	r8,r8,-4
-	bne	cr6,L(done_null)
-
-	/* The null byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-
-	mr	r5,r10
-	addi	r8,r8,4
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   word from the string.  Use that to calculate the pointer.  */
-L(done_null):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntw	r0,r0
-#else
-	cntlzw	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srwi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching null byte.  */
-	blr
-END (strchr)
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/powerpc/powerpc32/power7/strchrnul.S b/sysdeps/powerpc/powerpc32/power7/strchrnul.S
deleted file mode 100644
index 426137e11d..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strchrnul.S
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Optimized strchrnul implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strchrnul (char *s [r3], int c [r4])  */
-	.machine  power7
-ENTRY (__strchrnul)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi	r8,r3,2	      /* Align the address to word boundary.  */
-
-	/* Replicate byte to word.  */
-	insrwi  r4,r4,8,16
-	insrwi  r4,r4,16,0
-
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	li	r0,0	      /* Word with null chars to use
-				 with cmpb.  */
-
-	/* Now r4 has a word of c bytes and r0 has
-	   a word of null bytes.  */
-
-	cmpb	r10,r12,r0    /* Compare each byte against c byte.  */
-	cmpb	r9,r12,r4     /* Compare each byte against null byte.  */
-
-	/* Move the words left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r10,r10,r6
-	srw	r9,r9,r6
-	slw	r10,r10,r6
-	slw	r9,r9,r6
-#else
-	slw	r10,r10,r6
-	slw	r9,r9,r6
-	srw	r10,r10,r6
-	srw	r9,r9,r6
-#endif
-	or	r5,r9,r10     /* OR the results to speed things up.  */
-	cmpwi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r12,r4
-	or	r5,r9,r10
-	cmpwi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	.p2align  5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	lwz	r12,4(r8)
-	lwzu	r11,8(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r12,r4
-	cmpb	r6,r11,r0
-	cmpb	r7,r11,r4
-	or	r5,r9,r10
-	or	r10,r6,r7
-	or	r11,r5,r10
-	cmpwi	cr7,r11,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the words contains a c/null byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a c/null byte.  */
-
-	cmpwi	cr6,r5,0
-	addi	r8,r8,-4
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r5 so we can calculate the
-	   pointer.  */
-	mr	r5,r10
-	addi	r8,r8,4
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the c/null byte in the original
-	   word from the string.  Use that to calculate the pointer.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntw	r0,r0
-#else
-	cntlzw	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srwi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of matching c/null byte.  */
-	blr
-END (__strchrnul)
-weak_alias (__strchrnul,strchrnul)
-libc_hidden_builtin_def (__strchrnul)
diff --git a/sysdeps/powerpc/powerpc32/power7/strlen.S b/sysdeps/powerpc/powerpc32/power7/strlen.S
deleted file mode 100644
index 3699791fa6..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strlen.S
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Optimized strlen implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strlen (char *s [r3])  */
-	.machine  power7
-ENTRY (strlen)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi	r4,r3,2	      /* Align the address to word boundary.  */
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	li	r0,0	      /* Word with null chars to use with cmpb.  */
-	li	r5,-1	      /* MASK = 0xffffffffffffffff.  */
-	lwz	r12,0(r4)     /* Load word from memory.  */
-#ifdef __LITTLE_ENDIAN__
-	slw	r5,r5,r6
-#else
-	srw	r5,r5,r6      /* MASK = MASK >> padding.  */
-#endif
-	orc	r9,r12,r5     /* Mask bits that are not part of the string.  */
-	cmpb	r10,r9,r0     /* Check for null bytes in WORD1.  */
-	cmpwi	cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r4
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r4)
-	cmpb	r10,r12,r0
-	cmpwi	cr7,r10,0
-	bne	cr7,L(done)
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-
-	lwz	r12, 4(r4)
-	lwzu	r11, 8(r4)
-	cmpb	r10,r12,r0
-	cmpb	r9,r11,r0
-	or	r8,r9,r10     /* Merge everything in one word.  */
-	cmpwi	cr7,r8,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the words contains a null byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a null byte.  */
-
-	cmpwi	cr6,r10,0
-	addi	r4,r4,-4
-	bne	cr6,L(done)
-
-	/* The null byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   length.  */
-
-	mr	r10,r9
-	addi	r4,r4,4
-
-	/* r10 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   word from the string.  Use that to calculate the length.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi	r9, r10, -1   /* Form a mask from trailing zeros.  */
-	andc	r9, r9, r10
-	popcntw r0, r9	      /* Count the bits in the mask.  */
-#else
-	cntlzw	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	subf	r5,r3,r4
-	srwi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r5,r0      /* Compute final length.  */
-	blr
-END (strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc32/power7/strncmp.S b/sysdeps/powerpc/powerpc32/power7/strncmp.S
deleted file mode 100644
index d4598e1930..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strncmp.S
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Optimized strcmp implementation for POWER7/PowerPC32.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3],
-		     const char *s2 [r4],
-		     size_t size [r5])  */
-
-EALIGN (strncmp,5,0)
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3	r10
-#define rWORD4	r11
-#define rFEFE	r8	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	nop
-	or	rTMP,rSTR2,rSTR1
-	lis	r7F7F,0x7f7f
-	dcbt	0,rSTR2
-	nop
-	clrlwi.	rTMP,rTMP,30
-	cmplwi	cr1,rN,0
-	lis	rFEFE,-0x101
-	bne	L(unaligned)
-/* We are word aligned so set up for two loops.  first a word
-   loop, then fall into the byte loop if any residual.  */
-	srwi.	rTMP,rN,2
-	clrlwi	rN,rN,30
-	addi	rFEFE,rFEFE,-0x101
-	addi	r7F7F,r7F7F,0x7f7f
-	cmplwi	cr1,rN,0
-	beq	L(unaligned)
-
-	mtctr	rTMP
-	lwz	rWORD1,0(rSTR1)
-	lwz	rWORD2,0(rSTR2)
-	b	L(g1)
-
-L(g0):
-	lwzu	rWORD1,4(rSTR1)
-	bne	cr1,L(different)
-	lwzu	rWORD2,4(rSTR2)
-L(g1):	add	rTMP,rFEFE,rWORD1
-	nor	rNEG,r7F7F,rWORD1
-	bdz	L(tail)
-	and.	rTMP,rTMP,rNEG
-	cmpw	cr1,rWORD1,rWORD2
-	beq	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	slwi	rTMP, rTMP, 1
-	addi    rTMP2, rTMP, -1
-	andc    rTMP2, rTMP2, rTMP
-	and	rWORD2, rWORD2, rTMP2		/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rldimi	rTMP2, rWORD2, 24, 32
-	rldimi	rTMP, rWORD1, 24, 32
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr
-	ori	rRTN, rTMP2, 1
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rldimi	rTMP2, rWORD2, 24, 32
-	rldimi	rTMP, rWORD1, 24, 32
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr
-	ori	rRTN, rTMP2, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP,r7F7F,rWORD1
-	beq	cr1,L(equal)
-	add	rTMP,rTMP,r7F7F
-	xor.	rBITDIF,rWORD1,rWORD2
-	andc	rNEG,rNEG,rTMP
-	blt	L(highbit)
-	cntlzw	rBITDIF,rBITDIF
-	cntlzw	rNEG,rNEG
-	addi	rNEG,rNEG,7
-	cmpw	cr1,rNEG,rBITDIF
-	sub	rRTN,rWORD1,rWORD2
-	bgelr	cr1
-L(equal):
-	li	rRTN,0
-	blr
-
-L(different):
-	lwz	rWORD1,-4(rSTR1)
-	xor.	rBITDIF,rWORD1,rWORD2
-	sub	rRTN,rWORD1,rWORD2
-	bgelr
-L(highbit):
-	ori	rRTN, rWORD2, 1
-	blr
-#endif
-
-/* Oh well. In this case, we just do a byte-by-byte comparison.  */
-	.align	4
-L(tail):
-	and.	rTMP,rTMP,rNEG
-	cmpw	cr1,rWORD1,rWORD2
-	bne	L(endstring)
-	addi	rSTR1,rSTR1,4
-	bne	cr1,L(different)
-	addi	rSTR2,rSTR2,4
-	cmplwi	cr1,rN,0
-L(unaligned):
-	mtctr	rN
-	ble	cr1,L(ux)
-L(uz):
-	lbz	rWORD1,0(rSTR1)
-	lbz	rWORD2,0(rSTR2)
-	.align	4
-L(u1):
-	cmpwi	cr1,rWORD1,0
-	bdz	L(u4)
-	cmpw	rWORD1,rWORD2
-	beq	cr1,L(u4)
-	bne	L(u4)
-	lbzu	rWORD3,1(rSTR1)
-	lbzu	rWORD4,1(rSTR2)
-	cmpwi	cr1,rWORD3,0
-	bdz	L(u3)
-	cmpw	rWORD3,rWORD4
-	beq	cr1,L(u3)
-	bne	L(u3)
-	lbzu	rWORD1,1(rSTR1)
-	lbzu	rWORD2,1(rSTR2)
-	cmpwi	cr1,rWORD1,0
-	bdz	L(u4)
-	cmpw	rWORD1,rWORD2
-	beq	cr1,L(u4)
-	bne	L(u4)
-	lbzu	rWORD3,1(rSTR1)
-	lbzu	rWORD4,1(rSTR2)
-	cmpwi	cr1,rWORD3,0
-	bdz	L(u3)
-	cmpw	rWORD3,rWORD4
-	beq	cr1,L(u3)
-	bne	L(u3)
-	lbzu	rWORD1,1(rSTR1)
-	lbzu	rWORD2,1(rSTR2)
-	b	L(u1)
-
-L(u3):  sub	rRTN,rWORD3,rWORD4
-	blr
-L(u4):	sub	rRTN,rWORD1,rWORD2
-	blr
-L(ux):
-	li	rRTN,0
-	blr
-END (strncmp)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc32/power7/strnlen.S b/sysdeps/powerpc/powerpc32/power7/strnlen.S
deleted file mode 100644
index 6019d5be5b..0000000000
--- a/sysdeps/powerpc/powerpc32/power7/strnlen.S
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Optimized strnlen implementation for PowerPC32/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strnlen (char *s [r3], int size [r4])  */
-	.machine  power7
-ENTRY (__strnlen)
-	CALL_MCOUNT
-	dcbt	0,r3
-	clrrwi	r8,r3,2	      /* Align the address to word boundary.  */
-	add	r7,r3,r4      /* Calculate the last acceptable address.  */
-	cmplwi	r4,16
-	li	r0,0	      /* Word with null chars.  */
-	addi	r7,r7,-1
-	ble	L(small_range)
-
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r10,r12,r0    /* Check for null bytes in DWORD1.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r10,r10,r6
-	slw	r10,r10,r6
-#else
-	slw	r10,r10,r6
-	srw	r10,r10,r6
-#endif
-	cmplwi	cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-	bne	cr7,L(done)
-
-	clrrwi	r7,r7,2       /* Address of last word.  */
-	mtcrf   0x01,r8
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	29,L(loop_setup)
-
-	/* Handle WORD2 of pair.  */
-	lwzu	r12,4(r8)
-	cmpb	r10,r12,r0
-	cmplwi	cr7,r10,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last word we want to read in the loop below is the one
-	   containing the last byte of the string, ie. the word at
-	   (s + size - 1) & ~3, or r7.  The first word read is at
-	   r8 + 4, we read 2 * cnt words, so the last word read will
-	   be at r8 + 4 + 8 * cnt - 4.  Solving for cnt gives
-	   cnt = (r7 - r8) / 8  */
-	sub	r5,r7,r8
-	srwi	r6,r5,3	      /* Number of loop iterations.  */
-	mtctr	r6	      /* Setup the counter.  */
-
-	/* Main loop to look for the null byte in the string.  Since
-	   it's a small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two words, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-
-	lwz	r12,4(r8)
-	lwzu	r11,8(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r11,r0
-	or	r5,r9,r10     /* Merge everything in one word.  */
-	cmplwi	cr7,r5,0
-	bne	cr7,L(found)
-	bdnz	L(loop)
-
-	/* We may have one more word to read.  */
-	cmplw	cr6,r8,r7
-	beq	cr6,L(end_max)
-
-	lwzu	r12,4(r8)
-	cmpb	r10,r12,r0
-	cmplwi	cr6,r10,0
-	bne	cr6,L(done)
-
-L(end_max):
-	mr	r3,r4
-	blr
-
-	/* OK, one (or both) of the words contains a null byte.  Check
-	   the first word and decrement the address in case the first
-	   word really contains a null byte.  */
-	.align	4
-L(found):
-	cmplwi	cr6,r10,0
-	addi	r8,r8,-4
-	bne	cr6,L(done)
-
-	/* The null byte must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   length.  */
-
-	mr	r10,r9
-	addi	r8,r8,4
-
-	/* r10 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   word from the string.  Use that to calculate the length.
-	   We need to make sure the null char is *before* the end of the
-	   range.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi	r0,r10,-1
-	andc	r0,r0,r10
-	popcntw	r0,r0
-#else
-	cntlzw	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	sub	r3,r8,r3
-	srwi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r3,r0      /* Length until the match.  */
-	cmplw	r3,r4
-	blelr
-	mr	r3,r4
-	blr
-
-/* Deals with size <= 16.  */
-	.align	4
-L(small_range):
-	cmplwi	r4,0
-	beq	L(end_max)
-
-	clrrwi	r7,r7,2       /* Address of last word.  */
-
-	rlwinm	r6,r3,3,27,28 /* Calculate padding.  */
-	lwz	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r10,r12,r0    /* Check for null bytes in WORD1.  */
-#ifdef __LITTLE_ENDIAN__
-	srw	r10,r10,r6
-	slw	r10,r10,r6
-#else
-	slw	r10,r10,r6
-	srw	r10,r10,r6
-#endif
-	cmplwi	cr7,r10,0
-	bne	cr7,L(done)
-
-	cmplw	r8,r7
-	beq	L(end_max)
-
-	.p2align  5
-L(loop_small):
-	lwzu	r12,4(r8)
-	cmpb	r10,r12,r0
-	cmplwi	cr6,r10,0
-	bne	cr6,L(done)
-	cmplw	r8,r7
-	bne	L(loop_small)
-	mr	r3,r4
-	blr
-
-END (__strnlen)
-libc_hidden_def (__strnlen)
-weak_alias (__strnlen, strnlen)
-libc_hidden_builtin_def (strnlen)
diff --git a/sysdeps/powerpc/powerpc32/power8/Implies b/sysdeps/powerpc/powerpc32/power8/Implies
deleted file mode 100644
index 083f3e950a..0000000000
--- a/sysdeps/powerpc/powerpc32/power8/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power7/fpu
-powerpc/powerpc32/power7
diff --git a/sysdeps/powerpc/powerpc32/power8/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power8/fpu/multiarch/Implies
deleted file mode 100644
index 43a3b83e2a..0000000000
--- a/sysdeps/powerpc/powerpc32/power8/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power7/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power8/multiarch/Implies b/sysdeps/powerpc/powerpc32/power8/multiarch/Implies
deleted file mode 100644
index f18504408f..0000000000
--- a/sysdeps/powerpc/powerpc32/power8/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power7/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power9/Implies b/sysdeps/powerpc/powerpc32/power9/Implies
deleted file mode 100644
index 066dea2798..0000000000
--- a/sysdeps/powerpc/powerpc32/power9/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc32/power8/fpu
-powerpc/powerpc32/power8
diff --git a/sysdeps/powerpc/powerpc32/power9/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power9/fpu/multiarch/Implies
deleted file mode 100644
index 4393b56872..0000000000
--- a/sysdeps/powerpc/powerpc32/power9/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power8/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc32/power9/multiarch/Implies b/sysdeps/powerpc/powerpc32/power9/multiarch/Implies
deleted file mode 100644
index 1a46ef0035..0000000000
--- a/sysdeps/powerpc/powerpc32/power9/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power8/multiarch
diff --git a/sysdeps/powerpc/powerpc32/ppc-mcount.S b/sysdeps/powerpc/powerpc32/ppc-mcount.S
deleted file mode 100644
index 8a6b205c37..0000000000
--- a/sysdeps/powerpc/powerpc32/ppc-mcount.S
+++ /dev/null
@@ -1,104 +0,0 @@
-/* PowerPC-specific implementation of profiling support.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This would be bad.  */
-#ifdef PROF
-#undef PROF
-#endif
-
-#include <sysdep.h>
-
-/* We do profiling as described in the SYSV ELF ABI, except that glibc
-   _mcount manages its own counters.  The caller has put the address the
-   caller will return to in the usual place on the stack, 4(r1).  _mcount
-   is responsible for ensuring that when it returns no argument-passing
-   registers are disturbed, and that the LR is set back to (what the
-   caller sees as) 4(r1).
-
-   This is intended so that the following code can be inserted at the
-   front of any routine without changing the routine:
-
-	.data
-	mflr	r0
-	stw	r0,4(r1)
-	bl	_mcount
-*/
-
-ENTRY(_mcount)
-#if defined PIC && !defined SHARED
-# define CALLER_LR_OFFSET 68
-	stwu	r1,-64(r1)
-	cfi_adjust_cfa_offset (64)
-	stw	r30, 48(r1)
-	cfi_rel_offset (r30, 48)
-#else
-# define CALLER_LR_OFFSET 52
-	stwu	r1,-48(r1)
-	cfi_adjust_cfa_offset (48)
-#endif
-/* We need to save the parameter-passing registers.  */
-	stw	r3, 12(r1)
-	stw	r4, 16(r1)
-	stw	r5, 20(r1)
-	stw	r6, 24(r1)
-	mflr	r4
-#if defined PIC && !defined SHARED
-	bcl	20,31,0f
-0:
-	mflr	r30
-	addis	r30, r30, _GLOBAL_OFFSET_TABLE_-0b@ha
-	addi	r30, r30, _GLOBAL_OFFSET_TABLE_-0b@l
-#endif
-	lwz	r3, CALLER_LR_OFFSET(r1)
-	mfcr	r5
-	stw	r7, 28(r1)
-	stw	r8, 32(r1)
-	stw	r9, 36(r1)
-	stw	r10,40(r1)
-	stw	r4, 44(r1)
-	cfi_rel_offset (lr, 44)
-	stw	r5,  8(r1)
-#ifndef SHARED
-	bl	JUMPTARGET(__mcount_internal)
-#else
-	bl	__mcount_internal@local
-#endif
- /* Restore the registers...  */
-	lwz     r6,  8(r1)
-	lwz	r0, 44(r1)
-	lwz	r3, 12(r1)
-	mtctr	r0
-	lwz	r4, 16(r1)
-	mtcrf	0xff,r6
-	lwz	r5, 20(r1)
-	lwz	r6, 24(r1)
-	lwz	r0, CALLER_LR_OFFSET(r1)
-	lwz	r7, 28(r1)
-	lwz	r8, 32(r1)
-	mtlr	r0
-	lwz	r9, 36(r1)
-	lwz	r10,40(r1)
- /* ...unwind the stack frame, and return to your usual programming.  */
-#if defined PIC && !defined SHARED
-	lwz	r30, 48(r1)
-	addi	r1,r1,64
-#else
-	addi	r1,r1,48
-#endif
-	bctr
-END(_mcount)
diff --git a/sysdeps/powerpc/powerpc32/register-dump.h b/sysdeps/powerpc/powerpc32/register-dump.h
deleted file mode 100644
index 6e533a75a3..0000000000
--- a/sysdeps/powerpc/powerpc32/register-dump.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Dump registers.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sys/uio.h>
-#include <_itoa.h>
-
-/* This prints out the information in the following form: */
-static const char dumpform[] = "\
-Register dump:\n\
-fp0-3:   0000030%0000031% 0000032%0000033% 0000034%0000035% 0000036%0000037%\n\
-fp4-7:   0000038%0000039% 000003a%000003b% 000003c%000003d% 000003e%000003f%\n\
-fp8-11:  0000040%0000041% 0000042%0000043% 0000044%0000045% 0000046%0000047%\n\
-fp12-15: 0000048%0000049% 000004a%000004b% 000004c%000004d% 000004e%000004f%\n\
-fp16-19: 0000050%0000051% 0000052%0000053% 0000054%0000055% 0000056%0000057%\n\
-fp20-23: 0000058%0000059% 000005a%000005b% 000005c%000005d% 000005e%000005f%\n\
-fp24-27: 0000060%0000061% 0000062%0000063% 0000064%0000065% 0000066%0000067%\n\
-fp28-31: 0000068%0000069% 000006a%000006b% 000006c%000006d% 000006e%000006f%\n\
-r0 =0000000% sp =0000001% r2 =0000002% r3 =0000003%  trap=0000028%\n\
-r4 =0000004% r5 =0000005% r6 =0000006% r7 =0000007%   sr0=0000020% sr1=0000021%\n\
-r8 =0000008% r9 =0000009% r10=000000a% r11=000000b%   dar=0000029% dsi=000002a%\n\
-r12=000000c% r13=000000d% r14=000000e% r15=000000f%   r3*=0000022%\n\
-r16=0000010% r17=0000011% r18=0000012% r19=0000013%\n\
-r20=0000014% r21=0000015% r22=0000016% r23=0000017%    lr=0000024% xer=0000025%\n\
-r24=0000018% r25=0000019% r26=000001a% r27=000001b%    mq=0000027% ctr=0000023%\n\
-r28=000001c% r29=000001d% r30=000001e% r31=000001f%  fscr=0000071% ccr=0000026%\n\
-";
-
-/* Most of the fields are self-explanatory.  'sr0' is the next
-   instruction to execute, from SRR0, which may have some relationship
-   with the instruction that caused the exception.  'r3*' is the value
-   that will be returned in register 3 when the current system call
-   returns.  'sr1' is SRR1, bits 16-31 of which are copied from the MSR:
-
-   16 - External interrupt enable
-   17 - Privilege level (1=user, 0=supervisor)
-   18 - FP available
-   19 - Machine check enable (if clear, processor locks up on machine check)
-   20 - FP exception mode bit 0 (FP exceptions recoverable)
-   21 - Single-step trace enable
-   22 - Branch trace enable
-   23 - FP exception mode bit 1
-   25 - exception prefix (if set, exceptions are taken from 0xFFFnnnnn,
-        otherwise from 0x000nnnnn).
-   26 - Instruction address translation enabled.
-   27 - Data address translation enabled.
-   30 - Exception is recoverable (otherwise, don't try to return).
-   31 - Little-endian mode enable.
-
-   'Trap' is the address of the exception:
-
-   00200 - Machine check exception (memory parity error, for instance)
-   00300 - Data access exception (memory not mapped, see dsisr for why)
-   00400 - Instruction access exception (memory not mapped)
-   00500 - External interrupt
-   00600 - Alignment exception (see dsisr for more information)
-   00700 - Program exception (illegal/trap instruction, FP exception)
-   00800 - FP unavailable (should not be seen by user code)
-   00900 - Decrementer exception (for instance, SIGALRM)
-   00A00 - I/O controller interface exception
-   00C00 - System call exception (for instance, kill(3)).
-   00E00 - FP assist exception (optional FP instructions, etc.)
-
-   'dar' is the memory location, for traps 00300, 00400, 00600, 00A00.
-   'dsisr' has the following bits under trap 00300:
-   0 - direct-store error exception
-   1 - no page table entry for page
-   4 - memory access not permitted
-   5 - trying to access I/O controller space or using lwarx/stwcx on
-       non-write-cached memory
-   6 - access was store
-   9 - data access breakpoint hit
-   10 - segment table search failed to find translation (64-bit ppcs only)
-   11 - I/O controller instruction not permitted
-   For trap 00400, the same bits are set in SRR1 instead.
-   For trap 00600, bits 12-31 of the DSISR set to allow emulation of
-   the instruction without actually having to read it from memory.
-*/
-
-#define xtoi(x) (x >= 'a' ? x + 10 - 'a' : x - '0')
-
-static void
-register_dump (int fd, struct sigcontext *ctx)
-{
-  char buffer[sizeof(dumpform)];
-  char *bufferpos;
-  unsigned regno;
-  unsigned *regs = (unsigned *)(ctx->regs);
-
-  memcpy(buffer, dumpform, sizeof(dumpform));
-
-  /* Generate the output.  */
-  while ((bufferpos = memchr (buffer, '%', sizeof(dumpform))))
-    {
-      regno = xtoi (bufferpos[-1]) | xtoi (bufferpos[-2]) << 4;
-      memset (bufferpos-2, '0', 3);
-      _itoa_word (regs[regno], bufferpos+1, 16, 0);
-    }
-
-  /* Write the output.  */
-  write (fd, buffer, sizeof(buffer) - 1);
-}
-
-
-#define REGISTER_DUMP \
-  register_dump (fd, ctx)
diff --git a/sysdeps/powerpc/powerpc32/rshift.S b/sysdeps/powerpc/powerpc32/rshift.S
deleted file mode 100644
index 58abdcad59..0000000000
--- a/sysdeps/powerpc/powerpc32/rshift.S
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Shift a limb right, low level routine.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* INPUT PARAMETERS
-   res_ptr	r3
-   s1_ptr	r4
-   size		r5
-   cnt		r6  */
-
-ENTRY (__mpn_rshift)
-	mtctr	r5		# copy size into CTR
-	addi	r7,r3,-4	# move adjusted res_ptr to free return reg
-	subfic	r8,r6,32
-	lwz	r11,0(r4)	# load first s1 limb
-	slw	r3,r11,r8	# compute function return value
-	bdz	L(1)
-
-L(0):	lwzu	r10,4(r4)
-	srw	r9,r11,r6
-	slw	r12,r10,r8
-	or	r9,r9,r12
-	stwu	r9,4(r7)
-	bdz	L(2)
-	lwzu	r11,4(r4)
-	srw	r9,r10,r6
-	slw	r12,r11,r8
-	or	r9,r9,r12
-	stwu	r9,4(r7)
-	bdnz	L(0)
-
-L(1):	srw	r0,r11,r6
-	stw	r0,4(r7)
-	blr
-
-L(2):	srw	r0,r10,r6
-	stw	r0,4(r7)
-	blr
-END (__mpn_rshift)
diff --git a/sysdeps/powerpc/powerpc32/rtld-memset.c b/sysdeps/powerpc/powerpc32/rtld-memset.c
deleted file mode 100644
index f3ed8ad1e7..0000000000
--- a/sysdeps/powerpc/powerpc32/rtld-memset.c
+++ /dev/null
@@ -1,4 +0,0 @@
-/* PPCA2 has a different cache-line size than the usual 128 bytes.  To avoid
-   using code that assumes cache-line size to be 128 bytes (with dcbz
-   instructions) we use the generic code instead.  */
-#include <string/memset.c>
diff --git a/sysdeps/powerpc/powerpc32/setjmp-common.S b/sysdeps/powerpc/powerpc32/setjmp-common.S
deleted file mode 100644
index c74c492cec..0000000000
--- a/sysdeps/powerpc/powerpc32/setjmp-common.S
+++ /dev/null
@@ -1,78 +0,0 @@
-/* setjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#ifdef __NO_VMX__
-# include <novmxsetjmp.h>
-#else
-# include <jmpbuf-offsets.h>
-#endif
-
-#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
-# define SAVE_GP(N)	evstdd r##N,((JB_FPRS+((N)-14)*2)*4)(3)
-#else
-# define SAVE_GP(N)	stw r##N,((JB_GPRS+(N)-14)*4)(3)
-#endif
-
-ENTRY (__sigsetjmp_symbol)
-
-#ifdef PTR_MANGLE
-	mr   r5,r1
-	PTR_MANGLE(r5, r10)
-	stw  r5,(JB_GPR1*4)(3)
-#else
-	stw  r1,(JB_GPR1*4)(3)
-#endif
-	mflr r0
-	/* setjmp probe expects longjmp first argument (4@3), second argument
-	   (-4@4), and target address (4@0), respectively.  */
-	LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
-	SAVE_GP (14)
-#ifdef PTR_MANGLE
-	PTR_MANGLE2 (r0, r10)
-	li   r10,0
-#endif
-	stw  r0,(JB_LR*4)(3)
-	SAVE_GP (15)
-	mfcr r0
-	SAVE_GP (16)
-	stw  r0,(JB_CR*4)(3)
-	SAVE_GP (17)
-	SAVE_GP (18)
-	SAVE_GP (19)
-	SAVE_GP (20)
-	SAVE_GP (21)
-	SAVE_GP (22)
-	SAVE_GP (23)
-	SAVE_GP (24)
-	SAVE_GP (25)
-	SAVE_GP (26)
-	SAVE_GP (27)
-	SAVE_GP (28)
-	SAVE_GP (29)
-	SAVE_GP (30)
-	SAVE_GP (31)
-#if IS_IN (rtld)
-	li   r3,0
-	blr
-#else
-	b __sigjmp_save_symbol@local
-#endif
-END (__sigsetjmp_symbol)
diff --git a/sysdeps/powerpc/powerpc32/setjmp.S b/sysdeps/powerpc/powerpc32/setjmp.S
deleted file mode 100644
index 2800466276..0000000000
--- a/sysdeps/powerpc/powerpc32/setjmp.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* non altivec (old) version of setjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <shlib-compat.h>
-#include <libc-symbols.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# define __sigsetjmp_symbol __sigsetjmp
-# define __sigjmp_save_symbol __sigjmp_save
-# include "setjmp-common.S"
-
-#else /* IS_IN (libc) */
-/* Build a versioned object for libc.  */
-versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
-# define __sigsetjmp_symbol __vmx__sigsetjmp
-# define __sigjmp_save_symbol __vmx__sigjmp_save
-# include "setjmp-common.S"
-libc_hidden_ver (__vmx__sigsetjmp, __sigsetjmp)
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
-#  define __NO_VMX__
-#  undef __sigsetjmp_symbol
-#  undef __sigjmp_save_symbol
-#  undef JB_SIZE
-compat_symbol (libc, __novmx__sigsetjmp, __sigsetjmp, GLIBC_2_0)
-#  define __sigsetjmp_symbol __novmx__sigsetjmp
-#  define __sigjmp_save_symbol __novmx__sigjmp_save
-#  include "setjmp-common.S"
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc32/stackguard-macros.h b/sysdeps/powerpc/powerpc32/stackguard-macros.h
deleted file mode 100644
index b3d0af830f..0000000000
--- a/sysdeps/powerpc/powerpc32/stackguard-macros.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <stdint.h>
-
-#define STACK_CHK_GUARD \
-  ({ uintptr_t x; asm ("lwz %0,-28680(2)" : "=r" (x)); x; })
-
-#define POINTER_CHK_GUARD \
-  ({												\
-     uintptr_t x;										\
-     asm ("lwz %0,%1(2)"									\
-	  : "=r" (x)										\
-	  : "i" (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))	\
-         );											\
-     x;												\
-   })
diff --git a/sysdeps/powerpc/powerpc32/start.S b/sysdeps/powerpc/powerpc32/start.S
deleted file mode 100644
index d510a56c0f..0000000000
--- a/sysdeps/powerpc/powerpc32/start.S
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Startup code for programs linked with GNU libc.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* We do not want .eh_frame info for crt1.o since crt1.o is linked
-   before crtbegin.o, the file defining __EH_FRAME_BEGIN__.  */
-#undef cfi_startproc
-#define cfi_startproc
-#undef cfi_endproc
-#define cfi_endproc
-
- /* These are the various addresses we require.  */
-#ifdef PIC
-	.section ".data"
-#else
-	.section ".rodata"
-#endif
-	.align	2
-L(start_addresses):
-	.long	_SDA_BASE_
-	.long	main
-	.long 	__libc_csu_init
-	.long 	__libc_csu_fini
-	ASM_SIZE_DIRECTIVE(L(start_addresses))
-
-	.section ".text"
-ENTRY(_start)
- /* Save the stack pointer, in case we're statically linked under Linux.  */
-	mr	r9,r1
- /* Set up an initial stack frame, and clear the LR.  */
-	clrrwi	r1,r1,4
-#ifdef PIC
-	SETUP_GOT_ACCESS(r13,got_label)
-	li	r0,0
-#else
-	li	r0,0
-#endif
-	stwu	r1,-16(r1)
-	mtlr	r0
-	stw	r0,0(r1)
- /* Set r13 to point at the 'small data area', and put the address of
-    start_addresses in r8.  Also load the GOT pointer so that new PLT
-    calls work, like the one to __libc_start_main.  */
-#ifdef PIC
-	addis	r30,r13,_GLOBAL_OFFSET_TABLE_-got_label@ha
-	addis	r8,r13,L(start_addresses)-got_label@ha
-	addi	r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
-	lwzu	r13, L(start_addresses)-got_label@l(r8)
-#else
-	lis	r8,L(start_addresses)@ha
-	lwzu	r13,L(start_addresses)@l(r8)
-#endif
- /* and continue in libc-start, in glibc.  */
-	b	JUMPTARGET(__libc_start_main)
-END(_start)
-
-/* Define a symbol for the first piece of initialized data.  */
-	.section ".data"
-	.globl	__data_start
-__data_start:
-	.long	0
-weak_alias (__data_start, data_start)
diff --git a/sysdeps/powerpc/powerpc32/stpcpy.S b/sysdeps/powerpc/powerpc32/stpcpy.S
deleted file mode 100644
index 6ef249f80d..0000000000
--- a/sysdeps/powerpc/powerpc32/stpcpy.S
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Optimized stpcpy implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* char * [r3] stpcpy (char *dest [r3], const char *src [r4])  */
-
-EALIGN (__stpcpy, 4, 0)
-
-#define rTMP	r0
-#define rRTN	r3
-#define rDEST	r3		/* pointer to previous word in dest */
-#define rSRC	r4		/* pointer to previous word in src */
-#define rWORD	r6		/* current word from src */
-#define rFEFE	r7		/* 0xfefefeff */
-#define r7F7F	r8		/* 0x7f7f7f7f */
-#define rNEG	r9		/* ~(word in src | 0x7f7f7f7f) */
-#define rALT	r10		/* alternate word from src */
-
-
-	or	rTMP, rSRC, rDEST
-	clrlwi.	rTMP, rTMP, 30
-	addi	rDEST, rDEST, -4
-	bne	L(unaligned)
-
-	lis	rFEFE, -0x101
-	lis	r7F7F, 0x7f7f
-	lwz	rWORD, 0(rSRC)
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	b	L(g2)
-
-L(g0):	lwzu	rALT, 4(rSRC)
-	stwu	rWORD, 4(rDEST)
-	add	rTMP, rFEFE, rALT
-	nor	rNEG, r7F7F, rALT
-	and.	rTMP, rTMP, rNEG
-	bne-	L(g1)
-	lwzu	rWORD, 4(rSRC)
-	stwu	rALT, 4(rDEST)
-L(g2):	add	rTMP, rFEFE, rWORD
-	nor	rNEG, r7F7F, rWORD
-	and.	rTMP, rTMP, rNEG
-	beq+	L(g0)
-
-	mr	rALT, rWORD
-/* We've hit the end of the string.  Do the rest byte-by-byte.  */
-L(g1):
-#ifdef __LITTLE_ENDIAN__
-	rlwinm.	rTMP, rALT, 0, 24, 31
-	stbu	rALT, 4(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 24, 24, 31
-	stbu	rTMP, 1(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 16, 24, 31
-	stbu	rTMP, 1(rDEST)
-	beqlr-
-	rlwinm	rTMP, rALT, 8, 24, 31
-	stbu	rTMP, 1(rDEST)
-	blr
-#else
-	rlwinm.	rTMP, rALT, 8, 24, 31
-	stbu	rTMP, 4(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 16, 24, 31
-	stbu	rTMP, 1(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 24, 24, 31
-	stbu	rTMP, 1(rDEST)
-	beqlr-
-	stbu	rALT, 1(rDEST)
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte copy.  */
-	.align 4
-	nop
-L(unaligned):
-	lbz	rWORD, 0(rSRC)
-	addi	rDEST, rDEST, 3
-	cmpwi	rWORD, 0
-	beq-	L(u2)
-
-L(u0):	lbzu	rALT, 1(rSRC)
-	stbu	rWORD, 1(rDEST)
-	cmpwi	rALT, 0
-	beq-	L(u1)
-	nop		/* Let 601 load start of loop.  */
-	lbzu	rWORD, 1(rSRC)
-	stbu	rALT, 1(rDEST)
-	cmpwi	rWORD, 0
-	bne+	L(u0)
-L(u2):	stbu	rWORD, 1(rDEST)
-	blr
-L(u1):	stbu	rALT, 1(rDEST)
-	blr
-END (__stpcpy)
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_builtin_def (stpcpy)
diff --git a/sysdeps/powerpc/powerpc32/strchr.S b/sysdeps/powerpc/powerpc32/strchr.S
deleted file mode 100644
index 868cbd46aa..0000000000
--- a/sysdeps/powerpc/powerpc32/strchr.S
+++ /dev/null
@@ -1,146 +0,0 @@
-/* Optimized strchr implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how this works.  */
-
-/* char * [r3] strchr (const char *s [r3] , int c [r4] )  */
-
-ENTRY (strchr)
-
-#define rTMP1	r0
-#define rRTN	r3	/* outgoing result */
-#define rSTR	r8	/* current word pointer */
-#define rCHR	r4	/* byte we're looking for, spread over the whole word */
-#define rWORD	r5	/* the current word */
-#define rCLZB	rCHR	/* leading zero byte count */
-#define rFEFE	r6	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r7	/* constant 0x7f7f7f7f */
-#define rTMP2	r9
-#define rIGN	r10	/* number of bits we should ignore in the first word */
-#define rMASK	r11	/* mask with the bits to ignore set to 0 */
-#define rTMP3	r12
-#define rTMP4	rIGN
-#define rTMP5	rMASK
-
-
-	rlwimi	rCHR, rCHR, 8, 16, 23
-	li	rMASK, -1
-	rlwimi	rCHR, rCHR, 16, 0, 15
-	rlwinm	rIGN, rRTN, 3, 27, 28
-	lis	rFEFE, -0x101
-	lis	r7F7F, 0x7f7f
-	clrrwi	rSTR, rRTN, 2
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-/* Test the first (partial?) word.  */
-	lwz	rWORD, 0(rSTR)
-#ifdef __LITTLE_ENDIAN__
-	slw	rMASK, rMASK, rIGN
-#else
-	srw	rMASK, rMASK, rIGN
-#endif
-	orc	rWORD, rWORD, rMASK
-	add	rTMP1, rFEFE, rWORD
-	nor	rTMP2, r7F7F, rWORD
-	and.	rTMP4, rTMP1, rTMP2
-	xor	rTMP3, rCHR, rWORD
-	orc	rTMP3, rTMP3, rMASK
-	b	L(loopentry)
-
-/* The loop.  */
-
-L(loop):
-	lwzu	rWORD, 4(rSTR)
-	and.	rTMP5, rTMP1, rTMP2
-/* Test for 0.	*/
-	add	rTMP1, rFEFE, rWORD /* x - 0x01010101.  */
-	nor	rTMP2, r7F7F, rWORD /* ~(x | 0x7f7f7f7f) == ~x & 0x80808080.  */
-	bne	L(foundit)
-	and.	rTMP4, rTMP1, rTMP2 /* (x - 0x01010101) & ~x & 0x80808080.  */
-/* Start test for the bytes we're looking for.  */
-	xor	rTMP3, rCHR, rWORD
-L(loopentry):
-	add	rTMP1, rFEFE, rTMP3
-	nor	rTMP2, r7F7F, rTMP3
-	beq	L(loop)
-
-/* There is a zero byte in the word, but may also be a matching byte (either
-   before or after the zero byte).  In fact, we may be looking for a
-   zero byte, in which case we return a match.  */
-	and.	rTMP5, rTMP1, rTMP2
-	li	rRTN, 0
-	beqlr
-/* At this point:
-   rTMP5 bytes are 0x80 for each match of c, 0 otherwise.
-   rTMP4 bytes are 0x80 for each match of 0, 0 otherwise.
-   But there may be false matches in the next most significant byte from
-   a true match due to carries.  This means we need to recalculate the
-   matches using a longer method for big-endian.  */
-#ifdef __LITTLE_ENDIAN__
-	addi	rTMP1, rTMP5, -1
-	andc	rTMP1, rTMP1, rTMP5
-	cntlzw	rCLZB, rTMP1
-	addi	rTMP2, rTMP4, -1
-	andc	rTMP2, rTMP2, rTMP4
-	cmplw	rTMP1, rTMP2
-	bgtlr
-	subfic	rCLZB, rCLZB, 32-7
-#else
-/* I think we could reduce this by two instructions by keeping the "nor"
-   results from the loop for reuse here.  See strlen.S tail.  Similarly
-   one instruction could be pruned from L(foundit).  */
-	and	rFEFE, r7F7F, rWORD
-	or	rTMP5, r7F7F, rWORD
-	and	rTMP1, r7F7F, rTMP3
-	or	rTMP4, r7F7F, rTMP3
-	add	rFEFE, rFEFE, r7F7F
-	add	rTMP1, rTMP1, r7F7F
-	nor	rWORD, rTMP5, rFEFE
-	nor	rTMP2, rTMP4, rTMP1
-	cntlzw	rCLZB, rTMP2
-	cmplw	rWORD, rTMP2
-	bgtlr
-#endif
-	srwi	rCLZB, rCLZB, 3
-	add	rRTN, rSTR, rCLZB
-	blr
-
-L(foundit):
-#ifdef __LITTLE_ENDIAN__
-	addi	rTMP1, rTMP5, -1
-	andc	rTMP1, rTMP1, rTMP5
-	cntlzw	rCLZB, rTMP1
-	subfic	rCLZB, rCLZB, 32-7-32
-	srawi	rCLZB, rCLZB, 3
-#else
-	and	rTMP1, r7F7F, rTMP3
-	or	rTMP4, r7F7F, rTMP3
-	add	rTMP1, rTMP1, r7F7F
-	nor	rTMP2, rTMP4, rTMP1
-	cntlzw	rCLZB, rTMP2
-	subi	rSTR, rSTR, 4
-	srwi	rCLZB, rCLZB, 3
-#endif
-	add	rRTN, rSTR, rCLZB
-	blr
-END (strchr)
-
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/powerpc/powerpc32/strcmp.S b/sysdeps/powerpc/powerpc32/strcmp.S
deleted file mode 100644
index 52c4bbc1f2..0000000000
--- a/sysdeps/powerpc/powerpc32/strcmp.S
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Optimized strcmp implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
-
-EALIGN (strcmp, 4, 0)
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rWORD1	r5	/* current word in s1 */
-#define rWORD2	r6	/* current word in s2 */
-#define rFEFE	r7	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r8	/* constant 0x7f7f7f7f */
-#define rNEG	r9	/* ~(word in s1 | 0x7f7f7f7f) */
-#define rBITDIF	r10	/* bits that differ in s1 & s2 words */
-#define rTMP	r11
-
-
-	or	rTMP, rSTR2, rSTR1
-	clrlwi.	rTMP, rTMP, 30
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-	lis	r7F7F, 0x7f7f
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	b	L(g1)
-
-L(g0):	lwzu	rWORD1, 4(rSTR1)
-	bne	cr1, L(different)
-	lwzu	rWORD2, 4(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	and.	rTMP, rTMP, rNEG
-	cmpw	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	addi    rTMP2, rTMP, -1
-	andc    rTMP2, rTMP2, rTMP
-	rlwimi	rTMP2, rTMP2, 1, 0, 30
-	and	rWORD2, rWORD2, rTMP2		/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rlwimi	rTMP2, rWORD2, 24, 0, 7
-	rlwimi	rTMP, rWORD1, 24, 0, 7
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rlwimi	rTMP2, rWORD2, 24, 0, 7
-	rlwimi	rTMP, rWORD1, 24, 0, 7
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzw	rBITDIF, rBITDIF
-	cntlzw	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpw	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+	cr1
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+
-L(highbit):
-	ori	rRTN, rWORD2, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(unaligned):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	b	L(u1)
-
-L(u0):	lbzu	rWORD1, 1(rSTR1)
-	bne-	L(u4)
-	lbzu	rWORD2, 1(rSTR2)
-L(u1):	cmpwi	cr1, rWORD1, 0
-	beq-	cr1, L(u3)
-	cmpw	rWORD1, rWORD2
-	bne-	L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	cmpwi	cr1, rWORD1, 0
-	cmpw	rWORD1, rWORD2
-	bne+	cr1, L(u0)
-L(u3):	sub	rRTN, rWORD1, rWORD2
-	blr
-L(u4):	lbz	rWORD1, -1(rSTR1)
-	sub	rRTN, rWORD1, rWORD2
-	blr
-END (strcmp)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc32/strcpy.S b/sysdeps/powerpc/powerpc32/strcpy.S
deleted file mode 100644
index c7af830dda..0000000000
--- a/sysdeps/powerpc/powerpc32/strcpy.S
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Optimized strcpy implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* char * [r3] strcpy (char *dest [r3], const char *src [r4])  */
-
-EALIGN (strcpy, 4, 0)
-
-#define rTMP	r0
-#define rRTN	r3	/* incoming DEST arg preserved as result */
-#define rSRC	r4	/* pointer to previous word in src */
-#define rDEST	r5	/* pointer to previous word in dest */
-#define rWORD	r6	/* current word from src */
-#define rFEFE	r7	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r8	/* constant 0x7f7f7f7f */
-#define rNEG	r9	/* ~(word in s1 | 0x7f7f7f7f) */
-#define rALT	r10	/* alternate word from src */
-
-
-	or	rTMP, rSRC, rRTN
-	clrlwi.	rTMP, rTMP, 30
-	addi	rDEST, rRTN, -4
-	bne	L(unaligned)
-
-	lis	rFEFE, -0x101
-	lis	r7F7F, 0x7f7f
-	lwz	rWORD, 0(rSRC)
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	b	L(g2)
-
-L(g0):	lwzu	rALT, 4(rSRC)
-	stwu	rWORD, 4(rDEST)
-	add	rTMP, rFEFE, rALT
-	nor	rNEG, r7F7F, rALT
-	and.	rTMP, rTMP, rNEG
-	bne-	L(g1)
-	lwzu	rWORD, 4(rSRC)
-	stwu	rALT, 4(rDEST)
-L(g2):	add	rTMP, rFEFE, rWORD
-	nor	rNEG, r7F7F, rWORD
-	and.	rTMP, rTMP, rNEG
-	beq+	L(g0)
-
-	mr	rALT, rWORD
-/* We've hit the end of the string.  Do the rest byte-by-byte.  */
-L(g1):
-#ifdef __LITTLE_ENDIAN__
-	rlwinm.	rTMP, rALT, 0, 24, 31
-	stb	rALT, 4(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 24, 24, 31
-	stb	rTMP, 5(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 16, 24, 31
-	stb	rTMP, 6(rDEST)
-	beqlr-
-	rlwinm	rTMP, rALT, 8, 24, 31
-	stb	rTMP, 7(rDEST)
-	blr
-#else
-	rlwinm.	rTMP, rALT, 8, 24, 31
-	stb	rTMP, 4(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 16, 24, 31
-	stb	rTMP, 5(rDEST)
-	beqlr-
-	rlwinm.	rTMP, rALT, 24, 24, 31
-	stb	rTMP, 6(rDEST)
-	beqlr-
-	stb	rALT, 7(rDEST)
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte copy.  */
-	.align 4
-	nop
-L(unaligned):
-	lbz	rWORD, 0(rSRC)
-	addi	rDEST, rRTN, -1
-	cmpwi	rWORD, 0
-	beq-	L(u2)
-
-L(u0):	lbzu	rALT, 1(rSRC)
-	stbu	rWORD, 1(rDEST)
-	cmpwi	rALT, 0
-	beq-	L(u1)
-	nop		/* Let 601 load start of loop.  */
-	lbzu	rWORD, 1(rSRC)
-	stbu	rALT, 1(rDEST)
-	cmpwi	rWORD, 0
-	bne+	L(u0)
-L(u2):	stb	rWORD, 1(rDEST)
-	blr
-L(u1):	stb	rALT, 1(rDEST)
-	blr
-
-END (strcpy)
-libc_hidden_builtin_def (strcpy)
diff --git a/sysdeps/powerpc/powerpc32/strlen.S b/sysdeps/powerpc/powerpc32/strlen.S
deleted file mode 100644
index fa245f0760..0000000000
--- a/sysdeps/powerpc/powerpc32/strlen.S
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Optimized strlen implementation for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* The algorithm here uses the following techniques:
-
-   1) Given a word 'x', we can test to see if it contains any 0 bytes
-      by subtracting 0x01010101, and seeing if any of the high bits of each
-      byte changed from 0 to 1. This works because the least significant
-      0 byte must have had no incoming carry (otherwise it's not the least
-      significant), so it is 0x00 - 0x01 == 0xff. For all other
-      byte values, either they have the high bit set initially, or when
-      1 is subtracted you get a value in the range 0x00-0x7f, none of which
-      have their high bit set. The expression here is
-      (x + 0xfefefeff) & ~(x | 0x7f7f7f7f), which gives 0x00000000 when
-      there were no 0x00 bytes in the word.  You get 0x80 in bytes that
-      match, but possibly false 0x80 matches in the next more significant
-      byte to a true match due to carries.  For little-endian this is
-      of no consequence since the least significant match is the one
-      we're interested in, but big-endian needs method 2 to find which
-      byte matches.
-
-   2) Given a word 'x', we can test to see _which_ byte was zero by
-      calculating ~(((x & 0x7f7f7f7f) + 0x7f7f7f7f) | x | 0x7f7f7f7f).
-      This produces 0x80 in each byte that was zero, and 0x00 in all
-      the other bytes. The '| 0x7f7f7f7f' clears the low 7 bits in each
-      byte, and the '| x' part ensures that bytes with the high bit set
-      produce 0x00. The addition will carry into the high bit of each byte
-      iff that byte had one of its low 7 bits set. We can then just see
-      which was the most significant bit set and divide by 8 to find how
-      many to add to the index.
-      This is from the book 'The PowerPC Compiler Writer's Guide',
-      by Steve Hoxey, Faraydon Karim, Bill Hay and Hank Warren.
-
-   We deal with strings not aligned to a word boundary by taking the
-   first word and ensuring that bytes not part of the string
-   are treated as nonzero. To allow for memory latency, we unroll the
-   loop a few times, being careful to ensure that we do not read ahead
-   across cache line boundaries.
-
-   Questions to answer:
-   1) How long are strings passed to strlen? If they're often really long,
-   we should probably use cache management instructions and/or unroll the
-   loop more. If they're often quite short, it might be better to use
-   fact (2) in the inner loop than have to recalculate it.
-   2) How popular are bytes with the high bit set? If they are very rare,
-   on some processors it might be useful to use the simpler expression
-   ~((x - 0x01010101) | 0x7f7f7f7f) (that is, on processors with only one
-   ALU), but this fails when any character has its high bit set.  */
-
-/* Some notes on register usage: Under the SVR4 ABI, we can use registers
-   0 and 3 through 12 (so long as we don't call any procedures) without
-   saving them. We can also use registers 14 through 31 if we save them.
-   We can't use r1 (it's the stack pointer), r2 nor r13 because the user
-   program may expect them to hold their usual value if we get sent
-   a signal. Integer parameters are passed in r3 through r10.
-   We can use condition registers cr0, cr1, cr5, cr6, and cr7 without saving
-   them, the others we must save.  */
-
-/* int [r3] strlen (char *s [r3])  */
-
-ENTRY (strlen)
-
-#define rTMP4	r0
-#define rRTN	r3	/* incoming STR arg, outgoing result */
-#define rSTR	r4	/* current string position */
-#define rPADN	r5	/* number of padding bits we prepend to the
-			   string to make it start at a word boundary */
-#define rFEFE	r6	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r7	/* constant 0x7f7f7f7f */
-#define rWORD1	r8	/* current string word */
-#define rWORD2	r9	/* next string word */
-#define rMASK	r9	/* mask for first string word */
-#define rTMP1	r10
-#define rTMP2	r11
-#define rTMP3	r12
-
-
-	clrrwi	rSTR, rRTN, 2
-	lis	r7F7F, 0x7f7f
-	rlwinm	rPADN, rRTN, 3, 27, 28
-	lwz	rWORD1, 0(rSTR)
-	li	rMASK, -1
-	addi	r7F7F, r7F7F, 0x7f7f
-/* We use method (2) on the first two words, because rFEFE isn't
-   required which reduces setup overhead.  Also gives a faster return
-   for small strings on big-endian due to needing to recalculate with
-   method (2) anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	slw	rMASK, rMASK, rPADN
-#else
-	srw	rMASK, rMASK, rPADN
-#endif
-	and	rTMP1, r7F7F, rWORD1
-	or	rTMP2, r7F7F, rWORD1
-	add	rTMP1, rTMP1, r7F7F
-	nor	rTMP3, rTMP2, rTMP1
-	and.	rTMP3, rTMP3, rMASK
-	mtcrf	0x01, rRTN
-	bne	L(done0)
-	lis	rFEFE, -0x101
-	addi	rFEFE, rFEFE, -0x101
-/* Are we now aligned to a doubleword boundary?  */
-	bt	29, L(loop)
-
-/* Handle second word of pair.  */
-/* Perhaps use method (1) here for little-endian, saving one instruction?  */
-	lwzu	rWORD1, 4(rSTR)
-	and	rTMP1, r7F7F, rWORD1
-	or	rTMP2, r7F7F, rWORD1
-	add	rTMP1, rTMP1, r7F7F
-	nor.	rTMP3, rTMP2, rTMP1
-	bne	L(done0)
-
-/* The loop.  */
-
-L(loop):
-	lwz	rWORD1, 4(rSTR)
-	lwzu	rWORD2, 8(rSTR)
-	add	rTMP1, rFEFE, rWORD1
-	nor	rTMP2, r7F7F, rWORD1
-	and.	rTMP1, rTMP1, rTMP2
-	add	rTMP3, rFEFE, rWORD2
-	nor	rTMP4, r7F7F, rWORD2
-	bne	L(done1)
-	and.	rTMP3, rTMP3, rTMP4
-	beq	L(loop)
-
-#ifndef __LITTLE_ENDIAN__
-	and	rTMP1, r7F7F, rWORD2
-	add	rTMP1, rTMP1, r7F7F
-	andc	rTMP3, rTMP4, rTMP1
-	b	L(done0)
-
-L(done1):
-	and	rTMP1, r7F7F, rWORD1
-	subi	rSTR, rSTR, 4
-	add	rTMP1, rTMP1, r7F7F
-	andc	rTMP3, rTMP2, rTMP1
-
-/* When we get to here, rSTR points to the first word in the string that
-   contains a zero byte, and rTMP3 has 0x80 for bytes that are zero,
-   and 0x00 otherwise.  */
-L(done0):
-	cntlzw	rTMP3, rTMP3
-	subf	rTMP1, rRTN, rSTR
-	srwi	rTMP3, rTMP3, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-#else
-
-L(done0):
-	addi	rTMP1, rTMP3, -1	/* Form a mask from trailing zeros.  */
-	andc	rTMP1, rTMP1, rTMP3
-	cntlzw	rTMP1, rTMP1		/* Count bits not in the mask.  */
-	subf	rTMP3, rRTN, rSTR
-	subfic	rTMP1, rTMP1, 32-7
-	srwi	rTMP1, rTMP1, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-
-L(done1):
-	addi	rTMP3, rTMP1, -1
-	andc	rTMP3, rTMP3, rTMP1
-	cntlzw	rTMP3, rTMP3
-	subf	rTMP1, rRTN, rSTR
-	subfic	rTMP3, rTMP3, 32-7-32
-	srawi	rTMP3, rTMP3, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-#endif
-
-END (strlen)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc32/strncmp.S b/sysdeps/powerpc/powerpc32/strncmp.S
deleted file mode 100644
index dadc90d661..0000000000
--- a/sysdeps/powerpc/powerpc32/strncmp.S
+++ /dev/null
@@ -1,181 +0,0 @@
-/* Optimized strcmp implementation for PowerPC32.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
-
-EALIGN (strncmp, 4, 0)
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rFEFE	r8	/* constant 0xfefefeff (-0x01010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	or	rTMP, rSTR2, rSTR1
-	lis	r7F7F, 0x7f7f
-	dcbt	0,rSTR2
-	clrlwi.	rTMP, rTMP, 30
-	cmplwi	cr1, rN, 0
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-/* We are word aligned so set up for two loops.  first a word
-   loop, then fall into the byte loop if any residual.  */
-	srwi.	rTMP, rN, 2
-	clrlwi	rN, rN, 30
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	cmplwi	cr1, rN, 0
-	beq	L(unaligned)
-
-	mtctr	rTMP	/* Power4 wants mtctr 1st in dispatch group.  */
-	lwz	rWORD1, 0(rSTR1)
-	lwz	rWORD2, 0(rSTR2)
-	b	L(g1)
-
-L(g0):
-	lwzu	rWORD1, 4(rSTR1)
-	bne-	cr1, L(different)
-	lwzu	rWORD2, 4(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	bdz	L(tail)
-	and.	rTMP, rTMP, rNEG
-	cmpw	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	slwi	rTMP, rTMP, 1
-	addi    rTMP2, rTMP, -1
-	andc    rTMP2, rTMP2, rTMP
-	and	rWORD2, rWORD2, rTMP2		/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rlwimi	rTMP2, rWORD2, 24, 0, 7
-	rlwimi	rTMP, rWORD1, 24, 0, 7
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	rlwinm	rTMP2, rWORD2, 8, 0xffffffff	/* Byte reverse word.  */
-	rlwinm	rTMP, rWORD1, 8, 0xffffffff
-	rlwimi	rTMP2, rWORD2, 24, 0, 7
-	rlwimi	rTMP, rWORD1, 24, 0, 7
-	rlwimi	rTMP2, rWORD2, 24, 16, 23
-	rlwimi	rTMP, rWORD1, 24, 16, 23
-	xor.	rBITDIF, rTMP, rTMP2
-	sub	rRTN, rTMP, rTMP2
-	bgelr+
-	ori	rRTN, rTMP2, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzw	rBITDIF, rBITDIF
-	cntlzw	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpw	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+	cr1
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	lwz	rWORD1, -4(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	bgelr+
-L(highbit):
-	ori	rRTN, rWORD2, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(tail):
-	and.	rTMP, rTMP, rNEG
-	cmpw	cr1, rWORD1, rWORD2
-	bne-	L(endstring)
-	addi	rSTR1, rSTR1, 4
-	bne-	cr1, L(different)
-	addi	rSTR2, rSTR2, 4
-	cmplwi	cr1, rN, 0
-L(unaligned):
-	mtctr   rN	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(uz)
-L(ux):
-	li	rRTN, 0
-	blr
-	.align 4
-L(uz):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	nop
-	b	L(u1)
-L(u0):
-	lbzu	rWORD2, 1(rSTR2)
-L(u1):
-	bdz	L(u3)
-	cmpwi	cr1, rWORD1, 0
-	cmpw	rWORD1, rWORD2
-	beq-	cr1, L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	bne-	L(u2)
-	lbzu	rWORD2, 1(rSTR2)
-	bdz	L(u3)
-	cmpwi	cr1, rWORD1, 0
-	cmpw	rWORD1, rWORD2
-	bne-	L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	bne+	cr1, L(u0)
-
-L(u2):	lbzu	rWORD1, -1(rSTR1)
-L(u3):	sub	rRTN, rWORD1, rWORD2
-	blr
-END (strncmp)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc32/sub_n.S b/sysdeps/powerpc/powerpc32/sub_n.S
deleted file mode 100644
index 659f348079..0000000000
--- a/sysdeps/powerpc/powerpc32/sub_n.S
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Subtract two limb vectors of equal, non-zero length for PowerPC.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_sub_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr,
-                        mp_size_t size)
-   Calculate s1-s2 and put result in res_ptr; return borrow, 0 or 1.  */
-
-/* Note on optimisation: This code is optimal for the 601.  Almost every other
-   possible 2-unrolled inner loop will not be.  Also, watch out for the
-   alignment...  */
-
-EALIGN (__mpn_sub_n, 3, 1)
-
-/* Set up for loop below.  */
-	mtcrf 0x01,r6
-	srwi. r7,r6,1
-	mtctr r7
-	bt    31,L(2)
-
-/* Set the carry (clear the borrow).  */
-	subfc r0,r0,r0
-/* Adjust pointers for loop.  */
-	addi  r3,r3,-4
-	addi  r4,r4,-4
-	addi  r5,r5,-4
-	b     L(0)
-
-L(2):	lwz   r7,0(r5)
-	lwz   r6,0(r4)
-	subfc r6,r7,r6
-	stw   r6,0(r3)
-        beq   L(1)
-
-/* Align start of loop to an odd word boundary to guarantee that the
-   last two words can be fetched in one access (for 601).  This turns
-   out to be important.  */
-L(0):
-	lwz   r9,4(r4)
-	lwz   r8,4(r5)
-	lwzu  r6,8(r4)
-	lwzu  r7,8(r5)
-	subfe r8,r8,r9
-	stw   r8,4(r3)
-	subfe r6,r7,r6
-	stwu  r6,8(r3)
-	bdnz  L(0)
-/* Return the borrow. */
-L(1):	subfe r3,r3,r3
-	neg   r3,r3
-	blr
-END (__mpn_sub_n)
diff --git a/sysdeps/powerpc/powerpc32/submul_1.S b/sysdeps/powerpc/powerpc32/submul_1.S
deleted file mode 100644
index c1183c40f9..0000000000
--- a/sysdeps/powerpc/powerpc32/submul_1.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Multiply a limb vector by a single limb, for PowerPC.
-   Copyright (C) 1993-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* mp_limb_t mpn_submul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
-                           mp_size_t s1_size, mp_limb_t s2_limb)
-   Calculate res-s1*s2 and put result back in res; return carry.  */
-
-ENTRY (__mpn_submul_1)
-	mtctr	r5
-
-	lwz	r0,0(r4)
-	mullw	r7,r0,r6
-	mulhwu	r10,r0,r6
-	lwz     r9,0(r3)
-	subf 	r8,r7,r9
-	addc    r7,r7,r8		# invert cy (r7 is junk)
-	addi	r3,r3,-4		# adjust res_ptr
-	bdz	L(1)
-
-L(0):	lwzu	r0,4(r4)
-	stwu	r8,4(r3)
-	mullw	r8,r0,r6
-	adde	r7,r8,r10
-	mulhwu	r10,r0,r6
-	lwz     r9,4(r3)
-	addze   r10,r10
-	subf    r8,r7,r9
-	addc    r7,r7,r8		# invert cy (r7 is junk)
-	bdnz	L(0)
-
-L(1):	stw	r8,4(r3)
-	addze	r3,r10
-	blr
-END (__mpn_submul_1)
diff --git a/sysdeps/powerpc/powerpc32/symbol-hacks.h b/sysdeps/powerpc/powerpc32/symbol-hacks.h
deleted file mode 100644
index dbb3141621..0000000000
--- a/sysdeps/powerpc/powerpc32/symbol-hacks.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Hacks needed for symbol manipulation.  powerpc version.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/wordsize-32/divdi3-symbol-hacks.h>
-
-#include_next "symbol-hacks.h"
diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h
deleted file mode 100644
index f92ab2cded..0000000000
--- a/sysdeps/powerpc/powerpc32/sysdep.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Assembly macros for 32-bit PowerPC.
-   Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/sysdep.h>
-
-#ifdef __ASSEMBLER__
-
-/* If compiled for profiling, call `_mcount' at the start of each
-   function.  */
-#ifdef	PROF
-/* The mcount code relies on a the return address being on the stack
-   to locate our caller and so it can restore it; so store one just
-   for its benefit.  */
-# define CALL_MCOUNT							      \
-  mflr  r0;								      \
-  stw   r0,4(r1);							      \
-  cfi_offset (lr, 4);							      \
-  bl    JUMPTARGET(_mcount);
-#else  /* PROF */
-# define CALL_MCOUNT		/* Do nothing.  */
-#endif /* PROF */
-
-#define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);						      \
-  .type C_SYMBOL_NAME(name),@function;					      \
-  .align ALIGNARG(2);							      \
-  C_LABEL(name)								      \
-  cfi_startproc;							      \
-  CALL_MCOUNT
-
-/* helper macro for accessing the 32-bit powerpc GOT. */
-
-#define	SETUP_GOT_ACCESS(regname,GOT_LABEL)				      \
-	bcl	20,31,GOT_LABEL	;					      \
-GOT_LABEL:			;					      \
-	mflr	(regname)
-
-#define EALIGN_W_0  /* No words to insert.  */
-#define EALIGN_W_1  nop
-#define EALIGN_W_2  nop;nop
-#define EALIGN_W_3  nop;nop;nop
-#define EALIGN_W_4  EALIGN_W_3;nop
-#define EALIGN_W_5  EALIGN_W_4;nop
-#define EALIGN_W_6  EALIGN_W_5;nop
-#define EALIGN_W_7  EALIGN_W_6;nop
-
-/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
-   past a 2^align boundary.  */
-#ifdef PROF
-# define EALIGN(name, alignt, words)					      \
-  .globl C_SYMBOL_NAME(name);						      \
-  .type C_SYMBOL_NAME(name),@function;					      \
-  .align ALIGNARG(2);							      \
-  C_LABEL(name)								      \
-  cfi_startproc;							      \
-  CALL_MCOUNT								      \
-  b 0f;									      \
-  .align ALIGNARG(alignt);						      \
-  EALIGN_W_##words;							      \
-  0:
-#else /* PROF */
-# define EALIGN(name, alignt, words)					      \
-  .globl C_SYMBOL_NAME(name);						      \
-  .type C_SYMBOL_NAME(name),@function;					      \
-  .align ALIGNARG(alignt);						      \
-  EALIGN_W_##words;							      \
-  C_LABEL(name)								      \
-  cfi_startproc;
-#endif
-
-#undef	END
-#define END(name)							      \
-  cfi_endproc;								      \
-  ASM_SIZE_DIRECTIVE(name)
-
-#if ! IS_IN(rtld) && defined (ENABLE_LOCK_ELISION)
-# define ABORT_TRANSACTION \
-    cmpwi    2,0;		\
-    beq      1f;		\
-    lwz      0,TM_CAPABLE(2);	\
-    cmpwi    0,0;		\
-    beq	     1f;		\
-    li       11,_ABORT_SYSCALL;	\
-    tabort.  11;		\
-    .align 4;			\
-1:
-#else
-# define ABORT_TRANSACTION
-#endif
-
-#define DO_CALL(syscall)						      \
-    ABORT_TRANSACTION							      \
-    li 0,syscall;							      \
-    sc
-
-#undef JUMPTARGET
-#ifdef PIC
-# define JUMPTARGET(name) name##@plt
-#else
-# define JUMPTARGET(name) name
-#endif
-
-#if defined SHARED && defined PIC && !defined NO_HIDDEN
-# undef HIDDEN_JUMPTARGET
-# define HIDDEN_JUMPTARGET(name) __GI_##name##@local
-#endif
-
-#define PSEUDO(name, syscall_name, args)				      \
-  .section ".text";							      \
-  ENTRY (name)								      \
-    DO_CALL (SYS_ify (syscall_name));
-
-#define PSEUDO_RET							      \
-    bnslr+;								      \
-    b __syscall_error@local
-#define ret PSEUDO_RET
-
-#undef	PSEUDO_END
-#define	PSEUDO_END(name)						      \
-  END (name)
-
-#define PSEUDO_NOERRNO(name, syscall_name, args)			      \
-  .section ".text";							      \
-  ENTRY (name)								      \
-    DO_CALL (SYS_ify (syscall_name));
-
-#define PSEUDO_RET_NOERRNO						      \
-    blr
-#define ret_NOERRNO PSEUDO_RET_NOERRNO
-
-#undef	PSEUDO_END_NOERRNO
-#define	PSEUDO_END_NOERRNO(name)					      \
-  END (name)
-
-#define PSEUDO_ERRVAL(name, syscall_name, args)				      \
-  .section ".text";							      \
-  ENTRY (name)								      \
-    DO_CALL (SYS_ify (syscall_name));
-
-#define PSEUDO_RET_ERRVAL						      \
-    blr
-#define ret_ERRVAL PSEUDO_RET_ERRVAL
-
-#undef	PSEUDO_END_ERRVAL
-#define	PSEUDO_END_ERRVAL(name)						      \
-  END (name)
-
-/* Local labels stripped out by the linker.  */
-#undef L
-#define L(x) .L##x
-
-#define XGLUE(a,b) a##b
-#define GLUE(a,b) XGLUE (a,b)
-#define GENERATE_GOT_LABEL(name) GLUE (.got_label, name)
-
-/* Label in text section.  */
-#define C_TEXT(name) name
-
-#endif	/* __ASSEMBLER__ */
diff --git a/sysdeps/powerpc/powerpc32/tls-macros.h b/sysdeps/powerpc/powerpc32/tls-macros.h
deleted file mode 100644
index ee0eac4858..0000000000
--- a/sysdeps/powerpc/powerpc32/tls-macros.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Include sysdeps/powerpc/tls-macros.h for __TLS_CALL_CLOBBERS  */
-#include_next "tls-macros.h"
-
-/* PowerPC32 Local Exec TLS access.  */
-#define TLS_LE(x)							      \
-  ({ int *__result;							      \
-     asm ("addi %0,2," #x "@tprel"					      \
-	  : "=r" (__result));						      \
-     __result; })
-
-/* PowerPC32 Initial Exec TLS access.  */
-#define TLS_IE(x)							      \
-  ({ int *__result;							      \
-     asm ("bcl 20,31,1f\n1:\t"						      \
-	  "mflr %0\n\t"							      \
-	  "addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t"			      \
-	  "addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n\t"			      \
-	  "lwz %0," #x "@got@tprel(%0)\n\t"				      \
-	  "add %0,%0," #x "@tls"					      \
-	  : "=b" (__result) :						      \
-	  : "lr");							      \
-     __result; })
-
-/* PowerPC32 Local Dynamic TLS access.  */
-#define TLS_LD(x)							      \
-  ({ int *__result;							      \
-     asm ("bcl 20,31,1f\n1:\t"						      \
-	  "mflr 3\n\t"							      \
-	  "addis 3,3,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t"			      \
-	  "addi 3,3,_GLOBAL_OFFSET_TABLE_-1b@l\n\t"			      \
-	  "addi 3,3," #x "@got@tlsld\n\t"				      \
-	  "bl __tls_get_addr@plt\n\t"					      \
-	  "addi %0,3," #x "@dtprel"					      \
-	  : "=r" (__result) :						      \
-	  : "3", __TLS_CALL_CLOBBERS);					      \
-     __result; })
-
-/* PowerPC32 General Dynamic TLS access.  */
-#define TLS_GD(x)							      \
-  ({ register int *__result __asm__ ("r3");				      \
-     asm ("bcl 20,31,1f\n1:\t"						      \
-	  "mflr 3\n\t"							      \
-	  "addis 3,3,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t"			      \
-	  "addi 3,3,_GLOBAL_OFFSET_TABLE_-1b@l\n\t"			      \
-	  "addi 3,3," #x "@got@tlsgd\n\t"				      \
-	  "bl __tls_get_addr@plt"					      \
-	  : "=r" (__result) :						      \
-	  : __TLS_CALL_CLOBBERS);					      \
-     __result; })
diff --git a/sysdeps/powerpc/powerpc32/tst-audit.h b/sysdeps/powerpc/powerpc32/tst-audit.h
deleted file mode 100644
index 2e5e0c91d5..0000000000
--- a/sysdeps/powerpc/powerpc32/tst-audit.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Definitions for testing PLT entry/exit auditing.  PowerPC32 version.
-
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define pltenter la_ppc32_gnu_pltenter
-#define pltexit la_ppc32_gnu_pltexit
-#define La_regs La_ppc32_regs
-#define La_retval La_ppc32_retval
-#define int_retval lrv_r3
diff --git a/sysdeps/powerpc/powerpc64/970/Implies b/sysdeps/powerpc/powerpc64/970/Implies
deleted file mode 100644
index bedb20b65c..0000000000
--- a/sysdeps/powerpc/powerpc64/970/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power4/fpu
-powerpc/powerpc64/power4
diff --git a/sysdeps/powerpc/powerpc64/Implies b/sysdeps/powerpc/powerpc64/Implies
deleted file mode 100644
index a8cae95f9d..0000000000
--- a/sysdeps/powerpc/powerpc64/Implies
+++ /dev/null
@@ -1 +0,0 @@
-wordsize-64
diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
deleted file mode 100644
index 9d15db0328..0000000000
--- a/sysdeps/powerpc/powerpc64/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# Powerpc64 specific build options.
-# this is ./sysdeps/powerpc/powerpc64/Makefile
-
-# Each TOC entry takes 8 bytes and the TOC holds up to 2^16 bytes,
-# or 8192 entries.
-# If -fpic is not specified, the latest gcc-3.2.1 now generates
-# different code for call stubs (without the TOC reload).
-# Shared objects need the TOC reload so specify -fpic.
-ifeq (yes,$(build-shared))
-pic-ccflag = -fpic
-endif
-
-# These flags prevent FPU or Altivec registers from being used,
-# for code called in contexts that is not allowed to touch those registers.
-# Stupid GCC requires us to pass all these ridiculous switches.  We need to
-# pass the -mno-* switches as well to prevent the compiler from attempting
-# to emit altivec or vsx instructions, especially when the registers aren't
-# available.
-no-special-regs := $(sort $(foreach n,40 41 50 51 60 61 62 63 \
-				      $(foreach m,2 3 4 5 6 7 8 9, \
-						  3$m 4$m 5$m),\
-				    -ffixed-$n)) \
-		   $(sort $(foreach n,$(foreach m,0 1 2 3 4 5 6 7 8 9,\
-						$m 1$m 2$m) 30 31,\
-				    -ffixed-v$n)) \
-		   -ffixed-vrsave -ffixed-vscr -mno-altivec -mno-vsx
-
-# Need to prevent gcc from using fprs in code used during dynamic linking.
-
-CFLAGS-dl-runtime.os = $(no-special-regs)
-CFLAGS-dl-lookup.os = $(no-special-regs)
-CFLAGS-dl-misc.os = $(no-special-regs)
-CFLAGS-rtld-mempcpy.os = $(no-special-regs)
-CFLAGS-rtld-memmove.os = $(no-special-regs)
-CFLAGS-rtld-memchr.os = $(no-special-regs)
-CFLAGS-rtld-strnlen.os = $(no-special-regs)
-
-ifeq ($(subdir),elf)
-# help gcc inline asm code from dl-machine.h
-+cflags += -finline-limit=2000
-endif
-
-ifeq ($(subdir),gmon)
-# The assembly functions assume that fp arg regs are not trashed.
-# Compiling with -msoft-float ensures that fp regs are not used
-# for moving memory around.
-CFLAGS-mcount.c += $(no-special-regs)
-sysdep_routines += ppc-mcount
-endif
diff --git a/sysdeps/powerpc/powerpc64/__longjmp-common.S b/sysdeps/powerpc/powerpc64/__longjmp-common.S
deleted file mode 100644
index efda025b41..0000000000
--- a/sysdeps/powerpc/powerpc64/__longjmp-common.S
+++ /dev/null
@@ -1,183 +0,0 @@
-/* longjmp for PowerPC64.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#define _SETJMP_H
-#ifdef __NO_VMX__
-# include <novmxsetjmp.h>
-#else
-# include <jmpbuf-offsets.h>
-#endif
-
-#ifndef __NO_VMX__
-	.section	".toc","aw"
-.LC__dl_hwcap:
-# ifdef SHARED
-#  if IS_IN (rtld)
-	/* Inside ld.so we use the local alias to avoid runtime GOT
-	   relocations.  */
-	.tc _rtld_local_ro[TC],_rtld_local_ro
-#  else
-	.tc _rtld_global_ro[TC],_rtld_global_ro
-#  endif
-# else
-	.tc _dl_hwcap[TC],_dl_hwcap
-# endif
-	.section ".text"
-#endif
-
-	.machine	"altivec"
-ENTRY (__longjmp)
-	CALL_MCOUNT 2
-#ifndef __NO_VMX__
-	ld    r5,.LC__dl_hwcap@toc(r2)
-# ifdef SHARED
-	/* Load _rtld-global._dl_hwcap.  */
-	ld    r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
-# else
-	ld    r5,0(r5) /* Load extern _dl_hwcap.  */
-# endif
-	andis.  r5,r5,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-	beq	L(no_vmx)
-	la	r5,((JB_VRS)*8)(3)
-	andi.	r6,r5,0xf
-	lwz	r0,((JB_VRSAVE)*8)(3)	/* 32-bit VRSAVE.  */
-	mtspr	VRSAVE,r0
-	beq+	L(aligned_restore_vmx)
-	addi    r6,r5,16
-	lvsl	v0,0,r5
-	lvx	v1,0,r5
-	addi    r5,r5,32
-	lvx	v21,0,r6
-	vperm   v20,v1,v21,v0
-# define load_misaligned_vmx_lo_loaded(loadvr,lovr,shiftvr,loadgpr,addgpr) \
-	addi    addgpr,addgpr,32; \
-	lvx	lovr,0,loadgpr; \
-	vperm   loadvr,loadvr,lovr,shiftvr;
-	load_misaligned_vmx_lo_loaded(v21,v22,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v22,v23,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v23,v24,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v24,v25,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v25,v26,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v26,v27,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v27,v28,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v28,v29,v0,r6,r5)
-	load_misaligned_vmx_lo_loaded(v29,v30,v0,r5,r6)
-	load_misaligned_vmx_lo_loaded(v30,v31,v0,r6,r5)
-	lvx	v1,0,r5
-	vperm   v31,v31,v1,v0
-	b       L(no_vmx)
-L(aligned_restore_vmx):
-	addi	r6,r5,16
-	lvx	v20,0,r5
-	addi	r5,r5,32
-	lvx	v21,0,r6
-	addi	r6,r6,32
-	lvx	v22,0,r5
-	addi	r5,r5,32
-	lvx	v23,0,r6
-	addi	r6,r6,32
-	lvx	v24,0,r5
-	addi	r5,r5,32
-	lvx	v25,0,r6
-	addi	r6,r6,32
-	lvx	v26,0,r5
-	addi	r5,r5,32
-	lvx	v27,0,r6
-	addi	r6,r6,32
-	lvx	v28,0,r5
-	addi	r5,r5,32
-	lvx	v29,0,r6
-	addi	r6,r6,32
-	lvx	v30,0,r5
-	lvx	v31,0,r6
-L(no_vmx):
-#endif
-#if defined PTR_DEMANGLE || defined CHECK_SP
-	ld r22,(JB_GPR1*8)(r3)
-#else
-	ld r1,(JB_GPR1*8)(r3)
-#endif
-#ifdef PTR_DEMANGLE
-# ifdef CHECK_SP
-	PTR_DEMANGLE3 (r22, r22, r25)
-# else
-	PTR_DEMANGLE3 (r1, r22, r25)
-# endif
-#endif
-#ifdef CHECK_SP
-	CHECK_SP (r22)
-	mr r1,r22
-#endif
-	ld r2,(JB_GPR2*8)(r3)
-	ld r0,(JB_LR*8)(r3)
-	ld r14,((JB_GPRS+0)*8)(r3)
-	lfd fp14,((JB_FPRS+0)*8)(r3)
-#if defined SHARED && !IS_IN (rtld)
-	std r2,FRAME_TOC_SAVE(r1)	/* Restore the callers TOC save area.  */
-#endif
-	ld r15,((JB_GPRS+1)*8)(r3)
-	lfd fp15,((JB_FPRS+1)*8)(r3)
-	ld r16,((JB_GPRS+2)*8)(r3)
-	lfd fp16,((JB_FPRS+2)*8)(r3)
-	ld r17,((JB_GPRS+3)*8)(r3)
-	lfd fp17,((JB_FPRS+3)*8)(r3)
-	ld r18,((JB_GPRS+4)*8)(r3)
-	lfd fp18,((JB_FPRS+4)*8)(r3)
-	ld r19,((JB_GPRS+5)*8)(r3)
-	lfd fp19,((JB_FPRS+5)*8)(r3)
-	ld r20,((JB_GPRS+6)*8)(r3)
-	lfd fp20,((JB_FPRS+6)*8)(r3)
-#ifdef PTR_DEMANGLE
-	PTR_DEMANGLE2 (r0, r25)
-#endif
-     /* longjmp/longjmp_target probe expects longjmp first argument (8@3),
-	second argument (-4@4), and target address (8@0), respectively.  */
-	LIBC_PROBE (longjmp, 3, 8@3, -4@4, 8@0)
-	mtlr r0
-/* 	std r2,FRAME_TOC_SAVE(r1)	Restore the TOC save area.  */
-	ld r21,((JB_GPRS+7)*8)(r3)
-	lfd fp21,((JB_FPRS+7)*8)(r3)
-	ld r22,((JB_GPRS+8)*8)(r3)
-	lfd fp22,((JB_FPRS+8)*8)(r3)
-	lwz r5,((JB_CR*8)+4)(r3)	/* 32-bit CR.  */
-	ld r23,((JB_GPRS+9)*8)(r3)
-	lfd fp23,((JB_FPRS+9)*8)(r3)
-	ld r24,((JB_GPRS+10)*8)(r3)
-	lfd fp24,((JB_FPRS+10)*8)(r3)
-	ld r25,((JB_GPRS+11)*8)(r3)
-	lfd fp25,((JB_FPRS+11)*8)(r3)
-	mtcrf 0xFF,r5
-	ld r26,((JB_GPRS+12)*8)(r3)
-	lfd fp26,((JB_FPRS+12)*8)(r3)
-	ld r27,((JB_GPRS+13)*8)(r3)
-	lfd fp27,((JB_FPRS+13)*8)(r3)
-	ld r28,((JB_GPRS+14)*8)(r3)
-	lfd fp28,((JB_FPRS+14)*8)(r3)
-	ld r29,((JB_GPRS+15)*8)(r3)
-	lfd fp29,((JB_FPRS+15)*8)(r3)
-	ld r30,((JB_GPRS+16)*8)(r3)
-	lfd fp30,((JB_FPRS+16)*8)(r3)
-	ld r31,((JB_GPRS+17)*8)(r3)
-	lfd fp31,((JB_FPRS+17)*8)(r3)
-	LIBC_PROBE (longjmp_target, 3, 8@3, -4@4, 8@0)
-	mr r3,r4
-	blr
-END (__longjmp)
diff --git a/sysdeps/powerpc/powerpc64/__longjmp.S b/sysdeps/powerpc/powerpc64/__longjmp.S
deleted file mode 100644
index 78659d012f..0000000000
--- a/sysdeps/powerpc/powerpc64/__longjmp.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* AltiVec/VMX (new) version of __longjmp for PowerPC64.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-symbols.h>
-#include <rtld-global-offsets.h>
-#include <shlib-compat.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# include "__longjmp-common.S"
-
-#else /* IS_IN (libc) */
-strong_alias (__vmx__longjmp, __longjmp)
-# define __longjmp  __vmx__longjmp
-# include "__longjmp-common.S"
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
-#  define __NO_VMX__
-#  undef __longjmp
-#  undef JB_SIZE
-#  define __longjmp  __novmx__longjmp
-#  include "__longjmp-common.S"
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc64/a2/memcpy.S b/sysdeps/powerpc/powerpc64/a2/memcpy.S
deleted file mode 100644
index ff30898df5..0000000000
--- a/sysdeps/powerpc/powerpc64/a2/memcpy.S
+++ /dev/null
@@ -1,528 +0,0 @@
-/* Optimized memcpy implementation for PowerPC A2.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Michael Brutman <brutman@us.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-
-#define PREFETCH_AHEAD 4        /* no cache lines SRC prefetching ahead  */
-#define ZERO_AHEAD 2            /* no cache lines DST zeroing ahead  */
-
-	.section        ".toc","aw"
-.LC0:
-	.tc __cache_line_size[TC],__cache_line_size
-	.section        ".text"
-	.align 2
-
-
-	.machine  a2
-EALIGN (MEMCPY, 5, 0)
-	CALL_MCOUNT 3
-
-	dcbt    0,r4            /* Prefetch ONE SRC cacheline  */
-	cmpldi  cr1,r5,16       /* is size < 16 ?  */
-	mr      r6,r3           /* Copy dest reg to r6; */
-	blt+    cr1,L(shortcopy)
-
-
-	/* Big copy (16 bytes or more)
-
-	   Figure out how far to the nearest quadword boundary, or if we are
-	   on one already.  Also get the cache line size.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	*/
-
-	neg     r8,r3           /* LS 4 bits = # bytes to 8-byte dest bdry  */
-	ld      r9,.LC0@toc(r2) /* Get cache line size (part 1) */
-	clrldi  r8,r8,64-4      /* align to 16byte boundary  */
-	sub     r7,r4,r3        /* compute offset to src from dest */
-	lwz     r9,0(r9)        /* Get cache line size (part 2) */
-	cmpldi  cr0,r8,0        /* Were we aligned on a 16 byte bdy? */
-	addi    r10,r9,-1       /* Cache line mask */
-	beq+    L(dst_aligned)
-
-
-
-	/* Destination is not aligned on quadword boundary.  Get us to one.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	   r7 - offset to src from dest
-	   r8 - number of bytes to quadword boundary
-	*/
-
-	mtcrf   0x01,r8         /* put #bytes to boundary into cr7  */
-	subf    r5,r8,r5        /* adjust remaining len */
-
-	bf      cr7*4+3,1f
-	lbzx    r0,r7,r6        /* copy 1 byte addr */
-	stb     r0,0(r6)
-	addi    r6,r6,1
-1:
-	bf      cr7*4+2,2f
-	lhzx    r0,r7,r6        /* copy 2 byte addr */
-	sth     r0,0(r6)
-	addi    r6,r6,2
-2:
-	bf      cr7*4+1,4f
-	lwzx    r0,r7,r6        /* copy 4 byte addr */
-	stw     r0,0(r6)
-	addi    r6,r6,4
-4:
-	bf      cr7*4+0,8f
-	ldx     r0,r7,r6        /* copy 8 byte addr */
-	std     r0,0(r6)
-	addi    r6,r6,8
-8:
-	add     r4,r7,r6        /* update src addr */
-
-
-
-	/* Dest is quadword aligned now.
-
-	   Lots of decisions to make.  If we are copying less than a cache
-	   line we won't be here long.  If we are not on a cache line
-	   boundary we need to get there.  And then we need to figure out
-	   how many cache lines ahead to pre-touch.
-
-	   r3 - return value (always)
-	   r4 - current source addr
-	   r5 - copy length
-	   r6 - current dest addr
-	*/
-
-
-	.align 4
-L(dst_aligned):
-	cmpdi	cr0,r9,0	/* Cache line size set? */
-	bne+	cr0,L(cachelineset)
-
-/* __cache_line_size not set: generic byte copy without much optimization */
-	clrldi.	r0,r5,63	/* If length is odd copy one byte */
-	beq	L(cachelinenotset_align)
-	lbz	r7,0(r4)	/* Read one byte from source */
-	addi	r5,r5,-1	/* Update length */
-	addi	r4,r4,1		/* Update source pointer address */
-	stb	r7,0(r6)	/* Store one byte at dest */
-	addi	r6,r6,1		/* Update dest pointer address */
-L(cachelinenotset_align):
-	cmpdi	cr7,r5,0	/* If length is 0 return */
-	beqlr	cr7
-	ori	r2,r2,0		/* Force a new dispatch group */
-L(cachelinenotset_loop):
-	addic.	r5,r5,-2	/* Update length */
-	lbz	r7,0(r4)	/* Load 2 bytes from source */
-	lbz	r8,1(r4)
-	addi	r4,r4,2		/* Update source pointer address */
-	stb	r7,0(r6)	/* Store 2 bytes on dest */
-	stb	r8,1(r6)
-	addi	r6,r6,2		/* Update dest pointer address */
-	bne	L(cachelinenotset_loop)
-	blr
-
-
-L(cachelineset):
-	cmpd	cr5,r5,r10       /* Less than a cacheline to go? */
-
-	neg     r7,r6           /* How far to next cacheline bdy? */
-
-	addi    r6,r6,-8        /* prepare for stdu  */
-	cmpdi   cr0,r9,128
-	addi    r4,r4,-8        /* prepare for ldu  */
-
-
-	ble+    cr5,L(lessthancacheline)
-
-	beq-    cr0,L(big_lines) /* 128 byte line code */
-
-
-
-	/* More than a cacheline left to go, and using 64 byte cachelines */
-
-	clrldi  r7,r7,64-6      /* How far to next cacheline bdy? */
-
-	cmpldi  cr6,r7,0        /* Are we on a cacheline bdy already? */
-
-	/* Reduce total len by what it takes to get to the next cache line */
-	subf    r5,r7,r5
-	srdi    r7,r7,4         /* How many qws to get to the line bdy? */
-
-	/* How many full cache lines to copy after getting to a line bdy? */
-	srdi    r10,r5,6
-
-	cmpldi  r10,0           /* If no full cache lines to copy ... */
-	li      r11,0           /* number cachelines to copy with prefetch  */
-	beq     L(nocacheprefetch)
-
-
-	/* We are here because we have at least one full cache line to copy,
-	   and therefore some pre-touching to do. */
-
-	cmpldi  r10,PREFETCH_AHEAD
-	li      r12,64+8        /* prefetch distance  */
-	ble     L(lessthanmaxprefetch)
-
-	/* We can only do so much pre-fetching.  R11 will have the count of
-	   lines left to prefetch after the initial batch of prefetches
-	   are executed. */
-
-	subi    r11,r10,PREFETCH_AHEAD
-	li      r10,PREFETCH_AHEAD
-
-L(lessthanmaxprefetch):
-	mtctr   r10
-
-	/* At this point r10/ctr hold the number of lines to prefetch in this
-	   initial batch, and r11 holds any remainder. */
-
-L(prefetchSRC):
-	dcbt    r12,r4
-	addi    r12,r12,64
-	bdnz    L(prefetchSRC)
-
-
-	/* Prefetching is done, or was not needed.
-
-	   cr6 - are we on a cacheline boundary already?
-	   r7  - number of quadwords to the next cacheline boundary
-	*/
-
-L(nocacheprefetch):
-	mtctr   r7
-
-	cmpldi  cr1,r5,64   /* Less than a cache line to copy? */
-
-	/* How many bytes are left after we copy whatever full
-	   cache lines we can get? */
-	clrldi  r5,r5,64-6
-
-	beq     cr6,L(cachelinealigned)
-
-
-	/* Copy quadwords up to the next cacheline boundary */
-
-L(aligntocacheline):
-	ld      r9,0x08(r4)
-	ld      r7,0x10(r4)
-	addi    r4,r4,0x10
-	std     r9,0x08(r6)
-	stdu    r7,0x10(r6)
-	bdnz    L(aligntocacheline)
-
-
-	.align 4
-L(cachelinealigned):            /* copy while cache lines  */
-
-	blt-    cr1,L(lessthancacheline) /* size <64  */
-
-L(outerloop):
-	cmpdi   r11,0
-	mtctr   r11
-	beq-    L(endloop)
-
-	li      r11,64*ZERO_AHEAD +8    /* DCBZ dist  */
-
-	.align  4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-L(loop):                        /* Copy aligned body  */
-	dcbt    r12,r4          /* PREFETCH SOURCE some cache lines ahead  */
-	ld      r9, 0x08(r4)
-	dcbz    r11,r6
-	ld      r7, 0x10(r4)
-	ld      r8, 0x18(r4)
-	ld      r0, 0x20(r4)
-	std     r9, 0x08(r6)
-	std     r7, 0x10(r6)
-	std     r8, 0x18(r6)
-	std     r0, 0x20(r6)
-	ld      r9, 0x28(r4)
-	ld      r7, 0x30(r4)
-	ld      r8, 0x38(r4)
-	ld      r0, 0x40(r4)
-	addi    r4, r4,0x40
-	std     r9, 0x28(r6)
-	std     r7, 0x30(r6)
-	std     r8, 0x38(r6)
-	stdu    r0, 0x40(r6)
-
-	bdnz    L(loop)
-
-
-L(endloop):
-	cmpdi   r10,0
-	beq-    L(endloop2)
-	mtctr   r10
-
-L(loop2):                       /* Copy aligned body  */
-	ld      r9, 0x08(r4)
-	ld      r7, 0x10(r4)
-	ld      r8, 0x18(r4)
-	ld      r0, 0x20(r4)
-	std     r9, 0x08(r6)
-	std     r7, 0x10(r6)
-	std     r8, 0x18(r6)
-	std     r0, 0x20(r6)
-	ld      r9, 0x28(r4)
-	ld      r7, 0x30(r4)
-	ld      r8, 0x38(r4)
-	ld      r0, 0x40(r4)
-	addi    r4, r4,0x40
-	std     r9, 0x28(r6)
-	std     r7, 0x30(r6)
-	std     r8, 0x38(r6)
-	stdu    r0, 0x40(r6)
-
-	bdnz    L(loop2)
-L(endloop2):
-
-
-	.align 4
-L(lessthancacheline):           /* Was there less than cache to do ?  */
-	cmpldi  cr0,r5,16
-	srdi    r7,r5,4         /* divide size by 16  */
-	blt-    L(do_lt16)
-	mtctr   r7
-
-L(copy_remaining):
-	ld      r8,0x08(r4)
-	ld      r7,0x10(r4)
-	addi    r4,r4,0x10
-	std     r8,0x08(r6)
-	stdu    r7,0x10(r6)
-	bdnz    L(copy_remaining)
-
-L(do_lt16):                     /* less than 16 ?  */
-	cmpldi  cr0,r5,0        /* copy remaining bytes (0-15)  */
-	beqlr+                  /* no rest to copy  */
-	addi    r4,r4,8
-	addi    r6,r6,8
-
-L(shortcopy):                   /* SIMPLE COPY to handle size =< 15 bytes  */
-	mtcrf   0x01,r5
-	sub     r7,r4,r6
-	bf-     cr7*4+0,8f
-	ldx     r0,r7,r6        /* copy 8 byte  */
-	std     r0,0(r6)
-	addi    r6,r6,8
-8:
-	bf      cr7*4+1,4f
-	lwzx    r0,r7,r6        /* copy 4 byte  */
-	stw     r0,0(r6)
-	addi    r6,r6,4
-4:
-	bf      cr7*4+2,2f
-	lhzx    r0,r7,r6        /* copy 2 byte  */
-	sth     r0,0(r6)
-	addi    r6,r6,2
-2:
-	bf      cr7*4+3,1f
-	lbzx    r0,r7,r6        /* copy 1 byte  */
-	stb     r0,0(r6)
-1:
-	blr
-
-
-
-
-
-	/* Similar to above, but for use with 128 byte lines. */
-
-
-L(big_lines):
-
-	clrldi  r7,r7,64-7      /* How far to next cacheline bdy? */
-
-	cmpldi  cr6,r7,0        /* Are we on a cacheline bdy already? */
-
-	/* Reduce total len by what it takes to get to the next cache line */
-	subf    r5,r7,r5
-	srdi    r7,r7,4         /* How many qws to get to the line bdy? */
-
-	/* How many full cache lines to copy after getting to a line bdy? */
-	srdi    r10,r5,7
-
-	cmpldi  r10,0           /* If no full cache lines to copy ... */
-	li      r11,0           /* number cachelines to copy with prefetch  */
-	beq     L(nocacheprefetch_128)
-
-
-	/* We are here because we have at least one full cache line to copy,
-	   and therefore some pre-touching to do. */
-
-	cmpldi  r10,PREFETCH_AHEAD
-	li      r12,128+8       /* prefetch distance  */
-	ble     L(lessthanmaxprefetch_128)
-
-	/* We can only do so much pre-fetching.  R11 will have the count of
-	   lines left to prefetch after the initial batch of prefetches
-	   are executed. */
-
-	subi    r11,r10,PREFETCH_AHEAD
-	li      r10,PREFETCH_AHEAD
-
-L(lessthanmaxprefetch_128):
-	mtctr   r10
-
-	/* At this point r10/ctr hold the number of lines to prefetch in this
-	   initial batch, and r11 holds any remainder. */
-
-L(prefetchSRC_128):
-	dcbt    r12,r4
-	addi    r12,r12,128
-	bdnz    L(prefetchSRC_128)
-
-
-	/* Prefetching is done, or was not needed.
-
-	   cr6 - are we on a cacheline boundary already?
-	   r7  - number of quadwords to the next cacheline boundary
-	*/
-
-L(nocacheprefetch_128):
-	mtctr   r7
-
-	cmpldi  cr1,r5,128  /* Less than a cache line to copy? */
-
-	/* How many bytes are left after we copy whatever full
-	   cache lines we can get? */
-	clrldi  r5,r5,64-7
-
-	beq     cr6,L(cachelinealigned_128)
-
-
-	/* Copy quadwords up to the next cacheline boundary */
-
-L(aligntocacheline_128):
-	ld      r9,0x08(r4)
-	ld      r7,0x10(r4)
-	addi    r4,r4,0x10
-	std     r9,0x08(r6)
-	stdu    r7,0x10(r6)
-	bdnz    L(aligntocacheline_128)
-
-
-L(cachelinealigned_128):        /* copy while cache lines  */
-
-	blt-    cr1,L(lessthancacheline) /* size <128  */
-
-L(outerloop_128):
-	cmpdi   r11,0
-	mtctr   r11
-	beq-    L(endloop_128)
-
-	li      r11,128*ZERO_AHEAD +8    /* DCBZ dist  */
-
-	.align  4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-L(loop_128):                    /* Copy aligned body  */
-	dcbt    r12,r4          /* PREFETCH SOURCE some cache lines ahead  */
-	ld      r9, 0x08(r4)
-	dcbz    r11,r6
-	ld      r7, 0x10(r4)
-	ld      r8, 0x18(r4)
-	ld      r0, 0x20(r4)
-	std     r9, 0x08(r6)
-	std     r7, 0x10(r6)
-	std     r8, 0x18(r6)
-	std     r0, 0x20(r6)
-	ld      r9, 0x28(r4)
-	ld      r7, 0x30(r4)
-	ld      r8, 0x38(r4)
-	ld      r0, 0x40(r4)
-	std     r9, 0x28(r6)
-	std     r7, 0x30(r6)
-	std     r8, 0x38(r6)
-	std     r0, 0x40(r6)
-	ld      r9, 0x48(r4)
-	ld      r7, 0x50(r4)
-	ld      r8, 0x58(r4)
-	ld      r0, 0x60(r4)
-	std     r9, 0x48(r6)
-	std     r7, 0x50(r6)
-	std     r8, 0x58(r6)
-	std     r0, 0x60(r6)
-	ld      r9, 0x68(r4)
-	ld      r7, 0x70(r4)
-	ld      r8, 0x78(r4)
-	ld      r0, 0x80(r4)
-	addi    r4, r4,0x80
-	std     r9, 0x68(r6)
-	std     r7, 0x70(r6)
-	std     r8, 0x78(r6)
-	stdu    r0, 0x80(r6)
-
-	bdnz    L(loop_128)
-
-
-L(endloop_128):
-	cmpdi   r10,0
-	beq-    L(endloop2_128)
-	mtctr   r10
-
-L(loop2_128):                       /* Copy aligned body  */
-	ld      r9, 0x08(r4)
-	ld      r7, 0x10(r4)
-	ld      r8, 0x18(r4)
-	ld      r0, 0x20(r4)
-	std     r9, 0x08(r6)
-	std     r7, 0x10(r6)
-	std     r8, 0x18(r6)
-	std     r0, 0x20(r6)
-	ld      r9, 0x28(r4)
-	ld      r7, 0x30(r4)
-	ld      r8, 0x38(r4)
-	ld      r0, 0x40(r4)
-	std     r9, 0x28(r6)
-	std     r7, 0x30(r6)
-	std     r8, 0x38(r6)
-	std     r0, 0x40(r6)
-	ld      r9, 0x48(r4)
-	ld      r7, 0x50(r4)
-	ld      r8, 0x58(r4)
-	ld      r0, 0x60(r4)
-	std     r9, 0x48(r6)
-	std     r7, 0x50(r6)
-	std     r8, 0x58(r6)
-	std     r0, 0x60(r6)
-	ld      r9, 0x68(r4)
-	ld      r7, 0x70(r4)
-	ld      r8, 0x78(r4)
-	ld      r0, 0x80(r4)
-	addi    r4, r4,0x80
-	std     r9, 0x68(r6)
-	std     r7, 0x70(r6)
-	std     r8, 0x78(r6)
-	stdu    r0, 0x80(r6)
-
-	bdnz    L(loop2_128)
-L(endloop2_128):
-
-	b       L(lessthancacheline)
-
-
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/addmul_1.S b/sysdeps/powerpc/powerpc64/addmul_1.S
deleted file mode 100644
index b4b052141d..0000000000
--- a/sysdeps/powerpc/powerpc64/addmul_1.S
+++ /dev/null
@@ -1,208 +0,0 @@
-/* PowerPC64 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
-   the result to a second limb vector.
-   Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef USE_AS_SUBMUL
-# define FUNC        __mpn_submul_1
-# define ADDSUBC     subfe
-# define ADDSUB      subfc
-#else
-# define FUNC        __mpn_addmul_1
-# define ADDSUBC     adde
-# define ADDSUB      addc
-#endif
-
-#define RP  r3
-#define UP  r4
-#define N   r5
-#define VL  r6
-
-EALIGN(FUNC, 5, 0)
-	std	r31, -8(r1)
-	rldicl.	r0, N, 0, 62
-	std	r30, -16(r1)
-	cmpdi	VL, r0, 2
-	std	r29, -24(r1)
-	addi	N, N, 3
-	std	r28, -32(r1)
-	srdi	N, N, 2
-	std	r27, -40(r1)
-	mtctr	N
-	beq	cr0, L(b00)
-	blt	cr6, L(b01)
-	beq	cr6, L(b10)
-
-L(b11):	ld	r9, 0(UP)
-	ld	r28, 0(RP)
-	mulld	r0, r9, VL
-	mulhdu	r12, r9, VL
-	ADDSUB	r0, r0, r28
-	std	r0, 0(RP)
-	addi	RP, RP, 8
-	ld	r9, 8(UP)
-	ld	r27, 16(UP)
-	addi	UP, UP, 24
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-#endif
-	b	L(bot)
-
-	.align	4
-L(b00):	ld	r9, 0(UP)
-	ld	r27, 8(UP)
-	ld	r28, 0(RP)
-	ld	r29, 8(RP)
-	mulld	r0, r9, VL
-	mulhdu	N, r9, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	addc	r7, r7, N
-	addze	r12, r8
-	ADDSUB	r0, r0, r28
-	std	r0, 0(RP)
-	ADDSUBC	r7, r7, r29
-	std	r7, 8(RP)
-	addi	RP, RP, 16
-	ld	r9, 16(UP)
-	ld	r27, 24(UP)
-	addi	UP, UP, 32
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-#endif
-	b	L(bot)
-
-	.align	4
-L(b01):	bdnz	L(gt1)
-	ld	r9, 0(UP)
-	ld	r11, 0(RP)
-	mulld	r0, r9, VL
-	mulhdu	r8, r9, VL
-	ADDSUB	r0, r0, r11
-	std	r0, 0(RP)
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-	addic	r11, r11, 1
-#endif
-	addze	RP, r8
-	blr
-
-L(gt1):	ld	r9, 0(UP)
-	ld	r27, 8(UP)
-	mulld	r0, r9, VL
-	mulhdu	N, r9, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	ld	r9, 16(UP)
-	ld	r28, 0(RP)
-	ld	r29, 8(RP)
-	ld	r30, 16(RP)
-	mulld	r11, r9, VL
-	mulhdu	r10, r9, VL
-	addc	r7, r7, N
-	adde	r11, r11, r8
-	addze	r12, r10
-	ADDSUB	r0, r0, r28
-	std	r0, 0(RP)
-	ADDSUBC	r7, r7, r29
-	std	r7, 8(RP)
-	ADDSUBC	r11, r11, r30
-	std	r11, 16(RP)
-	addi	RP, RP, 24
-	ld	r9, 24(UP)
-	ld	r27, 32(UP)
-	addi	UP, UP, 40
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-#endif
-	b	L(bot)
-
-L(b10):	addic	r0, r0, r0
-	li	r12, 0
-	ld	r9, 0(UP)
-	ld	r27, 8(UP)
-	bdz	L(end)
-	addi	UP, UP, 16
-
-	.align	4
-L(top):	mulld	r0, r9, VL
-	mulhdu	N, r9, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	ld	r9, 0(UP)
-	ld	r28, 0(RP)
-	ld	r27, 8(UP)
-	ld	r29, 8(RP)
-	adde	r0, r0, r12
-	adde	r7, r7, N
-	mulld	N, r9, VL
-	mulhdu	r10, r9, VL
-	mulld	r11, r27, VL
-	mulhdu	r12, r27, VL
-	ld	r9, 16(UP)
-	ld	r30, 16(RP)
-	ld	r27, 24(UP)
-	ld	r31, 24(RP)
-	adde	N, N, r8
-	adde	r11, r11, r10
-	addze	r12, r12
-	ADDSUB	r0, r0, r28
-	std	r0, 0(RP)
-	ADDSUBC	r7, r7, r29
-	std	r7, 8(RP)
-	ADDSUBC	N, N, r30
-	std	N, 16(RP)
-	ADDSUBC	r11, r11, r31
-	std	r11, 24(RP)
-	addi	UP, UP, 32
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-#endif
-	addi	RP, RP, 32
-L(bot):
-#ifdef USE_AS_SUBMUL
-	addic	r11, r11, 1
-#endif
-	bdnz	L(top)
-
-L(end):	mulld	r0, r9, VL
-	mulhdu	N, r9, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	ld	r28, 0(RP)
-	ld	r29, 8(RP)
-	adde	r0, r0, r12
-	adde	r7, r7, N
-	addze	r8, r8
-	ADDSUB	r0, r0, r28
-	std	r0, 0(RP)
-	ADDSUBC	r7, r7, r29
-	std	r7, 8(RP)
-#ifdef USE_AS_SUBMUL
-	subfe	r11, r11, r11
-	addic	r11, r11, 1
-#endif
-	addze	RP, r8
-	ld	r31, -8(r1)
-	ld	r30, -16(r1)
-	ld	r29, -24(r1)
-	ld	r28, -32(r1)
-	ld	r27, -40(r1)
-	blr
-END(FUNC)
diff --git a/sysdeps/powerpc/powerpc64/atomic-machine.h b/sysdeps/powerpc/powerpc64/atomic-machine.h
deleted file mode 100644
index 46df488b3c..0000000000
--- a/sysdeps/powerpc/powerpc64/atomic-machine.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Atomic operations.  PowerPC64 version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*  POWER6 adds a "Mutex Hint" to the Load and Reserve instruction.
-    This is a hint to the hardware to expect additional updates adjacent
-    to the lock word or not.  If we are acquiring a Mutex, the hint
-    should be true. Otherwise we releasing a Mutex or doing a simple
-    atomic operation.  In that case we don't expect additional updates
-    adjacent to the lock word after the Store Conditional and the hint
-    should be false.  */
-
-#if defined _ARCH_PWR6 || defined _ARCH_PWR6X
-# define MUTEX_HINT_ACQ	",1"
-# define MUTEX_HINT_REL	",0"
-#else
-# define MUTEX_HINT_ACQ
-# define MUTEX_HINT_REL
-#endif
-
-#define __HAVE_64B_ATOMICS 1
-#define USE_ATOMIC_COMPILER_BUILTINS 0
-#define ATOMIC_EXCHANGE_USES_CAS 1
-
-/* The 32-bit exchange_bool is different on powerpc64 because the subf
-   does signed 64-bit arithmetic while the lwarx is 32-bit unsigned
-   (a load word and zero (high 32) form) load.
-   In powerpc64 register values are 64-bit by default,  including oldval.
-   The value in old val unknown sign extension, lwarx loads the 32-bit
-   value as unsigned.  So we explicitly clear the high 32 bits in oldval.  */
-#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
-({									      \
-  unsigned int __tmp, __tmp2;						      \
-  __asm __volatile ("   clrldi  %1,%1,32\n"				      \
-		    "1:	lwarx	%0,0,%2" MUTEX_HINT_ACQ "\n"	 	      \
-		    "	subf.	%0,%1,%0\n"				      \
-		    "	bne	2f\n"					      \
-		    "	stwcx.	%4,0,%2\n"				      \
-		    "	bne-	1b\n"					      \
-		    "2:	" __ARCH_ACQ_INSTR				      \
-		    : "=&r" (__tmp), "=r" (__tmp2)			      \
-		    : "b" (mem), "1" (oldval), "r" (newval)		      \
-		    : "cr0", "memory");					      \
-  __tmp != 0;								      \
-})
-
-/*
- * Only powerpc64 processors support Load doubleword and reserve index (ldarx)
- * and Store doubleword conditional indexed (stdcx) instructions.  So here
- * we define the 64-bit forms.
- */
-#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
-({									      \
-  unsigned long	__tmp;							      \
-  __asm __volatile (							      \
-		    "1:	ldarx	%0,0,%1" MUTEX_HINT_ACQ "\n"		      \
-		    "	subf.	%0,%2,%0\n"				      \
-		    "	bne	2f\n"					      \
-		    "	stdcx.	%3,0,%1\n"				      \
-		    "	bne-	1b\n"					      \
-		    "2:	" __ARCH_ACQ_INSTR				      \
-		    : "=&r" (__tmp)					      \
-		    : "b" (mem), "r" (oldval), "r" (newval)		      \
-		    : "cr0", "memory");					      \
-  __tmp != 0;								      \
-})
-
-#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
-  ({									      \
-      __typeof (*(mem)) __tmp;						      \
-      __typeof (mem)  __memp = (mem);					      \
-      __asm __volatile (						      \
-		        "1:	ldarx	%0,0,%1" MUTEX_HINT_ACQ "\n"	      \
-		        "	cmpd	%0,%2\n"			      \
-		        "	bne	2f\n"				      \
-		        "	stdcx.	%3,0,%1\n"			      \
-		        "	bne-	1b\n"				      \
-		        "2:	" __ARCH_ACQ_INSTR			      \
-		        : "=&r" (__tmp)					      \
-		        : "b" (__memp), "r" (oldval), "r" (newval)	      \
-		        : "cr0", "memory");				      \
-      __tmp;								      \
-  })
-
-#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
-  ({									      \
-      __typeof (*(mem)) __tmp;						      \
-      __typeof (mem)  __memp = (mem);					      \
-      __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-		        "1:	ldarx	%0,0,%1" MUTEX_HINT_REL "\n"	      \
-		        "	cmpd	%0,%2\n"			      \
-		        "	bne	2f\n"				      \
-		        "	stdcx.	%3,0,%1\n"			      \
-		        "	bne-	1b\n"				      \
-		        "2:	"					      \
-		        : "=&r" (__tmp)					      \
-		        : "b" (__memp), "r" (oldval), "r" (newval)	      \
-		        : "cr0", "memory");				      \
-      __tmp;								      \
-  })
-
-#define __arch_atomic_exchange_64_acq(mem, value) \
-    ({									      \
-      __typeof (*mem) __val;						      \
-      __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-			"1:	ldarx	%0,0,%2" MUTEX_HINT_ACQ "\n"	      \
-			"	stdcx.	%3,0,%2\n"			      \
-			"	bne-	1b\n"				      \
-		  " " __ARCH_ACQ_INSTR					      \
-			: "=&r" (__val), "=m" (*mem)			      \
-			: "b" (mem), "r" (value), "m" (*mem)		      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_exchange_64_rel(mem, value) \
-    ({									      \
-      __typeof (*mem) __val;						      \
-      __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-			"1:	ldarx	%0,0,%2" MUTEX_HINT_REL "\n"	      \
-			"	stdcx.	%3,0,%2\n"			      \
-			"	bne-	1b"				      \
-			: "=&r" (__val), "=m" (*mem)			      \
-			: "b" (mem), "r" (value), "m" (*mem)		      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_exchange_and_add_64(mem, value) \
-    ({									      \
-      __typeof (*mem) __val, __tmp;					      \
-      __asm __volatile ("1:	ldarx	%0,0,%3\n"			      \
-			"	add	%1,%0,%4\n"			      \
-			"	stdcx.	%1,0,%3\n"			      \
-			"	bne-	1b"				      \
-			: "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-			: "b" (mem), "r" (value), "m" (*mem)		      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_exchange_and_add_64_acq(mem, value) \
-    ({									      \
-      __typeof (*mem) __val, __tmp;					      \
-      __asm __volatile ("1:	ldarx	%0,0,%3" MUTEX_HINT_ACQ "\n"	      \
-			"	add	%1,%0,%4\n"			      \
-			"	stdcx.	%1,0,%3\n"			      \
-			"	bne-	1b\n"				      \
-			__ARCH_ACQ_INSTR				      \
-			: "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-			: "b" (mem), "r" (value), "m" (*mem)		      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_exchange_and_add_64_rel(mem, value) \
-    ({									      \
-      __typeof (*mem) __val, __tmp;					      \
-      __asm __volatile (__ARCH_REL_INSTR "\n"				      \
-			"1:	ldarx	%0,0,%3" MUTEX_HINT_REL "\n"	      \
-			"	add	%1,%0,%4\n"			      \
-			"	stdcx.	%1,0,%3\n"			      \
-			"	bne-	1b"				      \
-			: "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-			: "b" (mem), "r" (value), "m" (*mem)		      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_increment_val_64(mem) \
-    ({									      \
-      __typeof (*(mem)) __val;						      \
-      __asm __volatile ("1:	ldarx	%0,0,%2\n"			      \
-			"	addi	%0,%0,1\n"			      \
-			"	stdcx.	%0,0,%2\n"			      \
-			"	bne-	1b"				      \
-			: "=&b" (__val), "=m" (*mem)			      \
-			: "b" (mem), "m" (*mem)				      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_decrement_val_64(mem) \
-    ({									      \
-      __typeof (*(mem)) __val;						      \
-      __asm __volatile ("1:	ldarx	%0,0,%2\n"			      \
-			"	subi	%0,%0,1\n"			      \
-			"	stdcx.	%0,0,%2\n"			      \
-			"	bne-	1b"				      \
-			: "=&b" (__val), "=m" (*mem)			      \
-			: "b" (mem), "m" (*mem)				      \
-			: "cr0", "memory");				      \
-      __val;								      \
-    })
-
-#define __arch_atomic_decrement_if_positive_64(mem) \
-  ({ int __val, __tmp;							      \
-     __asm __volatile ("1:	ldarx	%0,0,%3\n"			      \
-		       "	cmpdi	0,%0,0\n"			      \
-		       "	addi	%1,%0,-1\n"			      \
-		       "	ble	2f\n"				      \
-		       "	stdcx.	%1,0,%3\n"			      \
-		       "	bne-	1b\n"				      \
-		       "2:	" __ARCH_ACQ_INSTR			      \
-		       : "=&b" (__val), "=&r" (__tmp), "=m" (*mem)	      \
-		       : "b" (mem), "m" (*mem)				      \
-		       : "cr0", "memory");				      \
-     __val;								      \
-  })
-
-/*
- * All powerpc64 processors support the new "light weight"  sync (lwsync).
- */
-#define atomic_read_barrier()	__asm ("lwsync" ::: "memory")
-/*
- * "light weight" sync can also be used for the release barrier.
- */
-#ifndef UP
-# define __ARCH_REL_INSTR	"lwsync"
-#endif
-#define atomic_write_barrier()	__asm ("lwsync" ::: "memory")
-
-/*
- * Include the rest of the atomic ops macros which are common to both
- * powerpc32 and powerpc64.
- */
-#include_next <atomic-machine.h>
diff --git a/sysdeps/powerpc/powerpc64/backtrace.c b/sysdeps/powerpc/powerpc64/backtrace.c
deleted file mode 100644
index 723948d78f..0000000000
--- a/sysdeps/powerpc/powerpc64/backtrace.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Return backtrace of current program state.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <stddef.h>
-#include <string.h>
-#include <signal.h>
-#include <stdint.h>
-
-#include <execinfo.h>
-#include <libc-vdso.h>
-
-/* This is the stack layout we see with every stack frame.
-   Note that every routine is required by the ABI to lay out the stack
-   like this.
-
-            +----------------+        +-----------------+
-    %r1  -> | %r1 last frame--------> | %r1 last frame--->...  --> NULL
-            |                |        |                 |
-            | cr save        |        | cr save	  |
-            |                |        |                 |
-            | (unused)       |        | return address  |
-            +----------------+        +-----------------+
-*/
-struct layout
-{
-  struct layout *next;
-  long int condition_register;
-  void *return_address;
-};
-
-/* Since the signal handler is just like any other function it needs to
-   save/restore its LR and it will save it into callers stack frame.
-   Since a signal handler doesn't have a caller, the kernel creates a
-   dummy frame to make it look like it has a caller.  */
-struct signal_frame_64 {
-#define SIGNAL_FRAMESIZE 128
-  char dummy[SIGNAL_FRAMESIZE];
-  struct ucontext uc;
-  /* We don't care about the rest, since the IP value is at 'uc' field.  */
-};
-
-static inline int
-is_sigtramp_address (void *nip)
-{
-#ifdef SHARED
-  if (nip == VDSO_SYMBOL (sigtramp_rt64))
-    return 1;
-#endif
-  return 0;
-}
-
-int
-__backtrace (void **array, int size)
-{
-  struct layout *current;
-  int count;
-
-  /* Force gcc to spill LR.  */
-  asm volatile ("" : "=l"(current));
-
-  /* Get the address on top-of-stack.  */
-  asm volatile ("ld %0,0(1)" : "=r"(current));
-
-  for (				count = 0;
-       current != NULL && 	count < size;
-       current = current->next, count++)
-    {
-      array[count] = current->return_address;
-
-      /* Check if the symbol is the signal trampoline and get the interrupted
-       * symbol address from the trampoline saved area.  */
-      if (is_sigtramp_address (current->return_address))
-        {
-	  struct signal_frame_64 *sigframe = (struct signal_frame_64*) current;
-          array[++count] = (void*) sigframe->uc.uc_mcontext.gp_regs[PT_NIP];
-	  current = (void*) sigframe->uc.uc_mcontext.gp_regs[PT_R1];
-	}
-    }
-
-  /* It's possible the second-last stack frame can't return
-     (that is, it's __libc_start_main), in which case
-     the CRT startup code will have set its LR to 'NULL'.  */
-  if (count > 0 && array[count-1] == NULL)
-    count--;
-
-  return count;
-}
-weak_alias (__backtrace, backtrace)
-libc_hidden_def (__backtrace)
diff --git a/sysdeps/powerpc/powerpc64/bits/wordsize.h b/sysdeps/powerpc/powerpc64/bits/wordsize.h
deleted file mode 100644
index 04ca9debf0..0000000000
--- a/sysdeps/powerpc/powerpc64/bits/wordsize.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Determine the wordsize from the preprocessor defines.  */
-
-#if defined __powerpc64__
-# define __WORDSIZE	64
-# define __WORDSIZE_TIME64_COMPAT32	1
-#else
-# define __WORDSIZE	32
-# define __WORDSIZE_TIME64_COMPAT32	0
-# define __WORDSIZE32_SIZE_ULONG	0
-# define __WORDSIZE32_PTRDIFF_LONG	0
-#endif
diff --git a/sysdeps/powerpc/powerpc64/bsd-_setjmp.S b/sysdeps/powerpc/powerpc64/bsd-_setjmp.S
deleted file mode 100644
index 86d49b1c6e..0000000000
--- a/sysdeps/powerpc/powerpc64/bsd-_setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* _setjmp moved to setjmp-common.S */
diff --git a/sysdeps/powerpc/powerpc64/bsd-setjmp.S b/sysdeps/powerpc/powerpc64/bsd-setjmp.S
deleted file mode 100644
index 38b734fcb4..0000000000
--- a/sysdeps/powerpc/powerpc64/bsd-setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* setjmp moved to setjmp-common.S */
diff --git a/sysdeps/powerpc/powerpc64/bzero.S b/sysdeps/powerpc/powerpc64/bzero.S
deleted file mode 100644
index 41cfac5127..0000000000
--- a/sysdeps/powerpc/powerpc64/bzero.S
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Optimized bzero `implementation' for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This code was moved into memset.S to solve a double stub call problem.
-   @local would have worked but it is not supported in PowerPC64 asm.  */
diff --git a/sysdeps/powerpc/powerpc64/cell/memcpy.S b/sysdeps/powerpc/powerpc64/cell/memcpy.S
deleted file mode 100644
index 1cc66456e3..0000000000
--- a/sysdeps/powerpc/powerpc64/cell/memcpy.S
+++ /dev/null
@@ -1,246 +0,0 @@
-/* Optimized memcpy implementation for CELL BE PowerPC.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-
-#define PREFETCH_AHEAD 6	/* no cache lines SRC prefetching ahead  */
-#define ZERO_AHEAD 4		/* no cache lines DST zeroing ahead  */
-
-/* memcpy routine optimized for CELL-BE-PPC	v2.0
- *
- * The CELL PPC core has 1 integer unit and 1 load/store unit
- * CELL:
- * 1st level data cache = 32K
- * 2nd level data cache = 512K
- * 3rd level data cache = 0K
- * With 3.2 GHz clockrate the latency to 2nd level cache is >36 clocks,
- * latency to memory is >400 clocks
- * To improve copy performance we need to prefetch source data
- * far ahead to hide this latency
- * For best performance instruction forms ending in "." like "andi."
- * should be avoided as the are implemented in microcode on CELL.
- * The below code is loop unrolled for the CELL cache line of 128 bytes
- */
-
-.align  7
-
-EALIGN (MEMCPY, 5, 0)
-	CALL_MCOUNT 3
-
-	dcbt	0,r4		/* Prefetch ONE SRC cacheline  */
-	cmpldi	cr1,r5,16	/* is size < 16 ?  */
-	mr	r6,r3
-	blt+	cr1,.Lshortcopy
-
-.Lbigcopy:
-	neg	r8,r3		/* LS 3 bits = # bytes to 8-byte dest bdry  */
-	clrldi  r8,r8,64-4	/* align to 16byte boundary  */
-	sub     r7,r4,r3
-	cmpldi	cr0,r8,0
-	beq+	.Ldst_aligned
-
-.Ldst_unaligned:
-	mtcrf	0x01,r8		/* put #bytes to boundary into cr7  */
-	subf	r5,r8,r5
-
-	bf	cr7*4+3,1f
-	lbzx	r0,r7,r6	/* copy 1 byte  */
-	stb	r0,0(r6)
-	addi	r6,r6,1
-1:	bf	cr7*4+2,2f
-	lhzx	r0,r7,r6	/* copy 2 byte  */
-	sth	r0,0(r6)
-	addi	r6,r6,2
-2:	bf	cr7*4+1,4f
-	lwzx	r0,r7,r6	/* copy 4 byte  */
-	stw	r0,0(r6)
-	addi	r6,r6,4
-4:	bf	cr7*4+0,8f
-	ldx	r0,r7,r6	/* copy 8 byte  */
-	std	r0,0(r6)
-	addi	r6,r6,8
-8:
-	add	r4,r7,r6
-
-.Ldst_aligned:
-
-	cmpdi	cr5,r5,128-1
-
-	neg	r7,r6
-	addi	r6,r6,-8	/* prepare for stdu  */
-	addi	r4,r4,-8	/* prepare for ldu  */
-
-	clrldi  r7,r7,64-7	/* align to cacheline boundary  */
-	ble+	cr5,.Llessthancacheline
-
-	cmpldi	cr6,r7,0
-	subf	r5,r7,r5
-	srdi	r7,r7,4		/* divide size by 16  */
-	srdi	r10,r5,7	/* number of cache lines to copy  */
-
-	cmpldi	r10,0
-	li	r11,0		/* number cachelines to copy with prefetch  */
-	beq	.Lnocacheprefetch
-
-	cmpldi	r10,PREFETCH_AHEAD
-	li	r12,128+8	/* prefetch distance  */
-	ble	.Llessthanmaxprefetch
-
-	subi	r11,r10,PREFETCH_AHEAD
-	li	r10,PREFETCH_AHEAD
-
-.Llessthanmaxprefetch:
-	mtctr	r10
-
-.LprefetchSRC:
-	dcbt    r12,r4
-	addi    r12,r12,128
-	bdnz    .LprefetchSRC
-
-.Lnocacheprefetch:
-	mtctr	r7
-	cmpldi	cr1,r5,128
-	clrldi  r5,r5,64-7
-	beq	cr6,.Lcachelinealigned
-
-.Laligntocacheline:
-	ld	r9,0x08(r4)
-	ldu	r7,0x10(r4)
-	std	r9,0x08(r6)
-	stdu	r7,0x10(r6)
-	bdnz	.Laligntocacheline
-
-
-.Lcachelinealigned:		/* copy while cache lines  */
-
-	blt-	cr1,.Llessthancacheline	/* size <128  */
-
-.Louterloop:
-	cmpdi   r11,0
-	mtctr	r11
-	beq-	.Lendloop
-
-	li	r11,128*ZERO_AHEAD +8	/* DCBZ dist  */
-
-.align	4
-	/* Copy whole cachelines, optimized by prefetching SRC cacheline  */
-.Lloop:				/* Copy aligned body  */
-	dcbt	r12,r4		/* PREFETCH SOURCE some cache lines ahead  */
-	ld	r9, 0x08(r4)
-	dcbz	r11,r6
-	ld	r7, 0x10(r4)	/* 4 register stride copy is optimal  */
-	ld	r8, 0x18(r4)	/* to hide 1st level cache latency.  */
-	ld	r0, 0x20(r4)
-	std	r9, 0x08(r6)
-	std	r7, 0x10(r6)
-	std	r8, 0x18(r6)
-	std	r0, 0x20(r6)
-	ld	r9, 0x28(r4)
-	ld	r7, 0x30(r4)
-	ld	r8, 0x38(r4)
-	ld	r0, 0x40(r4)
-	std	r9, 0x28(r6)
-	std	r7, 0x30(r6)
-	std	r8, 0x38(r6)
-	std	r0, 0x40(r6)
-	ld	r9, 0x48(r4)
-	ld	r7, 0x50(r4)
-	ld	r8, 0x58(r4)
-	ld	r0, 0x60(r4)
-	std	r9, 0x48(r6)
-	std	r7, 0x50(r6)
-	std	r8, 0x58(r6)
-	std	r0, 0x60(r6)
-	ld	r9, 0x68(r4)
-	ld	r7, 0x70(r4)
-	ld	r8, 0x78(r4)
-	ldu	r0, 0x80(r4)
-	std	r9, 0x68(r6)
-	std	r7, 0x70(r6)
-	std	r8, 0x78(r6)
-	stdu	r0, 0x80(r6)
-
-	bdnz	.Lloop
-
-.Lendloop:
-	cmpdi	r10,0
-	sldi	r10,r10,2	/* adjust from 128 to 32 byte stride  */
-	beq-	.Lendloop2
-	mtctr	r10
-
-.Lloop2:			/* Copy aligned body  */
-	ld	r9, 0x08(r4)
-	ld	r7, 0x10(r4)
-	ld	r8, 0x18(r4)
-	ldu	r0, 0x20(r4)
-	std	r9, 0x08(r6)
-	std	r7, 0x10(r6)
-	std	r8, 0x18(r6)
-	stdu	r0, 0x20(r6)
-
-	bdnz	.Lloop2
-.Lendloop2:
-
-.Llessthancacheline:		/* less than cache to do ?  */
-	cmpldi	cr0,r5,16
-	srdi	r7,r5,4		/* divide size by 16  */
-	blt-	.Ldo_lt16
-	mtctr	r7
-
-.Lcopy_remaining:
-	ld	r8,0x08(r4)
-	ldu	r7,0x10(r4)
-	std	r8,0x08(r6)
-	stdu	r7,0x10(r6)
-	bdnz	.Lcopy_remaining
-
-.Ldo_lt16:			/* less than 16 ?  */
-	cmpldi	cr0,r5,0	/* copy remaining bytes (0-15)  */
-	beqlr+			/* no rest to copy  */
-	addi	r4,r4,8
-	addi	r6,r6,8
-
-.Lshortcopy:			/* SIMPLE COPY to handle size =< 15 bytes  */
-	mtcrf	0x01,r5
-	sub	r7,r4,r6
-	bf-	cr7*4+0,8f
-	ldx	r0,r7,r6	/* copy 8 byte  */
-	std	r0,0(r6)
-	addi	r6,r6,8
-8:
-	bf	cr7*4+1,4f
-	lwzx	r0,r7,r6	/* copy 4 byte  */
-	stw	r0,0(r6)
-	addi	r6,r6,4
-4:
-	bf	cr7*4+2,2f
-	lhzx	r0,r7,r6	/* copy 2 byte  */
-	sth	r0,0(r6)
-	addi	r6,r6,2
-2:
-	bf	cr7*4+3,1f
-	lbzx	r0,r7,r6	/* copy 1 byte  */
-	stb	r0,0(r6)
-1:	blr
-
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
deleted file mode 100644
index 7632a7be04..0000000000
--- a/sysdeps/powerpc/powerpc64/configure
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
- # Local configure fragment for sysdeps/powerpc/powerpc64.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for support for overlapping .opd entries" >&5
-$as_echo_n "checking for support for overlapping .opd entries... " >&6; }
-if ${libc_cv_overlapping_opd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  libc_cv_overlapping_opd=no
-echo 'void foo (void) {}' > conftest.c
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5'
-  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-  if grep '\.TOC\.@tocbase' conftest.s > /dev/null; then
-    if grep '\.TOC\.@tocbase[ 	]*,[ 	]*0' conftest.s > /dev/null; then
-      :
-    else
-      libc_cv_overlapping_opd=yes
-    fi
-  fi
-fi
-rm -f conftest.c conftest.s
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_overlapping_opd" >&5
-$as_echo "$libc_cv_overlapping_opd" >&6; }
-if test x$libc_cv_overlapping_opd = xyes; then
-  $as_echo "#define USE_PPC64_OVERLAPPING_OPD 1" >>confdefs.h
-
-fi
diff --git a/sysdeps/powerpc/powerpc64/configure.ac b/sysdeps/powerpc/powerpc64/configure.ac
deleted file mode 100644
index f309ba35a8..0000000000
--- a/sysdeps/powerpc/powerpc64/configure.ac
+++ /dev/null
@@ -1,23 +0,0 @@
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/powerpc/powerpc64.
-
-AC_CACHE_CHECK(for support for overlapping .opd entries,
-libc_cv_overlapping_opd, [dnl
-libc_cv_overlapping_opd=no
-echo 'void foo (void) {}' > conftest.c
-if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
-changequote(,)dnl
-  if grep '\.TOC\.@tocbase' conftest.s > /dev/null; then
-    if grep '\.TOC\.@tocbase[ 	]*,[ 	]*0' conftest.s > /dev/null; then
-      :
-    else
-      libc_cv_overlapping_opd=yes
-    fi
-  fi
-changequote([,])dnl
-fi
-rm -f conftest.c conftest.s
-])
-if test x$libc_cv_overlapping_opd = xyes; then
-  AC_DEFINE(USE_PPC64_OVERLAPPING_OPD)
-fi
diff --git a/sysdeps/powerpc/powerpc64/crti.S b/sysdeps/powerpc/powerpc64/crti.S
deleted file mode 100644
index fa4f5833ef..0000000000
--- a/sysdeps/powerpc/powerpc64/crti.S
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Special .init and .fini section support for PowerPC64.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* crti.S puts a function prologue at the beginning of the .init and
-   .fini sections and defines global symbols for those addresses, so
-   they can be called as functions.  The symbols _init and _fini are
-   magic and cause the linker to emit DT_INIT and DT_FINI.  */
-
-#include <libc-symbols.h>
-#include <sysdep.h>
-
-#ifndef PREINIT_FUNCTION
-# define PREINIT_FUNCTION __gmon_start__
-#endif
-
-#ifndef PREINIT_FUNCTION_WEAK
-# define PREINIT_FUNCTION_WEAK 1
-#endif
-
-#if PREINIT_FUNCTION_WEAK
-	weak_extern (PREINIT_FUNCTION)
-#else
-	.hidden PREINIT_FUNCTION
-#endif
-
-#if PREINIT_FUNCTION_WEAK
-	.section ".toc", "aw"
-.LC0:
-	.tc PREINIT_FUNCTION[TC], PREINIT_FUNCTION
-#endif
-	.section ".init", "ax", @progbits
-	ENTRY_2(_init)
-	.align ALIGNARG (2)
-BODY_LABEL (_init):
-	LOCALENTRY(_init)
-	mflr 0
-	std 0, FRAME_LR_SAVE(r1)
-	stdu r1, -FRAME_MIN_SIZE_PARM(r1)
-#if PREINIT_FUNCTION_WEAK
-	addis r9, r2, .LC0@toc@ha
-	ld r0, .LC0@toc@l(r9)
-	cmpdi cr7, r0, 0
-	beq+ cr7, 1f
-#endif
-	bl JUMPTARGET (PREINIT_FUNCTION)
-	nop
-1:
-
-	.section ".fini", "ax", @progbits
-	ENTRY_2(_fini)
-	.align ALIGNARG (2)
-BODY_LABEL (_fini):
-	LOCALENTRY(_fini)
-	mflr 0
-	std 0, FRAME_LR_SAVE(r1)
-	stdu r1, -FRAME_MIN_SIZE_PARM(r1)
diff --git a/sysdeps/powerpc/powerpc64/crtn.S b/sysdeps/powerpc/powerpc64/crtn.S
deleted file mode 100644
index a8906aa16c..0000000000
--- a/sysdeps/powerpc/powerpc64/crtn.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Special .init and .fini section support for PowerPC64.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* crtn.S puts function epilogues in the .init and .fini sections
-   corresponding to the prologues in crti.S. */
-
-#include <sysdep.h>
-
-	.section .init,"ax",@progbits
-	addi r1, r1, FRAME_MIN_SIZE_PARM
-	ld r0, FRAME_LR_SAVE(r1)
-	mtlr r0
-	blr
-
-	.section .fini,"ax",@progbits
-	addi r1, r1, FRAME_MIN_SIZE_PARM
-	ld r0, FRAME_LR_SAVE(r1)
-	mtlr r0
-	blr
diff --git a/sysdeps/powerpc/powerpc64/dl-dtprocnum.h b/sysdeps/powerpc/powerpc64/dl-dtprocnum.h
deleted file mode 100644
index 142714b421..0000000000
--- a/sysdeps/powerpc/powerpc64/dl-dtprocnum.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Configuration of lookup functions.  PowerPC64 version.
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Number of extra dynamic section entries for this architecture.  By
-   default there are none.  */
-#define DT_THISPROCNUM	DT_PPC64_NUM
diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h
deleted file mode 100644
index d8f5988bc9..0000000000
--- a/sysdeps/powerpc/powerpc64/dl-irel.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Machine-dependent ELF indirect relocation inline functions.
-   PowerPC64 version.
-   Copyright (C) 2009-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_IREL_H
-#define _DL_IREL_H
-
-#include <stdio.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <dl-machine.h>
-
-#define ELF_MACHINE_IRELA	1
-
-static inline Elf64_Addr
-__attribute ((always_inline))
-elf_ifunc_invoke (Elf64_Addr addr)
-{
-  return ((Elf64_Addr (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap));
-}
-
-static inline void
-__attribute ((always_inline))
-elf_irela (const Elf64_Rela *reloc)
-{
-  unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
-
-  if (__glibc_likely (r_type == R_PPC64_IRELATIVE))
-    {
-      Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
-      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
-      *reloc_addr = value;
-    }
-  else if (__glibc_likely (r_type == R_PPC64_JMP_IREL))
-    {
-      Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
-      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
-#if _CALL_ELF != 2
-      *(Elf64_FuncDesc *) reloc_addr = *(Elf64_FuncDesc *) value;
-#else
-      *reloc_addr = value;
-#endif
-    }
-  else
-    __libc_fatal ("unexpected reloc type in static binary");
-}
-
-#endif /* dl-irel.h */
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.c b/sysdeps/powerpc/powerpc64/dl-machine.c
deleted file mode 100644
index 0eccc6621a..0000000000
--- a/sysdeps/powerpc/powerpc64/dl-machine.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Machine-dependent ELF dynamic relocation functions.  PowerPC64 version.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <unistd.h>
-#include <ldsodefs.h>
-#include <_itoa.h>
-#include <dl-machine.h>
-
-void
-_dl_reloc_overflow (struct link_map *map,
-		   const char *name,
-		   Elf64_Addr *const reloc_addr,
-		   const Elf64_Sym *refsym)
-{
-  char buffer[128];
-  char *t;
-  t = stpcpy (buffer, name);
-  t = stpcpy (t, " reloc at 0x");
-  _itoa_word ((unsigned long) reloc_addr, t, 16, 0);
-  if (refsym)
-    {
-      const char *strtab;
-
-      strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-      t = stpcpy (t, " for symbol `");
-      t = stpcpy (t, strtab + refsym->st_name);
-      t = stpcpy (t, "'");
-    }
-  t = stpcpy (t, " out of range");
-  _dl_signal_error (0, map->l_name, NULL, buffer);
-}
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
deleted file mode 100644
index 6391b3a558..0000000000
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ /dev/null
@@ -1,1036 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions.
-   PowerPC64 version.
-   Copyright 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef dl_machine_h
-#define dl_machine_h
-
-#define ELF_MACHINE_NAME "powerpc64"
-
-#include <assert.h>
-#include <sys/param.h>
-#include <dl-tls.h>
-#include <sysdep.h>
-#include <hwcapinfo.h>
-
-/* Translate a processor specific dynamic tag to the index
-   in l_info array.  */
-#define DT_PPC64(x) (DT_PPC64_##x - DT_LOPROC + DT_NUM)
-
-#if _CALL_ELF != 2
-/* A PowerPC64 function descriptor.  The .plt (procedure linkage
-   table) and .opd (official procedure descriptor) sections are
-   arrays of these.  */
-typedef struct
-{
-  Elf64_Addr fd_func;
-  Elf64_Addr fd_toc;
-  Elf64_Addr fd_aux;
-} Elf64_FuncDesc;
-#endif
-
-#define ELF_MULT_MACHINES_SUPPORTED
-
-/* Return nonzero iff ELF header is compatible with the running host.  */
-static inline int
-elf_machine_matches_host (const Elf64_Ehdr *ehdr)
-{
-  /* Verify that the binary matches our ABI version.  */
-  if ((ehdr->e_flags & EF_PPC64_ABI) != 0)
-    {
-#if _CALL_ELF != 2
-      if ((ehdr->e_flags & EF_PPC64_ABI) != 1)
-        return 0;
-#else
-      if ((ehdr->e_flags & EF_PPC64_ABI) != 2)
-        return 0;
-#endif
-    }
-
-  return ehdr->e_machine == EM_PPC64;
-}
-
-/* Return nonzero iff ELF header is compatible with the running host,
-   but not this loader.  */
-static inline int
-elf_host_tolerates_machine (const Elf64_Ehdr *ehdr)
-{
-  return ehdr->e_machine == EM_PPC;
-}
-
-/* Return nonzero iff ELF header is compatible with the running host,
-   but not this loader.  */
-static inline int
-elf_host_tolerates_class (const Elf64_Ehdr *ehdr)
-{
-  return ehdr->e_ident[EI_CLASS] == ELFCLASS32;
-}
-
-
-/* Return the run-time load address of the shared object, assuming it
-   was originally linked at zero.  */
-static inline Elf64_Addr
-elf_machine_load_address (void) __attribute__ ((const));
-
-static inline Elf64_Addr
-elf_machine_load_address (void)
-{
-  Elf64_Addr ret;
-
-  /* The first entry in .got (and thus the first entry in .toc) is the
-     link-time TOC_base, ie. r2.  So the difference between that and
-     the current r2 set by the kernel is how far the shared lib has
-     moved.  */
-  asm (	"	ld	%0,-32768(2)\n"
-	"	subf	%0,%0,2\n"
-	: "=r"	(ret));
-  return ret;
-}
-
-/* Return the link-time address of _DYNAMIC.  */
-static inline Elf64_Addr
-elf_machine_dynamic (void)
-{
-  Elf64_Addr runtime_dynamic;
-  /* It's easier to get the run-time address.  */
-  asm (	"	addis	%0,2,_DYNAMIC@toc@ha\n"
-	"	addi	%0,%0,_DYNAMIC@toc@l\n"
-	: "=b"	(runtime_dynamic));
-  /* Then subtract off the load address offset.  */
-  return runtime_dynamic - elf_machine_load_address() ;
-}
-
-#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) /* nothing */
-
-/* The PLT uses Elf64_Rela relocs.  */
-#define elf_machine_relplt elf_machine_rela
-
-
-#ifdef HAVE_INLINED_SYSCALLS
-/* We do not need _dl_starting_up.  */
-# define DL_STARTING_UP_DEF
-#else
-# define DL_STARTING_UP_DEF \
-".LC__dl_starting_up:\n"  \
-"	.tc __GI__dl_starting_up[TC],__GI__dl_starting_up\n"
-#endif
-
-
-/* Initial entry point code for the dynamic linker.  The C function
-   `_dl_start' is the real entry point; its return value is the user
-   program's entry point.  */
-#define RTLD_START \
-  asm (".pushsection \".text\"\n"					\
-"	.align	2\n"							\
-"	" ENTRY_2(_start) "\n"						\
-BODY_PREFIX "_start:\n"							\
-"	" LOCALENTRY(_start) "\n"						\
-/* We start with the following on the stack, from top:			\
-   argc (4 bytes);							\
-   arguments for program (terminated by NULL);				\
-   environment variables (terminated by NULL);				\
-   arguments for the program loader.  */				\
-"	mr	3,1\n"							\
-"	li	4,0\n"							\
-"	stdu	4,-128(1)\n"						\
-/* Call _dl_start with one parameter pointing at argc.  */		\
-"	bl	" DOT_PREFIX "_dl_start\n"				\
-"	nop\n"								\
-/* Transfer control to _dl_start_user!  */				\
-"	b	" DOT_PREFIX "_dl_start_user\n"				\
-".LT__start:\n"								\
-"	.long 0\n"							\
-"	.byte 0x00,0x0c,0x24,0x40,0x00,0x00,0x00,0x00\n"		\
-"	.long .LT__start-" BODY_PREFIX "_start\n"			\
-"	.short .LT__start_name_end-.LT__start_name_start\n"		\
-".LT__start_name_start:\n"						\
-"	.ascii \"_start\"\n"						\
-".LT__start_name_end:\n"						\
-"	.align 2\n"							\
-"	" END_2(_start) "\n"						\
-"	.pushsection	\".toc\",\"aw\"\n"				\
-DL_STARTING_UP_DEF							\
-".LC__rtld_local:\n"							\
-"	.tc _rtld_local[TC],_rtld_local\n"				\
-".LC__dl_argc:\n"							\
-"	.tc _dl_argc[TC],_dl_argc\n"					\
-".LC__dl_argv:\n"							\
-"	.tc __GI__dl_argv[TC],__GI__dl_argv\n"				\
-".LC__dl_fini:\n"							\
-"	.tc _dl_fini[TC],_dl_fini\n"					\
-"	.popsection\n"							\
-"	" ENTRY_2(_dl_start_user) "\n"					\
-/* Now, we do our main work of calling initialisation procedures.	\
-   The ELF ABI doesn't say anything about parameters for these,		\
-   so we just pass argc, argv, and the environment.			\
-   Changing these is strongly discouraged (not least because argc is	\
-   passed by value!).  */						\
-BODY_PREFIX "_dl_start_user:\n"						\
-"	" LOCALENTRY(_dl_start_user) "\n"				\
-/* the address of _start in r30.  */					\
-"	mr	30,3\n"							\
-/* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28.  */		\
-"	ld	28,.LC__rtld_local@toc(2)\n"				\
-"	ld	29,.LC__dl_argc@toc(2)\n"				\
-"	ld	27,.LC__dl_argv@toc(2)\n"				\
-/* _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1).  */	\
-"	ld	3,0(28)\n"						\
-"	lwa	4,0(29)\n"						\
-"	ld	5,0(27)\n"						\
-"	sldi	6,4,3\n"						\
-"	add	6,5,6\n"						\
-"	addi	6,6,8\n"						\
-"	bl	" DOT_PREFIX "_dl_init\n"				\
-"	nop\n"								\
-/* Now, to conform to the ELF ABI, we have to:				\
-   Pass argc (actually _dl_argc) in r3;  */				\
-"	lwa	3,0(29)\n"						\
-/* Pass argv (actually _dl_argv) in r4;  */				\
-"	ld	4,0(27)\n"						\
-/* Pass argv+argc+1 in r5;  */						\
-"	sldi	5,3,3\n"						\
-"	add	6,4,5\n"						\
-"	addi	5,6,8\n"						\
-/* Pass the auxiliary vector in r6. This is passed to us just after	\
-   _envp.  */								\
-"2:	ldu	0,8(6)\n"						\
-"	cmpdi	0,0\n"							\
-"	bne	2b\n"							\
-"	addi	6,6,8\n"						\
-/* Pass a termination function pointer (in this case _dl_fini) in	\
-   r7.  */								\
-"	ld	7,.LC__dl_fini@toc(2)\n"				\
-/* Pass the stack pointer in r1 (so far so good), pointing to a NULL	\
-   value.  This lets our startup code distinguish between a program	\
-   linked statically, which linux will call with argc on top of the	\
-   stack which will hopefully never be zero, and a dynamically linked	\
-   program which will always have a NULL on the top of the stack.	\
-   Take the opportunity to clear LR, so anyone who accidentally		\
-   returns from _start gets SEGV.  Also clear the next few words of	\
-   the stack.  */							\
-"	li	31,0\n"							\
-"	std	31,0(1)\n"						\
-"	mtlr	31\n"							\
-"	std	31,8(1)\n"						\
-"	std	31,16(1)\n"						\
-"	std	31,24(1)\n"						\
-/* Now, call the start function descriptor at r30...  */		\
-"	.globl	._dl_main_dispatch\n"					\
-"._dl_main_dispatch:\n"							\
-"	" PPC64_LOAD_FUNCPTR(30) "\n"					\
-"	bctr\n"								\
-".LT__dl_start_user:\n"							\
-"	.long 0\n"							\
-"	.byte 0x00,0x0c,0x24,0x40,0x00,0x00,0x00,0x00\n"		\
-"	.long .LT__dl_start_user-" BODY_PREFIX "_dl_start_user\n"	\
-"	.short .LT__dl_start_user_name_end-.LT__dl_start_user_name_start\n" \
-".LT__dl_start_user_name_start:\n"					\
-"	.ascii \"_dl_start_user\"\n"					\
-".LT__dl_start_user_name_end:\n"					\
-"	.align 2\n"							\
-"	" END_2(_dl_start_user) "\n"					\
-"	.popsection");
-
-/* ELF_RTYPE_CLASS_COPY iff TYPE should not be allowed to resolve to
-   one of the main executable's symbols, as for a COPY reloc.
-
-   To make function pointer comparisons work on most targets, the
-   relevant ABI states that the address of a non-local function in a
-   dynamically linked executable is the address of the PLT entry for
-   that function.  This is quite reasonable since using the real
-   function address in a non-PIC executable would typically require
-   dynamic relocations in .text, something to be avoided.  For such
-   functions, the linker emits a SHN_UNDEF symbol in the executable
-   with value equal to the PLT entry address.  Normally, SHN_UNDEF
-   symbols have a value of zero, so this is a clue to ld.so that it
-   should treat these symbols specially.  For relocations not in
-   ELF_RTYPE_CLASS_PLT (eg. those on function pointers), ld.so should
-   use the value of the executable SHN_UNDEF symbol, ie. the PLT entry
-   address.  For relocations in ELF_RTYPE_CLASS_PLT (eg. the relocs in
-   the PLT itself), ld.so should use the value of the corresponding
-   defined symbol in the object that defines the function, ie. the
-   real function address.  This complicates ld.so in that there are
-   now two possible values for a given symbol, and it gets even worse
-   because protected symbols need yet another set of rules.
-
-   On PowerPC64 we don't need any of this.  The linker won't emit
-   SHN_UNDEF symbols with non-zero values.  ld.so can make all
-   relocations behave "normally", ie. always use the real address
-   like PLT relocations.  So always set ELF_RTYPE_CLASS_PLT.  */
-
-#if _CALL_ELF != 2
-#define elf_machine_type_class(type) \
-  (ELF_RTYPE_CLASS_PLT | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
-#else
-/* And now that you have read that large comment, you can disregard it
-   all for ELFv2.  ELFv2 does need the special SHN_UNDEF treatment.  */
-#define IS_PPC64_TLS_RELOC(R)						\
-  (((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA)		\
-   || ((R) >= R_PPC64_TPREL16_HIGH && (R) <= R_PPC64_DTPREL16_HIGHA))
-
-#define elf_machine_type_class(type) \
-  ((((type) == R_PPC64_JMP_SLOT					\
-     || (type) == R_PPC64_ADDR24				\
-     || IS_PPC64_TLS_RELOC (type)) * ELF_RTYPE_CLASS_PLT)	\
-   | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
-#endif
-
-/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
-#define ELF_MACHINE_JMP_SLOT	R_PPC64_JMP_SLOT
-
-/* The PowerPC never uses REL relocations.  */
-#define ELF_MACHINE_NO_REL 1
-#define ELF_MACHINE_NO_RELA 0
-
-/* We define an initialization function to initialize HWCAP/HWCAP2 and
-   platform data so it can be copied into the TCB later.  This is called
-   very early in _dl_sysdep_start for dynamically linked binaries.  */
-#ifdef SHARED
-# define DL_PLATFORM_INIT dl_platform_init ()
-
-static inline void __attribute__ ((unused))
-dl_platform_init (void)
-{
-  __tcb_parse_hwcap_and_convert_at_platform ();
-}
-#endif
-
-/* Stuff for the PLT.  */
-#if _CALL_ELF != 2
-#define PLT_INITIAL_ENTRY_WORDS 3
-#define PLT_ENTRY_WORDS 3
-#define GLINK_INITIAL_ENTRY_WORDS 8
-/* The first 32k entries of glink can set an index and branch using two
-   instructions; past that point, glink uses three instructions.  */
-#define GLINK_ENTRY_WORDS(I) (((I) < 0x8000)? 2 : 3)
-#else
-#define PLT_INITIAL_ENTRY_WORDS 2
-#define PLT_ENTRY_WORDS 1
-#define GLINK_INITIAL_ENTRY_WORDS 8
-#define GLINK_ENTRY_WORDS(I) 1
-#endif
-
-#define PPC_DCBST(where) asm volatile ("dcbst 0,%0" : : "r"(where) : "memory")
-#define PPC_DCBT(where) asm volatile ("dcbt 0,%0" : : "r"(where) : "memory")
-#define PPC_DCBF(where) asm volatile ("dcbf 0,%0" : : "r"(where) : "memory")
-#define PPC_SYNC asm volatile ("sync" : : : "memory")
-#define PPC_ISYNC asm volatile ("sync; isync" : : : "memory")
-#define PPC_ICBI(where) asm volatile ("icbi 0,%0" : : "r"(where) : "memory")
-#define PPC_DIE asm volatile ("tweq 0,0")
-/* Use this when you've modified some code, but it won't be in the
-   instruction fetch queue (or when it doesn't matter if it is). */
-#define MODIFIED_CODE_NOQUEUE(where) \
-     do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); } while (0)
-/* Use this when it might be in the instruction queue. */
-#define MODIFIED_CODE(where) \
-     do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); PPC_ISYNC; } while (0)
-
-/* Set up the loaded object described by MAP so its unrelocated PLT
-   entries will jump to the on-demand fixup code in dl-runtime.c.  */
-static inline int __attribute__ ((always_inline))
-elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
-{
-  if (map->l_info[DT_JMPREL])
-    {
-      Elf64_Word i;
-      Elf64_Word *glink = NULL;
-      Elf64_Xword *plt = (Elf64_Xword *) D_PTR (map, l_info[DT_PLTGOT]);
-      Elf64_Word num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
-				    / sizeof (Elf64_Rela));
-      Elf64_Addr l_addr = map->l_addr;
-      Elf64_Dyn **info = map->l_info;
-      char *p;
-
-      extern void _dl_runtime_resolve (void);
-      extern void _dl_profile_resolve (void);
-
-      /* Relocate the DT_PPC64_GLINK entry in the _DYNAMIC section.
-	 elf_get_dynamic_info takes care of the standard entries but
-	 doesn't know exactly what to do with processor specific
-	 entries.  */
-      if (info[DT_PPC64(GLINK)] != NULL)
-	info[DT_PPC64(GLINK)]->d_un.d_ptr += l_addr;
-
-      if (lazy)
-	{
-	  Elf64_Word glink_offset;
-	  Elf64_Word offset;
-	  Elf64_Addr dlrr;
-
-	  dlrr = (Elf64_Addr) (profile ? _dl_profile_resolve
-				       : _dl_runtime_resolve);
-	  if (profile && GLRO(dl_profile) != NULL
-	      && _dl_name_match_p (GLRO(dl_profile), map))
-	    /* This is the object we are looking for.  Say that we really
-	       want profiling and the timers are started.  */
-	    GL(dl_profile_map) = map;
-
-#if _CALL_ELF != 2
-	  /* We need to stuff the address/TOC of _dl_runtime_resolve
-	     into doublewords 0 and 1 of plt_reserve.  Then we need to
-	     stuff the map address into doubleword 2 of plt_reserve.
-	     This allows the GLINK0 code to transfer control to the
-	     correct trampoline which will transfer control to fixup
-	     in dl-machine.c.  */
-	  {
-	    /* The plt_reserve area is the 1st 3 doublewords of the PLT.  */
-	    Elf64_FuncDesc *plt_reserve = (Elf64_FuncDesc *) plt;
-	    Elf64_FuncDesc *resolve_fd = (Elf64_FuncDesc *) dlrr;
-	    plt_reserve->fd_func = resolve_fd->fd_func;
-	    plt_reserve->fd_toc  = resolve_fd->fd_toc;
-	    plt_reserve->fd_aux  = (Elf64_Addr) map;
-#ifdef RTLD_BOOTSTRAP
-	    /* When we're bootstrapping, the opd entry will not have
-	       been relocated yet.  */
-	    plt_reserve->fd_func += l_addr;
-	    plt_reserve->fd_toc  += l_addr;
-#endif
-	  }
-#else
-	  /* When we don't have function descriptors, the first doubleword
-	     of the PLT holds the address of _dl_runtime_resolve, and the
-	     second doubleword holds the map address.  */
-	  plt[0] = dlrr;
-	  plt[1] = (Elf64_Addr) map;
-#endif
-
-	  /* Set up the lazy PLT entries.  */
-	  glink = (Elf64_Word *) D_PTR (map, l_info[DT_PPC64(GLINK)]);
-	  offset = PLT_INITIAL_ENTRY_WORDS;
-	  glink_offset = GLINK_INITIAL_ENTRY_WORDS;
-	  for (i = 0; i < num_plt_entries; i++)
-	    {
-
-	      plt[offset] = (Elf64_Xword) &glink[glink_offset];
-	      offset += PLT_ENTRY_WORDS;
-	      glink_offset += GLINK_ENTRY_WORDS (i);
-	    }
-
-	  /* Now, we've modified data.  We need to write the changes from
-	     the data cache to a second-level unified cache, then make
-	     sure that stale data in the instruction cache is removed.
-	     (In a multiprocessor system, the effect is more complex.)
-	     Most of the PLT shouldn't be in the instruction cache, but
-	     there may be a little overlap at the start and the end.
-
-	     Assumes that dcbst and icbi apply to lines of 16 bytes or
-	     more.  Current known line sizes are 16, 32, and 128 bytes.  */
-
-	  for (p = (char *) plt; p < (char *) &plt[offset]; p += 16)
-	    PPC_DCBST (p);
-	  PPC_SYNC;
-	}
-    }
-  return lazy;
-}
-
-#if _CALL_ELF == 2
-/* If the PLT entry whose reloc is 'reloc' resolves to a function in
-   the same object, return the target function's local entry point
-   offset if usable.  */
-static inline Elf64_Addr __attribute__ ((always_inline))
-ppc64_local_entry_offset (struct link_map *map, lookup_t sym_map,
-			  const Elf64_Rela *reloc)
-{
-  const Elf64_Sym *symtab;
-  const Elf64_Sym *sym;
-
-  /* If the target function is in a different object, we cannot
-     use the local entry point.  */
-  if (sym_map != map)
-    return 0;
-
-  /* If the linker inserted multiple TOCs, we cannot use the
-     local entry point.  */
-  if (map->l_info[DT_PPC64(OPT)]
-      && (map->l_info[DT_PPC64(OPT)]->d_un.d_val & PPC64_OPT_MULTI_TOC))
-    return 0;
-
-  /* Otherwise, we can use the local entry point.  Retrieve its offset
-     from the symbol's ELF st_other field.  */
-  symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
-  sym = &symtab[ELFW(R_SYM) (reloc->r_info)];
-
-  /* If the target function is an ifunc then the local entry offset is
-     for the resolver, not the final destination.  */
-  if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
-    return 0;
-
-  return PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
-}
-#endif
-
-/* Change the PLT entry whose reloc is 'reloc' to call the actual
-   routine.  */
-static inline Elf64_Addr __attribute__ ((always_inline))
-elf_machine_fixup_plt (struct link_map *map, lookup_t sym_map,
-		       const Elf64_Rela *reloc,
-		       Elf64_Addr *reloc_addr, Elf64_Addr finaladdr)
-{
-#if _CALL_ELF != 2
-  Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
-  Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
-  Elf64_Addr offset = 0;
-  Elf64_FuncDesc zero_fd = {0, 0, 0};
-
-  PPC_DCBT (&plt->fd_aux);
-  PPC_DCBT (&plt->fd_func);
-
-  /* If sym_map is NULL, it's a weak undefined sym;  Set the plt to
-     zero.  finaladdr should be zero already in this case, but guard
-     against invalid plt relocations with non-zero addends.  */
-  if (sym_map == NULL)
-    finaladdr = 0;
-
-  /* Don't die here if finaladdr is zero, die if this plt entry is
-     actually called.  Makes a difference when LD_BIND_NOW=1.
-     finaladdr may be zero for a weak undefined symbol, or when an
-     ifunc resolver returns zero.  */
-  if (finaladdr == 0)
-    rel = &zero_fd;
-  else
-    {
-      PPC_DCBT (&rel->fd_aux);
-      PPC_DCBT (&rel->fd_func);
-    }
-
-  /* If the opd entry is not yet relocated (because it's from a shared
-     object that hasn't been processed yet), then manually reloc it.  */
-  if (finaladdr != 0 && map != sym_map && !sym_map->l_relocated
-#if !defined RTLD_BOOTSTRAP && defined SHARED
-      /* Bootstrap map doesn't have l_relocated set for it.  */
-      && sym_map != &GL(dl_rtld_map)
-#endif
-      )
-    offset = sym_map->l_addr;
-
-  /* For PPC64, fixup_plt copies the function descriptor from opd
-     over the corresponding PLT entry.
-     Initially, PLT Entry[i] is set up for lazy linking, or is zero.
-     For lazy linking, the fd_toc and fd_aux entries are irrelevant,
-     so for thread safety we write them before changing fd_func.  */
-
-  plt->fd_aux = rel->fd_aux + offset;
-  plt->fd_toc = rel->fd_toc + offset;
-  PPC_DCBF (&plt->fd_toc);
-  PPC_ISYNC;
-
-  plt->fd_func = rel->fd_func + offset;
-  PPC_DCBST (&plt->fd_func);
-  PPC_ISYNC;
-#else
-  finaladdr += ppc64_local_entry_offset (map, sym_map, reloc);
-  *reloc_addr = finaladdr;
-#endif
-
-  return finaladdr;
-}
-
-static inline void __attribute__ ((always_inline))
-elf_machine_plt_conflict (struct link_map *map, lookup_t sym_map,
-			  const Elf64_Rela *reloc,
-			  Elf64_Addr *reloc_addr, Elf64_Addr finaladdr)
-{
-#if _CALL_ELF != 2
-  Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
-  Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
-  Elf64_FuncDesc zero_fd = {0, 0, 0};
-
-  if (sym_map == NULL)
-    finaladdr = 0;
-
-  if (finaladdr == 0)
-    rel = &zero_fd;
-
-  plt->fd_func = rel->fd_func;
-  plt->fd_aux = rel->fd_aux;
-  plt->fd_toc = rel->fd_toc;
-  PPC_DCBST (&plt->fd_func);
-  PPC_DCBST (&plt->fd_aux);
-  PPC_DCBST (&plt->fd_toc);
-  PPC_SYNC;
-#else
-  finaladdr += ppc64_local_entry_offset (map, sym_map, reloc);
-  *reloc_addr = finaladdr;
-#endif
-}
-
-/* Return the final value of a plt relocation.  */
-static inline Elf64_Addr
-elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
-		       Elf64_Addr value)
-{
-  return value + reloc->r_addend;
-}
-
-
-/* Names of the architecture-specific auditing callback functions.  */
-#if _CALL_ELF != 2
-#define ARCH_LA_PLTENTER ppc64_gnu_pltenter
-#define ARCH_LA_PLTEXIT ppc64_gnu_pltexit
-#else
-#define ARCH_LA_PLTENTER ppc64v2_gnu_pltenter
-#define ARCH_LA_PLTEXIT ppc64v2_gnu_pltexit
-#endif
-
-#endif /* dl_machine_h */
-
-#ifdef RESOLVE_MAP
-
-#define PPC_LO(v) ((v) & 0xffff)
-#define PPC_HI(v) (((v) >> 16) & 0xffff)
-#define PPC_HA(v) PPC_HI ((v) + 0x8000)
-#define PPC_HIGHER(v) (((v) >> 32) & 0xffff)
-#define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000)
-#define PPC_HIGHEST(v) (((v) >> 48) & 0xffff)
-#define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000)
-#define BIT_INSERT(var, val, mask) \
-  ((var) = ((var) & ~(Elf64_Addr) (mask)) | ((val) & (mask)))
-
-#define dont_expect(X) __builtin_expect ((X), 0)
-
-extern void _dl_reloc_overflow (struct link_map *map,
-				const char *name,
-				Elf64_Addr *const reloc_addr,
-				const Elf64_Sym *refsym)
-				attribute_hidden;
-
-auto inline void __attribute__ ((always_inline))
-elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   void *const reloc_addr_arg)
-{
-  Elf64_Addr *const reloc_addr = reloc_addr_arg;
-  *reloc_addr = l_addr + reloc->r_addend;
-}
-
-/* This computes the value used by TPREL* relocs.  */
-auto inline Elf64_Addr __attribute__ ((always_inline, const))
-elf_machine_tprel (struct link_map *map,
-		   struct link_map *sym_map,
-		   const Elf64_Sym *sym,
-		   const Elf64_Rela *reloc)
-{
-#ifndef RTLD_BOOTSTRAP
-  if (sym_map)
-    {
-      CHECK_STATIC_TLS (map, sym_map);
-#endif
-      return TLS_TPREL_VALUE (sym_map, sym, reloc);
-#ifndef RTLD_BOOTSTRAP
-    }
-#endif
-  return 0;
-}
-
-/* Call function at address VALUE (an OPD entry) to resolve ifunc relocs.  */
-auto inline Elf64_Addr __attribute__ ((always_inline))
-resolve_ifunc (Elf64_Addr value,
-	       const struct link_map *map, const struct link_map *sym_map)
-{
-#if _CALL_ELF != 2
-#ifndef RESOLVE_CONFLICT_FIND_MAP
-  /* The function we are calling may not yet have its opd entry relocated.  */
-  Elf64_FuncDesc opd;
-  if (map != sym_map
-# if !defined RTLD_BOOTSTRAP && defined SHARED
-      /* Bootstrap map doesn't have l_relocated set for it.  */
-      && sym_map != &GL(dl_rtld_map)
-# endif
-      && !sym_map->l_relocated)
-    {
-      Elf64_FuncDesc *func = (Elf64_FuncDesc *) value;
-      opd.fd_func = func->fd_func + sym_map->l_addr;
-      opd.fd_toc = func->fd_toc + sym_map->l_addr;
-      opd.fd_aux = func->fd_aux;
-      /* GCC 4.9+ eliminates the branch as dead code, force the odp set
-         dependency.  */
-      asm ("" : "=r" (value) : "0" (&opd), "X" (opd));
-    }
-#endif
-#endif
-  return ((Elf64_Addr (*) (unsigned long int)) value) (GLRO(dl_hwcap));
-}
-
-/* Perform the relocation specified by RELOC and SYM (which is fully
-   resolved).  MAP is the object containing the reloc.  */
-auto inline void __attribute__ ((always_inline))
-elf_machine_rela (struct link_map *map,
-		  const Elf64_Rela *reloc,
-		  const Elf64_Sym *sym,
-		  const struct r_found_version *version,
-		  void *const reloc_addr_arg,
-		  int skip_ifunc)
-{
-  Elf64_Addr *const reloc_addr = reloc_addr_arg;
-  const int r_type = ELF64_R_TYPE (reloc->r_info);
-  const Elf64_Sym *const refsym = sym;
-  union unaligned
-    {
-      uint16_t u2;
-      uint32_t u4;
-      uint64_t u8;
-    } __attribute__ ((__packed__));
-
-  if (r_type == R_PPC64_RELATIVE)
-    {
-      *reloc_addr = map->l_addr + reloc->r_addend;
-      return;
-    }
-
-  if (__glibc_unlikely (r_type == R_PPC64_NONE))
-    return;
-
-  /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt
-     and STT_GNU_IFUNC.  */
-  struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
-  Elf64_Addr value = ((sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value)
-		      + reloc->r_addend);
-
-  if (sym != NULL
-      && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
-      && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
-      && __builtin_expect (!skip_ifunc, 1))
-    value = resolve_ifunc (value, map, sym_map);
-
-  /* For relocs that don't edit code, return.
-     For relocs that might edit instructions, break from the switch.  */
-  switch (r_type)
-    {
-    case R_PPC64_ADDR64:
-    case R_PPC64_GLOB_DAT:
-      *reloc_addr = value;
-      return;
-
-    case R_PPC64_IRELATIVE:
-      if (__glibc_likely (!skip_ifunc))
-	value = resolve_ifunc (value, map, sym_map);
-      *reloc_addr = value;
-      return;
-
-    case R_PPC64_JMP_IREL:
-      if (__glibc_likely (!skip_ifunc))
-	value = resolve_ifunc (value, map, sym_map);
-      /* Fall thru */
-    case R_PPC64_JMP_SLOT:
-#ifdef RESOLVE_CONFLICT_FIND_MAP
-      elf_machine_plt_conflict (map, sym_map, reloc, reloc_addr, value);
-#else
-      elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
-#endif
-      return;
-
-    case R_PPC64_DTPMOD64:
-      if (map->l_info[DT_PPC64(OPT)]
-	  && (map->l_info[DT_PPC64(OPT)]->d_un.d_val & PPC64_OPT_TLS))
-	{
-#ifdef RTLD_BOOTSTRAP
-	  reloc_addr[0] = 0;
-	  reloc_addr[1] = (sym_map->l_tls_offset - TLS_TP_OFFSET
-			   + TLS_DTV_OFFSET);
-	  return;
-#else
-	  if (sym_map != NULL)
-	    {
-# ifndef SHARED
-	      CHECK_STATIC_TLS (map, sym_map);
-# else
-	      if (TRY_STATIC_TLS (map, sym_map))
-# endif
-		{
-		  reloc_addr[0] = 0;
-		  /* Set up for local dynamic.  */
-		  reloc_addr[1] = (sym_map->l_tls_offset - TLS_TP_OFFSET
-				   + TLS_DTV_OFFSET);
-		  return;
-		}
-	    }
-#endif
-	}
-#ifdef RTLD_BOOTSTRAP
-      /* During startup the dynamic linker is always index 1.  */
-      *reloc_addr = 1;
-#else
-      /* Get the information from the link map returned by the
-	 resolve function.  */
-      if (sym_map != NULL)
-	*reloc_addr = sym_map->l_tls_modid;
-#endif
-      return;
-
-    case R_PPC64_DTPREL64:
-      if (map->l_info[DT_PPC64(OPT)]
-	  && (map->l_info[DT_PPC64(OPT)]->d_un.d_val & PPC64_OPT_TLS))
-	{
-#ifdef RTLD_BOOTSTRAP
-	  *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-	  return;
-#else
-	  if (sym_map != NULL)
-	    {
-	      /* This reloc is always preceded by R_PPC64_DTPMOD64.  */
-# ifndef SHARED
-	      assert (HAVE_STATIC_TLS (map, sym_map));
-# else
-	      if (HAVE_STATIC_TLS (map, sym_map))
-#  endif
-		{
-		  *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
-		  return;
-		}
-	    }
-#endif
-	}
-      /* During relocation all TLS symbols are defined and used.
-	 Therefore the offset is already correct.  */
-#ifndef RTLD_BOOTSTRAP
-      if (sym_map != NULL)
-	*reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
-#endif
-      return;
-
-    case R_PPC64_TPREL64:
-      *reloc_addr = elf_machine_tprel (map, sym_map, sym, reloc);
-      return;
-
-    case R_PPC64_TPREL16_LO_DS:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      if (dont_expect ((value & 3) != 0))
-	_dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS", reloc_addr, refsym);
-      BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
-      break;
-
-    case R_PPC64_TPREL16_DS:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-	_dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr, refsym);
-      BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
-      break;
-
-    case R_PPC64_TPREL16:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      if (dont_expect ((value + 0x8000) >= 0x10000))
-	_dl_reloc_overflow (map, "R_PPC64_TPREL16", reloc_addr, refsym);
-      *(Elf64_Half *) reloc_addr = PPC_LO (value);
-      break;
-
-    case R_PPC64_TPREL16_LO:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_LO (value);
-      break;
-
-    case R_PPC64_TPREL16_HI:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      if (dont_expect (value + 0x80000000 >= 0x100000000LL))
-	_dl_reloc_overflow (map, "R_PPC64_TPREL16_HI", reloc_addr, refsym);
-      *(Elf64_Half *) reloc_addr = PPC_HI (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGH:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HI (value);
-      break;
-
-    case R_PPC64_TPREL16_HA:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      if (dont_expect (value + 0x80008000 >= 0x100000000LL))
-	_dl_reloc_overflow (map, "R_PPC64_TPREL16_HA", reloc_addr, refsym);
-      *(Elf64_Half *) reloc_addr = PPC_HA (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGHA:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HA (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGHER:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGHEST:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGHERA:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
-      break;
-
-    case R_PPC64_TPREL16_HIGHESTA:
-      value = elf_machine_tprel (map, sym_map, sym, reloc);
-      *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
-      break;
-
-#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
-    case R_PPC64_ADDR16_LO_DS:
-      if (dont_expect ((value & 3) != 0))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS", reloc_addr, refsym);
-      BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
-      break;
-
-    case R_PPC64_ADDR16_LO:
-      *(Elf64_Half *) reloc_addr = PPC_LO (value);
-      break;
-
-    case R_PPC64_ADDR16_HI:
-      if (dont_expect (value + 0x80000000 >= 0x100000000LL))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR16_HI", reloc_addr, refsym);
-    case R_PPC64_ADDR16_HIGH:
-      *(Elf64_Half *) reloc_addr = PPC_HI (value);
-      break;
-
-    case R_PPC64_ADDR16_HA:
-      if (dont_expect (value + 0x80008000 >= 0x100000000LL))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR16_HA", reloc_addr, refsym);
-    case R_PPC64_ADDR16_HIGHA:
-      *(Elf64_Half *) reloc_addr = PPC_HA (value);
-      break;
-
-    case R_PPC64_ADDR30:
-      {
-	Elf64_Addr delta = value - (Elf64_Xword) reloc_addr;
-	if (dont_expect ((delta + 0x80000000) >= 0x100000000LL
-			 || (delta & 3) != 0))
-	  _dl_reloc_overflow (map, "R_PPC64_ADDR30", reloc_addr, refsym);
-	BIT_INSERT (*(Elf64_Word *) reloc_addr, delta, 0xfffffffc);
-      }
-      break;
-
-    case R_PPC64_COPY:
-      if (dont_expect (sym == NULL))
-	/* This can happen in trace mode when an object could not be found. */
-	return;
-      if (dont_expect (sym->st_size > refsym->st_size
-		       || (GLRO(dl_verbose)
-			   && sym->st_size < refsym->st_size)))
-	{
-	  const char *strtab;
-
-	  strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-	  _dl_error_printf ("%s: Symbol `%s' has different size" \
-			    " in shared object," \
-			    " consider re-linking\n",
-			    RTLD_PROGNAME, strtab + refsym->st_name);
-	}
-      memcpy (reloc_addr_arg, (char *) value,
-	      MIN (sym->st_size, refsym->st_size));
-      return;
-
-    case R_PPC64_UADDR64:
-      ((union unaligned *) reloc_addr)->u8 = value;
-      return;
-
-    case R_PPC64_UADDR32:
-      ((union unaligned *) reloc_addr)->u4 = value;
-      return;
-
-    case R_PPC64_ADDR32:
-      if (dont_expect ((value + 0x80000000) >= 0x100000000LL))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR32", reloc_addr, refsym);
-      *(Elf64_Word *) reloc_addr = value;
-      return;
-
-    case R_PPC64_ADDR24:
-      if (dont_expect ((value + 0x2000000) >= 0x4000000 || (value & 3) != 0))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, refsym);
-      BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0x3fffffc);
-      break;
-
-    case R_PPC64_ADDR16:
-      if (dont_expect ((value + 0x8000) >= 0x10000))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR16", reloc_addr, refsym);
-      *(Elf64_Half *) reloc_addr = value;
-      break;
-
-    case R_PPC64_UADDR16:
-      if (dont_expect ((value + 0x8000) >= 0x10000))
-	_dl_reloc_overflow (map, "R_PPC64_UADDR16", reloc_addr, refsym);
-      ((union unaligned *) reloc_addr)->u2 = value;
-      return;
-
-    case R_PPC64_ADDR16_DS:
-      if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-	_dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, refsym);
-      BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
-      break;
-
-    case R_PPC64_ADDR16_HIGHER:
-      *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
-      break;
-
-    case R_PPC64_ADDR16_HIGHEST:
-      *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
-      break;
-
-    case R_PPC64_ADDR16_HIGHERA:
-      *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
-      break;
-
-    case R_PPC64_ADDR16_HIGHESTA:
-      *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
-      break;
-
-    case R_PPC64_ADDR14:
-    case R_PPC64_ADDR14_BRTAKEN:
-    case R_PPC64_ADDR14_BRNTAKEN:
-      {
-	if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
-	  _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, refsym);
-	Elf64_Word insn = *(Elf64_Word *) reloc_addr;
-	BIT_INSERT (insn, value, 0xfffc);
-	if (r_type != R_PPC64_ADDR14)
-	  {
-	    insn &= ~(1 << 21);
-	    if (r_type == R_PPC64_ADDR14_BRTAKEN)
-	      insn |= 1 << 21;
-	    if ((insn & (0x14 << 21)) == (0x04 << 21))
-	      insn |= 0x02 << 21;
-	    else if ((insn & (0x14 << 21)) == (0x10 << 21))
-	      insn |= 0x08 << 21;
-	  }
-	*(Elf64_Word *) reloc_addr = insn;
-      }
-      break;
-
-    case R_PPC64_REL32:
-      *(Elf64_Word *) reloc_addr = value - (Elf64_Addr) reloc_addr;
-      return;
-
-    case R_PPC64_REL64:
-      *reloc_addr = value - (Elf64_Addr) reloc_addr;
-      return;
-#endif /* !RTLD_BOOTSTRAP */
-
-    default:
-      _dl_reloc_bad_type (map, r_type, 0);
-      return;
-    }
-  MODIFIED_CODE_NOQUEUE (reloc_addr);
-}
-
-auto inline void __attribute__ ((always_inline))
-elf_machine_lazy_rel (struct link_map *map,
-		      Elf64_Addr l_addr, const Elf64_Rela *reloc,
-		      int skip_ifunc)
-{
-  /* elf_machine_runtime_setup handles this.  */
-}
-
-
-#endif /* RESOLVE */
diff --git a/sysdeps/powerpc/powerpc64/dl-trampoline.S b/sysdeps/powerpc/powerpc64/dl-trampoline.S
deleted file mode 100644
index 5ec729d1f4..0000000000
--- a/sysdeps/powerpc/powerpc64/dl-trampoline.S
+++ /dev/null
@@ -1,500 +0,0 @@
-/* PLT trampolines.  PPC64 version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <rtld-global-offsets.h>
-
-
-	.section ".text"
-/* On entry r0 contains the index of the PLT entry we need to fixup
-   and r11 contains the link_map (from PLT0+16).  The link_map becomes
-   parm1 (r3) and the index (r0) need to be converted to an offset
-   (index * 24) in parm2 (r4).  */
-
-#define FRAME_SIZE (FRAME_MIN_SIZE+64)
-/* We need to save the registers used to pass parameters, ie. r3 thru
-   r10;  Use local var space rather than the parameter save area,
-   because gcc as of 2010/05 doesn't allocate a proper stack frame for
-   a function that makes no calls except for __tls_get_addr and we
-   might be here resolving the __tls_get_addr call.  */
-#define INT_PARMS FRAME_MIN_SIZE
-EALIGN(_dl_runtime_resolve, 4, 0)
-	stdu	r1,-FRAME_SIZE(r1)
-	cfi_adjust_cfa_offset (FRAME_SIZE)
-	std	r3,INT_PARMS+0(r1)
-	mr	r3,r11
-	std	r4,INT_PARMS+8(r1)
-	sldi	r4,r0,1
-	std	r5,INT_PARMS+16(r1)
-	add	r4,r4,r0
-	std	r6,INT_PARMS+24(r1)
-	sldi	r4,r4,3
-	std	r7,INT_PARMS+32(r1)
-	mflr	r0
-	std	r8,INT_PARMS+40(r1)
-/* Store the LR in the LR Save area.  */
-	std	r0,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	cfi_offset (lr, FRAME_LR_SAVE)
-	std	r9,INT_PARMS+48(r1)
-	std	r10,INT_PARMS+56(r1)
-	bl	JUMPTARGET(_dl_fixup)
-#ifndef SHARED
-	nop
-#endif
-/* Put the registers back.  */
-	ld	r0,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	ld	r10,INT_PARMS+56(r1)
-	ld	r9,INT_PARMS+48(r1)
-	ld	r8,INT_PARMS+40(r1)
-	ld	r7,INT_PARMS+32(r1)
-	mtlr	r0
-	ld	r6,INT_PARMS+24(r1)
-	ld	r5,INT_PARMS+16(r1)
-	ld	r4,INT_PARMS+8(r1)
-/* Prepare for calling the function returned by fixup.  */
-	PPC64_LOAD_FUNCPTR r3
-	ld	r3,INT_PARMS+0(r1)
-#if _CALL_ELF == 2
-/* Restore the caller's TOC in case we jump to a local entry point.  */
-	ld	r2,FRAME_SIZE+FRAME_TOC_SAVE(r1)
-#endif
-/* Unwind the stack frame, and jump.  */
-	addi	r1,r1,FRAME_SIZE
-	bctr
-END(_dl_runtime_resolve)
-#undef FRAME_SIZE
-#undef INT_PARMS
-
-	/* Stack layout:		ELFv2 ABI.
-					+752   previous backchain
-					+744   spill_r31
-					+736   spill_r30
-					+720   v8
-					+704   v7
-					+688   v6
-					+672   v5
-					+656   v4
-					+640   v3
-					+624   v2
-					+608   v1
-					+600   fp10
-	  ELFv1 ABI			+592   fp9
-	  +592   previous backchain	+584   fp8
-	  +584   spill_r31		+576   fp7
-	  +576   spill_r30		+568   fp6
-	  +560   v1			+560   fp5
-	  +552   fp4			+552   fp4
-	  +544   fp3			+544   fp3
-	  +536   fp2			+536   fp2
-	  +528   fp1			+528   fp1
-	  +520   r4			+520   r4
-	  +512   r3			+512   r3
-	   return values
-          +504   free
-	  +496   stackframe
-	  +488   lr
-	  +480   r1
-	  +464   v13
-	  +448   v12
-	  +432   v11
-	  +416   v10
-	  +400   v9
-	  +384   v8
-	  +368   v7
-	  +352   v6
-	  +336   v5
-	  +320   v4
-	  +304   v3
-	  +288   v2
-	 * VMX Parms in V2-V13, V0-V1 are scratch
-	  +284   vrsave
-	  +280   free
-	  +272   fp13
-	  +264   fp12
-	  +256   fp11
-	  +248   fp10
-	  +240   fp9
-	  +232   fp8
-	  +224   fp7
-	  +216   fp6
-	  +208   fp5
-	  +200   fp4
-	  +192   fp3
-	  +184   fp2
-	  +176   fp1
-	 * FP Parms in FP1-FP13, FP0 is a scratch register
-	  +168   r10
-	  +160   r9
-	  +152   r8
-	  +144   r7
-	  +136   r6
-	  +128   r5
-	  +120   r4
-	  +112   r3
-	 * Integer parms in R3-R10, R0 is scratch, R1 SP, R2 is TOC
-	  +104   parm8
-	  +96    parm7
-	  +88    parm6
-	  +80    parm5
-	  +72    parm4
-	  +64    parm3
-	  +56    parm2
-	  +48    parm1
-	 * Parameter save area
-	 * (v1 ABI: Allocated by the call, at least 8 double words)
-	  +40    v1 ABI: TOC save area
-	  +32    v1 ABI: Reserved for linker
-	  +24    v1 ABI: Reserved for compiler / v2 ABI: TOC save area
-	  +16    LR save area
-	  +8     CR save area
-	r1+0     stack back chain
-	*/
-#if _CALL_ELF == 2
-# define FRAME_SIZE 752
-# define VR_RTN 608
-#else
-# define FRAME_SIZE 592
-# define VR_RTN 560
-#endif
-#define INT_RTN 512
-#define FPR_RTN 528
-#define STACK_FRAME 496
-#define CALLING_LR 488
-#define CALLING_SP 480
-#define INT_PARMS 112
-#define FPR_PARMS 176
-#define VR_PARMS 288
-#define VR_VRSAVE 284
-	.section	".toc","aw"
-.LC__dl_hwcap:
-# ifdef SHARED
-	.tc _rtld_local_ro[TC],_rtld_local_ro
-# else
-	.tc _dl_hwcap[TC],_dl_hwcap
-# endif
-	.section ".text"
-
-	.machine	"altivec"
-/* On entry r0 contains the index of the PLT entry we need to fixup
-   and r11 contains the link_map (from PLT0+16).  The link_map becomes
-   parm1 (r3) and the index (r0) needs to be converted to an offset
-   (index * 24) in parm2 (r4).  */
-#ifndef PROF
-EALIGN(_dl_profile_resolve, 4, 0)
-/* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
-   need to call _dl_call_pltexit.  */
-	std	r31,-8(r1)
-	std	r30,-16(r1)
-/* We need to save the registers used to pass parameters, ie. r3 thru
-   r10; the registers are saved in a stack frame.  */
-	stdu	r1,-FRAME_SIZE(r1)
-	cfi_adjust_cfa_offset (FRAME_SIZE)
-	cfi_offset(r31,-8)
-	cfi_offset(r30,-16)
-	std	r3,INT_PARMS+0(r1)
-	mr	r3,r11
-	std	r4,INT_PARMS+8(r1)
-	sldi	r4,r0,1		/* index * 2 */
-	std	r5,INT_PARMS+16(r1)
-	add	r4,r4,r0	/* index * 3 */
-	std	r6,INT_PARMS+24(r1)
-	sldi	r4,r4,3		/* index * 24  == PLT offset */
-	mflr	r5
-	std	r7,INT_PARMS+32(r1)
-	std	r8,INT_PARMS+40(r1)
-/* Store the LR in the LR Save area.  */
-	la	r8,FRAME_SIZE(r1)
-	std	r5,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	cfi_offset (lr, FRAME_LR_SAVE)
-	std	r5,CALLING_LR(r1)
-	std	r9,INT_PARMS+48(r1)
-	std	r10,INT_PARMS+56(r1)
-	std	r8,CALLING_SP(r1)
-	ld	r12,.LC__dl_hwcap@toc(r2)
-#ifdef SHARED
-	/* Load _rtld_local_ro._dl_hwcap.  */
-	ld	r12,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r12)
-#else
-	ld	r12,0(r12) /* Load extern _dl_hwcap.  */
-#endif
-	andis.  r0,r12,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-	beq	L(saveFP)
-	la	r10,(VR_PARMS+0)(r1)
-	la	r9,(VR_PARMS+16)(r1)
-	li	r11,32
-	li	r12,64
-	stvx	v2,0,r10
-	stvx	v3,0,r9
-
-	stvx	v4,r11,r10
-	stvx	v5,r11,r9
-	addi	r11,r11,64
-
-	stvx	v6,r12,r10
-	stvx	v7,r12,r9
-	addi	r12,r12,64
-
-	stvx	v8,r11,r10
-	stvx	v9,r11,r9
-	addi	r11,r11,64
-
-	stvx	v10,r12,r10
-	stvx	v11,r12,r9
-	mfspr	r0,VRSAVE
-
-	stvx	v12,r11,r10
-	stvx	v13,r11,r9
-L(saveFP):
-	stw	r0,VR_VRSAVE(r1)
-/* Save floating registers.  */
-	stfd	fp1,FPR_PARMS+0(r1)
-	stfd	fp2,FPR_PARMS+8(r1)
-	stfd	fp3,FPR_PARMS+16(r1)
-	stfd	fp4,FPR_PARMS+24(r1)
-	stfd	fp5,FPR_PARMS+32(r1)
-	stfd	fp6,FPR_PARMS+40(r1)
-	stfd	fp7,FPR_PARMS+48(r1)
-	stfd	fp8,FPR_PARMS+56(r1)
-	stfd	fp9,FPR_PARMS+64(r1)
-	stfd	fp10,FPR_PARMS+72(r1)
-	stfd	fp11,FPR_PARMS+80(r1)
-	li	r0,-1
-	stfd	fp12,FPR_PARMS+88(r1)
-	stfd	fp13,FPR_PARMS+96(r1)
-/* Load the extra parameters.  */
-	addi	r6,r1,INT_PARMS
-	addi	r7,r1,STACK_FRAME
-/* Save  link_map* and reloc_addr parms for later.  */
-	mr	r31,r3
-	mr	r30,r4
-	std	r0,0(r7)
-	bl	JUMPTARGET(_dl_profile_fixup)
-#ifndef SHARED
-	nop
-#endif
-/* Test *framesizep > 0 to see if need to do pltexit processing.  */
-	ld	r0,STACK_FRAME(r1)
-/* Put the registers back.  */
-	lwz	r12,VR_VRSAVE(r1)
-	cmpdi	cr1,r0,0
-	cmpdi	cr0,r12,0
-	bgt	cr1,L(do_pltexit)
-	la	r10,(VR_PARMS+0)(r1)
-	la	r9,(VR_PARMS+16)(r1)
-/* VRSAVE must be non-zero if VMX is present and VRs are in use. */
-	beq	L(restoreFXR)
-	li	r11,32
-	li	r12,64
-	lvx	v2,0,r10
-	lvx	v3,0,r9
-
-	lvx	v4,r11,r10
-	lvx	v5,r11,r9
-	addi	r11,r11,64
-
-	lvx	v6,r12,r10
-	lvx	v7,r12,r9
-	addi	r12,r12,64
-
-	lvx	v8,r11,r10
-	lvx	v9,r11,r9
-	addi	r11,r11,64
-
-	lvx	v10,r12,r10
-	lvx	v11,r12,r9
-
-	lvx	v12,r11,r10
-	lvx	v13,r11,r9
-L(restoreFXR):
-	ld	r0,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	ld	r10,INT_PARMS+56(r1)
-	ld	r9,INT_PARMS+48(r1)
-	ld	r8,INT_PARMS+40(r1)
-	ld	r7,INT_PARMS+32(r1)
-	mtlr	r0
-	ld	r6,INT_PARMS+24(r1)
-	ld	r5,INT_PARMS+16(r1)
-	ld	r4,INT_PARMS+8(r1)
-/* Prepare for calling the function returned by fixup.  */
-	PPC64_LOAD_FUNCPTR r3
-	ld	r3,INT_PARMS+0(r1)
-#if _CALL_ELF == 2
-/* Restore the caller's TOC in case we jump to a local entry point.  */
-	ld	r2,FRAME_SIZE+FRAME_TOC_SAVE(r1)
-#endif
-/* Load the floating point registers.  */
-	lfd	fp1,FPR_PARMS+0(r1)
-	lfd	fp2,FPR_PARMS+8(r1)
-	lfd	fp3,FPR_PARMS+16(r1)
-	lfd	fp4,FPR_PARMS+24(r1)
-	lfd	fp5,FPR_PARMS+32(r1)
-	lfd	fp6,FPR_PARMS+40(r1)
-	lfd	fp7,FPR_PARMS+48(r1)
-	lfd	fp8,FPR_PARMS+56(r1)
-	lfd	fp9,FPR_PARMS+64(r1)
-	lfd	fp10,FPR_PARMS+72(r1)
-	lfd	fp11,FPR_PARMS+80(r1)
-	lfd	fp12,FPR_PARMS+88(r1)
-	lfd	fp13,FPR_PARMS+96(r1)
-/* Unwind the stack frame, and jump.  */
-	ld	r31,FRAME_SIZE-8(r1)
-	ld	r30,FRAME_SIZE-16(r1)
-	addi	r1,r1,FRAME_SIZE
-	bctr
-
-L(do_pltexit):
-	la	r10,(VR_PARMS+0)(r1)
-	la	r9,(VR_PARMS+16)(r1)
-	beq	L(restoreFXR2)
-	li	r11,32
-	li	r12,64
-	lvx	v2,0,r10
-	lvx	v3,0,r9
-
-	lvx	v4,r11,r10
-	lvx	v5,r11,r9
-	addi	r11,r11,64
-
-	lvx	v6,r12,r10
-	lvx	v7,r12,r9
-	addi	r12,r12,64
-
-	lvx	v8,r11,r10
-	lvx	v9,r11,r9
-	addi	r11,r11,64
-
-	lvx	v10,r12,r10
-	lvx	v11,r12,r9
-
-	lvx	v12,r11,r10
-	lvx	v13,r11,r9
-L(restoreFXR2):
-	ld	r0,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	ld	r10,INT_PARMS+56(r1)
-	ld	r9,INT_PARMS+48(r1)
-	ld	r8,INT_PARMS+40(r1)
-	ld	r7,INT_PARMS+32(r1)
-	mtlr	r0
-	ld	r6,INT_PARMS+24(r1)
-	ld	r5,INT_PARMS+16(r1)
-	ld	r4,INT_PARMS+8(r1)
-/* Prepare for calling the function returned by fixup.  */
-	std	r2,FRAME_TOC_SAVE(r1)
-	PPC64_LOAD_FUNCPTR r3
-	ld	r3,INT_PARMS+0(r1)
-/* Load the floating point registers.  */
-	lfd	fp1,FPR_PARMS+0(r1)
-	lfd	fp2,FPR_PARMS+8(r1)
-	lfd	fp3,FPR_PARMS+16(r1)
-	lfd	fp4,FPR_PARMS+24(r1)
-	lfd	fp5,FPR_PARMS+32(r1)
-	lfd	fp6,FPR_PARMS+40(r1)
-	lfd	fp7,FPR_PARMS+48(r1)
-	lfd	fp8,FPR_PARMS+56(r1)
-	lfd	fp9,FPR_PARMS+64(r1)
-	lfd	fp10,FPR_PARMS+72(r1)
-	lfd	fp11,FPR_PARMS+80(r1)
-	lfd	fp12,FPR_PARMS+88(r1)
-	lfd	fp13,FPR_PARMS+96(r1)
-/* Call the target function.  */
-	bctrl
-	ld	r2,FRAME_TOC_SAVE(r1)
-	lwz	r12,VR_VRSAVE(r1)
-/* But return here and store the return values.  */
-	std	r3,INT_RTN(r1)
-	std	r4,INT_RTN+8(r1)
-	stfd	fp1,FPR_RTN+0(r1)
-	stfd	fp2,FPR_RTN+8(r1)
-	cmpdi	cr0,r12,0
-	la	r10,VR_RTN(r1)
-	stfd	fp3,FPR_RTN+16(r1)
-	stfd	fp4,FPR_RTN+24(r1)
-#if _CALL_ELF == 2
-	la	r12,VR_RTN+16(r1)
-	stfd	fp5,FPR_RTN+32(r1)
-	stfd	fp6,FPR_RTN+40(r1)
-	li	r5,32
-	li	r6,64
-	stfd	fp7,FPR_RTN+48(r1)
-	stfd	fp8,FPR_RTN+56(r1)
-	stfd	fp9,FPR_RTN+64(r1)
-	stfd	fp10,FPR_RTN+72(r1)
-#endif
-	mr	r3,r31
-	mr	r4,r30
-	beq	L(callpltexit)
-	stvx	v2,0,r10
-#if _CALL_ELF == 2
-	stvx	v3,0,r12
-	stvx	v4,r5,r10
-	stvx	v5,r5,r12
-	addi	r5,r5,64
-	stvx	v6,r6,r10
-	stvx	v7,r6,r12
-	stvx	v8,r5,r10
-	stvx	v9,r5,r12
-#endif
-L(callpltexit):
-	addi	r5,r1,INT_PARMS
-	addi	r6,r1,INT_RTN
-	bl	JUMPTARGET(_dl_call_pltexit)
-#ifndef SHARED
-	nop
-#endif
-/* Restore the return values from target function.  */
-	lwz	r12,VR_VRSAVE(r1)
-	ld	r3,INT_RTN(r1)
-	ld	r4,INT_RTN+8(r1)
-	lfd	fp1,FPR_RTN+0(r1)
-	lfd	fp2,FPR_RTN+8(r1)
-	cmpdi	cr0,r12,0
-	la	r11,VR_RTN(r1)
-	lfd	fp3,FPR_RTN+16(r1)
-	lfd	fp4,FPR_RTN+24(r1)
-#if _CALL_ELF == 2
-	la	r12,VR_RTN+16(r1)
-	lfd	fp5,FPR_RTN+32(r1)
-	lfd	fp6,FPR_RTN+40(r1)
-	li	r30,32
-	li	r31,64
-	lfd	fp7,FPR_RTN+48(r1)
-	lfd	fp8,FPR_RTN+56(r1)
-	lfd	fp9,FPR_RTN+64(r1)
-	lfd	fp10,FPR_RTN+72(r1)
-#endif
-	beq	L(pltexitreturn)
-	lvx	v2,0,r11
-#if _CALL_ELF == 2
-	lvx	v3,0,r12
-	lvx	v4,r30,r11
-	lvx	v5,r30,r12
-	addi	r30,r30,64
-	lvx	v6,r31,r11
-	lvx	v7,r31,r12
-	lvx	v8,r30,r11
-	lvx	v9,r30,r12
-#endif
-L(pltexitreturn):
-	ld	r0,FRAME_SIZE+FRAME_LR_SAVE(r1)
-	ld	r31,FRAME_SIZE-8(r1)
-	ld	r30,FRAME_SIZE-16(r1)
-	mtlr	r0
-	ld	r1,0(r1)
-	blr
-END(_dl_profile_resolve)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/entry.h b/sysdeps/powerpc/powerpc64/entry.h
deleted file mode 100644
index 9131d9ceb6..0000000000
--- a/sysdeps/powerpc/powerpc64/entry.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Finding the entry point and start of text.  PowerPC64 version.
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-
-#ifndef __ASSEMBLY__
-extern void _start (void);
-#endif
-
-#define ENTRY_POINT _start
-
-#if _CALL_ELF != 2
-/* We have to provide a special declaration.  */
-#define ENTRY_POINT_DECL(class) class void _start (void);
-
-/* Use the address of ._start as the lowest address for which we need
-   to keep profiling records.  We can't copy the ia64 scheme as our
-   entry poiny address is really the address of the function
-   descriptor, not the actual function entry.  */
-#define TEXT_START \
-  ({ extern unsigned long int _start_as_data[] asm ("_start");  \
-     _start_as_data[0]; })
-#endif
diff --git a/sysdeps/powerpc/powerpc64/ffsll.c b/sysdeps/powerpc/powerpc64/ffsll.c
deleted file mode 100644
index ae18f127a0..0000000000
--- a/sysdeps/powerpc/powerpc64/ffsll.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Find first set bit in a word, counted from least significant end.
-   For PowerPC.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define ffsl __something_else
-#include <limits.h>
-#include <string.h>
-
-#undef	ffs
-
-int
-__ffsll (long long int x)
-{
-  int cnt;
-
-  asm ("cntlzd %0,%1" : "=r" (cnt) : "r" (x & -x));
-  return 64 - cnt;
-}
-weak_alias (__ffsll, ffsll)
-#undef ffsl
-weak_alias (__ffsll, ffsl)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
deleted file mode 100644
index 317a988854..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-ifeq ($(subdir),math)
-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
-		   s_isnan-power5 s_isnan-ppc64 s_copysign-power6 \
-		   s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \
-		   s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
-		   s_isinf-ppc64 s_modf-power5+ s_modf-ppc64 \
-		   s_modff-power5+ s_modff-ppc64 s_isnan-power8 \
-		   s_isinf-power8 s_finite-power8
-
-libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \
-			s_isnan-power5 s_isnan-ppc64 s_llround-power6x \
-			s_llround-power5+ s_llround-ppc64 s_ceil-power5+ \
-			s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 \
-			s_floor-power5+ s_floor-ppc64 s_floorf-power5+ \
-			s_floorf-ppc64 s_round-power5+ s_round-ppc64 \
-			s_roundf-power5+ s_roundf-ppc64 s_trunc-power5+ \
-			s_trunc-ppc64 s_truncf-power5+ s_truncf-ppc64 \
-			s_copysign-power6 s_copysign-ppc64 s_llrint-power6x \
-			s_llrint-ppc64 s_finite-power7 s_finite-ppc64 \
-			s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \
-			s_isinf-ppc64 s_logb-power7 s_logbf-power7 \
-			s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \
-			s_logbl-ppc64 s_modf-power5+ s_modf-ppc64 \
-			s_modff-power5+ s_modff-ppc64 e_hypot-ppc64 \
-			e_hypot-power7 e_hypotf-ppc64 e_hypotf-power7 \
-			s_isnan-power8 s_isinf-power8 s_finite-power8 \
-			s_llrint-power8 s_llround-power8 \
-			e_expf-power8 e_expf-ppc64 \
-			s_sinf-ppc64 s_sinf-power8 \
-			s_cosf-ppc64 s_cosf-power8
-
-CFLAGS-s_logbf-power7.c = -mcpu=power7
-CFLAGS-s_logbl-power7.c = -mcpu=power7
-CFLAGS-s_logb-power7.c = -mcpu=power7
-CFLAGS-s_modf-power5+.c = -mcpu=power5+
-CFLAGS-s_modff-power5+.c = -mcpu=power5+
-CFLAGS-e_hypot-power7.c = -mcpu=power7
-CFLAGS-e_hypotf-power7.c = -mcpu=power7
-
-# These files quiet sNaNs in a way that is optimized away without
-# -fsignaling-nans.
-CFLAGS-s_modf-ppc64.c += -fsignaling-nans
-CFLAGS-s_modff-ppc64.c += -fsignaling-nans
-endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
deleted file mode 100644
index 1e6cc51d9e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee754_expf() POWER8 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_expf __ieee754_expf_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c
deleted file mode 100644
index b236290ea2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf-ppc64.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* __ieee_expf() PowerPC64 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_expf __ieee754_expf_ppc64
-
-#include <sysdeps/ieee754/flt-32/e_expf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
deleted file mode 100644
index 577093675c..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_expf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Multiple versions of ieee754_expf.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include "init-arch.h"
-
-extern __typeof (__ieee754_expf) __ieee754_expf_ppc64 attribute_hidden;
-extern __typeof (__ieee754_expf) __ieee754_expf_power8 attribute_hidden;
-
-libc_ifunc (__ieee754_expf,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __ieee754_expf_power8
-	    : __ieee754_expf_ppc64);
-
-strong_alias (__ieee754_expf, __expf_finite)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c
deleted file mode 100644
index dbe9b33e2e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* __ieee_hypot() POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
deleted file mode 100644
index baebb36ae3..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee_hypot() PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypot __ieee754_hypot_ppc64
-
-#include <sysdeps/powerpc/fpu/e_hypot.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
deleted file mode 100644
index 6a3d60a830..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ieee754_hypot.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ieee754_hypot) __ieee754_hypot_ppc64 attribute_hidden;
-extern __typeof (__ieee754_hypot) __ieee754_hypot_power7 attribute_hidden;
-
-libc_ifunc (__ieee754_hypot,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __ieee754_hypot_power7
-            : __ieee754_hypot_ppc64);
-
-strong_alias (__ieee754_hypot, __hypot_finite)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c
deleted file mode 100644
index 70584863f7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* __ieee_hypotf() POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
deleted file mode 100644
index 839e94e56c..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* __ieee_hypot() PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __ieee754_hypotf __ieee754_hypotf_ppc64
-
-#include <sysdeps/powerpc/fpu/e_hypotf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
deleted file mode 100644
index 2c8112d3b2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ieee754_hypot.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ieee754_hypotf) __ieee754_hypotf_ppc64 attribute_hidden;
-extern __typeof (__ieee754_hypotf) __ieee754_hypotf_power7 attribute_hidden;
-
-libc_ifunc (__ieee754_hypotf,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __ieee754_hypotf_power7
-            : __ieee754_hypotf_ppc64);
-
-strong_alias (__ieee754_hypotf, __hypotf_finite)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S
deleted file mode 100644
index bbea647da7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* ceil function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __ceil __ceil_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S
deleted file mode 100644
index c19bb42329..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* ceil function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __ceil __ceil_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_ceil.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c
deleted file mode 100644
index 968e8cb17e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of ceil.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ceil) __ceil_ppc64 attribute_hidden;
-extern __typeof (__ceil) __ceil_power5plus attribute_hidden;
-
-libc_ifunc (__ceil,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __ceil_power5plus
-            : __ceil_ppc64);
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ceil, __ceill)
-weak_alias (__ceil, ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S
deleted file mode 100644
index 8e875ce679..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* ceilf function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __ceilf __ceilf_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S
deleted file mode 100644
index c9d31da2a7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* ceilf function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __ceilf __ceilf_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_ceilf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c
deleted file mode 100644
index 7d4a028fe5..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of ceilf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__ceilf) __ceilf_ppc64 attribute_hidden;
-extern __typeof (__ceilf) __ceilf_power5plus attribute_hidden;
-
-libc_ifunc (__ceilf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __ceilf_power5plus
-            : __ceilf_ppc64);
-
-weak_alias (__ceilf, ceilf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S
deleted file mode 100644
index d59fbfae73..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* copysign().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a, b, c, d)
-#undef hidden_def
-#define hidden_def(name)
-
-#define __copysign __copysign_power6
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_copysign.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S
deleted file mode 100644
index 3f4fbc96ad..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* copysign().  PowerPC64 default version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a, b, c, d)
-
-#define __copysign __copysign_ppc64
-#undef hidden_def
-#define hidden_def(name)				\
-  strong_alias (__copysign_ppc64, __GI___copysign)
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_copysign.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
deleted file mode 100644
index 2bfb625bf7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Multiple versions of copysign.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Redefine copysign so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias below.  */
-#undef __copysign
-#define __copysign __redirect_copysign
-#include <math.h>
-#include <math_ldbl_opt.h>
-#undef __copysign
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__redirect_copysign) __copysign_ppc64 attribute_hidden;
-extern __typeof (__redirect_copysign) __copysign_power6 attribute_hidden;
-
-extern __typeof (__redirect_copysign) __libm_copysign;
-libc_ifunc (__libm_copysign,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __copysign_power6
-            : __copysign_ppc64);
-
-strong_alias (__libm_copysign, __copysign)
-weak_alias (__copysign, copysign)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c
deleted file mode 100644
index c9be2b6811..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of copysignf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-/* It's safe to use double-precision implementation for single-precision. */
-extern __typeof (__copysignf) __copysign_ppc64 attribute_hidden;
-extern __typeof (__copysignf) __copysign_power6 attribute_hidden;
-
-libc_ifunc (__copysignf,
-	    (hwcap & PPC_FEATURE_ARCH_2_05)
-	    ? __copysign_power6
-            : __copysign_ppc64);
-
-weak_alias (__copysignf, copysignf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S
deleted file mode 100644
index ee00a2c43a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* cosf function.  PowerPC64/power8 version.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __cosf __cosf_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-ppc64.c
deleted file mode 100644
index 635624c538..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* cosf function.  PowerPC64 default version.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __cosf __cosf_ppc64
-
-#include <sysdeps/powerpc/fpu/s_cosf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c
deleted file mode 100644
index acf2a59d69..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Multiple versions of cosf.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__cosf) __cosf_ppc64 attribute_hidden;
-extern __typeof (__cosf) __cosf_power8 attribute_hidden;
-
-libc_ifunc (__cosf,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __cosf_power8
-	    : __cosf_ppc64);
-
-weak_alias (__cosf, cosf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S
deleted file mode 100644
index 9220383ee6..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __finite __finite_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
deleted file mode 100644
index fa878ab3e1..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __finite __finite_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c
deleted file mode 100644
index fabd9b0e3d..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* finite().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define FINITE __finite_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finite_ppc64, __GI___finite, __finite_ppc64);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_finite.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
deleted file mode 100644
index a5ec36b72f..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Multiple versions of finite.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finite __redirect___finite
-#define __finitef __redirect___finitef
-#define __finitel __redirect___finitel
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finite) __finite_ppc64 attribute_hidden;
-extern __typeof (__finite) __finite_power7 attribute_hidden;
-extern __typeof (__finite) __finite_power8 attribute_hidden;
-#undef __finite
-#undef __finitef
-#undef __finitel
-
-libc_ifunc_redirected (__redirect___finite, __finite,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __finite_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __finite_power7
-			 : __finite_ppc64);
-
-weak_alias (__finite, finite)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__finite, __finitel)
-weak_alias (__finite, finitel)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0);
-# endif
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_1);
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c
deleted file mode 100644
index c6f8033e6e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* finitef().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define FINITEF __finitef_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__finitef_ppc64, __GI___finitef, __finitef_ppc64);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_finitef.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
deleted file mode 100644
index cdd7824efb..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of finitef.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __finitef __redirect___finitef
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__finitef) __finitef_ppc64 attribute_hidden;
-/* The double-precision version also works for single-precision.  */
-extern __typeof (__finitef) __finite_power7 attribute_hidden;
-extern __typeof (__finitef) __finite_power8 attribute_hidden;
-#undef __finitef
-
-libc_ifunc_redirected (__redirect___finitef, __finitef,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __finite_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __finite_power7
-			 : __finitef_ppc64);
-
-weak_alias (__finitef, finitef)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S
deleted file mode 100644
index 24f2460693..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* floor function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __floor __floor_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S
deleted file mode 100644
index 5ec9a33d89..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* floor function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __floor __floor_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_floor.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
deleted file mode 100644
index 6ab7a35490..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of floor.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__floor) __floor_ppc64 attribute_hidden;
-extern __typeof (__floor) __floor_power5plus attribute_hidden;
-
-libc_ifunc (__floor,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __floor_power5plus
-            : __floor_ppc64);
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__floor, __floorl)
-weak_alias (__floor, floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S
deleted file mode 100644
index 8b621de68e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* floorf function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __floorf __floorf_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S
deleted file mode 100644
index 3feea6e162..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S
+++ /dev/null
@@ -1,27 +0,0 @@
-/* floorf function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __floorf __floorf_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_floorf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
deleted file mode 100644
index ee96536247..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of floorf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__floorf) __floorf_ppc64 attribute_hidden;
-extern __typeof (__floorf) __floorf_power5plus attribute_hidden;
-
-libc_ifunc (__floorf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __floorf_power5plus
-            : __floorf_ppc64);
-
-weak_alias (__floorf, floorf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S
deleted file mode 100644
index 33a7e3de1a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isinf().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __isinf __isinf_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S
deleted file mode 100644
index b630696927..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isinf().  PowerPC64/POWER8 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __isinf __isinf_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c
deleted file mode 100644
index e7f64438b4..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isinf().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __isinf __isinf_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__isinf_ppc64, __GI___isinf, __isinf_ppc64);
-#endif
-
-#include <sysdeps/ieee754/dbl-64/s_isinf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
deleted file mode 100644
index 9c6789c7bd..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Multiple versions of isinf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isinf __redirect___isinf
-#define __isinff __redirect___isinff
-#define __isinfl __redirect___isinfl
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isinf) __isinf_ppc64 attribute_hidden;
-extern __typeof (__isinf) __isinf_power7 attribute_hidden;
-extern __typeof (__isinf) __isinf_power8 attribute_hidden;
-#undef __isinf
-#undef __isinff
-#undef __isinfl
-
-libc_ifunc_redirected (__redirect___isinf, __isinf,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __isinf_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __isinf_power7
-			 : __isinf_ppc64);
-
-weak_alias (__isinf, isinf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
-weak_alias (__isinf, isinfl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
-compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c
deleted file mode 100644
index e58e0b53be..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* isinff().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __isinff __isinff_ppc64
-#ifdef SHARED
-# undef hidden_def
-# define hidden_def(a) \
-   __hidden_ver1 (__isinff_ppc64, __GI___isinff, __isinff_ppc64);
-#endif
-
-#include <sysdeps/ieee754/flt-32/s_isinff.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c
deleted file mode 100644
index 439e0b80d1..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Multiple versions of isinf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isinff __redirect___isinff
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isinff) __isinff_ppc64 attribute_hidden;
-/* The double-precision version also works for single-precision.  */
-extern __typeof (__isinff) __isinf_power7 attribute_hidden;
-extern __typeof (__isinff) __isinf_power8 attribute_hidden;
-#undef __isinff
-
-libc_ifunc_redirected (__redirect___isinff, __isinff,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __isinf_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __isinf_power7
-			 : __isinff_ppc64);
-
-weak_alias (__isinff, isinff)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S
deleted file mode 100644
index 18d368a63b..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER5 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power5
-
-#include <sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S
deleted file mode 100644
index 7f0eae0430..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER6 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power6
-
-#include <sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S
deleted file mode 100644
index aa283096ae..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER6X version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power6x
-
-#include <sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S
deleted file mode 100644
index b67d58e2ea..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S
deleted file mode 100644
index 03151b3087..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power8.S
+++ /dev/null
@@ -1,33 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef hidden_def
-#define hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, symbol, ver)
-
-#define __isnan __isnan_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S
deleted file mode 100644
index ee219c14be..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* isnan().  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-
-#define __isnan __isnan_ppc64
-#undef hidden_def
-#define hidden_def(name) \
-  .globl __GI___isnan ; .set __GI___isnan,__isnan_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_isnan.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
deleted file mode 100644
index 3cfe1793da..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Multiple versions of isnan.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __isnan __redirect___isnan
-#define __isnanf __redirect___isnanf
-#define __isnanl __redirect___isnanl
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__isnan) __isnan_ppc64 attribute_hidden;
-extern __typeof (__isnan) __isnan_power5 attribute_hidden;
-extern __typeof (__isnan) __isnan_power6 attribute_hidden;
-extern __typeof (__isnan) __isnan_power6x attribute_hidden;
-extern __typeof (__isnan) __isnan_power7 attribute_hidden;
-extern __typeof (__isnan) __isnan_power8 attribute_hidden;
-#undef __isnan
-#undef __isnanf
-#undef __isnanl
-
-libc_ifunc_redirected (__redirect___isnan, __isnan,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __isnan_power8
-		       : (hwcap & PPC_FEATURE_ARCH_2_06)
-			 ? __isnan_power7
-			 : (hwcap & PPC_FEATURE_POWER6_EXT)
-			   ? __isnan_power6x
-			   : (hwcap & PPC_FEATURE_ARCH_2_05)
-			     ? __isnan_power6
-			     : (hwcap & PPC_FEATURE_POWER5)
-			       ? __isnan_power5
-			       : __isnan_ppc64);
-
-weak_alias (__isnan, isnan)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c
deleted file mode 100644
index 958c373245..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of isnan.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-/* The double-precision implementation also works for the single one.  */
-extern __typeof (__isnanf) __isnan_ppc64 attribute_hidden;
-extern __typeof (__isnanf) __isnan_power5 attribute_hidden;
-extern __typeof (__isnanf) __isnan_power6 attribute_hidden;
-extern __typeof (__isnanf) __isnan_power6x attribute_hidden;
-extern __typeof (__isnanf) __isnan_power7 attribute_hidden;
-extern __typeof (__isnanf) __isnan_power8 attribute_hidden;
-
-libc_ifunc_hidden (__isnanf, __isnanf,
-		   (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		   ? __isnan_power8
-		   : (hwcap & PPC_FEATURE_ARCH_2_06)
-		     ? __isnan_power7
-		     : (hwcap & PPC_FEATURE_POWER6_EXT)
-		       ? __isnan_power6x
-		       : (hwcap & PPC_FEATURE_ARCH_2_05)
-			 ? __isnan_power6
-			 : (hwcap & PPC_FEATURE_POWER5)
-			   ? __isnan_power5
-			   : __isnan_ppc64);
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S
deleted file mode 100644
index f9b1616be3..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Round double to long int.  PowerPC64/POWER6X default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llrint __llrint_power6x
-
-#include <sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S
deleted file mode 100644
index b7f5276a66..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power8.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Round double to long int.  PowerPC64/POWER6X default version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llrint __llrint_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S
deleted file mode 100644
index b92dafbcdb..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Round double to long int.  PowerPC32 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llrint __llrint_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_llrint.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
deleted file mode 100644
index 8db494cfde..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Multiple versions of llrint.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Redefine lrint/__lrint so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias below.  */
-#define lrint __hidden_lrint
-#define __lrint __hidden___lrint
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#undef lrint
-#undef __lrint
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__llrint) __llrint_ppc64 attribute_hidden;
-extern __typeof (__llrint) __llrint_power6x attribute_hidden;
-extern __typeof (__llrint) __llrint_power8 attribute_hidden;
-
-libc_ifunc (__llrint,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __llrint_power8 :
-	      (hwcap & PPC_FEATURE_POWER6_EXT)
-	      ? __llrint_power6x
-            : __llrint_ppc64);
-
-weak_alias (__llrint, llrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1);
-#endif
-
-/* long has the same width as long long on PowerPC64.  */
-strong_alias (__llrint, __lrint)
-weak_alias (__lrint, lrint)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S
deleted file mode 100644
index b8305ce968..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* llround().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llround __llround_power5plus
-#define __lround __lround_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S
deleted file mode 100644
index 1145aff2a8..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* llround().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __llround __llround_power6x
-#define __lround __lround_power6x
-
-#include <sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S
deleted file mode 100644
index 8d6190df89..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power8.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* llround().  PowerPC64 default version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef strong_alias
-#define strong_alias(name, alias)
-#undef compat_symbol
-#define compat_symbol(lib, name, alias, ver)
-
-#define __llround __llround_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S
deleted file mode 100644
index 8e6f9aed78..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* llround().  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __llround __llround_ppc64
-#define __lround __lround_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_llround.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
deleted file mode 100644
index cb1a446158..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Multiple versions of llround.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define lround __hidden_lround
-#define __lround __hidden___lround
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__llround) __llround_ppc64 attribute_hidden;
-extern __typeof (__llround) __llround_power5plus attribute_hidden;
-extern __typeof (__llround) __llround_power6x attribute_hidden;
-extern __typeof (__llround) __llround_power8 attribute_hidden;
-
-libc_ifunc (__llround,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __llround_power8 :
-	      (hwcap & PPC_FEATURE_POWER6_EXT)
-	      ? __llround_power6x :
-		(hwcap & PPC_FEATURE_POWER5_PLUS)
-		? __llround_power5plus
-            : __llround_ppc64);
-
-weak_alias (__llround, llround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1);
-compat_symbol (libm, llround, lroundl, GLIBC_2_1);
-#endif
-
-/* long has the same width as long long on PPC64.  */
-#undef lround
-#undef __lround
-strong_alias (__llround, __lround)
-weak_alias (__llround, lround)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llround, __llroundl)
-weak_alias (__llround, llroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c
deleted file mode 100644
index 73b5e2d48c..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* logb().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c
deleted file mode 100644
index e428b9a29a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* logb(). PowerPC32/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#define __logb __logb_ppc64
-
-#include <sysdeps/ieee754/dbl-64/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
deleted file mode 100644
index d70919e3d4..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of logb.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logb) __logb_ppc64 attribute_hidden;
-extern __typeof (__logb) __logb_power7 attribute_hidden;
-
-libc_ifunc (__logb,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logb_power7
-            : __logb_ppc64);
-
-weak_alias (__logb, logb)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__logb, __logbl)
-weak_alias (__logb, logbl)
-#endif
-
-#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, logb, logbl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c
deleted file mode 100644
index 02e04318e5..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* logb().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c
deleted file mode 100644
index 147b710c73..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* logbf().  PowerPC64 default implementation.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __logbf __logbf_ppc64
-
-#include <sysdeps/ieee754/flt-32/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
deleted file mode 100644
index 1cacc8a950..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of logbf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logbf) __logbf_ppc64 attribute_hidden;
-extern __typeof (__logbf) __logbf_power7 attribute_hidden;
-
-libc_ifunc (__logbf,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logbf_power7
-            : __logbf_ppc64);
-
-weak_alias (__logbf, logbf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c
deleted file mode 100644
index 60ec533b8e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* logb().  PowerPC64/POWER7 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c
deleted file mode 100644
index 502410f877..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* logbl(). PowerPC64/POWER7 version.
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define __logbl __logbl_ppc64
-
-#include <sysdeps/ieee754/ldbl-128ibm/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c
deleted file mode 100644
index 63b9c812e2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of logbl.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__logbl) __logbl_ppc64 attribute_hidden;
-extern __typeof (__logbl) __logbl_power7 attribute_hidden;
-
-libc_ifunc (__logbl,
-	    (hwcap & PPC_FEATURE_ARCH_2_06)
-	    ? __logbl_power7
-            : __logbl_ppc64);
-
-long_double_symbol (libm, __logbl, logbl);
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c
deleted file mode 100644
index d09286267b..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c
+++ /dev/null
@@ -1 +0,0 @@
- /* __lrint is in s_llrint.c  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c
deleted file mode 100644
index 0dab5443e2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c
+++ /dev/null
@@ -1 +0,0 @@
-/* __lround is in s_llround.c  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c
deleted file mode 100644
index c923f84d97..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC/POWER5+ implementation for modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c
deleted file mode 100644
index 43318ee4dd..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* PowerPC64 default implementation for modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-
-#define __modf __modf_ppc64
-
-#include <sysdeps/ieee754/dbl-64/s_modf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
deleted file mode 100644
index 3e79b2bd5a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of modf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__modf) __modf_ppc64 attribute_hidden;
-extern __typeof (__modf) __modf_power5plus attribute_hidden;
-
-libc_ifunc (__modf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __modf_power5plus
-            : __modf_ppc64);
-
-weak_alias (__modf, modf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__modf, __modfl)
-weak_alias (__modf, modfl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __modf, modfl, GLIBC_2_0);
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __modf, modfl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c
deleted file mode 100644
index 22dbf5341e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC/POWER5+ implementation for modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c
deleted file mode 100644
index 6fc97f0114..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* PowerPC64 default implementation for modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __modff __modff_ppc64
-
-#include <sysdeps/ieee754/flt-32/s_modff.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c
deleted file mode 100644
index f57939cc66..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Multiple versions of modff.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include "init-arch.h"
-
-extern __typeof (__modff) __modff_ppc64 attribute_hidden;
-extern __typeof (__modff) __modff_power5plus attribute_hidden;
-
-libc_ifunc (__modff,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __modff_power5plus
-            : __modff_ppc64);
-
-weak_alias (__modff, modff)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S
deleted file mode 100644
index a7c7492f21..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* round function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __round __round_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S
deleted file mode 100644
index 44a2b0105a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* round function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __round __round_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_round.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
deleted file mode 100644
index d440f6f45c..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of round.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__round) __round_ppc64 attribute_hidden;
-extern __typeof (__round) __round_power5plus attribute_hidden;
-
-libc_ifunc (__round,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __round_power5plus
-            : __round_ppc64);
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__round, __roundl)
-weak_alias (__round, roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __round, roundl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S
deleted file mode 100644
index 81501a1547..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* roundf function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __roundf __roundf_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S
deleted file mode 100644
index 8f3b24c556..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* roundf function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __roundf __roundf_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_roundf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
deleted file mode 100644
index 09609d3e91..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of roundf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__roundf) __roundf_ppc64 attribute_hidden;
-extern __typeof (__roundf) __roundf_power5plus attribute_hidden;
-
-libc_ifunc (__roundf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __roundf_power5plus
-            : __roundf_ppc64);
-
-weak_alias (__roundf, roundf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S
deleted file mode 100644
index 3d01533da8..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* sinf().  PowerPC64/POWER8 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __sinf __sinf_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-ppc64.c
deleted file mode 100644
index 83e37f92c6..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* sinf().  PowerPC64 default version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-#define __sinf __sinf_ppc64
-
-#include <sysdeps/ieee754/flt-32/s_sinf.c>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c
deleted file mode 100644
index 6d7d6ce50d..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Multiple versions of sinf.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__sinf) __sinf_ppc64 attribute_hidden;
-extern __typeof (__sinf) __sinf_power8 attribute_hidden;
-
-libc_ifunc (__sinf,
-            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-            ? __sinf_power8
-            : __sinf_ppc64);
-
-weak_alias (__sinf, sinf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S
deleted file mode 100644
index 53d8cd5013..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* trunc function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __trunc __trunc_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S
deleted file mode 100644
index 36e8fd05c2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* trunc function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-#undef strong_alias
-#define strong_alias(a,b)
-#undef compat_symbol
-#define compat_symbol(a,b,c,d)
-
-#define __trunc __trunc_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_trunc.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c
deleted file mode 100644
index 54844d5ff2..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of trunc.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__trunc) __trunc_ppc64 attribute_hidden;
-extern __typeof (__trunc) __trunc_power5plus attribute_hidden;
-
-libc_ifunc (__trunc,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __trunc_power5plus
-            : __trunc_ppc64);
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__trunc, __truncl)
-weak_alias (__trunc, truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_0);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S
deleted file mode 100644
index e28de7cb1e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* truncf function.  PowerPC64/power5+ version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __truncf __truncf_power5plus
-
-#include <sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S
deleted file mode 100644
index b60242d83b..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* truncf function.  PowerPC64 default version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-#define __truncf __truncf_ppc64
-
-#include <sysdeps/powerpc/powerpc64/fpu/s_truncf.S>
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c
deleted file mode 100644
index 2c46525235..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiple versions of truncf.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <math_ldbl_opt.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__truncf) __truncf_ppc64 attribute_hidden;
-extern __typeof (__truncf) __truncf_power5plus attribute_hidden;
-
-libc_ifunc (__truncf,
-	    (hwcap & PPC_FEATURE_POWER5_PLUS)
-	    ? __truncf_power5plus
-            : __truncf_ppc64);
-
-weak_alias (__truncf, truncf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S b/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
deleted file mode 100644
index 78d7feefed..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_ceil.S
+++ /dev/null
@@ -1,72 +0,0 @@
-/* ceil function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-EALIGN (__ceil, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,2		/* Set rounding mode toward +inf.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__ceil)
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
deleted file mode 100644
index bc5ab02cb0..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/* float ceil function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-	.long 0x0
-	.section	".text"
-
-EALIGN (__ceilf, 4, 0)
-	CALL_MCOUNT 0
-	lfs	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,2		/* Set rounding mode toward +inf.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
deleted file mode 100644
index 59472816c7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_copysign.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copy a sign bit between floating-point values.  PowerPC64 version.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysign)
-	CALL_MCOUNT 0
-/* double [f1] copysign (double [f1] x, double [f2] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-	stfd	fp2,-8(r1)
-	nop
-	nop
-	nop
-	ld	r3,-8(r1)
-	cmpdi   r3,0
-	blt     L(0)
-	fabs    fp1,fp1
-	blr
-L(0):	fnabs   fp1,fp1
-	blr
-	END (__copysign)
-
-weak_alias (__copysign,copysign)
-
-/* It turns out that it's safe to use this code even for single-precision.  */
-weak_alias (__copysign,copysignf)
-strong_alias(__copysign,__copysignf)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__copysign,copysignl)
-strong_alias(__copysign,__copysignl)
-#endif
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __copysign, copysignl, GLIBC_2_0)
-# endif
-#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __copysign, copysignl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc64/fpu/s_copysignf.S
deleted file mode 100644
index e05438ae7d..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_copysignf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __copysignf is in s_copysign.S  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S b/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
deleted file mode 100644
index b33ea6e256..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copy a sign bit between floating-point values.
-   IBM extended format long double version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__copysignl)
-/* long double [f1,f2] copysign (long double [f1,f2] x, long double [f3,f4] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-	stfd	fp3,-16(r1)
-	ld	r3,-16(r1)
-	cmpdi   r3,0
-	blt     L(0)
-	fmr	fp0,fp1
-	fabs	fp1,fp1
-	fneg	fp3,fp2
-	fsel	fp2,fp0,fp2,fp3
-	blr
-L(0):
-	fmr	fp0,fp1
-	fnabs   fp1,fp1
-	fneg	fp3,fp2
-	fsel	fp2,fp0,fp3,fp2
-	blr
-END (__copysignl)
-
-#if IS_IN (libm)
-long_double_symbol (libm, __copysignl, copysignl)
-#else
-long_double_symbol (libc, __copysignl, copysignl)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_fabs.S b/sysdeps/powerpc/powerpc64/fpu/s_fabs.S
deleted file mode 100644
index 53d21301ee..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_fabs.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fabs.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __fabs, fabsl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_fabsl.S b/sysdeps/powerpc/powerpc64/fpu/s_fabsl.S
deleted file mode 100644
index 7603abba5d..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_fabsl.S
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copy a sign bit between floating-point values.
-   IBM extended format long double version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-ENTRY(__fabsl)
-/* long double [f1,f2] fabs (long double [f1,f2] x);
-   fabs(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-	fmr	fp0,fp1
-	fabs	fp1,fp1
-	fneg	fp3,fp2
-	fsel	fp2,fp0,fp2,fp3
-	blr
-END (__fabsl)
-
-long_double_symbol (libm, __fabsl, fabsl)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_floor.S b/sysdeps/powerpc/powerpc64/fpu/s_floor.S
deleted file mode 100644
index 4a6cc0ebba..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_floor.S
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Floor function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-EALIGN (__floor, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,3		/* Set rounding mode toward -inf.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__floor)
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_floorf.S b/sysdeps/powerpc/powerpc64/fpu/s_floorf.S
deleted file mode 100644
index d8b5e21248..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_floorf.S
+++ /dev/null
@@ -1,66 +0,0 @@
-/* float Floor function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-	.long 0x0
-	.section	".text"
-
-EALIGN (__floorf, 4, 0)
-	CALL_MCOUNT 0
-	lfs	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,3		/* Set rounding mode toward -inf.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__floorf)
-
-weak_alias (__floorf, floorf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_fma.S b/sysdeps/powerpc/powerpc64/fpu/s_fma.S
deleted file mode 100644
index d40695c633..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_fma.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fma.S>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fma, fmal, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/fpu/s_isnan.S
deleted file mode 100644
index 6cba2d4408..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_isnan.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* isnan().  PowerPC64 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power4
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	mffs	fp0
-	mtfsb0	4*cr6+lt /* reset_fpscr_bit (FPSCR_VE) */
-	fcmpu	cr7,fp1,fp1
-	mtfsf	255,fp0
-	li	r3,0
-	beqlr+	cr7	/* (x == x) then not a NAN */
-	li	r3,1	/* else must be a NAN */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
deleted file mode 100644
index 39e765434a..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_llrint.S
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Round double to long int.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
-	CALL_MCOUNT 0
-	fctid	fp13,fp1
-	stfd	fp13,-16(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	ld	r3,-16(r1)
-	blr
-	END (__llrint)
-
-strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llrintf.S b/sysdeps/powerpc/powerpc64/fpu/s_llrintf.S
deleted file mode 100644
index 4050be6437..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_llrintf.S
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Round double to long int.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* long long int[r3] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)
-	CALL_MCOUNT 0
-	fctid	fp13,fp1
-	stfd	fp13,-16(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	ld	r3,-16(r1)
-	blr
-	END (__llrintf)
-
-strong_alias (__llrintf, __lrintf)
-weak_alias (__llrintf, llrintf)
-weak_alias (__lrintf, lrintf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/fpu/s_llround.S
deleted file mode 100644
index 0803ba1eb3..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_llround.S
+++ /dev/null
@@ -1,96 +0,0 @@
-/* llround function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2^52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-.LC1:	/* 0.5 */
-	.tc FD_3fe00000_0[TC],0x3fe0000000000000
-	.section	".text"
-
-/* long long [r3] llround (double x [fp1])
-   IEEE 1003.1 llround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "round to Nearest" mode. Instead we set
-   "round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.
-
-   It is necessary to detect when x is (+-)0x1.fffffffffffffp-2
-   because adding +-0.5 in this case will cause an erroneous shift,
-   carry and round.  We simply return 0 if 0.5 > x > -0.5.  Likewise
-   if x is and odd number between +-(2^52 and 2^53-1) a shift and
-   carry will erroneously round if biased with +-0.5.  Therefore if x
-   is greater/less than +-2^52 we don't need to bias the number with
-   +-0.5.  */
-
-ENTRY (__llround)
-	CALL_MCOUNT 0
-	lfd	fp9,.LC0@toc(2)	/* Load 2^52 into fpr9.  */
-	lfd	fp10,.LC1@toc(2)/* Load 0.5 into fpr10.  */
-	fabs	fp2,fp1		/* Get the absolute value of x.  */
-	fsub	fp12,fp10,fp10	/* Compute 0.0 into fp12.  */
-	fcmpu	cr6,fp2,fp10	/* if |x| < 0.5  */
-	fcmpu	cr7,fp2,fp9	/* if |x| >= 2^52  */
-	fcmpu	cr1,fp1,fp12	/* x is negative? x < 0.0  */
-	blt-	cr6,.Lretzero	/* 0.5 > x < -0.5 so just return 0.  */
-	bge-	cr7,.Lnobias	/* 2^52 > x < -2^52 just convert with no bias.  */
-	/* Test whether an integer to avoid spurious "inexact".  */
-	fadd	fp3,fp2,fp9
-	fsub	fp3,fp3,fp9
-	fcmpu	cr5,fp2,fp3
-	beq	cr5,.Lnobias
-	fadd	fp3,fp2,fp10	/* |x|+=0.5 bias to prepare to round.  */
-	bge	cr1,.Lconvert	/* x is positive so don't negate x.  */
-	fnabs	fp3,fp3		/* -(|x|+=0.5)  */
-.Lconvert:
-	fctidz	fp4,fp3		/* Convert to Integer double word round toward 0.  */
-	stfd	fp4,-16(r1)
-	nop
-	nop
-	nop
-	ld	r3,-16(r1)	/* Load return as integer.  */
-.Lout:
-	blr
-.Lretzero:			/* 0.5 > x > -0.5  */
-	li	r3,0		/* return 0.  */
-	b	.Lout
-.Lnobias:
-	fmr	fp3,fp1
-	b	.Lconvert
-	END (__llround)
-
-strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S b/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S
deleted file mode 100644
index 3e910ac322..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_llroundf.S
+++ /dev/null
@@ -1,88 +0,0 @@
-/* llroundf function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2^23 */
-	.tc FD_41600000_0[TC],0x4160000000000000
-.LC1:	/* 0.5 */
-	.tc FD_3fe00000_0[TC],0x3fe0000000000000
-.LC2:	/* 2^52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-/* long long [r3] llroundf (float x [fp1])
-   IEEE 1003.1 llroundf function.  IEEE specifies "roundf to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "roundf to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "round to Nearest" mode. Instead we set
-   "round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.
-
-   It is necessary to detect when x is (+-)0x1.fffffffffffffp-2
-   because adding +-0.5 in this case will cause an erroneous shift,
-   carry and round.  We simply return 0 if 0.5 > x > -0.5.  Likewise
-   if x is and odd number between +-(2^23 and 2^24-1) a shift and
-   carry will erroneously round if biased with +-0.5.  Therefore if x
-   is greater/less than +-2^23 we don't need to bias the number with
-   +-0.5.  */
-
-ENTRY (__llroundf)
-	CALL_MCOUNT 0
-	lfd	fp9,.LC0@toc(2)	/* Load 2^23 into fpr9.  */
-	lfd	fp10,.LC1@toc(2)/* Load 0.5 into fpr10.  */
-	lfd	fp11,.LC2@toc(2)	/* Load 2^52 into fpr11.  */
-	fabs	fp2,fp1		/* Get the absolute value of x.  */
-	fsub	fp12,fp10,fp10	/* Compute 0.0 into fp12.  */
-	fcmpu	cr6,fp2,fp10	/* if |x| < 0.5  */
-	fcmpu	cr7,fp2,fp9	/* if |x| >= 2^23  */
-	fcmpu	cr1,fp1,fp12	/* x is negative? x < 0.0  */
-	blt-	cr6,.Lretzero	/* 0.5 > x < -0.5 so just return 0.  */
-	bge-	cr7,.Lnobias	/* 2^23 > x < -2^23 just convert with no bias.  */
-	/* Test whether an integer to avoid spurious "inexact".  */
-	fadd	fp3,fp2,fp11
-	fsub	fp3,fp3,fp11
-	fcmpu	cr5,fp2,fp3
-	beq	cr5,.Lnobias
-	fadd	fp3,fp2,fp10	/* |x|+=0.5 bias to prepare to round.  */
-	bge	cr1,.Lconvert	/* x is positive so don't negate x.  */
-	fnabs	fp3,fp3		/* -(|x|+=0.5)  */
-.Lconvert:
-	fctidz	fp4,fp3		/* Convert to Integer double word round toward 0.  */
-	stfd	fp4,-16(r1)
-	nop
-	nop
-	nop
-	ld	r3,-16(r1)	/* Load return as integer.  */
-.Lout:
-	blr
-.Lretzero:			/* 0.5 > x > -0.5  */
-	li	r3,0		/* return 0.  */
-	b	.Lout
-.Lnobias:
-	fmr	fp3,fp1
-	b	.Lconvert
-	END (__llroundf)
-
-strong_alias (__llroundf, __lroundf)
-weak_alias (__llroundf, llroundf)
-weak_alias (__lroundf, lroundf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_lrint.S b/sysdeps/powerpc/powerpc64/fpu/s_lrint.S
deleted file mode 100644
index d3c2fff581..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_lrint.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __lrint is in s_llrint.c  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_lround.S b/sysdeps/powerpc/powerpc64/fpu/s_lround.S
deleted file mode 100644
index 4306c405c4..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_lround.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __lround is in s_llround.S  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_lroundf.S b/sysdeps/powerpc/powerpc64/fpu/s_lroundf.S
deleted file mode 100644
index 6b2a4e37a6..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_lroundf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* __lroundf is in s_llroundf.S  */
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S b/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
deleted file mode 100644
index 3dcd04b1f3..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Round to int floating-point values.  PowerPC64 version.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-
-/* double [fp1] nearbyint(double [fp1] x) */
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-EALIGN (__nearbyint, 4, 0)
-	CALL_MCOUNT 0
-	fabs	fp0,fp1
-	lfd	fp13,.LC0@toc(2)
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	bge	cr7,.L10
-	fsub	fp12,fp13,fp13	/* generate 0.0 */
-	fcmpu	cr7,fp1,fp12	/* if (x > 0.0) */
-	ble	cr7, L(lessthanzero)
-	mffs	fp11
-	mtfsb0	4*cr7+lt	/* Disable FE_INEXACT exception */
-	fadd	fp1,fp1,fp13	/* x+= TWO52 */
-	fsub	fp1,fp1,fp13	/* x-= TWO52 */
-	fabs	fp1,fp1		/* if (x == 0.0) */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr			/* x = 0.0; */
-L(lessthanzero):
-	bgelr	cr7		/* if (x < 0.0) */
-	mffs	fp11
-	mtfsb0	4*cr7+lt
-	fsub	fp1,fp1,fp13	/* x -= TWO52 */
-	fadd	fp1,fp1,fp13	/* x += TWO52 */
-	fnabs	fp1,fp1		/* if (x == 0.0) */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-END (__nearbyint)
-
-weak_alias (__nearbyint, nearbyint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__nearbyint, nearbyint)
-strong_alias (__nearbyint, __nearbyintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __nearbyint, nearbyintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S b/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
deleted file mode 100644
index 11be35f94e..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Round to int floating-point values.  PowerPC64 version.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Adhemerval Zanella <azanella@br.ibm.com>, 2011
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-
-
-/* float [fp1] nearbyintf(float [fp1]) */
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-	.long 0x0
-	.section	".text"
-
-EALIGN (__nearbyintf, 4, 0)
-	CALL_MCOUNT 0
-	fabs	fp0,fp1
-	lfs	fp13,.LC0@toc(2)
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	bge	cr7,.L10
-	fsubs	fp12,fp13,fp13	/* generate 0.0 */
-	fcmpu	cr7,fp1,fp12	/* if (x > 0.0)  */
-	ble	cr7, L(lessthanzero)
-	mffs	fp11
-	mtfsb0	4*cr7+lt	/* Disable FE_INEXACT exception */
-	fadds	fp1,fp1,fp13	/* x += TWO23 */
-	fsubs	fp1,fp1,fp13	/* x -= TWO23 */
-	fabs	fp1,fp1		/* if (x == 0.0) */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr			/* x = 0.0; */
-L(lessthanzero):
-	bgelr	cr7		/* if (x < 0.0) */
-	mffs	fp11
-	mtfsb0	4*cr7+lt	/* Disable FE_INEXACT exception */
-	fsubs	fp1,fp1,fp13	/* x -= TWO23 */
-	fadds	fp1,fp1,fp13	/* x += TWO23 */
-	fnabs	fp1,fp1		/* if (x == 0.0) */
-	mtfsf	0xff,fp11	/* Restore FE_INEXACT state.  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-END (__nearbyintf)
-
-weak_alias (__nearbyintf, nearbyintf)
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rint.S b/sysdeps/powerpc/powerpc64/fpu/s_rint.S
deleted file mode 100644
index 7ba0adff84..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_rint.S
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Round to int floating-point values.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This has been coded in assembler because GCC makes such a mess of it
-   when it's coded in C.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-EALIGN (__rint, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl	cr7,.L10
-	bng	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = 0.0; */
-.L4:
-	bnllr	cr6		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__rint)
-
-weak_alias (__rint, rint)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__rint, rintl)
-strong_alias (__rint, __rintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __rint, rintl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S b/sysdeps/powerpc/powerpc64/fpu/s_rintf.S
deleted file mode 100644
index b1d1e158c0..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Round float to int floating-point values.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-	.long 0x0
-	.section	".text"
-
-EALIGN (__rintf, 4, 0)
-	CALL_MCOUNT 0
-	lfs	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl	cr7,.L10
-	bng	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = 0.0; */
-.L4:
-	bnllr	cr6		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-	blr			/* x = -0.0; */
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__rintf)
-
-weak_alias (__rintf, rintf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_round.S b/sysdeps/powerpc/powerpc64/fpu/s_round.S
deleted file mode 100644
index fe315af51d..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_round.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* round function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-.LC1:	/* 0.5 */
-	.tc FD_3fe00000_0[TC],0x3fe0000000000000
-	.section	".text"
-
-/* double [fp1] round (double x [fp1])
-   IEEE 1003.1 round function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "Round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "Round to Nearest" mode. Instead we set
-   "Round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.  */
-
-EALIGN (__round, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-	lfd	fp10,.LC1@toc(2)
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp10	/* x+= 0.5;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	fsub	fp9,fp1,fp10	/* x+= 0.5;  */
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp9,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__round)
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S b/sysdeps/powerpc/powerpc64/fpu/s_roundf.S
deleted file mode 100644
index d213f43566..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_roundf.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/* roundf  function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-.LC1:	/* 0.5 */
-	.long 0x3f000000
-
-	.section	".text"
-
-/* float [fp1] roundf  (float x [fp1])
-   IEEE 1003.1 round function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "Round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we can't use the PowerPC "Round to Nearest" mode. Instead we set
-   "Round toward Zero" mode and round by adding +-0.5 before rounding
-   to the integer value.  */
-
-EALIGN (__roundf, 4, 0)
-	CALL_MCOUNT 0
-	lfs	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding mode toward 0.  */
-	lfs	fp10,.LC1@toc(2)
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp10	/* x+= 0.5;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	fsubs	fp9,fp1,fp10	/* x+= 0.5;  */
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp9,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__roundf)
-
-weak_alias (__roundf, roundf)
-
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_trunc.S b/sysdeps/powerpc/powerpc64/fpu/s_trunc.S
deleted file mode 100644
index 890eb21c54..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_trunc.S
+++ /dev/null
@@ -1,79 +0,0 @@
-/* trunc function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.section	".toc","aw"
-.LC0:	/* 2**52 */
-	.tc FD_43300000_0[TC],0x4330000000000000
-	.section	".text"
-
-/* double [fp1] trunc (double x [fp1])
-   IEEE 1003.1 trunc function.  IEEE specifies "trunc to the integer
-   value, in floating format, nearest to but no larger in magnitude
-   then the argument."
-   We set "round toward Zero" mode and trunc by adding +-2**52 then
-   subtracting +-2**52.  */
-
-EALIGN (__trunc, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsub	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO52)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding toward 0 mode.  */
-	ble-	cr6,.L4
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsub	fp1,fp1,fp13	/* x-= TWO52;  */
-	fadd	fp1,fp1,fp13	/* x+= TWO52;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadd	fp1,fp1,fp1
-	blr
-	END (__trunc)
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_truncf.S b/sysdeps/powerpc/powerpc64/fpu/s_truncf.S
deleted file mode 100644
index cfcff80bf7..0000000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_truncf.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/* truncf function.  PowerPC64 version.
-   Copyright (C) 2004-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-	.p2align 3
-.LC0:	/* 2**23 */
-	.long 0x4b000000
-	.long 0x0
-	.section	".text"
-
-/* float [fp1] truncf (float x [fp1])
-   IEEE 1003.1 trunc function.  IEEE specifies "trunc to the integer
-   value, in floating format, nearest to but no larger in magnitude
-   then the argument."
-   We set "round toward Zero" mode and trunc by adding +-2**23 then
-   subtracting +-2**23.  */
-
-EALIGN (__truncf, 4, 0)
-	CALL_MCOUNT 0
-	lfs	fp13,.LC0@toc(2)
-	fabs	fp0,fp1
-	fsubs	fp12,fp13,fp13	/* generate 0.0  */
-	fcmpu	cr7,fp0,fp13	/* if (fabs(x) > TWO23)  */
-	mffs	fp11		/* Save current FPU rounding mode and
-				   "inexact" state.  */
-	fcmpu	cr6,fp1,fp12	/* if (x > 0.0)  */
-	bnl-	cr7,.L10
-	mtfsfi	7,1		/* Set rounding toward 0 mode.  */
-	ble-	cr6,.L4
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = 0.0; */
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L4:
-	bge-	cr6,.L9		/* if (x < 0.0)  */
-	fsubs	fp1,fp1,fp13	/* x-= TWO23;  */
-	fadds	fp1,fp1,fp13	/* x+= TWO23;  */
-	fnabs	fp1,fp1		/* if (x == 0.0)  */
-				/* x = -0.0; */
-.L9:
-	mtfsf	0xff,fp11	/* Restore previous rounding mode and
-				   "inexact" state.  */
-	blr
-.L10:
-	/* Ensure sNaN input is converted to qNaN.  */
-	fcmpu	cr7,fp1,fp1
-	beqlr	cr7
-	fadds	fp1,fp1,fp1
-	blr
-	END (__truncf)
-
-weak_alias (__truncf, truncf)
-
diff --git a/sysdeps/powerpc/powerpc64/hp-timing.h b/sysdeps/powerpc/powerpc64/hp-timing.h
deleted file mode 100644
index 33064c6781..0000000000
--- a/sysdeps/powerpc/powerpc64/hp-timing.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* High precision, low overhead timing functions.  powerpc64 version.
-   Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _HP_TIMING_H
-#define _HP_TIMING_H	1
-
-/* We always assume having the timestamp register.  */
-#define HP_TIMING_AVAIL		(1)
-#define HP_SMALL_TIMING_AVAIL	(1)
-
-/* We indeed have inlined functions.  */
-#define HP_TIMING_INLINE	(1)
-
-/* We use 64bit values for the times.  */
-typedef unsigned long long int hp_timing_t;
-
-/* That's quite simple.  Use the `mftb' instruction.  Note that the value
-   might not be 100% accurate since there might be some more instructions
-   running in this moment.  This could be changed by using a barrier like
-   'lwsync' right before the `mftb' instruction.  But we are not interested
-   in accurate clock cycles here so we don't do this.  */
-#ifdef _ARCH_PWR4
-#define HP_TIMING_NOW(Var)	__asm__ __volatile__ ("mfspr %0,268" : "=r" (Var))
-#else
-#define HP_TIMING_NOW(Var)	__asm__ __volatile__ ("mftb %0" : "=r" (Var))
-#endif
-
-#include <hp-timing-common.h>
-
-#endif	/* hp-timing.h */
diff --git a/sysdeps/powerpc/powerpc64/lshift.S b/sysdeps/powerpc/powerpc64/lshift.S
deleted file mode 100644
index 480e38688b..0000000000
--- a/sysdeps/powerpc/powerpc64/lshift.S
+++ /dev/null
@@ -1,177 +0,0 @@
-/* PowerPC64 mpn_lshift -- rp[] = up[] << cnt
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define RP       r3
-#define UP       r4
-#define N        r5
-#define CNT      r6
-
-#define TNC      r0
-#define U0      r30
-#define U1      r31
-#define RETVAL   r5
-
-EALIGN(__mpn_lshift, 5, 0)
-	std	U1, -8(r1)
-	std	U0, -16(r1)
-	subfic	TNC, CNT, 64
-	sldi	r7, N, RP
-	add	UP, UP, r7
-	add	RP, RP, r7
-	rldicl.	U0, N, 0, 62
-	cmpdi	CNT, U0, 2
-	addi	U1, N, RP
-	ld	r10, -8(UP)
-	srd	RETVAL, r10, TNC
-
-	srdi	U1, U1, 2
-	mtctr	U1
-	beq	cr0, L(b00)
-	blt	cr6, L(b01)
-	ld	r11, -16(UP)
-	beq	cr6, L(b10)
-
-	.align	4
-L(b11):	sld	r8, r10, CNT
-	srd	r9, r11, TNC
-	ld	U1, -24(UP)
-	addi	UP, UP, -24
-	sld	r12, r11, CNT
-	srd	r7, U1, TNC
-	addi	RP, RP, 16
-	bdnz	L(gt3)
-
-	or	r11, r8, r9
-	sld	r8, U1, CNT
-	b	L(cj3)
-
-	.align	4
-L(gt3):	ld	U0, -8(UP)
-	or	r11, r8, r9
-	sld	r8, U1, CNT
-	srd	r9, U0, TNC
-	ld	U1, -16(UP)
-	or	r10, r12, r7
-	b	L(L11)
-
-	.align	5
-L(b10):	sld	r12, r10, CNT
-	addi	RP, RP, 24
-	srd	r7, r11, TNC
-	bdnz	L(gt2)
-
-	sld	r8, r11, CNT
-	or	r10, r12, r7
-	b	L(cj2)
-
-L(gt2):	ld	U0, -24(UP)
-	sld	r8, r11, CNT
-	srd	r9, U0, TNC
-	ld	U1, -32(UP)
-	or	r10, r12, r7
-	sld	r12, U0, CNT
-	srd	r7, U1, 0
-	ld	U0, -40(UP)
-	or	r11, r8, r9
-	addi	UP, UP, -16
-	b	L(L10)
-
-	.align	4
-L(b00):	ld	U1, -16(UP)
-	sld	r12, r10, CNT
-	srd	r7, U1, TNC
-	ld	U0, -24(UP)
-	sld	r8, U1, CNT
-	srd	r9, U0, TNC
-	ld	U1, -32(UP)
-	or	r10, r12, r7
-	sld	r12, U0, CNT
-	srd	r7, U1, TNC
-	addi	RP, RP, r8
-	bdz	L(cj4)
-
-L(gt4):	addi	UP, UP, -32
-	ld	U0, -8(UP)
-	or	r11, r8, r9
-	b	L(L00)
-
-	.align	4
-L(b01):	bdnz	L(gt1)
-	sld	r8, r10, CNT
-	std	r8, -8(RP)
-	b	L(ret)
-
-L(gt1):	ld	U0, -16(UP)
-	sld	r8, r10, CNT
-	srd	r9, U0, TNC
-	ld	U1, -24(UP)
-	sld	r12, U0, CNT
-	srd	r7, U1, TNC
-	ld	U0, -32(UP)
-	or	r11, r8, r9
-	sld	r8, U1, CNT
-	srd	r9, U0, TNC
-	ld	U1, -40(UP)
-	addi	UP, UP, -40
-	or	r10, r12, r7
-	bdz	L(end)
-
-	.align	5
-L(top):	sld	r12, U0, CNT
-	srd	r7, U1, TNC
-	ld	U0, -8(UP)
-	std	r11, -8(RP)
-	or	r11, r8, r9
-L(L00):	sld	r8, U1, CNT
-	srd	r9, U0, TNC
-	ld	U1, -16(UP)
-	std	r10, -16(RP)
-	or	r10, r12, r7
-L(L11):	sld	r12, U0, CNT
-	srd	r7, U1, TNC
-	ld	U0, -24(UP)
-	std	r11, -24(RP)
-	or	r11, r8, r9
-L(L10):	sld	r8, U1, CNT
-	srd	r9, U0, TNC
-	ld	U1, -32(UP)
-	addi	UP, UP, -32
-	std	r10, -32(RP)
-	addi	RP, RP, -32
-	or	r10, r12, r7
-	bdnz	L(top)
-
-	.align	5
-L(end):	sld	r12, U0, CNT
-	srd	r7, U1, TNC
-	std	r11, -8(RP)
-L(cj4):	or	r11, r8, r9
-	sld	r8, U1, CNT
-	std	r10, -16(RP)
-L(cj3):	or	r10, r12, r7
-	std	r11, -24(RP)
-L(cj2):	std	r10, -32(RP)
-	std	r8, -40(RP)
-
-L(ret):	ld	U1, -8(r1)
-	ld	U0, -16(r1)
-	mr	RP, RETVAL
-	blr
-END(__mpn_lshift)
diff --git a/sysdeps/powerpc/powerpc64/memcpy.S b/sysdeps/powerpc/powerpc64/memcpy.S
deleted file mode 100644
index a4c82c31ef..0000000000
--- a/sysdeps/powerpc/powerpc64/memcpy.S
+++ /dev/null
@@ -1,397 +0,0 @@
-/* Optimized memcpy implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.
-
-   Memcpy handles short copies (< 32-bytes) using a binary move blocks
-   (no loops) of lwz/stw.  The tail (remaining 1-3) bytes is handled
-   with the appropriate combination of byte and halfword load/stores.
-   There is minimal effort to optimize the alignment of short moves.
-   The 64-bit implementations of POWER3 and POWER4 do a reasonable job
-   of handling unaligned load/stores that do not cross 32-byte boundaries.
-
-   Longer moves (>= 32-bytes) justify the effort to get at least the
-   destination doubleword (8-byte) aligned.  Further optimization is
-   possible when both source and destination are doubleword aligned.
-   Each case has a optimized unrolled loop.   */
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-
-EALIGN (MEMCPY, 5, 0)
-	CALL_MCOUNT 3
-
-    cmpldi cr1,5,31
-    neg   0,3
-    std   3,-16(1)
-    std   31,-8(1)
-    cfi_offset(31,-8)
-    andi. 11,3,7	/* check alignment of dst.  */
-    clrldi 0,0,61	/* Number of bytes until the 1st doubleword of dst.  */
-    clrldi 10,4,61	/* check alignment of src.  */
-    cmpldi cr6,5,8
-    ble-  cr1,.L2	/* If move < 32 bytes use short move code.  */
-    cmpld cr6,10,11
-    mr    12,4
-    srdi  9,5,3		/* Number of full double words remaining.  */
-    mtcrf 0x01,0
-    mr    31,5
-    beq   .L0
-
-    subf  31,0,5
-  /* Move 0-7 bytes as needed to get the destination doubleword aligned.  */
-1:  bf    31,2f
-    lbz   6,0(12)
-    addi  12,12,1
-    stb   6,0(3)
-    addi  3,3,1
-2:  bf    30,4f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-4:  bf    29,0f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-0:
-    clrldi 10,12,61	/* check alignment of src again.  */
-    srdi  9,31,3	/* Number of full double words remaining.  */
-
-  /* Copy doublewords from source to destination, assuming the
-     destination is aligned on a doubleword boundary.
-
-     At this point we know there are at least 25 bytes left (32-7) to copy.
-     The next step is to determine if the source is also doubleword aligned.
-     If not branch to the unaligned move code at .L6. which uses
-     a load, shift, store strategy.
-
-     Otherwise source and destination are doubleword aligned, and we can
-     the optimized doubleword copy loop.  */
-.L0:
-    clrldi	11,31,61
-    mtcrf 0x01,9
-    bne-  cr6,.L6   /* If source is not DW aligned.  */
-
-  /* Move doublewords where destination and source are DW aligned.
-     Use a unrolled loop to copy 4 doubleword (32-bytes) per iteration.
-     If the copy is not an exact multiple of 32 bytes, 1-3
-     doublewords are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-7 bytes. These byte are
-     copied a word/halfword/byte at a time as needed to preserve alignment.  */
-
-    srdi  8,31,5
-    cmpldi	cr1,9,4
-    cmpldi	cr6,11,0
-    mr    11,12
-
-    bf    30,1f
-    ld    6,0(12)
-    ld    7,8(12)
-    addi  11,12,16
-    mtctr 8
-    std   6,0(3)
-    std   7,8(3)
-    addi  10,3,16
-    bf    31,4f
-    ld    0,16(12)
-    std   0,16(3)
-    blt   cr1,3f
-    addi  11,12,24
-    addi  10,3,24
-    b     4f
-    .align  4
-1:
-    mr    10,3
-    mtctr 8
-    bf    31,4f
-    ld    6,0(12)
-    addi  11,12,8
-    std   6,0(3)
-    addi  10,3,8
-
-    .align  4
-4:
-    ld    6,0(11)
-    ld    7,8(11)
-    ld    8,16(11)
-    ld    0,24(11)
-    addi  11,11,32
-2:
-    std   6,0(10)
-    std   7,8(10)
-    std   8,16(10)
-    std   0,24(10)
-    addi  10,10,32
-    bdnz  4b
-3:
-
-    rldicr 0,31,0,60
-    mtcrf 0x01,31
-    beq   cr6,0f
-.L9:
-    add   3,3,0
-    add   12,12,0
-
-/*  At this point we have a tail of 0-7 bytes and we know that the
-    destination is double word aligned.  */
-4:  bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  bf    30,1f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-1:  bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld 31,-8(1)
-    ld 3,-16(1)
-    blr
-
-/* Copy up to 31 bytes.  This divided into two cases 0-8 bytes and 9-31
-   bytes.  Each case is handled without loops, using binary (1,2,4,8)
-   tests.
-
-   In the short (0-8 byte) case no attempt is made to force alignment
-   of either source or destination.  The hardware will handle the
-   unaligned load/stores with small delays for crossing 32- 64-byte, and
-   4096-byte boundaries. Since these short moves are unlikely to be
-   unaligned or cross these boundaries, the overhead to force
-   alignment is not justified.
-
-   The longer (9-31 byte) move is more likely to cross 32- or 64-byte
-   boundaries.  Since only loads are sensitive to the 32-/64-byte
-   boundaries it is more important to align the source then the
-   destination.  If the source is not already word aligned, we first
-   move 1-3 bytes as needed.  Since we are only word aligned we don't
-   use double word load/stores to insure that all loads are aligned.
-   While the destination and stores may still be unaligned, this
-   is only an issue for page (4096 byte boundary) crossing, which
-   should be rare for these short moves.  The hardware handles this
-   case automatically with a small delay.  */
-
-    .align  4
-.L2:
-    mtcrf 0x01,5
-    neg   8,4
-    clrrdi	11,4,2
-    andi. 0,8,3
-    ble   cr6,.LE8	/* Handle moves of 0-8 bytes.  */
-/* At least 9 bytes left.  Get the source word aligned.  */
-    cmpldi	cr1,5,16
-    mr    10,5
-    mr    12,4
-    cmpldi	cr6,0,2
-    beq   .L3	/* If the source is already word aligned skip this.  */
-/* Copy 1-3 bytes to get source address word aligned.  */
-    lwz   6,0(11)
-    subf  10,0,5
-    add   12,4,0
-    blt   cr6,5f
-    srdi  7,6,16
-    bgt	  cr6,3f
-#ifdef __LITTLE_ENDIAN__
-    sth   7,0(3)
-#else
-    sth   6,0(3)
-#endif
-    b     7f
-    .align  4
-3:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,24
-    stb   6,0(3)
-    sth   7,1(3)
-#else
-    stb   7,0(3)
-    sth   6,1(3)
-#endif
-    b     7f
-    .align  4
-5:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,8
-#endif
-    stb   6,0(3)
-7:
-    cmpldi	cr1,10,16
-    add   3,3,0
-    mtcrf 0x01,10
-    .align  4
-.L3:
-/* At least 6 bytes left and the source is word aligned.  */
-    blt   cr1,8f
-16: /* Move 16 bytes.  */
-    lwz   6,0(12)
-    lwz   7,4(12)
-    stw   6,0(3)
-    lwz   6,8(12)
-    stw   7,4(3)
-    lwz   7,12(12)
-    addi  12,12,16
-    stw   6,8(3)
-    stw   7,12(3)
-    addi  3,3,16
-8:  /* Move 8 bytes.  */
-    bf    28,4f
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  12,12,8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  3,3,8
-4:  /* Move 4 bytes.  */
-    bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  /* Move 2-3 bytes.  */
-    bf    30,1f
-    lhz   6,0(12)
-    sth   6,0(3)
-    bf    31,0f
-    lbz   7,2(12)
-    stb   7,2(3)
-    ld 3,-16(1)
-    blr
-1:  /* Move 1 byte.  */
-    bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-/* Special case to copy 0-8 bytes.  */
-    .align  4
-.LE8:
-    mr    12,4
-    bne   cr6,4f
-/* Would have liked to use use ld/std here but the 630 processors are
-   slow for load/store doubles that are not at least word aligned.
-   Unaligned Load/Store word execute with only a 1 cycle penalty.  */
-    lwz   6,0(4)
-    lwz   7,4(4)
-    stw   6,0(3)
-    stw   7,4(3)
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-4:  bf    29,2b
-    lwz   6,0(4)
-    stw   6,0(3)
-6:
-    bf    30,5f
-    lhz   7,4(4)
-    sth   7,4(3)
-    bf    31,0f
-    lbz   8,6(4)
-    stb   8,6(3)
-    ld 3,-16(1)
-    blr
-    .align  4
-5:
-    bf    31,0f
-    lbz   6,4(4)
-    stb   6,4(3)
-    .align  4
-0:
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-    .align  4
-.L6:
-
-  /* Copy doublewords where the destination is aligned but the source is
-     not.  Use aligned doubleword loads from the source, shifted to realign
-     the data, to allow aligned destination stores.  */
-    subf  5,10,12
-    andi. 0,9,1
-    cmpldi cr6,11,0
-    sldi  10,10,3
-    mr    11,9
-    mr    4,3
-    ld    6,0(5)
-    ld    7,8(5)
-    subfic  9,10,64
-    beq   2f
-#ifdef __LITTLE_ENDIAN__
-    srd   0,6,10
-#else
-    sld   0,6,10
-#endif
-    cmpldi  11,1
-    mr    6,7
-    addi  4,4,-8
-    addi  11,11,-1
-    b     1f
-2:  addi  5,5,8
-    .align  4
-#ifdef __LITTLE_ENDIAN__
-0:  srd   0,6,10
-    sld   8,7,9
-#else
-0:  sld   0,6,10
-    srd   8,7,9
-#endif
-    cmpldi  11,2
-    ld    6,8(5)
-    or    0,0,8
-    addi  11,11,-2
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srd   0,7,10
-1:  sld   8,6,9
-#else
-    sld   0,7,10
-1:  srd   8,6,9
-#endif
-    or    0,0,8
-    beq   8f
-    ld    7,16(5)
-    std   0,8(4)
-    addi  5,5,16
-    addi  4,4,16
-    b     0b
-    .align 4
-8:
-    std   0,8(4)
-    rldicr 0,31,0,60
-    mtcrf 0x01,31
-    bne   cr6,.L9	/* If the tail is 0 bytes we are done!  */
-  /* Return original dst pointer.  */
-    ld 31,-8(1)
-    ld 3,-16(1)
-    blr
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S
deleted file mode 100644
index f6581b50f7..0000000000
--- a/sysdeps/powerpc/powerpc64/memset.S
+++ /dev/null
@@ -1,265 +0,0 @@
-/* Optimized memset implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.section	".toc","aw"
-.LC0:
-	.tc __cache_line_size[TC],__cache_line_size
-	.section	".text"
-	.align 2
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in three sizes: byte (8 bits), word (32 bits),
-   cache line (256 bits). There is a special case for setting cache lines
-   to 0, to take advantage of the dcbz instruction.  */
-
-#ifndef MEMSET
-# define MEMSET memset
-#endif
-
-EALIGN (MEMSET, 5, 0)
-	CALL_MCOUNT 3
-
-#define rTMP	r0
-#define rRTN	r3	/* Initial value of 1st argument.  */
-#define rMEMP0	r3	/* Original value of 1st arg.  */
-#define rCHR	r4	/* Char to set in each byte.  */
-#define rLEN	r5	/* Length of region to set.  */
-#define rMEMP	r6	/* Address at which we are storing.  */
-#define rALIGN	r7	/* Number of bytes we are setting now (when aligning). */
-#define rMEMP2	r8
-
-#define rNEG64	r8	/* Constant -64 for clearing with dcbz.  */
-#define rCLS	r8	/* Cache line size obtained from static.  */
-#define rCLM	r9	/* Cache line size mask to check for cache alignment.  */
-L(_memset):
-/* Take care of case for size <= 4.  */
-	cmpldi	cr1, rLEN, 8
-	andi.	rALIGN, rMEMP0, 7
-	mr	rMEMP, rMEMP0
-	ble-	cr1, L(small)
-
-/* Align to doubleword boundary.  */
-	cmpldi	cr5, rLEN, 31
-	insrdi	rCHR, rCHR, 8, 48	/* Replicate byte to halfword.  */
-	beq+	L(aligned2)
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 8
-	cror	28,30,31		/* Detect odd word aligned.  */
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-	bt	29, L(g4)
-/* Process the even word of doubleword.  */
-	bf+	31, L(g2)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(g4x)
-L(g2):
-	sth	rCHR, -6(rMEMP)
-L(g4x):
-	stw	rCHR, -4(rMEMP)
-	b	L(aligned)
-/* Process the odd word of doubleword.  */
-L(g4):
-	bf	28, L(g4x) /* If false, word aligned on odd word.  */
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):
-	sth	rCHR, -2(rMEMP)
-
-/* Handle the case of size < 31.  */
-L(aligned2):
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-L(aligned):
-	mtcrf	0x01, rLEN
-	ble	cr5, L(medium)
-/* Align to 32-byte boundary.  */
-	andi.	rALIGN, rMEMP, 0x18
-	subfic	rALIGN, rALIGN, 0x20
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word. */
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-	stdu	rCHR, -8(rMEMP2)
-L(a1):	blt	cr1, L(a2)
-	std	rCHR, -8(rMEMP2)
-	stdu	rCHR, -16(rMEMP2)
-L(a2):
-
-/* Now aligned to a 32 byte boundary.  */
-L(caligned):
-	cmpldi	cr1, rCHR, 0
-	clrrdi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN
-	beq	cr1, L(zloopstart) /* Special case for clearing memory using dcbz.  */
-L(nondcbz):
-	srdi	rTMP, rALIGN, 5
-	mtctr	rTMP
-	beq	L(medium)	/* We may not actually get to do a full line.  */
-	clrldi.	rLEN, rLEN, 59
-	add	rMEMP, rMEMP, rALIGN
-	li	rNEG64, -0x40
-	bdz	L(cloopdone)
-
-L(c3):	dcbtst	rNEG64, rMEMP
-	std	rCHR, -8(rMEMP)
-	std	rCHR, -16(rMEMP)
-	std	rCHR, -24(rMEMP)
-	stdu	rCHR, -32(rMEMP)
-	bdnz	L(c3)
-L(cloopdone):
-	std	rCHR, -8(rMEMP)
-	std	rCHR, -16(rMEMP)
-	cmpldi	cr1, rLEN, 16
-	std	rCHR, -24(rMEMP)
-	stdu	rCHR, -32(rMEMP)
-	beqlr
-	add	rMEMP, rMEMP, rALIGN
-	b	L(medium_tail2)
-
-	.align 5
-/* Clear lines of memory in 128-byte chunks.  */
-L(zloopstart):
-/* If the remaining length is less the 32 bytes, don't bother getting
-	 the cache line size.  */
-	beq	L(medium)
-	ld	rCLS,.LC0@toc(r2)
-	lwz	rCLS,0(rCLS)
-/* If the cache line size was not set just goto to L(nondcbz) which is
-	 safe for any cache line size.  */
-	cmpldi	cr1,rCLS,0
-	beq		cr1,L(nondcbz)
-
-
-/* Now we know the cache line size, and it is not 32-bytes, but
-	 we may not yet be aligned to the cache line. May have a partial
-	 line to fill, so touch it 1st.  */
-	dcbt	0,rMEMP
-	addi	rCLM,rCLS,-1
-L(getCacheAligned):
-	cmpldi	cr1,rLEN,32
-	and.	rTMP,rCLM,rMEMP
-	blt		cr1,L(handletail32)
-	beq		L(cacheAligned)
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	std		rCHR,-32(rMEMP)
-	std		rCHR,-24(rMEMP)
-	std		rCHR,-16(rMEMP)
-	std		rCHR,-8(rMEMP)
-	b		L(getCacheAligned)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-L(cacheAligned):
-	cmpld	cr1,rLEN,rCLS
-	blt		cr1,L(handletail32)
-	dcbz	0,rMEMP
-	subf	rLEN,rCLS,rLEN
-	add		rMEMP,rMEMP,rCLS
-	b		L(cacheAligned)
-
-/* We are here because the cache line size was set and was not 32-bytes
-   and the remainder (rLEN) is less than the actual cache line size.
-   So set up the preconditions for L(nondcbz) and go there.  */
-L(handletail32):
-	clrrwi.	rALIGN, rLEN, 5
-	b		L(nondcbz)
-
-	.align 5
-L(small):
-/* Memset of 8 bytes or less.  */
-	cmpldi	cr6, rLEN, 4
-	cmpldi	cr5, rLEN, 1
-	ble	cr6,L(le4)
-	subi	rLEN, rLEN, 4
-	stb	rCHR,0(rMEMP)
-	stb	rCHR,1(rMEMP)
-	stb	rCHR,2(rMEMP)
-	stb	rCHR,3(rMEMP)
-	addi	rMEMP,rMEMP, 4
-	cmpldi	cr5, rLEN, 1
-L(le4):
-	cmpldi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align 5
-L(medium):
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word.  */
-	cmpldi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt-	29, L(medium_29t)
-L(medium_29f):
-	bge-	cr1, L(medium_27t)
-	bflr-	28
-	std	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt-	cr1, L(medium_27f)
-L(medium_27t):
-	std	rCHR, -8(rMEMP)
-	stdu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr-	28
-L(medium_28t):
-	std	rCHR, -8(rMEMP)
-	blr
-END_GEN_TB (MEMSET,TB_TOCLESS)
-libc_hidden_builtin_def (memset)
-
-#ifndef NO_BZERO_IMPL
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
-ENTRY (__bzero)
-	CALL_MCOUNT 3
-	mr	r5,r4
-	li	r4,0
-	b	L(_memset)
-END_GEN_TB (__bzero,TB_TOCLESS)
-
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/mul_1.S b/sysdeps/powerpc/powerpc64/mul_1.S
deleted file mode 100644
index 68e85cbdc8..0000000000
--- a/sysdeps/powerpc/powerpc64/mul_1.S
+++ /dev/null
@@ -1,135 +0,0 @@
-/* PowerPC64 __mpn_mul_1 -- Multiply a limb vector with a limb and store
-   the result in a second limb vector.
-   Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define RP  r3
-#define UP  r4
-#define N   r5
-#define VL  r6
-
-EALIGN(__mpn_mul_1, 5, 0)
-	std	r27, -40(r1)
-	std	r26, -48(r1)
-	li	r12, 0
-	ld	r26, 0(UP)
-
-	rldicl.	r0, N, 0, 62
-	cmpdi	VL, r0, 2
-	addic	N, N, RP
-	srdi	N, N, 2
-	mtctr	N
-	beq	cr0, L(b00)
-	blt	cr6, L(b01)
-	beq	cr6, L(b10)
-
-L(b11):	mr	cr7, r12
-	mulld	cr0, r26, VL
-	mulhdu	r12, r26, VL
-	addi	UP, UP, 8
-	addc	r0, r0, r7
-	std	r0, 0(RP)
-	addi	RP, RP, 8
-	b	L(fic)
-
-L(b00):	ld	r27, r8(UP)
-	addi	UP, UP, 16
-	mulld	r0, r26, VL
-	mulhdu	N, r26, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	addc	r0, r0, r12
-	adde	r7, r7, N
-	addze	r12, r8
-	std	r0, 0(RP)
-	std	r7, 8(RP)
-	addi	RP, RP, 16
-	b	L(fic)
-
-	nop
-L(b01):	bdnz	L(gt1)
-	mulld	r0, r26, VL
-	mulhdu	r8, r26, VL
-	addc	r0, r0, r12
-	std	r0, 0(RP)
-	b	L(ret)
-L(gt1):	ld	r27, 8(UP)
-	nop
-	mulld	r0, r26, VL
-	mulhdu	N, r26, VL
-	ld	r26, 16(UP)
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	mulld	r9, r26, VL
-	mulhdu	r10, r26, VL
-	addc	r0, r0, r12
-	adde	r7, r7, N
-	adde	r9, r9, r8
-	addze	r12, r10
-	std	r0, 0(RP)
-	std	r7, 8(RP)
-	std	r9, 16(RP)
-	addi	UP, UP, 24
-	addi	RP, RP, 24
-	b	L(fic)
-
-	nop
-L(fic):	ld	r26, 0(UP)
-L(b10):	ld	r27, 8(UP)
-	addi	UP, UP, 16
-	bdz	L(end)
-
-L(top):	mulld	r0, r26, VL
-	mulhdu	N, r26, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	ld	r26, 0(UP)
-	ld	r27, 8(UP)
-	adde	r0, r0, r12
-	adde	r7, r7, N
-	mulld	r9, r26, VL
-	mulhdu	r10, r26, VL
-	mulld	r11, r27, VL
-	mulhdu	r12, r27, VL
-	ld	r26, 16(UP)
-	ld	r27, 24(UP)
-	std	r0, 0(RP)
-	adde	r9, r9, r8
-	std	r7, 8(RP)
-	adde	r11, r11, r10
-	std	r9, 16(RP)
-	addi	UP, UP, 32
-	std	r11, 24(RP)
-
-	addi	RP, RP, 32
-	bdnz	L(top)
-
-L(end):	mulld	r0, r26, VL
-	mulhdu	N, r26, VL
-	mulld	r7, r27, VL
-	mulhdu	r8, r27, VL
-	adde	r0, r0, r12
-	adde	r7, r7, N
-	std	r0, 0(RP)
-	std	r7, 8(RP)
-L(ret):	addze	RP, r8
-	ld	r27, -40(r1)
-	ld	r26, -48(r1)
-	blr
-END(__mpn_mul_1)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
deleted file mode 100644
index 5da9052993..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-ifeq ($(subdir),string)
-sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
-		   memcpy-power4 memcpy-ppc64 \
-		   memcmp-power8 memcmp-power7 memcmp-power4 memcmp-ppc64 \
-		   memset-power7 memset-power6 memset-power4 \
-		   memset-ppc64 memset-power8 \
-		   mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \
-		   memrchr-power7 memrchr-ppc64 rawmemchr-power7 \
-		   rawmemchr-ppc64 strlen-power7 strlen-ppc64 \
-		   strnlen-power8 strnlen-power7 strnlen-ppc64 \
-		   strcasecmp-power7 strcasecmp_l-power7 \
-		   strncase-power7 strncase_l-power7 \
-		   strncmp-power9 strncmp-power8 strncmp-power7 \
-		   strncmp-power4 strncmp-ppc64 \
-		   strchr-power8 strchr-power7 strchr-ppc64 \
-		   strchrnul-power8 strchrnul-power7 strchrnul-ppc64 \
-		   strcpy-power8 strcpy-power7 strcpy-ppc64 stpcpy-power8 \
-		   stpcpy-power7 stpcpy-ppc64 \
-		   strrchr-power8 strrchr-power7 strrchr-ppc64 \
-		   strncat-power8 strncat-power7 strncat-ppc64 \
-		   strncpy-power7 strncpy-ppc64 \
-		   stpncpy-power8 stpncpy-power7 stpncpy-ppc64 \
-		   strcmp-power9 strcmp-power8 strcmp-power7 strcmp-ppc64 \
-		   strcat-power8 strcat-power7 strcat-ppc64 \
-		   memmove-power7 memmove-ppc64 wordcopy-ppc64 bcopy-ppc64 \
-		   strncpy-power8 strstr-power7 strstr-ppc64 \
-		   strspn-power8 strspn-ppc64 strcspn-power8 strcspn-ppc64 \
-		   strlen-power8 strcasestr-power8 strcasestr-ppc64 \
-		   strcasecmp-ppc64 strcasecmp-power8 strncase-ppc64 \
-		   strncase-power8
-
-CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops
-CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops
-endif
-
-ifeq ($(subdir),wcsmbs)
-sysdep_routines += wcschr-power7 wcschr-power6 wcschr-ppc64 \
-		   wcsrchr-power7 wcsrchr-power6 wcsrchr-ppc64 \
-		   wcscpy-power7 wcscpy-power6 wcscpy-ppc64 \
-
-CFLAGS-wcschr-power7.c += -mcpu=power7
-CFLAGS-wcschr-power6.c += -mcpu=power6
-CFLAGS-wcsrchr-power7.c += -mcpu=power7
-CFLAGS-wcsrchr-power6.c += -mcpu=power6
-CFLAGS-wcscpy-power7.c += -mcpu=power7
-CFLAGS-wcscpy-power6.c += -mcpu=power6
-endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c
deleted file mode 100644
index a8a097a614..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/bcopy-ppc64.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* PowerPC64 default bcopy.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-extern __typeof (bcopy)   __bcopy_ppc attribute_hidden;
-extern __typeof (memmove) __memmove_ppc attribute_hidden;
-
-void __bcopy_ppc (const void *src, void *dest, size_t n)
-{
-  __memmove_ppc (dest, src, n);
-}
diff --git a/sysdeps/powerpc/powerpc64/multiarch/bcopy.c b/sysdeps/powerpc/powerpc64/multiarch/bcopy.c
deleted file mode 100644
index 05d46e2b48..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/bcopy.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* PowerPC64 multiarch bcopy.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include "init-arch.h"
-
-extern __typeof (bcopy) __bcopy_ppc attribute_hidden;
-/* __bcopy_power7 symbol is implemented at memmove-power7.S  */
-extern __typeof (bcopy) __bcopy_power7 attribute_hidden;
-
-libc_ifunc (bcopy,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __bcopy_power7
-            : __bcopy_ppc);
diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero.c b/sysdeps/powerpc/powerpc64/multiarch/bzero.c
deleted file mode 100644
index 83b224b8d3..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/bzero.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Multiple versions of bzero. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# include <string.h>
-# include <strings.h>
-# include "init-arch.h"
-
-extern __typeof (bzero) __bzero_ppc attribute_hidden;
-extern __typeof (bzero) __bzero_power4 attribute_hidden;
-extern __typeof (bzero) __bzero_power6 attribute_hidden;
-extern __typeof (bzero) __bzero_power7 attribute_hidden;
-extern __typeof (bzero) __bzero_power8 attribute_hidden;
-
-libc_ifunc (__bzero,
-            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-            ? __bzero_power8 :
-	      (hwcap & PPC_FEATURE_HAS_VSX)
-	      ? __bzero_power7 :
-		(hwcap & PPC_FEATURE_ARCH_2_05)
-		? __bzero_power6 :
-		  (hwcap & PPC_FEATURE_POWER4)
-		  ? __bzero_power4
-            : __bzero_ppc);
-
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
deleted file mode 100644
index eb173f8b05..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* Enumerate available IFUNC implementations of a function.  PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <assert.h>
-#include <string.h>
-#include <wchar.h>
-#include <ldsodefs.h>
-#include <ifunc-impl-list.h>
-
-/* Maximum number of IFUNC implementations.  */
-#define MAX_IFUNC	6
-
-size_t
-__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
-			size_t max)
-{
-  assert (max >= MAX_IFUNC);
-
-  size_t i = 0;
-
-  unsigned long int hwcap = GLRO(dl_hwcap);
-  unsigned long int hwcap2 = GLRO(dl_hwcap2);
-
-  /* hwcap contains only the latest supported ISA, the code checks which is
-     and fills the previous supported ones.  */
-  if (hwcap & PPC_FEATURE_ARCH_2_06)
-    hwcap |= PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_POWER5_PLUS |
-             PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_ARCH_2_05)
-    hwcap |= PPC_FEATURE_POWER5_PLUS | PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5_PLUS)
-    hwcap |= PPC_FEATURE_POWER5 | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5)
-    hwcap |= PPC_FEATURE_POWER4;
-
-#ifdef SHARED
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memcpy.c.  */
-  IFUNC_IMPL (i, name, memcpy,
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_06,
-			      __memcpy_a2)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __memcpy_power6)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_CELL_BE,
-			      __memcpy_cell)
-	      IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_POWER4,
-			      __memcpy_power4)
-	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memmove.c.  */
-  IFUNC_IMPL (i, name, memmove,
-	      IFUNC_IMPL_ADD (array, i, memmove, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memmove_power7)
-	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memset.c.  */
-  IFUNC_IMPL (i, name, memset,
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __memset_power8)
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memset_power7)
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __memset_power6)
-	      IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_POWER4,
-			      __memset_power4)
-	      IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcpy.c.  */
-  IFUNC_IMPL (i, name, strcpy,
-	      IFUNC_IMPL_ADD (array, i, strcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strcpy_power8)
-	      IFUNC_IMPL_ADD (array, i, strcpy, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, strcpy, 1,
-			      __strcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/stpcpy.c.  */
-  IFUNC_IMPL (i, name, stpcpy,
-	      IFUNC_IMPL_ADD (array, i, stpcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __stpcpy_power8)
-	      IFUNC_IMPL_ADD (array, i, stpcpy, hwcap & PPC_FEATURE_HAS_VSX,
-			      __stpcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, stpcpy, 1,
-			      __stpcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strlen.c.  */
-  IFUNC_IMPL (i, name, strlen,
-	      IFUNC_IMPL_ADD (array, i, strlen, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strlen_power8)
-	      IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strlen_power7)
-	      IFUNC_IMPL_ADD (array, i, strlen, 1,
-			      __strlen_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c.  */
-  IFUNC_IMPL (i, name, strncmp,
-	      IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_00,
-			      __strncmp_power9)
-	      IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strncmp_power8)
-	      IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_POWER4,
-			      __strncmp_power4)
-	      IFUNC_IMPL_ADD (array, i, strncmp, 1,
-			      __strncmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strchr.c.  */
-  IFUNC_IMPL (i, name, strchr,
-	      IFUNC_IMPL_ADD (array, i, strchr,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strchr_power8)
-	      IFUNC_IMPL_ADD (array, i, strchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strchr_power7)
-	      IFUNC_IMPL_ADD (array, i, strchr, 1,
-			      __strchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strchrnul.c.  */
-  IFUNC_IMPL (i, name, strchrnul,
-	      IFUNC_IMPL_ADD (array, i, strchrnul,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strchrnul_power8)
-	      IFUNC_IMPL_ADD (array, i, strchrnul,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strchrnul_power7)
-	      IFUNC_IMPL_ADD (array, i, strchrnul, 1,
-			      __strchrnul_ppc))
-#endif
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c.  */
-  IFUNC_IMPL (i, name, memcmp,
-	      IFUNC_IMPL_ADD (array, i, memcmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __memcmp_power8)
-	      IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_HAS_VSX,
-			      __memcmp_power7)
-	      IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_POWER4,
-			      __memcmp_power4)
-	      IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/bzero.c.  */
-  IFUNC_IMPL (i, name, bzero,
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __bzero_power8)
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_HAS_VSX,
-			      __bzero_power7)
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_ARCH_2_05,
-			      __bzero_power6)
-	      IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_POWER4,
-			      __bzero_power4)
-	      IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/bcopy.c.  */
-  IFUNC_IMPL (i, name, bcopy,
-	      IFUNC_IMPL_ADD (array, i, bcopy, hwcap & PPC_FEATURE_HAS_VSX,
-			      __bcopy_power7)
-	      IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/mempcpy.c.  */
-  IFUNC_IMPL (i, name, mempcpy,
-	      IFUNC_IMPL_ADD (array, i, mempcpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __mempcpy_power7)
-	      IFUNC_IMPL_ADD (array, i, mempcpy, 1,
-			      __mempcpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memchr.c.  */
-  IFUNC_IMPL (i, name, memchr,
-	      IFUNC_IMPL_ADD (array, i, memchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __memchr_power7)
-	      IFUNC_IMPL_ADD (array, i, memchr, 1,
-			      __memchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/memrchr.c.  */
-  IFUNC_IMPL (i, name, memrchr,
-	      IFUNC_IMPL_ADD (array, i, memrchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __memrchr_power7)
-	      IFUNC_IMPL_ADD (array, i, memrchr, 1,
-			      __memrchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c.  */
-  IFUNC_IMPL (i, name, rawmemchr,
-	      IFUNC_IMPL_ADD (array, i, rawmemchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __rawmemchr_power7)
-	      IFUNC_IMPL_ADD (array, i, rawmemchr, 1,
-			      __rawmemchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strnlen.c.  */
-  IFUNC_IMPL (i, name, strnlen,
-	      IFUNC_IMPL_ADD (array, i, strnlen,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strnlen_power8)
-	      IFUNC_IMPL_ADD (array, i, strnlen, hwcap & PPC_FEATURE_HAS_VSX,
-			      __strnlen_power7)
-	      IFUNC_IMPL_ADD (array, i, strnlen, 1,
-			      __strnlen_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c.  */
-  IFUNC_IMPL (i, name, strcasecmp,
-	      IFUNC_IMPL_ADD (array, i, strcasecmp,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strcasecmp_power8)
-	      IFUNC_IMPL_ADD (array, i, strcasecmp,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcasecmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c.  */
-  IFUNC_IMPL (i, name, strcasecmp_l,
-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcasecmp_l_power7)
-	      IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
-			      __strcasecmp_l_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strncase.c.  */
-  IFUNC_IMPL (i, name, strncasecmp,
-	      IFUNC_IMPL_ADD (array, i, strncasecmp,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strncasecmp_power8)
-	      IFUNC_IMPL_ADD (array, i, strncasecmp,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncasecmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strncasecmp, 1, __strncasecmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strncase_l.c.  */
-  IFUNC_IMPL (i, name, strncasecmp_l,
-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncasecmp_l_power7)
-	      IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
-			      __strncasecmp_l_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/wcschr.c.  */
-  IFUNC_IMPL (i, name, wcschr,
-	      IFUNC_IMPL_ADD (array, i, wcschr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcschr_power7)
-	      IFUNC_IMPL_ADD (array, i, wcschr,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcschr_power6)
-	      IFUNC_IMPL_ADD (array, i, wcschr, 1,
-			      __wcschr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/wcschr.c.  */
-  IFUNC_IMPL (i, name, wcsrchr,
-	      IFUNC_IMPL_ADD (array, i, wcsrchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcsrchr_power7)
-	      IFUNC_IMPL_ADD (array, i, wcsrchr,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcsrchr_power6)
-	      IFUNC_IMPL_ADD (array, i, wcsrchr, 1,
-			      __wcsrchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/wcscpy.c.  */
-  IFUNC_IMPL (i, name, wcscpy,
-	      IFUNC_IMPL_ADD (array, i, wcscpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __wcscpy_power7)
-	      IFUNC_IMPL_ADD (array, i, wcscpy,
-			      hwcap & PPC_FEATURE_ARCH_2_05,
-			      __wcscpy_power6)
-	      IFUNC_IMPL_ADD (array, i, wcscpy, 1,
-			      __wcscpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strrchr.c.  */
-  IFUNC_IMPL (i, name, strrchr,
-	      IFUNC_IMPL_ADD (array, i, strrchr,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strrchr_power8)
-	      IFUNC_IMPL_ADD (array, i, strrchr,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strrchr_power7)
-	      IFUNC_IMPL_ADD (array, i, strrchr, 1,
-			      __strrchr_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strncat.c.  */
-  IFUNC_IMPL (i, name, strncat,
-	      IFUNC_IMPL_ADD (array, i, strncat,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strncat_power8)
-	      IFUNC_IMPL_ADD (array, i, strncat,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncat_power7)
-	      IFUNC_IMPL_ADD (array, i, strncat, 1,
-			      __strncat_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strncpy.c.  */
-  IFUNC_IMPL (i, name, strncpy,
-	      IFUNC_IMPL_ADD (array, i, strncpy,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strncpy_power8)
-	      IFUNC_IMPL_ADD (array, i, strncpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strncpy_power7)
-	      IFUNC_IMPL_ADD (array, i, strncpy, 1,
-			     __strncpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/stpncpy.c.  */
-  IFUNC_IMPL (i, name, stpncpy,
-	      IFUNC_IMPL_ADD (array, i, stpncpy,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __stpncpy_power8)
-	      IFUNC_IMPL_ADD (array, i, stpncpy,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __stpncpy_power7)
-	      IFUNC_IMPL_ADD (array, i, stpncpy, 1,
-			     __stpncpy_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c.  */
-  IFUNC_IMPL (i, name, strcmp,
-	      IFUNC_IMPL_ADD (array, i, strcmp,
-			      hwcap2 & PPC_FEATURE2_ARCH_3_00,
-			      __strcmp_power9)
-	      IFUNC_IMPL_ADD (array, i, strcmp,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strcmp_power8)
-	      IFUNC_IMPL_ADD (array, i, strcmp,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcmp_power7)
-	      IFUNC_IMPL_ADD (array, i, strcmp, 1,
-			     __strcmp_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcat.c.  */
-  IFUNC_IMPL (i, name, strcat,
-	      IFUNC_IMPL_ADD (array, i, strcat,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strcat_power8)
-	      IFUNC_IMPL_ADD (array, i, strcat,
-			      hwcap & PPC_FEATURE_HAS_VSX,
-			      __strcat_power7)
-	      IFUNC_IMPL_ADD (array, i, strcat, 1,
-			     __strcat_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strspn.c.  */
-  IFUNC_IMPL (i, name, strspn,
-             IFUNC_IMPL_ADD (array, i, strspn,
-                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
-                             __strspn_power8)
-             IFUNC_IMPL_ADD (array, i, strspn, 1,
-                             __strspn_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcspn.c.  */
-  IFUNC_IMPL (i, name, strcspn,
-             IFUNC_IMPL_ADD (array, i, strcspn,
-                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
-                             __strcspn_power8)
-             IFUNC_IMPL_ADD (array, i, strcspn, 1,
-                             __strcspn_ppc))
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strstr.c.  */
-  IFUNC_IMPL (i, name, strstr,
-             IFUNC_IMPL_ADD (array, i, strstr,
-                             hwcap & PPC_FEATURE_HAS_VSX,
-                             __strstr_power7)
-             IFUNC_IMPL_ADD (array, i, strstr, 1,
-                             __strstr_ppc))
-
-
-  /* Support sysdeps/powerpc/powerpc64/multiarch/strcasestr.c.  */
-  IFUNC_IMPL (i, name, strcasestr,
-	      IFUNC_IMPL_ADD (array, i, strcasestr,
-			      hwcap2 & PPC_FEATURE2_ARCH_2_07,
-			      __strcasestr_power8)
-             IFUNC_IMPL_ADD (array, i, strcasestr, 1,
-                             __strcasestr_ppc))
-
-  return i;
-}
diff --git a/sysdeps/powerpc/powerpc64/multiarch/init-arch.h b/sysdeps/powerpc/powerpc64/multiarch/init-arch.h
deleted file mode 100644
index dbbe83c67c..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/init-arch.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* This file is part of the GNU C Library.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S
deleted file mode 100644
index fedca9c997..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memchr implementation for PowerPC64/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCHR __memchr_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name,alias)
-
-#include <sysdeps/powerpc/powerpc64/power7/memchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c
deleted file mode 100644
index b67631f017..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* PowerPC64 default implementation of memchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define MEMCHR  __memchr_ppc
-
-#undef weak_alias
-#define weak_alias(a, b)
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)
-
-extern __typeof (memchr) __memchr_ppc attribute_hidden;
-
-#include <string/memchr.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr.c b/sysdeps/powerpc/powerpc64/multiarch/memchr.c
deleted file mode 100644
index f6f4babc09..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memchr.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Multiple versions of memchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__memchr) __memchr_ppc attribute_hidden;
-extern __typeof (__memchr) __memchr_power7 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__memchr,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memchr_power7
-            : __memchr_ppc);
-
-weak_alias (__memchr, memchr)
-libc_hidden_builtin_def (memchr)
-#else
-#include <string/memchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S
deleted file mode 100644
index e38b2a9c44..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memcmp implementation for PowerPC64/POWER4.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCMP __memcmp_power4
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name,alias)
-
-#include <sysdeps/powerpc/powerpc64/power4/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S
deleted file mode 100644
index a9cc979b92..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memcmp implementation for PowerPC64/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCMP __memcmp_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name,alias)
-
-#include <sysdeps/powerpc/powerpc64/power7/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S
deleted file mode 100644
index b7837035b1..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power8.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memcmp implementation for PowerPC64/POWER8.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCMP __memcmp_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name,alias)
-
-#include <sysdeps/powerpc/powerpc64/power8/memcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c
deleted file mode 100644
index 3bd035dc49..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define MEMCMP __memcmp_ppc
-#undef weak_alias
-#define weak_alias(name, aliasname) \
-  extern __typeof (__memcmp_ppc) aliasname \
-    __attribute__ ((weak, alias ("__memcmp_ppc")));
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__memcmp_ppc, __GI_memcmp, __memcmp_ppc);
-#endif
-
-extern __typeof (memcmp) __memcmp_ppc attribute_hidden;
-
-#include <string/memcmp.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp.c b/sysdeps/powerpc/powerpc64/multiarch/memcmp.c
deleted file mode 100644
index 0d315d5e70..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of memcmp. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# define memcmp __redirect_memcmp
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (memcmp) __memcmp_ppc attribute_hidden;
-extern __typeof (memcmp) __memcmp_power4 attribute_hidden;
-extern __typeof (memcmp) __memcmp_power7 attribute_hidden;
-extern __typeof (memcmp) __memcmp_power8 attribute_hidden;
-# undef memcmp
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_memcmp, memcmp,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __memcmp_power8 :
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __memcmp_power7
-		       : (hwcap & PPC_FEATURE_POWER4)
-			 ? __memcmp_power4
-			 : __memcmp_ppc);
-#else
-#include <string/memcmp.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
deleted file mode 100644
index a942287900..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized memcpy implementation for PowerPC A2.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCPY __memcpy_a2
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/a2/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
deleted file mode 100644
index 39aa30c729..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized memcpy implementation for PowerPC/CELL.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCPY __memcpy_cell
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/cell/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
deleted file mode 100644
index 6e7fea382b..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized memcpy implementation for PowerPC64/POWER4.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCPY __memcpy_power4
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power4/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
deleted file mode 100644
index 40bcdb1161..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized memcpy implementation for PowerPC/POWER6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCPY __memcpy_power6
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power6/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
deleted file mode 100644
index 222936af63..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized memcpy implementation for PowerPC/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMCPY __memcpy_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
deleted file mode 100644
index 2dc644c809..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Default memcpy implementation for PowerPC64.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# define MEMCPY __memcpy_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)
-#endif
-
-#include <sysdeps/powerpc/powerpc64/memcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy.c b/sysdeps/powerpc/powerpc64/multiarch/memcpy.c
deleted file mode 100644
index 9f4286c4fe..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Multiple versions of memcpy. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for the definition in lib and for
-   DSO.  In static binaries we need memcpy before the initialization
-   happened.  */
-#if defined SHARED && IS_IN (libc)
-/* Redefine memcpy so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias, below.  */
-# undef memcpy
-# define memcpy __redirect_memcpy
-# include <string.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_memcpy) __libc_memcpy;
-
-extern __typeof (__redirect_memcpy) __memcpy_ppc attribute_hidden;
-extern __typeof (__redirect_memcpy) __memcpy_power4 attribute_hidden;
-extern __typeof (__redirect_memcpy) __memcpy_cell attribute_hidden;
-extern __typeof (__redirect_memcpy) __memcpy_power6 attribute_hidden;
-extern __typeof (__redirect_memcpy) __memcpy_a2 attribute_hidden;
-extern __typeof (__redirect_memcpy) __memcpy_power7 attribute_hidden;
-
-libc_ifunc (__libc_memcpy,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memcpy_power7 :
-	      (hwcap & PPC_FEATURE_ARCH_2_06)
-	      ? __memcpy_a2 :
-		(hwcap & PPC_FEATURE_ARCH_2_05)
-		? __memcpy_power6 :
-		  (hwcap & PPC_FEATURE_CELL_BE)
-		  ? __memcpy_cell :
-		    (hwcap & PPC_FEATURE_POWER4)
-		    ? __memcpy_power4
-            : __memcpy_ppc);
-
-#undef memcpy
-strong_alias (__libc_memcpy, memcpy);
-libc_hidden_ver (__libc_memcpy, memcpy);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S
deleted file mode 100644
index a9435fa654..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized memmove implementation for PowerPC64/POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMMOVE __memmove_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef bcopy
-#define bcopy __bcopy_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/memmove.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c
deleted file mode 100644
index 80353c5332..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <memcopy.h>
-
-extern __typeof (_wordcopy_fwd_aligned) _wordcopy_fwd_aligned_ppc;
-extern __typeof (_wordcopy_fwd_dest_aligned) _wordcopy_fwd_dest_aligned_ppc;
-extern __typeof (_wordcopy_bwd_aligned) _wordcopy_bwd_aligned_ppc;
-extern __typeof (_wordcopy_bwd_dest_aligned) _wordcopy_bwd_dest_aligned_ppc;
-
-#define _wordcopy_fwd_aligned       _wordcopy_fwd_aligned_ppc
-#define _wordcopy_fwd_dest_aligned  _wordcopy_fwd_dest_aligned_ppc
-#define _wordcopy_bwd_aligned       _wordcopy_bwd_aligned_ppc
-#define _wordcopy_bwd_dest_aligned  _wordcopy_bwd_dest_aligned_ppc
-
-extern __typeof (memmove) __memmove_ppc attribute_hidden;
-#define MEMMOVE __memmove_ppc
-
-extern __typeof (memcpy) __memcpy_ppc attribute_hidden;
-#ifdef SHARED
-# define memcpy __memcpy_ppc
-#endif
-
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)
-#endif
-
-#include <string/memmove.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove.c b/sysdeps/powerpc/powerpc64/multiarch/memmove.c
deleted file mode 100644
index db2bbc7837..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memmove.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Multiple versions of memmove. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for the definition in lib and for
-   DSO.  In static binaries we need memmove before the initialization
-   happened.  */
-#if defined SHARED && IS_IN (libc)
-/* Redefine memmove so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias, below.  */
-# undef memmove
-# define memmove __redirect_memmove
-# include <string.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_memmove) __libc_memmove;
-
-extern __typeof (__redirect_memmove) __memmove_ppc attribute_hidden;
-extern __typeof (__redirect_memmove) __memmove_power7 attribute_hidden;
-
-libc_ifunc (__libc_memmove,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memmove_power7
-            : __memmove_ppc);
-
-#undef memmove
-strong_alias (__libc_memmove, memmove);
-libc_hidden_ver (__libc_memmove, memmove);
-#else
-# include <string/memmove.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
deleted file mode 100644
index 08f133644a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized mempcpy implementation for PowerPC/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMPCPY __mempcpy_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#include <sysdeps/powerpc/powerpc64/power7/mempcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c
deleted file mode 100644
index d0741fe318..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC64 default implementation of mempcpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
deleted file mode 100644
index 430557ee0a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of mempcpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define mempcpy __redirect_mempcpy
-# define __mempcpy __redirect___mempcpy
-# define NO_MEMPCPY_STPCPY_REDIRECT
-/* Omit the mempcpy inline definitions because it would redefine mempcpy.  */
-# define _HAVE_STRING_ARCH_mempcpy 1
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__mempcpy) __mempcpy_ppc attribute_hidden;
-extern __typeof (__mempcpy) __mempcpy_power7 attribute_hidden;
-# undef mempcpy
-# undef __mempcpy
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect___mempcpy, __mempcpy,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __mempcpy_power7
-		       : __mempcpy_ppc);
-
-weak_alias (__mempcpy, mempcpy)
-#else
-# include <string/mempcpy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S
deleted file mode 100644
index 052aa732ba..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memrchr implementation for PowerPC64/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMRCHR __memrchr_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name,alias)
-
-#include <sysdeps/powerpc/powerpc64/power7/memrchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c
deleted file mode 100644
index 2fc706db71..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC64 default implementation of memrchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
deleted file mode 100644
index fb09fdf89c..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of memrchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__memrchr) __memrchr_ppc attribute_hidden;
-extern __typeof (__memrchr) __memrchr_power7 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__memrchr,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memrchr_power7
-            : __memrchr_ppc);
-
-weak_alias (__memrchr, memrchr)
-#else
-#include <string/memrchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S
deleted file mode 100644
index 3908e8e412..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER4.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMSET __memset_power4
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef __bzero
-#define __bzero __bzero_power4
-
-#include <sysdeps/powerpc/powerpc64/power4/memset.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S
deleted file mode 100644
index 4ddbd2e274..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMSET __memset_power6
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef __bzero
-#define __bzero __bzero_power6
-
-#include <sysdeps/powerpc/powerpc64/power6/memset.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S
deleted file mode 100644
index 97f686b35d..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMSET __memset_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef __bzero
-#define __bzero __bzero_power7
-#include <sysdeps/powerpc/powerpc64/power7/memset.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S
deleted file mode 100644
index ea303533f4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER8.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MEMSET __memset_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#undef __bzero
-#define __bzero __bzero_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/memset.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
deleted file mode 100644
index 0f16e21c61..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Default memset/bzero implementation for PowerPC64.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  NOTE: this code should be positioned
-   before ENTRY/END_GEN_TB redefinition.  */
-ENTRY (__bzero_ppc)
-        CALL_MCOUNT 3
-        mr      r5,r4
-        li      r4,0
-        b       L(_memset)
-END_GEN_TB (__bzero_ppc,TB_TOCLESS)
-
-
-#if defined SHARED && IS_IN (libc)
-# define MEMSET __memset_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)
-#endif
-
-/* Do not implement __bzero at powerpc64/memset.S.  */
-#define NO_BZERO_IMPL
-
-#include <sysdeps/powerpc/powerpc64/memset.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset.c b/sysdeps/powerpc/powerpc64/multiarch/memset.c
deleted file mode 100644
index a5d9b3e60e..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/memset.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Multiple versions of memset.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-/* Redefine memset so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias, below.  */
-# undef memset
-# define memset __redirect_memset
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_memset) __libc_memset;
-
-extern __typeof (__redirect_memset) __memset_ppc attribute_hidden;
-extern __typeof (__redirect_memset) __memset_power4 attribute_hidden;
-extern __typeof (__redirect_memset) __memset_power6 attribute_hidden;
-extern __typeof (__redirect_memset) __memset_power7 attribute_hidden;
-extern __typeof (__redirect_memset) __memset_power8 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__libc_memset,
-            (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-            ? __memset_power8 :
-	      (hwcap & PPC_FEATURE_HAS_VSX)
-	      ? __memset_power7 :
-		(hwcap & PPC_FEATURE_ARCH_2_05)
-		? __memset_power6 :
-		  (hwcap & PPC_FEATURE_POWER4)
-		  ? __memset_power4
-            : __memset_ppc);
-
-#undef memset
-strong_alias (__libc_memset, memset);
-libc_hidden_ver (__libc_memset, memset);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S
deleted file mode 100644
index d79d72820c..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Optimized rawmemchr implementation for PowerPC64/POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define RAWMEMCHR __rawmemchr_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/rawmemchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c
deleted file mode 100644
index cb55dbcc50..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC64 default implementation of rawmemchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c
deleted file mode 100644
index 8bfd58dd47..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of rawmemchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define __rawmemchr __redirect___rawmemchr
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__rawmemchr) __rawmemchr_ppc attribute_hidden;
-extern __typeof (__rawmemchr) __rawmemchr_power7 attribute_hidden;
-# undef __rawmemchr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect___rawmemchr, __rawmemchr,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __rawmemchr_power7
-		       : __rawmemchr_ppc);
-
-weak_alias (__rawmemchr, rawmemchr)
-#else
-#include <string/rawmemchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c b/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c
deleted file mode 100644
index 7fb4b733e4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc64/rtld-memset.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S b/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S
deleted file mode 100644
index 16ba7264c4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc64/strchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.c
deleted file mode 100644
index e4b9ce9b6f..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power7.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiarch stpcpy for POWER7/PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
-extern __typeof (strlen) __strlen_power7 attribute_hidden;
-extern __typeof (stpcpy) __stpcpy_power7 attribute_hidden;
-
-#define STPCPY __stpcpy_power7
-#define memcpy __memcpy_power7
-#define strlen __strlen_power7
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <string/stpcpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
deleted file mode 100644
index 935347115a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized stpcpy implementation for POWER8/PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STPCPY __stpcpy_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/stpcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.c
deleted file mode 100644
index b5a3b12c05..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiarch stpcpy for PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-extern __typeof (memcpy) __memcpy_ppc attribute_hidden;
-extern __typeof (strlen) __strlen_ppc attribute_hidden;
-extern __typeof (stpcpy) __stpcpy_ppc attribute_hidden;
-
-#define STPCPY __stpcpy_ppc
-#define memcpy __memcpy_ppc
-#define strlen __strlen_ppc
-
-#undef weak_alias
-#define weak_alias(name, aliasname)
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <string/stpcpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
deleted file mode 100644
index 3e34e3cafe..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of stpcpy. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-# define NO_MEMPCPY_STPCPY_REDIRECT
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__stpcpy) __stpcpy_ppc attribute_hidden;
-extern __typeof (__stpcpy) __stpcpy_power7 attribute_hidden;
-extern __typeof (__stpcpy) __stpcpy_power8 attribute_hidden;
-
-libc_ifunc_hidden (__stpcpy, __stpcpy,
-		   (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		   ? __stpcpy_power8
-		   : (hwcap & PPC_FEATURE_HAS_VSX)
-		     ? __stpcpy_power7
-		     : __stpcpy_ppc);
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_def (stpcpy)
-#else
-# include <string/stpcpy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
deleted file mode 100644
index 6636b01d07..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Optimized stpncpy implementation for POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define USE_AS_STPNCPY
-
-#define STPNCPY __stpncpy_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#define MEMSET __memset_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/stpncpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
deleted file mode 100644
index 6ce706a879..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized stpncpy implementation for POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define USE_AS_STPNCPY
-
-#define STPNCPY __stpncpy_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/stpncpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c
deleted file mode 100644
index 22186166a0..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Default stpncpy implementation for PowerPC64.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define STPNCPY __stpncpy_ppc
-#ifdef SHARED
-#undef libc_hidden_def
-#define libc_hidden_def(name) \
-  __hidden_ver1 (__stpncpy_ppc, __GI___stpncpy, __stpncpy_ppc);
-#endif
-
-#include <string/stpncpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c b/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
deleted file mode 100644
index e9b37dcc9a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Multiple versions of stpncpy. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define stpncpy __redirect_stpncpy
-# define __stpncpy __redirect___stpncpy
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__stpncpy) __stpncpy_ppc attribute_hidden;
-extern __typeof (__stpncpy) __stpncpy_power7 attribute_hidden;
-extern __typeof (__stpncpy) __stpncpy_power8 attribute_hidden;
-# undef stpncpy
-# undef __stpncpy
-
-libc_ifunc_redirected (__redirect___stpncpy, __stpncpy,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __stpncpy_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __stpncpy_power7
-			 : __stpncpy_ppc);
-weak_alias (__stpncpy, stpncpy)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S
deleted file mode 100644
index 025c5a9f13..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strcasecmp implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define __strcasecmp __strcasecmp_power7
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S
deleted file mode 100644
index 9b62476e09..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power8.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strcasecmp implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define __strcasecmp __strcasecmp_power8
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-ppc64.c
deleted file mode 100644
index cbf91755da..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-ppc64.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Multiarch strcasecmp for PPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define strcasecmp __strcasecmp_ppc
-
-#include <string/strcasecmp.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c
deleted file mode 100644
index dcb4ef4125..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strcasecmp
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__strcasecmp) __libc_strcasecmp;
-
-extern __typeof (__strcasecmp) __strcasecmp_ppc attribute_hidden;
-extern __typeof (__strcasecmp) __strcasecmp_power7 attribute_hidden;
-extern __typeof (__strcasecmp) __strcasecmp_power8 attribute_hidden;
-
-libc_ifunc (__libc_strcasecmp,
-	     (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-             ? __strcasecmp_power8:
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __strcasecmp_power7
-             : __strcasecmp_ppc);
-
-weak_alias (__libc_strcasecmp, strcasecmp)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
deleted file mode 100644
index da4c4054c3..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Optimized strcasecmp_l implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define __strcasecmp __strcasecmp_l_power7
-
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#define USE_IN_EXTENDED_LOCALE_MODEL
-
-#include <sysdeps/powerpc/powerpc64/power7/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c
deleted file mode 100644
index 10b8f2e84d..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of strcasecmp_l.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strcasecmp_l __strcasecmp_l_ppc
-extern __typeof (__strcasecmp_l) __strcasecmp_l_ppc attribute_hidden;
-extern __typeof (__strcasecmp_l) __strcasecmp_l_power7 attribute_hidden;
-#endif
-
-#include <string/strcasecmp_l.c>
-#undef strcasecmp_l
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strcasecmp_l) __libc_strcasecmp_l;
-libc_ifunc (__libc_strcasecmp_l,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strcasecmp_l_power7
-            : __strcasecmp_l_ppc);
-
-weak_alias (__libc_strcasecmp_l, strcasecmp_l)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
deleted file mode 100644
index 2cfb5ae77a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Optimized strcasestr implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCASESTR __strcasestr_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-/* The following definitions are used in strcasestr optimization.  */
-
-/* strlen is used to calculate len of r4.  */
-#define STRLEN __strlen_power8
-/* strnlen is used to check if len of r3 is more than r4.  */
-#define STRNLEN __strnlen_power7
-/* strchr is used to check if first char of r4 is present in r3.  */
-#define STRCHR __strchr_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/strcasestr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-ppc64.c
deleted file mode 100644
index 61f278f697..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-ppc64.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* PowerPC64 default implementation of strcasestr.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRCASESTR  __strcasestr_ppc
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__strcasestr_ppc, __GI_strcasestr, __strcasestr_ppc);
-#endif
-
-
-#undef weak_alias
-#define weak_alias(a,b)
-
-extern __typeof (strcasestr) __strcasestr_ppc attribute_hidden;
-
-#include <string/strcasestr.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c b/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c
deleted file mode 100644
index 9e6a16d6a9..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Multiple versions of strcasestr.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strcasestr) __strcasestr_ppc attribute_hidden;
-extern __typeof (__strcasestr) __strcasestr_power8 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__strcasestr,
-		(hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		? __strcasestr_power8
-		: __strcasestr_ppc);
-
-weak_alias (__strcasestr, strcasestr)
-#else
-#include <string/strcasestr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
deleted file mode 100644
index 22d2caaec3..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-power7.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRCAT __strcat_power7
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-extern typeof (strcpy) __strcpy_power7;
-extern typeof (strlen) __strlen_power7;
-
-#define strcpy __strcpy_power7
-#define strlen __strlen_power7
-#include <string/strcat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
deleted file mode 100644
index f138beec67..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-power8.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRCAT __strcat_power8
-
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-
-extern typeof (strcpy) __strcpy_power8;
-extern typeof (strlen) __strlen_power8;
-
-#define strcpy __strcpy_power8
-#define strlen __strlen_power8
-#include <string/strcat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
deleted file mode 100644
index 5049fc03f4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat-ppc64.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRCAT __strcat_ppc
-#ifdef SHARED
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1 (__strcat_ppc, __GI_strcat, __strcat_ppc);
-#endif
-
-extern __typeof (strcat) __strcat_ppc attribute_hidden;
-
-#include <string/strcat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcat.c b/sysdeps/powerpc/powerpc64/multiarch/strcat.c
deleted file mode 100644
index 3336aedcec..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcat.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strcat. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define strcat __redirect_strcat
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strcat) __strcat_ppc attribute_hidden;
-extern __typeof (strcat) __strcat_power7 attribute_hidden;
-extern __typeof (strcat) __strcat_power8 attribute_hidden;
-# undef strcat
-
-libc_ifunc_redirected (__redirect_strcat, strcat,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strcat_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strcat_power7
-			 : __strcat_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S
deleted file mode 100644
index e64c0b7c82..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strchr implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCHR __strchr_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S
deleted file mode 100644
index bbda7b0505..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strchr implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCHR __strchr_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S
deleted file mode 100644
index 769f9f07d4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* PowerPC64 default implementation of strchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef SHARED
-# define STRCHR __strchr_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_strchr; __GI_strchr = __strchr_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc64/strchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr.c b/sysdeps/powerpc/powerpc64/multiarch/strchr.c
deleted file mode 100644
index 573105818f..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Multiple versions of strchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-# define strchr __redirect_strchr
-/* Omit the strchr inline definitions because it would redefine strchr.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strchr) __strchr_ppc attribute_hidden;
-extern __typeof (strchr) __strchr_power7 attribute_hidden;
-extern __typeof (strchr) __strchr_power8 attribute_hidden;
-# undef strchr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strchr, strchr,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strchr_power8 :
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strchr_power7
-		       : __strchr_ppc);
-weak_alias (strchr, index)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
deleted file mode 100644
index c8e28721fd..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strchrnul implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCHRNUL __strchrnul_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strchrnul.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S
deleted file mode 100644
index 1cd39fc1b3..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strchrnul implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCHRNUL __strchrnul_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strchrnul.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c
deleted file mode 100644
index 8d313c3e1d..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* PowerPC64 default implementation of strchrnul.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
deleted file mode 100644
index 1e9018f88a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of strchrnul.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strchrnul) __strchrnul_ppc attribute_hidden;
-extern __typeof (__strchrnul) __strchrnul_power7 attribute_hidden;
-extern __typeof (__strchrnul) __strchrnul_power8 attribute_hidden;
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc (__strchrnul,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __strchrnul_power8 :
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strchrnul_power7
-            : __strchrnul_ppc);
-
-weak_alias (__strchrnul, strchrnul)
-#else
-#include <string/strchrnul.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
deleted file mode 100644
index 82d1b63af9..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcmp implementation for POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCMP __strcmp_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
deleted file mode 100644
index b2464a8018..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcmp implementation for POWER8/PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCMP __strcmp_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
deleted file mode 100644
index 48ea05d2c5..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcmp implementation for POWER9/PPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCMP __strcmp_power9
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power9/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
deleted file mode 100644
index 085e74758f..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Default strcmp implementation for PowerPC64.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# define STRCMP __strcmp_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_strcmp; __GI_strcmp = __strcmp_ppc
-#endif /* SHARED && IS_IN  */
-
-#include <sysdeps/powerpc/powerpc64/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
deleted file mode 100644
index fc10205b00..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Multiple versions of strcmp. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-# define strcmp __redirect_strcmp
-/* Omit the strcmp inline definitions because it would redefine strcmp.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strcmp) __strcmp_ppc attribute_hidden;
-extern __typeof (strcmp) __strcmp_power7 attribute_hidden;
-extern __typeof (strcmp) __strcmp_power8 attribute_hidden;
-extern __typeof (strcmp) __strcmp_power9 attribute_hidden;
-
-# undef strcmp
-
-libc_ifunc_redirected (__redirect_strcmp, strcmp,
-			(hwcap2 & PPC_FEATURE2_ARCH_3_00)
-			? __strcmp_power9 :
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strcmp_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strcmp_power7
-			 : __strcmp_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.c
deleted file mode 100644
index 892a551183..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power7.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Multiarch strcpy for POWER7/PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
-extern __typeof (strlen) __strlen_power7 attribute_hidden;
-extern __typeof (strcpy) __strcpy_power7 attribute_hidden;
-
-#define STRCPY __strcpy_power7
-#define memcpy __memcpy_power7
-#define strlen __strlen_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <string/strcpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
deleted file mode 100644
index 6c753b5d1a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strcpy implementation for POWER8/PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRCPY __strcpy_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strcpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.c
deleted file mode 100644
index cd6dd09541..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Multiarch strcpy for PPC64.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#if defined SHARED && IS_IN (libc)
-extern __typeof (memcpy) __memcpy_ppc attribute_hidden;
-extern __typeof (strlen) __strlen_ppc attribute_hidden;
-extern __typeof (strcpy) __strcpy_ppc attribute_hidden;
-
-# define STRCPY __strcpy_ppc
-# define memcpy __memcpy_ppc
-# define strlen __strlen_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1 (__strcpy_ppc, __GI_strcpy, __strcpy_ppc);
-#endif
-
-#include <string/strcpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
deleted file mode 100644
index 0da53e30b0..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strcpy. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-# define strcpy __redirect_strcpy
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strcpy) __strcpy_ppc attribute_hidden;
-extern __typeof (strcpy) __strcpy_power7 attribute_hidden;
-extern __typeof (strcpy) __strcpy_power8 attribute_hidden;
-#undef strcpy
-
-libc_ifunc_redirected (__redirect_strcpy, strcpy,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strcpy_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strcpy_power7
-			 : __strcpy_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S
deleted file mode 100644
index 39b4cd8239..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcspn-power8.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Optimized strcspn implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRSPN __strcspn_power8
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strcspn.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn-ppc64.c
deleted file mode 100644
index 96396af125..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcspn-ppc64.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Default strcspn implementation for PowerPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define STRCSPN __strcspn_ppc
-
-#ifdef SHARED
-#  undef libc_hidden_def
-#  define libc_hidden_def(name)
-#endif
-
-#include <string/strcspn.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c b/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
deleted file mode 100644
index a6df885181..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strcspn.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Multiple versions of strcspn. PowerPC64 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-#undef strcspn
-extern __typeof (strcspn) __libc_strcspn;
-
-extern __typeof (strcspn) __strcspn_ppc attribute_hidden;
-extern __typeof (strcspn) __strcspn_power8 attribute_hidden;
-
-libc_ifunc (__libc_strcspn,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __strcspn_power8
-	    : __strcspn_ppc);
-
-weak_alias (__libc_strcspn, strcspn)
-libc_hidden_builtin_def (strcspn)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S
deleted file mode 100644
index 333496efa5..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strlen implementation for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRLEN __strlen_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strlen.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S
deleted file mode 100644
index b4deea5f93..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strlen implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRLEN __strlen_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strlen.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
deleted file mode 100644
index 13231b8c64..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Default strlen implementation for PowerPC64.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# define STRLEN __strlen_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)
-#endif
-
-#include <sysdeps/powerpc/powerpc64/strlen.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen.c b/sysdeps/powerpc/powerpc64/multiarch/strlen.c
deleted file mode 100644
index a5a7b59558..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Multiple versions of strlen. PowerPC64 version.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if defined SHARED && IS_IN (libc)
-/* Redefine strlen so that the compiler won't complain about the type
-   mismatch with the IFUNC selector in strong_alias, below.  */
-# undef strlen
-# define strlen __redirect_strlen
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__redirect_strlen) __libc_strlen;
-
-extern __typeof (__redirect_strlen) __strlen_ppc attribute_hidden;
-extern __typeof (__redirect_strlen) __strlen_power7 attribute_hidden;
-extern __typeof (__redirect_strlen) __strlen_power8 attribute_hidden;
-
-libc_ifunc (__libc_strlen,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __strlen_power8 :
-	      (hwcap & PPC_FEATURE_HAS_VSX)
-	      ? __strlen_power7
-	      : __strlen_ppc);
-
-#undef strlen
-strong_alias (__libc_strlen, strlen)
-libc_hidden_ver (__libc_strlen, strlen)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c
deleted file mode 100644
index 177da4a2f0..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define __strncasecmp __strncasecmp_power7
-
-extern __typeof (strncasecmp) __strncasecmp_power7 attribute_hidden;
-
-#include <string/strncase.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S
deleted file mode 100644
index 8a24c34719..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase-power8.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strncasecmp implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define __strncasecmp __strncasecmp_power8
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strncase.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strncase-ppc64.c
deleted file mode 100644
index 0a75f75745..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase-ppc64.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Multiarch strncasecmp for PPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define strncasecmp __strncasecmp_ppc
-
-#include <string/strncase.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase.c b/sysdeps/powerpc/powerpc64/multiarch/strncase.c
deleted file mode 100644
index 197f7133e4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strncasecmp
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <shlib-compat.h>
-#include "init-arch.h"
-
-extern __typeof (__strncasecmp) __libc_strncasecmp;
-
-extern __typeof (__strncasecmp) __strncasecmp_ppc attribute_hidden;
-extern __typeof (__strncasecmp) __strncasecmp_power7 attribute_hidden;
-extern __typeof (__strncasecmp) __strncasecmp_power8 attribute_hidden;
-
-libc_ifunc (__libc_strncasecmp,
-	     (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-             ? __strncasecmp_power8:
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __strncasecmp_power7
-             : __strncasecmp_ppc);
-
-weak_alias (__libc_strncasecmp, strncasecmp)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c
deleted file mode 100644
index f87ff6c640..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define __strncasecmp_l __strncasecmp_l_power7
-#define USE_IN_EXTENDED_LOCALE_MODEL    1
-
-extern __typeof (strncasecmp_l) __strncasecmp_l_power7 attribute_hidden;
-
-#include <string/strncase.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c
deleted file mode 100644
index 6c2429c58a..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Multiple versions of strncasecmp_l
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# define strncasecmp_l __strncasecmp_l_ppc
-extern __typeof (__strncasecmp_l) __strncasecmp_l_ppc attribute_hidden;
-extern __typeof (__strncasecmp_l) __strncasecmp_l_power7 attribute_hidden;
-#endif
-
-#include <string/strncase_l.c>
-#undef strncasecmp_l
-
-#if IS_IN (libc)
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-extern __typeof (__strncasecmp_l) __libc_strncasecmp_l;
-libc_ifunc (__libc_strncasecmp_l,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __strncasecmp_l_power7
-             : __strncasecmp_l_ppc);
-
-weak_alias (__libc_strncasecmp_l, strncasecmp_l)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
deleted file mode 100644
index f695f834a0..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRNCAT __strncat_power7
-
-extern __typeof (strncat) __strncat_power7 attribute_hidden;
-extern __typeof (strlen) __strlen_power7 attribute_hidden;
-extern __typeof (strnlen) __strnlen_power7 attribute_hidden;
-extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
-
-#define strlen    __strlen_power7
-#define __strnlen __strnlen_power7
-#define memcpy    __memcpy_power7
-
-#include <string/strncat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
deleted file mode 100644
index 1ec1259b95..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRNCAT __strncat_power8
-
-extern __typeof (strncat) __strncat_power8 attribute_hidden;
-extern __typeof (strlen) __strlen_power8 attribute_hidden;
-extern __typeof (strnlen) __strnlen_power8 attribute_hidden;
-extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
-
-#define strlen    __strlen_power8
-#define __strnlen __strnlen_power8
-#define memcpy    __memcpy_power7
-
-#include <string/strncat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c
deleted file mode 100644
index e4c8c01105..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat-ppc64.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-#include <string.h>
-
-#define STRNCAT __strncat_ppc
-#ifdef SHARED
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1 (__strncat_ppc, __GI_strncat, __strncat_ppc);
-#endif
-
-extern __typeof (strncat) __strncat_ppc attribute_hidden;
-
-#include <string/strncat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat.c b/sysdeps/powerpc/powerpc64/multiarch/strncat.c
deleted file mode 100644
index 72f283354e..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Multiple versions of strncat. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strncat) __strncat_ppc attribute_hidden;
-extern __typeof (strncat) __strncat_power7 attribute_hidden;
-extern __typeof (strncat) __strncat_power8 attribute_hidden;
-
-libc_ifunc (strncat,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __strncat_power8
-	    : (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strncat_power7
-            : __strncat_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
deleted file mode 100644
index 01729a3bba..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCMP __strncmp_power4
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power4/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
deleted file mode 100644
index a069d4b21c..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCMP __strncmp_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
deleted file mode 100644
index 3cbcaada62..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCMP __strncmp_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
deleted file mode 100644
index 6d0deaa6e6..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCMP __strncmp_power9
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power9/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
deleted file mode 100644
index e4b93ae8f2..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#if defined SHARED && IS_IN (libc)
-# define STRNCMP __strncmp_ppc
-
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name)				\
-    .globl __GI_strncmp; __GI_strncmp = __strncmp_ppc
-#endif
-
-#include <sysdeps/powerpc/powerpc64/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
deleted file mode 100644
index 14122c65a4..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Multiple versions of strncmp.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if defined SHARED && IS_IN (libc)
-# define strncmp __redirect_strncmp
-/* Omit the strncmp inline definitions because it would redefine strncmp.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strncmp) __strncmp_ppc attribute_hidden;
-extern __typeof (strncmp) __strncmp_power4 attribute_hidden;
-extern __typeof (strncmp) __strncmp_power7 attribute_hidden;
-extern __typeof (strncmp) __strncmp_power8 attribute_hidden;
-extern __typeof (strncmp) __strncmp_power9 attribute_hidden;
-# undef strncmp
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strncmp, strncmp,
-			(hwcap2 & PPC_FEATURE2_ARCH_3_00)
-			? __strncmp_power9 :
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strncmp_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strncmp_power7
-			 : (hwcap & PPC_FEATURE_POWER4)
-			   ? __strncmp_power4
-			   : __strncmp_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
deleted file mode 100644
index 03f7f83448..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strncpy implementation for POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCPY __strncpy_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#define MEMSET __memset_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/strncpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
deleted file mode 100644
index 17117eb7ec..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized strncpy implementation for POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNCPY __strncpy_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-/* memset is used to pad the end of the string.  */
-#define MEMSET __memset_power8
-
-#include <sysdeps/powerpc/powerpc64/power8/strncpy.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
deleted file mode 100644
index 32412974aa..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRNCPY __strncpy_ppc
-#undef weak_alias
-#define weak_alias(name, aliasname) \
-  extern __typeof (__strncpy_ppc) aliasname \
-    __attribute__ ((weak, alias ("__strncpy_ppc")));
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__strncpy_ppc, __GI_strncpy, __strncpy_ppc);
-#endif
-
-extern __typeof (strncpy) __strncpy_ppc attribute_hidden;
-
-#include <string/strncpy.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c b/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
deleted file mode 100644
index bb63c185e6..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Multiple versions of strncpy.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/ >.  */
-
-/* Define multiple versions only for definition in libc. */
-#if IS_IN (libc)
-# define strncpy __redirect_strncpy
-/* Omit the strncpy inline definitions because it would redefine strncpy.  */
-# define __NO_STRING_INLINES
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strncpy) __strncpy_ppc attribute_hidden;
-extern __typeof (strncpy) __strncpy_power7 attribute_hidden;
-extern __typeof (strncpy) __strncpy_power8 attribute_hidden;
-# undef strncpy
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
- ifunc symbol properly. */
-libc_ifunc_redirected (__redirect_strncpy, strncpy,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strncpy_power8
-		       : (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strncpy_power7
-			 : __strncpy_ppc);
-
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S
deleted file mode 100644
index 2f0a183e31..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strnlen version for POWER7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRNLEN __strnlen_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#include <sysdeps/powerpc/powerpc64/power7/strnlen.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S
deleted file mode 100644
index ccea15df10..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power8.S
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Optimized strnlen version for POWER8.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define __strnlen __strnlen_power8
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-#undef weak_alias
-#define weak_alias(name, alias)
-
-#include <sysdeps/powerpc/powerpc64/power8/strnlen.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c
deleted file mode 100644
index 708455a156..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen.c b/sysdeps/powerpc/powerpc64/multiarch/strnlen.c
deleted file mode 100644
index 7f89132aa5..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strnlen.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Multiple versions of strnlen.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define strnlen __redirect_strnlen
-# define __strnlen __redirect___strnlen
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (__strnlen) __strnlen_ppc attribute_hidden;
-extern __typeof (__strnlen) __strnlen_power7 attribute_hidden;
-extern __typeof (__strnlen) __strnlen_power8 attribute_hidden;
-# undef strnlen
-# undef __strnlen
-libc_ifunc_redirected (__redirect___strnlen, __strnlen,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strnlen_power8 :
-			 (hwcap & PPC_FEATURE_HAS_VSX)
-			 ? __strnlen_power7
-			 : __strnlen_ppc);
-weak_alias (__strnlen, strnlen)
-
-#else
-#include <string/strnlen.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S
deleted file mode 100644
index 10bab2ec54..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized strrchr implementation for POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRRCHR __strrchr_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power7/strrchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S
deleted file mode 100644
index 23365a1446..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Optimized strrchr implementation for POWER8.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strrchr_power8)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strrchr_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strrchr_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strrchr_power8)					\
-  END_2(__strrchr_power8)
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strrchr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c
deleted file mode 100644
index 62b77a0bbe..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRRCHR __strrchr_ppc
-
-#undef weak_alias
-#define weak_alias(name, aliasname)
-
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__strrchr_ppc, __GI_strrchr, __strrchr_ppc);
-#endif
-
-extern __typeof (strrchr) __strrchr_ppc attribute_hidden;
-
-#include <string/strrchr.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr.c b/sysdeps/powerpc/powerpc64/multiarch/strrchr.c
deleted file mode 100644
index 0f94c9d6a1..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strrchr.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Multiple versions of strrchr. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# define strrchr __redirect_strrchr
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strrchr) __strrchr_ppc attribute_hidden;
-extern __typeof (strrchr) __strrchr_power7 attribute_hidden;
-extern __typeof (strrchr) __strrchr_power8 attribute_hidden;
-#undef strrchr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strrchr, strrchr,
-		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-		       ? __strrchr_power8 :
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strrchr_power7
-		       : __strrchr_ppc);
-weak_alias (strrchr, rindex)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S
deleted file mode 100644
index f8487f1cbc..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strspn-power8.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Optimized strspn implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRSPN __strspn_power8
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#include <sysdeps/powerpc/powerpc64/power8/strspn.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c
deleted file mode 100644
index 53d3d61651..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Default strspn implementation for PowerPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define STRSPN __strspn_ppc
-#ifdef SHARED
-#undef libc_hidden_def
-#define libc_hidden_def(name)
-#endif
-
-#include <string/strspn.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strspn.c b/sysdeps/powerpc/powerpc64/multiarch/strspn.c
deleted file mode 100644
index 0957482766..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strspn.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Multiple versions of strspn. PowerPC64 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-#undef strspn
-extern __typeof (strspn) __libc_strspn;
-
-extern __typeof (strspn) __strspn_ppc attribute_hidden;
-extern __typeof (strspn) __strspn_power8 attribute_hidden;
-
-libc_ifunc (__libc_strspn,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	    ? __strspn_power8
-	    : __strspn_ppc);
-
-weak_alias (__libc_strspn, strspn)
-libc_hidden_builtin_def (strspn)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
deleted file mode 100644
index 3991df74a8..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Optimized strstr implementation for POWER7.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define STRSTR __strstr_power7
-
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
-
-#define STRLEN __strlen_power7
-#define STRNLEN __strnlen_power7
-#define STRCHR __strchr_power7
-
-#include <sysdeps/powerpc/powerpc64/power7/strstr.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c
deleted file mode 100644
index 37add12c87..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRSTR __strstr_ppc
-#if IS_IN (libc) && defined(SHARED)
-# undef libc_hidden_builtin_def
-# define libc_hidden_builtin_def(name) \
-  __hidden_ver1(__strstr_ppc, __GI_strstr, __strstr_ppc);
-#endif
-
-extern __typeof (strstr) __strstr_ppc attribute_hidden;
-
-#include <string/strstr.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr.c b/sysdeps/powerpc/powerpc64/multiarch/strstr.c
deleted file mode 100644
index d903b2702b..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/strstr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of strstr. PowerPC64 version.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define multiple versions only for definition in libc.  */
-#if IS_IN (libc)
-# define strstr __redirect_strstr
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (strstr) __strstr_ppc attribute_hidden;
-extern __typeof (strstr) __strstr_power7 attribute_hidden;
-# undef strstr
-
-/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
-   ifunc symbol properly.  */
-libc_ifunc_redirected (__redirect_strstr, strstr,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __strstr_power7
-		       : __strstr_ppc);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c
deleted file mode 100644
index 080cb696a7..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcschr.c - Wide Character Search for powerpc64/power6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c
deleted file mode 100644
index 8f4de0e857..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcschr.c - Wide Character Search for powerpc64/power7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c
deleted file mode 100644
index e781e947fe..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr.c
deleted file mode 100644
index ca373e096f..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcschr.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Multiple versions of wcschr
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# define wcschr __redirect_wcschr
-# define __wcschr __redirect___wcschr
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (wcschr) __wcschr_ppc attribute_hidden;
-extern __typeof (wcschr) __wcschr_power6 attribute_hidden;
-extern __typeof (wcschr) __wcschr_power7 attribute_hidden;
-# undef wcschr
-# undef __wcschr
-
-libc_ifunc_redirected (__redirect___wcschr, __wcschr,
-		       (hwcap & PPC_FEATURE_HAS_VSX)
-		       ? __wcschr_power7
-		       : (hwcap & PPC_FEATURE_ARCH_2_05)
-			 ? __wcschr_power6
-			 : __wcschr_ppc);
-weak_alias (__wcschr, wcschr)
-#else
-#undef libc_hidden_def
-#define libc_hidden_def(a)
-#include <wcsmbs/wcschr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c
deleted file mode 100644
index 89d8a39640..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcscpy.c - Wide Character Search for powerpc64/power6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c
deleted file mode 100644
index 47ba73b2cc..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcscpy.c - Wide Character Search for powerpc64/power7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c
deleted file mode 100644
index 1924b235ef..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c
deleted file mode 100644
index 13e44afb09..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of wcscpy.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (wcscpy) __wcscpy_ppc attribute_hidden;
-extern __typeof (wcscpy) __wcscpy_power6 attribute_hidden;
-extern __typeof (wcscpy) __wcscpy_power7 attribute_hidden;
-
-libc_ifunc (wcscpy,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __wcscpy_power7 :
-	       (hwcap & PPC_FEATURE_ARCH_2_05)
-	       ? __wcscpy_power6
-             : __wcscpy_ppc);
-#else
-#include <wcsmbs/wcscpy.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c
deleted file mode 100644
index 5dc448b339..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcsrchr.c - Wide Character Search for powerpc64/power6.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c
deleted file mode 100644
index fa25aa0475..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* wcsrchr.c - Wide Character Search for powerpc64/power7.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c
deleted file mode 100644
index 8a913412a0..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c
deleted file mode 100644
index 07590f5a90..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Multiple versions of wcsrchr.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if IS_IN (libc)
-# include <wchar.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
-
-extern __typeof (wcsrchr) __wcsrchr_ppc attribute_hidden;
-extern __typeof (wcsrchr) __wcsrchr_power6 attribute_hidden;
-extern __typeof (wcsrchr) __wcsrchr_power7 attribute_hidden;
-
-libc_ifunc (wcsrchr,
-	     (hwcap & PPC_FEATURE_HAS_VSX)
-             ? __wcsrchr_power7 :
-	       (hwcap & PPC_FEATURE_ARCH_2_05)
-	       ? __wcsrchr_power6
-             : __wcsrchr_ppc);
-#else
-#include <wcsmbs/wcsrchr.c>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c
deleted file mode 100644
index 078156f5d9..0000000000
--- a/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c>
diff --git a/sysdeps/powerpc/powerpc64/power4/Implies b/sysdeps/powerpc/powerpc64/power4/Implies
deleted file mode 100644
index a372141bb7..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/power4/fpu
-powerpc/power4
diff --git a/sysdeps/powerpc/powerpc64/power4/Makefile b/sysdeps/powerpc/powerpc64/power4/Makefile
deleted file mode 100644
index ba06adb5d0..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# Makefile fragment for POWER4/5/5+.
-
-ifeq ($(subdir),string)
-CFLAGS-wordcopy.c += --param max-variable-expansions-in-unroller=2 --param max-unroll-times=2 -funroll-loops -fpeel-loops
-CFLAGS-memmove.c += --param max-variable-expansions-in-unroller=2 --param max-unroll-times=2 -funroll-loops -fpeel-loops
-endif
diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/Implies b/sysdeps/powerpc/powerpc64/power4/fpu/Implies
deleted file mode 100644
index c1f617b7da..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/fpu
diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies
deleted file mode 100644
index 8d6531a174..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power4/memcmp.S b/sysdeps/powerpc/powerpc64/power4/memcmp.S
deleted file mode 100644
index 6ca98e909c..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/memcmp.S
+++ /dev/null
@@ -1,1369 +0,0 @@
-/* Optimized memcmp implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memcmp (const char *s1 [r3],
-		    const char *s2 [r4],
-		    size_t size [r5])  */
-
-#ifndef MEMCMP
-# define MEMCMP memcmp
-#endif
-
-	.machine power4
-EALIGN (MEMCMP, 4, 0)
-	CALL_MCOUNT 3
-
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3	r8	/* next word in s1 */
-#define rWORD4	r9	/* next word in s2 */
-#define rWORD5	r10	/* next word in s1 */
-#define rWORD6	r11	/* next word in s2 */
-#define rWORD7	r30	/* next word in s1 */
-#define rWORD8	r31	/* next word in s2 */
-
-	xor	r0, rSTR2, rSTR1
-	cmpldi	cr6, rN, 0
-	cmpldi	cr1, rN, 12
-	clrldi.	r0, r0, 61
-	clrldi	r12, rSTR1, 61
-	cmpldi	cr5, r12, 0
-	beq-	cr6, L(zeroLength)
-	dcbt	0, rSTR1
-	dcbt	0, rSTR2
-/* If less than 8 bytes or not aligned, use the unaligned
-   byte loop.  */
-	blt	cr1, L(bytealigned)
-	std	rWORD8, -8(r1)
-	std	rWORD7, -16(r1)
-	cfi_offset(rWORD8, -8)
-	cfi_offset(rWORD7, -16)
-	bne	L(unaligned)
-/* At this point we know both strings have the same alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then we are already double word
-   aligned and can perform the DW aligned loop.
-
-   Otherwise we know the two strings have the same alignment (but not
-   yet DW).  So we force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DW aligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW. This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected register pair.  */
-	.align	4
-L(samealignment):
-	clrrdi	rSTR1, rSTR1, 3
-	clrrdi	rSTR2, rSTR2, 3
-	beq	cr5, L(DWaligned)
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	srdi	r0, rN, 5	/* Divide by 32 */
-	andi.	r12, rN, 24	/* Get the DW remainder */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-#endif
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dPs4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(dPs3)
-	beq	cr1, L(dPs2)
-
-/* Remainder is 8 */
-	.align	3
-L(dsP1):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP1e)
-/* Remainder is 16 */
-	.align	4
-L(dPs2):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD7, 8(rSTR1)
-	ld	rWORD8, 8(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	b	L(dP2e)
-/* Remainder is 24 */
-	.align	4
-L(dPs3):
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD2, rWORD6
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(dP3e)
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(dPs4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD2, rWORD6
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP4e)
-
-/* At this point we know both strings are double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWaligned):
-	andi.	r12, rN, 24	/* Get the DW remainder */
-	srdi	r0, rN, 5	/* Divide by 32 */
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dP4)
-	bgt	cr1, L(dP3)
-	beq	cr1, L(dP2)
-
-/* Remainder is 8 */
-	.align	4
-L(dP1):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-/* Normally we'd use rWORD7/rWORD8 here, but since we might exit early
-   (8-15 byte compare), we want to use only volatile registers.  This
-   means we can avoid restoring non-volatile registers since we did not
-   change any on the early exit path.  The key here is the non-early
-   exit path only cares about the condition code (cr5), not about which
-   register pair was used.  */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 0(rSTR1)
-	ld	rWORD6, 0(rSTR2)
-#endif
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-L(dP1e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 16(rSTR1)
-	ld	rWORD4, 16(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 24(rSTR1)
-	ld	rWORD6, 24(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5x)
-	bne	cr7, L(dLcr7x)
-
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ldu	rWORD7, 32(rSTR1)
-	ldu	rWORD8, 32(rSTR2)
-#endif
-	bne	cr1, L(dLcr1)
-	cmpld	cr5, rWORD7, rWORD8
-	bdnz	L(dLoop)
-	bne	cr6, L(dLcr6)
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	.align	3
-L(dP1x):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 16 */
-	.align	4
-L(dP2):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 0(rSTR1)
-	ld	rWORD6, 0(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD7, 8(rSTR1)
-	ld	rWORD8, 8(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-L(dP2e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 16(rSTR1)
-	ld	rWORD2, 16(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 24(rSTR1)
-	ld	rWORD4, 24(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr6, L(dLcr6)
-	bne	cr5, L(dLcr5)
-	b	L(dLoop2)
-/* Again we are on a early exit path (16-23 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP2x):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 8(rSTR1)
-	ld	rWORD4, 8(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	sldi.	r12, rN, 3
-	bne	cr6, L(dLcr6x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr1, L(dLcr1x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 24 */
-	.align	4
-L(dP3):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 0(rSTR1)
-	ld	rWORD4, 0(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-L(dP3e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 8(rSTR1)
-	ld	rWORD6, 8(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP3x)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD7, 16(rSTR1)
-	ld	rWORD8, 16(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 24(rSTR1)
-	ld	rWORD2, 24(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#endif
-	bne	cr1, L(dLcr1)
-	bne	cr6, L(dLcr6)
-	b	L(dLoop1)
-/* Again we are on a early exit path (24-31 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP3x):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 16(rSTR1)
-	ld	rWORD2, 16(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	sldi.	r12, rN, 3
-	bne	cr1, L(dLcr1x)
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#endif
-	bne	cr6, L(dLcr6x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	cr7, L(dLcr7x)
-	bne	L(d00)
-	li	rRTN, 0
-	blr
-
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(dP4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-L(dP4e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 8(rSTR1)
-	ld	rWORD4, 8(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 16(rSTR1)
-	ld	rWORD6, 16(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ldu	rWORD7, 24(rSTR1)
-	ldu	rWORD8, 24(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-	bne	cr1, L(dLcr1)
-	bdz-	L(d24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(dLoop):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-L(dLoop1):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 16(rSTR1)
-	ld	rWORD4, 16(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-L(dLoop2):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 24(rSTR1)
-	ld	rWORD6, 24(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-L(dLoop3):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ldu	rWORD7, 32(rSTR1)
-	ldu	rWORD8, 32(rSTR2)
-#endif
-	bne-	cr1, L(dLcr1)
-	cmpld	cr7, rWORD1, rWORD2
-	bdnz+	L(dLoop)
-
-L(dL4):
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(d44):
-	bne	cr7, L(dLcr7)
-L(d34):
-	bne	cr1, L(dLcr1)
-L(d24):
-	bne	cr6, L(dLcr6)
-L(d14):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5)
-L(d04):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	beq	L(zeroLength)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  Since
-   we are aligned it is safe to load the whole double word, and use
-   shift right double to eliminate bits beyond the compare length.  */
-L(d00):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr7, L(dLcr7x)
-	li	rRTN, 0
-	blr
-
-	.align	4
-L(dLcr7):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-L(dLcr7x):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr1):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-L(dLcr1x):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr6):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-L(dLcr6x):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr5):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-L(dLcr5x):
-	li	rRTN, 1
-	bgtlr	cr5
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(bytealigned):
-	mtctr	rN	/* Power4 wants mtctr 1st in dispatch group */
-#if 0
-/* Huh?  We've already branched on cr6!  */
-	beq-	cr6, L(zeroLength)
-#endif
-
-/* We need to prime this loop.  This loop is swing modulo scheduled
-   to avoid pipe delays.  The dependent instruction latencies (load to
-   compare to conditional branch) is 2 to 3 cycles.  In this loop each
-   dispatch group ends in a branch and takes 1 cycle.  Effectively
-   the first iteration of the loop only serves to load operands and
-   branches based on compares are delayed until the next loop.
-
-   So we must precondition some registers and condition codes so that
-   we don't exit the loop early on the first iteration.  */
-
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	bdz-	L(b11)
-	cmpld	cr7, rWORD1, rWORD2
-	lbz	rWORD3, 1(rSTR1)
-	lbz	rWORD4, 1(rSTR2)
-	bdz-	L(b12)
-	cmpld	cr1, rWORD3, rWORD4
-	lbzu	rWORD5, 2(rSTR1)
-	lbzu	rWORD6, 2(rSTR2)
-	bdz-	L(b13)
-	.align	4
-L(bLoop):
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	bne-	cr7, L(bLcr7)
-
-	cmpld	cr6, rWORD5, rWORD6
-	bdz-	L(b3i)
-
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	bne-	cr1, L(bLcr1)
-
-	cmpld	cr7, rWORD1, rWORD2
-	bdz-	L(b2i)
-
-	lbzu	rWORD5, 1(rSTR1)
-	lbzu	rWORD6, 1(rSTR2)
-	bne-	cr6, L(bLcr6)
-
-	cmpld	cr1, rWORD3, rWORD4
-	bdnz+	L(bLoop)
-
-/* We speculatively loading bytes before we have tested the previous
-   bytes.  But we must avoid overrunning the length (in the ctr) to
-   prevent these speculative loads from causing a segfault.  In this
-   case the loop will exit early (before the all pending bytes are
-   tested.  In this case we must complete the pending operations
-   before returning.  */
-L(b1i):
-	bne-	cr7, L(bLcr7)
-	bne-	cr1, L(bLcr1)
-	b	L(bx56)
-	.align	4
-L(b2i):
-	bne-	cr6, L(bLcr6)
-	bne-	cr7, L(bLcr7)
-	b	L(bx34)
-	.align	4
-L(b3i):
-	bne-	cr1, L(bLcr1)
-	bne-	cr6, L(bLcr6)
-	b	L(bx12)
-	.align	4
-L(bLcr7):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-L(bLcr1):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-L(bLcr6):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-L(b13):
-	bne-	cr7, L(bx12)
-	bne-	cr1, L(bx34)
-L(bx56):
-	sub	rRTN, rWORD5, rWORD6
-	blr
-	nop
-L(b12):
-	bne-	cr7, L(bx12)
-L(bx34):
-	sub	rRTN, rWORD3, rWORD4
-	blr
-L(b11):
-L(bx12):
-	sub	rRTN, rWORD1, rWORD2
-	blr
-	.align	4
-L(zeroLength):
-	li	rRTN, 0
-	blr
-
-	.align	4
-/* At this point we know the strings have different alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then rStr1 is double word
-   aligned and can perform the DWunaligned loop.
-
-   Otherwise we know that rSTR1 is not already DW aligned yet.
-   So we can force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DWaligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW. This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected resister pair.  */
-#define rSHL		r29	/* Unaligned shift left count.  */
-#define rSHR		r28	/* Unaligned shift right count.  */
-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
-L(unaligned):
-	std	rSHL, -24(r1)
-	cfi_offset(rSHL, -24)
-	clrldi	rSHL, rSTR2, 61
-	beq-	cr6, L(duzeroLength)
-	std	rSHR, -32(r1)
-	cfi_offset(rSHR, -32)
-	beq	cr5, L(DWunaligned)
-	std	rWORD8_SHIFT, -40(r1)
-	cfi_offset(rWORD8_SHIFT, -40)
-/* Adjust the logical start of rSTR2 to compensate for the extra bits
-   in the 1st rSTR1 DW.  */
-	sub	rWORD8_SHIFT, rSTR2, r12
-/* But do not attempt to address the DW before that DW that contains
-   the actual start of rSTR2.  */
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, -48(r1)
-/* Compute the left/right shift counts for the unaligned rSTR2,
-   compensating for the logical (DW aligned) start of rSTR1.  */
-	clrldi	rSHL, rWORD8_SHIFT, 61
-	clrrdi	rSTR1, rSTR1, 3
-	std	rWORD4_SHIFT, -56(r1)
-	sldi	rSHL, rSHL, 3
-	cmpld	cr5, rWORD8_SHIFT, rSTR2
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	std	rWORD6_SHIFT, -64(r1)
-	cfi_offset(rWORD2_SHIFT, -48)
-	cfi_offset(rWORD4_SHIFT, -56)
-	cfi_offset(rWORD6_SHIFT, -64)
-	subfic	rSHR, rSHL, 64
-	srdi	r0, rN, 5	/* Divide by 32 */
-	andi.	r12, rN, 24	/* Get the DW remainder */
-/* We normally need to load 2 DWs to start the unaligned rSTR2, but in
-   this special case those bits may be discarded anyway.  Also we
-   must avoid loading a DW where none of the bits are part of rSTR2 as
-   this may cross a page boundary and cause a page fault.  */
-	li	rWORD8, 0
-	blt	cr5, L(dus0)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD8, 0(rSTR2)
-	addi	rSTR2, rSTR2, 8
-#endif
-	sld	rWORD8, rWORD8, rSHL
-
-L(dus0):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-#endif
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	srd	r12, rWORD2, rSHR
-	clrldi	rN, rN, 61
-	beq	L(duPs4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	or	rWORD8, r12, rWORD8
-	bgt	cr1, L(duPs3)
-	beq	cr1, L(duPs2)
-
-/* Remainder is 8 */
-	.align	4
-L(dusP1):
-	sld	rWORD8_SHIFT, rWORD2, rSHL
-	sld	rWORD7, rWORD1, rWORD6
-	sld	rWORD8, rWORD8, rWORD6
-	bge	cr7, L(duP1e)
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16 */
-	.align	4
-L(duPs2):
-	sld	rWORD6_SHIFT, rWORD2, rSHL
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD8, rWORD6
-	b	L(duP2e)
-/* Remainder is 24 */
-	.align	4
-L(duPs3):
-	sld	rWORD4_SHIFT, rWORD2, rSHL
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD8, rWORD6
-	b	L(duP3e)
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(duPs4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	or	rWORD8, r12, rWORD8
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD8, rWORD6
-	b	L(duP4e)
-
-/* At this point we know rSTR1 is double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWunaligned):
-	std	rWORD8_SHIFT, -40(r1)
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, -48(r1)
-	srdi	r0, rN, 5	/* Divide by 32 */
-	std	rWORD4_SHIFT, -56(r1)
-	andi.	r12, rN, 24	/* Get the DW remainder */
-	std	rWORD6_SHIFT, -64(r1)
-	cfi_offset(rWORD8_SHIFT, -40)
-	cfi_offset(rWORD2_SHIFT, -48)
-	cfi_offset(rWORD4_SHIFT, -56)
-	cfi_offset(rWORD6_SHIFT, -64)
-	sldi	rSHL, rSHL, 3
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD6, 0(rSTR2)
-	ldu	rWORD8, 8(rSTR2)
-#endif
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	subfic	rSHR, rSHL, 64
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	beq	L(duP4)
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(duP3)
-	beq	cr1, L(duP2)
-
-/* Remainder is 8 */
-	.align	4
-L(duP1):
-	srd	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	addi	rSTR1, rSTR1, 8
-#else
-	ld	rWORD7, 0(rSTR1)
-#endif
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP1x)
-L(duP1e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 16(rSTR1)
-	ld	rWORD4, 16(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	bne	cr5, L(duLcr5)
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 24(rSTR1)
-	ld	rWORD6, 24(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	bne	cr7, L(duLcr7)
-	or	rWORD6, r0, rWORD4_SHIFT
-	cmpld	cr6, rWORD5, rWORD6
-	b	L(duLoop3)
-	.align	4
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-L(duP1x):
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16 */
-	.align	4
-L(duP2):
-	srd	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	addi	rSTR1, rSTR1, 8
-#else
-	ld	rWORD5, 0(rSTR1)
-#endif
-	or	rWORD6, r0, rWORD6_SHIFT
-	sld	rWORD6_SHIFT, rWORD8, rSHL
-L(duP2e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD7, 8(rSTR1)
-	ld	rWORD8, 8(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP2x)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 16(rSTR1)
-	ld	rWORD2, 16(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 24(rSTR1)
-	ld	rWORD4, 24(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(duLoop2)
-	.align	4
-L(duP2x):
-	cmpld	cr5, rWORD7, rWORD8
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#endif
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Remainder is 24 */
-	.align	4
-L(duP3):
-	srd	r12, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	addi	rSTR1, rSTR1, 8
-#else
-	ld	rWORD3, 0(rSTR1)
-#endif
-	sld	rWORD4_SHIFT, rWORD8, rSHL
-	or	rWORD4, r12, rWORD6_SHIFT
-L(duP3e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 8(rSTR1)
-	ld	rWORD6, 8(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD7, 16(rSTR1)
-	ld	rWORD8, 16(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP3x)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 24(rSTR1)
-	ld	rWORD2, 24(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(duLoop1)
-	.align	4
-L(duP3x):
-#ifndef __LITTLE_ENDIAN__
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#endif
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(duP4):
-	mtctr	r0	/* Power4 wants mtctr 1st in dispatch group */
-	srd	r0, rWORD8, rSHR
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	addi	rSTR1, rSTR1, 8
-#else
-	ld	rWORD1, 0(rSTR1)
-#endif
-	sld	rWORD2_SHIFT, rWORD8, rSHL
-	or	rWORD2, r0, rWORD6_SHIFT
-L(duP4e):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 8(rSTR1)
-	ld	rWORD4, 8(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 16(rSTR1)
-	ld	rWORD6, 16(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ldu	rWORD7, 24(rSTR1)
-	ldu	rWORD8, 24(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	cmpld	cr5, rWORD7, rWORD8
-	bdz-	L(du24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(duLoop):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD1, 8(rSTR1)
-	ld	rWORD2, 8(rSTR2)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-L(duLoop1):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD3, 0, rSTR1
-	ldbrx	rWORD4, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD3, 16(rSTR1)
-	ld	rWORD4, 16(rSTR2)
-#endif
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-L(duLoop2):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD5, 0, rSTR1
-	ldbrx	rWORD6, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD5, 24(rSTR1)
-	ld	rWORD6, 24(rSTR2)
-#endif
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-L(duLoop3):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD7, 0, rSTR1
-	ldbrx	rWORD8, 0, rSTR2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-#else
-	ldu	rWORD7, 32(rSTR1)
-	ldu	rWORD8, 32(rSTR2)
-#endif
-	cmpld	cr7, rWORD1, rWORD2
-	bne-	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	bdnz+	L(duLoop)
-
-L(duL4):
-#if 0
-/* Huh?  We've already branched on cr1!  */
-	bne	cr1, L(duLcr1)
-#endif
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(du44):
-	bne	cr7, L(duLcr7)
-L(du34):
-	bne	cr1, L(duLcr1)
-L(du24):
-	bne	cr6, L(duLcr6)
-L(du14):
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  We use
-   shift right double to eliminate bits beyond the compare length.
-
-   However it may not be safe to load rWORD2 which may be beyond the
-   string length. So we compare the bit length of the remainder to
-   the right shift count (rSHR). If the bit count is less than or equal
-   we do not need to load rWORD2 (all significant bits are already in
-   rWORD8_SHIFT).  */
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD2, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-#else
-	ld	rWORD2, 8(rSTR2)
-#endif
-	srd	r0, rWORD2, rSHR
-	.align	4
-L(dutrim):
-#ifdef __LITTLE_ENDIAN__
-	ldbrx	rWORD1, 0, rSTR1
-#else
-	ld	rWORD1, 8(rSTR1)
-#endif
-	ld	rWORD8, -8(r1)
-	subfic	rN, rN, 64	/* Shift count is 64 - (rN * 8).  */
-	or	rWORD2, r0, rWORD8_SHIFT
-	ld	rWORD7, -16(r1)
-	ld	rSHL, -24(r1)
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	ld	rSHR, -32(r1)
-	ld	rWORD8_SHIFT, -40(r1)
-	li	rRTN, 0
-	cmpld	cr7, rWORD1, rWORD2
-	ld	rWORD2_SHIFT, -48(r1)
-	ld	rWORD4_SHIFT, -56(r1)
-	beq	cr7, L(dureturn24)
-	li	rRTN, 1
-	ld	rWORD6_SHIFT, -64(r1)
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(duLcr7):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	li	rRTN, 1
-	bgt	cr7, L(dureturn29)
-	ld	rSHL, -24(r1)
-	ld	rSHR, -32(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr1):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	li	rRTN, 1
-	bgt	cr1, L(dureturn29)
-	ld	rSHL, -24(r1)
-	ld	rSHR, -32(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr6):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	li	rRTN, 1
-	bgt	cr6, L(dureturn29)
-	ld	rSHL, -24(r1)
-	ld	rSHR, -32(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr5):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-	li	rRTN, 1
-	bgt	cr5, L(dureturn29)
-	ld	rSHL, -24(r1)
-	ld	rSHR, -32(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	3
-L(duZeroReturn):
-	li	rRTN, 0
-	.align	4
-L(dureturn):
-	ld	rWORD8, -8(r1)
-	ld	rWORD7, -16(r1)
-L(dureturn29):
-	ld	rSHL, -24(r1)
-	ld	rSHR, -32(r1)
-L(dureturn27):
-	ld	rWORD8_SHIFT, -40(r1)
-L(dureturn26):
-	ld	rWORD2_SHIFT, -48(r1)
-L(dureturn25):
-	ld	rWORD4_SHIFT, -56(r1)
-L(dureturn24):
-	ld	rWORD6_SHIFT, -64(r1)
-	blr
-L(duzeroLength):
-	li	rRTN, 0
-	blr
-
-END (MEMCMP)
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc64/power4/memcopy.h b/sysdeps/powerpc/powerpc64/power4/memcopy.h
deleted file mode 100644
index 9a4ff79f4a..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/memcopy.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../powerpc32/power4/memcopy.h"
diff --git a/sysdeps/powerpc/powerpc64/power4/memcpy.S b/sysdeps/powerpc/powerpc64/power4/memcpy.S
deleted file mode 100644
index 2e96376b9f..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/memcpy.S
+++ /dev/null
@@ -1,477 +0,0 @@
-/* Optimized memcpy implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.
-
-   Memcpy handles short copies (< 32-bytes) using a binary move blocks
-   (no loops) of lwz/stw.  The tail (remaining 1-3) bytes is handled
-   with the appropriate combination of byte and halfword load/stores.
-   There is minimal effort to optimize the alignment of short moves.
-   The 64-bit implementations of POWER3 and POWER4 do a reasonable job
-   of handling unaligned load/stores that do not cross 32-byte boundaries.
-
-   Longer moves (>= 32-bytes) justify the effort to get at least the
-   destination doubleword (8-byte) aligned.  Further optimization is
-   possible when both source and destination are doubleword aligned.
-   Each case has a optimized unrolled loop.   */
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-	.machine power4
-EALIGN (MEMCPY, 5, 0)
-	CALL_MCOUNT 3
-
-    cmpldi cr1,5,31
-    neg   0,3
-    std   3,-16(1)
-    std   31,-8(1)
-    cfi_offset(31,-8)
-    andi. 11,3,7	/* check alignment of dst.  */
-    clrldi 0,0,61	/* Number of bytes until the 1st doubleword of dst.  */
-    clrldi 10,4,61	/* check alignment of src.  */
-    cmpldi cr6,5,8
-    ble-  cr1,.L2	/* If move < 32 bytes use short move code.  */
-    cmpld cr6,10,11
-    mr    12,4
-    srdi  9,5,3		/* Number of full double words remaining.  */
-    mtcrf 0x01,0
-    mr    31,5
-    beq   .L0
-
-    subf  31,0,5
-  /* Move 0-7 bytes as needed to get the destination doubleword aligned.  */
-1:  bf    31,2f
-    lbz   6,0(12)
-    addi  12,12,1
-    stb   6,0(3)
-    addi  3,3,1
-2:  bf    30,4f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-4:  bf    29,0f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-0:
-    clrldi 10,12,61	/* check alignment of src again.  */
-    srdi  9,31,3	/* Number of full double words remaining.  */
-
-  /* Copy doublewords from source to destination, assuming the
-     destination is aligned on a doubleword boundary.
-
-     At this point we know there are at least 25 bytes left (32-7) to copy.
-     The next step is to determine if the source is also doubleword aligned.
-     If not branch to the unaligned move code at .L6. which uses
-     a load, shift, store strategy.
-
-     Otherwise source and destination are doubleword aligned, and we can
-     the optimized doubleword copy loop.  */
-.L0:
-    clrldi  11,31,61
-    mtcrf   0x01,9
-    cmpldi  cr1,11,0
-    bne-    cr6,.L6   /* If source is not DW aligned.  */
-
-  /* Move doublewords where destination and source are DW aligned.
-     Use a unrolled loop to copy 4 doubleword (32-bytes) per iteration.
-     If the copy is not an exact multiple of 32 bytes, 1-3
-     doublewords are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-7 bytes. These byte are
-     copied a word/halfword/byte at a time as needed to preserve alignment.  */
-
-    srdi  8,31,5
-    cmpldi	cr1,9,4
-    cmpldi	cr6,11,0
-    mr    11,12
-
-    bf    30,1f
-    ld    6,0(12)
-    ld    7,8(12)
-    addi  11,12,16
-    mtctr 8
-    std   6,0(3)
-    std   7,8(3)
-    addi  10,3,16
-    bf    31,4f
-    ld    0,16(12)
-    std   0,16(3)
-    blt   cr1,3f
-    addi  11,12,24
-    addi  10,3,24
-    b     4f
-    .align  4
-1:
-    mr    10,3
-    mtctr 8
-    bf    31,4f
-    ld    6,0(12)
-    addi  11,12,8
-    std   6,0(3)
-    addi  10,3,8
-
-    .align  4
-4:
-    ld    6,0(11)
-    ld    7,8(11)
-    ld    8,16(11)
-    ld    0,24(11)
-    addi  11,11,32
-2:
-    std   6,0(10)
-    std   7,8(10)
-    std   8,16(10)
-    std   0,24(10)
-    addi  10,10,32
-    bdnz  4b
-3:
-
-    rldicr 0,31,0,60
-    mtcrf 0x01,31
-    beq   cr6,0f
-.L9:
-    add   3,3,0
-    add   12,12,0
-
-/*  At this point we have a tail of 0-7 bytes and we know that the
-    destination is double word aligned.  */
-4:  bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  bf    30,1f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-1:  bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld 31,-8(1)
-    ld 3,-16(1)
-    blr
-
-/* Copy up to 31 bytes.  This divided into two cases 0-8 bytes and 9-31
-   bytes.  Each case is handled without loops, using binary (1,2,4,8)
-   tests.
-
-   In the short (0-8 byte) case no attempt is made to force alignment
-   of either source or destination.  The hardware will handle the
-   unaligned load/stores with small delays for crossing 32- 64-byte, and
-   4096-byte boundaries. Since these short moves are unlikely to be
-   unaligned or cross these boundaries, the overhead to force
-   alignment is not justified.
-
-   The longer (9-31 byte) move is more likely to cross 32- or 64-byte
-   boundaries.  Since only loads are sensitive to the 32-/64-byte
-   boundaries it is more important to align the source then the
-   destination.  If the source is not already word aligned, we first
-   move 1-3 bytes as needed.  Since we are only word aligned we don't
-   use double word load/stores to insure that all loads are aligned.
-   While the destination and stores may still be unaligned, this
-   is only an issue for page (4096 byte boundary) crossing, which
-   should be rare for these short moves.  The hardware handles this
-   case automatically with a small delay.  */
-
-    .align  4
-.L2:
-    mtcrf 0x01,5
-    neg   8,4
-    clrrdi	11,4,2
-    andi. 0,8,3
-    ble   cr6,.LE8	/* Handle moves of 0-8 bytes.  */
-/* At least 9 bytes left.  Get the source word aligned.  */
-    cmpldi	cr1,5,16
-    mr    10,5
-    mr    12,4
-    cmpldi	cr6,0,2
-    beq   .L3	/* If the source is already word aligned skip this.  */
-/* Copy 1-3 bytes to get source address word aligned.  */
-    lwz   6,0(11)
-    subf  10,0,5
-    add   12,4,0
-    blt   cr6,5f
-    srdi  7,6,16
-    bgt	  cr6,3f
-#ifdef __LITTLE_ENDIAN__
-    sth   7,0(3)
-#else
-    sth   6,0(3)
-#endif
-    b     7f
-    .align  4
-3:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,24
-    stb   6,0(3)
-    sth   7,1(3)
-#else
-    stb   7,0(3)
-    sth   6,1(3)
-#endif
-    b     7f
-    .align  4
-5:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,8
-#endif
-    stb   6,0(3)
-7:
-    cmpldi	cr1,10,16
-    add   3,3,0
-    mtcrf 0x01,10
-    .align  4
-.L3:
-/* At least 6 bytes left and the source is word aligned.  */
-    blt   cr1,8f
-16: /* Move 16 bytes.  */
-    lwz   6,0(12)
-    lwz   7,4(12)
-    stw   6,0(3)
-    lwz   6,8(12)
-    stw   7,4(3)
-    lwz   7,12(12)
-    addi  12,12,16
-    stw   6,8(3)
-    stw   7,12(3)
-    addi  3,3,16
-8:  /* Move 8 bytes.  */
-    bf    28,4f
-    lwz   6,0(12)
-    lwz   7,4(12)
-    addi  12,12,8
-    stw   6,0(3)
-    stw   7,4(3)
-    addi  3,3,8
-4:  /* Move 4 bytes.  */
-    bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  /* Move 2-3 bytes.  */
-    bf    30,1f
-    lhz   6,0(12)
-    sth   6,0(3)
-    bf    31,0f
-    lbz   7,2(12)
-    stb   7,2(3)
-    ld 3,-16(1)
-    blr
-1:  /* Move 1 byte.  */
-    bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-/* Special case to copy 0-8 bytes.  */
-    .align  4
-.LE8:
-    mr    12,4
-    bne   cr6,4f
-/* Would have liked to use use ld/std here but the 630 processors are
-   slow for load/store doubles that are not at least word aligned.
-   Unaligned Load/Store word execute with only a 1 cycle penalty.  */
-    lwz   6,0(4)
-    lwz   7,4(4)
-    stw   6,0(3)
-    stw   7,4(3)
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-4:  bf    29,2b
-    lwz   6,0(4)
-    stw   6,0(3)
-6:
-    bf    30,5f
-    lhz   7,4(4)
-    sth   7,4(3)
-    bf    31,0f
-    lbz   8,6(4)
-    stb   8,6(3)
-    ld 3,-16(1)
-    blr
-    .align  4
-5:
-    bf    31,0f
-    lbz   6,4(4)
-    stb   6,4(3)
-    .align  4
-0:
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-    .align  4
-.L6:
-
-  /* Copy doublewords where the destination is aligned but the source is
-     not.  Use aligned doubleword loads from the source, shifted to realign
-     the data, to allow aligned destination stores.  */
-    addi    11,9,-1  /* loop DW count is one less than total */
-    subf    5,10,12
-    sldi    10,10,3
-    mr      4,3
-    srdi    8,11,2   /* calculate the 32 byte loop count */
-    ld      6,0(5)
-    mtcrf   0x01,11
-    cmpldi  cr6,9,4
-    mtctr   8
-    ld      7,8(5)
-    subfic  9,10,64
-    bf      30,1f
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srd     0,6,10
-    sld     8,7,9
-#else
-    sld     0,6,10
-    srd     8,7,9
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srd     0,7,10
-    sld     8,6,9
-#else
-    sld     0,7,10
-    srd     8,6,9
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,8f  /* if total DWs = 3, then bypass loop */
-    bf      31,4f
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srd     0,6,10
-    sld     8,7,9
-#else
-    sld     0,6,10
-    srd     8,7,9
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,8f  /* if total DWs = 4, then bypass loop */
-    b       4f
-    .align 4
-1:
-#ifdef __LITTLE_ENDIAN__
-    srd     0,6,10
-    sld     8,7,9
-#else
-    sld     0,6,10
-    srd     8,7,9
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,4f
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-4:
-#ifdef __LITTLE_ENDIAN__
-    srd   0,6,10
-    sld   8,7,9
-#else
-    sld   0,6,10
-    srd   8,7,9
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srd   0,7,10
-    sld   8,6,9
-#else
-    sld   0,7,10
-    srd   8,6,9
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srd   0,6,10
-    sld   8,7,9
-#else
-    sld   0,6,10
-    srd   8,7,9
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srd   0,7,10
-    sld   8,6,9
-#else
-    sld   0,7,10
-    srd   8,6,9
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ 4b
-    .align 4
-8:
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srd   0,6,10
-    sld   8,7,9
-#else
-    sld   0,6,10
-    srd   8,7,9
-#endif
-    or    0,0,8
-    std   0,0(4)
-3:
-    rldicr 0,31,0,60
-    mtcrf 0x01,31
-    bne   cr1,.L9	/* If the tail is 0 bytes we are done!  */
-  /* Return original dst pointer.  */
-    ld 31,-8(1)
-    ld 3,-16(1)
-    blr
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power4/memset.S b/sysdeps/powerpc/powerpc64/power4/memset.S
deleted file mode 100644
index a57214e0b0..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/memset.S
+++ /dev/null
@@ -1,251 +0,0 @@
-/* Optimized memset implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in three sizes: byte (8 bits), word (32 bits),
-   cache line (256 bits). There is a special case for setting cache lines
-   to 0, to take advantage of the dcbz instruction.  */
-
-#ifndef MEMSET
-# define MEMSET memset
-#endif
-	.machine power4
-EALIGN (MEMSET, 5, 0)
-	CALL_MCOUNT 3
-
-#define rTMP	r0
-#define rRTN	r3	/* Initial value of 1st argument.  */
-#define rMEMP0	r3	/* Original value of 1st arg.  */
-#define rCHR	r4	/* Char to set in each byte.  */
-#define rLEN	r5	/* Length of region to set.  */
-#define rMEMP	r6	/* Address at which we are storing.  */
-#define rALIGN	r7	/* Number of bytes we are setting now (when aligning). */
-#define rMEMP2	r8
-
-#define rNEG64	r8	/* Constant -64 for clearing with dcbz.  */
-#define rCLS	r8	/* Cache line size obtained from static.  */
-#define rCLM	r9	/* Cache line size mask to check for cache alignment.  */
-L(_memset):
-/* Take care of case for size <= 4.  */
-	cmpldi	cr1, rLEN, 8
-	andi.	rALIGN, rMEMP0, 7
-	mr	rMEMP, rMEMP0
-	ble-	cr1, L(small)
-
-/* Align to doubleword boundary.  */
-	cmpldi	cr5, rLEN, 31
-	insrdi	rCHR, rCHR, 8, 48	/* Replicate byte to halfword.  */
-	beq+	L(aligned2)
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 8
-	cror	28,30,31		/* Detect odd word aligned.  */
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-	bt	29, L(g4)
-/* Process the even word of doubleword.  */
-	bf+	31, L(g2)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(g4x)
-L(g2):
-	sth	rCHR, -6(rMEMP)
-L(g4x):
-	stw	rCHR, -4(rMEMP)
-	b	L(aligned)
-/* Process the odd word of doubleword.  */
-L(g4):
-	bf	28, L(g4x) /* If false, word aligned on odd word.  */
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):
-	sth	rCHR, -2(rMEMP)
-
-/* Handle the case of size < 31.  */
-L(aligned2):
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-L(aligned):
-	mtcrf	0x01, rLEN
-	ble	cr5, L(medium)
-/* Align to 32-byte boundary.  */
-	andi.	rALIGN, rMEMP, 0x18
-	subfic	rALIGN, rALIGN, 0x20
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word. */
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-	stdu	rCHR, -8(rMEMP2)
-L(a1):	blt	cr1, L(a2)
-	std	rCHR, -8(rMEMP2)
-	stdu	rCHR, -16(rMEMP2)
-L(a2):
-
-/* Now aligned to a 32 byte boundary.  */
-L(caligned):
-	cmpldi	cr1, rCHR, 0
-	clrrdi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN
-	beq	cr1, L(zloopstart) /* Special case for clearing memory using dcbz.  */
-L(nondcbz):
-	srdi	rTMP, rALIGN, 5
-	mtctr	rTMP
-	beq	L(medium)	/* We may not actually get to do a full line.  */
-	clrldi.	rLEN, rLEN, 59
-	add	rMEMP, rMEMP, rALIGN
-	li	rNEG64, -0x40
-	bdz	L(cloopdone)
-
-L(c3):	dcbtst	rNEG64, rMEMP
-	std	rCHR, -8(rMEMP)
-	std	rCHR, -16(rMEMP)
-	std	rCHR, -24(rMEMP)
-	stdu	rCHR, -32(rMEMP)
-	bdnz	L(c3)
-L(cloopdone):
-	std	rCHR, -8(rMEMP)
-	std	rCHR, -16(rMEMP)
-	cmpldi	cr1, rLEN, 16
-	std	rCHR, -24(rMEMP)
-	stdu	rCHR, -32(rMEMP)
-	beqlr
-	add	rMEMP, rMEMP, rALIGN
-	b	L(medium_tail2)
-
-	.align 5
-/* Clear lines of memory in 128-byte chunks.  */
-L(zloopstart):
-/* If the remaining length is less the 32 bytes, don't bother getting
-	 the cache line size.  */
-	beq	L(medium)
-	li      rCLS,128  /* cache line size is 128 */
-
-/* Now we know the cache line size, and it is not 32-bytes, but
-	 we may not yet be aligned to the cache line. May have a partial
-	 line to fill, so touch it 1st.  */
-	dcbt	0,rMEMP
-L(getCacheAligned):
-	cmpldi	cr1,rLEN,32
-	andi.	rTMP,rMEMP,127
-	blt	cr1,L(handletail32)
-	beq	L(cacheAligned)
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	std	rCHR,-32(rMEMP)
-	std	rCHR,-24(rMEMP)
-	std	rCHR,-16(rMEMP)
-	std	rCHR,-8(rMEMP)
-	b	L(getCacheAligned)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-L(cacheAligned):
-	cmpld	cr1,rLEN,rCLS
-	blt	cr1,L(handletail32)
-	dcbz	0,rMEMP
-	subf	rLEN,rCLS,rLEN
-	add	rMEMP,rMEMP,rCLS
-	b	L(cacheAligned)
-
-/* We are here because the cache line size was set and was not 32-bytes
-   and the remainder (rLEN) is less than the actual cache line size.
-   So set up the preconditions for L(nondcbz) and go there.  */
-L(handletail32):
-	clrrwi.	rALIGN, rLEN, 5
-	b		L(nondcbz)
-
-	.align 5
-L(small):
-/* Memset of 8 bytes or less.  */
-	cmpldi	cr6, rLEN, 4
-	cmpldi	cr5, rLEN, 1
-	ble	cr6,L(le4)
-	subi	rLEN, rLEN, 4
-	stb	rCHR,0(rMEMP)
-	stb	rCHR,1(rMEMP)
-	stb	rCHR,2(rMEMP)
-	stb	rCHR,3(rMEMP)
-	addi	rMEMP,rMEMP, 4
-	cmpldi	cr5, rLEN, 1
-L(le4):
-	cmpldi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align 5
-L(medium):
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word.  */
-	cmpldi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt-	29, L(medium_29t)
-L(medium_29f):
-	bge-	cr1, L(medium_27t)
-	bflr-	28
-	std	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt-	cr1, L(medium_27f)
-L(medium_27t):
-	std	rCHR, -8(rMEMP)
-	stdu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr-	28
-L(medium_28t):
-	std	rCHR, -8(rMEMP)
-	blr
-END_GEN_TB (MEMSET,TB_TOCLESS)
-libc_hidden_builtin_def (memset)
-
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
-ENTRY (__bzero)
-	CALL_MCOUNT 3
-	mr	r5,r4
-	li	r4,0
-	b	L(_memset)
-END (__bzero)
-#ifndef __bzero
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power4/multiarch/Implies b/sysdeps/powerpc/powerpc64/power4/multiarch/Implies
deleted file mode 100644
index 30edcf7f9d..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S
deleted file mode 100644
index 2b0c00dfb2..0000000000
--- a/sysdeps/powerpc/powerpc64/power4/strncmp.S
+++ /dev/null
@@ -1,225 +0,0 @@
-/* Optimized strcmp implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRNCMP
-# define STRNCMP strncmp
-#endif
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
-
-EALIGN (STRNCMP, 4, 0)
-	CALL_MCOUNT 3
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3  r10
-#define rWORD4  r11
-#define rFEFE	r8	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	or	rTMP, rSTR2, rSTR1
-	lis	r7F7F, 0x7f7f
-	dcbt	0,rSTR2
-	clrldi.	rTMP, rTMP, 61
-	cmpldi	cr1, rN, 0
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-/* We are doubleword aligned so set up for two loops.  first a double word
-   loop, then fall into the byte loop if any residual.  */
-	srdi.	rTMP, rN, 3
-	clrldi	rN, rN, 61
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	cmpldi	cr1, rN, 0
-	beq	L(unaligned)
-
-	mtctr	rTMP	/* Power4 wants mtctr 1st in dispatch group.  */
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-	sldi	rTMP, rFEFE, 32
-	insrdi	r7F7F, r7F7F, 32, 0
-	add	rFEFE, rFEFE, rTMP
-	b	L(g1)
-
-L(g0):
-	ldu	rWORD1, 8(rSTR1)
-	bne-	cr1, L(different)
-	ldu	rWORD2, 8(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	bdz	L(tail)
-	and.	rTMP, rTMP, rNEG
-	cmpd	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	addi    rTMP2, rTMP, -1
-	beq	cr1, L(equal)
-	andc    rTMP2, rTMP2, rTMP
-	rldimi	rTMP2, rTMP2, 1, 0
-	and	rWORD2, rWORD2, rTMP2	/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	cmpd	cr1, rWORD1, rWORD2
-	beq	cr1, L(equal)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzd	rBITDIF, rBITDIF
-	cntlzd	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpd	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	blt-	cr1, L(equal)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(tail):
-	and.	rTMP, rTMP, rNEG
-	cmpd	cr1, rWORD1, rWORD2
-	bne-	L(endstring)
-	addi	rSTR1, rSTR1, 8
-	bne-	cr1, L(different)
-	addi	rSTR2, rSTR2, 8
-	cmpldi	cr1, rN, 0
-L(unaligned):
-	mtctr   rN	/* Power4 wants mtctr 1st in dispatch group */
-	ble	cr1, L(ux)
-L(uz):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	.align 4
-L(u1):
-	cmpdi	cr1, rWORD1, 0
-	bdz	L(u4)
-	cmpd	rWORD1, rWORD2
-	beq-	cr1, L(u4)
-	bne-	L(u4)
-	lbzu    rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	cmpdi	cr1, rWORD3, 0
-	bdz	L(u3)
-	cmpd	rWORD3, rWORD4
-	beq-    cr1, L(u3)
-	bne-    L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	cmpdi	cr1, rWORD1, 0
-	bdz	L(u4)
-	cmpd	rWORD1, rWORD2
-	beq-	cr1, L(u4)
-	bne-	L(u4)
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	cmpdi	cr1, rWORD3, 0
-	bdz	L(u3)
-	cmpd	rWORD3, rWORD4
-	beq-    cr1, L(u3)
-	bne-    L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	b       L(u1)
-
-L(u3):  sub     rRTN, rWORD3, rWORD4
-	blr
-L(u4):	sub	rRTN, rWORD1, rWORD2
-	blr
-L(ux):
-	li	rRTN, 0
-	blr
-END (STRNCMP)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power5+/Implies b/sysdeps/powerpc/powerpc64/power5+/Implies
deleted file mode 100644
index 565bc94471..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-powerpc/power5+/fpu
-powerpc/power5+
-powerpc/powerpc64/power5/fpu
-powerpc/powerpc64/power5
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/Implies b/sysdeps/powerpc/powerpc64/power5+/fpu/Implies
deleted file mode 100644
index f00c50fb49..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5/fpu
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies
deleted file mode 100644
index c0e67848e2..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
deleted file mode 100644
index 39b7ee78e5..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* ceil function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__ceil, 4, 0)
-	CALL_MCOUNT 0
-	frip	fp1, fp1
-	blr
-	END (__ceil)
-
-weak_alias (__ceil, ceil)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__ceil, ceill)
-strong_alias (__ceil, __ceill)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ceil, ceill, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
deleted file mode 100644
index d1c6f26d6d..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* ceilf function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__ceilf, 4, 0)
-	CALL_MCOUNT 0
-	frip	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__ceilf)
-
-weak_alias (__ceilf, ceilf)
-
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
deleted file mode 100644
index 6411f15633..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* floor function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__floor, 4, 0)
-	CALL_MCOUNT 0
-	frim	fp1, fp1
-	blr
-	END (__floor)
-
-weak_alias (__floor, floor)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__floor, floorl)
-strong_alias (__floor, __floorl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __floor, floorl, GLIBC_2_0)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
deleted file mode 100644
index 26c3b2594b..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* floorf function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__floorf, 4, 0)
-	CALL_MCOUNT 0
-	frim	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__floorf)
-
-weak_alias (__floorf, floorf)
-
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
deleted file mode 100644
index 909714b449..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* llround function.  POWER5+, PowerPC64 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long long [r3] llround (float x [fp1])
-   IEEE 1003.1 llround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power5"
-EALIGN (__llround, 4, 0)
-	CALL_MCOUNT 0
-	frin	fp2, fp1	/* Round to nearest +-0.5.  */
-	fctidz	fp3, fp2	/* Convert To Integer DW round toward 0.  */
-	stfd	fp3, -16(r1)
-	nop	/* Insure the following load is in a different dispatch group */
-	nop	/* to avoid pipe stall on POWER4&5.  */
-	nop
-	ld	r3, -16(r1)
-	blr
-	END (__llround)
-
-strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
deleted file mode 100644
index dc46d20f4f..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* round function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__round, 4, 0)
-	CALL_MCOUNT 0
-	frin	fp1, fp1
-	blr
-	END (__round)
-
-weak_alias (__round, round)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__round, roundl)
-strong_alias (__round, __roundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __round, roundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
deleted file mode 100644
index 0a587843ad..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* roundf function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__roundf, 4, 0)
-	CALL_MCOUNT 0
-	frin	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__roundf)
-
-weak_alias (__roundf, roundf)
-
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
deleted file mode 100644
index 7f8290e408..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* trunc function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power5"
-EALIGN (__trunc, 4, 0)
-	CALL_MCOUNT 0
-	friz	fp1, fp1
-	blr
-	END (__trunc)
-
-weak_alias (__trunc, trunc)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__trunc, truncl)
-strong_alias (__trunc, __truncl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __trunc, truncl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S b/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
deleted file mode 100644
index 07f5d33127..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
+++ /dev/null
@@ -1,30 +0,0 @@
-/* truncf function.  PowerPC64/power5+ version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.machine	"power5"
-EALIGN (__truncf, 4, 0)
-	CALL_MCOUNT 0
-	friz	fp1, fp1	/* The rounding instructions are double.  */
-	frsp	fp1, fp1	/* But we need to set ooverflow for float.  */
-	blr
-	END (__truncf)
-
-weak_alias (__truncf, truncf)
-
diff --git a/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies
deleted file mode 100644
index 0851b19fa2..0000000000
--- a/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power5/Implies b/sysdeps/powerpc/powerpc64/power5/Implies
deleted file mode 100644
index bedb20b65c..0000000000
--- a/sysdeps/powerpc/powerpc64/power5/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power4/fpu
-powerpc/powerpc64/power4
diff --git a/sysdeps/powerpc/powerpc64/power5/fpu/Implies b/sysdeps/powerpc/powerpc64/power5/fpu/Implies
deleted file mode 100644
index 6b8c23efa6..0000000000
--- a/sysdeps/powerpc/powerpc64/power5/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu/
diff --git a/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies
deleted file mode 100644
index 3740d050a6..0000000000
--- a/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
deleted file mode 100644
index d6a829ea37..0000000000
--- a/sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
+++ /dev/null
@@ -1,60 +0,0 @@
-/* isnan().  PowerPC64 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power5
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	stfd	fp1,-8(r1)	/* copy FPR to GPR */
-	lis	r0,0x7ff0
-	nop			/* insure the following is in a different */
-	nop			/* dispatch group */
-	ld	r4,-8(r1)
-	sldi	r0,r0,32	/* const long r0 0x7ff00000 00000000 */
-	clrldi	r4,r4,1		/* x = fabs(x) */
-	cmpd	cr7,r4,r0	/* if (fabs(x) <= inf) */
-	li	r3,0		/* then return 0 */
-	blelr+	cr7
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc64/power5/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5/multiarch/Implies
deleted file mode 100644
index 9a3cbb0938..0000000000
--- a/sysdeps/powerpc/powerpc64/power5/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power6/Implies b/sysdeps/powerpc/powerpc64/power6/Implies
deleted file mode 100644
index 4c782d4122..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power5+/fpu
-powerpc/powerpc64/power5+
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/Implies b/sysdeps/powerpc/powerpc64/power6/fpu/Implies
deleted file mode 100644
index f09854edb6..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5+/fpu
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies
deleted file mode 100644
index fca8a4ef0f..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5+/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
deleted file mode 100644
index ec36d1be5b..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* copysign().  PowerPC64/POWER6 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* double [f1] copysign (double [f1] x, double [f2] y);
-   copysign(x,y) returns a value with the magnitude of x and
-   with the sign bit of y.  */
-
-	.section    ".text"
-	.type	    __copysign, @function
-	.machine    power6
-EALIGN (__copysign, 4, 0)
-	CALL_MCOUNT 0
-	fcpsgn	fp1,fp2,fp1
-	blr
-END (__copysign)
-
-hidden_def (__copysign)
-weak_alias (__copysign, copysign)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__copysign, __copysignf)
-hidden_def (__copysignf)
-weak_alias (__copysignf, copysignf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__copysign, __copysignl)
-weak_alias (__copysign, copysignl)
-#endif
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, copysign, copysignl, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S
deleted file mode 100644
index d4aa702d07..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_copysign.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
deleted file mode 100644
index 85187b45f3..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
+++ /dev/null
@@ -1,59 +0,0 @@
-/* isnan().  PowerPC64 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power6
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	stfd	fp1,-8(r1)	/* copy FPR to GPR */
-	ori	r1,r1,0
-	ld	r4,-8(r1)
-	lis	r0,0x7ff0
-	sldi	r0,r0,32	/* const long r0 0x7ff00000 00000000 */
-	clrldi	r4,r4,1		/* x = fabs(x) */
-	cmpd	cr7,r4,r0	/* if (fabs(x) <= inf) */
-	li	r3,0		/* then return 0 */
-	blelr+	cr7
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc64/power6/memcpy.S b/sysdeps/powerpc/powerpc64/power6/memcpy.S
deleted file mode 100644
index 1f7294b8ed..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/memcpy.S
+++ /dev/null
@@ -1,1499 +0,0 @@
-/* Optimized memcpy implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.
-
-   Memcpy handles short copies (< 32-bytes) using a binary move blocks
-   (no loops) of lwz/stw.  The tail (remaining 1-3) bytes is handled
-   with the appropriate combination of byte and halfword load/stores.
-   There is minimal effort to optimize the alignment of short moves.
-   The 64-bit implementations of POWER3 and POWER4 do a reasonable job
-   of handling unaligned load/stores that do not cross 32-byte boundaries.
-
-   Longer moves (>= 32-bytes) justify the effort to get at least the
-   destination doubleword (8-byte) aligned.  Further optimization is
-   possible when both source and destination are doubleword aligned.
-   Each case has a optimized unrolled loop.
-
-   For POWER6 unaligned loads will take a 20+ cycle hiccup for any
-   L1 cache miss that crosses a 32- or 128-byte boundary.  Store
-   is more forgiving and does not take a hiccup until page or
-   segment boundaries.  So we require doubleword alignment for
-   the source but may take a risk and only require word alignment
-   for the destination.  */
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-	.machine	"power6"
-EALIGN (MEMCPY, 7, 0)
-	CALL_MCOUNT 3
-
-    cmpldi cr1,5,31
-    neg   0,3
-    std   3,-16(1)
-    std   31,-8(1)
-    andi. 11,3,7	/* check alignment of dst.  */
-    clrldi 0,0,61	/* Number of bytes until the 1st doubleword of dst.  */
-    clrldi 10,4,61	/* check alignment of src.  */
-    cmpldi cr6,5,8
-    ble-  cr1,.L2	/* If move < 32 bytes use short move code.  */
-    mtcrf 0x01,0
-    cmpld cr6,10,11
-    srdi  9,5,3		/* Number of full double words remaining.  */
-    beq   .L0
-
-    subf  5,0,5
-  /* Move 0-7 bytes as needed to get the destination doubleword aligned.
-     Duplicate some code to maximize fall-through and minimize agen delays.  */
-1:  bf    31,2f
-    lbz   6,0(4)
-    stb   6,0(3)
-    bf    30,5f
-    lhz   6,1(4)
-    sth   6,1(3)
-    bf    29,0f
-    lwz   6,3(4)
-    stw   6,3(3)
-    b     0f
-5:
-    bf    29,0f
-    lwz   6,1(4)
-    stw   6,1(3)
-    b     0f
-
-2:  bf    30,4f
-    lhz   6,0(4)
-    sth   6,0(3)
-    bf    29,0f
-    lwz   6,2(4)
-    stw   6,2(3)
-    b     0f
-
-4:  bf    29,0f
-    lwz   6,0(4)
-    stw   6,0(3)
-0:
-/* Add the number of bytes until the 1st doubleword of dst to src and dst.  */
-    add   4,4,0
-    add   3,3,0
-
-    clrldi 10,4,61	/* check alignment of src again.  */
-    srdi  9,5,3	/* Number of full double words remaining.  */
-
-  /* Copy doublewords from source to destination, assuming the
-     destination is aligned on a doubleword boundary.
-
-     At this point we know there are at least 25 bytes left (32-7) to copy.
-     The next step is to determine if the source is also doubleword aligned.
-     If not branch to the unaligned move code at .L6. which uses
-     a load, shift, store strategy.
-
-     Otherwise source and destination are doubleword aligned, and we can
-     the optimized doubleword copy loop.  */
-    .align  4
-.L0:
-    clrldi  11,5,61
-    andi.   0,5,0x78
-    srdi    12,5,7	/* Number of 128-byte blocks to move.  */
-    cmpldi  cr1,11,0	/* If the tail is 0 bytes  */
-    bne-    cr6,.L6     /* If source is not DW aligned.  */
-
-  /* Move doublewords where destination and source are DW aligned.
-     Use a unrolled loop to copy 16 doublewords (128-bytes) per iteration.
-     If the copy is not an exact multiple of 128 bytes, 1-15
-     doublewords are copied as needed to set up the main loop.  After
-     the main loop exits there may be a tail of 1-7 bytes. These byte
-     are copied a word/halfword/byte at a time as needed to preserve
-     alignment.
-
-     For POWER6 the L1 is store-through and the L2 is store-in.  The
-     L2 is clocked at half CPU clock so we can store 16 bytes every
-     other cycle.  POWER6 also has a load/store bypass so we can do
-     load, load, store, store every 2 cycles.
-
-     The following code is sensitive to cache line alignment.  Do not
-     make any change with out first making sure they don't result in
-     splitting ld/std pairs across a cache line.  */
-
-    mtcrf 0x02,5
-    mtcrf 0x01,5
-    cmpldi  cr5,12,1
-    beq   L(das_loop)
-
-    bf    25,4f
-    .align  3
-    ld    6,0(4)
-    ld    7,8(4)
-    mr    11,4
-    mr    10,3
-    std   6,0(3)
-    std   7,8(3)
-    ld    6,16(4)
-    ld    7,24(4)
-    std   6,16(3)
-    std   7,24(3)
-    ld    6,0+32(4)
-    ld    7,8+32(4)
-    addi  4,4,64
-    addi  3,3,64
-    std   6,0+32(10)
-    std   7,8+32(10)
-    ld    6,16+32(11)
-    ld    7,24+32(11)
-    std   6,16+32(10)
-    std   7,24+32(10)
-4:
-    mr    10,3
-    bf    26,2f
-    ld    6,0(4)
-    ld    7,8(4)
-    mr    11,4
-    nop
-    std   6,0(3)
-    std   7,8(3)
-    ld    6,16(4)
-    ld    7,24(4)
-    addi  4,4,32
-    std   6,16(3)
-    std   7,24(3)
-    addi  3,3,32
-6:
-    nop
-    bf    27,5f
-    ld    6,0+32(11)
-    ld    7,8+32(11)
-    addi  4,4,16
-    addi  3,3,16
-    std   6,0+32(10)
-    std   7,8+32(10)
-    bf    28,L(das_loop_s)
-    ld    0,16+32(11)
-    addi  4,4,8
-    addi  3,3,8
-    std   0,16+32(10)
-    blt   cr5,L(das_tail)
-    b     L(das_loop)
-    .align  3
-5:
-    nop
-    bf    28,L(das_loop_s)
-    ld    6,32(11)
-    addi  4,4,8
-    addi  3,3,8
-    std   6,32(10)
-    blt   cr5,L(das_tail)
-    b     L(das_loop)
-    .align  3
-2:
-    mr    11,4
-    bf    27,1f
-    ld    6,0(4)
-    ld    7,8(4)
-    addi  4,4,16
-    addi  3,3,16
-    std   6,0(10)
-    std   7,8(10)
-    bf    28,L(das_loop_s)
-    ld    0,16(11)
-    addi  4,11,24
-    addi  3,10,24
-    std   0,16(10)
-    blt   cr5,L(das_tail)
-    b     L(das_loop)
-    .align  3
-1:
-    nop
-    bf    28,L(das_loop_s)
-    ld    6,0(4)
-    addi  4,4,8
-    addi  3,3,8
-    std   6,0(10)
-L(das_loop_s):
-    nop
-    blt   cr5,L(das_tail)
-    .align  4
-L(das_loop):
-    ld    6,0(4)
-    ld    7,8(4)
-    mr    10,3
-    mr    11,4
-    std   6,0(3)
-    std   7,8(3)
-    addi  12,12,-1
-    nop
-    ld    8,16(4)
-    ld    0,24(4)
-    std   8,16(3)
-    std   0,24(3)
-
-    ld    6,0+32(4)
-    ld    7,8+32(4)
-    std   6,0+32(3)
-    std   7,8+32(3)
-    ld    8,16+32(4)
-    ld    0,24+32(4)
-    std   8,16+32(3)
-    std   0,24+32(3)
-
-    ld    6,0+64(11)
-    ld    7,8+64(11)
-    std   6,0+64(10)
-    std   7,8+64(10)
-    ld    8,16+64(11)
-    ld    0,24+64(11)
-    std   8,16+64(10)
-    std   0,24+64(10)
-
-    ld    6,0+96(11)
-    ld    7,8+96(11)
-    addi  4,4,128
-    addi  3,3,128
-    std   6,0+96(10)
-    std   7,8+96(10)
-    ld    8,16+96(11)
-    ld    0,24+96(11)
-    std   8,16+96(10)
-    std   0,24+96(10)
-    ble   cr5,L(das_loop_e)
-
-    mtctr   12
-    .align  4
-L(das_loop2):
-    ld    6,0(4)
-    ld    7,8(4)
-    mr    10,3
-    mr    11,4
-    std   6,0(3)
-    std   7,8(3)
-    ld    8,16(4)
-    ld    0,24(4)
-    std   8,16(3)
-    std   0,24(3)
-
-    ld    6,0+32(4)
-    ld    7,8+32(4)
-    std   6,0+32(3)
-    std   7,8+32(3)
-    ld    8,16+32(4)
-    ld    0,24+32(4)
-    std   8,16+32(3)
-    std   0,24+32(3)
-
-    ld    6,0+64(11)
-    ld    7,8+64(11)
-    std   6,0+64(10)
-    std   7,8+64(10)
-    ld    8,16+64(11)
-    ld    0,24+64(11)
-    std   8,16+64(10)
-    std   0,24+64(10)
-
-    ld    6,0+96(11)
-    ld    7,8+96(11)
-    addi  4,4,128
-    addi  3,3,128
-    std   6,0+96(10)
-    std   7,8+96(10)
-    ld    8,16+96(11)
-    ld    0,24+96(11)
-    std   8,16+96(10)
-    std   0,24+96(10)
-    bdnz  L(das_loop2)
-L(das_loop_e):
-/* Check of a 1-7 byte tail, return if none.  */
-    bne   cr1,L(das_tail2)
-/* Return original dst pointer.  */
-    ld 3,-16(1)
-    blr
-    .align  4
-L(das_tail):
-    beq   cr1,0f
-
-L(das_tail2):
-/*  At this point we have a tail of 0-7 bytes and we know that the
-    destination is double word aligned.  */
-4:  bf    29,2f
-    lwz   6,0(4)
-    stw   6,0(3)
-    bf    30,5f
-    lhz   6,4(4)
-    sth   6,4(3)
-    bf    31,0f
-    lbz   6,6(4)
-    stb   6,6(3)
-    b     0f
-5:  bf    31,0f
-    lbz   6,4(4)
-    stb   6,4(3)
-    b     0f
-
-2:  bf    30,1f
-    lhz   6,0(4)
-    sth   6,0(3)
-    bf    31,0f
-    lbz   6,2(4)
-    stb   6,2(3)
-    b     0f
-
-1:  bf    31,0f
-    lbz   6,0(4)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld 3,-16(1)
-    blr
-
-/* Copy up to 31 bytes.  This divided into two cases 0-8 bytes and 9-31
-   bytes.  Each case is handled without loops, using binary (1,2,4,8)
-   tests.
-
-   In the short (0-8 byte) case no attempt is made to force alignment
-   of either source or destination.  The hardware will handle the
-   unaligned load/stores with small delays for crossing 32- 128-byte,
-   and 4096-byte boundaries. Since these short moves are unlikely to be
-   unaligned or cross these boundaries, the overhead to force
-   alignment is not justified.
-
-   The longer (9-31 byte) move is more likely to cross 32- or 128-byte
-   boundaries.  Since only loads are sensitive to the 32-/128-byte
-   boundaries it is more important to align the source then the
-   destination.  If the source is not already word aligned, we first
-   move 1-3 bytes as needed.  Since we are only word aligned we don't
-   use double word load/stores to insure that all loads are aligned.
-   While the destination and stores may still be unaligned, this
-   is only an issue for page (4096 byte boundary) crossing, which
-   should be rare for these short moves.  The hardware handles this
-   case automatically with a small (~20 cycle) delay.  */
-    .align  4
-.L2:
-    mtcrf 0x01,5
-    neg   8,4
-    clrrdi	11,4,2
-    andi. 0,8,3
-    ble   cr6,.LE8	/* Handle moves of 0-8 bytes.  */
-/* At least 9 bytes left.  Get the source word aligned.  */
-    cmpldi	cr1,5,16
-    mr    10,5
-    mr    12,4
-    cmpldi	cr6,0,2
-    beq   L(dus_tail)	/* If the source is already word aligned skip this.  */
-/* Copy 1-3 bytes to get source address word aligned.  */
-    lwz   6,0(11)
-    subf  10,0,5
-    add   12,4,0
-    blt   cr6,5f
-    srdi  7,6,16
-    bgt	  cr6,3f
-#ifdef __LITTLE_ENDIAN__
-    sth   7,0(3)
-#else
-    sth   6,0(3)
-#endif
-    b     7f
-    .align  4
-3:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,24
-    stb   6,0(3)
-    sth   7,1(3)
-#else
-    stb   7,0(3)
-    sth   6,1(3)
-#endif
-    b     7f
-    .align  4
-5:
-#ifdef __LITTLE_ENDIAN__
-    rotlwi 6,6,8
-#endif
-    stb   6,0(3)
-7:
-    cmpldi	cr1,10,16
-    add   3,3,0
-    mtcrf 0x01,10
-    .align  4
-L(dus_tail):
-/* At least 6 bytes left and the source is word aligned.  This allows
-   some speculative loads up front.  */
-/* We need to special case the fall-through because the biggest delays
-   are due to address computation not being ready in time for the
-   AGEN.  */
-    lwz   6,0(12)
-    lwz   7,4(12)
-    blt   cr1,L(dus_tail8)
-    cmpldi	cr0,10,24
-L(dus_tail16): /* Move 16 bytes.  */
-    stw   6,0(3)
-    stw   7,4(3)
-    lwz   6,8(12)
-    lwz   7,12(12)
-    stw   6,8(3)
-    stw   7,12(3)
-/* Move 8 bytes more.  */
-    bf    28,L(dus_tail16p8)
-    cmpldi	cr1,10,28
-    lwz   6,16(12)
-    lwz   7,20(12)
-    stw   6,16(3)
-    stw   7,20(3)
-/* Move 4 bytes more.  */
-    bf    29,L(dus_tail16p4)
-    lwz   6,24(12)
-    stw   6,24(3)
-    addi  12,12,28
-    addi  3,3,28
-    bgt   cr1,L(dus_tail2)
- /* exactly 28 bytes.  Return original dst pointer and exit.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-L(dus_tail16p8):  /* less than 8 bytes left.  */
-    beq   cr1,L(dus_tailX) /* exactly 16 bytes, early exit.  */
-    cmpldi	cr1,10,20
-    bf    29,L(dus_tail16p2)
-/* Move 4 bytes more.  */
-    lwz   6,16(12)
-    stw   6,16(3)
-    addi  12,12,20
-    addi  3,3,20
-    bgt   cr1,L(dus_tail2)
- /* exactly 20 bytes.  Return original dst pointer and exit.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-L(dus_tail16p4):  /* less than 4 bytes left.  */
-    addi  12,12,24
-    addi  3,3,24
-    bgt   cr0,L(dus_tail2)
- /* exactly 24 bytes.  Return original dst pointer and exit.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-L(dus_tail16p2):  /* 16 bytes moved, less than 4 bytes left.  */
-    addi  12,12,16
-    addi  3,3,16
-    b     L(dus_tail2)
-
-    .align  4
-L(dus_tail8):  /* Move 8 bytes.  */
-/*  r6, r7 already loaded speculatively.  */
-    cmpldi	cr1,10,8
-    cmpldi	cr0,10,12
-    bf    28,L(dus_tail4)
-    .align  2
-    stw   6,0(3)
-    stw   7,4(3)
-/* Move 4 bytes more.  */
-    bf    29,L(dus_tail8p4)
-    lwz   6,8(12)
-    stw   6,8(3)
-    addi  12,12,12
-    addi  3,3,12
-    bgt   cr0,L(dus_tail2)
- /* exactly 12 bytes.  Return original dst pointer and exit.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-L(dus_tail8p4):  /* less than 4 bytes left.  */
-    addi  12,12,8
-    addi  3,3,8
-    bgt   cr1,L(dus_tail2)
- /* exactly 8 bytes.  Return original dst pointer and exit.  */
-    ld    3,-16(1)
-    blr
-
-    .align  4
-L(dus_tail4):  /* Move 4 bytes.  */
-/*  r6 already loaded speculatively.  If we are here we know there is
-    more than 4 bytes left.  So there is no need to test.  */
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-L(dus_tail2):  /* Move 2-3 bytes.  */
-    bf    30,L(dus_tail1)
-    lhz   6,0(12)
-    sth   6,0(3)
-    bf    31,L(dus_tailX)
-    lbz   7,2(12)
-    stb   7,2(3)
-    ld 3,-16(1)
-    blr
-L(dus_tail1):  /* Move 1 byte.  */
-    bf    31,L(dus_tailX)
-    lbz   6,0(12)
-    stb   6,0(3)
-L(dus_tailX):
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-/* Special case to copy 0-8 bytes.  */
-    .align  4
-.LE8:
-    mr    12,4
-    bne   cr6,L(dus_4)
-/* Exactly 8 bytes.  We may cross a 32-/128-byte boundary and take a ~20
-   cycle delay.  This case should be rare and any attempt to avoid this
-   would take most of 20 cycles any way.  */
-    ld   6,0(4)
-    std   6,0(3)
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-    .align  4
-L(dus_4):
-    bf    29,L(dus_tail2)
-    lwz   6,0(4)
-    stw   6,0(3)
-    bf    30,L(dus_5)
-    lhz   7,4(4)
-    sth   7,4(3)
-    bf    31,L(dus_0)
-    lbz   8,6(4)
-    stb   8,6(3)
-    ld 3,-16(1)
-    blr
-    .align  4
-L(dus_5):
-    bf    31,L(dus_0)
-    lbz   6,4(4)
-    stb   6,4(3)
-L(dus_0):
-  /* Return original dst pointer.  */
-    ld    3,-16(1)
-    blr
-
-    .align  4
-.L6:
-    cfi_offset(31,-8)
-    mr    12,4
-    mr    31,5
-  /* Copy doublewords where the destination is aligned but the source is
-     not.  Use aligned doubleword loads from the source, shifted to realign
-     the data, to allow aligned destination stores.  */
-    addi    11,9,-1  /* loop DW count is one less than total */
-    subf    5,10,12  /* Move source addr to previous full double word.  */
-    cmpldi  cr5, 10, 2
-    cmpldi  cr0, 10, 4
-    mr      4,3
-    srdi    8,11,2   /* calculate the 32 byte loop count */
-    ld      6,0(5)   /* pre load 1st full doubleword.  */
-    mtcrf   0x01,11
-    cmpldi  cr6,9,4
-    mtctr   8
-    ld      7,8(5)   /* pre load 2nd full doubleword.  */
-    bge     cr0, L(du4_do)
-    blt     cr5, L(du1_do)
-    beq     cr5, L(du2_do)
-    b       L(du3_do)
-
-    .align 4
-L(du1_do):
-    bf      30,L(du1_1dw)
-
-    /* there are at least two DWs to copy */
-    /* FIXME: can combine last shift and "or" into "rldimi" */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 8
-    sldi     8,7, 64-8
-#else
-    sldi     0,6, 8
-    srdi     8,7, 64-8
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 8
-    sldi     8,6, 64-8
-#else
-    sldi     0,7, 8
-    srdi     8,6, 64-8
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du1_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du1_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 8
-    sldi     8,7, 64-8
-#else
-    sldi     0,6, 8
-    srdi     8,7, 64-8
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du1_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du1_loop)
-    .align 4
-L(du1_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 8
-    sldi     8,7, 64-8
-#else
-    sldi     0,6, 8
-    srdi     8,7, 64-8
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du1_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du1_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 8
-    sldi   8,7, 64-8
-#else
-    sldi   0,6, 8
-    srdi   8,7, 64-8
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 8
-    sldi   8,6, 64-8
-#else
-    sldi   0,7, 8
-    srdi   8,6, 64-8
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 8
-    sldi   8,7, 64-8
-#else
-    sldi   0,6, 8
-    srdi   8,7, 64-8
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 8
-    sldi   8,6, 64-8
-#else
-    sldi   0,7, 8
-    srdi   8,6, 64-8
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du1_loop)
-    .align 4
-L(du1_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 8
-    sldi   8,7, 64-8
-#else
-    sldi   0,6, 8
-    srdi   8,7, 64-8
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du2_do):
-    bf      30,L(du2_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 16
-    sldi     8,7, 64-16
-#else
-    sldi     0,6, 16
-    srdi     8,7, 64-16
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 16
-    sldi     8,6, 64-16
-#else
-    sldi     0,7, 16
-    srdi     8,6, 64-16
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du2_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du2_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 16
-    sldi     8,7, 64-16
-#else
-    sldi     0,6, 16
-    srdi     8,7, 64-16
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du2_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du2_loop)
-    .align 4
-L(du2_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 16
-    sldi     8,7, 64-16
-#else
-    sldi     0,6, 16
-    srdi     8,7, 64-16
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du2_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du2_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 16
-    sldi   8,7, 64-16
-#else
-    sldi   0,6, 16
-    srdi   8,7, 64-16
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 16
-    sldi   8,6, 64-16
-#else
-    sldi   0,7, 16
-    srdi   8,6, 64-16
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 16
-    sldi   8,7, 64-16
-#else
-    sldi   0,6, 16
-    srdi   8,7, 64-16
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 16
-    sldi   8,6, 64-16
-#else
-    sldi   0,7, 16
-    srdi   8,6, 64-16
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du2_loop)
-    .align 4
-L(du2_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 16
-    sldi   8,7, 64-16
-#else
-    sldi   0,6, 16
-    srdi   8,7, 64-16
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du3_do):
-    bf      30,L(du3_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 24
-    sldi     8,7, 64-24
-#else
-    sldi     0,6, 24
-    srdi     8,7, 64-24
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 24
-    sldi     8,6, 64-24
-#else
-    sldi     0,7, 24
-    srdi     8,6, 64-24
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du3_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du3_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 24
-    sldi     8,7, 64-24
-#else
-    sldi     0,6, 24
-    srdi     8,7, 64-24
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du3_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du3_loop)
-    .align 4
-L(du3_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 24
-    sldi     8,7, 64-24
-#else
-    sldi     0,6, 24
-    srdi     8,7, 64-24
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du3_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du3_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 24
-    sldi   8,7, 64-24
-#else
-    sldi   0,6, 24
-    srdi   8,7, 64-24
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 24
-    sldi   8,6, 64-24
-#else
-    sldi   0,7, 24
-    srdi   8,6, 64-24
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 24
-    sldi   8,7, 64-24
-#else
-    sldi   0,6, 24
-    srdi   8,7, 64-24
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 24
-    sldi   8,6, 64-24
-#else
-    sldi   0,7, 24
-    srdi   8,6, 64-24
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du3_loop)
-    .align 4
-L(du3_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 24
-    sldi   8,7, 64-24
-#else
-    sldi   0,6, 24
-    srdi   8,7, 64-24
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du4_do):
-    cmpldi  cr5, 10, 6
-    beq     cr0, L(du4_dox)
-    blt     cr5, L(du5_do)
-    beq     cr5, L(du6_do)
-    b       L(du7_do)
-L(du4_dox):
-    bf      30,L(du4_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 32
-    sldi     8,7, 64-32
-#else
-    sldi     0,6, 32
-    srdi     8,7, 64-32
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 32
-    sldi     8,6, 64-32
-#else
-    sldi     0,7, 32
-    srdi     8,6, 64-32
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du4_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du4_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 32
-    sldi     8,7, 64-32
-#else
-    sldi     0,6, 32
-    srdi     8,7, 64-32
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du4_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du4_loop)
-    .align 4
-L(du4_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 32
-    sldi     8,7, 64-32
-#else
-    sldi     0,6, 32
-    srdi     8,7, 64-32
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du4_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du4_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 32
-    sldi   8,7, 64-32
-#else
-    sldi   0,6, 32
-    srdi   8,7, 64-32
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 32
-    sldi   8,6, 64-32
-#else
-    sldi   0,7, 32
-    srdi   8,6, 64-32
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 32
-    sldi   8,7, 64-32
-#else
-    sldi   0,6, 32
-    srdi   8,7, 64-32
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 32
-    sldi   8,6, 64-32
-#else
-    sldi   0,7, 32
-    srdi   8,6, 64-32
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du4_loop)
-    .align 4
-L(du4_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 32
-    sldi   8,7, 64-32
-#else
-    sldi   0,6, 32
-    srdi   8,7, 64-32
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du5_do):
-    bf      30,L(du5_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 40
-    sldi     8,7, 64-40
-#else
-    sldi     0,6, 40
-    srdi     8,7, 64-40
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 40
-    sldi     8,6, 64-40
-#else
-    sldi     0,7, 40
-    srdi     8,6, 64-40
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du5_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du5_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 40
-    sldi     8,7, 64-40
-#else
-    sldi     0,6, 40
-    srdi     8,7, 64-40
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du5_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du5_loop)
-    .align 4
-L(du5_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 40
-    sldi     8,7, 64-40
-#else
-    sldi     0,6, 40
-    srdi     8,7, 64-40
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du5_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du5_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 40
-    sldi   8,7, 64-40
-#else
-    sldi   0,6, 40
-    srdi   8,7, 64-40
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 40
-    sldi   8,6, 64-40
-#else
-    sldi   0,7, 40
-    srdi   8,6, 64-40
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 40
-    sldi   8,7, 64-40
-#else
-    sldi   0,6, 40
-    srdi   8,7, 64-40
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 40
-    sldi   8,6, 64-40
-#else
-    sldi   0,7, 40
-    srdi   8,6, 64-40
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du5_loop)
-    .align 4
-L(du5_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 40
-    sldi   8,7, 64-40
-#else
-    sldi   0,6, 40
-    srdi   8,7, 64-40
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du6_do):
-    bf      30,L(du6_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 48
-    sldi     8,7, 64-48
-#else
-    sldi     0,6, 48
-    srdi     8,7, 64-48
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 48
-    sldi     8,6, 64-48
-#else
-    sldi     0,7, 48
-    srdi     8,6, 64-48
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du6_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du6_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 48
-    sldi     8,7, 64-48
-#else
-    sldi     0,6, 48
-    srdi     8,7, 64-48
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du6_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du6_loop)
-    .align 4
-L(du6_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 48
-    sldi     8,7, 64-48
-#else
-    sldi     0,6, 48
-    srdi     8,7, 64-48
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du6_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du6_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 48
-    sldi   8,7, 64-48
-#else
-    sldi   0,6, 48
-    srdi   8,7, 64-48
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 48
-    sldi   8,6, 64-48
-#else
-    sldi   0,7, 48
-    srdi   8,6, 64-48
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 48
-    sldi   8,7, 64-48
-#else
-    sldi   0,6, 48
-    srdi   8,7, 64-48
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 48
-    sldi   8,6, 64-48
-#else
-    sldi   0,7, 48
-    srdi   8,6, 64-48
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du6_loop)
-    .align 4
-L(du6_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 48
-    sldi   8,7, 64-48
-#else
-    sldi   0,6, 48
-    srdi   8,7, 64-48
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du7_do):
-    bf      30,L(du7_1dw)
-
-    /* there are at least two DWs to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 56
-    sldi     8,7, 64-56
-#else
-    sldi     0,6, 56
-    srdi     8,7, 64-56
-#endif
-    or      0,0,8
-    ld      6,16(5)
-    std     0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,7, 56
-    sldi     8,6, 64-56
-#else
-    sldi     0,7, 56
-    srdi     8,6, 64-56
-#endif
-    or      0,0,8
-    ld      7,24(5)
-    std     0,8(4)
-    addi    4,4,16
-    addi    5,5,32
-    blt     cr6,L(du7_fini)  /* if total DWs = 3, then bypass loop */
-    bf      31,L(du7_loop)
-    /* there is a third DW to copy */
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 56
-    sldi     8,7, 64-56
-#else
-    sldi     0,6, 56
-    srdi     8,7, 64-56
-#endif
-    or      0,0,8
-    std     0,0(4)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    addi    4,4,8
-    beq     cr6,L(du7_fini)  /* if total DWs = 4, then bypass loop */
-    b       L(du7_loop)
-    .align 4
-L(du7_1dw):
-#ifdef __LITTLE_ENDIAN__
-    srdi     0,6, 56
-    sldi     8,7, 64-56
-#else
-    sldi     0,6, 56
-    srdi     8,7, 64-56
-#endif
-    addi    5,5,16
-    or      0,0,8
-    bf      31,L(du7_loop)
-    mr      6,7
-    ld      7,0(5)
-    addi    5,5,8
-    std     0,0(4)
-    addi    4,4,8
-    .align 4
-/* copy 32 bytes at a time */
-L(du7_loop):
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 56
-    sldi   8,7, 64-56
-#else
-    sldi   0,6, 56
-    srdi   8,7, 64-56
-#endif
-    or    0,0,8
-    ld    6,0(5)
-    std   0,0(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 56
-    sldi   8,6, 64-56
-#else
-    sldi   0,7, 56
-    srdi   8,6, 64-56
-#endif
-    or    0,0,8
-    ld    7,8(5)
-    std   0,8(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 56
-    sldi   8,7, 64-56
-#else
-    sldi   0,6, 56
-    srdi   8,7, 64-56
-#endif
-    or    0,0,8
-    ld    6,16(5)
-    std   0,16(4)
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,7, 56
-    sldi   8,6, 64-56
-#else
-    sldi   0,7, 56
-    srdi   8,6, 64-56
-#endif
-    or    0,0,8
-    ld    7,24(5)
-    std   0,24(4)
-    addi  5,5,32
-    addi  4,4,32
-    bdnz+ L(du7_loop)
-    .align 4
-L(du7_fini):
-    /* calculate and store the final DW */
-#ifdef __LITTLE_ENDIAN__
-    srdi   0,6, 56
-    sldi   8,7, 64-56
-#else
-    sldi   0,6, 56
-    srdi   8,7, 64-56
-#endif
-    or    0,0,8
-    std   0,0(4)
-    b     L(du_done)
-
-    .align 4
-L(du_done):
-    rldicr 0,31,0,60
-    mtcrf 0x01,31
-    beq   cr1,0f	/* If the tail is 0 bytes we are done!  */
-
-    add   3,3,0
-    add   12,12,0
-/*  At this point we have a tail of 0-7 bytes and we know that the
-    destination is double word aligned.  */
-4:  bf    29,2f
-    lwz   6,0(12)
-    addi  12,12,4
-    stw   6,0(3)
-    addi  3,3,4
-2:  bf    30,1f
-    lhz   6,0(12)
-    addi  12,12,2
-    sth   6,0(3)
-    addi  3,3,2
-1:  bf    31,0f
-    lbz   6,0(12)
-    stb   6,0(3)
-0:
-  /* Return original dst pointer.  */
-    ld 31,-8(1)
-    ld 3,-16(1)
-    blr
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power6/memset.S b/sysdeps/powerpc/powerpc64/power6/memset.S
deleted file mode 100644
index aee1c8eabb..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/memset.S
+++ /dev/null
@@ -1,395 +0,0 @@
-/* Optimized 64-bit memset implementation for POWER6.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.
-
-   The memset is done in three sizes: byte (8 bits), word (32 bits),
-   cache line (256 bits). There is a special case for setting cache lines
-   to 0, to take advantage of the dcbz instruction.  */
-
-#ifndef MEMSET
-# define MEMSET memset
-#endif
-	.machine power6
-EALIGN (MEMSET, 7, 0)
-	CALL_MCOUNT 3
-
-#define rTMP	r0
-#define rRTN	r3	/* Initial value of 1st argument.  */
-#define rMEMP0	r3	/* Original value of 1st arg.  */
-#define rCHR	r4	/* Char to set in each byte.  */
-#define rLEN	r5	/* Length of region to set.  */
-#define rMEMP	r6	/* Address at which we are storing.  */
-#define rALIGN	r7	/* Number of bytes we are setting now (when aligning). */
-#define rMEMP2	r8
-#define rMEMP3	r9	/* Alt mem pointer.  */
-L(_memset):
-/* Take care of case for size <= 4.  */
-	cmpldi	cr1, rLEN, 8
-	andi.	rALIGN, rMEMP0, 7
-	mr	rMEMP, rMEMP0
-	ble	cr1, L(small)
-
-/* Align to doubleword boundary.  */
-	cmpldi	cr5, rLEN, 31
-	insrdi	rCHR, rCHR, 8, 48	/* Replicate byte to halfword.  */
-	beq+	L(aligned2)
-	mtcrf	0x01, rMEMP0
-	subfic	rALIGN, rALIGN, 8
-	cror	28,30,31		/* Detect odd word aligned.  */
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-	bt	29, L(g4)
-/* Process the even word of doubleword.  */
-	bf+	31, L(g2)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(g4x)
-L(g2):
-	sth	rCHR, -6(rMEMP)
-L(g4x):
-	stw	rCHR, -4(rMEMP)
-	b	L(aligned)
-/* Process the odd word of doubleword.  */
-L(g4):
-	bf	28, L(g4x) /* If false, word aligned on odd word.  */
-	bf+	31, L(g0)
-	stb	rCHR, 0(rMEMP0)
-	bt	30, L(aligned)
-L(g0):
-	sth	rCHR, -2(rMEMP)
-
-/* Handle the case of size < 31.  */
-L(aligned2):
-	insrdi	rCHR, rCHR, 16, 32	/* Replicate halfword to word.  */
-L(aligned):
-	mtcrf	0x01, rLEN
-	ble	cr5, L(medium)
-/* Align to 32-byte boundary.  */
-	andi.	rALIGN, rMEMP, 0x18
-	subfic	rALIGN, rALIGN, 0x20
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word. */
-	beq	L(caligned)
-	mtcrf	0x01, rALIGN
-	add	rMEMP, rMEMP, rALIGN
-	sub	rLEN, rLEN, rALIGN
-	cmplwi	cr1, rALIGN, 0x10
-	mr	rMEMP2, rMEMP
-	bf	28, L(a1)
-	stdu	rCHR, -8(rMEMP2)
-L(a1):	blt	cr1, L(a2)
-	std	rCHR, -8(rMEMP2)
-	stdu	rCHR, -16(rMEMP2)
-L(a2):
-
-/* Now aligned to a 32 byte boundary.  */
-        .align 4
-L(caligned):
-	cmpldi	cr1, rCHR, 0
-	clrrdi.	rALIGN, rLEN, 5
-	mtcrf	0x01, rLEN
-	beq	cr1, L(zloopstart) /* Special case for clearing memory using dcbz.  */
-	beq	L(medium)	/* We may not actually get to do a full line.  */
-	.align 4
-/* Storing a non-zero "c" value. We are aligned at a sector (32-byte)
-   boundary may not be at cache line (128-byte) boundary.  */
-L(nzloopstart):
-/* memset in 32-byte chunks until we get to a cache line boundary.
-   If rLEN is less than the distance to the next cache-line boundary use
-   cacheAligned1 code to finish the tail.  */
-	cmpldi	cr1,rLEN,128
-
-	andi.	rTMP,rMEMP,127
-	blt	cr1,L(cacheAligned1)
-	addi	rMEMP3,rMEMP,32
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP)
-	std	rCHR,8(rMEMP)
-	std	rCHR,16(rMEMP)
-	addi	rMEMP,rMEMP,32
-	andi.	rTMP,rMEMP3,127
-	std	rCHR,-8(rMEMP3)
-
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	std	rCHR,8(rMEMP3)
-	andi.	rTMP,rMEMP,127
-	std	rCHR,16(rMEMP3)
-	std	rCHR,24(rMEMP3)
-
-	beq	L(nzCacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,32(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmpldi	cr1,rLEN,128
-	std	rCHR,40(rMEMP3)
-	cmpldi	cr6,rLEN,256
-	li	rMEMP2,128
-	std	rCHR,48(rMEMP3)
-	std	rCHR,56(rMEMP3)
-	blt	cr1,L(cacheAligned1)
-	b	L(nzCacheAligned128)
-
-/* Now we are aligned to the cache line and can use dcbtst.  */
-        .align 4
-L(nzCacheAligned):
-	cmpldi	cr1,rLEN,128
-	blt	cr1,L(cacheAligned1)
-	b	L(nzCacheAligned128)
-        .align 5
-L(nzCacheAligned128):
-	cmpldi	cr1,rLEN,256
-	addi	rMEMP3,rMEMP,64
-	std	rCHR,0(rMEMP)
-	std	rCHR,8(rMEMP)
-	std	rCHR,16(rMEMP)
-	std	rCHR,24(rMEMP)
-	std	rCHR,32(rMEMP)
-	std	rCHR,40(rMEMP)
-	std	rCHR,48(rMEMP)
-	std	rCHR,56(rMEMP)
-	addi	rMEMP,rMEMP3,64
-	addi	rLEN,rLEN,-128
-	std	rCHR,0(rMEMP3)
-	std	rCHR,8(rMEMP3)
-	std	rCHR,16(rMEMP3)
-	std	rCHR,24(rMEMP3)
-	std	rCHR,32(rMEMP3)
-	std	rCHR,40(rMEMP3)
-	std	rCHR,48(rMEMP3)
-	std	rCHR,56(rMEMP3)
-	bge	cr1,L(nzCacheAligned128)
-	dcbtst	0,rMEMP
-	b	L(cacheAligned1)
-	.align 5
-/* Storing a zero "c" value. We are aligned at a sector (32-byte)
-   boundary but may not be at cache line (128-byte) boundary.  If the
-   remaining length spans a full cache line we can use the Data cache
-   block zero instruction. */
-L(zloopstart):
-/* memset in 32-byte chunks until we get to a cache line boundary.
-   If rLEN is less than the distance to the next cache-line boundary use
-   cacheAligned1 code to finish the tail.  */
-	cmpldi	cr1,rLEN,128
-	beq	L(medium)
-L(getCacheAligned):
-	andi.	rTMP,rMEMP,127
-	nop
-	blt	cr1,L(cacheAligned1)
-	addi	rMEMP3,rMEMP,32
-	beq	L(cacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP)
-	std	rCHR,8(rMEMP)
-	std	rCHR,16(rMEMP)
-	addi	rMEMP,rMEMP,32
-	andi.	rTMP,rMEMP3,127
-	std	rCHR,-8(rMEMP3)
-L(getCacheAligned2):
-	beq	L(cacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP3)
-	std	rCHR,8(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	andi.	rTMP,rMEMP,127
-	std	rCHR,16(rMEMP3)
-	std	rCHR,24(rMEMP3)
-L(getCacheAligned3):
-	beq	L(cacheAligned)
-	addi	rLEN,rLEN,-32
-	std	rCHR,32(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmpldi	cr1,rLEN,128
-	std	rCHR,40(rMEMP3)
-	cmpldi	cr6,rLEN,256
-	li	rMEMP2,128
-	std	rCHR,48(rMEMP3)
-	std	rCHR,56(rMEMP3)
-	blt	cr1,L(cacheAligned1)
-	blt	cr6,L(cacheAligned128)
-	b	L(cacheAlignedx)
-
-/* Now we are aligned to the cache line and can use dcbz.  */
-        .align 5
-L(cacheAligned):
-	cmpldi	cr1,rLEN,128
-	cmpldi	cr6,rLEN,256
-	blt	cr1,L(cacheAligned1)
-	li	rMEMP2,128
-L(cacheAlignedx):
-	cmpldi	cr5,rLEN,640
-	blt	cr6,L(cacheAligned128)
-	bgt	cr5,L(cacheAligned512)
-	cmpldi	cr6,rLEN,512
-	dcbz	0,rMEMP
-	cmpldi	cr1,rLEN,384
-	dcbz	rMEMP2,rMEMP
-	addi	rMEMP,rMEMP,256
-	addi	rLEN,rLEN,-256
-	blt	cr1,L(cacheAligned1)
-	blt	cr6,L(cacheAligned128)
-	b	L(cacheAligned256)
-	.align 5
-/* A simple loop for the longer (>640 bytes) lengths.  This form limits
-   the branch miss-predicted to exactly 1 at loop exit.*/
-L(cacheAligned512):
-	cmpldi	cr1,rLEN,128
-	blt	cr1,L(cacheAligned1)
-	dcbz	0,rMEMP
-	addi	rLEN,rLEN,-128
-	addi	rMEMP,rMEMP,128
-	b	L(cacheAligned512)
-        .align 5
-L(cacheAligned256):
-
-	cmpldi	cr6,rLEN,512
-
-	dcbz	0,rMEMP
-	cmpldi	cr1,rLEN,384
-	dcbz	rMEMP2,rMEMP
-	addi	rMEMP,rMEMP,256
-	addi	rLEN,rLEN,-256
-
-	bge	cr6,L(cacheAligned256)
-
-	blt	cr1,L(cacheAligned1)
-        .align 4
-L(cacheAligned128):
-	dcbz	0,rMEMP
-	addi	rMEMP,rMEMP,128
-	addi	rLEN,rLEN,-128
-        nop
-L(cacheAligned1):
-	cmpldi	cr1,rLEN,32
-	blt	cr1,L(handletail32)
-	addi	rMEMP3,rMEMP,32
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP)
-	std	rCHR,8(rMEMP)
-	std	rCHR,16(rMEMP)
-	addi	rMEMP,rMEMP,32
-	cmpldi	cr1,rLEN,32
-	std	rCHR,-8(rMEMP3)
-L(cacheAligned2):
-	blt	cr1,L(handletail32)
-	addi	rLEN,rLEN,-32
-	std	rCHR,0(rMEMP3)
-	std	rCHR,8(rMEMP3)
-	addi	rMEMP,rMEMP,32
-	cmpldi	cr1,rLEN,32
-	std	rCHR,16(rMEMP3)
-	std	rCHR,24(rMEMP3)
-	nop
-L(cacheAligned3):
-	blt	cr1,L(handletail32)
-	addi	rMEMP,rMEMP,32
-	addi	rLEN,rLEN,-32
-	std	rCHR,32(rMEMP3)
-	std	rCHR,40(rMEMP3)
-	std	rCHR,48(rMEMP3)
-	std	rCHR,56(rMEMP3)
-
-/* We are here because the length or remainder (rLEN) is less than the
-   cache line/sector size and does not justify aggressive loop unrolling.
-   So set up the preconditions for L(medium) and go there.  */
-        .align 3
-L(handletail32):
-	cmpldi	cr1,rLEN,0
-	beqlr   cr1
-	b	L(medium)
-
-	.align 5
-L(small):
-/* Memset of 8 bytes or less.  */
-	cmpldi	cr6, rLEN, 4
-	cmpldi	cr5, rLEN, 1
-	ble	cr6,L(le4)
-	subi	rLEN, rLEN, 4
-	stb	rCHR,0(rMEMP)
-	stb	rCHR,1(rMEMP)
-	stb	rCHR,2(rMEMP)
-	stb	rCHR,3(rMEMP)
-	addi	rMEMP,rMEMP, 4
-	cmpldi	cr5, rLEN, 1
-L(le4):
-	cmpldi	cr1, rLEN, 3
-	bltlr	cr5
-	stb	rCHR, 0(rMEMP)
-	beqlr	cr5
-	stb	rCHR, 1(rMEMP)
-	bltlr	cr1
-	stb	rCHR, 2(rMEMP)
-	beqlr	cr1
-	stb	rCHR, 3(rMEMP)
-	blr
-
-/* Memset of 0-31 bytes.  */
-	.align 5
-L(medium):
-	insrdi	rCHR, rCHR, 32, 0	/* Replicate word to double word.  */
-	cmpldi	cr1, rLEN, 16
-L(medium_tail2):
-	add	rMEMP, rMEMP, rLEN
-L(medium_tail):
-	bt-	31, L(medium_31t)
-	bt-	30, L(medium_30t)
-L(medium_30f):
-	bt	29, L(medium_29t)
-L(medium_29f):
-	bge	cr1, L(medium_27t)
-	bflr	28
-	std	rCHR, -8(rMEMP)
-	blr
-
-L(medium_31t):
-	stbu	rCHR, -1(rMEMP)
-	bf-	30, L(medium_30f)
-L(medium_30t):
-	sthu	rCHR, -2(rMEMP)
-	bf-	29, L(medium_29f)
-L(medium_29t):
-	stwu	rCHR, -4(rMEMP)
-	blt	cr1, L(medium_27f)
-L(medium_27t):
-	std	rCHR, -8(rMEMP)
-	stdu	rCHR, -16(rMEMP)
-L(medium_27f):
-	bflr	28
-L(medium_28t):
-	std	rCHR, -8(rMEMP)
-	blr
-END_GEN_TB (MEMSET,TB_TOCLESS)
-libc_hidden_builtin_def (memset)
-
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
-ENTRY (__bzero)
-	CALL_MCOUNT 3
-	mr	r5,r4
-	li	r4,0
-	b	L(_memset)
-END (__bzero)
-#ifndef __bzero
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6/multiarch/Implies
deleted file mode 100644
index 2ebe304fa6..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power5+/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power6/wcschr.c b/sysdeps/powerpc/powerpc64/power6/wcschr.c
deleted file mode 100644
index ae04a130cc..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/wcschr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power6/wcschr.c>
diff --git a/sysdeps/powerpc/powerpc64/power6/wcscpy.c b/sysdeps/powerpc/powerpc64/power6/wcscpy.c
deleted file mode 100644
index 722c8f995b..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/wcscpy.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power6/wcscpy.c>
diff --git a/sysdeps/powerpc/powerpc64/power6/wcsrchr.c b/sysdeps/powerpc/powerpc64/power6/wcsrchr.c
deleted file mode 100644
index b86472d7bd..0000000000
--- a/sysdeps/powerpc/powerpc64/power6/wcsrchr.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power6/wcsrchr.c>
diff --git a/sysdeps/powerpc/powerpc64/power6x/Implies b/sysdeps/powerpc/powerpc64/power6x/Implies
deleted file mode 100644
index 9d68f39d22..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power6/fpu
-powerpc/powerpc64/power6
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/Implies b/sysdeps/powerpc/powerpc64/power6x/fpu/Implies
deleted file mode 100644
index 30fa17646e..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/fpu
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies
deleted file mode 100644
index 410d289a6d..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
deleted file mode 100644
index b6e11ba0c3..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
+++ /dev/null
@@ -1,58 +0,0 @@
-/* isnan().  PowerPC64 version.
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.machine power6
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	mftgpr	r4,fp1		/* copy FPR to GPR */
-	lis	r0,0x7ff0
-	ori	r1,r1,0
-	clrldi	r4,r4,1		/* x = fabs(x) */
-	sldi	r0,r0,32	/* const long r0 0x7ff00000 00000000 */
-	cmpd	cr7,r4,r0	/* if (fabs(x) <= inf) */
-	li	r3,0		/* then return 0 */
-	blelr+	cr7
-	li	r3,1		/* else return 1 */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
-
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
deleted file mode 100644
index 37aa69061c..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Round double to long int.  POWER6x PowerPC64 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-	.machine	"power6"
-/* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
-	CALL_MCOUNT 0
-	fctid	fp13,fp1
-	mftgpr  r3,fp13
-	blr
-	END (__llrint)
-
-strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
deleted file mode 100644
index 62e1798785..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
+++ /dev/null
@@ -1,54 +0,0 @@
-/* llround function.  POWER6x PowerPC64 version.
-   Copyright (C) 2006-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* long long [r3] llround (float x [fp1])
-   IEEE 1003.1 llround function.  IEEE specifies "round to the nearest
-   integer value, rounding halfway cases away from zero, regardless of
-   the current rounding mode."  However PowerPC Architecture defines
-   "round to Nearest" as "Choose the best approximation. In case of a
-   tie, choose the one that is even (least significant bit o).".
-   So we pre-round using the V2.02 Floating Round to Integer Nearest
-   instruction before we use Floating Convert to Integer Word with
-   round to zero instruction.  */
-
-	.machine	"power6"
-ENTRY (__llround)
-	CALL_MCOUNT 0
-	frin	fp2,fp1	/* Round to nearest +-0.5.  */
-	fctidz	fp3,fp2	/* Convert To Integer DW round toward 0.  */
-	mftgpr	r3,fp3  /* Transfer integer to R3.  */
-	blr
-	END (__llround)
-
-strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power6x/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6x/multiarch/Implies
deleted file mode 100644
index bf5d6171a5..0000000000
--- a/sysdeps/powerpc/powerpc64/power6x/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power7/Implies b/sysdeps/powerpc/powerpc64/power7/Implies
deleted file mode 100644
index 9d68f39d22..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power6/fpu
-powerpc/powerpc64/power6
diff --git a/sysdeps/powerpc/powerpc64/power7/Makefile b/sysdeps/powerpc/powerpc64/power7/Makefile
deleted file mode 100644
index 89a2296085..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-ifeq ($(subdir),elf)
-# Prevent the use of VSX registers and insns in _dl_start, which under -O3
-# optimization may require a TOC reference before relocations are resolved.
-CFLAGS-rtld.c += -mno-vsx
-endif
-
-ifeq ($(subdir),string)
-sysdep_routines += strstr-ppc64
-CFLAGS-strncase.c += -funroll-loops
-CFLAGS-strncase_l.c += -funroll-loops
-endif
diff --git a/sysdeps/powerpc/powerpc64/power7/add_n.S b/sysdeps/powerpc/powerpc64/power7/add_n.S
deleted file mode 100644
index 6425afbc9f..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/add_n.S
+++ /dev/null
@@ -1,98 +0,0 @@
-/* PowerPC64 mpn_lshift --  mpn_add_n/mpn_sub_n -- mpn addition and
-   subtraction.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/*             cycles/limb
- * POWER7             2.18
- */
-
-#ifdef USE_AS_SUB
-# define FUNC      __mpn_sub_n
-# define ADDSUBC   subfe
-#else
-# define FUNC      __mpn_add_n
-# define ADDSUBC   adde
-#endif
-
-#define RP  r3
-#define UP  r4
-#define VP  r5
-#define N   r6
-
-EALIGN(FUNC, 5, 0)
-#ifdef USE_AS_SUB
-	addic	r0, r0, 0
-#else
-	addic   r0, r1, -1
-#endif
-	andi.	r7, N, 1
-	beq	L(bx0)
-
-	ld	r7, 0(UP)
-	ld	r9, r0(VP)
-	ADDSUBC	r11, r9, r7
-	std	r11, r0(RP)
-	cmpldi	N, N, 1
-	beq	N, L(end)
-	addi	UP, UP, 8
-	addi	VP, VP, 8
-	addi	RP, RP, 8
-
-L(bx0):	addi	r0, N, 2
-	srdi	r0, r0, 2
-	mtctr	r0
-
-	andi.	r7, N, 2
-	bne	L(mid)
-
-	addi	UP, UP, 16
-	addi	VP, VP, 16
-	addi	RP, RP, 16
-
-	.align	5
-L(top):	ld	r6, -16(UP)
-	ld	r7, -8(UP)
-	ld	r8, -16(VP)
-	ld	r9, -8(VP)
-	ADDSUBC	r10, r8, N
-	ADDSUBC	r11, r9, r7
-	std	r10, -16(RP)
-	std	r11, -8(RP)
-L(mid):	ld	r6, 0(UP)
-	ld	r7, 8(UP)
-	ld	r8, 0(VP)
-	ld	r9, 8(VP)
-	ADDSUBC	r10, r8, N
-	ADDSUBC	r11, r9, r7
-	std	r10, 0(RP)
-	std	r11, 8(RP)
-	addi	UP, UP, 32
-	addi	VP, VP, 32
-	addi	RP, RP, 32
-	bdnz	L(top)
-
-L(end):	subfe	r3, r0, r0
-#ifdef USE_AS_SUB
-	neg	r3, r3
-#else
-	addi	r3, r3, 1
-#endif
-	blr
-END(FUNC)
diff --git a/sysdeps/powerpc/powerpc64/power7/bcopy.c b/sysdeps/powerpc/powerpc64/power7/bcopy.c
deleted file mode 100644
index 4a6a400e7a..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/bcopy.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Implemented at memmove.S  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/Implies b/sysdeps/powerpc/powerpc64/power7/fpu/Implies
deleted file mode 100644
index 30fa17646e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/fpu
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies
deleted file mode 100644
index 410d289a6d..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
deleted file mode 100644
index 9ccc758c9e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
+++ /dev/null
@@ -1,70 +0,0 @@
-/* finite().  PowerPC64/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __finite(x)  */
-	.section    ".toc","aw"
-.LC0:   /* 1.0 */
-	.tc	    FD_ONE[TC],0x3ff0000000000000
-	.section    ".text"
-	.type	    __finite, @function
-	.machine    power7
-EALIGN (__finite, 4, 0)
-	CALL_MCOUNT 0
-	lfd     fp0,.LC0@toc(r2)
-	ftdiv   cr7,fp1,fp0
-	li	r3,1
-	bflr    30
-
-	/* If we are here, we either have +/-INF,
-	NaN or denormal.  */
-
-	stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz     r4,-16+HISHORT(r1)  /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	clrlwi  r4,r4,17      /* r4 = abs(r4).  */
-	cmpwi   cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
-	bltlr   cr7	      /* LT means finite, other non-finite.  */
-	li      r3,0
-	blr
-	END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S
deleted file mode 100644
index 54bd94176d..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
deleted file mode 100644
index 4482cddcfa..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
+++ /dev/null
@@ -1,69 +0,0 @@
-/* isinf().  PowerPC64/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isinf(x)  */
-	.section    ".toc","aw"
-.LC0:   /* 1.0 */
-	.tc	    FD_ONE[TC],0x3ff0000000000000
-	.section    ".text"
-	.type	    __isinf, @function
-	.machine    power7
-EALIGN (__isinf, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp0,.LC0@toc(r2)
-	ftdiv	cr7,fp1,fp0
-	li	r3,0
-	bflr    29	      /* If not INF, return.  */
-
-	/* Either we have -INF/+INF or a denormal.  */
-
-	stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	lhz	r4,-16+HISHORT(r1)  /* Fetch the upper 16 bits of the FP value
-				    (biased exponent and sign bit).  */
-	cmpwi	cr7,r4,0x7ff0 /* r4 == 0x7ff0?  */
-	li	r3,1
-	beqlr   cr7	      /* EQ means INF, otherwise -INF.  */
-	li      r3,-1
-	blr
-	END (__isinf)
-
-hidden_def (__isinf)
-weak_alias (__isinf, isinf)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isinf, __isinff)
-hidden_def (__isinff)
-weak_alias (__isinff, isinff)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
-weak_alias (__isinf, isinfl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
-compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S
deleted file mode 100644
index be759e091e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isinf.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
deleted file mode 100644
index 46b08a0d37..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
+++ /dev/null
@@ -1,68 +0,0 @@
-/* isnan().  PowerPC64/POWER7 version.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-/* int __isnan(x)  */
-	.section    ".toc","aw"
-.LC0:   /* 1.0 */
-	.tc	    FD_ONE[TC],0x3ff0000000000000
-	.section    ".text"
-	.type	    __isnan, @function
-	.machine    power7
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	lfd	fp0,.LC0@toc(r2)
-	ftdiv	cr7,fp1,fp0
-	li	r3,0
-	bflr	30	      /* If not NaN, finish.  */
-
-	stfd    fp1,-16(r1)   /* Transfer FP to GPR's.  */
-	ori	2,2,0	      /* Force a new dispatch group.  */
-	ld	r4,-16(r1)    /* Load FP into GPR.  */
-	lis     r0,0x7ff0
-	sldi	r0,r0,32      /* const long r0 0x7ff00000 00000000.  */
-	clrldi	r4,r4,1	      /* x = fabs(x)  */
-	cmpd	cr7,r4,r0     /* if (fabs(x) <= inf)  */
-	blelr	cr7	      /* LE means not NaN.  */
-	li	r3,1	      /* else return 1  */
-	blr
-	END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S
deleted file mode 100644
index b48c85e0d3..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_isnanf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isnan.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c
deleted file mode 100644
index 2599c771d9..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logb.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logb.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c
deleted file mode 100644
index 7a5a8032e0..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logbf.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c b/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c
deleted file mode 100644
index 524ae2c78d..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/fpu/s_logbl.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/powerpc/power7/fpu/s_logbl.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/memchr.S b/sysdeps/powerpc/powerpc64/power7/memchr.S
deleted file mode 100644
index 5e9707aa02..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memchr.S
+++ /dev/null
@@ -1,199 +0,0 @@
-/* Optimized memchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memchr (char *s [r3], int byte [r4], int size [r5])  */
-
-#ifndef MEMCHR
-# define MEMCHR __memchr
-#endif
-	.machine  power7
-ENTRY (MEMCHR)
-	CALL_MCOUNT 3
-	dcbt	0,r3
-	clrrdi  r8,r3,3
-	insrdi	r4,r4,8,48
-
-	/* Calculate the last acceptable address and check for possible
-	   addition overflow by using satured math:
-	   r7 = r3 + r5
-	   r7 |= -(r7 < x)  */
-	add     r7,r3,r5
-	subfc   r6,r3,r7
-	subfe   r9,r9,r9
-	extsw   r6,r9
-	or      r7,r7,r6
-
-	insrdi	r4,r4,16,32
-	cmpldi	r5,32
-	li	r9, -1
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	insrdi  r4,r4,32,0
-	addi	r7,r7,-1
-#ifdef __LITTLE_ENDIAN__
-	sld	r9,r9,r6
-#else
-	srd	r9,r9,r6
-#endif
-	ble	L(small_range)
-
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	cmpb	r3,r12,r4     /* Check for BYTEs in DWORD1.  */
-	and	r3,r3,r9
-	clrldi	r5,r7,61      /* Byte count - 1 in last dword.  */
-	clrrdi	r7,r7,3       /* Address of last doubleword.  */
-	cmpldi	cr7,r3,0      /* Does r3 indicate we got a hit?  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-	bt	28,L(loop_setup)
-
-	/* Handle DWORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr7,r3,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last dword we want to read in the loop below is the one
-	   containing the last byte of the string, ie. the dword at
-	   (s + size - 1) & ~7, or r7.  The first dword read is at
-	   r8 + 8, we read 2 * cnt dwords, so the last dword read will
-	   be at r8 + 8 + 16 * cnt - 8.  Solving for cnt gives
-	   cnt = (r7 - r8) / 16  */
-	sub	r6,r7,r8
-	srdi	r6,r6,4	      /* Number of loop iterations.  */
-	mtctr	r6            /* Setup the counter.  */
-
-	/* Main loop to look for BYTE in the string.  Since
-	   it's a small loop (8 instructions), align it to 32-bytes.  */
-	.align	5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r11,16(r8)
-	cmpb	r3,r12,r4
-	cmpb	r9,r11,r4
-	or	r6,r9,r3      /* Merge everything in one doubleword.  */
-	cmpldi	cr7,r6,0
-	bne	cr7,L(found)
-	bdnz	L(loop)
-
-	/* We may have one more dword to read.  */
-	cmpld	r8,r7
-	beqlr
-
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr6,r3,0
-	bne	cr6,L(done)
-	blr
-
-	.align	4
-L(found):
-	/* OK, one (or both) of the doublewords contains BYTE.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains BYTE.  */
-	cmpldi	cr6,r3,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* BYTE must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r3 so we can calculate the
-	   pointer.  */
-
-	mr	r3,r9
-	addi	r8,r8,8
-
-	/* r3 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as BYTE in the original
-	   doubleword from the string.  Use that to calculate the pointer.
-	   We need to make sure BYTE is *before* the end of the range.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r3,-1
-	andc    r0,r0,r3
-	popcntd	r0,r0	      /* Count trailing zeros.  */
-#else
-	cntlzd	r0,r3	      /* Count leading zeros before the match.  */
-#endif
-	cmpld	r8,r7         /* Are we on the last dword?  */
-	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r8,r0
-	cmpld	cr7,r0,r5     /* If on the last dword, check byte offset.  */
-	bnelr
-	blelr	cr7
-	li	r3,0
-	blr
-
-	.align	4
-L(null):
-	li	r3,0
-	blr
-
-/* Deals with size <= 32.  */
-	.align	4
-L(small_range):
-	cmpldi	r5,0
-	beq	L(null)
-	ld	r12,0(r8)     /* Load word from memory.  */
-	cmpb	r3,r12,r4     /* Check for BYTE in DWORD1.  */
-	and	r3,r3,r9
-	cmpldi	cr7,r3,0
-	clrldi	r5,r7,61      /* Byte count - 1 in last dword.  */
-	clrrdi	r7,r7,3       /* Address of last doubleword.  */
-	cmpld	r8,r7         /* Are we done already?  */
-	bne	cr7,L(done)
-	beqlr
-
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr6,r3,0
-	cmpld	r8,r7
-	bne	cr6,L(done)   /* Found something.  */
-	beqlr		      /* Hit end of string (length).  */
-
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr6,r3,0
-	cmpld	r8,r7
-	bne	cr6,L(done)
-	beqlr
-
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr6,r3,0
-	cmpld	r8,r7
-	bne	cr6,L(done)
-	beqlr
-
-	ldu	r12,8(r8)
-	cmpb	r3,r12,r4
-	cmpldi	cr6,r3,0
-	bne	cr6,L(done)
-	blr
-
-END (MEMCHR)
-weak_alias (__memchr, memchr)
-libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/memcmp.S b/sysdeps/powerpc/powerpc64/power7/memcmp.S
deleted file mode 100644
index 96ce8cee25..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memcmp.S
+++ /dev/null
@@ -1,1061 +0,0 @@
-/* Optimized memcmp implementation for POWER7/PowerPC64.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memcmp (const char *s1 [r3],
-		    const char *s2 [r4],
-		    size_t size [r5])  */
-#ifndef MEMCMP
-# define MEMCMP memcmp
-#endif
-	.machine power7
-EALIGN (MEMCMP, 4, 0)
-	CALL_MCOUNT 3
-
-#define rRTN		r3
-#define rSTR1		r3	/* first string arg */
-#define rSTR2		r4	/* second string arg */
-#define rN		r5	/* max string length */
-#define rWORD1		r6	/* current word in s1 */
-#define rWORD2		r7	/* current word in s2 */
-#define rWORD3		r8	/* next word in s1 */
-#define rWORD4		r9	/* next word in s2 */
-#define rWORD5		r10	/* next word in s1 */
-#define rWORD6		r11	/* next word in s2 */
-
-#define rOFF8		r20	/* 8 bytes offset.  */
-#define rOFF16  	r21	/* 16 bytes offset.  */
-#define rOFF24		r22	/* 24 bytes offset.  */
-#define rOFF32		r23	/* 24 bytes offset.  */
-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
-#define rSHR		r28	/* Unaligned shift right count.  */
-#define rSHL		r29	/* Unaligned shift left count.  */
-#define rWORD7		r30	/* next word in s1 */
-#define rWORD8		r31	/* next word in s2 */
-
-#define rWORD8SAVE	(-8)
-#define rWORD7SAVE	(-16)
-#define rOFF8SAVE	(-24)
-#define rOFF16SAVE	(-32)
-#define rOFF24SAVE	(-40)
-#define rOFF32SAVE	(-48)
-#define rSHRSAVE	(-56)
-#define rSHLSAVE	(-64)
-#define rWORD8SHIFTSAVE	(-72)
-#define rWORD2SHIFTSAVE	(-80)
-#define rWORD4SHIFTSAVE	(-88)
-#define rWORD6SHIFTSAVE	(-96)
-
-#ifdef __LITTLE_ENDIAN__
-# define LD	ldbrx
-#else
-# define LD	ldx
-#endif
-
-	xor	r0, rSTR2, rSTR1
-	cmpldi	cr6, rN, 0
-	cmpldi	cr1, rN, 12
-	clrldi.	r0, r0, 61
-	clrldi	r12, rSTR1, 61
-	cmpldi	cr5, r12, 0
-	beq-	cr6, L(zeroLength)
-	dcbt	0, rSTR1
-	dcbt	0, rSTR2
-/* If less than 8 bytes or not aligned, use the unaligned
-   byte loop.  */
-	blt	cr1, L(bytealigned)
-	std	rWORD8, rWORD8SAVE(r1)
-	std	rWORD7, rWORD7SAVE(r1)
-	std	rOFF8, rOFF8SAVE(r1)
-	std	rOFF16, rOFF16SAVE(r1)
-	std	rOFF24, rOFF24SAVE(r1)
-	std	rOFF32, rOFF32SAVE(r1)
-	cfi_offset(rWORD8, rWORD8SAVE)
-	cfi_offset(rWORD7, rWORD7SAVE)
-	cfi_offset(rOFF8, rOFF8SAVE)
-	cfi_offset(rOFF16, rOFF16SAVE)
-	cfi_offset(rOFF24, rOFF24SAVE)
-	cfi_offset(rOFF32, rOFF32SAVE)
-
-	li	rOFF8,8
-	li	rOFF16,16
-	li	rOFF24,24
-	li	rOFF32,32
-
-	bne	L(unaligned)
-/* At this point we know both strings have the same alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then we are already double word
-   aligned and can perform the DW aligned loop.
-
-   Otherwise we know the two strings have the same alignment (but not
-   yet DW).  So we force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DW aligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW. This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected register pair.  */
-	.align	4
-L(samealignment):
-	clrrdi	rSTR1, rSTR1, 3
-	clrrdi	rSTR2, rSTR2, 3
-	beq	cr5, L(DWaligned)
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	srdi	r0, rN, 5	/* Divide by 32 */
-	andi.	r12, rN, 24	/* Get the DW remainder */
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dPs4)
-	mtctr	r0
-	bgt	cr1, L(dPs3)
-	beq	cr1, L(dPs2)
-
-/* Remainder is 8 */
-	.align	3
-L(dsP1):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP1e)
-/* Remainder is 16 */
-	.align	4
-L(dPs2):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	b	L(dP2e)
-/* Remainder is 24 */
-	.align	4
-L(dPs3):
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD2, rWORD6
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(dP3e)
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(dPs4):
-	mtctr	r0
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD2, rWORD6
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP4e)
-
-/* At this point we know both strings are double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWaligned):
-	andi.	r12, rN, 24	/* Get the DW remainder */
-	srdi	r0, rN, 5	/* Divide by 32 */
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dP4)
-	bgt	cr1, L(dP3)
-	beq	cr1, L(dP2)
-
-/* Remainder is 8 */
-	.align	4
-L(dP1):
-	mtctr	r0
-/* Normally we'd use rWORD7/rWORD8 here, but since we might exit early
-   (8-15 byte compare), we want to use only volatile registers.  This
-   means we can avoid restoring non-volatile registers since we did not
-   change any on the early exit path.  The key here is the non-early
-   exit path only cares about the condition code (cr5), not about which
-   register pair was used.  */
-	LD	rWORD5, 0, rSTR1
-	LD	rWORD6, 0, rSTR2
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-L(dP1e):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5x)
-	bne	cr7, L(dLcr7x)
-
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	bne	cr1, L(dLcr1)
-	cmpld	cr5, rWORD7, rWORD8
-	bdnz	L(dLoop)
-	bne	cr6, L(dLcr6)
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	.align	3
-L(dP1x):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 16 */
-	.align	4
-L(dP2):
-	mtctr	r0
-	LD	rWORD5, 0, rSTR1
-	LD	rWORD6, 0, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-L(dP2e):
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	LD	rWORD3, rOFF24, rSTR1
-	LD	rWORD4, rOFF24, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(dLcr6)
-	bne	cr5, L(dLcr5)
-	b	L(dLoop2)
-	.align	4
-L(dP2x):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	sldi.	r12, rN, 3
-	bne	cr6, L(dLcr6x)
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr1, L(dLcr1x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 24 */
-	.align	4
-L(dP3):
-	mtctr	r0
-	LD	rWORD3, 0, rSTR1
-	LD	rWORD4, 0, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-L(dP3e):
-	LD	rWORD5, rOFF8, rSTR1
-	LD	rWORD6, rOFF8, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP3x)
-	LD	rWORD7, rOFF16, rSTR1
-	LD	rWORD8, rOFF16, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	LD	rWORD1, rOFF24, rSTR1
-	LD	rWORD2, rOFF24, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	bne	cr1, L(dLcr1)
-	bne	cr6, L(dLcr6)
-	b	L(dLoop1)
-/* Again we are on a early exit path (24-31 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP3x):
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	sldi.	r12, rN, 3
-	bne	cr1, L(dLcr1x)
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	bne	cr6, L(dLcr6x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	cr7, L(dLcr7x)
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(dP4):
-	mtctr	r0
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-L(dP4e):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	LD	rWORD5, rOFF16, rSTR1
-	LD	rWORD6, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	LD	rWORD7, rOFF24, rSTR1
-	LD	rWORD8, rOFF24, rSTR2
-	addi	rSTR1, rSTR1, 24
-	addi	rSTR2, rSTR2, 24
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-	bne	cr1, L(dLcr1)
-	bdz-	L(d24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(dLoop):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-L(dLoop1):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-L(dLoop2):
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-L(dLoop3):
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	bne	cr1, L(dLcr1)
-	cmpld	cr7, rWORD1, rWORD2
-	bdnz	L(dLoop)
-
-L(dL4):
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(d44):
-	bne	cr7, L(dLcr7)
-L(d34):
-	bne	cr1, L(dLcr1)
-L(d24):
-	bne	cr6, L(dLcr6)
-L(d14):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5)
-L(d04):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	beq	L(duzeroLength)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  Since
-   we are aligned it is safe to load the whole double word, and use
-   shift right double to eliminate bits beyond the compare length.  */
-L(d00):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr7, L(dLcr7x)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-	.align	4
-L(dLcr7):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr7x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr1):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr1x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr6):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr6x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr5):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr5x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr5
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(bytealigned):
-	mtctr	rN
-
-/* We need to prime this loop.  This loop is swing modulo scheduled
-   to avoid pipe delays.  The dependent instruction latencies (load to
-   compare to conditional branch) is 2 to 3 cycles.  In this loop each
-   dispatch group ends in a branch and takes 1 cycle.  Effectively
-   the first iteration of the loop only serves to load operands and
-   branches based on compares are delayed until the next loop.
-
-   So we must precondition some registers and condition codes so that
-   we don't exit the loop early on the first iteration.  */
-
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	bdz	L(b11)
-	cmpld	cr7, rWORD1, rWORD2
-	lbz	rWORD3, 1(rSTR1)
-	lbz	rWORD4, 1(rSTR2)
-	bdz	L(b12)
-	cmpld	cr1, rWORD3, rWORD4
-	lbzu	rWORD5, 2(rSTR1)
-	lbzu	rWORD6, 2(rSTR2)
-	bdz	L(b13)
-	.align	4
-L(bLoop):
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	bne	cr7, L(bLcr7)
-
-	cmpld	cr6, rWORD5, rWORD6
-	bdz	L(b3i)
-
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	bne	cr1, L(bLcr1)
-
-	cmpld	cr7, rWORD1, rWORD2
-	bdz	L(b2i)
-
-	lbzu	rWORD5, 1(rSTR1)
-	lbzu	rWORD6, 1(rSTR2)
-	bne	cr6, L(bLcr6)
-
-	cmpld	cr1, rWORD3, rWORD4
-	bdnz	L(bLoop)
-
-/* We speculatively loading bytes before we have tested the previous
-   bytes.  But we must avoid overrunning the length (in the ctr) to
-   prevent these speculative loads from causing a segfault.  In this
-   case the loop will exit early (before the all pending bytes are
-   tested.  In this case we must complete the pending operations
-   before returning.  */
-L(b1i):
-	bne	cr7, L(bLcr7)
-	bne	cr1, L(bLcr1)
-	b	L(bx56)
-	.align	4
-L(b2i):
-	bne	cr6, L(bLcr6)
-	bne	cr7, L(bLcr7)
-	b	L(bx34)
-	.align	4
-L(b3i):
-	bne	cr1, L(bLcr1)
-	bne	cr6, L(bLcr6)
-	b	L(bx12)
-	.align	4
-L(bLcr7):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-L(bLcr1):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-L(bLcr6):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-L(b13):
-	bne	cr7, L(bx12)
-	bne	cr1, L(bx34)
-L(bx56):
-	sub	rRTN, rWORD5, rWORD6
-	blr
-	nop
-L(b12):
-	bne	cr7, L(bx12)
-L(bx34):
-	sub	rRTN, rWORD3, rWORD4
-	blr
-L(b11):
-L(bx12):
-	sub	rRTN, rWORD1, rWORD2
-	blr
-
-	.align	4
-L(zeroLength):
-	li	rRTN, 0
-	blr
-
-	.align	4
-/* At this point we know the strings have different alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then rStr1 is double word
-   aligned and can perform the DWunaligned loop.
-
-   Otherwise we know that rSTR1 is not already DW aligned yet.
-   So we can force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DWaligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW. This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected resister pair.  */
-L(unaligned):
-	std	rSHL, rSHLSAVE(r1)
-	cfi_offset(rSHL, rSHLSAVE)
-	clrldi	rSHL, rSTR2, 61
-	beq	cr6, L(duzeroLength)
-	std	rSHR, rSHRSAVE(r1)
-	cfi_offset(rSHR, rSHRSAVE)
-	beq	cr5, L(DWunaligned)
-	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
-/* Adjust the logical start of rSTR2 to compensate for the extra bits
-   in the 1st rSTR1 DW.  */
-	sub	rWORD8_SHIFT, rSTR2, r12
-/* But do not attempt to address the DW before that DW that contains
-   the actual start of rSTR2.  */
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-/* Compute the left/right shift counts for the unaligned rSTR2,
-   compensating for the logical (DW aligned) start of rSTR1.  */
-	clrldi	rSHL, rWORD8_SHIFT, 61
-	clrrdi	rSTR1, rSTR1, 3
-	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	sldi	rSHL, rSHL, 3
-	cmpld	cr5, rWORD8_SHIFT, rSTR2
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
-	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
-	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
-	subfic	rSHR, rSHL, 64
-	srdi	r0, rN, 5	/* Divide by 32 */
-	andi.	r12, rN, 24	/* Get the DW remainder */
-/* We normally need to load 2 DWs to start the unaligned rSTR2, but in
-   this special case those bits may be discarded anyway.  Also we
-   must avoid loading a DW where none of the bits are part of rSTR2 as
-   this may cross a page boundary and cause a page fault.  */
-	li	rWORD8, 0
-	blt	cr5, L(dus0)
-	LD	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-	sld	rWORD8, rWORD8, rSHL
-
-L(dus0):
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	srd	r12, rWORD2, rSHR
-	clrldi	rN, rN, 61
-	beq	L(duPs4)
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	bgt	cr1, L(duPs3)
-	beq	cr1, L(duPs2)
-
-/* Remainder is 8 */
-	.align	4
-L(dusP1):
-	sld	rWORD8_SHIFT, rWORD2, rSHL
-	sld	rWORD7, rWORD1, rWORD6
-	sld	rWORD8, rWORD8, rWORD6
-	bge	cr7, L(duP1e)
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16 */
-	.align	4
-L(duPs2):
-	sld	rWORD6_SHIFT, rWORD2, rSHL
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD8, rWORD6
-	b	L(duP2e)
-/* Remainder is 24 */
-	.align	4
-L(duPs3):
-	sld	rWORD4_SHIFT, rWORD2, rSHL
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD8, rWORD6
-	b	L(duP3e)
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(duPs4):
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD8, rWORD6
-	b	L(duP4e)
-
-/* At this point we know rSTR1 is double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWunaligned):
-	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	srdi	r0, rN, 5	/* Divide by 32 */
-	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	andi.	r12, rN, 24	/* Get the DW remainder */
-	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
-	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
-	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
-	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
-	sldi	rSHL, rSHL, 3
-	LD	rWORD6, 0, rSTR2
-	LD	rWORD8, rOFF8, rSTR2
-	addi	rSTR2, rSTR2, 8
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	subfic	rSHR, rSHL, 64
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	beq	L(duP4)
-	mtctr	r0
-	bgt	cr1, L(duP3)
-	beq	cr1, L(duP2)
-
-/* Remainder is 8 */
-	.align	4
-L(duP1):
-	srd	r12, rWORD8, rSHR
-	LD	rWORD7, 0, rSTR1
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP1x)
-L(duP1e):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	bne	cr5, L(duLcr5)
-	or	rWORD4, r12, rWORD2_SHIFT
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	bne	cr7, L(duLcr7)
-	or	rWORD6, r0, rWORD4_SHIFT
-	cmpld	cr6, rWORD5, rWORD6
-	b	L(duLoop3)
-	.align	4
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-L(duP1x):
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16 */
-	.align	4
-L(duP2):
-	srd	r0, rWORD8, rSHR
-	LD	rWORD5, 0, rSTR1
-	or	rWORD6, r0, rWORD6_SHIFT
-	sld	rWORD6_SHIFT, rWORD8, rSHL
-L(duP2e):
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP2x)
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	LD	rWORD3, rOFF24, rSTR1
-	LD	rWORD4, rOFF24, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(duLoop2)
-	.align	4
-L(duP2x):
-	cmpld	cr5, rWORD7, rWORD8
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Remainder is 24 */
-	.align	4
-L(duP3):
-	srd	r12, rWORD8, rSHR
-	LD	rWORD3, 0, rSTR1
-	sld	rWORD4_SHIFT, rWORD8, rSHL
-	or	rWORD4, r12, rWORD6_SHIFT
-L(duP3e):
-	LD	rWORD5, rOFF8, rSTR1
-	LD	rWORD6, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-	LD	rWORD7, rOFF16, rSTR1
-	LD	rWORD8, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP3x)
-	LD	rWORD1, rOFF24, rSTR1
-	LD	rWORD2, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(duLoop1)
-	.align	4
-L(duP3x):
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Count is a multiple of 32, remainder is 0 */
-	.align	4
-L(duP4):
-	mtctr	r0
-	srd	r0, rWORD8, rSHR
-	LD	rWORD1, 0, rSTR1
-	sld	rWORD2_SHIFT, rWORD8, rSHL
-	or	rWORD2, r0, rWORD6_SHIFT
-L(duP4e):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-	LD	rWORD5, rOFF16, rSTR1
-	LD	rWORD6, rOFF16, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-	LD	rWORD7, rOFF24, rSTR1
-	LD	rWORD8, rOFF24, rSTR2
-	addi	rSTR1, rSTR1, 24
-	addi	rSTR2, rSTR2, 24
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	cmpld	cr5, rWORD7, rWORD8
-	bdz	L(du24)		/* Adjust CTR as we start with +4 */
-/* This is the primary loop */
-	.align	4
-L(duLoop):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-L(duLoop1):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-L(duLoop2):
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-L(duLoop3):
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	bdnz	L(duLoop)
-
-L(duL4):
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(du44):
-	bne	cr7, L(duLcr7)
-L(du34):
-	bne	cr1, L(duLcr1)
-L(du24):
-	bne	cr6, L(duLcr6)
-L(du14):
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  We use
-   shift right double to eliminate bits beyond the compare length.
-
-   However it may not be safe to load rWORD2 which may be beyond the
-   string length. So we compare the bit length of the remainder to
-   the right shift count (rSHR). If the bit count is less than or equal
-   we do not need to load rWORD2 (all significant bits are already in
-   rWORD8_SHIFT).  */
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	.align	4
-L(dutrim):
-	LD	rWORD1, rOFF8, rSTR1
-	ld	rWORD8, -8(r1)
-	subfic	rN, rN, 64	/* Shift count is 64 - (rN * 8).  */
-	or	rWORD2, r0, rWORD8_SHIFT
-	ld	rWORD7, rWORD7SAVE(r1)
-	ld	rSHL, rSHLSAVE(r1)
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	ld	rSHR, rSHRSAVE(r1)
-	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	li	rRTN, 0
-	cmpld	cr7, rWORD1, rWORD2
-	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	beq	cr7, L(dureturn24)
-	li	rRTN, 1
-	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(duLcr7):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr7, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr1):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr1, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr6):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr6, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr5):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr5, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-
-	.align	3
-L(duZeroReturn):
-	li	rRTN, 0
-	.align	4
-L(dureturn):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dureturn29):
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-L(dureturn27):
-	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-L(dureturn24):
-	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	blr
-
-L(duzeroLength):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-END (MEMCMP)
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/memcpy.S b/sysdeps/powerpc/powerpc64/power7/memcpy.S
deleted file mode 100644
index e08993cbc3..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memcpy.S
+++ /dev/null
@@ -1,430 +0,0 @@
-/* Optimized memcpy implementation for PowerPC64/POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-
-/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-   Returns 'dst'.  */
-
-#ifndef MEMCPY
-# define MEMCPY memcpy
-#endif
-
-#define dst 11		/* Use r11 so r3 kept unchanged.  */
-#define src 4
-#define cnt 5
-
-	.machine power7
-EALIGN (MEMCPY, 5, 0)
-	CALL_MCOUNT 3
-
-	cmpldi	cr1,cnt,31
-	neg	0,3
-	ble	cr1, L(copy_LT_32)  /* If move < 32 bytes use short move
-				    code.  */
-
-/* Align copies using VSX instructions to quadword. It is to avoid alignment
-   traps when memcpy is used on non-cacheable memory (for instance, memory
-   mapped I/O).  */
-	andi.	10,3,15
-	clrldi	11,4,60
-	cmpld	cr6,10,11	/* SRC and DST alignments match?  */
-
-	mr	dst,3
-	bne	cr6,L(copy_GE_32_unaligned)
-	beq	L(aligned_copy)
-
-	mtocrf	0x01,0
-	clrldi	0,0,60
-
-/* Get the DST and SRC aligned to 16 bytes.  */
-1:
-	bf	31,2f
-	lbz	6,0(src)
-	addi	src,src,1
-	stb	6,0(dst)
-	addi	dst,dst,1
-2:
-	bf	30,4f
-	lhz	6,0(src)
-	addi	src,src,2
-	sth	6,0(dst)
-	addi	dst,dst,2
-4:
-	bf	29,8f
-	lwz	6,0(src)
-	addi	src,src,4
-	stw	6,0(dst)
-	addi	dst,dst,4
-8:
-	bf	28,16f
-	ld	6,0(src)
-	addi	src,src,8
-	std	6,0(dst)
-	addi	dst,dst,8
-16:
-	subf	cnt,0,cnt
-
-/* Main aligned copy loop. Copies 128 bytes at a time. */
-L(aligned_copy):
-	li	6,16
-	li	7,32
-	li	8,48
-	mtocrf	0x02,cnt
-	srdi	12,cnt,7
-	cmpdi	12,0
-	beq	L(aligned_tail)
-	lxvd2x	6,0,src
-	lxvd2x	7,src,6
-	mtctr	12
-	b	L(aligned_128loop)
-
-	.align  4
-L(aligned_128head):
-	/* for the 2nd + iteration of this loop. */
-	lxvd2x	6,0,src
-	lxvd2x	7,src,6
-L(aligned_128loop):
-	lxvd2x	8,src,7
-	lxvd2x	9,src,8
-	stxvd2x	6,0,dst
-	addi	src,src,64
-	stxvd2x	7,dst,6
-	stxvd2x	8,dst,7
-	stxvd2x	9,dst,8
-	lxvd2x	6,0,src
-	lxvd2x	7,src,6
-	addi	dst,dst,64
-	lxvd2x	8,src,7
-	lxvd2x	9,src,8
-	addi	src,src,64
-	stxvd2x	6,0,dst
-	stxvd2x	7,dst,6
-	stxvd2x	8,dst,7
-	stxvd2x	9,dst,8
-	addi	dst,dst,64
-	bdnz	L(aligned_128head)
-
-L(aligned_tail):
-	mtocrf	0x01,cnt
-	bf	25,32f
-	lxvd2x	6,0,src
-	lxvd2x	7,src,6
-	lxvd2x	8,src,7
-	lxvd2x	9,src,8
-	addi	src,src,64
-	stxvd2x	6,0,dst
-	stxvd2x	7,dst,6
-	stxvd2x	8,dst,7
-	stxvd2x	9,dst,8
-	addi	dst,dst,64
-32:
-	bf	26,16f
-	lxvd2x	6,0,src
-	lxvd2x	7,src,6
-	addi	src,src,32
-	stxvd2x	6,0,dst
-	stxvd2x	7,dst,6
-	addi	dst,dst,32
-16:
-	bf	27,8f
-	lxvd2x	6,0,src
-	addi	src,src,16
-	stxvd2x	6,0,dst
-	addi	dst,dst,16
-8:
-	bf	28,4f
-	ld	6,0(src)
-	addi	src,src,8
-	std     6,0(dst)
-	addi	dst,dst,8
-4:	/* Copies 4~7 bytes.  */
-	bf	29,L(tail2)
-	lwz	6,0(src)
-	stw     6,0(dst)
-	bf      30,L(tail5)
-	lhz     7,4(src)
-	sth     7,4(dst)
-	bflr	31
-	lbz     8,6(src)
-	stb     8,6(dst)
-	/* Return original DST pointer.  */
-	blr
-
-
-/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32):
-	mr	dst,3
-	cmpldi	cr6,cnt,8
-	mtocrf	0x01,cnt
-	ble	cr6,L(copy_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	8,4
-	andi.	0,8,3
-	cmpldi	cr1,cnt,16
-	beq	L(copy_LT_32_aligned)
-
-	/* Force 4-byte alignment for SRC.  */
-	mtocrf	0x01,0
-	subf	cnt,0,cnt
-2:
-	bf	30,1f
-	lhz	6,0(src)
-	addi	src,src,2
-	sth	6,0(dst)
-	addi	dst,dst,2
-1:
-	bf	31,L(end_4bytes_alignment)
-	lbz	6,0(src)
-	addi	src,src,1
-	stb	6,0(dst)
-	addi	dst,dst,1
-
-	.align	4
-L(end_4bytes_alignment):
-	cmpldi	cr1,cnt,16
-	mtocrf	0x01,cnt
-
-L(copy_LT_32_aligned):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	6,0(src)
-	lwz	7,4(src)
-	stw	6,0(dst)
-	lwz	8,8(src)
-	stw	7,4(dst)
-	lwz	6,12(src)
-	addi	src,src,16
-	stw	8,8(dst)
-	stw	6,12(dst)
-	addi	dst,dst,16
-8:	/* Copy 8 bytes.  */
-	bf	28,L(tail4)
-	lwz	6,0(src)
-	lwz	7,4(src)
-	addi	src,src,8
-	stw	6,0(dst)
-	stw	7,4(dst)
-	addi	dst,dst,8
-
-	.align	4
-/* Copies 4~7 bytes.  */
-L(tail4):
-	bf	29,L(tail2)
-	lwz	6,0(src)
-	stw	6,0(dst)
-	bf	30,L(tail5)
-	lhz	7,4(src)
-	sth	7,4(dst)
-	bflr	31
-	lbz	8,6(src)
-	stb	8,6(dst)
-	/* Return original DST pointer.  */
-	blr
-
-	.align	4
-/* Copies 2~3 bytes.  */
-L(tail2):
-	bf	30,1f
-	lhz	6,0(src)
-	sth	6,0(dst)
-	bflr	31
-	lbz	7,2(src)
-	stb	7,2(dst)
-	blr
-
-	.align	4
-L(tail5):
-	bflr	31
-	lbz	6,4(src)
-	stb	6,4(dst)
-	blr
-
-	.align	4
-1:
-	bflr	31
-	lbz	6,0(src)
-	stb	6,0(dst)
-	/* Return original DST pointer.  */
-	blr
-
-
-/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8):
-	bne	cr6,L(tail4)
-
-	/* Though we could've used ld/std here, they are still
-	slow for unaligned cases.  */
-
-	lwz	6,0(src)
-	lwz	7,4(src)
-	stw	6,0(dst)
-	stw	7,4(dst)
-	blr
-
-
-/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-   SRC is not.	Use aligned quadword loads from SRC, shifted to realign
-   the data, allowing for aligned DST stores.  */
-	.align	4
-L(copy_GE_32_unaligned):
-	clrldi	0,0,60	      /* Number of bytes until the 1st dst quadword.  */
-	srdi	9,cnt,4	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_unaligned_cont)
-
-	/* DST is not quadword aligned, get it aligned.  */
-
-	mtocrf	0x01,0
-	subf	cnt,0,cnt
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:
-	bf	31,2f
-	lbz	6,0(src)
-	addi	src,src,1
-	stb	6,0(dst)
-	addi	dst,dst,1
-2:
-	bf	30,4f
-	lhz	6,0(src)
-	addi	src,src,2
-	sth	6,0(dst)
-	addi	dst,dst,2
-4:
-	bf	29,8f
-	lwz	6,0(src)
-	addi	src,src,4
-	stw	6,0(dst)
-	addi	dst,dst,4
-8:
-	bf	28,0f
-	ld	6,0(src)
-	addi	src,src,8
-	std	6,0(dst)
-	addi	dst,dst,8
-0:
-	srdi	9,cnt,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrldi	10,cnt,60
-	li	6,16	      /* Index for 16-bytes offsets.  */
-	li	7,32	      /* Index for 32-bytes offsets.  */
-	cmpldi	cr1,10,0
-	srdi	8,cnt,5	      /* Setup the loop counter.  */
-	mtocrf	0x01,9
-	cmpldi	cr6,9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr	5,0,src
-#else
-	lvsl	5,0,src
-#endif
-	lvx	3,0,src
-	li	0,0
-	bf	31,L(setup_unaligned_loop)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop.  */
-	lvx	4,src,6
-#ifdef __LITTLE_ENDIAN__
-	vperm	6,4,3,5
-#else
-	vperm	6,3,4,5
-#endif
-	addi	src,src,16
-	stvx	6,0,dst
-	addi	dst,dst,16
-	vor	3,4,4
-	clrrdi	0,src,60
-
-L(setup_unaligned_loop):
-	mtctr	8
-	ble	cr6,L(end_unaligned_loop)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align	4
-L(unaligned_loop):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	4,src,6
-#ifdef __LITTLE_ENDIAN__
-	vperm	6,4,3,5
-#else
-	vperm	6,3,4,5
-#endif
-	lvx	3,src,7
-#ifdef __LITTLE_ENDIAN__
-	vperm	10,3,4,5
-#else
-	vperm	10,4,3,5
-#endif
-	addi	src,src,32
-	stvx	6,0,dst
-	stvx	10,dst,6
-	addi	dst,dst,32
-	bdnz	L(unaligned_loop)
-
-	clrrdi	0,src,60
-
-	.align	4
-L(end_unaligned_loop):
-
-	/* Check for tail bytes.  */
-	mtocrf	0x01,cnt
-	beqlr	cr1
-
-	add	src,src,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-	/* Copy 8 bytes.  */
-	bf	28,4f
-	lwz	6,0(src)
-	lwz	7,4(src)
-	addi	src,src,8
-	stw	6,0(dst)
-	stw	7,4(dst)
-	addi	dst,dst,8
-4:	/* Copy 4~7 bytes.  */
-	bf	29,L(tail2)
-	lwz	6,0(src)
-	stw	6,0(dst)
-	bf	30,L(tail5)
-	lhz	7,4(src)
-	sth	7,4(dst)
-	bflr	31
-	lbz	8,6(src)
-	stb	8,6(dst)
-	/* Return original DST pointer.  */
-	blr
-
-END_GEN_TB (MEMCPY,TB_TOCLESS)
-libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power7/memmove.S b/sysdeps/powerpc/powerpc64/power7/memmove.S
deleted file mode 100644
index 4c0f7c3571..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memmove.S
+++ /dev/null
@@ -1,835 +0,0 @@
-/* Optimized memmove implementation for PowerPC64/POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-
-/* void* [r3] memmove (void *dest [r3], const void *src [r4], size_t len [r5])
-
-   This optimization check if memory 'dest'  overlaps with 'src'. If it does
-   not then it calls an optimized memcpy call (similar to memcpy for POWER7,
-   embedded here to gain some cycles).
-   If source and destiny overlaps, a optimized backwards memcpy is used
-   instead.  */
-
-#ifndef MEMMOVE
-# define MEMMOVE memmove
-#endif
-	.machine power7
-EALIGN (MEMMOVE, 5, 0)
-	CALL_MCOUNT 3
-
-L(_memmove):
-	subf    r9,r4,r3
-	cmpld   cr7,r9,r5
-	blt	cr7,L(memmove_bwd)
-
-	cmpldi	cr1,r5,31
-	neg	0,3
-	ble	cr1, L(copy_LT_32)  /* If move < 32 bytes use short move
-				       code.  */
-
-	andi.	10,3,15
-	clrldi	11,4,60
-	cmpld	cr6,10,11	/* SRC and DST alignments match?  */
-
-	mr	r11,3
-	bne	cr6,L(copy_GE_32_unaligned)
-	beq	L(aligned_copy)
-
-	mtocrf	0x01,0
-	clrldi	0,0,60
-
-/* Get the DST and SRC aligned to 8 bytes (16 for little-endian).  */
-1:
-	bf	31,2f
-	lbz	6,0(r4)
-	addi	r4,r4,1
-	stb	6,0(r11)
-	addi	r11,r11,1
-2:
-	bf	30,4f
-	lhz	6,0(r4)
-	addi	r4,r4,2
-	sth	6,0(r11)
-	addi	r11,r11,2
-4:
-	bf	29,8f
-	lwz	6,0(r4)
-	addi	r4,r4,4
-	stw	6,0(r11)
-	addi	r11,r11,4
-8:
-	bf	28,16f
-	ld	6,0(r4)
-	addi	r4,r4,8
-	std	6,0(r11)
-	addi	r11,r11,8
-16:
-	subf	r5,0,r5
-
-/* Main aligned copy loop. Copies 128 bytes at a time. */
-L(aligned_copy):
-	li	6,16
-	li	7,32
-	li	8,48
-	mtocrf	0x02,r5
-	srdi	12,r5,7
-	cmpdi	12,0
-	beq	L(aligned_tail)
-	lxvd2x	6,0,r4
-	lxvd2x	7,r4,6
-	mtctr	12
-	b	L(aligned_128loop)
-
-	.align  4
-L(aligned_128head):
-	/* for the 2nd + iteration of this loop. */
-	lxvd2x	6,0,r4
-	lxvd2x	7,r4,6
-L(aligned_128loop):
-	lxvd2x	8,r4,7
-	lxvd2x	9,r4,8
-	stxvd2x	6,0,r11
-	addi	r4,r4,64
-	stxvd2x	7,r11,6
-	stxvd2x	8,r11,7
-	stxvd2x	9,r11,8
-	lxvd2x	6,0,r4
-	lxvd2x	7,r4,6
-	addi	r11,r11,64
-	lxvd2x	8,r4,7
-	lxvd2x	9,r4,8
-	addi	r4,r4,64
-	stxvd2x	6,0,r11
-	stxvd2x	7,r11,6
-	stxvd2x	8,r11,7
-	stxvd2x	9,r11,8
-	addi	r11,r11,64
-	bdnz	L(aligned_128head)
-
-L(aligned_tail):
-	mtocrf	0x01,r5
-	bf	25,32f
-	lxvd2x	6,0,r4
-	lxvd2x	7,r4,6
-	lxvd2x	8,r4,7
-	lxvd2x	9,r4,8
-	addi	r4,r4,64
-	stxvd2x	6,0,r11
-	stxvd2x	7,r11,6
-	stxvd2x	8,r11,7
-	stxvd2x	9,r11,8
-	addi	r11,r11,64
-32:
-	bf	26,16f
-	lxvd2x	6,0,r4
-	lxvd2x	7,r4,6
-	addi	r4,r4,32
-	stxvd2x	6,0,r11
-	stxvd2x	7,r11,6
-	addi	r11,r11,32
-16:
-	bf	27,8f
-	lxvd2x	6,0,r4
-	addi	r4,r4,16
-	stxvd2x	6,0,r11
-	addi	r11,r11,16
-8:
-	bf	28,4f
-	ld	6,0(r4)
-	addi	r4,r4,8
-	std     6,0(r11)
-	addi	r11,r11,8
-4:	/* Copies 4~7 bytes.  */
-	bf	29,L(tail2)
-	lwz	6,0(r4)
-	stw     6,0(r11)
-	bf      30,L(tail5)
-	lhz     7,4(r4)
-	sth     7,4(r11)
-	bflr	31
-	lbz     8,6(r4)
-	stb     8,6(r11)
-	/* Return original DST pointer.  */
-	blr
-
-/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32):
-	mr	r11,3
-	cmpldi	cr6,r5,8
-	mtocrf	0x01,r5
-	ble	cr6,L(copy_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	8,4
-	andi.	0,8,3
-	cmpldi	cr1,r5,16
-	beq	L(copy_LT_32_aligned)
-
-	/* Force 4-byte alignment for SRC.  */
-	mtocrf	0x01,0
-	subf	r5,0,r5
-2:
-	bf	30,1f
-	lhz	6,0(r4)
-	addi	r4,r4,2
-	sth	6,0(r11)
-	addi	r11,r11,2
-1:
-	bf	31,L(end_4bytes_alignment)
-	lbz	6,0(r4)
-	addi	r4,r4,1
-	stb	6,0(r11)
-	addi	r11,r11,1
-
-	.align	4
-L(end_4bytes_alignment):
-	cmpldi	cr1,r5,16
-	mtocrf	0x01,r5
-
-L(copy_LT_32_aligned):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	6,0(r4)
-	lwz	7,4(r4)
-	stw	6,0(r11)
-	lwz	8,8(r4)
-	stw	7,4(r11)
-	lwz	6,12(r4)
-	addi	r4,r4,16
-	stw	8,8(r11)
-	stw	6,12(r11)
-	addi	r11,r11,16
-8:	/* Copy 8 bytes.  */
-	bf	28,L(tail4)
-	lwz	6,0(r4)
-	lwz	7,4(r4)
-	addi	r4,r4,8
-	stw	6,0(r11)
-	stw	7,4(r11)
-	addi	r11,r11,8
-
-	.align	4
-/* Copies 4~7 bytes.  */
-L(tail4):
-	bf	29,L(tail2)
-	lwz	6,0(r4)
-	stw	6,0(r11)
-	bf	30,L(tail5)
-	lhz	7,4(r4)
-	sth	7,4(r11)
-	bflr	31
-	lbz	8,6(r4)
-	stb	8,6(r11)
-	/* Return original DST pointer.  */
-	blr
-
-	.align	4
-/* Copies 2~3 bytes.  */
-L(tail2):
-	bf	30,1f
-	lhz	6,0(r4)
-	sth	6,0(r11)
-	bflr	31
-	lbz	7,2(r4)
-	stb	7,2(r11)
-	blr
-
-	.align	4
-L(tail5):
-	bflr	31
-	lbz	6,4(r4)
-	stb	6,4(r11)
-	blr
-
-	.align	4
-1:
-	bflr	31
-	lbz	6,0(r4)
-	stb	6,0(r11)
-	/* Return original DST pointer.  */
-	blr
-
-/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8):
-	bne	cr6,L(tail4)
-
-	/* Though we could've used ld/std here, they are still
-	slow for unaligned cases.  */
-
-	lwz	6,0(r4)
-	lwz	7,4(r4)
-	stw	6,0(r11)
-	stw	7,4(r11)
-	blr
-
-
-/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-   SRC is not.	Use aligned quadword loads from SRC, shifted to realign
-   the data, allowing for aligned DST stores.  */
-	.align	4
-L(copy_GE_32_unaligned):
-	clrldi	0,0,60	      /* Number of bytes until the 1st r11 quadword.  */
-	srdi	9,r5,4	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_unaligned_cont)
-
-	/* DST is not quadword aligned, get it aligned.  */
-
-	mtocrf	0x01,0
-	subf	r5,0,r5
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:
-	bf	31,2f
-	lbz	6,0(r4)
-	addi	r4,r4,1
-	stb	6,0(r11)
-	addi	r11,r11,1
-2:
-	bf	30,4f
-	lhz	6,0(r4)
-	addi	r4,r4,2
-	sth	6,0(r11)
-	addi	r11,r11,2
-4:
-	bf	29,8f
-	lwz	6,0(r4)
-	addi	r4,r4,4
-	stw	6,0(r11)
-	addi	r11,r11,4
-8:
-	bf	28,0f
-	ld	6,0(r4)
-	addi	r4,r4,8
-	std	6,0(r11)
-	addi	r11,r11,8
-0:
-	srdi	9,r5,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrldi	10,r5,60
-	li	6,16	      /* Index for 16-bytes offsets.  */
-	li	7,32	      /* Index for 32-bytes offsets.  */
-	cmpldi	cr1,10,0
-	srdi	8,r5,5	      /* Setup the loop counter.  */
-	mtocrf	0x01,9
-	cmpldi	cr6,9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr	5,0,r4
-#else
-	lvsl	5,0,r4
-#endif
-	lvx	3,0,r4
-	li	0,0
-	bf	31,L(setup_unaligned_loop)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop.  */
-	lvx	4,r4,6
-#ifdef __LITTLE_ENDIAN__
-	vperm	6,4,3,5
-#else
-	vperm	6,3,4,5
-#endif
-	addi	r4,r4,16
-	stvx	6,0,r11
-	addi	r11,r11,16
-	vor	3,4,4
-	clrrdi	0,r4,60
-
-L(setup_unaligned_loop):
-	mtctr	8
-	ble	cr6,L(end_unaligned_loop)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align	4
-L(unaligned_loop):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	4,r4,6
-#ifdef __LITTLE_ENDIAN__
-	vperm	6,4,3,5
-#else
-	vperm	6,3,4,5
-#endif
-	lvx	3,r4,7
-#ifdef __LITTLE_ENDIAN__
-	vperm	10,3,4,5
-#else
-	vperm	10,4,3,5
-#endif
-	addi	r4,r4,32
-	stvx	6,0,r11
-	stvx	10,r11,6
-	addi	r11,r11,32
-	bdnz	L(unaligned_loop)
-
-	clrrdi	0,r4,60
-
-	.align	4
-L(end_unaligned_loop):
-
-	/* Check for tail bytes.  */
-	mtocrf	0x01,r5
-	beqlr	cr1
-
-	add	r4,r4,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-	/* Copy 8 bytes.  */
-	bf	28,4f
-	lwz	6,0(r4)
-	lwz	7,4(r4)
-	addi	r4,r4,8
-	stw	6,0(r11)
-	stw	7,4(r11)
-	addi	r11,r11,8
-4:	/* Copy 4~7 bytes.  */
-	bf	29,L(tail2)
-	lwz	6,0(r4)
-	stw	6,0(r11)
-	bf	30,L(tail5)
-	lhz	7,4(r4)
-	sth	7,4(r11)
-	bflr	31
-	lbz	8,6(r4)
-	stb	8,6(r11)
-	/* Return original DST pointer.  */
-	blr
-
-	/* Start to memcpy backward implementation: the algorith first check if
-	   src and dest have the same alignment and if it does align both to 16
-	   bytes and copy using VSX instructions.
-	   If does not, align dest to 16 bytes and use VMX (altivec) instruction
-	   to read two 16 bytes at time, shift/permute the bytes read and write
-	   aligned to dest.  */
-L(memmove_bwd):
-	cmpldi	cr1,r5,31
-	/* Copy is done backwards: update the pointers and check alignment.  */
-	add	r11,r3,r5
-	add	r4,r4,r5
-	mr	r0,r11
-	ble	cr1, L(copy_LT_32_bwd)  /* If move < 32 bytes use short move
-				           code.  */
-
-	andi.	r10,r11,15	    /* Check if r11 is aligned to 16 bytes  */
-	clrldi	r9,r4,60	    /* Check if r4 is aligned to 16 bytes  */
-	cmpld	cr6,r10,r9	    /* SRC and DST alignments match?  */
-
-	bne     cr6,L(copy_GE_32_unaligned_bwd)
-	beq     L(aligned_copy_bwd)
-
-	mtocrf	0x01,r0
-	clrldi	r0,r0,60
-
-/* Get the DST and SRC aligned to 16 bytes.  */
-1:
-	bf	31,2f
-	lbz	r6,-1(r4)
-	subi	r4,r4,1
-	stb	r6,-1(r11)
-	subi	r11,r11,1
-2:
-	bf	30,4f
-	lhz	r6,-2(r4)
-	subi	r4,r4,2
-	sth	r6,-2(r11)
-	subi	r11,r11,2
-4:
-	bf	29,8f
-	lwz	r6,-4(r4)
-	subi	r4,r4,4
-	stw	r6,-4(r11)
-	subi	r11,r11,4
-8:
-	bf	28,16f
-	ld	r6,-8(r4)
-	subi	r4,r4,8
-	std	r6,-8(r11)
-	subi	r11,r11,8
-16:
-	subf	r5,0,r5
-
-/* Main aligned copy loop. Copies 128 bytes at a time. */
-L(aligned_copy_bwd):
-	li	r6,-16
-	li	r7,-32
-	li	r8,-48
-	li	r9,-64
-	mtocrf	0x02,r5
-	srdi	r12,r5,7
-	cmpdi	r12,0
-	beq	L(aligned_tail_bwd)
-	lxvd2x	v6,r4,r6
-	lxvd2x	v7,r4,r7
-	mtctr	12
-	b	L(aligned_128loop_bwd)
-
-	.align  4
-L(aligned_128head_bwd):
-	/* for the 2nd + iteration of this loop. */
-	lxvd2x	v6,r4,r6
-	lxvd2x	v7,r4,r7
-L(aligned_128loop_bwd):
-	lxvd2x	v8,r4,r8
-	lxvd2x	v9,r4,r9
-	stxvd2x	v6,r11,r6
-	subi	r4,r4,64
-	stxvd2x	v7,r11,r7
-	stxvd2x	v8,r11,r8
-	stxvd2x	v9,r11,r9
-	lxvd2x	v6,r4,r6
-	lxvd2x	v7,r4,7
-	subi	r11,r11,64
-	lxvd2x	v8,r4,r8
-	lxvd2x	v9,r4,r9
-	subi	r4,r4,64
-	stxvd2x	v6,r11,r6
-	stxvd2x	v7,r11,r7
-	stxvd2x	v8,r11,r8
-	stxvd2x	v9,r11,r9
-	subi	r11,r11,64
-	bdnz	L(aligned_128head_bwd)
-
-L(aligned_tail_bwd):
-	mtocrf	0x01,r5
-	bf	25,32f
-	lxvd2x	v6,r4,r6
-	lxvd2x	v7,r4,r7
-	lxvd2x	v8,r4,r8
-	lxvd2x	v9,r4,r9
-	subi	r4,r4,64
-	stxvd2x	v6,r11,r6
-	stxvd2x	v7,r11,r7
-	stxvd2x	v8,r11,r8
-	stxvd2x	v9,r11,r9
-	subi	r11,r11,64
-32:
-	bf	26,16f
-	lxvd2x	v6,r4,r6
-	lxvd2x	v7,r4,r7
-	subi	r4,r4,32
-	stxvd2x	v6,r11,r6
-	stxvd2x	v7,r11,r7
-	subi	r11,r11,32
-16:
-	bf	27,8f
-	lxvd2x	v6,r4,r6
-	subi	r4,r4,16
-	stxvd2x	v6,r11,r6
-	subi	r11,r11,16
-8:
-	bf	28,4f
-	ld	r6,-8(r4)
-	subi	r4,r4,8
-	std     r6,-8(r11)
-	subi	r11,r11,8
-4:	/* Copies 4~7 bytes.  */
-	bf	29,L(tail2_bwd)
-	lwz	r6,-4(r4)
-	stw     r6,-4(r11)
-	bf      30,L(tail5_bwd)
-	lhz     r7,-6(r4)
-	sth     r7,-6(r11)
-	bflr	31
-	lbz     r8,-7(r4)
-	stb     r8,-7(r11)
-	/* Return original DST pointer.  */
-	blr
-
-/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32_bwd):
-	cmpldi	cr6,r5,8
-	mtocrf	0x01,r5
-	ble	cr6,L(copy_LE_8_bwd)
-
-	/* At least 9 bytes to go.  */
-	neg	r8,r4
-	andi.	r0,r8,3
-	cmpldi	cr1,r5,16
-	beq	L(copy_LT_32_aligned_bwd)
-
-	/* Force 4-byte alignment for SRC.  */
-	mtocrf	0x01,0
-	subf	r5,0,r5
-2:
-	bf	30,1f
-	lhz	r6,-2(r4)
-	subi	r4,r4,2
-	sth	r6,-2(r11)
-	subi	r11,r11,2
-1:
-	bf	31,L(end_4bytes_alignment_bwd)
-	lbz	6,-1(r4)
-	subi	r4,r4,1
-	stb	6,-1(r11)
-	subi	r11,r11,1
-
-	.align	4
-L(end_4bytes_alignment_bwd):
-	cmpldi	cr1,r5,16
-	mtocrf	0x01,r5
-
-L(copy_LT_32_aligned_bwd):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	r6,-4(r4)
-	lwz	r7,-8(r4)
-	stw	r6,-4(r11)
-	lwz	r8,-12(r4)
-	stw	r7,-8(r11)
-	lwz	r6,-16(r4)
-	subi	r4,r4,16
-	stw	r8,-12(r11)
-	stw	r6,-16(r11)
-	subi	r11,r11,16
-8:	/* Copy 8 bytes.  */
-	bf	28,L(tail4_bwd)
-	lwz	r6,-4(r4)
-	lwz	r7,-8(r4)
-	subi	r4,r4,8
-	stw	r6,-4(r11)
-	stw	r7,-8(r11)
-	subi	r11,r11,8
-
-	.align	4
-/* Copies 4~7 bytes.  */
-L(tail4_bwd):
-	bf	29,L(tail2_bwd)
-	lwz	6,-4(r4)
-	stw	6,-4(r11)
-	bf	30,L(tail5_bwd)
-	lhz	7,-6(r4)
-	sth	7,-6(r11)
-	bflr	31
-	lbz	8,-7(r4)
-	stb	8,-7(r11)
-	/* Return original DST pointer.  */
-	blr
-
-	.align	4
-/* Copies 2~3 bytes.  */
-L(tail2_bwd):
-	bf	30,1f
-	lhz	6,-2(r4)
-	sth	6,-2(r11)
-	bflr	31
-	lbz	7,-3(r4)
-	stb	7,-3(r11)
-	blr
-
-	.align	4
-L(tail5_bwd):
-	bflr	31
-	lbz	6,-5(r4)
-	stb	6,-5(r11)
-	blr
-
-	.align	4
-1:
-	bflr	31
-	lbz	6,-1(r4)
-	stb	6,-1(r11)
-	/* Return original DST pointer.  */
-	blr
-
-
-/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8_bwd):
-	bne	cr6,L(tail4_bwd)
-
-	/* Though we could've used ld/std here, they are still
-	   slow for unaligned cases.  */
-	lwz	6,-8(r4)
-	lwz	7,-4(r4)
-	stw	6,-8(r11)
-	stw	7,-4(r11)
-	blr
-
-
-/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-   SRC is not.	Use aligned quadword loads from SRC, shifted to realign
-   the data, allowing for aligned DST stores.  */
-	.align	4
-L(copy_GE_32_unaligned_bwd):
-	andi.	r10,r11,15      /* Check alignment of DST against 16 bytes..  */
-	srdi	r9,r5,4		/* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_unaligned_cont_bwd)
-
-	/* DST is not quadword aligned and r10 holds the address masked to
-           compare alignments.  */
-	mtocrf	0x01,r10
-	subf	r5,r10,r5
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:
-	bf	31,2f
-	lbz	r6,-1(r4)
-	subi	r4,r4,1
-	stb	r6,-1(r11)
-	subi	r11,r11,1
-2:
-	bf	30,4f
-	lhz	r6,-2(r4)
-	subi	r4,r4,2
-	sth	r6,-2(r11)
-	subi	r11,r11,2
-4:
-	bf	29,8f
-	lwz	r6,-4(r4)
-	subi	r4,r4,4
-	stw	r6,-4(r11)
-	subi	r11,r11,4
-8:
-	bf	28,0f
-	ld	r6,-8(r4)
-	subi	r4,r4,8
-	std	r6,-8(r11)
-	subi	r11,r11,8
-0:
-	srdi	r9,r5,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont_bwd):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrldi	r10,r5,60
-	li	r6,-16	      /* Index for 16-bytes offsets.  */
-	li	r7,-32	      /* Index for 32-bytes offsets.  */
-	cmpldi	cr1,10,0
-	srdi	r8,r5,5	      /* Setup the loop counter.  */
-	mtocrf	0x01,9
-	cmpldi	cr6,r9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v5,r0,r4
-#else
-	lvsl	v5,r0,r4
-#endif
-	lvx	v3,0,r4
-	li	r0,0
-	bf	31,L(setup_unaligned_loop_bwd)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop.  */
-	lvx	v4,r4,r6
-#ifdef __LITTLE_ENDIAN__
-	vperm	v6,v3,v4,v5
-#else
-	vperm	v6,v4,v3,v5
-#endif
-	subi	r4,r4,16
-	stvx	v6,r11,r6
-	subi	r11,r11,16
-	vor	v3,v4,v4
-	clrrdi	r0,r4,60
-
-L(setup_unaligned_loop_bwd):
-	mtctr	r8
-	ble	cr6,L(end_unaligned_loop_bwd)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align	4
-L(unaligned_loop_bwd):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	v4,r4,r6
-#ifdef __LITTLE_ENDIAN__
-	vperm	v6,v3,v4,v5
-#else
-	vperm	v6,v4,v3,v5
-#endif
-	lvx	v3,r4,r7
-#ifdef __LITTLE_ENDIAN__
-	vperm	v10,v4,v3,v5
-#else
-	vperm	v10,v3,v4,v5
-#endif
-	subi	r4,r4,32
-	stvx	v6,r11,r6
-	stvx	v10,r11,r7
-	subi	r11,r11,32
-	bdnz	L(unaligned_loop_bwd)
-
-	clrrdi	r0,r4,60
-
-	.align	4
-L(end_unaligned_loop_bwd):
-
-	/* Check for tail bytes.  */
-	mtocrf	0x01,r5
-	beqlr	cr1
-
-	add	r4,r4,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-	/* Copy 8 bytes.  */
-	bf	28,4f
-	lwz	r6,-4(r4)
-	lwz	r7,-8(r4)
-	subi	r4,r4,8
-	stw	r6,-4(r11)
-	stw	r7,-8(r11)
-	subi	r11,r11,8
-4:	/* Copy 4~7 bytes.  */
-	bf	29,L(tail2_bwd)
-	lwz	r6,-4(r4)
-	stw	r6,-4(r11)
-	bf	30,L(tail5_bwd)
-	lhz	r7,-6(r4)
-	sth	r7,-6(r11)
-	bflr	31
-	lbz	r8,-7(r4)
-	stb	r8,-7(r11)
-	/* Return original DST pointer.  */
-	blr
-END_GEN_TB (MEMMOVE, TB_TOCLESS)
-libc_hidden_builtin_def (memmove)
-
-
-/* void bcopy(const void *src [r3], void *dest [r4], size_t n [r5])
-   Implemented in this file to avoid linker create a stub function call
-   in the branch to '_memmove'.  */
-ENTRY (__bcopy)
-	mr	r6,r3
-	mr	r3,r4
-	mr	r4,r6
-	b	L(_memmove)
-END (__bcopy)
-weak_alias (__bcopy, bcopy)
diff --git a/sysdeps/powerpc/powerpc64/power7/mempcpy.S b/sysdeps/powerpc/powerpc64/power7/mempcpy.S
deleted file mode 100644
index 4e15d1e40c..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/mempcpy.S
+++ /dev/null
@@ -1,472 +0,0 @@
-/* Optimized mempcpy implementation for POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-
-/* __ptr_t [r3] __mempcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
-    Returns 'dst' + 'len'.  */
-
-#ifndef MEMPCPY
-# define MEMPCPY __mempcpy
-#endif
-	.machine  power7
-EALIGN (MEMPCPY, 5, 0)
-	CALL_MCOUNT 3
-
-	cmpldi	cr1,5,31
-	neg	0,3
-	std	3,-16(1)
-	std	31,-8(1)
-	cfi_offset(31,-8)
-	ble	cr1,L(copy_LT_32)   /* If move < 32 bytes use short move
-				       code.  */
-
-	andi.	11,3,7	      /* Check alignment of DST.  */
-
-
-	clrldi	10,4,61	      /* Check alignment of SRC.  */
-	cmpld	cr6,10,11     /* SRC and DST alignments match?  */
-	mr	12,4
-	mr	31,5
-	bne	cr6,L(copy_GE_32_unaligned)
-
-	srdi	9,5,3	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_aligned_cont)
-
-	clrldi	0,0,61
-	mtcrf	0x01,0
-	subf	31,0,5
-
-	/* Get the SRC aligned to 8 bytes.  */
-
-1:	bf	31,2f
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-2:	bf	30,4f
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-4:	bf	29,0f
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-0:
-	clrldi	10,12,61      /* Check alignment of SRC again.  */
-	srdi	9,31,3	      /* Number of full doublewords remaining.  */
-
-L(copy_GE_32_aligned_cont):
-
-	clrldi	11,31,61
-	mtcrf	0x01,9
-
-	srdi	8,31,5
-	cmpldi	cr1,9,4
-	cmpldi	cr6,11,0
-	mr	11,12
-
-	/* Copy 1~3 doublewords so the main loop starts
-	at a multiple of 32 bytes.  */
-
-	bf	30,1f
-	ld	6,0(12)
-	ld	7,8(12)
-	addi	11,12,16
-	mtctr	8
-	std	6,0(3)
-	std	7,8(3)
-	addi	10,3,16
-	bf	31,4f
-	ld	0,16(12)
-	std	0,16(3)
-	blt	cr1,3f
-	addi	11,12,24
-	addi	10,3,24
-	b	4f
-
-	.align	4
-1:	/* Copy 1 doubleword and set the counter.  */
-	mr	10,3
-	mtctr	8
-	bf	31,4f
-	ld	6,0(12)
-	addi	11,12,8
-	std	6,0(3)
-	addi	10,3,8
-
-	/* Main aligned copy loop. Copies 32-bytes at a time.  */
-	.align	4
-4:
-	ld	6,0(11)
-	ld	7,8(11)
-	ld	8,16(11)
-	ld	0,24(11)
-	addi	11,11,32
-
-	std	6,0(10)
-	std	7,8(10)
-	std	8,16(10)
-	std	0,24(10)
-	addi	10,10,32
-	bdnz	4b
-3:
-
-	/* Check for tail bytes.  */
-	rldicr	0,31,0,60
-	mtcrf	0x01,31
-	beq	cr6,0f
-
-.L9:
-	add	3,3,0
-	add	12,12,0
-
-	/*  At this point we have a tail of 0-7 bytes and we know that the
-	destination is doubleword-aligned.  */
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	ld	31,-8(1)
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-	/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32):
-	cmpldi	cr6,5,8
-	mr	12,4
-	mtcrf	0x01,5
-	ble	cr6,L(copy_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	8,4
-	clrrdi	11,4,2
-	andi.	0,8,3
-	cmpldi	cr1,5,16
-	mr	10,5
-	beq	L(copy_LT_32_aligned)
-
-	/* Force 4-bytes alignment for SRC.  */
-	mtocrf  0x01,0
-	subf	10,0,5
-2:	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	bf	31,L(end_4bytes_alignment)
-
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-
-	.align	4
-L(end_4bytes_alignment):
-	cmpldi	cr1,10,16
-	mtcrf	0x01,10
-
-L(copy_LT_32_aligned):
-	/* At least 6 bytes to go, and SRC is word-aligned.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	lwz	6,0(12)
-	lwz	7,4(12)
-	stw	6,0(3)
-	lwz	8,8(12)
-	stw	7,4(3)
-	lwz	6,12(12)
-	addi	12,12,16
-	stw	8,8(3)
-	stw	6,12(3)
-	addi	3,3,16
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz	6,0(12)
-	lwz	7,4(12)
-	addi	12,12,8
-	stw	6,0(3)
-	stw	7,4(3)
-	addi	3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2-3 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	sth	6,0(3)
-	bf	31,0f
-	lbz	7,2(12)
-	stb	7,2(3)
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-	.align	4
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8):
-	bne	cr6,4f
-
-	/* Though we could've used ld/std here, they are still
-	slow for unaligned cases.  */
-
-	lwz	6,0(4)
-	lwz	7,4(4)
-	stw	6,0(3)
-	stw	7,4(3)
-	ld	3,-16(1)      /* Return DST + LEN pointer.  */
-	add	3,3,5
-	blr
-
-	.align	4
-4:	/* Copies 4~7 bytes.  */
-	bf	29,2b
-
-	lwz	6,0(4)
-	stw	6,0(3)
-	bf	30,5f
-	lhz	7,4(4)
-	sth	7,4(3)
-	bf	31,0f
-	lbz	8,6(4)
-	stb	8,6(3)
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-	.align	4
-5:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,4(4)
-	stb	6,4(3)
-
-0:	/* Return DST + LEN pointer.  */
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-	/* Handle copies of 32+ bytes where DST is aligned (to quadword) but
-	SRC is not.  Use aligned quadword loads from SRC, shifted to realign
-	the data, allowing for aligned DST stores.  */
-	.align	4
-L(copy_GE_32_unaligned):
-	clrldi	0,0,60	      /* Number of bytes until the 1st
-				 quadword.  */
-	andi.	11,3,15	      /* Check alignment of DST (against
-				 quadwords).  */
-	srdi	9,5,4	      /* Number of full quadwords remaining.  */
-
-	beq	L(copy_GE_32_unaligned_cont)
-
-	/* SRC is not quadword aligned, get it aligned.  */
-
-	mtcrf	0x01,0
-	subf	31,0,5
-
-	/* Vector instructions work best when proper alignment (16-bytes)
-	is present.  Move 0~15 bytes as needed to get DST quadword-aligned.  */
-1:	/* Copy 1 byte.  */
-	bf	31,2f
-
-	lbz	6,0(12)
-	addi	12,12,1
-	stb	6,0(3)
-	addi	3,3,1
-2:	/* Copy 2 bytes.  */
-	bf	30,4f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-4:	/* Copy 4 bytes.  */
-	bf	29,8f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-8:	/* Copy 8 bytes.  */
-	bf	28,0f
-
-	ld	6,0(12)
-	addi	12,12,8
-	std	6,0(3)
-	addi	3,3,8
-0:
-	clrldi	10,12,60      /* Check alignment of SRC.  */
-	srdi	9,31,4	      /* Number of full quadwords remaining.  */
-
-	/* The proper alignment is present, it is OK to copy the bytes now.  */
-L(copy_GE_32_unaligned_cont):
-
-	/* Setup two indexes to speed up the indexed vector operations.  */
-	clrldi	11,31,60
-	li	6,16	      /* Index for 16-bytes offsets.  */
-	li	7,32	      /* Index for 32-bytes offsets.  */
-	cmpldi	cr1,11,0
-	srdi	8,31,5	      /* Setup the loop counter.  */
-	mr	10,3
-	mr	11,12
-	mtcrf	0x01,9
-	cmpldi	cr6,9,1
-#ifdef __LITTLE_ENDIAN__
-	lvsr    5,0,12
-#else
-	lvsl    5,0,12
-#endif
-	lvx	3,0,12
-	bf	31,L(setup_unaligned_loop)
-
-	/* Copy another 16 bytes to align to 32-bytes due to the loop .  */
-	lvx	4,12,6
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	addi	11,12,16
-	addi	10,3,16
-	stvx	6,0,3
-	vor	3,4,4
-
-L(setup_unaligned_loop):
-	mtctr	8
-	ble	cr6,L(end_unaligned_loop)
-
-	/* Copy 32 bytes at a time using vector instructions.  */
-	.align	4
-L(unaligned_loop):
-
-	/* Note: vr6/vr10 may contain data that was already copied,
-	but in order to get proper alignment, we may have to copy
-	some portions again. This is faster than having unaligned
-	vector instructions though.  */
-
-	lvx	4,11,6	      /* vr4 = r11+16.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   6,4,3,5
-#else
-	vperm   6,3,4,5
-#endif
-	lvx	3,11,7	      /* vr3 = r11+32.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm   10,3,4,5
-#else
-	vperm   10,4,3,5
-#endif
-	addi	11,11,32
-	stvx	6,0,10
-	stvx	10,10,6
-	addi	10,10,32
-
-	bdnz	L(unaligned_loop)
-
-	.align	4
-L(end_unaligned_loop):
-
-	/* Check for tail bytes.  */
-	rldicr	0,31,0,59
-	mtcrf	0x01,31
-	beq	cr1,0f
-
-	add	3,3,0
-	add	12,12,0
-
-	/*  We have 1~15 tail bytes to copy, and DST is quadword aligned.  */
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	lwz	6,0(12)
-	lwz	7,4(12)
-	addi	12,12,8
-	stw	6,0(3)
-	stw	7,4(3)
-	addi	3,3,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	lwz	6,0(12)
-	addi	12,12,4
-	stw	6,0(3)
-	addi	3,3,4
-2:	/* Copy 2~3 bytes.  */
-	bf	30,1f
-
-	lhz	6,0(12)
-	addi	12,12,2
-	sth	6,0(3)
-	addi	3,3,2
-1:	/* Copy 1 byte.  */
-	bf	31,0f
-
-	lbz	6,0(12)
-	stb	6,0(3)
-0:	/* Return DST + LEN pointer.  */
-	ld	31,-8(1)
-	ld	3,-16(1)
-	add	3,3,5
-	blr
-
-END_GEN_TB (MEMPCPY,TB_TOCLESS)
-libc_hidden_def (__mempcpy)
-weak_alias (__mempcpy, mempcpy)
-libc_hidden_builtin_def (mempcpy)
diff --git a/sysdeps/powerpc/powerpc64/power7/memrchr.S b/sysdeps/powerpc/powerpc64/power7/memrchr.S
deleted file mode 100644
index 4276768915..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memrchr.S
+++ /dev/null
@@ -1,201 +0,0 @@
-/* Optimized memrchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memrchr (char *s [r3], int byte [r4], int size [r5])  */
-
-#ifndef MEMRCHR
-# define MEMRCHR __memrchr
-#endif
-	.machine  power7
-ENTRY (MEMRCHR)
-	CALL_MCOUNT 3
-	add	r7,r3,r5      /* Calculate the last acceptable address.  */
-	neg	r0,r7
-	addi	r7,r7,-1
-	mr	r10,r3
-	clrrdi	r6,r7,7
-	li	r9,3<<5
-	dcbt	r9,r6,8       /* Stream hint, decreasing addresses.  */
-
-	/* Replicate BYTE to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi  r4,r4,32,0
-	li	r6,-8
-	li	r9,-1
-	rlwinm	r0,r0,3,26,28 /* Calculate padding.  */
-	clrrdi	r8,r7,3
-	srd	r9,r9,r0
-	cmpldi	r5,32
-	clrrdi	r0,r10,3
-	ble	L(small_range)
-
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,0,r8
-#else
-	ldbrx	r12,0,r8      /* Load reversed doubleword from memory.  */
-#endif
-	cmpb	r3,r12,r4     /* Check for BYTE in DWORD1.  */
-	and	r3,r3,r9
-	cmpldi	cr7,r3,0      /* If r3 == 0, no BYTEs have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-	bf	28,L(loop_setup)
-
-	/* Handle DWORD2 of pair.  */
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,r8,r6
-#else
-	ldbrx	r12,r8,r6
-#endif
-	addi	r8,r8,-8
-	cmpb	r3,r12,r4
-	cmpldi	cr7,r3,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last dword we want to read in the loop below is the one
-	   containing the first byte of the string, ie. the dword at
-	   s & ~7, or r0.  The first dword read is at r8 - 8, we
-	   read 2 * cnt dwords, so the last dword read will be at
-	   r8 - 8 - 16 * cnt + 8.  Solving for cnt gives
-	   cnt = (r8 - r0) / 16  */
-	sub	r5,r8,r0
-	addi	r8,r8,-8
-	srdi	r9,r5,4       /* Number of loop iterations.  */
-	mtctr	r9	      /* Setup the counter.  */
-
-	/* Main loop to look for BYTE backwards in the string.
-	   FIXME: Investigate whether 32 byte align helps with this
-	   9 instruction loop.  */
-	.align	5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,0,r8
-	ldx	r11,r8,r6
-#else
-	ldbrx	r12,0,r8
-	ldbrx	r11,r8,r6
-#endif
-	cmpb	r3,r12,r4
-	cmpb	r9,r11,r4
-	or	r5,r9,r3      /* Merge everything in one doubleword.  */
-	cmpldi	cr7,r5,0
-	bne	cr7,L(found)
-	addi	r8,r8,-16
-	bdnz	L(loop)
-
-	/* We may have one more word to read.  */
-	cmpld	r8,r0
-	bnelr
-
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,0,r8
-#else
-	ldbrx	r12,0,r8
-#endif
-	cmpb	r3,r12,r4
-	cmpldi	cr7,r3,0
-	bne	cr7,L(done)
-	blr
-
-	.align	4
-L(found):
-	/* OK, one (or both) of the dwords contains BYTE.  Check
-	   the first dword.  */
-	cmpldi	cr6,r3,0
-	bne	cr6,L(done)
-
-	/* BYTE must be in the second word.  Adjust the address
-	   again and move the result of cmpb to r3 so we can calculate the
-	   pointer.  */
-
-	mr	r3,r9
-	addi	r8,r8,-8
-
-	/* r3 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as BYTE in the original
-	   word from the string.  Use that to calculate the pointer.
-	   We need to make sure BYTE is *before* the end of the
-	   range.  */
-L(done):
-	cntlzd	r9,r3	      /* Count leading zeros before the match.  */
-	cmpld	r8,r0         /* Are we on the last word?  */
-	srdi	r6,r9,3	      /* Convert leading zeros to bytes.  */
-	addi	r0,r6,-7
-	sub	r3,r8,r0
-	cmpld	cr7,r3,r10
-	bnelr
-	bgelr	cr7
-	li	r3,0
-	blr
-
-	.align	4
-L(null):
-	li	r3,0
-	blr
-
-/* Deals with size <= 32.  */
-	.align	4
-L(small_range):
-	cmpldi	r5,0
-	beq	L(null)
-
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,0,r8
-#else
-	ldbrx	r12,0,r8      /* Load reversed doubleword from memory.  */
-#endif
-	cmpb	r3,r12,r4     /* Check for BYTE in DWORD1.  */
-	and	r3,r3,r9
-	cmpldi	cr7,r3,0
-	bne	cr7,L(done)
-
-	/* Are we done already?  */
-	cmpld	r8,r0
-	addi	r8,r8,-8
-	beqlr
-
-	.align	5
-L(loop_small):
-#ifdef __LITTLE_ENDIAN__
-	ldx	r12,0,r8
-#else
-	ldbrx	r12,0,r8
-#endif
-	cmpb	r3,r12,r4
-	cmpld	r8,r0
-	cmpldi	cr7,r3,0
-	bne	cr7,L(done)
-	addi	r8,r8,-8
-	bne	L(loop_small)
-	blr
-
-END (MEMRCHR)
-weak_alias (__memrchr, memrchr)
-libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/memset.S b/sysdeps/powerpc/powerpc64/power7/memset.S
deleted file mode 100644
index 21933c0672..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/memset.S
+++ /dev/null
@@ -1,399 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER7.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.  */
-
-#ifndef MEMSET
-# define MEMSET memset
-#endif
-	.machine power7
-EALIGN (MEMSET, 5, 0)
-	CALL_MCOUNT 3
-
-L(_memset):
-	cmpldi	cr7,5,31
-	cmpldi	cr6,5,8
-	mr	10,3
-
-	/* Replicate byte to word.  */
-	insrdi	4,4,8,48
-	insrdi	4,4,16,32
-	ble	cr6,L(small)	/* If length <= 8, use short copy code.  */
-
-	neg	0,3
-	ble	cr7,L(medium)	/* If length < 32, use medium copy code.  */
-
-	andi.	11,10,7		/* Check alignment of SRC.  */
-	insrdi	4,4,32,0	/* Replicate word to double word.  */
-
-	mr	12,5
-	beq	L(big_aligned)
-
-	clrldi	0,0,61
-	mtocrf	0x01,0
-	subf	5,0,5
-
-	/* Get DST aligned to 8 bytes.  */
-1:	bf	31,2f
-
-	stb	4,0(10)
-	addi	10,10,1
-2:	bf	30,4f
-
-	sth	4,0(10)
-	addi	10,10,2
-4:	bf	29,L(big_aligned)
-
-	stw	4,0(10)
-	addi	10,10,4
-
-	.align	4
-L(big_aligned):
-
-	cmpldi	cr5,5,255
-	li	0,32
-	dcbtst	0,10
-	cmpldi	cr6,4,0
-	srdi	9,5,3	/* Number of full doublewords remaining.  */
-	crand	27,26,21
-	mtocrf	0x01,9
-	bt	27,L(huge)
-
-	/* From this point on, we'll copy 32+ bytes and the value
-	   isn't 0 (so we can't use dcbz).  */
-
-	srdi	8,5,5
-	clrldi	11,5,61
-	cmpldi	cr6,11,0
-	cmpldi	cr1,9,4
-	mtctr	8
-
-	/* Copy 1~3 doublewords so the main loop starts
-	at a multiple of 32 bytes.  */
-
-	bf	30,1f
-
-	std	4,0(10)
-	std	4,8(10)
-	addi	10,10,16
-	bf	31,L(big_loop)
-
-	std	4,0(10)
-	addi	10,10,8
-	mr	12,10
-	blt	cr1,L(tail_bytes)
-	b	L(big_loop)
-
-	.align	4
-1:	/* Copy 1 doubleword.  */
-	bf	31,L(big_loop)
-
-	std	4,0(10)
-	addi	10,10,8
-
-	/* Main aligned copy loop.  Copies 32-bytes at a time and
-	   ping-pong through r10 and r12 to avoid AGEN delays.  */
-	.align	4
-L(big_loop):
-	addi	12,10,32
-	std	4,0(10)
-	std	4,8(10)
-	std	4,16(10)
-	std	4,24(10)
-	bdz	L(tail_bytes)
-
-	addi	10,10,64
-	std	4,0(12)
-	std	4,8(12)
-	std	4,16(12)
-	std	4,24(12)
-	bdnz	L(big_loop)
-
-	mr	12,10
-	b	L(tail_bytes)
-
-	.align	4
-L(tail_bytes):
-
-	/* Check for tail bytes.  */
-	beqlr	cr6
-
-	clrldi	0,5,61
-	mtocrf	0x01,0
-
-	/*  At this point we have a tail of 0-7 bytes and we know that the
-	destination is doubleword-aligned.  */
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	stw	4,0(12)
-	addi	12,12,4
-2:	/* Copy 2 bytes.  */
-	bf	30,1f
-
-	sth	4,0(12)
-	addi	12,12,2
-1:	/* Copy 1 byte.  */
-	bflr	31
-
-	stb	4,0(12)
-	blr
-
-	/* Special case when value is 0 and we have a long length to deal
-	   with.  Use dcbz to zero out 128-bytes at a time.  Before using
-	   dcbz though, we need to get the destination 128-bytes aligned.  */
-	.align	4
-L(huge):
-	andi.	11,10,127
-	neg	0,10
-	beq	L(huge_aligned)
-
-	clrldi	0,0,57
-	subf	5,0,5
-	srdi	0,0,3
-	mtocrf	0x01,0
-
-	/* Get DST aligned to 128 bytes.  */
-8:	bf	28,4f
-
-	std	4,0(10)
-	std	4,8(10)
-	std	4,16(10)
-	std	4,24(10)
-	std	4,32(10)
-	std	4,40(10)
-	std	4,48(10)
-	std	4,56(10)
-	addi	10,10,64
-	.align	4
-4:	bf	29,2f
-
-	std	4,0(10)
-	std	4,8(10)
-	std	4,16(10)
-	std	4,24(10)
-	addi	10,10,32
-	.align	4
-2:	bf	30,1f
-
-	std	4,0(10)
-	std	4,8(10)
-	addi	10,10,16
-	.align	4
-1:	bf	31,L(huge_aligned)
-
-	std	4,0(10)
-	addi	10,10,8
-
-
-L(huge_aligned):
-	srdi	8,5,7
-	clrldi	11,5,57
-	cmpldi	cr6,11,0
-	mtctr	8
-
-	.align	4
-L(huge_loop):
-	dcbz	0,10
-	addi	10,10,128
-	bdnz	L(huge_loop)
-
-	/* Check how many bytes are still left.  */
-	beqlr	cr6
-
-	subf	9,3,10
-	subf	5,9,12
-	srdi	8,5,3
-	cmpldi	cr6,8,0
-	mtocrf	0x01,8
-
-	/* We have a tail o 1~127 bytes.  Copy up to 15 doublewords for
-	speed.  We'll handle the resulting tail bytes later.  */
-	beq	cr6,L(tail)
-
-8:	bf	28,4f
-
-	std	4,0(10)
-	std	4,8(10)
-	std	4,16(10)
-	std	4,24(10)
-	std	4,32(10)
-	std	4,40(10)
-	std	4,48(10)
-	std	4,56(10)
-	addi	10,10,64
-	.align	4
-4:	bf	29,2f
-
-	std	4,0(10)
-	std	4,8(10)
-	std	4,16(10)
-	std	4,24(10)
-	addi	10,10,32
-	.align	4
-2:	bf	30,1f
-
-	std	4,0(10)
-	std	4,8(10)
-	addi	10,10,16
-	.align	4
-1:	bf	31,L(tail)
-
-	std	4,0(10)
-	addi	10,10,8
-
-	/* Handle the rest of the tail bytes here.  */
-L(tail):
-	mtocrf	0x01,5
-
-	.align	4
-4:	bf	29,2f
-
-	stw	4,0(10)
-	addi	10,10,4
-	.align	4
-2:	bf	30,1f
-
-	sth	4,0(10)
-	addi	10,10,2
-	.align	4
-1:	bflr	31
-
-	stb	4,0(10)
-	blr
-
-	/* Expanded tree to copy tail bytes without increments.  */
-	.align	4
-L(copy_tail):
-	bf	29,L(FXX)
-
-	stw	4,0(10)
-	bf	30,L(TFX)
-
-	sth	4,4(10)
-	bflr	31
-
-	stb	4,6(10)
-	blr
-
-	.align	4
-L(FXX):	bf	30,L(FFX)
-
-	sth	4,0(10)
-	bflr	31
-
-	stb	4,2(10)
-	blr
-
-	.align	4
-L(TFX):	bflr	31
-
-	stb	4,4(10)
-	blr
-
-	.align	4
-L(FFX):	bflr	31
-
-	stb	4,0(10)
-	blr
-
-	/* Handle copies of 9~31 bytes.  */
-	.align	4
-L(medium):
-	/* At least 9 bytes to go.  */
-	andi.	11,10,3
-	clrldi	0,0,62
-	beq	L(medium_aligned)
-
-	/* Force 4-bytes alignment for DST.  */
-	mtocrf	0x01,0
-	subf	5,0,5
-1:	/* Copy 1 byte.  */
-	bf	31,2f
-
-	stb	4,0(10)
-	addi	10,10,1
-2:	/* Copy 2 bytes.  */
-	bf	30,L(medium_aligned)
-
-	sth	4,0(10)
-	addi	10,10,2
-
-	.align	4
-L(medium_aligned):
-	/* At least 6 bytes to go, and DST is word-aligned.  */
-	cmpldi	cr1,5,16
-	mtocrf	0x01,5
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	stw	4,0(10)
-	stw	4,4(10)
-	stw	4,8(10)
-	stw	4,12(10)
-	addi	10,10,16
-8:	/* Copy 8 bytes.  */
-	bf	28,4f
-
-	stw	4,0(10)
-	stw	4,4(10)
-	addi	10,10,8
-4:	/* Copy 4 bytes.  */
-	bf	29,2f
-
-	stw	4,0(10)
-	addi	10,10,4
-2:	/* Copy 2-3 bytes.  */
-	bf	30,1f
-
-	sth	4,0(10)
-	addi	10,10,2
-1:	/* Copy 1 byte.  */
-	bflr	31
-
-	stb	4,0(10)
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(small):
-	mtocrf	0x01,5
-	bne	cr6,L(copy_tail)
-
-	stw	4,0(10)
-	stw	4,4(10)
-	blr
-
-END_GEN_TB (MEMSET,TB_TOCLESS)
-libc_hidden_builtin_def (memset)
-
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
-ENTRY (__bzero)
-	CALL_MCOUNT 3
-	mr	r5,r4
-	li	r4,0
-	b	L(_memset)
-END (__bzero)
-#ifndef __bzero
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/multiarch/Implies b/sysdeps/powerpc/powerpc64/power7/multiarch/Implies
deleted file mode 100644
index bf5d6171a5..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power6/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power7/rawmemchr.S b/sysdeps/powerpc/powerpc64/power7/rawmemchr.S
deleted file mode 100644
index 48afb75943..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/rawmemchr.S
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Optimized rawmemchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] rawmemchr (void *s [r3], int c [r4])  */
-
-#ifndef RAWMEMCHR
-# define RAWMEMCHR __rawmemchr
-#endif
-	.machine  power7
-ENTRY (RAWMEMCHR)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi	r4,r4,32,0
-
-	/* Now r4 has a doubleword of c bytes.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	cmpb	r5,r12,r4     /* Compare each byte against c byte.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r5,r5,r6
-	sld	r5,r5,r6
-#else
-	sld	r5,r5,r6      /* Move left to discard ignored bits.  */
-	srd	r5,r5,r6      /* Bring the bits back as zeros.  */
-#endif
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c bytes have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle DWORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r5,r12,r4
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the byte-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu     r11,16(r8)
-	cmpb	r5,r12,r4
-	cmpb	r6,r11,r4
-	or	r7,r5,r6
-	cmpdi	cr7,r7,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the doublewords contains a 'c' byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The 'c' byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-	mr	r5,r6
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the 'c' byte in the original
-	   doubleword from the string.  Use that fact to find out what is
-	   the position of the byte inside the string.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntd	r0,r0	      /* Count trailing zeros.  */
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching char.  */
-	blr
-END (RAWMEMCHR)
-weak_alias (__rawmemchr,rawmemchr)
-libc_hidden_builtin_def (__rawmemchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/stpncpy.S b/sysdeps/powerpc/powerpc64/power7/stpncpy.S
deleted file mode 100644
index a346dd7e28..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/stpncpy.S
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Optimized stpncpy implementation for PowerPC64/POWER7.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STPNCPY
-#include <sysdeps/powerpc/powerpc64/power7/strncpy.S>
-
-weak_alias (__stpncpy, stpncpy)
-libc_hidden_def (__stpncpy)
-libc_hidden_builtin_def (stpncpy)
diff --git a/sysdeps/powerpc/powerpc64/power7/strcasecmp.S b/sysdeps/powerpc/powerpc64/power7/strcasecmp.S
deleted file mode 100644
index e856b8a593..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strcasecmp.S
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Optimized strcasecmp implementation for PowerPC64.
-   Copyright (C) 2011-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <locale-defines.h>
-
-/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] )
-
-   or if defined USE_IN_EXTENDED_LOCALE_MODEL:
-
-   int [r3] strcasecmp_l (const char *s1 [r3], const char *s2 [r4],
-                          __locale_t loc [r5]) */
-
-#ifndef STRCMP
-# define __STRCMP __strcasecmp
-# define STRCMP   strcasecmp
-#endif
-
-ENTRY (__STRCMP)
-#ifndef USE_IN_EXTENDED_LOCALE_MODEL
-	CALL_MCOUNT 2
-#else
-	CALL_MCOUNT 3
-#endif
-
-#define rRTN	r3	/* Return value */
-#define rSTR1	r5	/* 1st string */
-#define rSTR2	r4	/* 2nd string */
-#define rLOCARG	r5	/* 3rd argument: locale_t */
-#define rCHAR1	r6	/* Byte read from 1st string */
-#define rCHAR2	r7	/* Byte read from 2nd string */
-#define rADDR1	r8	/* Address of tolower(rCHAR1) */
-#define rADDR2	r12	/* Address of tolower(rCHAR2) */
-#define rLWR1	r8	/* Word tolower(rCHAR1) */
-#define rLWR2	r12	/* Word tolower(rCHAR2) */
-#define rTMP	r9
-#define rLOC	r11	/* Default locale address */
-
-	cmpd	cr7, r3, r4
-#ifndef USE_IN_EXTENDED_LOCALE_MODEL
-	ld 	rTMP, __libc_tsd_LOCALE@got@tprel(r2)
-	add 	rLOC, rTMP, __libc_tsd_LOCALE@tls
-	ld	rLOC, 0(rLOC)
-#else
-	mr	rLOC, rLOCARG
-#endif
-	ld	rLOC, LOCALE_CTYPE_TOLOWER(rLOC)
-	mr	rSTR1, rRTN
-	li	rRTN, 0
-	beqlr	cr7
-
-
-	/* Unrolling loop for POWER: loads are done with 'lbz' plus
-	offset and string descriptors are only updated in the end
-	of loop unrolling. */
-
-	lbz	rCHAR1, 0(rSTR1)	/* Load char from s1 */
-	lbz	rCHAR2, 0(rSTR2)	/* Load char from s2 */
-L(loop):
-	cmpdi	rCHAR1, 0		/* *s1 == '\0' ? */
-	sldi	rADDR1, rCHAR1, 2	/* Calculate address for tolower(*s1) */
-	sldi	rADDR2, rCHAR2, 2	/* Calculate address for tolower(*s2) */
-	lwzx	rLWR1, rLOC, rADDR1	/* Load tolower(*s1) */
-	lwzx	rLWR2, rLOC, rADDR2	/* Load tolower(*s2) */
-	cmpw	cr1, rLWR1, rLWR2	/* r = tolower(*s1) == tolower(*s2) ? */
-	crorc	4*cr1+eq,eq,4*cr1+eq	/* (*s1 != '\0') || (r == 1) */
-	beq	cr1, L(done)
-	lbz	rCHAR1, 1(rSTR1)
-	lbz	rCHAR2, 1(rSTR2)
-	cmpdi	rCHAR1, 0
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq	cr1, L(done)
-	lbz	rCHAR1, 2(rSTR1)
-	lbz	rCHAR2, 2(rSTR2)
-	cmpdi	rCHAR1, 0
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq	cr1, L(done)
-	lbz	rCHAR1, 3(rSTR1)
-	lbz	rCHAR2, 3(rSTR2)
-	cmpdi	rCHAR1, 0
-	/* Increment both string descriptors */
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq     cr1,L(done)
-	lbz	rCHAR1, 0(rSTR1)	/* Load char from s1 */
-	lbz	rCHAR2, 0(rSTR2)	/* Load char from s2 */
-	b	L(loop)
-L(done):
-	subf	r0, rLWR2, rLWR1
-	extsw	rRTN, r0
-	blr
-END (__STRCMP)
-
-weak_alias (__STRCMP, STRCMP)
-libc_hidden_builtin_def (__STRCMP)
diff --git a/sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S b/sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S
deleted file mode 100644
index c13c4ebcb8..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strcasecmp_l.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#define USE_IN_EXTENDED_LOCALE_MODEL
-#define STRCMP   strcasecmp_l
-#define __STRCMP __strcasecmp_l
-
-#include "strcasecmp.S"
diff --git a/sysdeps/powerpc/powerpc64/power7/strchr.S b/sysdeps/powerpc/powerpc64/power7/strchr.S
deleted file mode 100644
index a18e2e101c..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strchr.S
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Optimized strchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRCHR
-# define STRCHR strchr
-#endif
-
-/* int [r3] strchr (char *s [r3], int c [r4])  */
-	.machine  power7
-ENTRY (STRCHR)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-	cmpdi	cr7,r4,0
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-
-	beq	cr7,L(null_match)
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi  r4,r4,32,0
-
-	/* Now r4 has a doubleword of c bytes and r0 has
-	   a doubleword of null bytes.  */
-
-	cmpb	r10,r12,r4     /* Compare each byte against c byte.  */
-	cmpb	r11,r12,r0     /* Compare each byte against null byte.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-#else
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-#endif
-	or	r5,r10,r11    /* OR the results to speed things up.  */
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb    r10,r12,r4
-	cmpb	r11,r12,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r9,16(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	cmpb	r6,r9,r4
-	cmpb	r7,r9,r0
-	or	r12,r10,r11
-	or	r9,r6,r7
-	or	r5,r12,r9
-	cmpdi	cr7,r5,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the doublewords contains a c/null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c/null byte.  */
-
-	cmpdi	cr6,r12,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second doubleword.  Adjust the
-	   address again and move the result of cmpb to r10 so we can calculate
-	   the pointer.  */
-
-	mr	r10,r6
-	mr	r11,r7
-	addi	r8,r8,8
-
-	/* r10/r11 have the output of the cmpb instructions, that is,
-	   0xff in the same position as the c/null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r3,r10,-1
-	andc    r3,r3,r10
-	popcntd	r0,r3
-	addi    r4,r11,-1
-	andc    r4,r4,r11
-	cmpld	cr7,r3,r4
-	bgt	cr7,L(no_match)
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before c matches.  */
-	cmpld	cr7,r11,r10
-	bgt	cr7,L(no_match)
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching c byte
-				 or null in case c was not found.  */
-	blr
-
-	.align	4
-L(no_match):
-	li	r3,0
-	blr
-
-/* We are here because strchr was called with a null byte.  */
-	.align	4
-L(null_match):
-	/* r0 has a doubleword of null bytes.  */
-
-	cmpb	r5,r12,r0     /* Compare each byte against null bytes.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r5,r5,r6
-	sld	r5,r5,r6
-#else
-	sld	r5,r5,r6
-	srd	r5,r5,r6
-#endif
-	cmpdi	cr7,r5,0      /* If r10 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done_null)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop_null)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb    r5,r12,r0
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done_null)
-	b	L(loop_null)  /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop_null):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu     r11,16(r8)
-	cmpb	r5,r12,r0
-	cmpb	r10,r11,r0
-	or	r6,r5,r10
-	cmpdi	cr7,r6,0
-	beq	cr7,L(loop_null)
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done_null)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-
-	mr	r5,r10
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done_null):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching null byte.  */
-	blr
-END (STRCHR)
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/strchrnul.S b/sysdeps/powerpc/powerpc64/power7/strchrnul.S
deleted file mode 100644
index 27bc1f0682..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strchrnul.S
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Optimized strchrnul implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRCHRNUL
-# define STRCHRNUL __strchrnul
-#endif
-/* int [r3] strchrnul (char *s [r3], int c [r4])  */
-	.machine  power7
-ENTRY (STRCHRNUL)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi	r4,r4,32,0
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-
-	/* Now r4 has a doubleword of c bytes and r0 has
-	   a doubleword of null bytes.  */
-
-	cmpb	r10,r12,r0    /* Compare each byte against c byte.  */
-	cmpb	r9,r12,r4     /* Compare each byte against null byte.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and to bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	srd	r9,r9,r6
-	sld	r10,r10,r6
-	sld	r9,r9,r6
-#else
-	sld	r10,r10,r6
-	sld	r9,r9,r6
-	srd	r10,r10,r6
-	srd	r9,r9,r6
-#endif
-	or	r5,r9,r10     /* OR the results to speed things up.  */
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle DWORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r12,r4
-	or	r5,r9,r10
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu     r11,16(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r12,r4
-	cmpb	r6,r11,r0
-	cmpb	r7,r11,r4
-	or	r5,r9,r10
-	or	r10,r6,r7
-	or	r11,r5,r10
-	cmpdi	cr7,r11,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the doublewords contains a c/null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c/null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second doubleword.  Adjust the
-	   address again and move the result of cmpb to r5 so we can calculate
-	   the pointer.  */
-	mr	r5,r10
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the c/null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of matching c/null byte.  */
-	blr
-END (STRCHRNUL)
-weak_alias (STRCHRNUL, strchrnul)
-libc_hidden_builtin_def (STRCHRNUL)
diff --git a/sysdeps/powerpc/powerpc64/power7/strcmp.S b/sysdeps/powerpc/powerpc64/power7/strcmp.S
deleted file mode 100644
index 14e14f457e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strcmp.S
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Optimized strcmp implementation for Power7 using 'cmpb' instruction
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* The optimization is achieved here through cmpb instruction.
-   8byte aligned strings are processed with double word comparision
-   and unaligned strings are handled effectively with loop unrolling
-   technique  */
-
-#include <sysdep.h>
-
-#ifndef STRCMP
-# define STRCMP strcmp
-#endif
-
-/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
-
-	.machine	power7
-EALIGN (STRCMP, 4, 0)
-	CALL_MCOUNT 2
-
-	or r9, r3, r4
-	rldicl. r10, r9, 0, 61	/* are s1 and s2 8 byte aligned..?  */
-	bne cr0, L(process_unaligned_bytes)
-	li	r5, 0
-
-	.align 4
-/* process input parameters on double word aligned boundary  */
-L(unrollDword):
-	ld	r8,0(r3)
-	ld	r10,0(r4)
-	cmpb	r7,r8,r5
-	cmpdi	cr7,r7,0
-	mr	r9,r7
-	bne 	cr7,L(null_found)
-	cmpld	cr7,r8,r10
-	bne	cr7,L(different)
-
-	ld	r8,8(r3)
-	ld	r10,8(r4)
-	cmpb	r7,r8,r5
-	cmpdi	cr7,r7,0
-	mr	r9,r7
-	bne 	cr7,L(null_found)
-	cmpld	cr7,r8,r10
-	bne	cr7,L(different)
-
-	ld	r8,16(r3)
-	ld	r10,16(r4)
-	cmpb	r7,r8,r5
-	cmpdi	cr7,r7,0
-	mr	r9,r7
-	bne 	cr7,L(null_found)
-	cmpld	cr7,r8,r10
-	bne	cr7,L(different)
-
-	ld	r8,24(r3)
-	ld	r10,24(r4)
-	cmpb	r7,r8,r5
-	cmpdi	cr7,r7,0
-	mr	r9,r7
-	bne 	cr7,L(null_found)
-	cmpld	cr7,r8,r10
-	bne	cr7,L(different)
-
-	addi r3, r3, 32
-	addi r4, r4, 32
-	beq cr7, L(unrollDword)
-
-	.align 4
-L(null_found):
-#ifdef __LITTLE_ENDIAN__
-	neg	r7,r9
-	and	r9,r9,r7
-	li	r7,-1
-	cntlzd	r9,r9
-	subfic	r9,r9,71
-	sld	r9,r7,r9
-#else
-	cntlzd	r9,r9
-	li	r7,-1
-	addi	r9,r9,8
-	srd	r9,r7,r9
-#endif
-	or	r8,r8,r9
-	or	r10,r10,r9
-
-L(different):
-	cmpb	r9,r8,r10
-#ifdef __LITTLE_ENDIAN__
-	addi	r7,r9,1
-	andc	r9,r7,r9
-	cntlzd	r9,r9
-	subfic	r9,r9,63
-#else
-	not	r9,r9
-	cntlzd	r9,r9
-	subfic	r9,r9,56
-#endif
-	srd	r3,r8,r9
-	srd	r10,r10,r9
-	rldicl	r10,r10,0,56
-	rldicl	r3,r3,0,56
-	subf	r3,r10,r3
-	blr
-
-	.align 4
-L(process_unaligned_bytes):
-	lbz r9, 0(r3)		/* load byte from s1  */
-	lbz r10, 0(r4)		/* load byte from s2  */
-	cmpdi cr7, r9, 0	/* compare *s1 with NULL  */
-	beq cr7, L(diffOfNULL)	/* if *s1 is NULL , return *s1 - *s2  */
-	cmplw cr7, r9, r10	/* compare *s1 and *s2  */
-	bne cr7, L(ComputeDiff)	/* branch to compute difference and return  */
-
-	lbz r9, 1(r3)		/* load next byte from s1  */
-	lbz r10, 1(r4)		/* load next byte from s2  */
-	cmpdi cr7, r9, 0	/* compare *s1 with NULL  */
-	beq cr7, L(diffOfNULL)	/* if *s1 is NULL , return *s1 - *s2  */
-	cmplw cr7, r9, r10	/* compare *s1 and *s2  */
-	bne cr7, L(ComputeDiff)	/* branch to compute difference and return  */
-
-	lbz r9, 2(r3)		/* unroll 3rd byte here  */
-	lbz r10, 2(r4)
-	cmpdi cr7, r9, 0
-	beq cr7, L(diffOfNULL)
-	cmplw cr7, r9, r10
-	bne 7, L(ComputeDiff)
-
-	lbz r9, 3(r3)		/* unroll 4th byte now  */
-	lbz r10, 3(r4)
-	addi r3, r3, 4		/* increment s1 by unroll factor  */
-	cmpdi cr7, r9, 0
-	cmplw cr6, 9, r10
-	beq cr7, L(diffOfNULL)
-	addi r4, r4, 4		/* increment s2 by unroll factor  */
-	beq cr6, L(process_unaligned_bytes)	/* unroll byte processing  */
-
-	.align 4
-L(ComputeDiff):
-	extsw r9, r9
-	subf r10, r10, r9	/* compute s1 - s2  */
-	extsw r3, r10
-	blr			/* return  */
-
-	.align 4
-L(diffOfNULL):
-	li r9, 0
-	subf r10, r10, r9	/* compute s1 - s2  */
-	extsw r3, r10		/* sign extend result  */
-	blr			/* return  */
-
-END (STRCMP)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strlen.S b/sysdeps/powerpc/powerpc64/power7/strlen.S
deleted file mode 100644
index 63848c460c..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strlen.S
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Optimized strlen implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strlen (char *s [r3])  */
-
-#ifndef STRLEN
-# define STRLEN strlen
-#endif
-	.machine  power7
-ENTRY (STRLEN)
-	CALL_MCOUNT 1
-	dcbt	0,r3
-	clrrdi	r4,r3,3	      /* Align the address to doubleword boundary.  */
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-	li	r5,-1	      /* MASK = 0xffffffffffffffff.  */
-	ld	r12,0(r4)     /* Load doubleword from memory.  */
-#ifdef __LITTLE_ENDIAN__
-	sld	r5,r5,r6
-#else
-	srd	r5,r5,r6      /* MASK = MASK >> padding.  */
-#endif
-	orc	r9,r12,r5     /* Mask bits that are not part of the string.  */
-	cmpb	r10,r9,r0     /* Check for null bytes in DWORD1.  */
-	cmpdi	cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r4
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle DWORD2 of pair.  */
-	ldu	r12,8(r4)
-	cmpb	r10,r12,r0
-	cmpdi	cr7,r10,0
-	bne	cr7,L(done)
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-
-	ld	r12, 8(r4)
-	ldu	r11, 16(r4)
-	cmpb	r10,r12,r0
-	cmpb	r9,r11,r0
-	or	r8,r9,r10     /* Merge everything in one doubleword.  */
-	cmpdi	cr7,r8,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r10,0
-	addi	r4,r4,-8
-	bne	cr6,L(done)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   length.  */
-
-	mr	r10,r9
-	addi	r4,r4,8
-
-	/* r10 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the length.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi	r9, r10, -1   /* Form a mask from trailing zeros.  */
-	andc	r9, r9, r10
-	popcntd r0, r9	      /* Count the bits in the mask.  */
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	subf	r5,r3,r4
-	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r5,r0      /* Compute final length.  */
-	blr
-END (STRLEN)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc64/power7/strncmp.S b/sysdeps/powerpc/powerpc64/power7/strncmp.S
deleted file mode 100644
index d53b31be8e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strncmp.S
+++ /dev/null
@@ -1,227 +0,0 @@
-/* Optimized strcmp implementation for POWER7/PowerPC64.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRNCMP
-# define STRNCMP strncmp
-#endif
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3],
-		     const char *s2 [r4],
-		     size_t size [r5])  */
-
-EALIGN (STRNCMP,5,0)
-	CALL_MCOUNT 3
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rWORD3  r10
-#define rWORD4  r11
-#define rFEFE	r8	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	nop
-	or	rTMP,rSTR2,rSTR1
-	lis	r7F7F,0x7f7f
-	dcbt	0,rSTR2
-	nop
-	clrldi.	rTMP,rTMP,61
-	cmpldi	cr1,rN,0
-	lis	rFEFE,-0x101
-	bne	L(unaligned)
-/* We are doubleword aligned so set up for two loops.  first a double word
-   loop, then fall into the byte loop if any residual.  */
-	srdi.	rTMP,rN,3
-	clrldi	rN,rN,61
-	addi	rFEFE,rFEFE,-0x101
-	addi	r7F7F,r7F7F,0x7f7f
-	cmpldi	cr1,rN,0
-	beq	L(unaligned)
-
-	mtctr	rTMP
-	ld	rWORD1,0(rSTR1)
-	ld	rWORD2,0(rSTR2)
-	sldi	rTMP,rFEFE,32
-	insrdi	r7F7F,r7F7F,32,0
-	add	rFEFE,rFEFE,rTMP
-	b	L(g1)
-
-L(g0):
-	ldu	rWORD1,8(rSTR1)
-	bne	cr1,L(different)
-	ldu	rWORD2,8(rSTR2)
-L(g1):	add	rTMP,rFEFE,rWORD1
-	nor	rNEG,r7F7F,rWORD1
-	bdz	L(tail)
-	and.	rTMP,rTMP,rNEG
-	cmpd	cr1,rWORD1,rWORD2
-	beq	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	addi    rTMP2, rTMP, -1
-	beq	cr1, L(equal)
-	andc    rTMP2, rTMP2, rTMP
-	rldimi	rTMP2, rTMP2, 1, 0
-	and	rWORD2, rWORD2, rTMP2	/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	cmpd	cr1, rWORD1, rWORD2
-	beq	cr1, L(equal)
-	cmpb	rBITDIF, rWORD1, rWORD2	/* 0xff on equal bytes.  */
-	addi	rNEG, rBITDIF, 1
-	orc	rNEG, rNEG, rBITDIF	/* 0's below LS differing byte.  */
-	sldi	rNEG, rNEG, 8		/* 1's above LS differing byte.  */
-	andc	rWORD1, rWORD1, rNEG	/* mask off MS bytes.  */
-	andc	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt	L(highbit)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	cmpb	rBITDIF, rWORD1, rWORD2	/* 0xff on equal bytes.  */
-	addi	rNEG, rBITDIF, 1
-	orc	rNEG, rNEG, rBITDIF	/* 0's below LS differing byte.  */
-	sldi	rNEG, rNEG, 8		/* 1's above LS differing byte.  */
-	andc	rWORD1, rWORD1, rNEG	/* mask off MS bytes.  */
-	andc	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP,r7F7F,rWORD1
-	beq	cr1,L(equal)
-	add	rTMP,rTMP,r7F7F
-	xor.	rBITDIF,rWORD1,rWORD2
-	andc	rNEG,rNEG,rTMP
-	blt	L(highbit)
-	cntlzd	rBITDIF,rBITDIF
-	cntlzd	rNEG,rNEG
-	addi	rNEG,rNEG,7
-	cmpd	cr1,rNEG,rBITDIF
-	sub	rRTN,rWORD1,rWORD2
-	blt	cr1,L(equal)
-	sradi	rRTN,rRTN,63		/* must return an int.  */
-	ori	rRTN,rRTN,1
-	blr
-L(equal):
-	li	rRTN,0
-	blr
-
-L(different):
-	ld	rWORD1,-8(rSTR1)
-	xor.	rBITDIF,rWORD1,rWORD2
-	sub	rRTN,rWORD1,rWORD2
-	blt	L(highbit)
-	sradi	rRTN,rRTN,63
-	ori	rRTN,rRTN,1
-	blr
-L(highbit):
-	sradi	rRTN,rWORD2,63
-	ori	rRTN,rRTN,1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align	4
-L(tail):
-	and.	rTMP,rTMP,rNEG
-	cmpd	cr1,rWORD1,rWORD2
-	bne	L(endstring)
-	addi	rSTR1,rSTR1,8
-	bne	cr1,L(different)
-	addi	rSTR2,rSTR2,8
-	cmpldi	cr1,rN,0
-L(unaligned):
-	mtctr	rN
-	ble	cr1,L(ux)
-L(uz):
-	lbz	rWORD1,0(rSTR1)
-	lbz	rWORD2,0(rSTR2)
-	.align	4
-L(u1):
-	cmpdi	cr1,rWORD1,0
-	bdz	L(u4)
-	cmpd	rWORD1,rWORD2
-	beq	cr1,L(u4)
-	bne	L(u4)
-	lbzu	rWORD3,1(rSTR1)
-	lbzu	rWORD4,1(rSTR2)
-	cmpdi	cr1,rWORD3,0
-	bdz	L(u3)
-	cmpd	rWORD3,rWORD4
-	beq	cr1,L(u3)
-	bne	L(u3)
-	lbzu	rWORD1,1(rSTR1)
-	lbzu	rWORD2,1(rSTR2)
-	cmpdi	cr1,rWORD1,0
-	bdz	L(u4)
-	cmpd	rWORD1,rWORD2
-	beq	cr1,L(u4)
-	bne	L(u4)
-	lbzu	rWORD3,1(rSTR1)
-	lbzu	rWORD4,1(rSTR2)
-	cmpdi	cr1,rWORD3,0
-	bdz	L(u3)
-	cmpd	rWORD3,rWORD4
-	beq	cr1,L(u3)
-	bne	L(u3)
-	lbzu	rWORD1,1(rSTR1)
-	lbzu	rWORD2,1(rSTR2)
-	b	L(u1)
-
-L(u3):  sub	rRTN,rWORD3,rWORD4
-	blr
-L(u4):	sub	rRTN,rWORD1,rWORD2
-	blr
-L(ux):
-	li	rRTN,0
-	blr
-END (STRNCMP)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strncpy.S b/sysdeps/powerpc/powerpc64/power7/strncpy.S
deleted file mode 100644
index 0224f74898..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strncpy.S
+++ /dev/null
@@ -1,722 +0,0 @@
-/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* Implements the functions
-
-   char * [r3] strncpy (char *dst [r3], const char *src [r4], size_t n [r5])
-
-   AND
-
-   char * [r3] stpncpy (char *dst [r3], const char *src [r4], size_t n [r5])
-
-   The algorithm is as follows:
-   > if src and dest are 8 byte aligned, perform double word copy
-     else
-   > copy byte by byte on unaligned addresses.
-
-   The aligned comparison are made using cmpb instructions.  */
-
-/* The focus on optimization for performance improvements are as follows:
-   1. data alignment [gain from aligned memory access on read/write]
-   2. POWER7 gains performance with loop unrolling/unwinding
-      [gain by reduction of branch penalty].
-   3. The final pad with null bytes is done by calling an optimized
-      memset.  */
-
-#ifdef USE_AS_STPNCPY
-# ifndef STPNCPY
-#  define FUNC_NAME __stpncpy
-# else
-#  define FUNC_NAME STPNCPY
-# endif
-#else
-# ifndef STRNCPY
-#  define FUNC_NAME strncpy
-# else
-#  define FUNC_NAME STRNCPY
-# endif
-#endif  /* !USE_AS_STPNCPY  */
-
-#define		FRAMESIZE	(FRAME_MIN_SIZE+32)
-
-#ifndef MEMSET
-/* For builds with no IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define MEMSET   __GI_memset
-# else
-#  define MEMSET   memset
-# endif
-#endif
-
-	.machine  power7
-EALIGN(FUNC_NAME, 4, 0)
-	CALL_MCOUNT 3
-
-	mflr r0			/* load link register LR to r0  */
-	or r10, r3, r4		/* to verify source and destination  */
-	rldicl. r8, r10, 0, 61	/* is double word aligned .. ?  */
-
-	std r19, -8(r1)		/* save callers register , r19  */
-	std r18, -16(r1)	/* save callers register , r18  */
-	std r0, 16(r1)		/* store the link register  */
-	stdu r1, -FRAMESIZE(r1)	/* create the stack frame  */
-
-	mr r9, r3		/* save r3 into r9 for use  */
-	mr r18, r3		/* save r3 for retCode of strncpy  */
-	bne 0, L(unaligned)
-
-L(aligned):
-	srdi r11, r5, 3		/* compute count for CTR ; count = n/8  */
-	cmpldi cr7, r11, 3	/* if count > 4 ; perform unrolling 4 times  */
-	ble 7, L(update1)
-
-	ld r10, 0(r4)		/* load doubleWord from src  */
-	cmpb r8, r10, r8	/* compare src with NULL ,we read just now  */
-	cmpdi cr7, r8, 0	/* if cmpb returned NULL ; we continue  */
-	bne cr7, L(update3)
-
-	std r10, 0(r3)		/* copy doubleword at offset=0  */
-	ld r10, 8(r4)		/* load next doubleword from offset=8  */
-	cmpb r8, r10, r8	/* compare src with NULL , we read just now  */
-	cmpdi cr7, r8, 0	/* if cmpb returned NULL ; we continue  */
-	bne 7,L(HopBy8)
-
-	addi r8, r11, -4
-	mr r7, r3
-	srdi r8, r8, 2
-	mr r6, r4
-	addi r8, r8, 1
-	li r12, 0
-	mtctr r8
-	b L(dwordCopy)
-
-	.p2align 4
-L(dWordUnroll):
-	std r8, 16(r9)
-	ld r8, 24(r4)		/* load dword,perform loop unrolling again  */
-	cmpb r10, r8, r10
-	cmpdi cr7, r10, 0
-	bne cr7, L(HopBy24)
-
-	std r8, 24(r7)		/* copy dword at offset=24  */
-	addi r9, r9, 32
-	addi r4, r4, 32
-	bdz  L(leftDwords)	/* continue with loop on counter  */
-
-	ld r3, 32(r6)
-	cmpb r8, r3, r10
-	cmpdi cr7, r8, 0
-	bne cr7, L(update2)
-
-	std r3, 32(r7)
-	ld r10, 40(r6)
-	cmpb r8, r10, r8
-	cmpdi cr7, r8, 0
-	bne cr7, L(HopBy40)
-
-	mr r6, r4		/* update values  */
-	mr r7, r9
-	mr r11, r0
-	mr r5, r19
-
-L(dwordCopy):
-	std r10, 8(r9)		/* copy dword at offset=8  */
-	addi r19, r5, -32
-	addi r0, r11, -4
-	ld r8, 16(r4)
-	cmpb r10, r8, r12
-	cmpdi cr7, r10, 0
-	beq cr7, L(dWordUnroll)
-
-	addi r9, r9, 16		/* increment dst by 16  */
-	addi r4, r4, 16		/* increment src by 16  */
-	addi r5, r5, -16	/* decrement length 'n' by 16  */
-	addi r0, r11, -2	/* decrement loop counter  */
-
-L(dWordUnrollOFF):
-	ld r10, 0(r4)		/* load first dword  */
-	li r8, 0		/* load mask  */
-	cmpb r8, r10, r8
-	cmpdi cr7, r8, 0
-	bne cr7, L(byte_by_byte)
-	mtctr r0
-	li r7, 0
-	b L(CopyDword)
-
-	.p2align 4
-L(loadDWordandCompare):
-	ld r10, 0(r4)
-	cmpb r8, r10, r7
-	cmpdi cr7, r8, 0
-	bne cr7, L(byte_by_byte)
-
-L(CopyDword):
-	addi r9, r9, 8
-	std r10, -8(r9)
-	addi r4, r4, 8
-	addi r5, r5, -8
-	bdnz L(loadDWordandCompare)
-
-L(byte_by_byte):
-	cmpldi cr7, r5, 3
-	ble cr7, L(verifyByte)
-	srdi r10, r5, 2
-	mr r19, r9
-	mtctr r10
-	b L(firstByteUnroll)
-
-	.p2align 4
-L(bytes_unroll):
-	lbz r10, 1(r4)		/* load byte from src  */
-	cmpdi cr7, r10, 0	/* compare for NULL  */
-	stb r10, 1(r19)		/* store byte to dst  */
-	beq cr7, L(updtDestComputeN2ndByte)
-
-	addi r4, r4, 4		/* advance src  */
-
-	lbz r10, -2(r4)		/* perform loop unrolling for byte r/w  */
-	cmpdi cr7, r10, 0
-	stb r10, 2(r19)
-	beq cr7, L(updtDestComputeN3rdByte)
-
-	lbz r10, -1(r4)		/* perform loop unrolling for byte r/w  */
-	addi r19, r19, 4
-	cmpdi cr7, r10, 0
-	stb r10, -1(r19)
-	beq cr7, L(ComputeNByte)
-
-	bdz L(update0)
-
-L(firstByteUnroll):
-	lbz r10, 0(r4)		/* perform loop unrolling for byte r/w  */
-	cmpdi cr7, 10, 0
-	stb r10, 0(r19)
-	bne cr7, L(bytes_unroll)
-	addi r19, r19, 1
-
-L(ComputeNByte):
-	subf r9, r19, r9	/* compute 'n'n bytes to fill  */
-	add r8, r9, r5
-
-L(zeroFill):
-	cmpdi cr7, r8, 0	/* compare if length is zero  */
-	beq cr7, L(update3return)
-
-	mr r3, r19		/* fill buffer with  */
-	li r4, 0		/* zero fill buffer  */
-	mr r5, r8		/* how many bytes to fill buffer with  */
-	bl MEMSET		/* call optimized memset  */
-	nop
-
-L(update3return):
-#ifdef USE_AS_STPNCPY
-	addi r3, r19, -1	/* update return value  */
-#endif
-
-L(hop2return):
-#ifndef USE_AS_STPNCPY
-	mr r3, r18		/* set return value  */
-#endif
-	addi r1, r1, FRAMESIZE	/* restore stack pointer  */
-	ld r0, 16(r1)		/* read the saved link register  */
-	ld r18, -16(r1)		/* restore callers save register, r18  */
-	ld r19, -8(r1)		/* restore callers save register, r19  */
-	mtlr r0			/* branch to link register  */
-	blr			/* return  */
-
-	.p2align 4
-L(update0):
-	mr r9, r19
-
-	.p2align 4
-L(verifyByte):
-	rldicl. r8, r5, 0, 62
-#ifdef USE_AS_STPNCPY
-	mr r3, r9
-#endif
-	beq cr0, L(hop2return)
-	mtctr r8
-	addi r4, r4, -1
-	mr r19, r9
-	b L(oneBYone)
-
-	.p2align 4
-L(proceed):
-	bdz L(done)
-
-L(oneBYone):
-	lbzu r10, 1(r4)		/* copy byte  */
-	addi r19, r19, 1
-	addi r8, r8, -1
-	cmpdi cr7, r10, 0
-	stb r10, -1(r19)
-	bne cr7, L(proceed)
-	b L(zeroFill)
-
-	.p2align 4
-L(done):
-	addi r1, r1, FRAMESIZE	/* restore stack pointer  */
-#ifdef USE_AS_STPNCPY
-	mr r3, r19		/* set the return value  */
-#else
-	mr r3, r18		/* set the return value  */
-#endif
-	ld r0, 16(r1)		/* read the saved link register  */
-	ld r18, -16(r1)		/* restore callers save register, r18  */
-	ld r19, -8(r1)		/* restore callers save register, r19  */
-	mtlr r0			/* branch to link register  */
-	blr			/* return  */
-
-L(update1):
-	mr r0, r11
-	mr r19, r5
-
-	.p2align 4
-L(leftDwords):
-	cmpdi cr7, r0, 0
-	mr r5, r19
-	bne cr7, L(dWordUnrollOFF)
-	b L(byte_by_byte)
-
-	.p2align 4
-L(updtDestComputeN2ndByte):
-	addi r19, r19, 2	/* update dst by 2  */
-	subf r9, r19, r9	/* compute distance covered  */
-	add r8, r9, r5
-	b L(zeroFill)
-
-	.p2align 4
-L(updtDestComputeN3rdByte):
-	addi r19, r19, 3	/* update dst by 3  */
-	subf r9, r19, r9	/* compute distance covered  */
-	add r8, r9, r5
-	b L(zeroFill)
-
-	.p2align 4
-L(HopBy24):
-	addi r9, r9, 24		/* increment dst by 24  */
-	addi r4, r4, 24		/* increment src by 24  */
-	addi r5, r5, -24	/* decrement length 'n' by 24  */
-	addi r0, r11, -3	/* decrement loop counter  */
-	b L(dWordUnrollOFF)
-
-	.p2align 4
-L(update2):
-	mr r5, r19
-	b L(dWordUnrollOFF)
-
-	.p2align 4
-L(HopBy40):
-	addi r9, r7, 40		/* increment dst by 40  */
-	addi r4, r6, 40		/* increment src by 40  */
-	addi r5, r5, -40	/* decrement length 'n' by 40  */
-	addi r0, r11, -5	/* decrement loop counter  */
-	b L(dWordUnrollOFF)
-
-L(update3):
-	mr r0, r11
-	b L(dWordUnrollOFF)
-
-L(HopBy8):
-	addi r9, r3, 8		/* increment dst by 8  */
-	addi r4, r4, 8		/* increment src by 8  */
-	addi r5, r5, -8		/* decrement length 'n' by 8  */
-	addi r0, r11, -1	/* decrement loop counter  */
-	b L(dWordUnrollOFF)
-
-L(unaligned):
-	cmpdi	r5, 16		/* Proceed byte by byte for less than 16  */
-	ble	L(byte_by_byte)
-	rldicl	r7, r3, 0, 61
-	rldicl	r6, r4, 0, 61
-	cmpdi	r6, 0	/* Check src alignment */
-	beq	L(srcaligndstunalign)
-	/* src is unaligned */
-	rlwinm	r10, r4, 3,26,28	/* Calculate padding.  */
-	clrrdi	r4, r4, 3	/* Align the addr to dw boundary */
-	ld	r8, 0(r4)	/* Load doubleword from memory.  */
-	li	r0, 0
-	/* Discard bits not part of the string */
-#ifdef __LITTLE_ENDIAN__
-	srd	r7, r8, r10
-#else
-	sld	r7, r8, r10
-#endif
-	cmpb	r0, r7, r0	/* Compare each byte against null */
-	/* Discard bits not part of the string */
-#ifdef __LITTLE_ENDIAN__
-	sld	r0, r0, r10
-#else
-	srd	r0, r0, r10
-#endif
-	cmpdi	r0, 0
-	bne     L(bytebybyte)	/* if it has null, copy byte by byte */
-	subfic	r6, r6, 8
-	rlwinm	r12, r3, 3,26,28	/* Calculate padding in bits.  */
-	rldicl	r9, r3, 0, 61	/* Calculate padding in bytes. */
-	addi	r3, r3, -1
-
-	cmpdi	r12, 0	/* check dest alignment */
-	beq     L(srcunaligndstalign)
-
-	/* both src and dst unaligned */
-#ifdef __LITTLE_ENDIAN__
-	sld	r8, r7, r10
-	mr	r11, r10
-	addi	r11, r11, -8	/* Adjust byte pointer on loaded dw */
-#else
-	srd	r8, r7, r10
-	subfic	r11, r10, 64
-#endif
-	/* dst alignment is greater then src alignment? */
-	cmpd    cr7, r12, r10
-	ble     cr7, L(dst_align_small)
-	/* src alignment is less than dst */
-
-	/* Calculate the dst alignment difference  */
-	subfic	r7, r9, 8
-	mtctr	r7
-
-	/* Write until dst is aligned  */
-	cmpdi	r0, r7, 4
-	blt     L(storebyte1)	/* less than 4, store byte by byte  */
-	beq     L(equal1)	/* if its 4, store word  */
-	addi	r0, r7, -4	/* greater than 4, so stb and stw  */
-	mtctr	r0
-L(storebyte1):
-#ifdef __LITTLE_ENDIAN__
-	addi	r11, r11, 8	/* Adjust byte pointer on loaded dw  */
-#else
-	addi	r11, r11, -8
-#endif
-	srd	r7, r8, r11
-	stbu	r7, 1(r3)
-	addi	r5, r5, -1
-	bdnz    L(storebyte1)
-
-	subfic	r7, r9, 8	/* Check the remaining bytes  */
-	cmpdi	r0, r7, 4
-	blt     L(proceed1)
-
-	.align 4
-L(equal1):
-#ifdef __LITTLE_ENDIAN__
-	addi	r11, r11, 8	/* Adjust byte pointer on loaded dw  */
-	srd	r7, r8, r11
-#else
-	subfic	r11, r11, 64
-	sld	r7, r8, r11
-	srdi	r7, r7, 32
-#endif
-	stw	r7, 1(r3)
-	addi	r3, r3, 4
-	addi	r5, r5, -4
-
-L(proceed1):
-	mr	r7, r8
-	/* calculate the Left over bytes to be written  */
-	subfic	r11, r10, 64
-	subfic	r12, r12, 64
-	subf	r12, r12, r11	/* remaining bytes on second dw  */
-	subfic	r10, r12, 64	/* remaining bytes on first dw  */
-	subfic	r9, r9, 8
-	subf	r6, r9, r6	/* recalculate padding  */
-L(srcunaligndstalign):
-	addi	r3, r3, 1
-	subfic	r12, r10, 64	/* remaining bytes on second dw  */
-	addi	r4, r4, 8
-	li	r0,0
-	b       L(storedouble)
-
-	.align 4
-L(dst_align_small):
-	mtctr	r6
-	/* Write until src is aligned  */
-L(storebyte2):
-#ifdef __LITTLE_ENDIAN__
-	addi	r11, r11, 8	/* Adjust byte pointer on dw  */
-#else
-	addi	r11, r11, -8
-#endif
-	srd	r7, r8, r11
-	stbu	r7, 1(r3)
-	addi	r5, r5, -1
-	bdnz    L(storebyte2)
-
-	addi	r4, r4, 8	/* Increment src pointer  */
-	addi	r3, r3, 1	/* Increment dst pointer  */
-	mr	r9, r3
-	li	r8, 0
-	cmpd    cr7, r12, r10
-	beq     cr7, L(aligned)
-	rldicl	r6, r3, 0, 61	/* Recalculate padding */
-	mr	r7, r6
-
-	/* src is algined */
-L(srcaligndstunalign):
-	mr	r9, r3
-	mr	r6, r7
-	ld	r8, 0(r4)
-	subfic	r10, r7, 8
-	mr	r7, r8
-	li	r0, 0	/* Check null */
-	cmpb	r0, r8, r0
-	cmpdi	r0, 0
-	bne     L(byte_by_byte)	/* Do byte by byte if there is NULL  */
-	rlwinm	r12, r3, 3,26,28	/* Calculate padding  */
-	addi	r3, r3, -1
-	/* write byte by byte until aligned  */
-#ifdef __LITTLE_ENDIAN__
-	li	r11, -8
-#else
-	li	r11, 64
-#endif
-	mtctr	r10
-	cmpdi	r0, r10, 4
-	blt     L(storebyte)
-	beq     L(equal)
-	addi	r0, r10, -4
-	mtctr	r0
-L(storebyte):
-#ifdef __LITTLE_ENDIAN__
-	addi	r11, r11, 8	/* Adjust byte pointer on  dw  */
-#else
-	addi	r11, r11, -8
-#endif
-	srd	r7, r8, r11
-	stbu	r7, 1(r3)
-	addi	r5, r5, -1
-	bdnz    L(storebyte)
-
-	cmpdi	r0, r10, 4
-	blt     L(align)
-
-	.align 4
-L(equal):
-#ifdef __LITTLE_ENDIAN__
-	addi	r11, r11, 8
-	srd	r7, r8, r11
-#else
-	subfic	r11, r11, 64
-	sld	r7, r8, r11
-	srdi	r7, r7, 32
-#endif
-	stw	r7, 1(r3)
-	addi	r5, r5, -4
-	addi	r3, r3, 4
-L(align):
-	addi	r3, r3, 1
-	addi	r4, r4, 8	/* Increment src pointer  */
-	subfic	r10, r12, 64
-	li	r0, 0
-	/* dst addr aligned to 8 */
-L(storedouble):
-	cmpdi	r5, 8
-	ble	L(null1)
-	ld	r7, 0(r4)	/* load next dw  */
-	cmpb	r0, r7, r0
-	cmpdi	r0, 0	/* check for null on each new dw  */
-	bne     L(null)
-#ifdef __LITTLE_ENDIAN__
-	srd	r9, r8, r10	/* bytes from first dw  */
-	sld	r11, r7, r12	/* bytes from second dw  */
-#else
-	sld	r9, r8, r10
-	srd	r11, r7, r12
-#endif
-	or	r11, r9, r11	/* make as a single dw  */
-	std	r11, 0(r3)	/* store as std on aligned addr  */
-	mr	r8, r7		/* still few bytes left to be written  */
-	addi	r3, r3, 8	/* increment dst addr  */
-	addi	r4, r4, 8	/* increment src addr  */
-	addi	r5, r5, -8
-	b       L(storedouble)	/* Loop until NULL  */
-
-	.align 4
-
-/* We've hit the end of the string.  Do the rest byte-by-byte.  */
-L(null):
-	addi	r3, r3, -1
-	mr	r10, r12
-	mtctr	r6
-#ifdef __LITTLE_ENDIAN__
-	subfic	r10, r10, 64
-	addi	r10, r10, -8
-#endif
-	cmpdi	r0, r5, 4
-	blt	L(loop)
-	cmpdi	r0, r6, 4
-	blt     L(loop)
-
-	/* we can still use stw if leftover >= 4  */
-#ifdef __LITTLE_ENDIAN__
-	addi	r10, r10, 8
-	srd	r11, r8, r10
-#else
-	subfic	r10, r10, 64
-	sld	r11, r8, r10
-	srdi	r11, r11, 32
-#endif
-	stw	r11, 1(r3)
-	addi	r5, r5, -4
-	addi	r3, r3, 4
-	cmpdi	r0, r5, 0
-	beq	L(g1)
-	cmpdi	r0, r6, 4
-	beq     L(bytebybyte1)
-	addi	r10, r10, 32
-#ifdef __LITTLE_ENDIAN__
-	addi	r10, r10, -8
-#else
-	subfic	r10, r10, 64
-#endif
-	addi	r0, r6, -4
-	mtctr	r0
-	/* remaining byte by byte part of first dw  */
-L(loop):
-#ifdef __LITTLE_ENDIAN__
-	addi	r10, r10, 8
-#else
-	addi	r10, r10, -8
-#endif
-	srd	r0, r8, r10
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	cmpdi	r0, r5, 0
-	beq	L(g1)
-	bdnz    L(loop)
-L(bytebybyte1):
-	addi	r3, r3, 1
-	/* remaining byte by byte part of second dw   */
-L(bytebybyte):
-	addi	r3, r3, -8
-	addi	r4, r4, -1
-
-#ifdef __LITTLE_ENDIAN__
-	extrdi. r0, r7, 8, 56
-	stbu	r7, 8(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 48
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 40
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 32
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 24
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 16
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 8
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi	r0, r7, 8, 0
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	b	L(g2)
-#else
-	extrdi. r0, r7, 8, 0
-	stbu	r0, 8(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 8
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 16
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 24
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 32
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 40
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	extrdi. r0, r7, 8, 48
-	stbu	r0, 1(r3)
-	addi	r5, r5, -1
-	beq	L(g2)
-	cmpdi	r5, 0
-	beq	L(g1)
-	stbu	r7, 1(r3)
-	addi	r5, r5, -1
-	b	L(g2)
-#endif
-L(g1):
-#ifdef USE_AS_STPNCPY
-	addi	r3, r3, 1
-#endif
-L(g2):
-	addi	r3, r3, 1
-	mr	r19, r3
-	mr	r8, r5
-	b	L(zeroFill)
-L(null1):
-	mr	r9, r3
-	subf	r4, r6, r4
-	b	L(byte_by_byte)
-END(FUNC_NAME)
-#ifndef USE_AS_STPNCPY
-libc_hidden_builtin_def (strncpy)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power7/strnlen.S b/sysdeps/powerpc/powerpc64/power7/strnlen.S
deleted file mode 100644
index a970b6ce30..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strnlen.S
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Optimized strnlen implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   Contributed by Luis Machado <luisgpm@br.ibm.com>.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRNLEN
-# define STRNLEN __strnlen
-#endif
-
-/* int [r3] strnlen (char *s [r3], int size [r4])  */
-	.machine  power7
-ENTRY (STRNLEN)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3
-	add	r7,r3,r4      /* Calculate the last acceptable address.  */
-	cmpldi	r4,32
-	li	r0,0	      /* Doubleword with null chars.  */
-	addi	r7,r7,-1
-
-	/* If we have less than 33 bytes to search, skip to a faster code.  */
-	ble	L(small_range)
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	cmpb	r10,r12,r0    /* Check for null bytes in DWORD1.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	sld	r10,r10,r6
-#else
-	sld	r10,r10,r6
-	srd	r10,r10,r6
-#endif
-	cmpldi	cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-	bne	cr7,L(done)
-
-	clrrdi	r7,r7,3       /* Address of last doubleword.  */
-	mtcrf   0x01,r8
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop_setup)
-
-	/* Handle DWORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r0
-	cmpldi	cr7,r10,0
-	bne	cr7,L(done)
-
-L(loop_setup):
-	/* The last dword we want to read in the loop below is the one
-	   containing the last byte of the string, ie. the dword at
-	   (s + size - 1) & ~7, or r7.  The first dword read is at
-	   r8 + 8, we read 2 * cnt dwords, so the last dword read will
-	   be at r8 + 8 + 16 * cnt - 8.  Solving for cnt gives
-	   cnt = (r7 - r8) / 16  */
-	sub	r5,r7,r8
-	srdi	r6,r5,4	      /* Number of loop iterations.  */
-	mtctr	r6	      /* Setup the counter.  */
-
-	/* Main loop to look for the null byte in the string.  Since
-	   it's a small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-
-	ld	r12,8(r8)
-	ldu	r11,16(r8)
-	cmpb	r10,r12,r0
-	cmpb	r9,r11,r0
-	or	r5,r9,r10     /* Merge everything in one doubleword.  */
-	cmpldi	cr7,r5,0
-	bne	cr7,L(found)
-	bdnz	L(loop)
-
-	/* We may have one more dword to read.  */
-	cmpld	cr6,r8,r7
-	beq	cr6,L(end_max)
-
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r0
-	cmpldi	cr6,r10,0
-	bne	cr6,L(done)
-
-L(end_max):
-	mr	r3,r4
-	blr
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-	.align	4
-L(found):
-	cmpldi	cr6,r10,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   length.  */
-
-	mr	r10,r9
-	addi	r8,r8,8
-
-	/* r10 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the length.
-	   We need to make sure the null char is *before* the end of the
-	   range.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi	r0,r10,-1
-	andc	r0,r0,r10
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	sub	r3,r8,r3
-	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r3,r0      /* Length until the match.  */
-	cmpld	r3,r4
-	blelr
-	mr	r3,r4
-	blr
-
-/* Deals with size <= 32.  */
-	.align	4
-L(small_range):
-	cmpldi	r4,0
-	beq	L(end_max)
-
-	clrrdi	r7,r7,3       /* Address of last doubleword.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	cmpb	r10,r12,r0    /* Check for null bytes in DWORD1.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	sld	r10,r10,r6
-#else
-	sld	r10,r10,r6
-	srd	r10,r10,r6
-#endif
-	cmpldi	cr7,r10,0
-	bne	cr7,L(done)
-
-	cmpld	r8,r7
-	beq	L(end_max)
-
-	.p2align  5
-L(loop_small):
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r0
-	cmpldi	cr6,r10,0
-	bne	cr6,L(done)
-	cmpld	r8,r7
-	bne	L(loop_small)
-	mr	r3,r4
-	blr
-
-END (STRNLEN)
-libc_hidden_def (__strnlen)
-weak_alias (__strnlen, strnlen)
-libc_hidden_def (strnlen)
diff --git a/sysdeps/powerpc/powerpc64/power7/strrchr.S b/sysdeps/powerpc/powerpc64/power7/strrchr.S
deleted file mode 100644
index c22393deb5..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strrchr.S
+++ /dev/null
@@ -1,260 +0,0 @@
-/* Optimized strrchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] strrchr (char *s [r3], int c [r4])  */
-
-#ifndef STRRCHR
-# define STRRCHR strrchr
-#endif
-
-	.machine  power7
-ENTRY (STRRCHR)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-	cmpdi	cr7,r4,0
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	li	r9,0	      /* used to store last occurence */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-
-	beq	cr7,L(null_match)
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi	r4,r4,32,0
-
-	/* r4 is changed now ,if its passed as more chars
-	   check for null again */
-	cmpdi	cr7,r4,0
-	beq	cr7,L(null_match)
-	/* Now r4 has a doubleword of c bytes and r0 has
-	   a doubleword of null bytes.  */
-
-	cmpb	r10,r12,r4     /* Compare each byte against c byte.  */
-	cmpb	r11,r12,r0     /* Compare each byte against null byte.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-#else
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-#endif
-	or	r5,r10,r11    /* OR the results to speed things up.  */
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-L(align):
-	mtcrf	0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r7,16(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	cmpb	r6,r7,r4
-	cmpb	r7,r7,r0
-	or	r12,r10,r11
-	or	r5,r6,r7
-	or	r5,r12,r5
-	cmpdi	cr7,r5,0
-	beq	cr7,L(loop)
-
-	/* OK, one (or both) of the doublewords contains a c/null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c/null byte.  */
-	cmpdi	cr6,r12,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second doubleword.  Adjust the
-	   address again and move the result of cmpb to r10 so we can calculate
-	   the pointer.  */
-
-	mr	r10,r6
-	mr	r11,r7
-	addi	r8,r8,8
-
-	/* r10/r11 have the output of the cmpb instructions, that is,
-	   0xff in the same position as the c/null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-
-L(done):
-	/* if there are more than one 0xff in r11, find the first pos of ff
-	   in r11 and fill r10 with 0 from that position */
-	cmpdi	cr7,r11,0
-	beq	cr7,L(no_null)
-#ifdef __LITTLE_ENDIAN__
-	addi	r3,r11,-1
-	andc	r3,r3,r11
-	popcntd r0,r3
-#else
-	cntlzd	r0,r11
-#endif
-	subfic	r0,r0,63
-	li	r6,-1
-#ifdef __LITTLE_ENDIAN__
-	srd	r0,r6,r0
-#else
-	sld	r0,r6,r0
-#endif
-	and	r10,r0,r10
-L(no_null):
-#ifdef __LITTLE_ENDIAN__
-	cntlzd	r0,r10		/* Count leading zeros before c matches.  */
-	addi	r3,r10,-1
-	andc	r3,r3,r10
-	addi	r10,r11,-1
-	andc	r10,r10,r11
-	cmpld	cr7,r3,r10
-	bgt	cr7,L(no_match)
-#else
-	addi	r3,r10,-1	/* Count trailing zeros before c matches.  */
-	andc	r3,r3,r10
-	popcntd	r0,r3
-	cmpld	cr7,r11,r10
-	bgt	cr7,L(no_match)
-#endif
-	srdi	r0,r0,3		/* Convert trailing zeros to bytes.  */
-	subfic	r0,r0,7
-	add	r9,r8,r0      /* Return address of the matching c byte
-				 or null in case c was not found.  */
-	li	r0,0
-	cmpdi	cr7,r11,0     /* If r11 == 0, no null's have been found.  */
-	beq	cr7,L(align)
-
-	.align	4
-L(no_match):
-	mr	r3,r9
-	blr
-
-/* We are here because strrchr was called with a null byte.  */
-	.align	4
-L(null_match):
-	/* r0 has a doubleword of null bytes.  */
-
-	cmpb	r5,r12,r0     /* Compare each byte against null bytes.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r5,r5,r6
-	sld	r5,r5,r6
-#else
-	sld	r5,r5,r6
-	srd	r5,r5,r6
-#endif
-	cmpdi	cr7,r5,0      /* If r10 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done_null)
-
-	mtcrf	0x01,r8
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop_null)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r5,r12,r0
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done_null)
-	b	L(loop_null)  /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop_null):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r11,16(r8)
-	cmpb	r5,r12,r0
-	cmpb	r10,r11,r0
-	or	r6,r5,r10
-	cmpdi	cr7,r6,0
-	beq	cr7,L(loop_null)
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done_null)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-
-	mr	r5,r10
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done_null):
-#ifdef __LITTLE_ENDIAN__
-	addi	r0,r5,-1
-	andc	r0,r0,r5
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert trailing zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching null byte.  */
-	blr
-END (STRRCHR)
-weak_alias (strrchr, rindex)
-libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/strstr-ppc64.c b/sysdeps/powerpc/powerpc64/power7/strstr-ppc64.c
deleted file mode 100644
index a917b2157e..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strstr-ppc64.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Optimized strstr implementation for PowerPC64/POWER7.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRSTR __strstr_ppc
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(__name)
-
-extern __typeof (strstr) __strstr_ppc attribute_hidden;
-
-#include <string/strstr.c>
diff --git a/sysdeps/powerpc/powerpc64/power7/strstr.S b/sysdeps/powerpc/powerpc64/power7/strstr.S
deleted file mode 100644
index 260db2ed6d..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/strstr.S
+++ /dev/null
@@ -1,521 +0,0 @@
-/* Optimized strstr implementation for PowerPC64/POWER7.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* Char * [r3] strstr (char *s [r3], char * pat[r4])  */
-
-/* The performance gain is obtained using aligned memory access, load
- * doubleword and usage of cmpb instruction for quicker comparison.  */
-
-#define ITERATIONS	64
-
-#ifndef STRSTR
-# define STRSTR strstr
-#endif
-
-#ifndef STRLEN
-/* For builds with no IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define STRLEN   __GI_strlen
-# else
-#  define STRLEN   strlen
-# endif
-#endif
-
-#ifndef STRNLEN
-/* For builds with no IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define STRNLEN   __GI_strnlen
-# else
-#  define STRNLEN  __strnlen
-# endif
-#endif
-
-#ifndef STRCHR
-# ifdef SHARED
-#  define STRCHR   __GI_strchr
-# else
-#  define STRCHR   strchr
-# endif
-#endif
-
-#define	FRAMESIZE	(FRAME_MIN_SIZE+32)
-	.machine  power7
-EALIGN (STRSTR, 4, 0)
-	CALL_MCOUNT 2
-	mflr	r0			/* Load link register LR to r0.  */
-	std	r31, -8(r1)		/* Save callers register r31.  */
-	std	r30, -16(r1)		/* Save callers register r30.  */
-	std	r29, -24(r1)		/* Save callers register r29.  */
-	std	r28, -32(r1)		/* Save callers register r28.  */
-	std	r0, 16(r1)		/* Store the link register.  */
-	cfi_offset(r31, -8)
-	cfi_offset(r30, -16)
-	cfi_offset(r28, -32)
-	cfi_offset(r29, -24)
-	cfi_offset(lr, 16)
-	stdu	r1, -FRAMESIZE(r1)	/* Create the stack frame.  */
-	cfi_adjust_cfa_offset(FRAMESIZE)
-
-	dcbt	0, r3
-	dcbt	0, r4
-	cmpdi	cr7, r3, 0
-	beq	cr7, L(retnull)
-	cmpdi	cr7, r4, 0
-	beq	cr7, L(retnull)
-
-	mr	r29, r3
-	mr	r30, r4
-	mr	r3, r4
-	bl	STRLEN
-	nop
-
-	cmpdi	cr7, r3, 0	/* If search str is null.  */
-	beq	cr7, L(ret_r3)
-
-	mr	r31, r3
-	mr	r4, r3
-	mr	r3, r29
-	bl	STRNLEN
-	nop
-
-	cmpd	cr7, r3, r31 	/* If len(r3) < len(r4).  */
-	blt	cr7, L(retnull)
-	mr	r3, r29
-	lbz	r4, 0(r30)
-	bl	STRCHR
-	nop
-
-	mr	r11, r3
-	/* If first char of search str is not present.  */
-	cmpdi	cr7, r3, 0
-	ble	cr7, L(end)
-	/* Reg r28 is used to count the number of iterations. */
-	li	r28, 0
-	rldicl	r8, r3, 0, 52	/* Page cross check.  */
-	cmpldi	cr7, r8, 4096-16
-	bgt	cr7, L(bytebybyte)
-
-	rldicl	r8, r30, 0, 52
-	cmpldi	cr7, r8, 4096-16
-	bgt	cr7, L(bytebybyte)
-
-	/* If len(r4) < 8 handle in a different way.  */
-	/* Shift position based on null and use cmpb.  */
-	cmpdi	cr7, r31, 8
-	blt	cr7, L(lessthan8)
-
-	/* Len(r4) >= 8 reaches here.  */
-	mr	r8, r3		/* Save r3 for future use.  */
-	mr	r4, r30		/* Restore r4.  */
-	li	r0, 0
-	rlwinm	r10, r30, 3, 26, 28	/* Calculate padding in bits.  */
-	clrrdi	r4, r4, 3	/* Make r4 aligned to 8.  */
-	ld	r6, 0(r4)
-	addi	r4, r4, 8
-	cmpdi	cr7, r10, 0	/* Check if its already aligned?  */
-	beq	cr7, L(begin1)
-#ifdef __LITTLE_ENDIAN__
-	srd	r6, r6, r10	/* Discard unwanted bits.  */
-#else
-	sld	r6, r6, r10
-#endif
-	ld	r9, 0(r4)
-	subfic	r10, r10, 64
-#ifdef __LITTLE_ENDIAN__
-	sld	r9, r9, r10	/* Discard unwanted bits.  */
-#else
-	srd	r9, r9, r10
-#endif
-	or	r6, r6, r9	/* Form complete search str.  */
-L(begin1):
-	mr	r29, r6
-	rlwinm	r10, r3, 3, 26, 28
-	clrrdi	r3, r3, 3
-	ld	r5, 0(r3)
-	cmpb	r9, r0, r6	/* Check if input has null.  */
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(return3)
-	cmpb	r9, r0, r5	/* Check if input has null.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r9, r9, r10
-#else
-	sld	r9, r9, r10
-#endif
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(retnull)
-
-	li	r12, -8		/* Shift values.  */
-	li	r11, 72		/* Shift values.  */
-	cmpdi	cr7, r10, 0
-	beq	cr7, L(nextbyte1)
-	mr	r12, r10
-	addi	r12, r12, -8
-	subfic	r11, r12, 64
-
-L(nextbyte1):
-	ldu	r7, 8(r3) 	/* Load next dw.  */
-	addi	r12, r12, 8	/* Shift one byte and compare.  */
-	addi	r11, r11, -8
-#ifdef __LITTLE_ENDIAN__
-	srd	r9, r5, r12	/* Rotate based on mask.  */
-	sld	r10, r7, r11
-#else
-	sld	r9, r5, r12
-	srd	r10, r7, r11
-#endif
-	/* Form single dw from few bytes on first load and second load.  */
-	or	r10, r9, r10
-	/* Check for null in the formed dw.  */
-	cmpb	r9, r0, r10
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(retnull)
-	/* Cmpb search str and input str.  */
-	cmpb	r9, r10, r6
-	cmpdi	cr7, r9, -1
-	beq	cr7, L(match)
-	addi	r8, r8, 1
-	b	L(begin)
-
-	.align	4
-L(match):
-	/* There is a match of 8 bytes, check next bytes.  */
-	cmpdi	cr7, r31, 8
-	beq	cr7, L(return)
-	/* Update next starting point r8.  */
-	srdi	r9, r11, 3
-	subf	r9, r9, r3
-	mr	r8, r9
-
-L(secondmatch):
-	mr	r5, r7
-	rlwinm	r10, r30, 3, 26, 28	/* Calculate padding in bits.  */
-	ld	r6, 0(r4)
-	addi	r4, r4, 8
-	cmpdi	cr7, r10, 0	/* Check if its already aligned?  */
-	beq	cr7, L(proceed3)
-#ifdef __LITTLE_ENDIAN__
-	srd	r6, r6, r10	/* Discard unwanted bits.  */
-	cmpb	r9, r0, r6
-	sld	r9, r9, r10
-#else
-	sld	r6, r6, r10
-	cmpb	r9, r0, r6
-	srd	r9, r9, r10
-#endif
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(proceed3)
-	ld	r9, 0(r4)
-	subfic	r10, r10, 64
-#ifdef __LITTLE_ENDIAN__
-	sld	r9, r9, r10	/* Discard unwanted bits.  */
-#else
-	srd	r9, r9, r10
-#endif
-	or	r6, r6, r9	/* Form complete search str.  */
-
-L(proceed3):
-	li	r7, 0
-	addi	r3, r3, 8
-	cmpb	r9, r0, r5
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(proceed4)
-	ld	r7, 0(r3)
-L(proceed4):
-#ifdef __LITTLE_ENDIAN__
-	srd	r9, r5, r12
-	sld	r10, r7, r11
-#else
-	sld	r9, r5, r12
-	srd	r10, r7, r11
-#endif
-	/* Form single dw with few bytes from first and second load.  */
-	or	r10, r9, r10
-	cmpb	r9, r0, r6
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(return4)
-	/* Check for null in the formed dw.  */
-	cmpb	r9, r0, r10
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(retnull)
-	/* If the next 8 bytes dont match, start search again.  */
-	cmpb	r9, r10, r6
-	cmpdi	cr7, r9, -1
-	bne	cr7, L(reset)
-	/* If the next 8 bytes match, load and compare next 8.  */
-	b	L(secondmatch)
-
-	.align	4
-L(reset):
-	/* Start the search again.  */
-	addi	r8, r8, 1
-	b	L(begin)
-
-	.align	4
-L(return3):
-	/* Count leading zeros and compare partial dw.  */
-#ifdef __LITTLE_ENDIAN__
-	addi	r7, r9, -1
-	andc	r7, r7, r9
-	popcntd	r7, r7
-	subfic	r7, r7, 64
-	sld	r10, r5, r7
-	sld	r6, r6, r7
-#else
-	cntlzd	r7, r9
-	subfic	r7, r7, 64
-	srd	r10, r5, r7
-	srd	r6, r6, r7
-#endif
-	cmpb	r9, r10, r6
-	cmpdi	cr7, r9, -1
-	addi	r8, r8, 1
-	/* Start search again if there is no match.  */
-	bne	cr7, L(begin)
-	/* If the words match, update return values.  */
-	subfic	r7, r7, 64
-	srdi	r7, r7, 3
-	add	r3, r3, r7
-	subf	r3, r31, r3
-	b	L(end)
-
-	.align	4
-L(return4):
-	/* Count leading zeros and compare partial dw.  */
-#ifdef __LITTLE_ENDIAN__
-	addi	r7, r9, -1
-	andc	r7, r7, r9
-	popcntd	r7, r7
-	subfic	r7, r7, 64
-	sld	r10, r10, r7
-	sld	r6, r6, r7
-#else
-	cntlzd	r7, r9
-	subfic	r7, r7, 64
-	srd	r10, r10, r7
-	srd	r6, r6, r7
-#endif
-	cmpb	r9, r10, r6
-	cmpdi	cr7, r9, -1
-	addi	r8, r8, 1
-	bne	cr7, L(begin)
-	subfic	r7, r7, 64
-	srdi	r11, r11, 3
-	subf	r3, r11, r3
-	srdi	r7, r7, 3
-	add	r3, r3, r7
-	subf	r3, r31, r3
-	b	L(end)
-
-	.align	4
-L(begin):
-	mr	r3, r8
-	/* When our iterations exceed ITERATIONS,fall back to default. */
-	addi	r28, r28, 1
-	cmpdi	cr7, r28, ITERATIONS
-	beq	cr7, L(default)
-	lbz	r4, 0(r30)
-	bl	STRCHR
-	nop
-	/* If first char of search str is not present.  */
-	cmpdi	cr7, r3, 0
-	ble	cr7, L(end)
-	mr	r8, r3
-	mr	r4, r30		/* Restore r4.  */
-	li	r0, 0
-	mr	r6, r29
-	clrrdi	r4, r4, 3
-	addi	r4, r4, 8
-	b	L(begin1)
-
-	/* Handle less than 8 search string.  */
-	.align	4
-L(lessthan8):
-	mr	r4, r3
-	mr	r9, r30
-	li	r0, 0
-
-	rlwinm	r10, r9, 3, 26, 28	/* Calculate padding in bits.  */
-	srdi	r8, r10, 3	/* Padding in bytes.  */
-	clrrdi	r9, r9, 3	/* Make r4 aligned to 8.  */
-	ld	r6, 0(r9)
-	cmpdi	cr7, r10, 0	/* Check if its already aligned?  */
-	beq	cr7, L(proceed2)
-#ifdef __LITTLE_ENDIAN__
-	srd	r6, r6, r10	/* Discard unwanted bits.  */
-#else
-	sld	r6, r6, r10
-#endif
-	subfic	r8, r8, 8
-	cmpd	cr7, r8, r31	/* Next load needed?  */
-	bge	cr7, L(proceed2)
-	ld	r7, 8(r9)
-	subfic	r10, r10, 64
-#ifdef __LITTLE_ENDIAN__
-	sld	r7, r7, r10	/* Discard unwanted bits.  */
-#else
-	srd	r7, r7, r10
-#endif
-	or	r6, r6, r7	/* Form complete search str.  */
-L(proceed2):
-	mr	r29, r6
-	rlwinm	r10, r3, 3, 26, 28
-	clrrdi	r7, r3, 3	/* Make r3 aligned.  */
-	ld	r5, 0(r7)
-	sldi	r8, r31, 3
-	subfic	r8, r8, 64
-#ifdef __LITTLE_ENDIAN__
-	sld	r6, r6, r8
-	cmpb	r9, r0, r5
-	srd	r9, r9, r10
-#else
-	srd	r6, r6, r8
-	cmpb	r9, r0, r5
-	sld	r9, r9, r10
-#endif
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(noload)
-	cmpdi	cr7, r10, 0
-	beq	cr7, L(continue)
-	ld	r7, 8(r7)
-L(continue1):
-	mr	r12, r10
-	addi	r12, r12, -8
-	subfic	r11, r12, 64
-	b	L(nextbyte)
-
-	.align	4
-L(continue):
-	ld	r7, 8(r7)
-	li	r12, -8		/* Shift values.  */
-	li	r11, 72		/* Shift values.  */
-L(nextbyte):
-	addi	r12, r12, 8	/* Mask for rotation.  */
-	addi	r11, r11, -8
-#ifdef __LITTLE_ENDIAN__
-	srd	r9, r5, r12
-	sld	r10, r7, r11
-	or	r10, r9, r10
-	sld	r10, r10, r8
-	cmpb	r9, r0, r10
-	srd	r9, r9, r8
-#else
-	sld	r9, r5, r12
-	srd	r10, r7, r11
-	or	r10, r9, r10
-	srd	r10, r10, r8
-	cmpb	r9, r0, r10
-	sld	r9, r9, r8
-#endif
-	cmpdi	cr7, r9, 0
-	bne	cr7, L(retnull)
-	cmpb	r9, r10, r6
-	cmpdi	cr7, r9, -1
-	beq	cr7, L(end)
-	addi	r3, r4, 1
-	/* When our iterations exceed ITERATIONS,fall back to default. */
-	addi	r28, r28, 1
-	cmpdi	cr7, r28, ITERATIONS
-	beq	cr7, L(default)
-	lbz	r4, 0(r30)
-	bl	STRCHR
-	nop
-	/* If first char of search str is not present.  */
-	cmpdi	cr7, r3, 0
-	ble	cr7, L(end)
-	mr	r4, r3
-	mr	r6, r29
-	li	r0, 0
-	b	L(proceed2)
-
-	.align	4
-L(noload):
-	/* Reached null in r3, so skip next load.  */
-	li 	r7, 0
-	b	L(continue1)
-
-	.align	4
-L(return):
-	/* Update return values.  */
-	srdi	r9, r11, 3
-	subf	r3, r9, r3
-	b	L(end)
-
-	/* Handling byte by byte.  */
-	.align	4
-L(bytebybyte):
-	mr	r8, r3
-	addi	r8, r8, -1
-L(loop1):
-	addi	r8, r8, 1
-	mr	r3, r8
-	mr	r4, r30
-	lbz	r6, 0(r4)
-	cmpdi	cr7, r6, 0
-	beq	cr7, L(updater3)
-L(loop):
-	lbz	r5, 0(r3)
-	cmpdi	cr7, r5, 0
-	beq	cr7, L(retnull)
-	cmpld	cr7, r6, r5
-	bne	cr7, L(loop1)
-	addi	r3, r3, 1
-	addi	r4, r4, 1
-	lbz	r6, 0(r4)
-	cmpdi	cr7, r6, 0
-	beq	cr7, L(updater3)
-	b	L(loop)
-
-	/* Handling return values.  */
-	.align	4
-L(updater3):
-	subf	r3, r31, r3	/* Reduce len of r4 from r3.  */
-	b	L(end)
-
-	.align	4
-L(ret_r3):
-	mr	r3, r29		/* Return r3.  */
-	b	L(end)
-
-	.align	4
-L(retnull):
-	li	r3, 0		/* Return NULL.  */
-	b	L(end)
-
-	.align	4
-L(default):
-	mr	r4, r30
-	bl	__strstr_ppc
-	nop
-
-	.align	4
-L(end):
-	addi	r1, r1, FRAMESIZE	/* Restore stack pointer.  */
-	cfi_adjust_cfa_offset(-FRAMESIZE)
-	ld	r0, 16(r1)	/* Restore the saved link register.  */
-	ld	r28, -32(r1)	/* Restore callers save register r28.  */
-	ld	r29, -24(r1)	/* Restore callers save register r29.  */
-	ld	r30, -16(r1)	/* Restore callers save register r30.  */
-	ld	r31, -8(r1)	/* Restore callers save register r31.  */
-	mtlr	r0		/* Branch to link register.  */
-	blr
-END (STRSTR)
-libc_hidden_builtin_def (strstr)
diff --git a/sysdeps/powerpc/powerpc64/power7/sub_n.S b/sysdeps/powerpc/powerpc64/power7/sub_n.S
deleted file mode 100644
index 848dad5718..0000000000
--- a/sysdeps/powerpc/powerpc64/power7/sub_n.S
+++ /dev/null
@@ -1,23 +0,0 @@
-/* PowerPC64 mpn_lshift --  mpn_add_n/mpn_sub_n -- mpn addition and
-   subtraction.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define USE_AS_SUB
-#include "add_n.S"
diff --git a/sysdeps/powerpc/powerpc64/power8/Implies b/sysdeps/powerpc/powerpc64/power8/Implies
deleted file mode 100644
index 9a5e3c7277..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power7/fpu
-powerpc/powerpc64/power7
diff --git a/sysdeps/powerpc/powerpc64/power8/Makefile b/sysdeps/powerpc/powerpc64/power8/Makefile
deleted file mode 100644
index 71a59529f3..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifeq ($(subdir),string)
-sysdep_routines += strcasestr-ppc64
-endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/Implies b/sysdeps/powerpc/powerpc64/power8/fpu/Implies
deleted file mode 100644
index 1187cdfb0a..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/fpu/
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S b/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
deleted file mode 100644
index 4c42926a74..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
+++ /dev/null
@@ -1,303 +0,0 @@
-/* Optimized expf().  PowerPC64/POWER8 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* Short algorithm description:
- *
- *  Let K = 64 (table size).
- *       e^x  = 2^(x/log(2)) = 2^n * T[j] * (1 + P(y))
- *  where:
- *       x = m*log(2)/K + y,    y in [0.0..log(2)/K]
- *       m = n*K + j,           m,n,j - signed integer, j in [0..K-1]
- *       values of 2^(j/K) are tabulated as T[j].
- *
- *       P(y) is a minimax polynomial approximation of expf(y)-1
- *       on small interval [0.0..log(2)/K].
- *
- *       P(y) = P3*y*y*y*y + P2*y*y*y + P1*y*y + P0*y, calculated as
- *       z = y*y;    P(y) = (P3*z + P1)*z + (P2*z + P0)*y
- *
- * Special cases:
- *  expf(NaN) = NaN
- *  expf(+INF) = +INF
- *  expf(-INF) = 0
- *  expf(x) = 1 for subnormals
- *  for finite argument, only expf(0)=1 is exact
- *  expf(x) overflows if x>88.7228317260742190
- *  expf(x) underflows if x<-103.972076416015620
- */
-
-#define C1 0x42ad496b		/* Single precision 125*log(2).  */
-#define C2 0x31800000		/* Single precision 2^(-28).  */
-#define SP_INF 0x7f800000	/* Single precision Inf.  */
-#define SP_EXP_BIAS 0x1fc0	/* Single precision exponent bias.  */
-
-#define DATA_OFFSET r9
-
-/* Implements the function
-
-   float [fp1] expf (float [fp1] x)  */
-
-	.machine power8
-EALIGN(__ieee754_expf, 4, 0)
-	addis	DATA_OFFSET,r2,.Lanchor@toc@ha
-	addi	DATA_OFFSET,DATA_OFFSET,.Lanchor@toc@l
-
-	xscvdpspn v0,v1
-	mfvsrd	r8,v0		/* r8 = x  */
-	lfd	fp2,(.KLN2-.Lanchor)(DATA_OFFSET)
-	lfd	fp3,(.P2-.Lanchor)(DATA_OFFSET)
-	rldicl	r3,r8,32,33	/* r3 = |x|  */
-	lis	r4,C1@ha	/* r4 = 125*log(2)  */
-	ori	r4,r4,C1@l
-	cmpw	r3,r4
-	lfd	fp5,(.P3-.Lanchor)(DATA_OFFSET)
-	lfd	fp4,(.RS-.Lanchor)(DATA_OFFSET)
-	fmadd	fp2,fp1,fp2,fp4	/* fp2 = x * K/log(2) + (2^23 + 2^22)  */
-	bge	L(special_paths)	/* |x| >= 125*log(2) ?  */
-
-	lis	r4,C2@ha
-	ori	r4,r4,C2@l
-	cmpw	r3,r4
-	blt	L(small_args)	/* |x| < 2^(-28) ?  */
-
-	/* Main path: here if 2^(-28) <= |x| < 125*log(2) */
-	frsp	fp6,fp2
-	xscvdpsp v2,v2
-	mfvsrd	r8,v2
-	mr	r3,r8			/* r3 = m  */
-	rldicl	r8,r8,32,58		/* r8 = j  */
-	lfs	fp4,(.SP_RS-.Lanchor)(DATA_OFFSET)
-	fsubs	fp2,fp6,fp4		/* fp2 = m = x * K/log(2)  */
-	srdi	r3,r3,32
-	clrrwi	r3,r3,6			/* r3 = n  */
-	lfd	fp6,(.NLN2K-.Lanchor)(DATA_OFFSET)
-	fmadd	fp0,fp2,fp6,fp1		/* fp0 = y = x - m*log(2)/K  */
-	fmul	fp2,fp0,fp0		/* fp2 = z = y^2  */
-	lfd	fp4,(.P1-.Lanchor)(DATA_OFFSET)
-	lfd	fp6,(.P0-.Lanchor)(DATA_OFFSET)
-	lis	r4,SP_EXP_BIAS@ha
-	ori	r4,r4,SP_EXP_BIAS@l
-	add	r3,r3,r4
-	rldic	r3,r3,49,1		/* r3 = 2^n  */
-	fmadd	fp4,fp5,fp2,fp4		/* fp4 = P3 * z + P1  */
-	fmadd	fp6,fp3,fp2,fp6		/* fp6 = P2 * z + P0  */
-	mtvsrd	v1,r3
-	xscvspdp v1,v1
-	fmul	fp4,fp4,fp2		/* fp4 = (P3 * z + P1)*z  */
-	fmadd	fp0,fp0,fp6,fp4		/* fp0 = P(y)  */
-	sldi	r8,r8,3			/* Access doublewords from T[j].  */
-	addi	r6,DATA_OFFSET,(.Ttable-.Lanchor)
-	lfdx	fp3,r6,r8
-	fmadd	fp0,fp0,fp3,fp3		/* fp0 = T[j] * (1 + P(y))  */
-	fmul	fp1,fp1,fp0		/* fp1 = 2^n * T[j] * (1 + P(y))  */
-	frsp	fp1,fp1
-	blr
-
-	.align	4
-/* x is either underflow, overflow, infinite or NaN.  */
-L(special_paths):
-	srdi	r8,r8,32
-	rlwinm	r8,r8,3,29,29		/* r8 = 0, if x positive.
-					   r8 = 4, otherwise.  */
-	addi	r6,DATA_OFFSET,(.SPRANGE-.Lanchor)
-	lwzx	r4,r6,r8		/* r4 = .SPRANGE[signbit(x)]  */
-	cmpw	r3,r4
-	/* |x| <= .SPRANGE[signbit(x)]  */
-	ble	L(near_under_or_overflow)
-
-	lis	r4,SP_INF@ha
-	ori	r4,r4,SP_INF@l
-	cmpw	r3,r4
-	bge	L(arg_inf_or_nan)	/* |x| > Infinite ?  */
-
-	addi	r6,DATA_OFFSET,(.SPLARGE_SMALL-.Lanchor)
-	lfsx	fp1,r6,r8
-	fmuls	fp1,fp1,fp1
-	blr
-
-
-	.align	4
-L(small_args):
-	/* expf(x) = 1.0, where |x| < |2^(-28)|  */
-	lfs	fp2,(.SPone-.Lanchor)(DATA_OFFSET)
-	fadds	fp1,fp1,fp2
-	blr
-
-
-	.align	4
-L(arg_inf_or_nan:)
-	bne	L(arg_nan)
-
-	/* expf(+INF) = +INF
-	   expf(-INF) = 0  */
-	addi	r6,DATA_OFFSET,(.INF_ZERO-.Lanchor)
-	lfsx	fp1,r6,r8
-	blr
-
-
-	.align	4
-L(arg_nan):
-	/* expf(NaN) = NaN  */
-	fadd	fp1,fp1,fp1
-	frsp	fp1,fp1
-	blr
-
-	.align	4
-L(near_under_or_overflow):
-	frsp	fp6,fp2
-	xscvdpsp v2,v2
-	mfvsrd	r8,v2
-	mr	r3,r8			/* r3 = m  */
-	rldicl	r8,r8,32,58		/* r8 = j  */
-	lfs	fp4,(.SP_RS-.Lanchor)(DATA_OFFSET)
-	fsubs	fp2,fp6,fp4		/* fp2 = m = x * K/log(2)  */
-	srdi	r3,r3,32
-	clrrwi	r3,r3,6			/* r3 = n  */
-	lfd	fp6,(.NLN2K-.Lanchor)(DATA_OFFSET)
-	fmadd	fp0,fp2,fp6,fp1		/* fp0 = y = x - m*log(2)/K  */
-	fmul	fp2,fp0,fp0		/* fp2 = z = y^2  */
-	lfd	fp4,(.P1-.Lanchor)(DATA_OFFSET)
-	lfd	fp6,(.P0-.Lanchor)(DATA_OFFSET)
-	ld	r4,(.DP_EXP_BIAS-.Lanchor)(DATA_OFFSET)
-	add	r3,r3,r4
-	rldic	r3,r3,46,1		/* r3 = 2  */
-	fmadd	fp4,fp5,fp2,fp4		/* fp4 = P3 * z + P1  */
-	fmadd	fp6,fp3,fp2,fp6		/* fp6 = P2 * z + P0  */
-	mtvsrd	v1,r3
-	fmul	fp4,fp4,fp2		/* fp4 = (P3*z + P1)*z  */
-	fmadd	fp0,fp0,fp6,fp4		/* fp0 = P(y)  */
-	sldi	r8,r8,3			/* Access doublewords from T[j].  */
-	addi	r6,DATA_OFFSET,(.Ttable-.Lanchor)
-	lfdx	fp3,r6,r8
-	fmadd	fp0,fp0,fp3,fp3		/* fp0 = T[j] * (1 + T[j])  */
-	fmul	fp1,fp1,fp0		/* fp1 = 2^n * T[j] * (1 + T[j])  */
-	frsp	fp1,fp1
-	blr
-END(__ieee754_expf)
-
-	.section .rodata, "a",@progbits
-.Lanchor:
-	.balign	8
-/* Table T[j] = 2^(j/K).  Double precision.  */
-.Ttable:
-	.8byte	0x3ff0000000000000
-	.8byte	0x3ff02c9a3e778061
-	.8byte	0x3ff059b0d3158574
-	.8byte	0x3ff0874518759bc8
-	.8byte	0x3ff0b5586cf9890f
-	.8byte	0x3ff0e3ec32d3d1a2
-	.8byte	0x3ff11301d0125b51
-	.8byte	0x3ff1429aaea92de0
-	.8byte	0x3ff172b83c7d517b
-	.8byte	0x3ff1a35beb6fcb75
-	.8byte	0x3ff1d4873168b9aa
-	.8byte	0x3ff2063b88628cd6
-	.8byte	0x3ff2387a6e756238
-	.8byte	0x3ff26b4565e27cdd
-	.8byte	0x3ff29e9df51fdee1
-	.8byte	0x3ff2d285a6e4030b
-	.8byte	0x3ff306fe0a31b715
-	.8byte	0x3ff33c08b26416ff
-	.8byte	0x3ff371a7373aa9cb
-	.8byte	0x3ff3a7db34e59ff7
-	.8byte	0x3ff3dea64c123422
-	.8byte	0x3ff4160a21f72e2a
-	.8byte	0x3ff44e086061892d
-	.8byte	0x3ff486a2b5c13cd0
-	.8byte	0x3ff4bfdad5362a27
-	.8byte	0x3ff4f9b2769d2ca7
-	.8byte	0x3ff5342b569d4f82
-	.8byte	0x3ff56f4736b527da
-	.8byte	0x3ff5ab07dd485429
-	.8byte	0x3ff5e76f15ad2148
-	.8byte	0x3ff6247eb03a5585
-	.8byte	0x3ff6623882552225
-	.8byte	0x3ff6a09e667f3bcd
-	.8byte	0x3ff6dfb23c651a2f
-	.8byte	0x3ff71f75e8ec5f74
-	.8byte	0x3ff75feb564267c9
-	.8byte	0x3ff7a11473eb0187
-	.8byte	0x3ff7e2f336cf4e62
-	.8byte	0x3ff82589994cce13
-	.8byte	0x3ff868d99b4492ed
-	.8byte	0x3ff8ace5422aa0db
-	.8byte	0x3ff8f1ae99157736
-	.8byte	0x3ff93737b0cdc5e5
-	.8byte	0x3ff97d829fde4e50
-	.8byte	0x3ff9c49182a3f090
-	.8byte	0x3ffa0c667b5de565
-	.8byte	0x3ffa5503b23e255d
-	.8byte	0x3ffa9e6b5579fdbf
-	.8byte	0x3ffae89f995ad3ad
-	.8byte	0x3ffb33a2b84f15fb
-	.8byte	0x3ffb7f76f2fb5e47
-	.8byte	0x3ffbcc1e904bc1d2
-	.8byte	0x3ffc199bdd85529c
-	.8byte	0x3ffc67f12e57d14b
-	.8byte	0x3ffcb720dcef9069
-	.8byte	0x3ffd072d4a07897c
-	.8byte	0x3ffd5818dcfba487
-	.8byte	0x3ffda9e603db3285
-	.8byte	0x3ffdfc97337b9b5f
-	.8byte	0x3ffe502ee78b3ff6
-	.8byte	0x3ffea4afa2a490da
-	.8byte	0x3ffefa1bee615a27
-	.8byte	0x3fff50765b6e4540
-	.8byte	0x3fffa7c1819e90d8
-
-.KLN2:
-	.8byte	0x40571547652b82fe	/* Double precision K/log(2).  */
-
-/* Double precision polynomial coefficients.  */
-.P0:
-	.8byte	0x3fefffffffffe7c6
-.P1:
-	.8byte	0x3fe00000008d6118
-.P2:
-	.8byte	0x3fc55550da752d4f
-.P3:
-	.8byte	0x3fa56420eb78fa85
-
-.RS:
-	.8byte	0x4168000000000000	/* Double precision 2^23 + 2^22.  */
-.NLN2K:
-	.8byte	0xbf862e42fefa39ef	/* Double precision -log(2)/K.  */
-.DP_EXP_BIAS:
-	.8byte	0x000000000000ffc0	/* Double precision exponent bias.  */
-
-	.balign	4
-.SPone:
-	.4byte	0x3f800000	/* Single precision 1.0.  */
-.SP_RS:
-	.4byte	0x4b400000	/* Single precision 2^23 + 2^22.  */
-
-.SPRANGE: /* Single precision overflow/underflow bounds.  */
-	.4byte	0x42b17217	/* if x>this bound, then result overflows.  */
-	.4byte	0x42cff1b4	/* if x<this bound, then result underflows.  */
-
-.SPLARGE_SMALL:
-	.4byte	0x71800000	/* 2^100.  */
-	.4byte	0x0d800000	/* 2^-100.  */
-
-.INF_ZERO:
-	.4byte	0x7f800000	/* Single precision Inf.  */
-	.4byte	0		/* Single precision zero.  */
-
-strong_alias (__ieee754_expf, __expf_finite)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies
deleted file mode 100644
index 7fd86fdf87..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
deleted file mode 100644
index 8dfa0076e0..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
+++ /dev/null
@@ -1,508 +0,0 @@
-/* Optimized cosf().  PowerPC64/POWER8 version.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#define _ERRNO_H	1
-#include <bits/errno.h>
-
-#define FRAMESIZE (FRAME_MIN_SIZE+16)
-
-#define FLOAT_EXPONENT_SHIFT	23
-#define FLOAT_EXPONENT_BIAS	127
-#define INTEGER_BITS		3
-
-#define PI_4		0x3f490fdb	/* PI/4 */
-#define NINEPI_4	0x40e231d6	/* 9 * PI/4 */
-#define TWO_PN5		0x3d000000	/* 2^-5 */
-#define TWO_PN27	0x32000000	/* 2^-27 */
-#define INFINITY	0x7f800000
-#define TWO_P23		0x4b000000	/* 2^23 */
-#define FX_FRACTION_1_28 0x9249250	/* 0x100000000 / 28 + 1 */
-
-	/* Implements the function
-
-	   float [fp1] cosf (float [fp1] x)  */
-
-	.machine power8
-EALIGN(__cosf, 4, 0)
-	addis	r9,r2,L(anchor)@toc@ha
-	addi	r9,r9,L(anchor)@toc@l
-
-	lis	r4,PI_4@h
-	ori	r4,r4,PI_4@l
-
-	xscvdpspn v0,v1
-	mfvsrd	r8,v0
-	rldicl	r3,r8,32,33		/* Remove sign bit.  */
-
-	cmpw	r3,r4
-	bge	L(greater_or_equal_pio4)
-
-	lis	r4,TWO_PN5@h
-	ori	r4,r4,TWO_PN5@l
-
-	cmpw	r3,r4
-	blt	L(less_2pn5)
-
-	/* Chebyshev polynomial of the form:
-	 * 1.0+x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))).  */
-
-	lfd	fp9,(L(C0)-L(anchor))(r9)
-	lfd	fp10,(L(C1)-L(anchor))(r9)
-	lfd	fp11,(L(C2)-L(anchor))(r9)
-	lfd	fp12,(L(C3)-L(anchor))(r9)
-	lfd	fp13,(L(C4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	lfd     fp3,(L(DPone)-L(anchor))(r9)
-
-	fmadd	fp4,fp2,fp13,fp12	/* C3+x^2*C4 */
-	fmadd	fp4,fp2,fp4,fp11	/* C2+x^2*(C3+x^2*C4) */
-	fmadd	fp4,fp2,fp4,fp10	/* C1+x^2*(C2+x^2*(C3+x^2*C4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4))) */
-	fmadd	fp1,fp2,fp4,fp3		/* 1.0+x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))) */
-	frsp	fp1,fp1			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(greater_or_equal_pio4):
-	lis	r4,NINEPI_4@h
-	ori	r4,r4,NINEPI_4@l
-	cmpw	r3,r4
-	bge	L(greater_or_equal_9pio4)
-
-	/* Calculate quotient of |x|/(PI/4).  */
-	lfd	fp2,(L(invpio4)-L(anchor))(r9)
-	fabs	fp1,fp1			/* |x| */
-	fmul	fp2,fp1,fp2		/* |x|/(PI/4) */
-	fctiduz	fp2,fp2
-	mfvsrd	r3,v2			/* n = |x| mod PI/4 */
-
-	/* Now use that quotient to find |x| mod (PI/2).  */
-	addi	r7,r3,1
-	rldicr	r5,r7,2,60		/* ((n+1) >> 1) << 3 */
-	addi	r6,r9,(L(pio2_table)-L(anchor))
-	lfdx	fp4,r5,r6
-	fsub	fp1,fp1,fp4
-
-	.balign 16
-L(reduced):
-	/* Now we are in the range -PI/4 to PI/4.  */
-
-	/* Work out if we are in a positive or negative primary interval.  */
-	addi    r7,r7,2
-	rldicl	r4,r7,62,63		/* ((n+3) >> 2) & 1 */
-
-	/* Load a 1.0 or -1.0.  */
-	addi	r5,r9,(L(ones)-L(anchor))
-	sldi	r4,r4,3
-	lfdx	fp0,r4,r5
-
-	/* Are we in the primary interval of sin or cos?  */
-	andi.	r4,r7,0x2
-	bne	L(cos)
-
-	/* Chebyshev polynomial of the form:
-	   x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))).  */
-
-	lfd	fp9,(L(S0)-L(anchor))(r9)
-	lfd	fp10,(L(S1)-L(anchor))(r9)
-	lfd	fp11,(L(S2)-L(anchor))(r9)
-	lfd	fp12,(L(S3)-L(anchor))(r9)
-	lfd	fp13,(L(S4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	fmul	fp3,fp2,fp1		/* x^3 */
-
-	fmadd	fp4,fp2,fp13,fp12	/* S3+x^2*S4 */
-	fmadd	fp4,fp2,fp4,fp11	/* S2+x^2*(S3+x^2*S4) */
-	fmadd	fp4,fp2,fp4,fp10	/* S1+x^2*(S2+x^2*(S3+x^2*S4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4))) */
-	fmadd	fp4,fp3,fp4,fp1		/* x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))) */
-	fmul	fp4,fp4,fp0		/* Add in the sign.  */
-	frsp	fp1,fp4			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(cos):
-	/* Chebyshev polynomial of the form:
-	   1.0+x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))).  */
-
-	lfd	fp9,(L(C0)-L(anchor))(r9)
-	lfd	fp10,(L(C1)-L(anchor))(r9)
-	lfd	fp11,(L(C2)-L(anchor))(r9)
-	lfd	fp12,(L(C3)-L(anchor))(r9)
-	lfd	fp13,(L(C4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	lfd	fp3,(L(DPone)-L(anchor))(r9)
-
-	fmadd	fp4,fp2,fp13,fp12	/* C3+x^2*C4 */
-	fmadd	fp4,fp2,fp4,fp11	/* C2+x^2*(C3+x^2*C4) */
-	fmadd	fp4,fp2,fp4,fp10	/* C1+x^2*(C2+x^2*(C3+x^2*C4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4))) */
-	fmadd	fp4,fp2,fp4,fp3		/* 1.0 + x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))) */
-	fmul	fp4,fp4,fp0		/* Add in the sign.  */
-	frsp	fp1,fp4			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(greater_or_equal_9pio4):
-	lis	r4,INFINITY@h
-	ori	r4,r4,INFINITY@l
-	cmpw	r3,r4
-	bge	L(inf_or_nan)
-
-	lis	r4,TWO_P23@h
-	ori	r4,r4,TWO_P23@l
-	cmpw	r3,r4
-	bge	L(greater_or_equal_2p23)
-
-	fabs	fp1,fp1			/* |x| */
-
-	/* Calculate quotient of |x|/(PI/4).  */
-	lfd	fp2,(L(invpio4)-L(anchor))(r9)
-
-	lfd     fp3,(L(DPone)-L(anchor))(r9)
-	lfd     fp4,(L(DPhalf)-L(anchor))(r9)
-	fmul    fp2,fp1,fp2             /* |x|/(PI/4) */
-	friz    fp2,fp2                 /* n = floor(|x|/(PI/4)) */
-
-	/* Calculate (n + 1) / 2.  */
-	fadd	fp2,fp2,fp3		/* n + 1 */
-	fmul	fp3,fp2,fp4		/* (n + 1) / 2 */
-	friz	fp3,fp3
-
-	lfd	fp4,(L(pio2hi)-L(anchor))(r9)
-	lfd	fp5,(L(pio2lo)-L(anchor))(r9)
-
-	fmul	fp6,fp4,fp3
-	fadd	fp6,fp6,fp1
-	fmadd	fp1,fp5,fp3,fp6
-
-	fctiduz	fp2,fp2
-	mfvsrd	r7,v2			/* n + 1 */
-
-	b	L(reduced)
-
-	.balign 16
-L(inf_or_nan):
-	bne	L(skip_errno_setting)	/* Is a NAN?  */
-
-	/* We delayed the creation of the stack frame, as well as the saving of
-	   the link register, because only at this point, we are sure that
-	   doing so is actually needed.  */
-
-	stfd	fp1,-8(r1)
-
-	/* Save the link register.  */
-	mflr	r0
-	std	r0,16(r1)
-	cfi_offset(lr, 16)
-
-	/* Create the stack frame.  */
-	stdu	r1,-FRAMESIZE(r1)
-	cfi_adjust_cfa_offset(FRAMESIZE)
-
-	bl	JUMPTARGET(__errno_location)
-	nop
-
-	/* Restore the stack frame.  */
-	addi	r1,r1,FRAMESIZE
-	cfi_adjust_cfa_offset(-FRAMESIZE)
-	/* Restore the link register.  */
-	ld	r0,16(r1)
-	mtlr	r0
-
-	lfd	fp1,-8(r1)
-
-	/* errno = EDOM */
-	li	r4,EDOM
-	stw	r4,0(r3)
-
-L(skip_errno_setting):
-	fsub	fp1,fp1,fp1		/* x - x */
-	blr
-
-	.balign 16
-L(greater_or_equal_2p23):
-	fabs	fp1,fp1
-
-	srwi	r4,r3,FLOAT_EXPONENT_SHIFT
-	subi	r4,r4,FLOAT_EXPONENT_BIAS
-
-	/* We reduce the input modulo pi/4, so we need 3 bits of integer
-	   to determine where in 2*pi we are. Index into our array
-	   accordingly.  */
-	addi r4,r4,INTEGER_BITS
-
-	/* To avoid an expensive divide, for the range we care about (0 - 127)
-	   we can transform x/28 into:
-
-	   x/28 = (x * ((0x100000000 / 28) + 1)) >> 32
-
-	   mulhwu returns the top 32 bits of the 64 bit result, doing the
-	   shift for us in the same instruction. The top 32 bits are undefined,
-	   so we have to mask them.  */
-
-	lis	r6,FX_FRACTION_1_28@h
-	ori	r6,r6,FX_FRACTION_1_28@l
-	mulhwu	r5,r4,r6
-	clrldi	r5,r5,32
-
-	/* Get our pointer into the invpio4_table array.  */
-	sldi	r4,r5,3
-	addi	r6,r9,(L(invpio4_table)-L(anchor))
-	add	r4,r4,r6
-
-	lfd	fp2,0(r4)
-	lfd	fp3,8(r4)
-	lfd	fp4,16(r4)
-	lfd	fp5,24(r4)
-
-	fmul	fp6,fp2,fp1
-	fmul	fp7,fp3,fp1
-	fmul	fp8,fp4,fp1
-	fmul	fp9,fp5,fp1
-
-	/* Mask off larger integer bits in highest double word that we don't
-	   care about to avoid losing precision when combining with smaller
-	   values.  */
-	fctiduz	fp10,fp6
-	mfvsrd	r7,v10
-	rldicr	r7,r7,0,(63-INTEGER_BITS)
-	mtvsrd	v10,r7
-	fcfidu	fp10,fp10		/* Integer bits.  */
-
-	fsub	fp6,fp6,fp10		/* highest -= integer bits */
-
-	/* Work out the integer component, rounded down. Use the top two
-	   limbs for this.  */
-	fadd	fp10,fp6,fp7		/* highest + higher */
-
-	fctiduz	fp10,fp10
-	mfvsrd	r7,v10
-	andi.	r0,r7,1
-	fcfidu	fp10,fp10
-
-	/* Subtract integer component from highest limb.  */
-	fsub	fp12,fp6,fp10
-
-	beq	L(even_integer)
-
-	/* Our integer component is odd, so we are in the -PI/4 to 0 primary
-	   region. We need to shift our result down by PI/4, and to do this
-	   in the mod (4/PI) space we simply subtract 1.  */
-	lfd	fp11,(L(DPone)-L(anchor))(r9)
-	fsub	fp12,fp12,fp11
-
-	/* Now add up all the limbs in order.  */
-	fadd	fp12,fp12,fp7
-	fadd	fp12,fp12,fp8
-	fadd	fp12,fp12,fp9
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-L(even_integer):
-	lfd	fp11,(L(DPone)-L(anchor))(r9)
-
-	/* Now add up all the limbs in order.  */
-	fadd	fp12,fp12,fp7
-	fadd	fp12,r12,fp8
-	fadd	fp12,r12,fp9
-
-	/* We need to check if the addition of all the limbs resulted in us
-	   overflowing 1.0.  */
-	fcmpu	0,fp12,fp11
-	bgt	L(greater_than_one)
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-L(greater_than_one):
-	/* We did overflow 1.0 when adding up all the limbs. Add 1.0 to our
-	   integer, and subtract 1.0 from our result. Since that makes the
-	   integer component odd, we need to subtract another 1.0 as
-	   explained above.  */
-	addi	r7,r7,1
-
-	lfd	fp11,(L(DPtwo)-L(anchor))(r9)
-	fsub	fp12,fp12,fp11
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-	.balign 16
-L(less_2pn5):
-	lis	r4,TWO_PN27@h
-	ori	r4,r4,TWO_PN27@l
-
-	cmpw	r3,r4
-	blt	L(less_2pn27)
-
-	/* A simpler Chebyshev approximation is close enough for this range:
-	   1.0+x^2*(CC0+x^3*CC1).  */
-
-	lfd	fp10,(L(CC0)-L(anchor))(r9)
-	lfd	fp11,(L(CC1)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	fmul	fp3,fp2,fp1		/* x^3 */
-	lfd     fp1,(L(DPone)-L(anchor))(r9)
-
-	fmadd   fp4,fp3,fp11,fp10       /* CC0+x^3*CC1 */
-	fmadd	fp1,fp2,fp4,fp1		/* 1.0+x^2*(CC0+x^3*CC1) */
-
-	frsp	fp1,fp1			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(less_2pn27):
-	/* Handle some special cases:
-
-	   cosf(subnormal) raises inexact
-	   cosf(min_normalized) raises inexact
-	   cosf(normalized) raises inexact.  */
-
-	lfd     fp2,(L(DPone)-L(anchor))(r9)
-
-	fabs    fp1,fp1                 /* |x| */
-	fsub	fp1,fp2,fp1		/* 1.0-|x| */
-
-	frsp	fp1,fp1
-
-	blr
-
-END (__cosf)
-
-	.section .rodata, "a"
-
-	.balign 8
-
-L(anchor):
-
-	/* Chebyshev constants for sin, range -PI/4 - PI/4.  */
-L(S0):	.8byte	0xbfc5555555551cd9
-L(S1):	.8byte	0x3f81111110c2688b
-L(S2):	.8byte	0xbf2a019f8b4bd1f9
-L(S3):	.8byte	0x3ec71d7264e6b5b4
-L(S4):	.8byte	0xbe5a947e1674b58a
-
-	/* Chebyshev constants for cos, range 2^-27 - 2^-5.  */
-L(CC0):	.8byte	0xbfdfffffff5cc6fd
-L(CC1):	.8byte	0x3fa55514b178dac5
-
-	/* Chebyshev constants for cos, range -PI/4 - PI/4.  */
-L(C0):	.8byte	0xbfdffffffffe98ae
-L(C1):	.8byte	0x3fa55555545c50c7
-L(C2):	.8byte	0xbf56c16b348b6874
-L(C3):	.8byte	0x3efa00eb9ac43cc0
-L(C4):	.8byte	0xbe923c97dd8844d7
-
-L(invpio2):
-	.8byte	0x3fe45f306dc9c883	/* 2/PI */
-
-L(invpio4):
-	.8byte	0x3ff45f306dc9c883	/* 4/PI */
-
-L(invpio4_table):
-	.8byte	0x0000000000000000
-	.8byte	0x3ff45f306c000000
-	.8byte	0x3e3c9c882a000000
-	.8byte	0x3c54fe13a8000000
-	.8byte	0x3aaf47d4d0000000
-	.8byte	0x38fbb81b6c000000
-	.8byte	0x3714acc9e0000000
-	.8byte	0x3560e4107c000000
-	.8byte	0x33bca2c756000000
-	.8byte	0x31fbd778ac000000
-	.8byte	0x300b7246e0000000
-	.8byte	0x2e5d2126e8000000
-	.8byte	0x2c97003248000000
-	.8byte	0x2ad77504e8000000
-	.8byte	0x290921cfe0000000
-	.8byte	0x274deb1cb0000000
-	.8byte	0x25829a73e0000000
-	.8byte	0x23fd1046be000000
-	.8byte	0x2224baed10000000
-	.8byte	0x20709d338e000000
-	.8byte	0x1e535a2f80000000
-	.8byte	0x1cef904e64000000
-	.8byte	0x1b0d639830000000
-	.8byte	0x1964ce7d24000000
-	.8byte	0x17b908bf16000000
-
-L(pio4):
-	.8byte	0x3fe921fb54442d18	/* PI/4 */
-
-/* PI/2 as a sum of two doubles. We only use 32 bits of the upper limb
-   to avoid losing significant bits when multiplying with up to
-   (2^22)/(pi/2).  */
-L(pio2hi):
-	.8byte	0xbff921fb54400000
-
-L(pio2lo):
-	.8byte	0xbdd0b4611a626332
-
-L(pio2_table):
-	.8byte	0
-	.8byte	0x3ff921fb54442d18	/* 1 * PI/2 */
-	.8byte	0x400921fb54442d18	/* 2 * PI/2 */
-	.8byte	0x4012d97c7f3321d2	/* 3 * PI/2 */
-	.8byte	0x401921fb54442d18	/* 4 * PI/2 */
-	.8byte	0x401f6a7a2955385e	/* 5 * PI/2 */
-	.8byte	0x4022d97c7f3321d2	/* 6 * PI/2 */
-	.8byte	0x4025fdbbe9bba775	/* 7 * PI/2 */
-	.8byte	0x402921fb54442d18	/* 8 * PI/2 */
-	.8byte	0x402c463abeccb2bb	/* 9 * PI/2 */
-	.8byte	0x402f6a7a2955385e	/* 10 * PI/2 */
-
-L(small):
-	.8byte	0x3cd0000000000000	/* 2^-50 */
-
-L(ones):
-	.8byte	0x3ff0000000000000	/* +1.0 */
-	.8byte	0xbff0000000000000	/* -1.0 */
-
-L(DPhalf):
-	.8byte	0x3fe0000000000000	/* 0.5 */
-
-L(DPone):
-	.8byte	0x3ff0000000000000	/* 1.0 */
-
-L(DPtwo):
-	.8byte	0x4000000000000000	/* 2.0 */
-
-weak_alias(__cosf, cosf)
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
deleted file mode 100644
index fcdcb60293..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* isfinite().  PowerPC64/POWER8 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* int [r3] __finite ([fp1] x)  */
-
-EALIGN (__finite, 4, 0)
-	CALL_MCOUNT 0
-	MFVSRD_R3_V1
-	lis     r9,0x8010
-	clrldi  r3,r3,1       /* r3 = r3 & 0x8000000000000000  */
-	rldicr  r9,r9,32,31   /* r9 = (r9 << 32) & 0xffffffff  */
-	add     r3,r3,r9
-	rldicl  r3,r3,1,63
-	blr
-END (__finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__finite, __finitef)
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-#if IS_IN (libm)
-# if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0)
-compat_symbol (libm, __finite, __finitel, GLIBC_2_0)
-compat_symbol (libm, finite, finitel, GLIBC_2_0)
-# endif
-#else
-# if LONG_DOUBLE_COMPAT (libc, GLIBC_2_0)
-compat_symbol (libc, __finite, __finitel, GLIBC_2_0);
-compat_symbol (libc, finite, finitel, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
deleted file mode 100644
index 54bd94176d..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_finite.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
deleted file mode 100644
index 32814e4525..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* isinf().  PowerPC64/POWER8 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* int [r3] __isinf([fp1] x)  */
-
-EALIGN (__isinf, 4, 0)
-	CALL_MCOUNT 0
-	MFVSRD_R3_V1
-	lis     r9,0x7ff0     /* r9 = 0x7ff0  */
-	rldicl  r10,r3,0,1    /* r10 = r3 & (0x8000000000000000)  */
-	sldi    r9,r9,32      /* r9 = r9 << 52  */
-	cmpd    cr7,r10,r9    /* fp1 & 0x7ff0000000000000 ?  */
-	beq     cr7,L(inf)
-	li      r3,0          /* Not inf  */
-	blr
-L(inf):
-	sradi   r3,r3,63      /* r3 = r3 >> 63  */
-	ori     r3,r3,1       /* r3 = r3 | 0x1  */
-	blr
-END (__isinf)
-
-hidden_def (__isinf)
-weak_alias (__isinf, isinf)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isinf, __isinff)
-hidden_def (__isinff)
-weak_alias (__isinff, isinff)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isinf, __isinfl)
-weak_alias (__isinf, isinfl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0);
-compat_symbol (libc, isinf, isinfl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S
deleted file mode 100644
index be759e091e..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isinf.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
deleted file mode 100644
index af52e502b7..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
+++ /dev/null
@@ -1,56 +0,0 @@
-/* isnan().  PowerPC64/POWER8 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* int [r3] __isnan([f1] x)  */
-
-EALIGN (__isnan, 4, 0)
-	CALL_MCOUNT 0
-	MFVSRD_R3_V1
-	lis     r9,0x7ff0
-	clrldi  r3,r3,1       /* r3 = r3 & 0x8000000000000000  */
-	rldicr  r9,r9,32,31   /* r9 = (r9 << 32) & 0xffffffff  */
-	subf    r3,r3,r9
-	rldicl  r3,r3,1,63
-	blr
-END (__isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-/* It turns out that the 'double' version will also always work for
-   single-precision.  */
-strong_alias (__isnan, __isnanf)
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__isnan, __isnanl)
-weak_alias (__isnan, isnanl)
-#endif
-
-#if !IS_IN (libm)
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0);
-compat_symbol (libc, isnan, isnanl, GLIBC_2_0);
-# endif
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S
deleted file mode 100644
index b48c85e0d3..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_isnanf.S
+++ /dev/null
@@ -1 +0,0 @@
-/* This function uses the same code as s_isnan.S.  */
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
deleted file mode 100644
index aa180b6901..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Round double to long int.  POWER8 PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
-	CALL_MCOUNT 0
-	fctid	fp1,fp1
-	MFVSRD_R3_V1
-	blr
-END (__llrint)
-
-strong_alias (__llrint, __lrint)
-weak_alias (__llrint, llrint)
-weak_alias (__lrint, lrint)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__llrint, __llrintl)
-weak_alias (__llrint, llrintl)
-strong_alias (__lrint, __lrintl)
-weak_alias (__lrint, lrintl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llrint, llrintl, GLIBC_2_1)
-compat_symbol (libm, __lrint, lrintl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
deleted file mode 100644
index 043fc6a089..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
+++ /dev/null
@@ -1,48 +0,0 @@
-/* llround function.  POWER8 PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <endian.h>
-#include <math_ldbl_opt.h>
-
-#define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
-
-/* long long [r3] llround (float x [fp1])  */
-
-ENTRY (__llround)
-	CALL_MCOUNT 0
-	frin	fp1,fp1	/* Round to nearest +-0.5.  */
-	fctidz	fp1,fp1	/* Convert To Integer DW round toward 0.  */
-	MFVSRD_R3_V1
-	blr
-END (__llround)
-
-strong_alias (__llround, __lround)
-weak_alias (__llround, llround)
-weak_alias (__lround, lround)
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (__llround, llroundl)
-strong_alias (__llround, __llroundl)
-weak_alias (__lround, lroundl)
-strong_alias (__lround, __lroundl)
-#endif
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __llround, llroundl, GLIBC_2_1)
-compat_symbol (libm, __lround, lroundl, GLIBC_2_1)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
deleted file mode 100644
index fb0add3462..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
+++ /dev/null
@@ -1,519 +0,0 @@
-/* Optimized sinf().  PowerPC64/POWER8 version.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#define _ERRNO_H	1
-#include <bits/errno.h>
-
-#define FRAMESIZE (FRAME_MIN_SIZE+16)
-
-#define FLOAT_EXPONENT_SHIFT	23
-#define FLOAT_EXPONENT_BIAS	127
-#define INTEGER_BITS		3
-
-#define PI_4		0x3f490fdb	/* PI/4 */
-#define NINEPI_4	0x40e231d6	/* 9 * PI/4 */
-#define TWO_PN5		0x3d000000	/* 2^-5 */
-#define TWO_PN27	0x32000000	/* 2^-27 */
-#define INFINITY	0x7f800000
-#define TWO_P23		0x4b000000	/* 2^27 */
-#define FX_FRACTION_1_28 0x9249250	/* 0x100000000 / 28 + 1 */
-
-	/* Implements the function
-
-	   float [fp1] sinf (float [fp1] x)  */
-
-	.machine power8
-EALIGN(__sinf, 4, 0)
-	addis	r9,r2,L(anchor)@toc@ha
-	addi	r9,r9,L(anchor)@toc@l
-
-	lis	r4,PI_4@h
-	ori	r4,r4,PI_4@l
-
-	xscvdpspn v0,v1
-	mfvsrd	r8,v0
-	rldicl	r3,r8,32,33		/* Remove sign bit.  */
-
-	cmpw	r3,r4
-	bge	L(greater_or_equal_pio4)
-
-	lis	r4,TWO_PN5@h
-	ori	r4,r4,TWO_PN5@l
-
-	cmpw	r3,r4
-	blt	L(less_2pn5)
-
-	/* Chebyshev polynomial of the form:
-	 * x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))).  */
-
-	lfd	fp9,(L(S0)-L(anchor))(r9)
-	lfd	fp10,(L(S1)-L(anchor))(r9)
-	lfd	fp11,(L(S2)-L(anchor))(r9)
-	lfd	fp12,(L(S3)-L(anchor))(r9)
-	lfd	fp13,(L(S4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	fmul	fp3,fp2,fp1		/* x^3 */
-
-	fmadd	fp4,fp2,fp13,fp12	/* S3+x^2*S4 */
-	fmadd	fp4,fp2,fp4,fp11	/* S2+x^2*(S3+x^2*S4) */
-	fmadd	fp4,fp2,fp4,fp10	/* S1+x^2*(S2+x^2*(S3+x^2*S4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4))) */
-	fmadd	fp1,fp3,fp4,fp1		/* x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))) */
-	frsp	fp1,fp1			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(greater_or_equal_pio4):
-	lis	r4,NINEPI_4@h
-	ori	r4,r4,NINEPI_4@l
-	cmpw	r3,r4
-	bge	L(greater_or_equal_9pio4)
-
-	/* Calculate quotient of |x|/(PI/4).  */
-	lfd	fp2,(L(invpio4)-L(anchor))(r9)
-	fabs	fp1,fp1			/* |x| */
-	fmul	fp2,fp1,fp2		/* |x|/(PI/4) */
-	fctiduz	fp2,fp2
-	mfvsrd	r3,v2			/* n = |x| mod PI/4 */
-
-	/* Now use that quotient to find |x| mod (PI/2).  */
-	addi	r7,r3,1
-	rldicr	r5,r7,2,60		/* ((n+1) >> 1) << 3 */
-	addi	r6,r9,(L(pio2_table)-L(anchor))
-	lfdx	fp4,r5,r6
-	fsub	fp1,fp1,fp4
-
-	.balign 16
-L(reduced):
-	/* Now we are in the range -PI/4 to PI/4.  */
-
-	/* Work out if we are in a positive or negative primary interval.  */
-	rldicl	r4,r7,62,63		/* ((n+1) >> 2) & 1 */
-
-	/* We are operating on |x|, so we need to add back the original
-	   sign.  */
-	rldicl	r8,r8,33,63		/* (x >> 31) & 1, ie the sign bit.  */
-	xor	r4,r4,r8		/* 0 if result should be positive,
-					   1 if negative.  */
-
-	/* Load a 1.0 or -1.0.  */
-	addi	r5,r9,(L(ones)-L(anchor))
-	sldi	r4,r4,3
-	lfdx	fp0,r4,r5
-
-	/* Are we in the primary interval of sin or cos?  */
-	andi.	r4,r7,0x2
-	bne	L(cos)
-
-	/* Chebyshev polynomial of the form:
-	   x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))).  */
-
-	lfd	fp9,(L(S0)-L(anchor))(r9)
-	lfd	fp10,(L(S1)-L(anchor))(r9)
-	lfd	fp11,(L(S2)-L(anchor))(r9)
-	lfd	fp12,(L(S3)-L(anchor))(r9)
-	lfd	fp13,(L(S4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	fmul	fp3,fp2,fp1		/* x^3 */
-
-	fmadd	fp4,fp2,fp13,fp12	/* S3+x^2*S4 */
-	fmadd	fp4,fp2,fp4,fp11	/* S2+x^2*(S3+x^2*S4) */
-	fmadd	fp4,fp2,fp4,fp10	/* S1+x^2*(S2+x^2*(S3+x^2*S4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4))) */
-	fmadd	fp4,fp3,fp4,fp1		/* x+x^3*(S0+x^2*(S1+x^2*(S2+x^2*(S3+x^2*S4)))) */
-	fmul	fp4,fp4,fp0		/* Add in the sign.  */
-	frsp	fp1,fp4			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(cos):
-	/* Chebyshev polynomial of the form:
-	   1.0+x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))).  */
-
-	lfd	fp9,(L(C0)-L(anchor))(r9)
-	lfd	fp10,(L(C1)-L(anchor))(r9)
-	lfd	fp11,(L(C2)-L(anchor))(r9)
-	lfd	fp12,(L(C3)-L(anchor))(r9)
-	lfd	fp13,(L(C4)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	lfd	fp3,(L(DPone)-L(anchor))(r9)
-
-	fmadd	fp4,fp2,fp13,fp12	/* C3+x^2*C4 */
-	fmadd	fp4,fp2,fp4,fp11	/* C2+x^2*(C3+x^2*C4) */
-	fmadd	fp4,fp2,fp4,fp10	/* C1+x^2*(C2+x^2*(C3+x^2*C4)) */
-	fmadd	fp4,fp2,fp4,fp9		/* C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4))) */
-	fmadd	fp4,fp2,fp4,fp3		/* 1.0 + x^2*(C0+x^2*(C1+x^2*(C2+x^2*(C3+x^2*C4)))) */
-	fmul	fp4,fp4,fp0		/* Add in the sign.  */
-	frsp	fp1,fp4			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(greater_or_equal_9pio4):
-	lis	r4,INFINITY@h
-	ori	r4,r4,INFINITY@l
-	cmpw	r3,r4
-	bge	L(inf_or_nan)
-
-	lis	r4,TWO_P23@h
-	ori	r4,r4,TWO_P23@l
-	cmpw	r3,r4
-	bge	L(greater_or_equal_2p23)
-
-	fabs	fp1,fp1			/* |x| */
-
-	/* Calculate quotient of |x|/(PI/4).  */
-	lfd	fp2,(L(invpio4)-L(anchor))(r9)
-
-	lfd	fp3,(L(DPone)-L(anchor))(r9)
-	lfd	fp4,(L(DPhalf)-L(anchor))(r9)
-	fmul	fp2,fp1,fp2		/* |x|/(PI/4) */
-	friz	fp2,fp2			/* n = floor(|x|/(PI/4)) */
-
-	/* Calculate (n + 1) / 2.  */
-	fadd	fp2,fp2,fp3		/* n + 1 */
-	fmul	fp3,fp2,fp4		/* (n + 1) / 2 */
-	friz	fp3,fp3
-
-	lfd	fp4,(L(pio2hi)-L(anchor))(r9)
-	lfd	fp5,(L(pio2lo)-L(anchor))(r9)
-
-	fmul	fp6,fp4,fp3
-	fadd	fp6,fp6,fp1
-	fmadd	fp1,fp5,fp3,fp6
-
-	fctiduz	fp2,fp2
-	mfvsrd	r7,v2			/* n + 1 */
-
-	b	L(reduced)
-
-	.balign 16
-L(inf_or_nan):
-	bne	L(skip_errno_setting)	/* Is a NAN?  */
-
-	/* We delayed the creation of the stack frame, as well as the saving of
-	   the link register, because only at this point, we are sure that
-	   doing so is actually needed.  */
-
-	stfd	fp1,-8(r1)
-
-	/* Save the link register.  */
-	mflr	r0
-	std	r0,16(r1)
-	cfi_offset(lr, 16)
-
-	/* Create the stack frame.  */
-	stdu	r1,-FRAMESIZE(r1)
-	cfi_adjust_cfa_offset(FRAMESIZE)
-
-	bl	JUMPTARGET(__errno_location)
-	nop
-
-	/* Restore the stack frame.  */
-	addi	r1,r1,FRAMESIZE
-	cfi_adjust_cfa_offset(-FRAMESIZE)
-	/* Restore the link register.  */
-	ld	r0,16(r1)
-	mtlr	r0
-
-	lfd	fp1,-8(r1)
-
-	/* errno = EDOM */
-	li	r4,EDOM
-	stw	r4,0(r3)
-
-L(skip_errno_setting):
-	fsub	fp1,fp1,fp1		/* x - x */
-	blr
-
-	.balign 16
-L(greater_or_equal_2p23):
-	fabs	fp1,fp1
-
-	srwi	r4,r3,FLOAT_EXPONENT_SHIFT
-	subi	r4,r4,FLOAT_EXPONENT_BIAS
-
-	/* We reduce the input modulo pi/4, so we need 3 bits of integer
-	   to determine where in 2*pi we are. Index into our array
-	   accordingly.  */
-	addi r4,r4,INTEGER_BITS
-
-	/* To avoid an expensive divide, for the range we care about (0 - 127)
-	   we can transform x/28 into:
-
-	   x/28 = (x * ((0x100000000 / 28) + 1)) >> 32
-
-	   mulhwu returns the top 32 bits of the 64 bit result, doing the
-	   shift for us in the same instruction. The top 32 bits are undefined,
-	   so we have to mask them.  */
-
-	lis	r6,FX_FRACTION_1_28@h
-	ori	r6,r6,FX_FRACTION_1_28@l
-	mulhwu	r5,r4,r6
-	clrldi	r5,r5,32
-
-	/* Get our pointer into the invpio4_table array.  */
-	sldi	r4,r5,3
-	addi	r6,r9,(L(invpio4_table)-L(anchor))
-	add	r4,r4,r6
-
-	lfd	fp2,0(r4)
-	lfd	fp3,8(r4)
-	lfd	fp4,16(r4)
-	lfd	fp5,24(r4)
-
-	fmul	fp6,fp2,fp1
-	fmul	fp7,fp3,fp1
-	fmul	fp8,fp4,fp1
-	fmul	fp9,fp5,fp1
-
-	/* Mask off larger integer bits in highest double word that we don't
-	   care about to avoid losing precision when combining with smaller
-	   values.  */
-	fctiduz	fp10,fp6
-	mfvsrd	r7,v10
-	rldicr	r7,r7,0,(63-INTEGER_BITS)
-	mtvsrd	v10,r7
-	fcfidu	fp10,fp10		/* Integer bits.  */
-
-	fsub	fp6,fp6,fp10		/* highest -= integer bits */
-
-	/* Work out the integer component, rounded down. Use the top two
-	   limbs for this.  */
-	fadd	fp10,fp6,fp7		/* highest + higher */
-
-	fctiduz	fp10,fp10
-	mfvsrd	r7,v10
-	andi.	r0,r7,1
-	fcfidu	fp10,fp10
-
-	/* Subtract integer component from highest limb.  */
-	fsub	fp12,fp6,fp10
-
-	beq	L(even_integer)
-
-	/* Our integer component is odd, so we are in the -PI/4 to 0 primary
-	   region. We need to shift our result down by PI/4, and to do this
-	   in the mod (4/PI) space we simply subtract 1.  */
-	lfd	fp11,(L(DPone)-L(anchor))(r9)
-	fsub	fp12,fp12,fp11
-
-	/* Now add up all the limbs in order.  */
-	fadd	fp12,fp12,fp7
-	fadd	fp12,fp12,fp8
-	fadd	fp12,fp12,fp9
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-L(even_integer):
-	lfd	fp11,(L(DPone)-L(anchor))(r9)
-
-	/* Now add up all the limbs in order.  */
-	fadd	fp12,fp12,fp7
-	fadd	fp12,r12,fp8
-	fadd	fp12,r12,fp9
-
-	/* We need to check if the addition of all the limbs resulted in us
-	   overflowing 1.0.  */
-	fcmpu	0,fp12,fp11
-	bgt	L(greater_than_one)
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-L(greater_than_one):
-	/* We did overflow 1.0 when adding up all the limbs. Add 1.0 to our
-	   integer, and subtract 1.0 from our result. Since that makes the
-	   integer component odd, we need to subtract another 1.0 as
-	   explained above.  */
-	addi	r7,r7,1
-
-	lfd	fp11,(L(DPtwo)-L(anchor))(r9)
-	fsub	fp12,fp12,fp11
-
-	/* And finally multiply by pi/4.  */
-	lfd	fp13,(L(pio4)-L(anchor))(r9)
-	fmul	fp1,fp12,fp13
-
-	addi	r7,r7,1
-	b	L(reduced)
-
-	.balign 16
-L(less_2pn5):
-	lis	r4,TWO_PN27@h
-	ori	r4,r4,TWO_PN27@l
-
-	cmpw	r3,r4
-	blt	L(less_2pn27)
-
-	/* A simpler Chebyshev approximation is close enough for this range:
-	   x+x^3*(SS0+x^2*SS1).  */
-
-	lfd	fp10,(L(SS0)-L(anchor))(r9)
-	lfd	fp11,(L(SS1)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp1		/* x^2 */
-	fmul	fp3,fp2,fp1		/* x^3 */
-
-	fmadd	fp4,fp2,fp11,fp10	/* SS0+x^2*SS1 */
-	fmadd	fp1,fp3,fp4,fp1		/* x+x^3*(SS0+x^2*SS1) */
-
-	frsp	fp1,fp1			/* Round to single precision.  */
-
-	blr
-
-	.balign 16
-L(less_2pn27):
-	cmpwi	r3,0
-	beq	L(zero)
-
-	/* Handle some special cases:
-
-	   sinf(subnormal) raises inexact/underflow
-	   sinf(min_normalized) raises inexact/underflow
-	   sinf(normalized) raises inexact.  */
-
-	lfd	fp2,(L(small)-L(anchor))(r9)
-
-	fmul	fp2,fp1,fp2		/* x * small */
-	fsub	fp1,fp1,fp2		/* x - x * small */
-
-	frsp	fp1,fp1
-
-	blr
-
-	.balign 16
-L(zero):
-	blr
-
-END (__sinf)
-
-	.section .rodata, "a"
-
-	.balign 8
-
-L(anchor):
-
-	/* Chebyshev constants for sin, range -PI/4 - PI/4.  */
-L(S0):	.8byte	0xbfc5555555551cd9
-L(S1):	.8byte	0x3f81111110c2688b
-L(S2):	.8byte	0xbf2a019f8b4bd1f9
-L(S3):	.8byte	0x3ec71d7264e6b5b4
-L(S4):	.8byte	0xbe5a947e1674b58a
-
-	/* Chebyshev constants for sin, range 2^-27 - 2^-5.  */
-L(SS0):	.8byte	0xbfc555555543d49d
-L(SS1):	.8byte	0x3f8110f475cec8c5
-
-	/* Chebyshev constants for cos, range -PI/4 - PI/4.  */
-L(C0):	.8byte	0xbfdffffffffe98ae
-L(C1):	.8byte	0x3fa55555545c50c7
-L(C2):	.8byte	0xbf56c16b348b6874
-L(C3):	.8byte	0x3efa00eb9ac43cc0
-L(C4):	.8byte	0xbe923c97dd8844d7
-
-L(invpio2):
-	.8byte	0x3fe45f306dc9c883	/* 2/PI */
-
-L(invpio4):
-	.8byte	0x3ff45f306dc9c883	/* 4/PI */
-
-L(invpio4_table):
-	.8byte	0x0000000000000000
-	.8byte	0x3ff45f306c000000
-	.8byte	0x3e3c9c882a000000
-	.8byte	0x3c54fe13a8000000
-	.8byte	0x3aaf47d4d0000000
-	.8byte	0x38fbb81b6c000000
-	.8byte	0x3714acc9e0000000
-	.8byte	0x3560e4107c000000
-	.8byte	0x33bca2c756000000
-	.8byte	0x31fbd778ac000000
-	.8byte	0x300b7246e0000000
-	.8byte	0x2e5d2126e8000000
-	.8byte	0x2c97003248000000
-	.8byte	0x2ad77504e8000000
-	.8byte	0x290921cfe0000000
-	.8byte	0x274deb1cb0000000
-	.8byte	0x25829a73e0000000
-	.8byte	0x23fd1046be000000
-	.8byte	0x2224baed10000000
-	.8byte	0x20709d338e000000
-	.8byte	0x1e535a2f80000000
-	.8byte	0x1cef904e64000000
-	.8byte	0x1b0d639830000000
-	.8byte	0x1964ce7d24000000
-	.8byte	0x17b908bf16000000
-
-L(pio4):
-	.8byte	0x3fe921fb54442d18	/* PI/4 */
-
-/* PI/2 as a sum of two doubles. We only use 32 bits of the upper limb
-   to avoid losing significant bits when multiplying with up to
-   (2^22)/(pi/2).  */
-L(pio2hi):
-	.8byte	0xbff921fb54400000
-
-L(pio2lo):
-	.8byte	0xbdd0b4611a626332
-
-L(pio2_table):
-	.8byte	0
-	.8byte	0x3ff921fb54442d18	/* 1 * PI/2 */
-	.8byte	0x400921fb54442d18	/* 2 * PI/2 */
-	.8byte	0x4012d97c7f3321d2	/* 3 * PI/2 */
-	.8byte	0x401921fb54442d18	/* 4 * PI/2 */
-	.8byte	0x401f6a7a2955385e	/* 5 * PI/2 */
-	.8byte	0x4022d97c7f3321d2	/* 6 * PI/2 */
-	.8byte	0x4025fdbbe9bba775	/* 7 * PI/2 */
-	.8byte	0x402921fb54442d18	/* 8 * PI/2 */
-	.8byte	0x402c463abeccb2bb	/* 9 * PI/2 */
-	.8byte	0x402f6a7a2955385e	/* 10 * PI/2 */
-
-L(small):
-	.8byte	0x3cd0000000000000	/* 2^-50 */
-
-L(ones):
-	.8byte	0x3ff0000000000000	/* +1.0 */
-	.8byte	0xbff0000000000000	/* -1.0 */
-
-L(DPhalf):
-	.8byte	0x3fe0000000000000	/* 0.5 */
-
-L(DPone):
-	.8byte	0x3ff0000000000000	/* 1.0 */
-
-L(DPtwo):
-	.8byte	0x4000000000000000	/* 2.0 */
-
-weak_alias(__sinf, sinf)
diff --git a/sysdeps/powerpc/powerpc64/power8/memcmp.S b/sysdeps/powerpc/powerpc64/power8/memcmp.S
deleted file mode 100644
index 46b9c0067a..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/memcmp.S
+++ /dev/null
@@ -1,1447 +0,0 @@
-/* Optimized memcmp implementation for POWER7/PowerPC64.
-   Copyright (C) 2010-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* int [r3] memcmp (const char *s1 [r3],
-		    const char *s2 [r4],
-		    size_t size [r5])  */
-
-/* TODO: change these to the actual instructions when the minimum required
-   binutils allows it.  */
-#define MFVRD(r,v)	.long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#ifndef MEMCMP
-# define MEMCMP memcmp
-#endif
-	.machine power7
-EALIGN (MEMCMP, 4, 0)
-	CALL_MCOUNT 3
-
-#define rRTN		r3
-#define rSTR1		r3	/* First string arg.  */
-#define rSTR2		r4	/* Second string arg.  */
-#define rN		r5	/* Max string length.  */
-#define rWORD1		r6	/* Current word in s1.  */
-#define rWORD2		r7	/* Current word in s2.  */
-#define rWORD3		r8	/* Next word in s1.  */
-#define rWORD4		r9	/* Next word in s2.  */
-#define rWORD5		r10	/* Next word in s1.  */
-#define rWORD6		r11	/* Next word in s2.  */
-
-#define rOFF8		r20	/* 8 bytes offset.  */
-#define rOFF16  	r21	/* 16 bytes offset.  */
-#define rOFF24		r22	/* 24 bytes offset.  */
-#define rOFF32		r23	/* 24 bytes offset.  */
-#define rWORD6_SHIFT	r24	/* Left rotation temp for rWORD8.  */
-#define rWORD4_SHIFT	r25	/* Left rotation temp for rWORD6.  */
-#define rWORD2_SHIFT	r26	/* Left rotation temp for rWORD4.  */
-#define rWORD8_SHIFT	r27	/* Left rotation temp for rWORD2.  */
-#define rSHR		r28	/* Unaligned shift right count.  */
-#define rSHL		r29	/* Unaligned shift left count.  */
-#define rWORD7		r30	/* Next word in s1.  */
-#define rWORD8		r31	/* Next word in s2.  */
-
-#define rWORD8SAVE	(-8)
-#define rWORD7SAVE	(-16)
-#define rOFF8SAVE	(-24)
-#define rOFF16SAVE	(-32)
-#define rOFF24SAVE	(-40)
-#define rOFF32SAVE	(-48)
-#define rSHRSAVE	(-56)
-#define rSHLSAVE	(-64)
-#define rWORD8SHIFTSAVE	(-72)
-#define rWORD2SHIFTSAVE	(-80)
-#define rWORD4SHIFTSAVE	(-88)
-#define rWORD6SHIFTSAVE	(-96)
-
-#ifdef __LITTLE_ENDIAN__
-# define LD	ldbrx
-#else
-# define LD	ldx
-#endif
-
-	xor	r10, rSTR2, rSTR1
-	cmpldi	cr6, rN, 0
-	cmpldi	cr1, rN, 8
-	clrldi.	r0, r10, 61
-	clrldi	r12, rSTR1, 61
-	cmpldi	cr5, r12, 0
-	beq-	cr6, L(zeroLength)
-	dcbt	0, rSTR1
-	dcbt	0, rSTR2
-	/* If less than 8 bytes or not aligned, use the unaligned
-	   byte loop.  */
-	blt	cr1, L(bytealigned)
-	bne	L(unalignedqw)
-/* At this point we know both strings have the same alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then we are already double word
-   aligned and can perform the DW aligned loop.  */
-
-	.align	4
-L(samealignment):
-	or	r11, rSTR2, rSTR1
-	clrldi.	r11, r11, 60
-	beq	L(qw_align)
-	/* Try to align to QW else proceed to DW loop.  */
-	clrldi.	r10, r10, 60
-	bne	L(DW)
-	/* For the difference to reach QW alignment, load as DW.  */
-	clrrdi	rSTR1, rSTR1, 3
-	clrrdi	rSTR2, rSTR2, 3
-	subfic	r10, r12, 8
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	sldi	r9, r10, 3
-	subfic	r9, r9, 64
-	sld	rWORD1, rWORD1, r9
-	sld	rWORD2, rWORD2, r9
-	cmpld	cr6, rWORD1, rWORD2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(ret_diff)
-	subf	rN, r10, rN
-
-	cmpld	cr6, r11, r12
-	bgt	cr6, L(qw_align)
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpld	cr6, rWORD1, rWORD2
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(different)
-	cmpldi	cr6, rN, 8
-	ble	cr6, L(zeroLength)
-	addi	rN, rN, -8
-	/* Now both rSTR1 and rSTR2 are aligned to QW.  */
-	.align	4
-L(qw_align):
-	vspltisb	v0, 0
-	srdi.	r6, rN, 6
-	li	r8, 16
-	li	r10, 32
-	li	r11, 48
-	ble	cr0, L(lessthan64)
-	mtctr	r6
-	vspltisb	v8, 0
-	vspltisb	v6, 0
-	/* Aligned vector loop.  */
-	.align	4
-L(aligned_loop):
-	lvx	v4, 0, rSTR1
-	lvx	v5, 0, rSTR2
-	vcmpequb.	v7, v6, v8
-	bnl	cr6, L(different3)
-	lvx	v6, rSTR1, r8
-	lvx	v8, rSTR2, r8
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	lvx	v4, rSTR1, r10
-	lvx	v5, rSTR2, r10
-	vcmpequb.	v7, v6, v8
-	bnl	cr6, L(different3)
-	lvx	v6, rSTR1, r11
-	lvx	v8, rSTR2, r11
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	addi	rSTR1, rSTR1, 64
-	addi	rSTR2, rSTR2, 64
-	bdnz	L(aligned_loop)
-	vcmpequb.	v7, v6, v8
-	bnl	cr6, L(different3)
-	clrldi	rN, rN, 58
-	/* Handle remainder for aligned loop.  */
-	.align	4
-L(lessthan64):
-	mr	r9, rSTR1
-	cmpdi	cr6, rN, 0
-	li	rSTR1, 0
-	blelr	cr6
-	lvx	v4, 0, r9
-	lvx	v5, 0, rSTR2
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r8
-	lvx	v5, rSTR2, r8
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r10
-	lvx	v5, rSTR2, r10
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r11
-	lvx	v5, rSTR2, r11
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	blr
-
-	/* Calculate and return the difference.  */
-	.align 4
-L(different1):
-	cmpdi	cr6, rN, 16
-	bge	cr6, L(different2)
-	/* Discard unwanted bytes.  */
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v1, 0, rN
-	vperm	v4, v4, v0, v1
-	vperm	v5, v5, v0, v1
-#else
-	lvsl	v1, 0, rN
-	vperm	v4, v0, v4, v1
-	vperm	v5, v0, v5, v1
-#endif
-	vcmpequb.	v7, v4, v5
-	li	rRTN, 0
-	bltlr	cr6
-	.align 4
-L(different2):
-#ifdef __LITTLE_ENDIAN__
-	/* Reverse bytes for direct comparison.  */
-	lvsl	v10, r0, r0
-	vspltisb	v8, 15
-	vsububm	v9, v8, v10
-	vperm	v4, v4, v0, v9
-	vperm	v5, v5, v0, v9
-#endif
-	MFVRD(r7, v4)
-	MFVRD(r9, v5)
-	cmpld	cr6, r7, r9
-	bne	cr6, L(ret_diff)
-	/* Difference in second DW.  */
-	vsldoi	v4, v4, v4, 8
-	vsldoi	v5, v5, v5, 8
-	MFVRD(r7, v4)
-	MFVRD(r9, v5)
-	cmpld	cr6, r7, r9
-L(ret_diff):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-L(different3):
-#ifdef __LITTLE_ENDIAN__
-	/* Reverse bytes for direct comparison.  */
-	vspltisb	v9, 15
-	lvsl	v10, r0, r0
-	vsububm	v9, v9, v10
-	vperm	v6, v6, v0, v9
-	vperm	v8, v8, v0, v9
-#endif
-	MFVRD(r7, v6)
-	MFVRD(r9, v8)
-	cmpld	cr6, r7, r9
-	bne	cr6, L(ret_diff)
-	/* Difference in second DW.  */
-	vsldoi	v6, v6, v6, 8
-	vsldoi	v8, v8, v8, 8
-	MFVRD(r7, v6)
-	MFVRD(r9, v8)
-	cmpld	cr6, r7, r9
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-	.align 4
-L(different):
-	cmpldi	cr7, rN, 8
-	bgt	cr7, L(end)
-	/* Skip unwanted bytes.  */
-	sldi	r8, rN, 3
-	subfic	r8, r8, 64
-	srd	rWORD1, rWORD1, r8
-	srd	rWORD2, rWORD2, r8
-	cmpld	cr6, rWORD1, rWORD2
-	li	rRTN, 0
-	beqlr	cr6
-L(end):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(unalignedqw):
-	/* Proceed to DW unaligned loop,if there is a chance of pagecross.  */
-	rldicl	r9, rSTR1, 0, 52
-	add	r9, r9, rN
-	cmpldi	cr0, r9, 4096-16
-	bgt	cr0, L(unaligned)
-	rldicl	r9, rSTR2, 0, 52
-	add	r9, r9, rN
-	cmpldi	cr0, r9, 4096-16
-	bgt	cr0, L(unaligned)
-	li	r0, 0
-	li	r8, 16
-	vspltisb	v0, 0
-	/* Check if rSTR1 is aligned to QW.  */
-	andi.	r11, rSTR1, 0xF
-	beq	L(s1_align)
-
-	/* Compare 16B and align S1 to QW.  */
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v10, 0, rSTR1	/* Compute mask.  */
-	lvsr	v6, 0, rSTR2	/* Compute mask.  */
-#else
-	lvsl	v10, 0, rSTR1	/* Compute mask.  */
-	lvsl	v6, 0, rSTR2	/* Compute mask.  */
-#endif
-	lvx	v5, 0, rSTR2
-	lvx	v9, rSTR2, r8
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v9, v5, v6
-#else
-	vperm	v5, v5, v9, v6
-#endif
-	lvx	v4, 0, rSTR1
-	lvx	v9, rSTR1, r8
-#ifdef __LITTLE_ENDIAN__
-	vperm	v4, v9, v4, v10
-#else
-	vperm	v4, v4, v9, v10
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	cmpldi	cr6, rN, 16
-	ble	cr6, L(zeroLength)
-	subfic	r11, r11, 16
-	subf	rN, r11, rN
-	add	rSTR1, rSTR1, r11
-	add	rSTR2, rSTR2, r11
-
-	/* As s1 is QW aligned prepare for unaligned loop.  */
-	.align	4
-L(s1_align):
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v6, 0, rSTR2
-#else
-	lvsl	v6, 0, rSTR2
-#endif
-	lvx	v5, 0, rSTR2
-	srdi.	r6, rN, 6
-	li	r10, 32
-	li	r11, 48
-	ble	cr0, L(lessthan64_unalign)
-	mtctr	r6
-	li 	r9, 64
-	/* Unaligned vector loop.  */
-	.align	4
-L(unalign_qwloop):
-	lvx	v4, 0, rSTR1
-	lvx	v10, rSTR2, r8
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	vor	v5, v10, v10
-	lvx	v4, rSTR1, r8
-	lvx	v10, rSTR2, r10
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	vor	v5, v10, v10
-	lvx	v4, rSTR1, r10
-	lvx	v10, rSTR2, r11
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	vor	v5, v10, v10
-	lvx	v4, rSTR1, r11
-	lvx	v10, rSTR2, r9
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different2)
-	vor	v5, v10, v10
-	addi	rSTR1, rSTR1, 64
-	addi	rSTR2, rSTR2, 64
-	bdnz	L(unalign_qwloop)
-	clrldi	rN, rN, 58
-	/* Handle remainder for unaligned loop.  */
-	.align	4
-L(lessthan64_unalign):
-	mr	r9, rSTR1
-	cmpdi	cr6, rN, 0
-	li	rSTR1, 0
-	blelr	cr6
-	lvx	v4, 0, r9
-	lvx     v10, rSTR2, r8
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	vor	v5, v10, v10
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r8
-	lvx	v10, rSTR2, r10
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	vor	v5, v10, v10
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r10
-	lvx	v10, rSTR2, r11
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	vor	v5, v10, v10
-	addi	rN, rN, -16
-
-	cmpdi	cr6, rN, 0
-	blelr	cr6
-	lvx	v4, r9, r11
-	addi	r11, r11, 16
-	lvx	v10, rSTR2, r11
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v10, v5, v6
-#else
-	vperm	v5, v5, v10, v6
-#endif
-	vcmpequb.	v7, v5, v4
-	bnl	cr6, L(different1)
-	blr
-
-/* Otherwise we know the two strings have the same alignment (but not
-   yet DW).  So we force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DW aligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW.  This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected register pair.  */
-	.align	4
-L(DW):
-	std	rWORD8, rWORD8SAVE(r1)
-	std	rWORD7, rWORD7SAVE(r1)
-	std	rOFF8, rOFF8SAVE(r1)
-	std	rOFF16, rOFF16SAVE(r1)
-	std	rOFF24, rOFF24SAVE(r1)
-	std	rOFF32, rOFF32SAVE(r1)
-	cfi_offset(rWORD8, rWORD8SAVE)
-	cfi_offset(rWORD7, rWORD7SAVE)
-	cfi_offset(rOFF8, rOFF8SAVE)
-	cfi_offset(rOFF16, rOFF16SAVE)
-	cfi_offset(rOFF24, rOFF24SAVE)
-	cfi_offset(rOFF32, rOFF32SAVE)
-
-	li	rOFF8,8
-	li	rOFF16,16
-	li	rOFF24,24
-	li	rOFF32,32
-	clrrdi	rSTR1, rSTR1, 3
-	clrrdi	rSTR2, rSTR2, 3
-	beq	cr5, L(DWaligned)
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	srdi	r0, rN, 5	/* Divide by 32.  */
-	andi.	r12, rN, 24	/* Get the DW remainder.  */
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dPs4)
-	mtctr	r0
-	bgt	cr1, L(dPs3)
-	beq	cr1, L(dPs2)
-
-/* Remainder is 8.  */
-	.align	3
-L(dsP1):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP1e)
-/* Remainder is 16.  */
-	.align	4
-L(dPs2):
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD2, rWORD6
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-/* Do something useful in this cycle since we have to branch anyway.  */
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	b	L(dP2e)
-/* Remainder is 24.  */
-	.align	4
-L(dPs3):
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD2, rWORD6
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(dP3e)
-/* Count is a multiple of 32, remainder is 0.  */
-	.align	4
-L(dPs4):
-	mtctr	r0
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD2, rWORD6
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(dP4e)
-
-/* At this point we know both strings are double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWaligned):
-	andi.	r12, rN, 24	/* Get the DW remainder.  */
-	srdi	r0, rN, 5	/* Divide by 32.  */
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	beq	L(dP4)
-	bgt	cr1, L(dP3)
-	beq	cr1, L(dP2)
-
-/* Remainder is 8.  */
-	.align	4
-L(dP1):
-	mtctr	r0
-/* Normally we'd use rWORD7/rWORD8 here, but since we might exit early
-   (8-15 byte compare), we want to use only volatile registers.  This
-   means we can avoid restoring non-volatile registers since we did not
-   change any on the early exit path.  The key here is the non-early
-   exit path only cares about the condition code (cr5), not about which
-   register pair was used.  */
-	LD	rWORD5, 0, rSTR1
-	LD	rWORD6, 0, rSTR2
-	cmpld	cr5, rWORD5, rWORD6
-	blt	cr7, L(dP1x)
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-L(dP1e):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5x)
-	bne	cr7, L(dLcr7x)
-
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	bne	cr1, L(dLcr1)
-	cmpld	cr5, rWORD7, rWORD8
-	bdnz	L(dLoop)
-	bne	cr6, L(dLcr6)
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	.align	3
-L(dP1x):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 16.  */
-	.align	4
-L(dP2):
-	mtctr	r0
-	LD	rWORD5, 0, rSTR1
-	LD	rWORD6, 0, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP2x)
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-L(dP2e):
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	LD	rWORD3, rOFF24, rSTR1
-	LD	rWORD4, rOFF24, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(dLcr6)
-	bne	cr5, L(dLcr5)
-	b	L(dLoop2)
-	.align	4
-L(dP2x):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	sldi.	r12, rN, 3
-	bne	cr6, L(dLcr6x)
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr1, L(dLcr1x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Remainder is 24.  */
-	.align	4
-L(dP3):
-	mtctr	r0
-	LD	rWORD3, 0, rSTR1
-	LD	rWORD4, 0, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-L(dP3e):
-	LD	rWORD5, rOFF8, rSTR1
-	LD	rWORD6, rOFF8, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	blt	cr7, L(dP3x)
-	LD	rWORD7, rOFF16, rSTR1
-	LD	rWORD8, rOFF16, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	LD	rWORD1, rOFF24, rSTR1
-	LD	rWORD2, rOFF24, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	bne	cr1, L(dLcr1)
-	bne	cr6, L(dLcr6)
-	b	L(dLoop1)
-/* Again we are on a early exit path (24-31 byte compare), we want to
-   only use volatile registers and avoid restoring non-volatile
-   registers.  */
-	.align	4
-L(dP3x):
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	sldi.	r12, rN, 3
-	bne	cr1, L(dLcr1x)
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	bne	cr6, L(dLcr6x)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	bne	cr7, L(dLcr7x)
-	bne	L(d00)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-/* Count is a multiple of 32, remainder is 0.  */
-	.align	4
-L(dP4):
-	mtctr	r0
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-L(dP4e):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	LD	rWORD5, rOFF16, rSTR1
-	LD	rWORD6, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	LD	rWORD7, rOFF24, rSTR1
-	LD	rWORD8, rOFF24, rSTR2
-	addi	rSTR1, rSTR1, 24
-	addi	rSTR2, rSTR2, 24
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-	bne	cr1, L(dLcr1)
-	bdz-	L(d24)		/* Adjust CTR as we start with +4.  */
-/* This is the primary loop.  */
-	.align	4
-L(dLoop):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-L(dLoop1):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-L(dLoop2):
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(dLcr7)
-L(dLoop3):
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	bne	cr1, L(dLcr1)
-	cmpld	cr7, rWORD1, rWORD2
-	bdnz	L(dLoop)
-
-L(dL4):
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(dLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(dLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(d44):
-	bne	cr7, L(dLcr7)
-L(d34):
-	bne	cr1, L(dLcr1)
-L(d24):
-	bne	cr6, L(dLcr6)
-L(d14):
-	sldi.	r12, rN, 3
-	bne	cr5, L(dLcr5)
-L(d04):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	subfic	rN, r12, 64	/* Shift count is 64 - (rN * 8).  */
-	beq	L(duzeroLength)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  Since
-   we are aligned it is safe to load the whole double word, and use
-   shift right double to eliminate bits beyond the compare length.  */
-L(d00):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr7, L(dLcr7x)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-	.align	4
-L(dLcr7):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr7x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr1):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr1x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr6):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr6x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-	.align	4
-L(dLcr5):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dLcr5x):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 1
-	bgtlr	cr5
-	li	rRTN, -1
-	blr
-
-	.align	4
-L(bytealigned):
-	mtctr	rN
-
-/* We need to prime this loop.  This loop is swing modulo scheduled
-   to avoid pipe delays.  The dependent instruction latencies (load to
-   compare to conditional branch) is 2 to 3 cycles.  In this loop each
-   dispatch group ends in a branch and takes 1 cycle.  Effectively
-   the first iteration of the loop only serves to load operands and
-   branches based on compares are delayed until the next loop.
-
-   So we must precondition some registers and condition codes so that
-   we don't exit the loop early on the first iteration.  */
-
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	bdz	L(b11)
-	cmpld	cr7, rWORD1, rWORD2
-	lbz	rWORD3, 1(rSTR1)
-	lbz	rWORD4, 1(rSTR2)
-	bdz	L(b12)
-	cmpld	cr1, rWORD3, rWORD4
-	lbzu	rWORD5, 2(rSTR1)
-	lbzu	rWORD6, 2(rSTR2)
-	bdz	L(b13)
-	.align	4
-L(bLoop):
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	bne	cr7, L(bLcr7)
-
-	cmpld	cr6, rWORD5, rWORD6
-	bdz	L(b3i)
-
-	lbzu	rWORD3, 1(rSTR1)
-	lbzu	rWORD4, 1(rSTR2)
-	bne	cr1, L(bLcr1)
-
-	cmpld	cr7, rWORD1, rWORD2
-	bdz	L(b2i)
-
-	lbzu	rWORD5, 1(rSTR1)
-	lbzu	rWORD6, 1(rSTR2)
-	bne	cr6, L(bLcr6)
-
-	cmpld	cr1, rWORD3, rWORD4
-	bdnz	L(bLoop)
-
-/* We speculatively loading bytes before we have tested the previous
-   bytes.  But we must avoid overrunning the length (in the ctr) to
-   prevent these speculative loads from causing a segfault.  In this
-   case the loop will exit early (before the all pending bytes are
-   tested.  In this case we must complete the pending operations
-   before returning.  */
-L(b1i):
-	bne	cr7, L(bLcr7)
-	bne	cr1, L(bLcr1)
-	b	L(bx56)
-	.align	4
-L(b2i):
-	bne	cr6, L(bLcr6)
-	bne	cr7, L(bLcr7)
-	b	L(bx34)
-	.align	4
-L(b3i):
-	bne	cr1, L(bLcr1)
-	bne	cr6, L(bLcr6)
-	b	L(bx12)
-	.align	4
-L(bLcr7):
-	li	rRTN, 1
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-L(bLcr1):
-	li	rRTN, 1
-	bgtlr	cr1
-	li	rRTN, -1
-	blr
-L(bLcr6):
-	li	rRTN, 1
-	bgtlr	cr6
-	li	rRTN, -1
-	blr
-
-L(b13):
-	bne	cr7, L(bx12)
-	bne	cr1, L(bx34)
-L(bx56):
-	sub	rRTN, rWORD5, rWORD6
-	blr
-	nop
-L(b12):
-	bne	cr7, L(bx12)
-L(bx34):
-	sub	rRTN, rWORD3, rWORD4
-	blr
-L(b11):
-L(bx12):
-	sub	rRTN, rWORD1, rWORD2
-	blr
-
-	.align	4
-L(zeroLength):
-	li	rRTN, 0
-	blr
-
-	.align	4
-/* At this point we know the strings have different alignment and the
-   compare length is at least 8 bytes.  r12 contains the low order
-   3 bits of rSTR1 and cr5 contains the result of the logical compare
-   of r12 to 0.  If r12 == 0 then rStr1 is double word
-   aligned and can perform the DWunaligned loop.
-
-   Otherwise we know that rSTR1 is not already DW aligned yet.
-   So we can force the string addresses to the next lower DW
-   boundary and special case this first DW using shift left to
-   eliminate bits preceding the first byte.  Since we want to join the
-   normal (DWaligned) compare loop, starting at the second double word,
-   we need to adjust the length (rN) and special case the loop
-   versioning for the first DW.  This ensures that the loop count is
-   correct and the first DW (shifted) is in the expected resister pair.  */
-L(unaligned):
-	std	rWORD8, rWORD8SAVE(r1)
-	std	rWORD7, rWORD7SAVE(r1)
-	std	rOFF8, rOFF8SAVE(r1)
-	std	rOFF16, rOFF16SAVE(r1)
-	std	rOFF24, rOFF24SAVE(r1)
-	std	rOFF32, rOFF32SAVE(r1)
-	cfi_offset(rWORD8, rWORD8SAVE)
-	cfi_offset(rWORD7, rWORD7SAVE)
-	cfi_offset(rOFF8, rOFF8SAVE)
-	cfi_offset(rOFF16, rOFF16SAVE)
-	cfi_offset(rOFF24, rOFF24SAVE)
-	cfi_offset(rOFF32, rOFF32SAVE)
-	li	rOFF8,8
-	li	rOFF16,16
-	li	rOFF24,24
-	li	rOFF32,32
-	std	rSHL, rSHLSAVE(r1)
-	cfi_offset(rSHL, rSHLSAVE)
-	clrldi	rSHL, rSTR2, 61
-	beq	cr6, L(duzeroLength)
-	std	rSHR, rSHRSAVE(r1)
-	cfi_offset(rSHR, rSHRSAVE)
-	beq	cr5, L(DWunaligned)
-	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
-/* Adjust the logical start of rSTR2 to compensate for the extra bits
-   in the 1st rSTR1 DW.  */
-	sub	rWORD8_SHIFT, rSTR2, r12
-/* But do not attempt to address the DW before that DW that contains
-   the actual start of rSTR2.  */
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-/* Compute the left/right shift counts for the unaligned rSTR2,
-   compensating for the logical (DW aligned) start of rSTR1.  */
-	clrldi	rSHL, rWORD8_SHIFT, 61
-	clrrdi	rSTR1, rSTR1, 3
-	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	sldi	rSHL, rSHL, 3
-	cmpld	cr5, rWORD8_SHIFT, rSTR2
-	add	rN, rN, r12
-	sldi	rWORD6, r12, 3
-	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
-	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
-	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
-	subfic	rSHR, rSHL, 64
-	srdi	r0, rN, 5	/* Divide by 32.  */
-	andi.	r12, rN, 24	/* Get the DW remainder.  */
-/* We normally need to load 2 DWs to start the unaligned rSTR2, but in
-   this special case those bits may be discarded anyway.  Also we
-   must avoid loading a DW where none of the bits are part of rSTR2 as
-   this may cross a page boundary and cause a page fault.  */
-	li	rWORD8, 0
-	blt	cr5, L(dus0)
-	LD	rWORD8, 0, rSTR2
-	addi	rSTR2, rSTR2, 8
-	sld	rWORD8, rWORD8, rSHL
-
-L(dus0):
-	LD	rWORD1, 0, rSTR1
-	LD	rWORD2, 0, rSTR2
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	srd	r12, rWORD2, rSHR
-	clrldi	rN, rN, 61
-	beq	L(duPs4)
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	bgt	cr1, L(duPs3)
-	beq	cr1, L(duPs2)
-
-/* Remainder is 8.  */
-	.align	4
-L(dusP1):
-	sld	rWORD8_SHIFT, rWORD2, rSHL
-	sld	rWORD7, rWORD1, rWORD6
-	sld	rWORD8, rWORD8, rWORD6
-	bge	cr7, L(duP1e)
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16.  */
-	.align	4
-L(duPs2):
-	sld	rWORD6_SHIFT, rWORD2, rSHL
-	sld	rWORD5, rWORD1, rWORD6
-	sld	rWORD6, rWORD8, rWORD6
-	b	L(duP2e)
-/* Remainder is 24.  */
-	.align	4
-L(duPs3):
-	sld	rWORD4_SHIFT, rWORD2, rSHL
-	sld	rWORD3, rWORD1, rWORD6
-	sld	rWORD4, rWORD8, rWORD6
-	b	L(duP3e)
-/* Count is a multiple of 32, remainder is 0.  */
-	.align	4
-L(duPs4):
-	mtctr	r0
-	or	rWORD8, r12, rWORD8
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	sld	rWORD1, rWORD1, rWORD6
-	sld	rWORD2, rWORD8, rWORD6
-	b	L(duP4e)
-
-/* At this point we know rSTR1 is double word aligned and the
-   compare length is at least 8 bytes.  */
-	.align	4
-L(DWunaligned):
-	std	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	clrrdi	rSTR2, rSTR2, 3
-	std	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	srdi	r0, rN, 5	/* Divide by 32.  */
-	std	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	andi.	r12, rN, 24	/* Get the DW remainder.  */
-	std	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	cfi_offset(rWORD8_SHIFT, rWORD8SHIFTSAVE)
-	cfi_offset(rWORD2_SHIFT, rWORD2SHIFTSAVE)
-	cfi_offset(rWORD4_SHIFT, rWORD4SHIFTSAVE)
-	cfi_offset(rWORD6_SHIFT, rWORD6SHIFTSAVE)
-	sldi	rSHL, rSHL, 3
-	LD	rWORD6, 0, rSTR2
-	LD	rWORD8, rOFF8, rSTR2
-	addi	rSTR2, rSTR2, 8
-	cmpldi	cr1, r12, 16
-	cmpldi	cr7, rN, 32
-	clrldi	rN, rN, 61
-	subfic	rSHR, rSHL, 64
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	beq	L(duP4)
-	mtctr	r0
-	bgt	cr1, L(duP3)
-	beq	cr1, L(duP2)
-
-/* Remainder is 8.  */
-	.align	4
-L(duP1):
-	srd	r12, rWORD8, rSHR
-	LD	rWORD7, 0, rSTR1
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP1x)
-L(duP1e):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	bne	cr5, L(duLcr5)
-	or	rWORD4, r12, rWORD2_SHIFT
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	bne	cr7, L(duLcr7)
-	or	rWORD6, r0, rWORD4_SHIFT
-	cmpld	cr6, rWORD5, rWORD6
-	b	L(duLoop3)
-	.align	4
-/* At this point we exit early with the first double word compare
-   complete and remainder of 0 to 7 bytes.  See L(du14) for details on
-   how we handle the remaining bytes.  */
-L(duP1x):
-	cmpld	cr5, rWORD7, rWORD8
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-/* Remainder is 16.  */
-	.align	4
-L(duP2):
-	srd	r0, rWORD8, rSHR
-	LD	rWORD5, 0, rSTR1
-	or	rWORD6, r0, rWORD6_SHIFT
-	sld	rWORD6_SHIFT, rWORD8, rSHL
-L(duP2e):
-	LD	rWORD7, rOFF8, rSTR1
-	LD	rWORD8, rOFF8, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP2x)
-	LD	rWORD1, rOFF16, rSTR1
-	LD	rWORD2, rOFF16, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	LD	rWORD3, rOFF24, rSTR1
-	LD	rWORD4, rOFF24, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	cmpld	cr1, rWORD3, rWORD4
-	b	L(duLoop2)
-	.align	4
-L(duP2x):
-	cmpld	cr5, rWORD7, rWORD8
-	addi	rSTR1, rSTR1, 8
-	addi	rSTR2, rSTR2, 8
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Remainder is 24.  */
-	.align	4
-L(duP3):
-	srd	r12, rWORD8, rSHR
-	LD	rWORD3, 0, rSTR1
-	sld	rWORD4_SHIFT, rWORD8, rSHL
-	or	rWORD4, r12, rWORD6_SHIFT
-L(duP3e):
-	LD	rWORD5, rOFF8, rSTR1
-	LD	rWORD6, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-	LD	rWORD7, rOFF16, rSTR1
-	LD	rWORD8, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	blt	cr7, L(duP3x)
-	LD	rWORD1, rOFF24, rSTR1
-	LD	rWORD2, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	cmpld	cr7, rWORD1, rWORD2
-	b	L(duLoop1)
-	.align	4
-L(duP3x):
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr6, L(duLcr6)
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	b	L(dutrim)
-
-/* Count is a multiple of 32, remainder is 0.  */
-	.align	4
-L(duP4):
-	mtctr	r0
-	srd	r0, rWORD8, rSHR
-	LD	rWORD1, 0, rSTR1
-	sld	rWORD2_SHIFT, rWORD8, rSHL
-	or	rWORD2, r0, rWORD6_SHIFT
-L(duP4e):
-	LD	rWORD3, rOFF8, rSTR1
-	LD	rWORD4, rOFF8, rSTR2
-	cmpld	cr7, rWORD1, rWORD2
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-	LD	rWORD5, rOFF16, rSTR1
-	LD	rWORD6, rOFF16, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-	LD	rWORD7, rOFF24, rSTR1
-	LD	rWORD8, rOFF24, rSTR2
-	addi	rSTR1, rSTR1, 24
-	addi	rSTR2, rSTR2, 24
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	cmpld	cr5, rWORD7, rWORD8
-	bdz	L(du24)		/* Adjust CTR as we start with +4.  */
-/* This is the primary loop.  */
-	.align	4
-L(duLoop):
-	LD	rWORD1, rOFF8, rSTR1
-	LD	rWORD2, rOFF8, rSTR2
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	srd	r0, rWORD2, rSHR
-	sld	rWORD2_SHIFT, rWORD2, rSHL
-	or	rWORD2, r0, rWORD8_SHIFT
-L(duLoop1):
-	LD	rWORD3, rOFF16, rSTR1
-	LD	rWORD4, rOFF16, rSTR2
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	srd	r12, rWORD4, rSHR
-	sld	rWORD4_SHIFT, rWORD4, rSHL
-	or	rWORD4, r12, rWORD2_SHIFT
-L(duLoop2):
-	LD	rWORD5, rOFF24, rSTR1
-	LD	rWORD6, rOFF24, rSTR2
-	cmpld	cr5, rWORD7, rWORD8
-	bne	cr7, L(duLcr7)
-	srd	r0, rWORD6, rSHR
-	sld	rWORD6_SHIFT, rWORD6, rSHL
-	or	rWORD6, r0, rWORD4_SHIFT
-L(duLoop3):
-	LD	rWORD7, rOFF32, rSTR1
-	LD	rWORD8, rOFF32, rSTR2
-	addi	rSTR1, rSTR1, 32
-	addi	rSTR2, rSTR2, 32
-	cmpld	cr7, rWORD1, rWORD2
-	bne	cr1, L(duLcr1)
-	srd	r12, rWORD8, rSHR
-	sld	rWORD8_SHIFT, rWORD8, rSHL
-	or	rWORD8, r12, rWORD6_SHIFT
-	bdnz	L(duLoop)
-
-L(duL4):
-	cmpld	cr1, rWORD3, rWORD4
-	bne	cr6, L(duLcr6)
-	cmpld	cr6, rWORD5, rWORD6
-	bne	cr5, L(duLcr5)
-	cmpld	cr5, rWORD7, rWORD8
-L(du44):
-	bne	cr7, L(duLcr7)
-L(du34):
-	bne	cr1, L(duLcr1)
-L(du24):
-	bne	cr6, L(duLcr6)
-L(du14):
-	sldi.	rN, rN, 3
-	bne	cr5, L(duLcr5)
-/* At this point we have a remainder of 1 to 7 bytes to compare.  We use
-   shift right double to eliminate bits beyond the compare length.
-
-   However it may not be safe to load rWORD2 which may be beyond the
-   string length.  So we compare the bit length of the remainder to
-   the right shift count (rSHR).  If the bit count is less than or equal
-   we do not need to load rWORD2 (all significant bits are already in
-   rWORD8_SHIFT).  */
-	cmpld	cr7, rN, rSHR
-	beq	L(duZeroReturn)
-	li	r0, 0
-	ble	cr7, L(dutrim)
-	LD	rWORD2, rOFF8, rSTR2
-	srd	r0, rWORD2, rSHR
-	.align	4
-L(dutrim):
-	LD	rWORD1, rOFF8, rSTR1
-	ld	rWORD8, -8(r1)
-	subfic	rN, rN, 64	/* Shift count is 64 - (rN * 8).  */
-	or	rWORD2, r0, rWORD8_SHIFT
-	ld	rWORD7, rWORD7SAVE(r1)
-	ld	rSHL, rSHLSAVE(r1)
-	srd	rWORD1, rWORD1, rN
-	srd	rWORD2, rWORD2, rN
-	ld	rSHR, rSHRSAVE(r1)
-	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	li	rRTN, 0
-	cmpld	cr7, rWORD1, rWORD2
-	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-	beq	cr7, L(dureturn24)
-	li	rRTN, 1
-	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	bgtlr	cr7
-	li	rRTN, -1
-	blr
-	.align	4
-L(duLcr7):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr7, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr1):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr1, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr6):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr6, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-	.align	4
-L(duLcr5):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-	li	rRTN, 1
-	bgt	cr5, L(dureturn29)
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-	li	rRTN, -1
-	b	L(dureturn27)
-
-	.align	3
-L(duZeroReturn):
-	li	rRTN, 0
-	.align	4
-L(dureturn):
-	ld	rWORD8, rWORD8SAVE(r1)
-	ld	rWORD7, rWORD7SAVE(r1)
-L(dureturn29):
-	ld	rSHL, rSHLSAVE(r1)
-	ld	rSHR, rSHRSAVE(r1)
-L(dureturn27):
-	ld	rWORD8_SHIFT, rWORD8SHIFTSAVE(r1)
-	ld	rWORD2_SHIFT, rWORD2SHIFTSAVE(r1)
-	ld	rWORD4_SHIFT, rWORD4SHIFTSAVE(r1)
-L(dureturn24):
-	ld	rWORD6_SHIFT, rWORD6SHIFTSAVE(r1)
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	blr
-
-L(duzeroLength):
-	ld	rOFF8,  rOFF8SAVE(r1)
-	ld	rOFF16, rOFF16SAVE(r1)
-	ld	rOFF24, rOFF24SAVE(r1)
-	ld	rOFF32, rOFF32SAVE(r1)
-	li	rRTN, 0
-	blr
-
-END (MEMCMP)
-libc_hidden_builtin_def (memcmp)
-weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/memset.S b/sysdeps/powerpc/powerpc64/power8/memset.S
deleted file mode 100644
index bc734c9f4f..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/memset.S
+++ /dev/null
@@ -1,458 +0,0 @@
-/* Optimized memset implementation for PowerPC64/POWER8.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define MTVSRD_V1_R4  .long 0x7c240166     /* mtvsrd  v1,r4  */
-
-/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
-   Returns 's'.  */
-
-#ifndef MEMSET
-# define MEMSET memset
-#endif
-
-	/* No need to use .machine power8 since mtvsrd is already
-	   handled by the define.  It avoid breakage on binutils
-	   that does not support this machine specifier.  */
-	.machine power7
-EALIGN (MEMSET, 5, 0)
-	CALL_MCOUNT 3
-
-L(_memset):
-	cmpldi	cr7,r5,31
-	neg	r0,r3
-	mr	r10,r3
-
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32	/* Replicate byte to word.  */
-	ble	cr7,L(write_LT_32)
-
-	andi.	r11,r10,15	/* Check alignment of DST.  */
-	insrdi	r4,r4,32,0	/* Replicate word to double word.  */
-
-	beq	L(big_aligned)
-
-	mtocrf	0x01,r0
-	clrldi	r0,r0,60
-
-	/* Get DST aligned to 16 bytes.  */
-1:	bf	31,2f
-	stb	r4,0(r10)
-	addi	r10,r10,1
-
-2:	bf	30,4f
-	sth	r4,0(r10)
-	addi	r10,r10,2
-
-4:	bf	29,8f
-	stw	r4,0(r10)
-	addi	r10,r10,4
-
-8:	bf      28,16f
-	std     r4,0(r10)
-	addi    r10,r10,8
-
-16:	subf	r5,r0,r5
-
-	.align	4
-L(big_aligned):
-	/* For sizes larger than 255 two possible paths:
-	   - if constant is '0', zero full cache lines with dcbz
-	   - otherwise uses vector instructions.  */
-	cmpldi	cr5,r5,255
-	dcbtst	0,r10
-	cmpldi	cr6,r4,0
-	crand	27,26,21
-	bt	27,L(huge_dcbz)
-	bge	cr5,L(huge_vector)
-
-
-	/* Size between 32 and 255 bytes with constant different than 0, use
-	   doubleword store instruction to achieve best throughput.  */
-	srdi    r8,r5,5
-	clrldi  r11,r5,59
-	cmpldi  cr6,r11,0
-	cmpdi	r8,0
-	beq     L(tail_bytes)
-	mtctr   r8
-
-	/* Main aligned write loop, writes 32-bytes at a time.  */
-	.align  4
-L(big_loop):
-	std     r4,0(r10)
-	std     r4,8(r10)
-	std     r4,16(r10)
-	std     r4,24(r10)
-	addi    r10,r10,32
-	bdz     L(tail_bytes)
-
-	std     r4,0(r10)
-	std     r4,8(r10)
-	std     r4,16(r10)
-	std     r4,24(r10)
-	addi    r10,10,32
-	bdnz    L(big_loop)
-
-	b       L(tail_bytes)
-
-	/* Write remaining 1~31 bytes.  */
-	.align  4
-L(tail_bytes):
-	beqlr   cr6
-
-	srdi    r7,r11,4
-	clrldi  r8,r11,60
-	mtocrf  0x01,r7
-
-	.align	4
-	bf	31,8f
-	std	r4,0(r10)
-	std	r4,8(r10)
-	addi	r10,r10,16
-
-	.align	4
-8:	mtocrf	0x1,r8
-	bf	28,4f
-	std	r4,0(r10)
-	addi	r10,r10,8
-
-	.align	4
-4:	bf      29,2f
-	stw     4,0(10)
-	addi    10,10,4
-
-	.align 	4
-2:	bf      30,1f
-	sth     4,0(10)
-	addi    10,10,2
-
-	.align  4
-1:      bflr    31
-	stb     4,0(10)
-	blr
-
-	/* Size larger than 255 bytes with constant different than 0, use
-	   vector instruction to achieve best throughput.  */
-L(huge_vector):
-	/* Replicate set byte to quadword in VMX register.  */
-	MTVSRD_V1_R4
-	xxpermdi 32,v0,v1,0
-	vspltb	 v2,v0,15
-
-	/* Main aligned write loop: 128 bytes at a time.  */
-	li	r6,16
-	li	r7,32
-	li	r8,48
-	mtocrf	0x02,r5
-	srdi	r12,r5,7
-	cmpdi	r12,0
-	beq	L(aligned_tail)
-	mtctr	r12
-	b	L(aligned_128loop)
-
-	.align  4
-L(aligned_128loop):
-	stvx	v2,0,r10
-	stvx	v2,r10,r6
-	stvx	v2,r10,r7
-	stvx	v2,r10,r8
-	addi	r10,r10,64
-	stvx	v2,0,r10
-	stvx	v2,r10,r6
-	stvx	v2,r10,r7
-	stvx	v2,r10,r8
-	addi	r10,r10,64
-	bdnz	L(aligned_128loop)
-
-	/* Write remaining 1~127 bytes.  */
-L(aligned_tail):
-	mtocrf	0x01,r5
-	bf	25,32f
-	stvx	v2,0,r10
-	stvx	v2,r10,r6
-	stvx	v2,r10,r7
-	stvx	v2,r10,r8
-	addi	r10,r10,64
-
-32:	bf	26,16f
-	stvx	v2,0,r10
-	stvx	v2,r10,r6
-	addi	r10,r10,32
-
-16:	bf	27,8f
-	stvx	v2,0,r10
-	addi	r10,r10,16
-
-8:	bf	28,4f
-	std     r4,0(r10)
-	addi	r10,r10,8
-
-	/* Copies 4~7 bytes.  */
-4:	bf	29,L(tail2)
-	stw     r4,0(r10)
-	bf      30,L(tail5)
-	sth     r4,4(r10)
-	bflr	31
-	stb     r4,6(r10)
-	/* Return original DST pointer.  */
-	blr
-
-	/* Special case when value is 0 and we have a long length to deal
-	   with.  Use dcbz to zero out a full cacheline of 128 bytes at a time.
-	   Before using dcbz though, we need to get the destination 128-byte
-	   aligned.  */
-	.align	4
-L(huge_dcbz):
-	andi.	r11,r10,127
-	neg	r0,r10
-	beq	L(huge_dcbz_aligned)
-
-	clrldi	r0,r0,57
-	subf	r5,r0,r5
-	srdi	r0,r0,3
-	mtocrf	0x01,r0
-
-	/* Write 1~128 bytes until DST is aligned to 128 bytes.  */
-8:	bf	28,4f
-
-	std	r4,0(r10)
-	std	r4,8(r10)
-	std	r4,16(r10)
-	std	r4,24(r10)
-	std	r4,32(r10)
-	std	r4,40(r10)
-	std	r4,48(r10)
-	std	r4,56(r10)
-	addi	r10,r10,64
-
-	.align	4
-4:	bf	29,2f
-	std	r4,0(r10)
-	std	r4,8(r10)
-	std	r4,16(r10)
-	std	r4,24(r10)
-	addi	r10,r10,32
-
-	.align	4
-2:	bf	30,1f
-	std	r4,0(r10)
-	std	r4,8(r10)
-	addi	r10,r10,16
-
-	.align	4
-1:	bf	31,L(huge_dcbz_aligned)
-	std	r4,0(r10)
-	addi	r10,r10,8
-
-L(huge_dcbz_aligned):
-	/* Setup dcbz unroll offsets and count numbers.  */
-	srdi	r8,r5,9
-	clrldi	r11,r5,55
-	cmpldi	cr6,r11,0
-	li	r9,128
-	cmpdi	r8,0
-	beq     L(huge_tail)
-	li	r7,256
-	li	r6,384
-	mtctr	r8
-
-	.align	4
-L(huge_loop):
-	/* Sets 512 bytes to zero in each iteration, the loop unrolling shows
-	   a throughput boost for large sizes (2048 bytes or higher).  */
-	dcbz	0,r10
-	dcbz	r9,r10
-	dcbz	r7,r10
-	dcbz	r6,r10
-	addi	r10,r10,512
-	bdnz	L(huge_loop)
-
-	beqlr	cr6
-
-L(huge_tail):
-	srdi    r6,r11,8
-	srdi    r7,r11,4
-	clrldi  r8,r11,4
-	cmpldi  cr6,r8,0
-	mtocrf  0x01,r6
-
-	beq	cr6,L(tail)
-
-	/* We have 1~511 bytes remaining.  */
-	.align	4
-32:	bf	31,16f
-	dcbz	0,r10
-	dcbz	r9,r10
-	addi	r10,r10,256
-
-	.align	4
-16:	mtocrf  0x01,r7
-	bf	28,8f
-	dcbz	0,r10
-	addi	r10,r10,128
-
-	.align 	4
-8:	bf	29,4f
-	std	r4,0(r10)
-	std	r4,8(r10)
-	std	r4,16(r10)
-	std	r4,24(r10)
-	std	r4,32(r10)
-	std	r4,40(r10)
-	std	r4,48(r10)
-	std	r4,56(r10)
-	addi	r10,r10,64
-
-	.align	4
-4:	bf	30,2f
-	std	r4,0(r10)
-	std	r4,8(r10)
-	std	r4,16(r10)
-	std	r4,24(r10)
-	addi	r10,r10,32
-
-	.align	4
-2:	bf	31,L(tail)
-	std	r4,0(r10)
-	std	r4,8(r10)
-	addi	r10,r10,16
-	.align	4
-
-	/* Remaining 1~15 bytes.  */
-L(tail):
-	mtocrf  0x01,r8
-
-	.align
-8:	bf	28,4f
-	std	r4,0(r10)
-	addi	r10,r10,8
-
-	.align	4
-4:	bf	29,2f
-	stw	r4,0(r10)
-	addi	r10,r10,4
-
-	.align	4
-2:	bf	30,1f
-	sth	r4,0(r10)
-	addi	r10,r10,2
-
-	.align	4
-1:	bflr	31
-	stb	r4,0(r10)
-	blr
-
-	/* Handle short copies of 0~31 bytes.  Best throughput is achieved
-	   by just unrolling all operations.  */
-	.align	4
-L(write_LT_32):
-	cmpldi	cr6,5,8
-	mtocrf	0x01,r5
-	ble	cr6,L(write_LE_8)
-
-	/* At least 9 bytes to go.  */
-	neg	r8,r4
-	andi.	r0,r8,3
-	cmpldi	cr1,r5,16
-	beq	L(write_LT_32_aligned)
-
-	/* Force 4-byte alignment for SRC.  */
-	mtocrf	0x01,r0
-	subf	r5,r0,r5
-
-2:	bf	30,1f
-	sth	r4,0(r10)
-	addi	r10,r10,2
-
-1:	bf	31,L(end_4bytes_alignment)
-	stb	r4,0(r10)
-	addi	r10,r10,1
-
-	.align	4
-L(end_4bytes_alignment):
-	cmpldi	cr1,r5,16
-	mtocrf	0x01,r5
-
-L(write_LT_32_aligned):
-	blt	cr1,8f
-
-	stw	r4,0(r10)
-	stw	r4,4(r10)
-	stw	r4,8(r10)
-	stw	r4,12(r10)
-	addi	r10,r10,16
-
-8:	bf	28,L(tail4)
-	stw	r4,0(r10)
-	stw	r4,4(r10)
-	addi	r10,r10,8
-
-	.align	4
-	/* Copies 4~7 bytes.  */
-L(tail4):
-	bf	29,L(tail2)
-	stw	r4,0(r10)
-	bf	30,L(tail5)
-	sth	r4,4(r10)
-	bflr	31
-	stb	r4,6(r10)
-	blr
-
-	.align	4
-	/* Copies 2~3 bytes.  */
-L(tail2):
-	bf	30,1f
-	sth	r4,0(r10)
-	bflr	31
-	stb	r4,2(r10)
-	blr
-
-	.align	4
-L(tail5):
-	bflr	31
-	stb	r4,4(r10)
-	blr
-
-	.align	4
-1: 	bflr	31
-	stb	r4,0(r10)
-	blr
-
-	/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(write_LE_8):
-	bne	cr6,L(tail4)
-
-	stw	r4,0(r10)
-	stw	r4,4(r10)
-	blr
-END_GEN_TB (MEMSET,TB_TOCLESS)
-libc_hidden_builtin_def (memset)
-
-/* Copied from bzero.S to prevent the linker from inserting a stub
-   between bzero and memset.  */
-ENTRY (__bzero)
-	CALL_MCOUNT 3
-	mr	r5,r4
-	li	r4,0
-	b	L(_memset)
-END (__bzero)
-#ifndef __bzero
-weak_alias (__bzero, bzero)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/multiarch/Implies b/sysdeps/powerpc/powerpc64/power8/multiarch/Implies
deleted file mode 100644
index 1fc7b7cd39..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power8/stpcpy.S b/sysdeps/powerpc/powerpc64/power8/stpcpy.S
deleted file mode 100644
index 955e738cee..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/stpcpy.S
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Optimized stpcpy implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STPCPY
-#include <sysdeps/powerpc/powerpc64/power8/strcpy.S>
-
-weak_alias (__stpcpy, stpcpy)
-libc_hidden_def (__stpcpy)
-libc_hidden_builtin_def (stpcpy)
diff --git a/sysdeps/powerpc/powerpc64/power8/stpncpy.S b/sysdeps/powerpc/powerpc64/power8/stpncpy.S
deleted file mode 100644
index c14d984dd0..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/stpncpy.S
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Optimized stpncpy implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STPNCPY
-#include <sysdeps/powerpc/powerpc64/power8/strncpy.S>
-
-weak_alias (__stpncpy, stpncpy)
-libc_hidden_def (__stpncpy)
-libc_hidden_builtin_def (stpncpy)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcasecmp.S b/sysdeps/powerpc/powerpc64/power8/strcasecmp.S
deleted file mode 100644
index 88b17a6eb1..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcasecmp.S
+++ /dev/null
@@ -1,457 +0,0 @@
-/* Optimized strcasecmp implementation for PowerPC64.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <locale-defines.h>
-
-/* int [r3] strcasecmp (const char *s1 [r3], const char *s2 [r4] ) */
-
-#ifndef USE_AS_STRNCASECMP
-#  define __STRCASECMP __strcasecmp
-#  define STRCASECMP   strcasecmp
-#else
-#  define __STRCASECMP __strncasecmp
-#  define STRCASECMP   strncasecmp
-#endif
-/* Convert 16 bytes to lowercase and compare */
-#define TOLOWER()     \
-	vaddubm	v8, v4, v1; \
-	vaddubm	v7, v4, v3; \
-	vcmpgtub	v8, v8, v2; \
-	vsel	v4, v7, v4, v8; \
-	vaddubm	v8, v5, v1; \
-	vaddubm	v7, v5, v3; \
-	vcmpgtub	v8, v8, v2; \
-	vsel	v5, v7, v5, v8; \
-	vcmpequb.	v7, v5, v4;
-
-/*
- * Get 16 bytes for unaligned case.
- * reg1: Vector to hold next 16 bytes.
- * reg2: Address to read from.
- * reg3: Permute control vector.
- * v8: Tmp vector used to mask unwanted bytes.
- * v9: Tmp vector,0 when null is found on first 16 bytes
- */
-#ifdef __LITTLE_ENDIAN__
-#define GET16BYTES(reg1, reg2, reg3) \
-	lvx	reg1, 0, reg2; \
-	vspltisb	v8, -1; \
-	vperm	v8, v8, reg1, reg3; \
-	vcmpequb.	v8, v0, v8; \
-	beq	cr6, 1f; \
-	vspltisb	v9, 0; \
-	b	2f; \
-	.align 4; \
-1: \
-	addi	r6, reg2, 16; \
-	lvx	v9, 0, r6; \
-2: \
-	vperm	reg1, v9, reg1, reg3;
-#else
-#define GET16BYTES(reg1, reg2, reg3) \
-	lvx	reg1, 0, reg2; \
-	vspltisb	 v8, -1; \
-	vperm	v8, reg1, v8,  reg3; \
-	vcmpequb.	v8, v0, v8; \
-	beq	cr6, 1f; \
-	vspltisb	v9, 0; \
-	b	2f; \
-	.align 4; \
-1: \
-	addi	r6, reg2, 16; \
-	lvx	v9, 0, r6; \
-2: \
-	vperm	reg1, reg1, v9, reg3;
-#endif
-
-/* Check null in v4, v5 and convert to lower.  */
-#define CHECKNULLANDCONVERT() \
-	vcmpequb.	v7, v0, v5; \
-	beq	cr6, 3f; \
-	vcmpequb.	v7, v0, v4; \
-	beq	cr6, 3f; \
-	b	L(null_found); \
-	.align  4; \
-3: \
-	TOLOWER()
-
-#ifdef _ARCH_PWR8
-#  define VCLZD_V8_v7	vclzd	v8, v7;
-#  define MFVRD_R3_V1	mfvrd	r3, v1;
-#  define VSUBUDM_V9_V8	vsubudm	v9, v9, v8;
-#  define VPOPCNTD_V8_V8	vpopcntd v8, v8;
-#  define VADDUQM_V7_V8	vadduqm	v9, v7, v8;
-#else
-#  define VCLZD_V8_v7	.long	0x11003fc2
-#  define MFVRD_R3_V1	.long	0x7c230067
-#  define VSUBUDM_V9_V8	.long	0x112944c0
-#  define VPOPCNTD_V8_V8	.long	0x110047c3
-#  define VADDUQM_V7_V8	.long	0x11274100
-#endif
-
-	.machine  power7
-
-ENTRY (__STRCASECMP)
-#ifdef USE_AS_STRNCASECMP
-	CALL_MCOUNT 3
-#else
-	CALL_MCOUNT 2
-#endif
-#define rRTN	r3	/* Return value */
-#define rSTR1	r10	/* 1st string */
-#define rSTR2	r4	/* 2nd string */
-#define rCHAR1	r6	/* Byte read from 1st string */
-#define rCHAR2	r7	/* Byte read from 2nd string */
-#define rADDR1	r8	/* Address of tolower(rCHAR1) */
-#define rADDR2	r12	/* Address of tolower(rCHAR2) */
-#define rLWR1	r8	/* Word tolower(rCHAR1) */
-#define rLWR2	r12	/* Word tolower(rCHAR2) */
-#define rTMP	r9
-#define rLOC	r11	/* Default locale address */
-
-	cmpd	cr7, rRTN, rSTR2
-
-	/* Get locale address.  */
-	ld 	rTMP, __libc_tsd_LOCALE@got@tprel(r2)
-	add 	rLOC, rTMP, __libc_tsd_LOCALE@tls
-	ld	rLOC, 0(rLOC)
-
-	mr	rSTR1, rRTN
-	li	rRTN, 0
-	beqlr	cr7
-#ifdef USE_AS_STRNCASECMP
-	cmpdi	cr7, r5, 0
-	beq	cr7, L(retnull)
-	cmpdi	cr7, r5, 16
-	blt	cr7, L(bytebybyte)
-#endif
-	vspltisb	v0, 0
-	vspltisb	v8, -1
-	/* Check for null in initial characters.
-	   Check max of 16 char depending on the alignment.
-	   If null is present, proceed byte by byte.  */
-	lvx	v4, 0, rSTR1
-#ifdef  __LITTLE_ENDIAN__
-	lvsr	v10, 0, rSTR1	/* Compute mask.  */
-	vperm	v9, v8, v4, v10	/* Mask bits that are not part of string.  */
-#else
-	lvsl	v10, 0, rSTR1
-	vperm	v9, v4, v8, v10
-#endif
-	vcmpequb.	v9, v0, v9	/* Check for null bytes.  */
-	bne	cr6, L(bytebybyte)
-	lvx	v5, 0, rSTR2
-	/* Calculate alignment.  */
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v6, 0, rSTR2
-	vperm	v9, v8, v5, v6	/* Mask bits that are not part of string.  */
-#else
-	lvsl	v6, 0, rSTR2
-	vperm	v9, v5, v8, v6
-#endif
-	vcmpequb.	v9, v0, v9	/* Check for null bytes.  */
-	bne	cr6, L(bytebybyte)
-	/* Check if locale has non ascii characters.  */
-	ld	rTMP, 0(rLOC)
-	addi r6, rTMP,LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES
-	lwz	rTMP, 0(r6)
-	cmpdi	cr7, rTMP, 1
-	beq	cr7, L(bytebybyte)
-
-	/* Load vector registers with values used for TOLOWER.  */
-	/* Load v1 = 0xbf, v2 = 0x19 v3 = 0x20 in each byte.  */
-	vspltisb	v3, 2
-	vspltisb	v9, 4
-	vsl	v3, v3, v9
-	vaddubm	v1, v3, v3
-	vnor	v1, v1, v1
-	vspltisb	v2, 7
-	vsububm	v2, v3, v2
-
-	andi.	rADDR1, rSTR1, 0xF
-	beq	cr0, L(align)
-	addi	r6, rSTR1, 16
-	lvx	v9, 0, r6
-	/* Compute 16 bytes from previous two loads.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm	v4, v9, v4, v10
-#else
-	vperm	v4, v4, v9, v10
-#endif
-L(align):
-	andi.	rADDR2, rSTR2, 0xF
-	beq	cr0, L(align1)
-	addi	r6, rSTR2, 16
-	lvx	v9, 0, r6
-	/* Compute 16 bytes from previous two loads.  */
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v9, v5, v6
-#else
-	vperm	v5, v5, v9, v6
-#endif
-L(align1):
-	CHECKNULLANDCONVERT()
-	blt	cr6, L(match)
-	b	L(different)
-	.align 	4
-L(match):
-	clrldi	r6, rSTR1, 60
-	subfic	r7, r6, 16
-#ifdef USE_AS_STRNCASECMP
-	sub	r5, r5, r7
-#endif
-	add	rSTR1, rSTR1, r7
-	add	rSTR2, rSTR2, r7
-	andi.	rADDR2, rSTR2, 0xF
-	addi	rSTR1, rSTR1, -16
-	addi	rSTR2, rSTR2, -16
-	beq	cr0, L(aligned)
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v6, 0, rSTR2
-#else
-	lvsl	v6, 0, rSTR2
-#endif
-	/* There are 2 loops depending on the input alignment.
-	   Each loop gets 16 bytes from s1 and s2, check for null,
-	   convert to lowercase and compare. Loop till difference
-	   or null occurs. */
-L(s1_align):
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#ifdef USE_AS_STRNCASECMP
-	cmpdi	cr7, r5, 16
-	blt	cr7, L(bytebybyte)
-	addi	r5, r5, -16
-#endif
-	lvx	v4, 0, rSTR1
-	GET16BYTES(v5, rSTR2, v6)
-	CHECKNULLANDCONVERT()
-	blt	cr6, L(s1_align)
-	b	L(different)
-	.align 	4
-L(aligned):
-	addi	rSTR1, rSTR1, 16
-	addi	rSTR2, rSTR2, 16
-#ifdef USE_AS_STRNCASECMP
-	cmpdi	cr7, r5, 16
-	blt	cr7, L(bytebybyte)
-	addi	r5, r5, -16
-#endif
-	lvx	v4, 0, rSTR1
-	lvx	v5, 0, rSTR2
-	CHECKNULLANDCONVERT()
-	blt	cr6, L(aligned)
-
-	/* Calculate and return the difference. */
-L(different):
-	vaddubm	v1, v3, v3
-	vcmpequb	v7, v0, v7
-#ifdef __LITTLE_ENDIAN__
-	/* Count trailing zero.  */
-	vspltisb	v8, -1
-	VADDUQM_V7_V8
-	vandc	v8, v9, v7
-	VPOPCNTD_V8_V8
-	vspltb	v6, v8, 15
-	vcmpequb.	v6, v6, v1
-	blt	cr6, L(shift8)
-#else
-	/* Count leading zero.  */
-	VCLZD_V8_v7
-	vspltb	v6, v8, 7
-	vcmpequb.	v6, v6, v1
-	blt	cr6, L(shift8)
-	vsro	v8, v8, v1
-#endif
-	b	L(skipsum)
-	.align  4
-L(shift8):
-	vsumsws		v8, v8, v0
-L(skipsum):
-#ifdef __LITTLE_ENDIAN__
-	/* Shift registers based on leading zero count.  */
-	vsro	v6, v5, v8
-	vsro	v7, v4, v8
-	/* Merge and move to GPR.  */
-	vmrglb	v6, v6, v7
-	vslo	v1, v6, v1
-	MFVRD_R3_V1
-	/* Place the characters that are different in first position.  */
-	sldi	rSTR2, rRTN, 56
-	srdi	rSTR2, rSTR2, 56
-	sldi	rSTR1, rRTN, 48
-	srdi	rSTR1, rSTR1, 56
-#else
-	vslo	v6, v5, v8
-	vslo	v7, v4, v8
-	vmrghb	v1, v6, v7
-	MFVRD_R3_V1
-	srdi	rSTR2, rRTN, 48
-	sldi	rSTR2, rSTR2, 56
-	srdi	rSTR2, rSTR2, 56
-	srdi	rSTR1, rRTN, 56
-#endif
-	subf  	rRTN, rSTR1, rSTR2
-	extsw 	rRTN, rRTN
-	blr
-
-	.align  4
-	/* OK. We've hit the end of the string. We need to be careful that
-	   we don't compare two strings as different because of junk beyond
-	   the end of the strings...  */
-L(null_found):
-	vaddubm	v10, v3, v3
-#ifdef __LITTLE_ENDIAN__
-	/* Count trailing zero.  */
-	vspltisb	v8, -1
-	VADDUQM_V7_V8
-	vandc	v8, v9, v7
-	VPOPCNTD_V8_V8
-	vspltb	v6, v8, 15
-	vcmpequb.	v6, v6, v10
-	blt	cr6, L(shift_8)
-#else
-	/* Count leading zero.  */
-	VCLZD_V8_v7
-	vspltb	v6, v8, 7
-	vcmpequb.	v6, v6, v10
-	blt	cr6, L(shift_8)
-	vsro	v8, v8, v10
-#endif
-	b	L(skipsum1)
-	.align  4
-L(shift_8):
-	vsumsws	v8, v8, v0
-L(skipsum1):
-	/* Calculate shift count based on count of zero.  */
-	vspltisb	v10, 7
-	vslb	v10, v10, v10
-	vsldoi	v9, v0, v10, 1
-	VSUBUDM_V9_V8
-	vspltisb	v8, 8
-	vsldoi	v8, v0, v8, 1
-	VSUBUDM_V9_V8
-	/* Shift and remove junk after null character.  */
-#ifdef __LITTLE_ENDIAN__
-	vslo	v5, v5, v9
-	vslo	v4, v4, v9
-#else
-	vsro	v5, v5, v9
-	vsro	v4, v4, v9
-#endif
-	/* Convert and compare 16 bytes.  */
-	TOLOWER()
-	blt	cr6, L(retnull)
-	b	L(different)
-	.align  4
-L(retnull):
-	li	rRTN, 0
-	blr
-	.align  4
-L(bytebybyte):
-	/* Unrolling loop for POWER: loads are done with 'lbz' plus
-	offset and string descriptors are only updated in the end
-	of loop unrolling. */
-	ld	rLOC, LOCALE_CTYPE_TOLOWER(rLOC)
-	lbz	rCHAR1, 0(rSTR1)	/* Load char from s1 */
-	lbz	rCHAR2, 0(rSTR2)	/* Load char from s2 */
-#ifdef USE_AS_STRNCASECMP
-	rldicl	rTMP, r5, 62, 2
-	cmpdi	cr7, rTMP, 0
-	beq	cr7, L(lessthan4)
-	mtctr	rTMP
-#endif
-L(loop):
-	cmpdi	rCHAR1, 0		/* *s1 == '\0' ? */
-	sldi	rADDR1, rCHAR1, 2	/* Calculate address for tolower(*s1) */
-	sldi	rADDR2, rCHAR2, 2	/* Calculate address for tolower(*s2) */
-	lwzx	rLWR1, rLOC, rADDR1	/* Load tolower(*s1) */
-	lwzx	rLWR2, rLOC, rADDR2	/* Load tolower(*s2) */
-	cmpw	cr1, rLWR1, rLWR2	/* r = tolower(*s1) == tolower(*s2) ? */
-	crorc	4*cr1+eq,eq,4*cr1+eq	/* (*s1 != '\0') || (r == 1) */
-	beq	cr1, L(done)
-	lbz	rCHAR1, 1(rSTR1)
-	lbz	rCHAR2, 1(rSTR2)
-	cmpdi	rCHAR1, 0
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq	cr1, L(done)
-	lbz	rCHAR1, 2(rSTR1)
-	lbz	rCHAR2, 2(rSTR2)
-	cmpdi	rCHAR1, 0
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq	cr1, L(done)
-	lbz	rCHAR1, 3(rSTR1)
-	lbz	rCHAR2, 3(rSTR2)
-	cmpdi	rCHAR1, 0
-	/* Increment both string descriptors */
-	addi	rSTR1, rSTR1, 4
-	addi	rSTR2, rSTR2, 4
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq     cr1, L(done)
-	lbz	rCHAR1, 0(rSTR1)	/* Load char from s1 */
-	lbz	rCHAR2, 0(rSTR2)	/* Load char from s2 */
-#ifdef USE_AS_STRNCASECMP
-	bdnz	L(loop)
-#else
-	b	L(loop)
-#endif
-#ifdef USE_AS_STRNCASECMP
-L(lessthan4):
-	clrldi	r5, r5, 62
-	cmpdi	cr7, r5, 0
-	beq	cr7, L(retnull)
-	mtctr	r5
-L(loop1):
-	cmpdi	rCHAR1, 0
-	sldi	rADDR1, rCHAR1, 2
-	sldi	rADDR2, rCHAR2, 2
-	lwzx	rLWR1, rLOC, rADDR1
-	lwzx	rLWR2, rLOC, rADDR2
-	cmpw	cr1, rLWR1, rLWR2
-	crorc	4*cr1+eq,eq,4*cr1+eq
-	beq	cr1, L(done)
-	addi	rSTR1, rSTR1, 1
-	addi	rSTR2, rSTR2, 1
-	lbz	rCHAR1, 0(rSTR1)
-	lbz	rCHAR2, 0(rSTR2)
-	bdnz	L(loop1)
-#endif
-L(done):
-	subf	r0, rLWR2, rLWR1
-	extsw	rRTN, r0
-	blr
-END (__STRCASECMP)
-
-weak_alias (__STRCASECMP, STRCASECMP)
-libc_hidden_builtin_def (__STRCASECMP)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr-ppc64.c b/sysdeps/powerpc/powerpc64/power8/strcasestr-ppc64.c
deleted file mode 100644
index 0e746b7718..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcasestr-ppc64.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Optimized strcasestr implementation for PowerPC64/POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-
-#define STRCASESTR __strcasestr_ppc
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(__name)
-
-#undef weak_alias
-#define weak_alias(a,b)
-extern __typeof (strcasestr) __strcasestr_ppc attribute_hidden;
-
-#include <string/strcasestr.c>
diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
deleted file mode 100644
index 6ac6572f3b..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S
+++ /dev/null
@@ -1,538 +0,0 @@
-/* Optimized strcasestr implementation for PowerPC64/POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <locale-defines.h>
-
-/* Char * [r3] strcasestr (char *s [r3], char * pat[r4])  */
-
-/* The performance gain is obtained by comparing 16 bytes.  */
-
-/* When the first char of r4 is hit ITERATIONS times in r3
-   fallback to default.  */
-#define ITERATIONS	64
-
-#ifndef STRCASESTR
-# define STRCASESTR __strcasestr
-#endif
-
-#ifndef STRLEN
-/* For builds without IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define STRLEN   __GI_strlen
-# else
-#  define STRLEN   strlen
-# endif
-#endif
-
-#ifndef STRNLEN
-/* For builds without IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define STRNLEN   __GI_strnlen
-# else
-#  define STRNLEN    __strnlen
-# endif
-#endif
-
-#ifndef STRCHR
-# ifdef SHARED
-#  define STRCHR   __GI_strchr
-# else
-#  define STRCHR   strchr
-# endif
-#endif
-
-/* Convert 16 bytes of v4 and reg to lowercase and compare.  */
-#define TOLOWER(reg)     \
-	vcmpgtub	v6, v4, v1; \
-	vcmpgtub	v7, v2, v4; \
-	vand	v8, v7, v6; \
-	vand	v8, v8, v3; \
-	vor	v4, v8, v4; \
-	vcmpgtub	v6, reg, v1; \
-	vcmpgtub	v7, v2, reg; \
-	vand	v8, v7, v6; \
-	vand	v8, v8, v3; \
-	vor	reg, v8, reg; \
-	vcmpequb.	v6, reg, v4;
-
-/* TODO: change these to the actual instructions when the minimum required
-   binutils allows it.  */
-#ifdef _ARCH_PWR8
-#define VCLZD_V8_v7	vclzd	v8, v7;
-#else
-#define VCLZD_V8_v7	.long	0x11003fc2
-#endif
-
-#define	FRAMESIZE	(FRAME_MIN_SIZE+48)
-/* TODO: change this to .machine power8 when the minimum required binutils
-   allows it.  */
-	.machine  power7
-EALIGN (STRCASESTR, 4, 0)
-	CALL_MCOUNT 2
-	mflr	r0			/* Load link register LR to r0.  */
-	std	r31, -8(r1)		/* Save callers register r31.  */
-	std	r30, -16(r1)		/* Save callers register r30.  */
-	std	r29, -24(r1)		/* Save callers register r29.  */
-	std	r28, -32(r1)		/* Save callers register r28.  */
-	std	r27, -40(r1)		/* Save callers register r27.  */
-	std	r0, 16(r1)		/* Store the link register.  */
-	cfi_offset(r31, -8)
-	cfi_offset(r30, -16)
-	cfi_offset(r29, -24)
-	cfi_offset(r28, -32)
-	cfi_offset(r27, -40)
-	cfi_offset(lr, 16)
-	stdu	r1, -FRAMESIZE(r1)	/* Create the stack frame.  */
-	cfi_adjust_cfa_offset(FRAMESIZE)
-
-	dcbt	0, r3
-	dcbt	0, r4
-	cmpdi	cr7, r3, 0		/* Input validation.  */
-	beq	cr7, L(retnull)
-	cmpdi	cr7, r4, 0
-	beq	cr7, L(retnull)
-
-	mr	r29, r3
-	mr	r30, r4
-	/* Load first byte from r4 and check if its null.  */
-	lbz	r6, 0(r4)
-	cmpdi	cr7, r6, 0
-	beq	cr7, L(ret_r3)
-
-	ld	r10, __libc_tsd_LOCALE@got@tprel(r2)
-	add	r9, r10, __libc_tsd_LOCALE@tls
-	ld	r9, 0(r9)
-	ld	r9, LOCALE_CTYPE_TOUPPER(r9)
-	sldi	r10, r6, 2		/* Convert to upper case.  */
-	lwzx	r28, r9, r10
-
-	ld	r10, __libc_tsd_LOCALE@got@tprel(r2)
-	add	r11, r10, __libc_tsd_LOCALE@tls
-	ld	r11, 0(r11)
-	ld	r11, LOCALE_CTYPE_TOLOWER(r11)
-	sldi	r10, r6, 2              /* Convert to lower case.  */
-	lwzx	r27, r11, r10
-
-	/* Check if the first char is present.  */
-	mr	r4, r27
-	bl	STRCHR
-	nop
-	mr	r5, r3
-	mr	r3, r29
-	mr	r29, r5
-	mr	r4, r28
-	bl	STRCHR
-	nop
-	cmpdi	cr7, r29, 0
-	beq	cr7, L(firstpos)
-	cmpdi	cr7, r3, 0
-	beq	cr7, L(skipcheck)
-	cmpw	cr7, r3, r29
-	ble 	cr7, L(firstpos)
-	/* Move r3 to the first occurence.  */
-L(skipcheck):
-	mr	r3, r29
-L(firstpos):
-	mr	r29, r3
-
-	sldi	r9, r27, 8
-	or	r28, r9, r28
-	/* Reg r27 is used to count the number of iterations.  */
-	li	r27, 0
-	/* If first char of search str is not present.  */
-	cmpdi	cr7, r3, 0
-	ble	cr7, L(end)
-
-	/* Find the length of pattern.  */
-	mr	r3, r30
-	bl	STRLEN
-	nop
-
-	cmpdi	cr7, r3, 0	/* If search str is null.  */
-	beq	cr7, L(ret_r3)
-
-	mr	r31, r3
-	mr	r4, r3
-	mr	r3, r29
-	bl	STRNLEN
-	nop
-
-	cmpd	cr7, r3, r31 	/* If len(r3) < len(r4).  */
-	blt	cr7, L(retnull)
-
-	mr	r3, r29
-
-	/* Locales not matching ASCII for single bytes.  */
-	ld	r10, __libc_tsd_LOCALE@got@tprel(r2)
-	add	r9, r10, __libc_tsd_LOCALE@tls
-	ld	r9, 0(r9)
-	ld	r7, 0(r9)
-	addi	r7, r7, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES
-	lwz	r8, 0(r7)
-	cmpdi	cr7, r8, 1
-	beq	cr7, L(bytebybyte)
-
-	/* If len(r4) < 16 handle byte by byte.  */
-	/* For shorter strings we will not use vector registers.  */
-	cmpdi	cr7, r31, 16
-	blt	cr7, L(bytebybyte)
-
-	/* Comparison values used for TOLOWER.  */
-	/* Load v1 = 64('A' - 1), v2 = 91('Z' + 1), v3 = 32 in each byte.  */
-	vspltish	v0, 0
-	vspltisb	v5, 2
-	vspltisb	v4, 4
-	vsl	v3, v5, v4
-	vaddubm	v1, v3, v3
-	vspltisb	v5, 15
-	vaddubm	v2, v5, v5
-	vaddubm	v2, v1, v2
-	vspltisb	v4, -3
-	vaddubm	v2, v2, v4
-
-	/*
-	1. Load 16 bytes from r3 and r4
-	2. Check if there is null, If yes, proceed byte by byte path.
-	3. Else,Convert both to lowercase and compare.
-	4. If they are same proceed to 1.
-	5. If they dont match, find if first char of r4 is present in the
-	   loaded 16 byte of r3.
-	6. If yes, move position, load next 16 bytes of r3 and proceed to 2.
-	*/
-
-	mr	r8, r3		/* Save r3 for future use.  */
-	mr	r4, r30		/* Restore r4.  */
-	clrldi	r10, r4, 60
-	lvx	v5, 0, r4	/* Load 16 bytes from r4.  */
-	cmpdi	cr7, r10, 0
-	beq	cr7, L(begin2)
-	/* If r4 is unaligned, load another 16 bytes.  */
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v7, 0, r4
-#else
-	lvsl	v7, 0, r4
-#endif
-	addi	r5, r4, 16
-	lvx	v9, 0, r5
-#ifdef __LITTLE_ENDIAN__
-	vperm	v5, v9, v5, v7
-#else
-	vperm	v5, v5, v9, v7
-#endif
-L(begin2):
-	lvx	v4, 0, r3
-	vcmpequb.	v7, v0, v4	/* Check for null.  */
-	beq	cr6, L(nullchk6)
-	b	L(trailcheck)
-
-        .align  4
-L(nullchk6):
-	clrldi	r10, r3, 60
-	cmpdi	cr7, r10, 0
-	beq	cr7, L(next16)
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v7, 0, r3
-#else
-	lvsl	v7, 0, r3
-#endif
-	addi	r5, r3, 16
-	/* If r3 is unaligned, load another 16 bytes.  */
-	lvx	v10, 0, r5
-#ifdef __LITTLE_ENDIAN__
-	vperm	v4, v10, v4, v7
-#else
-	vperm	v4, v4, v10, v7
-#endif
-L(next16):
-	vcmpequb.	v6, v0, v5	/* Check for null.  */
-	beq	cr6, L(nullchk)
-	b	L(trailcheck)
-
-	.align	4
-L(nullchk):
-	vcmpequb.	v6, v0, v4
-	beq	cr6, L(nullchk1)
-	b	L(retnull)
-
-	.align	4
-L(nullchk1):
-	/* Convert both v3 and v4 to lower.  */
-	TOLOWER(v5)
-	/* If both are same, branch to match.  */
-	blt	cr6, L(match)
-	/* Find if the first char is present in next 15 bytes.  */
-#ifdef __LITTLE_ENDIAN__
-	vspltb	v6, v5, 15
-	vsldoi	v7, v0, v4, 15
-#else
-	vspltb	v6, v5, 0
-	vspltisb	v7, 8
-	vslo	v7, v4, v7
-#endif
-	vcmpequb	v7, v6, v7
-	vcmpequb.	v6, v0, v7
-	/* Shift r3 by 16 bytes and proceed.  */
-	blt	cr6, L(shift16)
-	VCLZD_V8_v7
-#ifdef __LITTLE_ENDIAN__
-	vspltb	v6, v8, 15
-#else
-	vspltb	v6, v8, 7
-#endif
-	vcmpequb.	v6, v6, v1
-	/* Shift r3 by 8  bytes and proceed.  */
-	blt	cr6, L(shift8)
-	b	L(begin)
-
-	.align	4
-L(match):
-	/* There is a match of 16 bytes, check next bytes.  */
-	cmpdi	cr7, r31, 16
-	mr	r29, r3
-	beq	cr7, L(ret_r3)
-
-L(secondmatch):
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-	/* Load next 16 bytes of r3 and r4 and compare.  */
-	clrldi	r10, r4, 60
-	cmpdi	cr7, r10, 0
-	beq	cr7, L(nextload)
-	/* Handle unaligned case.  */
-	vor	v6, v9, v9
-	vcmpequb.	v7, v0, v6
-	beq	cr6, L(nullchk2)
-	b	L(trailcheck)
-
-	.align	4
-L(nullchk2):
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v7, 0, r4
-#else
-	lvsl	v7, 0, r4
-#endif
-	addi	r5, r4, 16
-	/* If r4 is unaligned, load another 16 bytes.  */
-	lvx	v9, 0, r5
-#ifdef __LITTLE_ENDIAN__
-	vperm	v11, v9, v6, v7
-#else
-	vperm	v11, v6, v9, v7
-#endif
-	b	L(compare)
-
-	.align	4
-L(nextload):
-	lvx	v11, 0, r4
-L(compare):
-	vcmpequb.	v7, v0, v11
-	beq	cr6, L(nullchk3)
-	b	L(trailcheck)
-
-	.align	4
-L(nullchk3):
-	clrldi	r10, r3, 60
-	cmpdi 	cr7, r10, 0
-	beq 	cr7, L(nextload1)
-	/* Handle unaligned case.  */
-	vor	v4, v10, v10
-	vcmpequb.	v7, v0, v4
-	beq	cr6, L(nullchk4)
-	b	L(retnull)
-
-	.align	4
-L(nullchk4):
-#ifdef __LITTLE_ENDIAN__
-	lvsr	v7, 0, r3
-#else
-	lvsl	v7, 0, r3
-#endif
-	addi	r5, r3, 16
-	/* If r3 is unaligned, load another 16 bytes.  */
-	lvx	v10, 0, r5
-#ifdef __LITTLE_ENDIAN__
-	vperm	v4, v10, v4, v7
-#else
-	vperm	v4, v4, v10, v7
-#endif
-	b	L(compare1)
-
-	.align	4
-L(nextload1):
-	lvx	v4, 0, r3
-L(compare1):
-	vcmpequb.	v7, v0, v4
-	beq	cr6, L(nullchk5)
-	b	L(retnull)
-
-	.align	4
-L(nullchk5):
-	/* Convert both v3 and v4 to lower.  */
-	TOLOWER(v11)
-	/* If both are same, branch to secondmatch.  */
-	blt 	cr6, L(secondmatch)
-	/* Continue the search.  */
-        b	L(begin)
-
-	.align	4
-L(trailcheck):
-	ld	r10, __libc_tsd_LOCALE@got@tprel(r2)
-	add	r11, r10, __libc_tsd_LOCALE@tls
-	ld	r11, 0(r11)
-	ld	r11, LOCALE_CTYPE_TOLOWER(r11)
-L(loop2):
-	lbz	r5, 0(r3)               /* Load byte from r3.  */
-	lbz	r6, 0(r4)               /* Load next byte from r4.  */
-	cmpdi 	cr7, r6, 0              /* Is it null?  */
-	beq 	cr7, L(updater3)
-	cmpdi 	cr7, r5, 0              /* Is it null?  */
-	beq 	cr7, L(retnull)         /* If yes, return.  */
-	addi	r3, r3, 1
-	addi	r4, r4, 1               /* Increment r4.  */
-	sldi	r10, r5, 2              /* Convert to lower case.  */
-	lwzx	r10, r11, r10
-	sldi	r7, r6, 2               /* Convert to lower case.  */
-	lwzx	r7, r11, r7
-	cmpw	cr7, r7, r10            /* Compare with byte from r4.  */
-	bne	cr7, L(begin)
-	b	L(loop2)
-
-	.align	4
-L(shift8):
-	addi	r8, r8, 7
-	b	L(begin)
-	.align	4
-L(shift16):
-	addi	r8, r8, 15
-	.align	4
-L(begin):
-	addi	r8, r8, 1
-	mr	r3, r8
-	/* When our iterations exceed ITERATIONS,fall back to default.  */
-	addi	r27, r27, 1
-	cmpdi	cr7, r27, ITERATIONS
-	beq	cr7, L(default)
-	mr	r4, r30         /* Restore r4.  */
-	b	L(begin2)
-
-	/* Handling byte by byte.  */
-	.align	4
-L(loop1):
-	mr	r3, r8
-	addi	r27, r27, 1
-	cmpdi	cr7, r27, ITERATIONS
-	beq	cr7, L(default)
-	mr	r29, r8
-	srdi	r4, r28, 8
-	/* Check if the first char is present.  */
-	bl	STRCHR
-	nop
-	mr	r5, r3
-	mr	r3, r29
-	mr	r29, r5
-	sldi	r4, r28, 56
-	srdi	r4, r4, 56
-	bl	STRCHR
-	nop
-	cmpdi	cr7, r29, 0
-	beq	cr7, L(nextpos)
-	cmpdi	cr7, r3, 0
-	beq	cr7, L(skipcheck1)
-	cmpw	cr7, r3, r29
-	ble 	cr7, L(nextpos)
-	/* Move r3 to first occurence.  */
-L(skipcheck1):
-	mr	r3, r29
-L(nextpos):
-	mr	r29, r3
-	cmpdi 	cr7, r3, 0
-	ble 	cr7, L(retnull)
-L(bytebybyte):
-	ld	r10, __libc_tsd_LOCALE@got@tprel(r2)
-	add	r11, r10, __libc_tsd_LOCALE@tls
-	ld	r11, 0(r11)
-	ld	r11, LOCALE_CTYPE_TOLOWER(r11)
-	mr	r4, r30                 /* Restore r4.  */
-	mr	r8, r3                  /* Save r3.  */
-	addi	r8, r8, 1
-
-L(loop):
-	addi	r3, r3, 1
-	lbz	r5, 0(r3)               /* Load byte from r3.  */
-	addi	r4, r4, 1               /* Increment r4.  */
-	lbz	r6, 0(r4)               /* Load next byte from r4.  */
-	cmpdi 	cr7, r6, 0              /* Is it null?  */
-	beq 	cr7, L(updater3)
-	cmpdi 	cr7, r5, 0              /* Is it null?  */
-	beq 	cr7, L(retnull)         /* If yes, return.  */
-	sldi	r10, r5, 2              /* Convert to lower case.  */
-	lwzx	r10, r11, r10
-	sldi	r7, r6, 2               /* Convert to lower case.  */
-	lwzx	r7, r11, r7
-	cmpw	cr7, r7, r10            /* Compare with byte from r4.  */
-	bne 	cr7, L(loop1)
-	b	L(loop)
-
-	/* Handling return values.  */
-	.align	4
-L(updater3):
-	subf	r3, r31, r3	/* Reduce r31 (len of r4) from r3.  */
-	b	L(end)
-
-	.align	4
-L(ret_r3):
-	mr	r3, r29		/* Return point of match.  */
-	b	L(end)
-
-	.align	4
-L(retnull):
-	li	r3, 0		/* Substring was not found.  */
-	b	L(end)
-
-	.align	4
-L(default):
-	mr	r4, r30
-	bl	__strcasestr_ppc
-	nop
-
-	.align	4
-L(end):
-	addi	r1, r1, FRAMESIZE	/* Restore stack pointer.  */
-	cfi_adjust_cfa_offset(-FRAMESIZE)
-	ld	r0, 16(r1)	/* Restore the saved link register.  */
-	ld	r27, -40(r1)
-	ld	r28, -32(r1)
-	ld	r29, -24(r1)	/* Restore callers save register r29.  */
-	ld	r30, -16(r1)	/* Restore callers save register r30.  */
-	ld	r31, -8(r1)	/* Restore callers save register r31.  */
-	cfi_restore(lr)
-	cfi_restore(r27)
-	cfi_restore(r28)
-	cfi_restore(r29)
-	cfi_restore(r30)
-	cfi_restore(r31)
-	mtlr	r0		/* Branch to link register.  */
-	blr
-END (STRCASESTR)
-
-weak_alias (__strcasestr, strcasestr)
-libc_hidden_def (__strcasestr)
-libc_hidden_builtin_def (strcasestr)
diff --git a/sysdeps/powerpc/powerpc64/power8/strchr.S b/sysdeps/powerpc/powerpc64/power8/strchr.S
deleted file mode 100644
index e0c185c162..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strchr.S
+++ /dev/null
@@ -1,377 +0,0 @@
-/* Optimized strchr implementation for PowerPC64/POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef USE_AS_STRCHRNUL
-# ifndef STRCHRNUL
-#   define FUNC_NAME __strchrnul
-# else
-#   define FUNC_NAME STRCHRNUL
-# endif
-#else
-# ifndef STRCHR
-#  define FUNC_NAME strchr
-# else
-#  define FUNC_NAME STRCHR
-# endif
-#endif  /* !USE_AS_STRCHRNUL  */
-
-/* int [r3] strchr (char *s [r3], int c [r4])  */
-/* TODO: change these to the actual instructions when the minimum required
-   binutils allows it.  */
-#define MTVRD(v,r) .long (0x7c000167 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define MFVRD(r,v) .long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define VBPERMQ(t,a,b)  .long (0x1000054c \
-			| ((t)<<(32-11)) \
-			| ((a)<<(32-16)) \
-			| ((b)<<(32-21)) )
-/* TODO: change this to .machine power8 when the minimum required binutils
-   allows it.  */
-	.machine  power7
-ENTRY (FUNC_NAME)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-	cmpdi	cr7,r4,0
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-
-	beq	cr7,L(null_match)
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi  r4,r4,32,0
-
-	/* Now r4 has a doubleword of c bytes and r0 has
-	   a doubleword of null bytes.  */
-
-	cmpb	r10,r12,r4     /* Compare each byte against c byte.  */
-	cmpb	r11,r12,r0     /* Compare each byte against null byte.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-#else
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-#endif
-	or	r5,r10,r11    /* OR the results to speed things up.  */
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb    r10,r12,r4
-	cmpb	r11,r12,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r9,16(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	cmpb	r6,r9,r4
-	cmpb	r7,r9,r0
-	or	r5,r10,r11
-	or	r9,r6,r7
-	or	r12,r5,r9
-	cmpdi	cr7,r12,0
-	beq	cr7,L(vector)
-	/* OK, one (or both) of the doublewords contains a c/null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c/null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second doubleword.  Adjust the
-	   address again and move the result of cmpb to r10 so we can calculate
-	   the pointer.  */
-
-	mr	r10,r6
-	mr	r11,r7
-	addi	r8,r8,8
-#ifdef USE_AS_STRCHRNUL
-	mr	r5, r9
-#endif
-	/* r10/r11 have the output of the cmpb instructions, that is,
-	   0xff in the same position as the c/null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done):
-#ifdef USE_AS_STRCHRNUL
-	mr	r10, r5
-#endif
-#ifdef __LITTLE_ENDIAN__
-	addi    r3,r10,-1
-	andc    r3,r3,r10
-	popcntd	r0,r3
-# ifndef USE_AS_STRCHRNUL
-	addi    r4,r11,-1
-	andc    r4,r4,r11
-	cmpld	cr7,r3,r4
-	bgt	cr7,L(no_match)
-# endif
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before c matches.  */
-# ifndef USE_AS_STRCHRNUL
-	cmpld	cr7,r11,r10
-	bgt	cr7,L(no_match)
-# endif
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching c byte
-				 or null in case c was not found.  */
-	blr
-
-	/* Check the first 32B in GPR's and move to vectorized loop.  */
-	.p2align  5
-L(vector):
-	addi	r3, r8, 8
-	andi.	r10, r3, 31
-	bne	cr0, L(loop)
-	vspltisb	v0, 0
-	/* Precompute vbpermq constant.  */
-	vspltisb	v10, 3
-	lvsl	v11, r0, r0
-	vslb	v10, v11, v10
-	MTVRD(v1,r4)
-	li	r5, 16
-	vspltb	v1, v1, 7
-	/* Compare 32 bytes in each loop.  */
-L(continue):
-	lvx	v4, 0, r3
-	lvx	v5, r3, r5
-	vcmpequb	v2, v0, v4
-	vcmpequb	v3, v0, v5
-	vcmpequb	v6, v1, v4
-	vcmpequb	v7, v1, v5
-	vor	v8, v2, v3
-	vor	v9, v6, v7
-	vor	v11, v8, v9
-	vcmpequb.	v11, v0, v11
-	addi	r3, r3, 32
-	blt	cr6, L(continue)
-	/* One (or both) of the quadwords contains a c/null byte.  */
-	addi	r3, r3, -32
-#ifndef USE_AS_STRCHRNUL
-	vcmpequb.	v11, v0, v9
-	blt	cr6, L(no_match)
-#endif
-	/* Permute the first bit of each byte into bits 48-63.  */
-	VBPERMQ(v2, v2, v10)
-	VBPERMQ(v3, v3, v10)
-	VBPERMQ(v6, v6, v10)
-	VBPERMQ(v7, v7, v10)
-	/* Shift each component into its correct position for merging.  */
-#ifdef __LITTLE_ENDIAN__
-	vsldoi	v3, v3, v3, 2
-	vsldoi	v7, v7, v7, 2
-#else
-	vsldoi	v2, v2, v2, 6
-	vsldoi	v3, v3, v3, 4
-	vsldoi	v6, v6, v6, 6
-	vsldoi	v7, v7, v7, 4
-#endif
-
-        /* Merge the results and move to a GPR.  */
-        vor     v1, v3, v2
-        vor     v2, v6, v7
-        vor     v4, v1, v2
-	MFVRD(r5, v4)
-#ifdef __LITTLE_ENDIAN__
-	addi	r6, r5, -1
-	andc	r6, r6, r5
-	popcntd	r6, r6
-#else
-	cntlzd	r6, r5	/* Count leading zeros before the match.  */
-#endif
-	add	r3, r3, r6	/* Compute final length.  */
-	/* Return NULL if null found before c.  */
-#ifndef USE_AS_STRCHRNUL
-	lbz	r4, 0(r3)
-	cmpdi	cr7, r4, 0
-	beq	cr7, L(no_match)
-#endif
-	blr
-
-#ifndef USE_AS_STRCHRNUL
-	.align	4
-L(no_match):
-	li	r3,0
-	blr
-#endif
-
-/* We are here because strchr was called with a null byte.  */
-	.align	4
-L(null_match):
-	/* r0 has a doubleword of null bytes.  */
-
-	cmpb	r5,r12,r0     /* Compare each byte against null bytes.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r5,r5,r6
-	sld	r5,r5,r6
-#else
-	sld	r5,r5,r6
-	srd	r5,r5,r6
-#endif
-	cmpdi	cr7,r5,0      /* If r10 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done_null)
-
-	mtcrf   0x01,r8
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bt	28,L(loop_null)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb    r5,r12,r0
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done_null)
-	b	L(loop_null)  /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop_null):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu     r11,16(r8)
-	cmpb	r5,r12,r0
-	cmpb	r10,r11,r0
-	or	r6,r5,r10
-	cmpdi	cr7,r6,0
-	beq	cr7,L(vector1)
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done_null)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-
-	mr	r5,r10
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done_null):
-#ifdef __LITTLE_ENDIAN__
-	addi    r0,r5,-1
-	andc    r0,r0,r5
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching null byte.  */
-	blr
-	.p2align  5
-L(vector1):
-	addi    r3, r8, 8
-	andi.	r10, r3, 31
-	bne	cr0, L(loop_null)
-	vspltisb	v8, -1
-	vspltisb	v0, 0
-	vspltisb	v10, 3
-	lvsl	v11, r0, r0
-	vslb	v10, v11, v10
-	li	r5, 16
-L(continue1):
-	lvx	v4, 0, r3
-	lvx	v5, r3, r5
-	vcmpequb	v2, v0, v4
-	vcmpequb	v3, v0, v5
-	vor	v8, v2, v3
-	vcmpequb.	v11, v0, v8
-	addi	r3, r3, 32
-	blt	cr6, L(continue1)
-	addi	r3, r3, -32
-L(end1):
-	VBPERMQ(v2, v2, v10)
-	VBPERMQ(v3, v3, v10)
-	/* Shift each component into its correct position for merging.  */
-#ifdef __LITTLE_ENDIAN__
-	vsldoi	v3, v3, v3, 2
-#else
-	vsldoi	v2, v2, v2, 6
-	vsldoi	v3, v3, v3, 4
-#endif
-
-        /* Merge the results and move to a GPR.  */
-        vor     v4, v3, v2
-	MFVRD(r5, v4)
-#ifdef __LITTLE_ENDIAN__
-	addi	r6, r5, -1
-	andc	r6, r6, r5
-	popcntd	r6, r6
-#else
-	cntlzd	r6, r5	/* Count leading zeros before the match.  */
-#endif
-	add	r3, r3, r6	/* Compute final length.  */
-	blr
-END (FUNC_NAME)
-
-#ifndef USE_AS_STRCHRNUL
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/strchrnul.S b/sysdeps/powerpc/powerpc64/power8/strchrnul.S
deleted file mode 100644
index 3bf4b275dd..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strchrnul.S
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Optimized strchrnul implementation for PowerPC64/POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STRCHRNUL 1
-#include <sysdeps/powerpc/powerpc64/power8/strchr.S>
-
-weak_alias (__strchrnul,strchrnul)
-libc_hidden_builtin_def (__strchrnul)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcmp.S b/sysdeps/powerpc/powerpc64/power8/strcmp.S
deleted file mode 100644
index 770484f1e1..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcmp.S
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Optimized strcmp implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRCMP
-# define STRCMP strcmp
-#endif
-
-/* Implements the function
-
-   size_t [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
-
-   The implementation uses unaligned doubleword access to avoid specialized
-   code paths depending of data alignment.  Although recent powerpc64 uses
-   64K as default, the page cross handling assumes minimum page size of
-   4k.  */
-
-EALIGN (STRCMP, 4, 0)
-	li	r0,0
-
-	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
-	   the code:
-
-	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
-
-	   with PAGE_SIZE being 4096 and ITER_SIZE begin 16.  */
-
-	rldicl	r7,r3,0,52
-	rldicl	r9,r4,0,52
-	cmpldi	cr7,r7,4096-16
-	bgt	cr7,L(pagecross_check)
-	cmpldi	cr5,r9,4096-16
-	bgt	cr5,L(pagecross_check)
-
-	/* For short string up to 16 bytes, load both s1 and s2 using
-	   unaligned dwords and compare.  */
-	ld	r8,0(r3)
-	ld	r10,0(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	ld	r8,8(r3)
-	ld	r10,8(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	addi	r7,r3,16
-	addi	r4,r4,16
-
-L(align_8b):
-	/* Now it has checked for first 16 bytes, align source1 to doubleword
-	   and adjust source2 address.  */
-	rldicl	r9,r7,0,61	/* source1 alignment to doubleword  */
-	subf	r4,r9,r4	/* Adjust source2 address based on source1
-				   alignment.  */
-	rldicr	r7,r7,0,60	/* Align source1 to doubleword.  */
-
-	/* At this point, source1 alignment is 0 and source2 alignment is
-	   between 0 and 7.  Check is source2 alignment is 0, meaning both
-	   sources have the same alignment.  */
-	andi.	r9,r4,0x7
-	bne	cr0,L(loop_diff_align)
-
-	/* If both source1 and source2 are doubleword aligned, there is no
-	   need for page boundary cross checks.  */
-
-	ld	r8,0(r7)
-	ld	r10,0(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	.align 4
-L(loop_equal_align):
-	ld	r8,8(r7)
-	ld	r10,8(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	ld	r8,16(r7)
-	ld	r10,16(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	ldu	r8,24(r7)
-	ldu	r10,24(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-
-	b	L(loop_equal_align)
-
-	/* A zero byte was found in r8 (s1 dword), r9 contains the cmpb
-	   result and r10 the dword from s2.  To code isolate the byte
-	   up to end (including the '\0'), masking with 0xFF the remaining
-	   ones:
-
-           #if __LITTLE_ENDIAN__
-	     (__builtin_ffsl (x) - 1) = counting trailing zero bits
-	     r9 = (__builtin_ffsl (r9) - 1) + 8;
-	     r9 = -1UL << r9
-	   #else
-	     r9  = __builtin_clzl (r9) + 8;
-	     r9  = -1UL >> r9
-	   #endif
-	     r8  = r8  | r9
-	     r10 = r10 | r9  */
-
-#ifdef __LITTLE_ENDIAN__
-	nor 	r9,r9,r9
-L(different_nocmpb):
-	neg	r3,r9
-	and	r9,r9,r3
-	cntlzd	r9,r9
-	subfic	r9,r9,63
-#else
-	not	r9,r9
-L(different_nocmpb):
-	cntlzd	r9,r9
-	subfic	r9,r9,56
-#endif
-	srd	r3,r8,r9
-	srd	r10,r10,r9
-	rldicl	r10,r10,0,56
-	rldicl	r3,r3,0,56
-	subf	r3,r10,r3
-	extsw	r3,r3
-	blr
-
-	.align	4
-L(pagecross_check):
-	subfic	r9,r9,4096
-	subfic	r7,r7,4096
-	cmpld	cr7,r7,r9
-	bge	cr7,L(pagecross)
-	mr	r7,r9
-
-	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
-	   a simple byte a byte comparison until the page alignment for s1
-	   is reached.  */
-L(pagecross):
-	add	r7,r3,r7
-	subf	r9,r3,r7
-	mtctr	r9
-
-	.align	4
-L(pagecross_loop):
-	/* Loads a byte from s1 and s2, compare if *s1 is equal to *s2
-	   and if *s1 is '\0'.  */
-	lbz	r9,0(r3)
-	lbz	r10,0(r4)
-	addi	r3,r3,1
-	addi	r4,r4,1
-	cmplw	cr7,r9,r10
-	cmpdi	cr5,r9,r0
-	bne	cr7,L(pagecross_ne)
-	beq	cr5,L(pagecross_nullfound)
-	bdnz	L(pagecross_loop)
-	b	L(align_8b)
-
-	.align	4
-	/* The unaligned read of source2 will cross a 4K page boundary,
-	   and the different byte or NULL maybe be in the remaining page
-	   bytes. Since it can not use the unaligned load, the algorithm
-	   reads and compares 8 bytes to keep source1 doubleword aligned.  */
-L(check_source2_byte):
-	li	r9,8
-	mtctr	r9
-
-	.align	4
-L(check_source2_byte_loop):
-	lbz	r9,0(r7)
-	lbz	r10,0(r4)
-	addi	r7,r7,1
-	addi	r4,r4,1
-	cmplw	cr7,r9,10
-	cmpdi	r5,r9,0
-	bne	cr7,L(pagecross_ne)
-	beq	cr5,L(pagecross_nullfound)
-	bdnz	L(check_source2_byte_loop)
-
-	/* If source2 is unaligned to doubleword, the code needs to check
-	   on each interation if the unaligned doubleword access will cross
-	   a 4k page boundary.  */
-	.align	5
-L(loop_unaligned):
-	ld	r8,0(r7)
-	ld	r10,0(r4)
-	cmpb	r12,r8,r0
-	cmpb	r11,r8,r10
-	orc.	r9,r12,r11
-	bne	cr0,L(different_nocmpb)
-	addi	r7,r7,8
-	addi	r4,r4,8
-
-L(loop_diff_align):
-	/* Check if [src2]+8 cross a 4k page boundary:
-
-	     srcin2 % PAGE_SIZE > (PAGE_SIZE - 8)
-
-	     with PAGE_SIZE being 4096.  */
-	rldicl	r9,r4,0,52
-	cmpldi	cr7,r9,4088
-	ble	cr7,L(loop_unaligned)
-	b	L(check_source2_byte)
-
-	.align	4
-L(pagecross_ne):
-	extsw	r3,r9
-	mr	r9,r10
-L(pagecross_retdiff):
-	subf	r9,r9,r3
-	extsw	r3,r9
-	blr
-
-	.align	4
-L(pagecross_nullfound):
-	li	r3,0
-	b	L(pagecross_retdiff)
-END (STRCMP)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcpy.S b/sysdeps/powerpc/powerpc64/power8/strcpy.S
deleted file mode 100644
index 7f2cee4b1b..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcpy.S
+++ /dev/null
@@ -1,270 +0,0 @@
-/* Optimized strcpy/stpcpy implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef USE_AS_STPCPY
-# ifndef STPCPY
-#   define FUNC_NAME __stpcpy
-# else
-#   define FUNC_NAME STPCPY
-# endif
-#else
-# ifndef STRCPY
-#  define FUNC_NAME strcpy
-# else
-#  define FUNC_NAME STRCPY
-# endif
-#endif  /* !USE_AS_STPCPY  */
-
-/* Implements the function
-
-   char * [r3] strcpy (char *dest [r3], const char *src [r4])
-
-   or
-
-   char * [r3] stpcpy (char *dest [r3], const char *src [r4])
-
-   if USE_AS_STPCPY is defined.
-
-   The implementation uses unaligned doubleword access to avoid specialized
-   code paths depending of data alignment.  Although recent powerpc64 uses
-   64K as default, the page cross handling assumes minimum page size of
-   4k.  */
-
-	.machine  power7
-EALIGN (FUNC_NAME, 4, 0)
-        li      r0,0          /* Doubleword with null chars to use
-                                 with cmpb.  */
-
-	/* Check if the [src]+15 will cross a 4K page by checking if the bit
-	   indicating the page size changes.  Basically:
-
-	   uint64_t srcin = (uint64_t)src;
-	   uint64_t ob = srcin & 4096UL;
-	   uint64_t nb = (srcin+15UL) & 4096UL;
-	   if (ob ^ nb)
-	     goto pagecross;  */
-
-	addi	r9,r4,15
-	xor	r9,r9,r4
-	rlwinm.	r9,r9,0,19,19
-	bne	L(pagecross)
-
-	/* For short string (less than 16 bytes), just calculate its size as
-	   strlen and issues a memcpy if null is found.  */
-	mr	r7,r4
-        ld      r12,0(r7)     /* Load doubleword from memory.  */
-        cmpb    r10,r12,r0    /* Check for null bytes in DWORD1.  */
-        cmpdi   cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-        bne     cr7,L(done)
-
-        ldu     r8,8(r7)
-        cmpb    r10,r8,r0
-        cmpdi   cr7,r10,0
-        bne     cr7,L(done)
-
-	b	L(loop_before)
-
-	.align	4
-L(pagecross):
-	clrrdi  r7,r4,3       /* Align the address to doubleword boundary.  */
-	rlwinm  r6,r4,3,26,28 /* Calculate padding.  */
-	li      r5,-1         /* MASK = 0xffffffffffffffff.  */
-        ld      r12,0(r7)     /* Load doubleword from memory.  */
-#ifdef __LITTLE_ENDIAN__
-        sld     r5,r5,r6
-#else
-        srd     r5,r5,r6      /* MASK = MASK >> padding.  */
-#endif
-        orc     r9,r12,r5     /* Mask bits that are not part of the string.  */
-        cmpb    r10,r9,r0     /* Check for null bytes in DWORD1.  */
-        cmpdi   cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-        bne     cr7,L(done)
-
-        ldu     r6,8(r7)
-        cmpb    r10,r6,r0
-        cmpdi   cr7,r10,0
-        bne     cr7,L(done)
-
-        ld      r12,0(r7)
-        cmpb    r10,r12,r0
-        cmpdi   cr7,r10,0
-        bne     cr7,L(done)
-
-        ldu     r6,8(r7)
-        cmpb    r10,r6,r0
-        cmpdi   cr7,r10,0
-        bne     cr7,L(done)
-
-	/* We checked for 24 - x bytes, with x being the source alignment
-	   (0 <= x <= 16), and no zero has been found.  Start the loop
-	   copy with doubleword aligned address.  */
-	mr	r7,r4
-	ld	r12, 0(r7)
-	ldu	r8, 8(r7)
-
-L(loop_before):
-	/* Save the two doublewords readed from source and align the source
-	   to 16 bytes for the loop.  */
-	mr	r11,r3
-	std	r12,0(r11)
-	std	r8,8(r11)
-	addi	r11,r11,16
-	rldicl	r9,r4,0,60
-	subf	r7,r9,r7
-	subf	r11,r9,r11
-	b	L(loop_start)
-
-        .align  5
-L(loop):
-        std     r12, 0(r11)
-        std     r6, 8(r11)
-	addi	r11,r11,16
-L(loop_start):
-        /* Load two doublewords, compare and merge in a
-           single register for speed.  This is an attempt
-           to speed up the null-checking process for bigger strings.  */
-
-        ld      r12, 8(r7)
-        ldu     r6, 16(r7)
-        cmpb    r10,r12,r0
-        cmpb    r9,r6,r0
-        or      r8,r9,r10     /* Merge everything in one doubleword.  */
-        cmpdi   cr7,r8,0
-        beq     cr7,L(loop)
-
-
-        /* OK, one (or both) of the doublewords contains a null byte.  Check
-           the first doubleword and decrement the address in case the first
-           doubleword really contains a null byte.  */
-
-	addi	r4,r7,-8
-        cmpdi   cr6,r10,0
-        addi    r7,r7,-8
-        bne     cr6,L(done2)
-
-        /* The null byte must be in the second doubleword.  Adjust the address
-           again and move the result of cmpb to r10 so we can calculate the
-           length.  */
-
-        mr      r10,r9
-        addi    r7,r7,8
-	b	L(done2)
-
-        /* r10 has the output of the cmpb instruction, that is, it contains
-           0xff in the same position as the null byte in the original
-           doubleword from the string.  Use that to calculate the length.  */
-L(done):
-	mr	r11,r3
-L(done2):
-#ifdef __LITTLE_ENDIAN__
-        addi    r9, r10, -1   /* Form a mask from trailing zeros.  */
-        andc    r9, r9, r10
-        popcntd r6, r9        /* Count the bits in the mask.  */
-#else
-        cntlzd  r6,r10        /* Count leading zeros before the match.  */
-#endif
-        subf    r5,r4,r7
-        srdi    r6,r6,3       /* Convert leading/trailing zeros to bytes.  */
-        add     r8,r5,r6      /* Compute final length.  */
-#ifdef USE_AS_STPCPY
-	/* stpcpy returns the dest address plus the size not counting the
-	   final '\0'.  */
-	add	r3,r11,r8
-#endif
-	addi	r8,r8,1       /* Final '/0'.  */
-
-	cmpldi	cr6,r8,8
-	mtocrf	0x01,r8
-	ble	cr6,L(copy_LE_8)
-
-	cmpldi	cr1,r8,16
-	blt	cr1,8f
-
-	/* Handle copies of 0~31 bytes.  */
-	.align	4
-L(copy_LT_32):
-	/* At least 6 bytes to go.  */
-	blt	cr1,8f
-
-	/* Copy 16 bytes.  */
-	ld	r6,0(r4)
-	ld	r8,8(r4)
-	addi	r4,r4,16
-	std	r6,0(r11)
-	std	r8,8(r11)
-	addi	r11,r11,16
-8:	/* Copy 8 bytes.  */
-	bf	28,L(tail4)
-	ld	r6,0(r4)
-	addi	r4,r4,8
-	std	r6,0(r11)
-	addi	r11,r11,8
-
-	.align	4
-/* Copies 4~7 bytes.  */
-L(tail4):
-	bf	29,L(tail2)
-	lwz	r6,0(r4)
-	stw	r6,0(r11)
-	bf	30,L(tail5)
-	lhz	r7,4(r4)
-	sth	r7,4(r11)
-	bflr	31
-	lbz	r8,6(r4)
-	stb	r8,6(r11)
-	blr
-
-	.align	4
-/* Copies 2~3 bytes.  */
-L(tail2):
-	bf	30,1f
-	lhz	r6,0(r4)
-	sth	r6,0(r11)
-	bflr	31
-	lbz	r7,2(r4)
-	stb	r7,2(r11)
-	blr
-
-	.align	4
-L(tail5):
-	bf	31,1f
-	lbz	r6,4(r4)
-	stb	r6,4(r11)
-	blr
-
-	.align	4
-1:
-	bflr	31
-	lbz	r6,0(r4)
-	stb	r6,0(r11)
-	blr
-
-/* Handles copies of 0~8 bytes.  */
-	.align	4
-L(copy_LE_8):
-	bne	cr6,L(tail4)
-	ld	r6,0(r4)
-	std	r6,0(r11)
-	blr
-END (FUNC_NAME)
-
-#ifndef USE_AS_STPCPY
-libc_hidden_builtin_def (strcpy)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/strcspn.S b/sysdeps/powerpc/powerpc64/power8/strcspn.S
deleted file mode 100644
index c9a7a2e3c3..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strcspn.S
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Optimized strcspn implementation for PowerPC64/POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STRCSPN 1
-#include <sysdeps/powerpc/powerpc64/power8/strspn.S>
diff --git a/sysdeps/powerpc/powerpc64/power8/strlen.S b/sysdeps/powerpc/powerpc64/power8/strlen.S
deleted file mode 100644
index 8f4a1fc1dc..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strlen.S
+++ /dev/null
@@ -1,301 +0,0 @@
-/* Optimized strlen implementation for PowerPC64/POWER8 using a vectorized
-   loop.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* TODO: change these to the actual instructions when the minimum required
-   binutils allows it.  */
-#define MFVRD(r,v)	.long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define VBPERMQ(t,a,b)	.long (0x1000054c \
-			       | ((t)<<(32-11))	\
-			       | ((a)<<(32-16))	\
-			       | ((b)<<(32-21)) )
-
-/* int [r3] strlen (char *s [r3])  */
-
-#ifndef STRLEN
-# define STRLEN strlen
-#endif
-
-/* TODO: change this to .machine power8 when the minimum required binutils
-   allows it.  */
-	.machine  power7
-EALIGN (STRLEN, 4, 0)
-	CALL_MCOUNT 1
-	dcbt	0,r3
-	clrrdi	r4,r3,3	      /* Align the address to doubleword boundary.  */
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-	li	r5,-1	      /* MASK = 0xffffffffffffffff.  */
-	ld	r12,0(r4)     /* Load doubleword from memory.  */
-#ifdef __LITTLE_ENDIAN__
-	sld	r5,r5,r6
-#else
-	srd	r5,r5,r6      /* MASK = MASK >> padding.  */
-#endif
-	orc	r9,r12,r5     /* Mask bits that are not part of the string.  */
-	cmpb	r10,r9,r0     /* Check for null bytes in DWORD1.  */
-	cmpdi	cr7,r10,0     /* If r10 == 0, no null's have been found.  */
-	bne	cr7,L(done)
-
-	/* For shorter strings (< 64 bytes), we will not use vector registers,
-	   as the overhead isn't worth it.  So, let's use GPRs instead.  This
-	   will be done the same way as we do in the POWER7 implementation.
-	   Let's see if we are aligned to a quadword boundary.  If so, we can
-	   jump to the first (non-vectorized) loop.  Otherwise, we have to
-	   handle the next DWORD first.  */
-	mtcrf	0x01,r4
-	mr	r9,r4
-	addi	r9,r9,8
-	bt	28,L(align64)
-
-	/* Handle the next 8 bytes so we are aligned to a quadword
-	   boundary.  */
-	ldu	r5,8(r4)
-	cmpb	r10,r5,r0
-	cmpdi	cr7,r10,0
-	addi	r9,r9,8
-	bne	cr7,L(done)
-
-L(align64):
-	/* Proceed to the old (POWER7) implementation, checking two doublewords
-	   per iteraction.  For the first 56 bytes, we will just check for null
-	   characters.  After that, we will also check if we are 64-byte aligned
-	   so we can jump to the vectorized implementation.  We will unroll
-	   these loops to avoid excessive branching.  */
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	/* Are we 64-byte aligned? If so, jump to the vectorized loop.
-	   Note: aligning to 64-byte will necessarily slow down performance for
-	   strings around 64 bytes in length due to the extra comparisons
-	   required to check alignment for the vectorized loop.  This is a
-	   necessary tradeoff we are willing to take in order to speed up the
-	   calculation for larger strings.  */
-	andi.	r10,r9,63
-	beq	cr0,L(preloop)
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	andi.	r10,r9,63
-	beq	cr0,L(preloop)
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	andi.	r10,r9,63
-	beq	cr0,L(preloop)
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	andi.	r10,r9,63
-	beq	cr0,L(preloop)
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
-
-	/* At this point, we are necessarily 64-byte aligned.  If no zeroes were
-	   found, jump to the vectorized loop.  */
-	beq	cr7,L(preloop)
-
-L(dword_zero):
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r10,0
-	addi	r4,r4,-8
-	bne	cr6,L(done)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   length.  */
-
-	mr	r10,r11
-	addi	r4,r4,8
-
-	/* If the null byte was found in the non-vectorized code, compute the
-	   final length.  r10 has the output of the cmpb instruction, that is,
-	   it contains 0xff in the same position as the null byte in the
-	   original doubleword from the string.  Use that to calculate the
-	   length.  */
-L(done):
-#ifdef __LITTLE_ENDIAN__
-	addi	r9, r10,-1    /* Form a mask from trailing zeros.  */
-	andc	r9, r9,r10
-	popcntd	r0, r9	      /* Count the bits in the mask.  */
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	subf	r5,r3,r4
-	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r5,r0      /* Compute final length.  */
-	blr
-
-	/* Vectorized implementation starts here.  */
-	.p2align  4
-L(preloop):
-	/* Set up for the loop.  */
-	mr	r4,r9
-	li	r7, 16	      /* Load required offsets.  */
-	li	r8, 32
-	li	r9, 48
-	li	r12, 8
-	vxor	v0,v0,v0      /* VR with null chars to use with
-				 vcmpequb.  */
-
-	/* Main loop to look for the end of the string.  We will read in
-	   64-byte chunks.  Align it to 32 bytes and unroll it 3 times to
-	   leverage the icache performance.  */
-	.p2align  5
-L(loop):
-	lvx	  v1,r4,r0  /* Load 4 quadwords.  */
-	lvx	  v2,r4,r7
-	lvx	  v3,r4,r8
-	lvx	  v4,r4,r9
-	vminub	  v5,v1,v2  /* Compare and merge into one VR for speed.  */
-	vminub	  v6,v3,v4
-	vminub	  v7,v5,v6
-	vcmpequb. v7,v7,v0  /* Check for NULLs.  */
-	addi	  r4,r4,64  /* Adjust address for the next iteration.  */
-	bne	  cr6,L(vmx_zero)
-
-	lvx	  v1,r4,r0  /* Load 4 quadwords.  */
-	lvx	  v2,r4,r7
-	lvx	  v3,r4,r8
-	lvx	  v4,r4,r9
-	vminub	  v5,v1,v2  /* Compare and merge into one VR for speed.  */
-	vminub	  v6,v3,v4
-	vminub	  v7,v5,v6
-	vcmpequb. v7,v7,v0  /* Check for NULLs.  */
-	addi	  r4,r4,64  /* Adjust address for the next iteration.  */
-	bne	  cr6,L(vmx_zero)
-
-	lvx	  v1,r4,r0  /* Load 4 quadwords.  */
-	lvx	  v2,r4,r7
-	lvx	  v3,r4,r8
-	lvx	  v4,r4,r9
-	vminub	  v5,v1,v2  /* Compare and merge into one VR for speed.  */
-	vminub	  v6,v3,v4
-	vminub	  v7,v5,v6
-	vcmpequb. v7,v7,v0  /* Check for NULLs.  */
-	addi	  r4,r4,64  /* Adjust address for the next iteration.  */
-	beq	  cr6,L(loop)
-
-L(vmx_zero):
-	/* OK, we found a null byte.  Let's look for it in the current 64-byte
-	   block and mark it in its corresponding VR.  */
-	vcmpequb  v1,v1,v0
-	vcmpequb  v2,v2,v0
-	vcmpequb  v3,v3,v0
-	vcmpequb  v4,v4,v0
-
-	/* We will now 'compress' the result into a single doubleword, so it
-	   can be moved to a GPR for the final calculation.  First, we
-	   generate an appropriate mask for vbpermq, so we can permute bits into
-	   the first halfword.  */
-	vspltisb  v10,3
-	lvsl	  v11,r0,r0
-	vslb	  v10,v11,v10
-
-	/* Permute the first bit of each byte into bits 48-63.  */
-	VBPERMQ(v1,v1,v10)
-	VBPERMQ(v2,v2,v10)
-	VBPERMQ(v3,v3,v10)
-	VBPERMQ(v4,v4,v10)
-
-	/* Shift each component into its correct position for merging.  */
-#ifdef __LITTLE_ENDIAN__
-	vsldoi  v2,v2,v2,2
-	vsldoi  v3,v3,v3,4
-	vsldoi  v4,v4,v4,6
-#else
-	vsldoi	v1,v1,v1,6
-	vsldoi	v2,v2,v2,4
-	vsldoi	v3,v3,v3,2
-#endif
-
-	/* Merge the results and move to a GPR.  */
-	vor	v1,v2,v1
-	vor	v2,v3,v4
-	vor	v4,v1,v2
-	MFVRD(r10,v4)
-
-	 /* Adjust address to the begninning of the current 64-byte block.  */
-	addi	r4,r4,-64
-
-#ifdef __LITTLE_ENDIAN__
-	addi	r9, r10,-1    /* Form a mask from trailing zeros.  */
-	andc	r9, r9,r10
-	popcntd	r0, r9	      /* Count the bits in the mask.  */
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	subf	r5,r3,r4
-	add	r3,r5,r0      /* Compute final length.  */
-	blr
-
-END (STRLEN)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc64/power8/strncase.S b/sysdeps/powerpc/powerpc64/power8/strncase.S
deleted file mode 100644
index 32e09e4d94..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strncase.S
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Optimized strncasecmp implementation for POWER8.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_STRNCASECMP 1
-#include <sysdeps/powerpc/powerpc64/power8/strcasecmp.S>
diff --git a/sysdeps/powerpc/powerpc64/power8/strncmp.S b/sysdeps/powerpc/powerpc64/power8/strncmp.S
deleted file mode 100644
index 3d8df90538..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strncmp.S
+++ /dev/null
@@ -1,327 +0,0 @@
-/* Optimized strncmp implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifndef STRNCMP
-# define STRNCMP strncmp
-#endif
-
-/* Implements the function
-
-   int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n)
-
-   The implementation uses unaligned doubleword access to avoid specialized
-   code paths depending of data alignment.  Although recent powerpc64 uses
-   64K as default, the page cross handling assumes minimum page size of
-   4k.  */
-
-	.machine  power7
-EALIGN (STRNCMP, 4, 0)
-	/* Check if size is 0.  */
-	mr.	r10,r5
-	beq	cr0,L(ret0)
-
-	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
-	   the code:
-
-	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
-
-	   with PAGE_SIZE being 4096 and ITER_SIZE begin 16.  */
-	rldicl	r8,r3,0,52
-	cmpldi	cr7,r8,4096-16
-	bgt	cr7,L(pagecross)
-	rldicl	r9,r4,0,52
-	cmpldi	cr7,r9,4096-16
-	bgt	cr7,L(pagecross)
-
-	/* For short string up to 16 bytes, load both s1 and s2 using
-	   unaligned dwords and compare.  */
-	ld	r7,0(r3)
-	ld	r9,0(r4)
-	li	r8,0
-	cmpb	r8,r7,r8
-	cmpb	r6,r7,r9
-	orc.	r8,r8,r6
-	bne	cr0,L(different1)
-
-	/* If the string compared are equal, but size is less or equal
-	   to 8, return 0.  */
-	cmpldi	cr7,r10,8
-	li	r9,0
-	ble	cr7,L(ret1)
-	addi	r5,r10,-8
-
-	ld	r7,8(r3)
-	ld	r9,8(r4)
-	cmpb	r8,r7,r8
-	cmpb	r6,r7,r9
-	orc.	r8,r8,r6
-	bne	cr0,L(different0)
-
-	cmpldi	cr7,r5,8
-	mr	r9,r8
-	ble	cr7,L(ret1)
-
-	/* Update pointers and size.  */
-	addi	r10,r10,-16
-	addi	r3,r3,16
-	addi	r4,r4,16
-
-	/* Now it has checked for first 16 bytes, align source1 to doubleword
-	   and adjust source2 address.  */
-L(align_8b):
-	rldicl	r5,r3,0,61
-	rldicr	r3,r3,0,60
-	subf	r4,r5,r4
-	add	r10,r10,r5
-
-	/* At this point, source1 alignment is 0 and source2 alignment is
-	   between 0 and 7.  Check is source2 alignment is 0, meaning both
-	   sources have the same alignment.  */
-	andi.	r8,r4,0x7
-	beq	cr0,L(loop_eq_align_0)
-
-	li	r5,0
-	b	L(loop_ne_align_1)
-
-	/* If source2 is unaligned to doubleword, the code needs to check
-	   on each interation if the unaligned doubleword access will cross
-	   a 4k page boundary.  */
-	.align 4
-L(loop_ne_align_0):
-	ld	r7,0(r3)
-	ld	r9,0(r4)
-	cmpb	r8,r7,r5
-	cmpb	r6,r7,r9
-	orc.	r8,r8,r6
-	bne	cr0,L(different1)
-
-	cmpldi	cr7,r10,8
-	ble	cr7,L(ret0)
-	addi	r10,r10,-8
-	addi	r3,r3,8
-	addi	r4,r4,8
-L(loop_ne_align_1):
-	rldicl	r9,r4,0,52
-	cmpldi	r7,r9,4088
-	ble	cr7,L(loop_ne_align_0)
-	cmpdi	cr7,r10,0
-	beq	cr7,L(ret0)
-
-	lbz	r9,0(r3)
-	lbz	r8,0(r4)
-	cmplw	cr7,r9,r8
-	bne	cr7,L(byte_ne_4)
-	cmpdi	cr7,r9,0
-	beq	cr7,L(size_reached_0)
-
-	li	r9,r7
-	addi	r8,r3,1
-	mtctr	r9
-	addi	r4,r4,1
-	addi	r10,r10,-1
-	addi	r3,r3,8
-
-	/* The unaligned read of source2 will cross a 4K page boundary,
-	   and the different byte or NULL maybe be in the remaining page
-	   bytes.  Since it can not use the unaligned load the algorithm
-	   reads and compares 8 bytes to keep source1 doubleword aligned.  */
-	.align 4
-L(loop_ne_align_byte):
-	cmpdi	cr7,r10,0
-	addi	r10,r10,-1
-	beq	cr7,L(ret0)
-	lbz	r9,0(r8)
-	lbz	r7,0(r4)
-	addi	r8,r8,1
-	addi	r4,r4,1
-	cmplw	cr7,r9,r7
-	cmpdi	cr5,r9,0
-	bne	cr7,L(size_reached_2)
-	beq	cr5,L(size_reached_0)
-	bdnz	L(loop_ne_align_byte)
-
-	cmpdi	cr7,r10,0
-	bne+	cr7,L(loop_ne_align_0)
-
-	.align 4
-L(ret0):
-	li	r9,0
-L(ret1):
-	mr	r3,r9
-	blr
-
-	/* The code now check if r8 and r10 are different by issuing a
-	   cmpb and shift the result based on its output:
-
-	#ifdef __LITTLE_ENDIAN__
-	  leadzero = (__builtin_ffsl (z1) - 1);
-	  leadzero = leadzero > (n-1)*8 ? (n-1)*8 : leadzero;
-	  r1 = (r1 >> leadzero) & 0xFFUL;
-	  r2 = (r2 >> leadzero) & 0xFFUL;
-	#else
-	  leadzero = __builtin_clzl (z1);
-	  leadzero = leadzero > (n-1)*8 ? (n-1)*8 : leadzero;
-	  r1 = (r1 >> (56 - leadzero)) & 0xFFUL;
-	  r2 = (r2 >> (56 - leadzero)) & 0xFFUL;
-	#endif
-	  return r1 - r2;  */
-
-	.align 4
-L(different0):
-	mr	r10,r5
-#ifdef __LITTLE_ENDIAN__
-L(different1):
-        neg	r11,r8
-        sldi	r10,r10,3
-        and	r8,r11,r8
-        addi	r10,r10,-8
-        cntlzd	r8,r8
-        subfic	r8,r8,63
-        extsw 	r8,r8
-        cmpld	cr7,r8,r10
-        ble	cr7,L(different2)
-        mr	r8,r10
-L(different2):
-        extsw	r8,r8
-#else
-L(different1):
-	addi	r10,r10,-1
-	cntlzd	r8,r8
-	sldi	r10,r10,3
-	cmpld	cr7,r8,r10
-	blt	cr7,L(different2)
-	mr	r8,r10
-L(different2):
-	subfic	r8,r8,56
-#endif
-	srd	r7,r7,r8
-	srd	r9,r9,r8
-	rldicl	r3,r7,0,56
-	rldicl	r9,r9,0,56
-	subf	r9,r9,3
-	extsw	r9,r9
-	mr	r3,r9
-	blr
-
-	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
-	   a simple byte a byte comparison until the page alignment for s1
-	   is reached.  */
-	.align 4
-L(pagecross):
-	lbz	r7,0(r3)
-	lbz	r9,0(r4)
-	subfic	r8,r8,4095
-	cmplw	cr7,r9,r7
-	bne	cr7,L(byte_ne_3)
-	cmpdi	cr7,r9,0
-	beq	cr7,L(byte_ne_0)
-	addi	r10,r10,-1
-	subf	r7,r8,r10
-	subf	r9,r7,r10
-	addi	r9,r9,1
-	mtctr	r9
-	b	L(pagecross_loop1)
-
-	.align 4
-L(pagecross_loop0):
-	beq	cr7,L(ret0)
-	lbz	r9,0(r3)
-	lbz	r8,0(r4)
-	addi	r10,r10,-1
-	cmplw	cr7,r9,r8
-	cmpdi	cr5,r9,0
-	bne	r7,L(byte_ne_2)
-	beq	r5,L(byte_ne_0)
-L(pagecross_loop1):
-	cmpdi	cr7,r10,0
-	addi	r3,r3,1
-	addi	r4,r4,1
-	bdnz	L(pagecross_loop0)
-	cmpdi	cr7,r7,0
-	li	r9,0
-	bne+	cr7,L(align_8b)
-	b	L(ret1)
-
-	/* If both source1 and source2 are doubleword aligned, there is no
-	   need for page boundary cross checks.  */
-	.align 4
-L(loop_eq_align_0):
-	ld	r7,0(r3)
-	ld	r9,0(r4)
-	cmpb	r8,r7,r8
-	cmpb	r6,r7,r9
-	orc.	r8,r8,r6
-	bne	cr0,L(different1)
-
-	cmpldi	cr7,r10,8
-	ble	cr7,L(ret0)
-	addi	r9,r10,-9
-
-	li	r5,0
-	srdi	r9,r9,3
-	addi	r9,r9,1
-	mtctr	r9
-	b	L(loop_eq_align_2)
-
-	.align 4
-L(loop_eq_align_1):
-	bdz	L(ret0)
-L(loop_eq_align_2):
-	ldu	r7,8(r3)
-	addi	r10,r10,-8
-	ldu	r9,8(r4)
-	cmpb	r8,r7,r5
-	cmpb	r6,r7,r9
-	orc.	r8,r8,r6
-	beq	cr0,L(loop_eq_align_1)
-	b	L(different1)
-
-	.align 4
-L(byte_ne_0):
-	li	r7,0
-L(byte_ne_1):
-	subf	r9,r9,r7
-	extsw	r9,r9
-	b	L(ret1)
-
-	.align 4
-L(byte_ne_2):
-	extsw	r7,r9
-	mr	r9,r8
-	b	L(byte_ne_1)
-L(size_reached_0):
-	li	r10,0
-L(size_reached_1):
-	subf	r9,r9,r10
-	extsw	r9,r9
-	b	L(ret1)
-L(size_reached_2):
-	extsw	r10,r9
-	mr	r9,r7
-	b	L(size_reached_1)
-L(byte_ne_3):
-	extsw	r7,r7
-	b	L(byte_ne_1)
-L(byte_ne_4):
-	extsw	r10,r9
-	mr	r9,r8
-	b	L(size_reached_1)
-END(STRNCMP)
-libc_hidden_builtin_def(strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S
deleted file mode 100644
index 6d40f30ff7..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strncpy.S
+++ /dev/null
@@ -1,465 +0,0 @@
-/* Optimized strncpy/stpncpy implementation for PowerPC64/POWER8.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#ifdef USE_AS_STPNCPY
-# ifndef STPNCPY
-#   define FUNC_NAME __stpncpy
-# else
-#   define FUNC_NAME STPNCPY
-# endif
-#else
-# ifndef STRNCPY
-#  define FUNC_NAME strncpy
-# else
-#  define FUNC_NAME STRNCPY
-# endif
-#endif  /* !USE_AS_STPNCPY  */
-
-#ifndef MEMSET
-/* For builds without IFUNC support, local calls should be made to internal
-   GLIBC symbol (created by libc_hidden_builtin_def).  */
-# ifdef SHARED
-#  define MEMSET   __GI_memset
-# else
-#  define MEMSET   memset
-# endif
-#endif
-
-#define FRAMESIZE (FRAME_MIN_SIZE+48)
-
-/* Implements the function
-
-   char * [r3] strncpy (char *dest [r3], const char *src [r4], size_t n [r5])
-
-   or
-
-   char * [r3] stpncpy (char *dest [r3], const char *src [r4], size_t n [r5])
-
-   if USE_AS_STPCPY is defined.
-
-   The implementation uses unaligned doubleword access to avoid specialized
-   code paths depending of data alignment.  Although recent powerpc64 uses
-   64K as default, the page cross handling assumes minimum page size of
-   4k.  */
-
-	.machine  power7
-EALIGN (FUNC_NAME, 4, 0)
-
-        /* Check if the [src]+15 will cross a 4K page by checking if the bit
-           indicating the page size changes.  Basically:
-
-           uint64_t srcin = (uint64_t)src;
-           uint64_t ob = srcin & 4096UL;
-           uint64_t nb = (srcin+15UL) & 4096UL;
-           if (ob ^ nb)
-             goto pagecross;  */
-
-	addi	r10,r4,16
-	rlwinm	r9,r4,0,19,19
-
-	/* Save some non-volatile registers on the stack.  */
-	std	r26,-48(r1)
-	std	r27,-40(r1)
-
-	rlwinm	r8,r10,0,19,19
-
-	std	r28,-32(r1)
-	std	r29,-24(r1)
-
-	cmpld	cr7,r9,r8
-
-	std	r30,-16(r1)
-	std	r31,-8(r1)
-
-	/* Update CFI.  */
-	cfi_offset(r26, -48)
-	cfi_offset(r27, -40)
-	cfi_offset(r28, -32)
-	cfi_offset(r29, -24)
-	cfi_offset(r30, -16)
-	cfi_offset(r31, -8)
-
-	beq	cr7,L(unaligned_lt_16)
-	rldicl	r9,r4,0,61
-	subfic	r8,r9,8
-	cmpld	cr7,r5,r8
-	bgt 	cr7,L(pagecross)
-
-	/* At this points there is 1 to 15 bytes to check and write.  Since it could
-	   be either from first unaligned 16 bytes access or from bulk copy, the code
-	   uses an unrolled byte read/write instead of trying to analyze the cmpb
-	   results.  */
-L(short_path):
-	mr	r9,r3
-L(short_path_1):
-	/* Return if there are no more bytes to be written.  */
-	cmpdi	cr7,r5,0
-	beq	cr7,L(short_path_loop_end_1)
-L(short_path_2):
-	/* Copy one char from src (r4) and write it to dest (r9).  If it is the
-	   end-of-string, start the null padding.  Continue, otherwise.  */
-	lbz	r10,0(r4)
-	cmpdi	cr7,r10,0
-	stb	r10,0(r9)
-	beq	cr7,L(zero_pad_start_1)
-	/* If there are no more bytes to be written, return.  */
-	cmpdi	cr0,r5,1
-	addi	r8,r9,1
-	addi	r6,r5,-1
-	beq	cr0,L(short_path_loop_end_0)
-	/* Copy another char from src (r4) to dest (r9).  Check again if it is
-	   the end-of-string.  If so, start the null padding.  */
-	lbz	r10,1(r4)
-	cmpdi	cr7,r10,0
-	stb	r10,1(r9)
-	beq	cr7,L(zero_pad_start_prepare_1)
-	/* Eagerly decrement r5 by 3, which is the number of bytes already
-	   written, plus one write that will be performed later on.  */
-	addi	r10,r5,-3
-	b	L(short_path_loop_1)
-
-	.align	4
-L(short_path_loop):
-	/* At this point, the induction variable, r5, as well as the pointers
-	   to dest and src (r9 and r4, respectivelly) have been updated.
-
-	   Note: The registers r7 and r10 are induction variables derived from
-	   r5.  They are used to determine if the total number of writes has
-	   been reached at every other write.
-
-	   Copy one char from src (r4) and write it to dest (r9).  If it is the
-	   end-of-string, start the null padding.  Continue, otherwise.  */
-	lbz	r8,0(r4)
-	addi	r7,r10,-2
-	cmpdi	cr5,r8,0
-	stb	r8,0(r9)
-	beq	cr5,L(zero_pad_start_1)
-	beq	cr7,L(short_path_loop_end_0)
-	/* Copy another char from src (r4) to dest (r9).  Check again if it is
-	   the end-of-string.  If so, start the null padding.  */
-	lbz	r8,1(r4)
-	cmpdi	cr7,r8,0
-	stb	r8,1(r9)
-	beq	cr7,L(zero_pad_start)
-	mr	r10,r7
-L(short_path_loop_1):
-	/* This block is reached after two chars have been already written to
-	   dest.  Nevertheless, r5 (the induction variable), r9 (the pointer to
-	   dest), and r4 (the pointer to src) have not yet been updated.
-
-	   At this point:
-	     r5 holds the count of bytes yet to be written plus 2.
-	     r9 points to the last two chars that were already written to dest.
-	     r4 points to the last two chars that were already copied from src.
-
-	   The algorithm continues by decrementing r5, the induction variable,
-	   so that it reflects the last two writes.  The pointers to dest (r9)
-	   and to src (r4) are increment by two, for the same reason.
-
-	   Note: Register r10 is another induction variable, derived from r5,
-	   which determines if the total number of writes has been reached.  */
-	addic.	r5,r5,-2
-	addi	r9,r9,2
-	cmpdi	cr7,r10,0 /* Eagerly check if the next write is the last.  */
-	addi	r4,r4,2
-	addi	r6,r9,1
-	bne	cr0,L(short_path_loop) /* Check if the total number of writes
-					  has been reached at every other
-					  write.  */
-#ifdef USE_AS_STPNCPY
-	mr	r3,r9
-	b	L(short_path_loop_end)
-#endif
-
-L(short_path_loop_end_0):
-#ifdef USE_AS_STPNCPY
-	addi	r3,r9,1
-	b	L(short_path_loop_end)
-#endif
-L(short_path_loop_end_1):
-#ifdef USE_AS_STPNCPY
-	mr	r3,r9
-#endif
-L(short_path_loop_end):
-	/* Restore non-volatile registers.  */
-	ld	r26,-48(r1)
-	ld	r27,-40(r1)
-	ld	r28,-32(r1)
-	ld	r29,-24(r1)
-	ld	r30,-16(r1)
-	ld	r31,-8(r1)
-	blr
-
-	/* This code pads the remainder of dest with NULL bytes.  The algorithm
-	   calculates the remaining size and calls memset.  */
-	.align	4
-L(zero_pad_start):
-	mr	r5,r10
-	mr	r9,r6
-L(zero_pad_start_1):
-	/* At this point:
-	     - r5 holds the number of bytes that still have to be written to
-	       dest.
-	     - r9 points to the position, in dest, where the first null byte
-	       will be written.
-	   The above statements are true both when control reaches this label
-	   from a branch or when falling through the previous lines.  */
-#ifndef USE_AS_STPNCPY
-	mr	r30,r3       /* Save the return value of strncpy.  */
-#endif
-	/* Prepare the call to memset.  */
-	mr	r3,r9        /* Pointer to the area to be zero-filled.  */
-	li	r4,0         /* Byte to be written (zero).  */
-
-	/* We delayed the creation of the stack frame, as well as the saving of
-	   the link register, because only at this point, we are sure that
-	   doing so is actually needed.  */
-
-	/* Save the link register.  */
-	mflr	r0
-	std	r0,16(r1)
-	cfi_offset(lr, 16)
-
-	/* Create the stack frame.  */
-	stdu	r1,-FRAMESIZE(r1)
-	cfi_adjust_cfa_offset(FRAMESIZE)
-
-	bl	MEMSET
-	nop
-
-	/* Restore the stack frame.  */
-	addi	r1,r1,FRAMESIZE
-	cfi_adjust_cfa_offset(-FRAMESIZE)
-	/* Restore the link register.  */
-	ld	r0,16(r1)
-	mtlr	r0
-
-#ifndef USE_AS_STPNCPY
-	mr	r3,r30       /* Restore the return value of strncpy, i.e.:
-				dest.  For stpncpy, the return value is the
-				same as return value of memset.  */
-#endif
-
-	/* Restore non-volatile registers and return.  */
-	ld	r26,-48(r1)
-	ld	r27,-40(r1)
-	ld	r28,-32(r1)
-	ld	r29,-24(r1)
-	ld	r30,-16(r1)
-	ld	r31,-8(r1)
-	blr
-
-	/* The common case where [src]+16 will not cross a 4K page boundary.
-	   In this case the code fast check the first 16 bytes by using doubleword
-	   read/compares and update destiny if neither total size or null byte
-	   is found in destiny. */
-	.align	4
-L(unaligned_lt_16):
-	cmpldi	cr7,r5,7
-	ble	cr7,L(short_path)
-	ld	r7,0(r4)
-	li	r8,0
-	cmpb	r8,r7,r8
-	cmpdi	cr7,r8,0
-	bne	cr7,L(short_path_prepare_2)
-	addi	r6,r5,-8
-	std	r7,0(r3)
-	addi	r9,r3,8
-	cmpldi	cr7,r6,7
-	addi	r7,r4,8
-	ble	cr7,L(short_path_prepare_1_1)
-	ld	r4,8(r4)
-	cmpb	r8,r4,r8
-	cmpdi	cr7,r8,0
-	bne	cr7,L(short_path_prepare_2_1)
-	std	r4,8(r3)
-	addi	r29,r3,16
-	addi	r5,r5,-16
-	/* Neither the null byte was found or total length was reached,
-	   align to 16 bytes and issue a bulk copy/compare.  */
-	b	L(align_to_16b)
-
-	/* In the case of 4k page boundary cross, the algorithm first align
-	   the address to a doubleword, calculate a mask based on alignment
-	   to ignore the bytes and continue using doubleword.  */
-	.align	4
-L(pagecross):
-	rldicr	r11,r4,0,59	/* Align the address to 8 bytes boundary.  */
-	li	r6,-1		/* MASK = 0xffffffffffffffffUL.  */
-	sldi	r9,r9,3		/* Calculate padding.  */
-	ld	r7,0(r11)	/* Load doubleword from memory.  */
-#ifdef __LITTLE_ENDIAN__
-	sld	r9,r6,r9	/* MASK = MASK << padding.  */
-#else
-	srd	r9,r6,r9	/* MASK = MASK >> padding.  */
-#endif
-	orc	r9,r7,r9	/* Mask bits that are not part of the
-				   string.  */
-	li	r7,0
-	cmpb	r9,r9,r7	/* Check for null bytes in DWORD1.  */
-	cmpdi	cr7,r9,0
-	bne	cr7,L(short_path_prepare_2)
-	subf	r8,r8,r5	/* Adjust total length.  */
-	cmpldi	cr7,r8,8	/* Check if length was reached.  */
-	ble	cr7,L(short_path_prepare_2)
-
-	/* For next checks we have aligned address, so we check for more
-	   three doublewords to make sure we can read 16 unaligned bytes
-	   to start the bulk copy with 16 aligned addresses.  */
-	ld	r7,8(r11)
-	cmpb	r9,r7,r9
-	cmpdi	cr7,r9,0
-	bne	cr7,L(short_path_prepare_2)
-	addi	r7,r8,-8
-	cmpldi	cr7,r7,8
-	ble	cr7,L(short_path_prepare_2)
-	ld	r7,16(r11)
-	cmpb	r9,r7,r9
-	cmpdi	cr7,r9,0
-	bne	cr7,L(short_path_prepare_2)
-	addi	r8,r8,-16
-	cmpldi	cr7,r8,8
-	ble	cr7,L(short_path_prepare_2)
-	ld	r8,24(r11)
-	cmpb	r9,r8,r9
-	cmpdi	cr7,r9,0
-	bne	cr7,L(short_path_prepare_2)
-
-	/* No null byte found in the 32 bytes readed and length not reached,
-	   read source again using unaligned loads and store them.  */
-	ld	r9,0(r4)
-	addi	r29,r3,16
-	addi	r5,r5,-16
-	std	r9,0(r3)
-	ld	r9,8(r4)
-	std	r9,8(r3)
-
-	/* Align source to 16 bytes and adjust destiny and size.  */
-L(align_to_16b):
-	rldicl	r9,r10,0,60
-	rldicr	r28,r10,0,59
-	add	r12,r5,r9
-	subf	r29,r9,r29
-
-	/* The bulk read/compare/copy loads two doublewords, compare and merge
-	   in a single register for speed.  This is an attempt to speed up the
-	   null-checking process for bigger strings.  */
-
-	cmpldi	cr7,r12,15
-	ble	cr7,L(short_path_prepare_1_2)
-
-	/* Main loop for large sizes, unrolled 2 times to get better use of
-	   pipeline.  */
-	ld	r8,0(28)
-	ld	r10,8(28)
-	li	r9,0
-	cmpb	r7,r8,r9
-	cmpb	r9,r10,r9
-	or.	r6,r9,r7
-	bne	cr0,L(short_path_prepare_2_3)
-	addi	r5,r12,-16
-	addi	r4,r28,16
-	std	r8,0(r29)
-	std	r10,8(r29)
-	cmpldi	cr7,r5,15
-	addi	r9,r29,16
-	ble	cr7,L(short_path_1)
-	mr	r11,r28
-	mr	r6,r29
-	li	r30,0
-	subfic	r26,r4,48
-	subfic	r27,r9,48
-
-	b	L(loop_16b)
-
-	.align	4
-L(loop_start):
-	ld	r31,0(r11)
-	ld	r10,8(r11)
-	cmpb	r0,r31,r7
-	cmpb	r8,r10,r7
-	or.	r7,r0,r8
-	addi	r5,r5,-32
-	cmpldi	cr7,r5,15
-	add	r4,r4,r26
-	add	r9,r9,r27
-	bne	cr0,L(short_path_prepare_2_2)
-	add	r4,r28,r4
-	std	r31,0(r6)
-	add	r9,r29,r9
-	std	r10,8(r6)
-	ble	cr7,L(short_path_1)
-
-L(loop_16b):
-	ld	r10,16(r11)
-	ld	r0,24(r11)
-	cmpb	r8,r10,r30
-	cmpb	r7,r0,r30
-	or.	r7,r8,r7
-	addi	r12,r12,-32
-	cmpldi	cr7,r12,15
-	addi	r11,r11,32
-	bne	cr0,L(short_path_2)
-	std	r10,16(r6)
-	addi	r6,r6,32
-	std	r0,-8(r6)
-	bgt	cr7,L(loop_start)
-
-	mr	r5,r12
-	mr	r4,r11
-	mr	r9,r6
-	b	L(short_path_1)
-
-	.align	4
-L(short_path_prepare_1_1):
-	mr	r5,r6
-	mr	r4,r7
-	b	L(short_path_1)
-L(short_path_prepare_1_2):
-	mr	r5,r12
-	mr	r4,r28
-	mr	r9,r29
-	b	L(short_path_1)
-L(short_path_prepare_2):
-	mr	r9,r3
-	b	L(short_path_2)
-L(short_path_prepare_2_1):
-	mr	r5,r6
-	mr	r4,r7
-	b	L(short_path_2)
-L(short_path_prepare_2_2):
-	mr	r5,r12
-	mr	r4,r11
-	mr	r9,r6
-	b	L(short_path_2)
-L(short_path_prepare_2_3):
-	mr	r5,r12
-	mr	r4,r28
-	mr	r9,r29
-	b	L(short_path_2)
-L(zero_pad_start_prepare_1):
-	mr	r5,r6
-	mr	r9,r8
-	b	L(zero_pad_start_1)
-END (FUNC_NAME)
-
-#ifndef USE_AS_STPNCPY
-libc_hidden_builtin_def (strncpy)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power8/strnlen.S b/sysdeps/powerpc/powerpc64/power8/strnlen.S
deleted file mode 100644
index 3eadbfb09e..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strnlen.S
+++ /dev/null
@@ -1,433 +0,0 @@
-/* Optimized strnlen implementation for POWER8 using a vmx loop.
-
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* It is implemented the following heuristic:
-	1. Case maxlen <= 32: align the pointer to 8 bytes to loop through
-	reading doublewords. Uses the POWER7 algorithm.
-	2. Case maxlen > 32: check for null bytes in the first 16 bytes using
-	unaligned accesses. Return length if found. Otherwise:
-		2.1 Case maxlen < 64: deduct the bytes previously read, align
-		the pointer to 16 bytes and loop through reading quadwords
-		until find null bytes or reach maxlen.
-		2.2 Case maxlen > 64: deduct the bytes previously read, align
-		the pointer to 64 bytes and set up a counter to loop through
-		reading in strides of 64 bytes. In case it finished the loop
-		with null bytes not found, process the remainder bytes by
-		switching to the loop to heuristic in 2.1.  */
-
-#include <sysdep.h>
-
-/* Define default page size to 4KB.  */
-#define PAGE_SIZE 4096
-
-/* The following macros implement Power ISA v2.07 opcodes
-   that could not be used directly into this code to the keep
-   compatibility with older binutils versions.  */
-
-/* Move from vector register doubleword.  */
-#define MFVRD(r,v) .long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-
-/* Move to vector register doubleword.  */
-#define MTVRD(v,r) .long (0x7c000167 | ((v)<<(32-11)) | ((r)<<(32-16)))
-
-/* Vector Bit Permute Quadword.  */
-#define VBPERMQ(t,a,b)	.long (0x1000054c	\
-			       | ((t)<<(32-11))	\
-			       | ((a)<<(32-16))	\
-			       | ((b)<<(32-21)) )
-
-/* Vector Population Count Halfword.  */
-#define VPOPCNTH(t,b) .long (0x10000743 | ((t)<<(32-11)) | ((b)<<(32-21)))
-
-/* Vector Count Leading Zeros Halfword.  */
-#define VCLZH(t,b) .long (0x10000742 | ((t)<<(32-11)) | ((b)<<(32-21)))
-
-
-/* int [r3] strnlen (char *s [r3], size_t maxlen [r4])  */
-/* TODO: change to power8 when minimum required binutils allows it.  */
-	.machine  power7
-ENTRY (__strnlen)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-
-	cmpldi	r4,32           /* Check if maxlen <= 32.  */
-	ble	L(small_range)  /* If maxlen <= 32.  */
-
-	/* Upcoming 16 bytes unaligned accesses cannot cross the page boundary
-	   otherwise the processor throws an memory access error.
-	   Use following code to check there is room for such as accesses:
-	     (((size_t) s) % PAGE_SIZE > (PAGE_SIZE - 16)
-	   If it is disallowed then switch to the code that handles
-	   the string when maxlen <= 32.  */
-	clrldi	r10,r3,52
-	cmpldi  cr7,r10,PAGE_SIZE-16
-	bgt     cr7,L(small_range)	/* If less than 16B of page end.  */
-
-	/* Compute our permute constant r8.  */
-	li	r7,0
-	/* Compute a bpermd constant to move bit 0 of each word into
-	   a halfword value, and count trailing zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	li	r8,0x2820
-	oris	r8,r8,0x3830
-	sldi	r8,r8,32
-	ori	r8,r8,0x0800
-	oris	r8,r8,0x1810
-#else
-	li	r8,0x1018
-	oris	r8,r8,0x0008
-	sldi	r8,r8,32
-	ori	r8,r8,0x3038
-	oris	r8,r8,0x2028
-#endif
-
-	/* maxlen > 32. Optimistically check for null bytes in the first
-	   16 bytes of the string using unaligned accesses.  */
-	ld	r5,0(r3)
-	ld	r6,8(r3)
-	cmpb	r10,r7,r5		/* Check for null bytes in DWORD1.  */
-	cmpb	r11,r7,r6		/* Check for null bytes in DWORD2.  */
-	or.	r7,r10,r11
-	bne	cr0, L(early_find)	/* If found null bytes.  */
-
-	/* At this point maxlen > 32 and null bytes were not found at first
-	   16 bytes. Prepare for loop using VMX.  */
-
-	/* r3 == s, r4 == maxlen. All other volatile regs are unused now.  */
-
-	addi	r5,r3,16	/* Align up, or just add the 16B we
-				   already checked.  */
-	li	r0,15
-	and	r7,r5,r0	/* Find offset into 16B alignment.  */
-	andc	r5,r5,r0	/* Quadword align up s to the next quadword.  */
-	li	r0,16
-	subf	r0,r7,r0
-	subf	r4,r0,r4	/* Deduct unaligned bytes from maxlen.  */
-
-
-	/* Compute offsets for vmx loads, and precompute the vbpermq
-	   constants for both the 64B and 16B loops.  */
-	li	r6,0
-	vspltisb  v0,0
-	vspltisb  v10,3
-	lvsl	  v11,r6,r6
-	vslb	  v10,v11,v10
-
-	cmpldi  r4,64		/* Check maxlen < 64.  */
-	blt	L(smaller)	/* If maxlen < 64 */
-
-	/* In order to begin the 64B loop, it needs to be 64
-	   bytes aligned. So read quadwords until it is aligned or found null
-	   bytes. At worst case it will be aligned after the fourth iteration,
-	   so unroll the loop to avoid counter checking.  */
-	andi.   r7,r5,63		/* Check if is 64 bytes aligned.  */
-	beq     cr0,L(preloop_64B)	/* If it is already 64B aligned.  */
-	lvx     v1,r5,r6
-	vcmpequb.       v1,v1,v0
-	addi    r5,r5,16
-	addi    r4,r4,-16		/* Decrement maxlen in 16 bytes. */
-	bne     cr6,L(found_aligning64B) /* If found null bytes.  */
-
-	/* Unroll 3x above code block until aligned or find null bytes.  */
-	andi.   r7,r5,63
-	beq     cr0,L(preloop_64B)
-	lvx     v1,r5,r6
-	vcmpequb.      v1,v1,v0
-	addi    r5,r5,16
-	addi    r4,r4,-16
-	bne     cr6,L(found_aligning64B)
-
-	andi.   r7,r5,63
-	beq     cr0,L(preloop_64B)
-	lvx     v1,r5,r6
-	vcmpequb.      v1,v1,v0
-	addi    r5,r5,16
-	addi    r4,r4,-16
-	bne     cr6,L(found_aligning64B)
-
-	andi.   r7,r5,63
-	beq     cr0,L(preloop_64B)
-	lvx     v1,r5,r6
-	vcmpequb.      v1,v1,v0
-	addi    r5,r5,16
-	addi    r4,r4,-16
-	bne     cr6,L(found_aligning64B)
-
-	/* At this point it should be 16 bytes aligned.
-	   Prepare for the 64B loop.  */
-	.p2align 4
-L(preloop_64B):
-	/* Check if maxlen became is less than 64, therefore disallowing the
-	   64B loop. If it happened switch to the 16B loop code.  */
-	cmpldi  r4,64		/* Check if maxlen < 64.  */
-	blt     L(smaller)	/* If maxlen < 64.  */
-	/* Set some constant values.  */
-	li      r7,16
-	li      r10,32
-	li      r9,48
-
-	/* Compute the number of 64 bytes iterations needed.  */
-	srdi	r11,r4,6	/* Compute loop count (maxlen / 64).  */
-	andi.	r4,r4,63	/* Set maxlen the remainder (maxlen % 64).  */
-	mtctr	r11		/* Move loop count to counter register.  */
-
-	/* Handle maxlen > 64. Loop over the bytes in strides of 64B.  */
-	.p2align 4
-L(loop_64B):
-	lvx	v1,r5,r6	/* r5 is the pointer to s.  */
-	lvx	v2,r5,r7
-	lvx	v3,r5,r10
-	lvx	v4,r5,r9
-	/* Compare the four 16B vectors to obtain the least 16 values.
-	   Null bytes should emerge into v7, then check for null bytes.  */
-	vminub	v5,v1,v2
-	vminub	v6,v3,v4
-	vminub	v7,v5,v6
-	vcmpequb. v7,v7,v0		/* Check for null bytes.  */
-	addi	r5,r5,64		/* Add pointer to next iteraction.  */
-	bne	cr6,L(found_64B)	/* If found null bytes.  */
-	bdnz	L(loop_64B)		/* Continue the loop if count > 0. */
-
-/* Hit loop end without null match. So branch to handle the remainder.  */
-
-	/* Prepare a 16B loop to handle two cases:
-		1. If 32 > maxlen < 64.
-		2. If maxlen >= 64, and reached end of the 64B loop with null
-		bytes not found. Thus handle the remainder bytes here. */
-	.p2align 4
-L(smaller):
-        cmpldi  r4,0            /* Check maxlen is zero.  */
-        beq     L(done)         /* If maxlen is zero.  */
-
-	/* Place rounded up number of qw's to check into a vmx
-	   register, and use some vector tricks to minimize
-	   branching.  */
-        MTVRD(v7,r4)            /* Copy maxlen from GPR to vector register. */
-        vspltisb v5,1
-        vspltisb v6,15
-        vspltb   v2,v7,7
-        vaddubs  v3,v5,v6
-
-#ifdef __LITTLE_ENDIAN__
-	vspltish v5,1           /* Compute 16 in each byte.  */
-#endif
-
-	/* Loop in 16B aligned incremements now. */
-	.p2align 4
-L(loop_16B):
-	lvx     v1,r5,r6        /* Load quadword into vector register.  */
-	addi    r5,r5,16        /* Increment address to next 16B block.  */
-	vor     v7,v2,v2        /* Save loop count (v2) into v7. */
-	vsububs v2,v2,v3        /* Subtract 16B from count, saturate at 0. */
-	vminub  v4,v1,v2
-	vcmpequb. v4,v4,v0      /* Checking for null bytes.  */
-	beq     cr6,L(loop_16B) /* If null bytes not found.  */
-
-	vcmpequb  v1,v1,v0
-	VBPERMQ(v1,v1,v10)
-#ifdef __LITTLE_ENDIAN__
-	vsubuhm  v2,v1,v5       /* Form a mask of trailing zeros.  */
-	vandc    v2,v2,v1
-	VPOPCNTH(v1,v2)         /* Count of trailing zeros, 16 if none.  */
-#else
-	VCLZH(v1,v1)            /* Count the leading zeros, 16 if none.  */
-#endif
-	/* Truncate to maximum allowable offset.  */
-	vcmpgtub v2,v1,v7       /* Compare and truncate for matches beyond
-				   maxlen.  */
-	vsel     v1,v1,v7,v2    /* 0-16 is now in byte 7.  */
-
-	MFVRD(r0,v1)
-	addi    r5,r5,-16       /* Undo speculative bump.  */
-	extsb   r0,r0           /* Clear whatever gunk is in the high 56b.  */
-	add     r5,r5,r0        /* Add the offset of whatever was found.  */
-L(done):
-	subf    r3,r3,r5        /* Length is equal to the offset of null byte
-				   matched minus the pointer to s.  */
-	blr                     /* Done.  */
-
-	/* Handle case of maxlen > 64 and found null bytes in last block
-	   of 64 bytes read.  */
-	.p2align 4
-L(found_64B):
-	/* A zero was found. Reduce the result.  */
-	vcmpequb  v1,v1,v0
-	vcmpequb  v2,v2,v0
-	vcmpequb  v3,v3,v0
-	vcmpequb  v4,v4,v0
-
-	/* Permute the first bit of each byte into bits 48-63.  */
-	VBPERMQ(v1,v1,v10)
-	VBPERMQ(v2,v2,v10)
-	VBPERMQ(v3,v3,v10)
-	VBPERMQ(v4,v4,v10)
-
-	/* Shift each component into its correct position for merging.  */
-#ifdef __LITTLE_ENDIAN__
-	vsldoi	v2,v2,v2,2
-	vsldoi	v3,v3,v3,4
-	vsldoi	v4,v4,v4,6
-#else
-	vsldoi	v1,v1,v1,6
-	vsldoi	v2,v2,v2,4
-	vsldoi	v3,v3,v3,2
-#endif
-
-	/* Merge the results and move to a GPR.  */
-	vor	v1,v2,v1
-	vor	v2,v3,v4
-	vor	v4,v1,v2
-
-	/* Adjust address to the start of the current 64B block.  */
-	addi	r5,r5,-64
-
-	MFVRD(r10,v4)
-#ifdef __LITTLE_ENDIAN__
-	addi	r9,r10,-1	/* Form a mask from trailing zeros.  */
-	andc	r9,r9,r10
-	popcntd	r0,r9		/* Count the bits in the mask.  */
-#else
-	cntlzd	r0,r10		/* Count leading zeros before the match.  */
-#endif
-	subf	r5,r3,r5
-	add	r3,r5,r0	/* Compute final length.  */
-	blr                     /* Done.  */
-
-	/* Handle case where null bytes were found while aligning
-	   as a preparation for the 64B loop.  */
-	.p2align 4
-L(found_aligning64B):
-	VBPERMQ(v1,v1,v10)
-#ifdef __LITTLE_ENDIAN__
-	MFVRD(r10,v1)
-	addi    r9,r10,-1       /* Form a mask from trailing zeros.  */
-	andc    r9,r9,r10
-	popcntd r0,r9           /* Count the bits in the mask.  */
-#else
-	vsldoi  v1,v1,v1,6
-	MFVRD(r10,v1)
-	cntlzd  r0,r10          /* Count leading zeros before the match.  */
-#endif
-	addi    r5,r5,-16	/* Adjust address to offset of last 16 bytes
-				   read.  */
-	/* Calculate length as subtracted the pointer to s of last 16 bytes
-	   offset, added with the bytes before the match.  */
-	subf    r5,r3,r5
-	add     r3,r5,r0
-	blr			/* Done.  */
-
-	/* Handle case of maxlen > 32 and found a null bytes within the first
-	   16 bytes of s.  */
-	.p2align 4
-L(early_find):
-	bpermd	r5,r8,r10        /* r8 contains the bit permute constants.  */
-	bpermd	r6,r8,r11
-	sldi	r5,r5,8
-	or	r5,r5,r6	/* r5 should hold a 16B mask of
-				   a potential 0.  */
-	cntlzd	r5,r5		/* Count leading zeros.  */
-	addi	r3,r5,-48	/* Deduct the 48 leading zeros always
-				   present.  */
-	blr			/* Done.  */
-
-	/* Handle case of maxlen <= 32. Use the POWER7 algorithm.  */
-	.p2align 4
-L(small_range):
-	clrrdi	r8,r3,3  	/* Align the pointer to 8B.  */
-	li	r0,0
-	/* Register's content at this point:
-	   r3 == pointer to s, r4 == maxlen, r8 == pointer to s aligned to 8B,
-	   r7 == last acceptable address. */
-	cmpldi	r4,0                 /* Check if maxlen is zero.  */
-	beq	L(end_max)	     /* If maxlen is zero.  */
-
-	/* Calculate the last acceptable address and check for possible
-	   addition overflow by using satured math:
-	   r7 = r3 + r4
-	   r7 |= -(r7 < x)  */
-	add     r7,r3,r4
-	subfc   r6,r3,r7
-	subfe   r9,r9,r9
-	extsw   r6,r9
-	or      r7,r7,r6
-	addi    r7,r7,-1
-
-	clrrdi	r7,r7,3              /* Align to 8B address of last
-					acceptable address.  */
-
-	rlwinm	r6,r3,3,26,28        /* Calculate padding.  */
-	ld	r12,0(r8)            /* Load aligned doubleword.  */
-	cmpb	r10,r12,r0           /* Check for null bytes. */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	sld	r10,r10,r6
-#else
-	sld	r10,r10,r6
-	srd	r10,r10,r6
-#endif /* __LITTLE_ENDIAN__  */
-	cmpldi	cr7,r10,0
-	bne	cr7,L(done_small)    /* If found null byte.  */
-
-	cmpld	r8,r7                /* Check if reached maxlen.  */
-	beq	L(end_max)	     /* If reached maxlen.  */
-
-	/* Still handling case of maxlen <= 32. Read doubleword aligned until
-	   find null bytes or reach maxlen.  */
-	.p2align 4
-L(loop_small):
-	ldu	r12,8(r8)         /* Load next doubleword and update r8.  */
-	cmpb	r10,r12,r0        /* Check for null bytes.  */
-	cmpldi	cr6,r10,0
-	bne	cr6,L(done_small) /* If found null bytes.  */
-	cmpld	r8,r7             /* Check if reached maxlen. */
-	bne	L(loop_small)	  /* If it has more bytes to read.  */
-	mr	r3,r4             /* Reached maxlen with null bytes not found.
-				     Length is equal to maxlen.  */
-	blr			  /* Done.  */
-
-	/* Still handling case of maxlen <= 32. Found null bytes.
-	   Registers: r10 == match bits within doubleword, r8 == address of
-	   last doubleword read, r3 == pointer to s, r4 == maxlen.  */
-	.p2align 4
-L(done_small):
-#ifdef __LITTLE_ENDIAN__
-	/* Count trailing zeros.  */
-	addi	r0,r10,-1
-	andc	r0,r0,r10
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r10	      /* Count leading zeros before the match.  */
-#endif
-	sub	r3,r8,r3      /* Calculate total of bytes before the match.  */
-	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
-	add	r3,r3,r0      /* Length until the match.  */
-	cmpld	r3,r4         /* Check length is greater than maxlen.  */
-	blelr
-	mr	r3,r4	      /* If length is greater than maxlen, return
-				 maxlen.  */
-	blr
-
-	/* Handle case of reached maxlen with null bytes not found.  */
-	.p2align 4
-L(end_max):
-	mr	r3,r4	/* Length is equal to maxlen.  */
-	blr		/* Done.  */
-
-
-END (__strnlen)
-libc_hidden_def (__strnlen)
-weak_alias (__strnlen, strnlen)
-libc_hidden_def (strnlen)
diff --git a/sysdeps/powerpc/powerpc64/power8/strrchr.S b/sysdeps/powerpc/powerpc64/power8/strrchr.S
deleted file mode 100644
index 8eb74853c3..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strrchr.S
+++ /dev/null
@@ -1,464 +0,0 @@
-/* Optimized strrchr implementation for PowerPC64/POWER7 using cmpb insn.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* char *[r3] strrchr (char *s [r3], int c [r4])  */
-/* TODO: change these to the actual instructions when the minimum required
-   binutils allows it.  */
-#define MTVRD(v,r) .long (0x7c000167 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define MFVRD(r,v) .long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define VBPERMQ(t,a,b)  .long (0x1000054c \
-				| ((t)<<(32-11)) \
-				| ((a)<<(32-16)) \
-				| ((b)<<(32-21)) )
-#define VCLZD(r,v) .long (0x100007c2 | ((r)<<(32-11)) | ((v)<<(32-21)))
-#define VPOPCNTD(r,v) .long (0x100007c3 | ((r)<<(32-11)) | ((v)<<(32-21)))
-#define VADDUQM(t,a,b)  .long (0x10000100 \
-				| ((t)<<(32-11)) \
-				| ((a)<<(32-16)) \
-				| ((b)<<(32-21)) )
-#ifdef __LITTLE_ENDIAN__
-/* Find the match position from v6 and place result in r6.  */
-# define CALCULATE_MATCH() \
-	VBPERMQ(v6, v6, v10); \
-	vsldoi	v6, v6, v6, 6; \
-	MFVRD(r7, v6); \
-	cntlzd	r6, r7; \
-	subfic	r6, r6, 15;
-/*
- * Find the first null position to mask bytes after null.
- * (reg): vcmpequb result: v2 for 1st qw v3 for 2nd qw.
- * Result placed at v2.
- */
-# define FIND_NULL_POS(reg) \
-	vspltisb	v11, -1; \
-	VADDUQM(v11, reg, v11); \
-	vandc	v11, v11, reg; \
-	VPOPCNTD(v2, v11); \
-	vspltb	v11, v2, 15; \
-	vcmpequb.	v11, v11, v9; \
-	blt	cr6, 1f; \
-	vsldoi	v9, v0, v9, 1; \
-	vslo	v2, v2, v9; \
-1: \
-	vsumsws	v2, v2, v0;
-#else
-# define CALCULATE_MATCH() \
-	VBPERMQ(v6, v6, v10); \
-	MFVRD(r7, v6); \
-	addi	r6, r7, -1; \
-	andc	r6, r6, r7; \
-	popcntd	r6, r6; \
-	subfic	r6, r6, 15;
-# define FIND_NULL_POS(reg) \
-	VCLZD(v2, reg); \
-	vspltb	v11, v2, 7; \
-	vcmpequb.	v11, v11, v9; \
-	blt	cr6, 1f; \
-	vsldoi	v9, v0, v9, 1; \
-	vsro	v2, v2, v9; \
-1: \
-	vsumsws	v2, v2, v0;
-#endif	/* !__LITTLE_ENDIAN__  */
-	.machine  power7
-ENTRY (strrchr)
-	CALL_MCOUNT 2
-	dcbt	0,r3
-	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
-	cmpdi	cr7,r4,0
-	ld	r12,0(r8)     /* Load doubleword from memory.  */
-	li	r9,0	      /* Used to store last occurence.  */
-	li	r0,0	      /* Doubleword with null chars to use
-				 with cmpb.  */
-
-	rlwinm	r6,r3,3,26,28 /* Calculate padding.  */
-
-	beq	cr7,L(null_match)
-
-	/* Replicate byte to doubleword.  */
-	insrdi	r4,r4,8,48
-	insrdi	r4,r4,16,32
-	insrdi	r4,r4,32,0
-
-	/* r4 is changed now.  If it's passed more chars, then
-	   check for null again.  */
-	cmpdi	cr7,r4,0
-	beq	cr7,L(null_match)
-	/* Now r4 has a doubleword of c bytes and r0 has
-	   a doubleword of null bytes.  */
-
-	cmpb	r10,r12,r4     /* Compare each byte against c byte.  */
-	cmpb	r11,r12,r0     /* Compare each byte against null byte.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-#else
-	sld	r10,r10,r6
-	sld	r11,r11,r6
-	srd	r10,r10,r6
-	srd	r11,r11,r6
-#endif
-	or	r5,r10,r11    /* OR the results to speed things up.  */
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done)
-
-L(align):
-	andi.	r12, r8, 15
-
-	/* Are we now aligned to a doubleword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bne	cr0, L(loop)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done)
-	b	L(loop)	      /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-	.p2align  5
-L(loop):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r7,16(r8)
-	cmpb	r10,r12,r4
-	cmpb	r11,r12,r0
-	cmpb	r6,r7,r4
-	cmpb	r7,r7,r0
-	or	r12,r10,r11
-	or	r5,r6,r7
-	or	r5,r12,r5
-	cmpdi	cr7,r5,0
-	beq	cr7,L(vector)
-
-	/* OK, one (or both) of the doublewords contains a c/null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a c/null byte.  */
-	cmpdi	cr6,r12,0
-	addi	r8,r8,-8
-	bne	cr6,L(done)
-
-	/* The c/null byte must be in the second doubleword.  Adjust the
-	   address again and move the result of cmpb to r10 so we can calculate
-	   the pointer.  */
-
-	mr	r10,r6
-	mr	r11,r7
-	addi	r8,r8,8
-
-	/* r10/r11 have the output of the cmpb instructions, that is,
-	   0xff in the same position as the c/null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-
-L(done):
-	/* If there are more than one 0xff in r11, find the first position of
-	   0xff in r11 and fill r10 with 0 from that position.  */
-	cmpdi	cr7,r11,0
-	beq	cr7,L(no_null)
-#ifdef __LITTLE_ENDIAN__
-	addi	r3,r11,-1
-	andc	r3,r3,r11
-	popcntd r0,r3
-#else
-	cntlzd	r0,r11
-#endif
-	subfic	r0,r0,63
-	li	r6,-1
-#ifdef __LITTLE_ENDIAN__
-	srd	r0,r6,r0
-#else
-	sld	r0,r6,r0
-#endif
-	and	r10,r0,r10
-L(no_null):
-#ifdef __LITTLE_ENDIAN__
-	cntlzd	r0,r10		/* Count leading zeros before c matches.  */
-	addi	r3,r10,-1
-	andc	r3,r3,r10
-	addi	r10,r11,-1
-	andc	r10,r10,r11
-	cmpld	cr7,r3,r10
-	bgt	cr7,L(no_match)
-#else
-	addi	r3,r10,-1	/* Count trailing zeros before c matches.  */
-	andc	r3,r3,r10
-	popcntd	r0,r3
-	cmpld	cr7,r11,r10
-	bgt	cr7,L(no_match)
-#endif
-	srdi	r0,r0,3		/* Convert trailing zeros to bytes.  */
-	subfic	r0,r0,7
-	add	r9,r8,r0      /* Return address of the matching c byte
-				 or null in case c was not found.  */
-	li	r0,0
-	cmpdi	cr7,r11,0     /* If r11 == 0, no null's have been found.  */
-	beq	cr7,L(align)
-
-	.align	4
-L(no_match):
-	mr	r3,r9
-	blr
-
-/* Check the first 32B in GPR's and move to vectorized loop.  */
-	.p2align  5
-L(vector):
-	addi	r3, r8, 8
-	/* Make sure 32B aligned.  */
-	andi.	r10, r3, 31
-	bne	cr0, L(loop)
-	vspltisb	v0, 0
-	/* Precompute vbpermq constant.  */
-	vspltisb	v10, 3
-	lvsl	v11, r0, r0
-	vslb	v10, v11, v10
-	MTVRD(v1, r4)
-	li	r5, 16
-	vspltb	v1, v1, 7
-	/* Compare 32 bytes in each loop.  */
-L(continue):
-	lvx	v4, 0, r3
-	lvx	v5, r3, r5
-	vcmpequb	v2, v0, v4
-	vcmpequb	v3, v0, v5
-	vcmpequb	v6, v1, v4
-	vcmpequb	v7, v1, v5
-	vor	v8, v2, v3
-	vor	v9, v6, v7
-	vor	v11, v8, v9
-	vcmpequb.	v11, v0, v11
-	addi	r3, r3, 32
-	blt	cr6, L(continue)
-	vcmpequb.	v8, v0, v8
-	blt	cr6, L(match)
-
-	/* One (or both) of the quadwords contains c/null.  */
-	vspltisb	v8, 2
-	vspltisb	v9, 5
-	/* Precompute values used for comparison.  */
-	vsl	v9, v8, v9	/* v9 = 0x4040404040404040.  */
-	vaddubm	v8, v9, v9
-	vsldoi	v8, v0, v8, 1	/* v8 = 0x80.  */
-
-	/* Check if null is in second qw.  */
-	vcmpequb.	v11, v0, v2
-	blt	cr6, L(secondqw)
-
-	/* Null found in first qw.  */
-	addi	r8, r3, -32
-	/* Calculate the null position.  */
-	FIND_NULL_POS(v2)
-	/* Check if null is in the first byte.  */
-	vcmpequb.	v11, v0, v2
-	blt	cr6, L(no_match)
-	vsububm	v2, v8, v2
-	/* Mask unwanted bytes after null.  */
-#ifdef __LITTLE_ENDIAN__
-	vslo	v6, v6, v2
-	vsro	v6, v6, v2
-#else
-	vsro	v6, v6, v2
-	vslo	v6, v6, v2
-#endif
-	vcmpequb.	v11, v0, v6
-	blt	cr6, L(no_match)
-	/* Found a match before null.  */
-	CALCULATE_MATCH()
-	add	r3, r8, r6
-	blr
-
-L(secondqw):
-	addi	r8, r3, -16
-	FIND_NULL_POS(v3)
-	vcmpequb.	v11, v0, v2
-	blt	cr6, L(no_match1)
-	vsububm	v2, v8, v2
-	/* Mask unwanted bytes after null.  */
-#ifdef __LITTLE_ENDIAN__
-	vslo	v7, v7, v2
-	vsro	v7, v7, v2
-#else
-	vsro	v7, v7, v2
-	vslo	v7, v7, v2
-#endif
-	vcmpequb.	v11, v0, v7
-	blt	cr6, L(no_match1)
-	addi	r8, r8, 16
-	vor	v6, v0, v7
-L(no_match1):
-	addi	r8, r8, -16
-	vcmpequb.	v11, v0, v6
-	blt	cr6, L(no_match)
-	/* Found a match before null.  */
-	CALCULATE_MATCH()
-	add	r3, r8, r6
-	blr
-
-L(match):
-	/* One (or both) of the quadwords contains a match.  */
-	mr	r8, r3
-	vcmpequb.	v8, v0, v7
-	blt	cr6, L(firstqw)
-	/* Match found in second qw.  */
-	addi	r8, r8, 16
-	vor	v6, v0, v7
-L(firstqw):
-	addi	r8, r8, -32
-	CALCULATE_MATCH()
-	add	r9, r8, r6      /* Compute final length.  */
-	b	L(continue)
-/* We are here because strrchr was called with a null byte.  */
-	.align	4
-L(null_match):
-	/* r0 has a doubleword of null bytes.  */
-
-	cmpb	r5,r12,r0     /* Compare each byte against null bytes.  */
-
-	/* Move the doublewords left and right to discard the bits that are
-	   not part of the string and bring them back as zeros.  */
-#ifdef __LITTLE_ENDIAN__
-	srd	r5,r5,r6
-	sld	r5,r5,r6
-#else
-	sld	r5,r5,r6
-	srd	r5,r5,r6
-#endif
-	cmpdi	cr7,r5,0      /* If r5 == 0, no c or null bytes
-				 have been found.  */
-	bne	cr7,L(done_null)
-
-	andi.	r12, r8, 15
-
-	/* Are we now aligned to a quadword boundary?  If so, skip to
-	   the main loop.  Otherwise, go through the alignment code.  */
-
-	bne	cr0, L(loop_null)
-
-	/* Handle WORD2 of pair.  */
-	ldu	r12,8(r8)
-	cmpb	r5,r12,r0
-	cmpdi	cr7,r5,0
-	bne	cr7,L(done_null)
-	b	L(loop_null)  /* We branch here (rather than falling through)
-				 to skip the nops due to heavy alignment
-				 of the loop below.  */
-
-	/* Main loop to look for the end of the string.  Since it's a
-	   small loop (< 8 instructions), align it to 32-bytes.  */
-	.p2align  5
-L(loop_null):
-	/* Load two doublewords, compare and merge in a
-	   single register for speed.  This is an attempt
-	   to speed up the null-checking process for bigger strings.  */
-	ld	r12,8(r8)
-	ldu	r11,16(r8)
-	cmpb	r5,r12,r0
-	cmpb	r10,r11,r0
-	or	r6,r5,r10
-	cmpdi	cr7,r6,0
-	beq	cr7,L(vector1)
-
-	/* OK, one (or both) of the doublewords contains a null byte.  Check
-	   the first doubleword and decrement the address in case the first
-	   doubleword really contains a null byte.  */
-
-	cmpdi	cr6,r5,0
-	addi	r8,r8,-8
-	bne	cr6,L(done_null)
-
-	/* The null byte must be in the second doubleword.  Adjust the address
-	   again and move the result of cmpb to r10 so we can calculate the
-	   pointer.  */
-
-	mr	r5,r10
-	addi	r8,r8,8
-
-	/* r5 has the output of the cmpb instruction, that is, it contains
-	   0xff in the same position as the null byte in the original
-	   doubleword from the string.  Use that to calculate the pointer.  */
-L(done_null):
-#ifdef __LITTLE_ENDIAN__
-	addi	r0,r5,-1
-	andc	r0,r0,r5
-	popcntd	r0,r0
-#else
-	cntlzd	r0,r5	      /* Count leading zeros before the match.  */
-#endif
-	srdi	r0,r0,3	      /* Convert trailing zeros to bytes.  */
-	add	r3,r8,r0      /* Return address of the matching null byte.  */
-	blr
-/* Check the first 32B in GPR's and move to vectorized loop.  */
-	.p2align  5
-L(vector1):
-	addi	r3, r8, 8
-	/* Make sure 32B aligned.  */
-	andi.	r10, r3, 31
-	bne	cr0, L(loop_null)
-	vspltisb	v0, 0
-	/* Precompute vbpermq constant.  */
-	vspltisb	v10, 3
-	lvsl	v11, r0, r0
-	vslb	v10, v11, v10
-	li	r5, 16
-	/* Compare 32 bytes in each loop.  */
-L(continue1):
-	lvx	v4, 0, r3
-	lvx	v5, r3, r5
-	vcmpequb	v2, v0, v4
-	vcmpequb	v3, v0, v5
-	vor	v8, v2, v3
-	vcmpequb.	v11, v0, v8
-	addi	r3, r3, 32
-	blt	cr6, L(continue1)
-	addi	r3, r3, -32
-	VBPERMQ(v2, v2, v10)
-	VBPERMQ(v3, v3, v10)
-	/* Shift each component into its correct position for merging.  */
-#ifdef __LITTLE_ENDIAN__
-	vsldoi	v3, v3, v3, 2
-#else
-	vsldoi	v2, v2, v2, 6
-	vsldoi	v3, v3, v3, 4
-#endif
-	/* Merge the results and move to a GPR.  */
-	vor	v4, v3, v2
-	MFVRD(r5, v4)
-#ifdef __LITTLE_ENDIAN__
-	addi	r6, r5, -1
-	andc	r6, r6, r5
-	popcntd	r6, r6
-#else
-	cntlzd	r6, r5  /* Count leading zeros before the match.  */
-#endif
-	add	r3, r3, r6      /* Compute final length.  */
-	blr
-END (strrchr)
-weak_alias (strrchr, rindex)
-libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/powerpc/powerpc64/power8/strspn.S b/sysdeps/powerpc/powerpc64/power8/strspn.S
deleted file mode 100644
index e9271898f2..0000000000
--- a/sysdeps/powerpc/powerpc64/power8/strspn.S
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Optimized strspn implementation for Power8.
-
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* size_t [r3] strspn (const char *string [r3],
-                       const char *needleAccept [r4])  */
-
-/* This takes a novel approach by computing a 256 bit mask whereby
-   each set bit implies the byte is "accepted".  P8 vector hardware
-   has extremely efficient hardware for selecting bits from a mask.
-
-   One might ask "why not use bpermd for short strings"?  It is
-   so slow that its performance about matches the generic PPC64
-   variant without any fancy masking, with the added expense of
-   making the mask.  That was the first variant of this.  */
-
-
-
-#include "sysdep.h"
-
-#ifndef USE_AS_STRCSPN
-#  define USE_AS_STRCSPN 0
-#  ifndef STRSPN
-#    define STRSPN strspn
-#  endif
-#  define INITIAL_MASK 0
-#  define UPDATE_MASK(RA, RS, RB) or	RA, RS, RB
-#else
-#  ifndef STRSPN
-#    define STRSPN strcspn
-#  endif
-#  define INITIAL_MASK -1
-#  define UPDATE_MASK(RA, RS, RB) andc	RA, RS, RB
-#endif
-
-/* Simple macro to use VSX instructions in overlapping VR's.  */
-#define XXVR(insn, vrt, vra, vrb) \
-	insn 32+vrt, 32+vra, 32+vrb
-
-/* ISA 2.07B instructions are not all defined for older binutils.
-   Macros are defined below for these newer instructions in order
-   to maintain compatibility.  */
-
-/* Note, TX/SX is always set as VMX regs are the high 32 VSX regs.  */
-#define MTVRD(v,r) .long (0x7c000167 | ((v)<<(32-11)) | ((r)<<(32-16)))
-#define MFVRD(r,v) .long (0x7c000067 | ((v)<<(32-11)) | ((r)<<(32-16)))
-
-#define VBPERMQ(t,a,b) .long (0x1000054c \
-			      | ((t)<<(32-11))	\
-			      | ((a)<<(32-16))	\
-			      | ((b)<<(32-21)) )
-
-	/* This can be updated to power8 once the minimum version of
-	   binutils supports power8 and the above instructions.  */
-	.machine power7
-EALIGN(STRSPN, 4, 0)
-	CALL_MCOUNT 2
-
-	/* Generate useful constants for later on.  */
-	vspltisb v1, 7
-	vspltisb v2, -1
-	vslb	v1, v1, v1	/* 0x80 to swap high bit for vbpermq.  */
-	vspltisb v10, 0
-	vsldoi	v4, v10, v2, 2	/* 0xFFFF into vr4.  */
-	XXVR(xxmrgld, v4, v4, v10) /* Mask for checking matches.  */
-
-	/* Prepare to compute 256b mask.  */
-	addi	r4, r4, -1
-	li	r5, INITIAL_MASK
-	li	r6, INITIAL_MASK
-	li	r7, INITIAL_MASK
-	li	r8, INITIAL_MASK
-
-#if USE_AS_STRCSPN
-	/* Ensure the null character never matches by clearing ISA bit 0 in
-	   in r5 which is the bit which will check for it in the later usage
-	   of vbpermq.  */
-	srdi	r5, r5, 1
-#endif
-
-	li	r11, 1
-	sldi	r11, r11, 63
-
-	/* Start interleaved Mask computation.
-	   This will eventually or 1's into ignored bits from vbpermq.  */
-	lvsr	v11, 0, r3
-	vspltb  v11, v11, 0	/* Splat shift constant.  */
-
-	/* Build a 256b mask in r5-r8.  */
-	.align 4
-L(next_needle):
-	lbzu	r9, 1(r4)
-
-	cmpldi	cr0, r9, 0
-	cmpldi	cr1, r9, 128
-
-	/* This is a little tricky.  srd only uses the first 7 bits,
-	   and if bit 7 is set, value is always 0.  So, we can
-	   effectively shift 128b in this case.  */
-	xori	r12, r9,  0x40	/* Invert bit 6.  */
-	srd	r10, r11, r9	/* Mask for bits 0-63.  */
-	srd	r12, r11, r12	/* Mask for bits 64-127.  */
-
-	beq	cr0, L(start_cmp)
-
-	/* Now, or the value into the correct GPR.  */
-	bge cr1,L(needle_gt128)
-	UPDATE_MASK (r5, r5, r10)	/* 0 - 63.  */
-	UPDATE_MASK (r6, r6, r12)	/* 64 - 127.  */
-	b L(next_needle)
-
-	.align 4
-L(needle_gt128):
-	UPDATE_MASK (r7, r7, r10)	/* 128 - 191.  */
-	UPDATE_MASK (r8, r8, r12)	/* 192 - 255.  */
-	b L(next_needle)
-
-
-	.align 4
-L(start_cmp):
-	/* Move and merge bitmap into 2 VRs.  bpermd is slower on P8.  */
-	mr	r0, r3		/* Save r3 for final length computation.  */
-	MTVRD (v5, r5)
-	MTVRD (v6, r6)
-	MTVRD (v7, r7)
-	MTVRD (v8, r8)
-
-	/* Continue interleaved mask generation.  */
-#ifdef __LITTLE_ENDIAN__
-	vsrw	v11, v2, v11	/* Note, shift ignores higher order bits.  */
-	vsplth  v11, v11, 0	/* Only care about the high 16 bits of v10.  */
-#else
-	vslw	v11, v2, v11	/* Note, shift ignores higher order bits.  */
-	vsplth  v11, v11, 1	/* Only care about the low 16 bits of v10.  */
-#endif
-	lvx	v0, 0, r3	/* Note, unaligned load ignores lower bits.  */
-
-	/* Do the merging of the bitmask.  */
-	XXVR(xxmrghd, v5, v5, v6)
-	XXVR(xxmrghd, v6, v7, v8)
-
-	/* Finish mask generation.  */
-	vand	v11, v11, v4	/* Throwaway bits not in the mask.  */
-
-	/* Compare the first 1-16B, while masking unwanted bytes.  */
-	clrrdi  r3, r3, 4	/* Note,  counts from qw boundaries.  */
-	vxor	v9, v0, v1	/* Swap high bit.  */
-	VBPERMQ (v8, v5, v0)
-	VBPERMQ (v7, v6, v9)
-	vor	v7, v7, v8
-	vor	v7, v7, v11	/* Ignore non-participating bytes.  */
-	vcmpequh. v8, v7, v4
-	bnl	cr6, L(done)
-
-	addi	r3, r3, 16
-
-	.align 4
-L(vec):
-	lvx	v0, 0, r3
-	addi	r3, r3, 16
-	vxor	v9, v0, v1	/* Swap high bit.  */
-	VBPERMQ (v8, v5, v0)
-	VBPERMQ (v7, v6, v9)
-	vor	v7, v7, v8
-	vcmpequh. v8, v7, v4
-	blt	cr6, L(vec)
-
-	addi	r3, r3, -16
-L(done):
-	subf	r3, r0, r3
-	MFVRD (r10, v7)
-
-#ifdef __LITTLE_ENDIAN__
-	addi	r0,  r10, 1	/* Count the trailing 1's.  */
-	andc	r10, r10, r0
-	popcntd	r10, r10
-#else
-	xori	r10, r10, 0xffff /* Count leading 1's by inverting.  */
-	addi	r3,  r3,  -48	/* Account for the extra leading zeros.  */
-	cntlzd  r10, r10
-#endif
-
-	add	r3, r3, r10
-	blr
-
-END(STRSPN)
-libc_hidden_builtin_def (STRSPN)
diff --git a/sysdeps/powerpc/powerpc64/power9/Implies b/sysdeps/powerpc/powerpc64/power9/Implies
deleted file mode 100644
index fad2505ab9..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-powerpc/powerpc64/power8/fpu
-powerpc/powerpc64/power8
diff --git a/sysdeps/powerpc/powerpc64/power9/fpu/Implies b/sysdeps/powerpc/powerpc64/power9/fpu/Implies
deleted file mode 100644
index ae0dbaf857..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/fpu
diff --git a/sysdeps/powerpc/powerpc64/power9/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power9/fpu/multiarch/Implies
deleted file mode 100644
index f11e1bdba2..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power9/multiarch/Implies b/sysdeps/powerpc/powerpc64/power9/multiarch/Implies
deleted file mode 100644
index dd6bca4b36..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/multiarch
diff --git a/sysdeps/powerpc/powerpc64/power9/strcmp.S b/sysdeps/powerpc/powerpc64/power9/strcmp.S
deleted file mode 100644
index 2dc4f6c722..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/strcmp.S
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Optimized strcmp implementation for PowerPC64/POWER9.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#ifdef __LITTLE_ENDIAN__
-#include <sysdep.h>
-
-#ifndef STRCMP
-# define STRCMP strcmp
-#endif
-
-/* Implements the function
-
-   int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
-
-   The implementation uses unaligned doubleword access for first 32 bytes
-   as in POWER8 patch and uses vectorised loops after that.  */
-
-/* TODO: Change this to actual instructions when minimum binutils is upgraded
-   to 2.27. Macros are defined below for these newer instructions in order
-   to maintain compatibility.  */
-# define VCTZLSBB(r,v) .long (0x10010602 | ((r)<<(32-11)) | ((v)<<(32-21)))
-
-# define VEXTUBRX(t,a,b) .long (0x1000070d \
-				| ((t)<<(32-11))  \
-				| ((a)<<(32-16))  \
-				| ((b)<<(32-21)) )
-
-# define VCMPNEZB(t,a,b) .long (0x10000507 \
-				| ((t)<<(32-11))  \
-				| ((a)<<(32-16))  \
-				| ((b)<<(32-21)) )
-
-/* Get 16 bytes for unaligned case.
-   reg1: Vector to hold next 16 bytes.
-   reg2: Address to read from.
-   reg3: Permute control vector.  */
-# define GET16BYTES(reg1, reg2, reg3) \
-	lvx	reg1, 0, reg2; \
-	vperm	v8, v2, reg1, reg3; \
-	vcmpequb.	v8, v0, v8; \
-	beq	cr6, 1f; \
-	vspltisb	v9, 0; \
-	b	2f; \
-	.align 4; \
-1: \
-	addi    r6, reg2, 16; \
-	lvx     v9, 0, r6; \
-2: \
-	vperm   reg1, v9, reg1, reg3;
-
-/* TODO: change this to .machine power9 when the minimum required binutils
-   allows it.  */
-
-	.machine  power7
-EALIGN (STRCMP, 4, 0)
-	li	r0, 0
-
-	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
-	   the code:
-
-	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
-
-	   with PAGE_SIZE being 4096 and ITER_SIZE begin 16.  */
-
-	rldicl	r7, r3, 0, 52
-	rldicl	r9, r4, 0, 52
-	cmpldi	cr7, r7, 4096-16
-	bgt	cr7, L(pagecross_check)
-	cmpldi	cr5, r9, 4096-16
-	bgt	cr5, L(pagecross_check)
-
-	/* For short strings up to 16 bytes,  load both s1 and s2 using
-	   unaligned dwords and compare.  */
-	ld	r8, 0(r3)
-	ld	r10, 0(r4)
-	cmpb	r12, r8, r0
-	cmpb	r11, r8, r10
-	orc.	r9, r12, r11
-	bne	cr0, L(different_nocmpb)
-
-	ld	r8, 8(r3)
-	ld	r10, 8(r4)
-	cmpb	r12, r8, r0
-	cmpb	r11, r8, r10
-	orc.	r9, r12, r11
-	bne	cr0, L(different_nocmpb)
-
-	addi	r7, r3, 16
-	addi	r4, r4, 16
-
-L(align):
-	/* Now it has checked for first 16 bytes.  */
-	vspltisb	v0, 0
-	vspltisb	v2, -1
-	lvsr	v6, 0, r4   /* Compute mask.  */
-	or	r5, r4, r7
-	andi.	r5, r5, 0xF
-	beq	cr0, L(aligned)
-	andi.	r5, r7, 0xF
-	beq	cr0, L(s1_align)
-	lvsr	v10, 0, r7   /* Compute mask.  */
-
-	/* Both s1 and s2 are unaligned.  */
-	GET16BYTES(v4, r7, v10)
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	beq	cr6, L(match)
-	b	L(different)
-
-	/* Align s1 to qw and adjust s2 address.  */
-	.align  4
-L(match):
-	clrldi	r6, r7, 60
-	subfic	r5, r6, 16
-	add	r7, r7, r5
-	add	r4, r4, r5
-	andi.	r5, r4, 0xF
-	beq	cr0, L(aligned)
-	lvsr	v6, 0, r4
-	/* There are 2 loops depending on the input alignment.
-	   Each loop gets 16 bytes from s1 and s2 and compares.
-	   Loop until a mismatch or null occurs.  */
-L(s1_align):
-	lvx	v4, r7, r0
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, r7, r0
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, r7, r0
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, r7, r0
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	beq	cr6, L(s1_align)
-	b	L(different)
-
-	.align  4
-L(aligned):
-	lvx	v4, 0, r7
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, 0, r7
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, 0, r7
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	bne	cr6, L(different)
-
-	lvx	v4, 0, r7
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	addi	r7, r7, 16
-	addi	r4, r4, 16
-	beq	cr6, L(aligned)
-
-	/* Calculate and return the difference.  */
-L(different):
-	VCTZLSBB(r6, v7)
-	VEXTUBRX(r5, r6, v4)
-	VEXTUBRX(r4, r6, v5)
-	subf	r3, r4, r5
-	extsw	r3, r3
-	blr
-
-	.align  4
-L(different_nocmpb):
-	neg	r3, r9
-	and	r9, r9, r3
-	cntlzd	r9, r9
-	subfic	r9, r9, 63
-	srd	r3, r8, r9
-	srd	r10, r10, r9
-	rldicl	r10, r10, 0, 56
-	rldicl	r3, r3, 0, 56
-	subf	r3, r10, r3
-	extsw	r3, r3
-	blr
-
-	.align	4
-L(pagecross_check):
-	subfic	r9, r9, 4096
-	subfic	r7, r7, 4096
-	cmpld	cr7, r7, r9
-	bge	cr7, L(pagecross)
-	mr	r7, r9
-
-	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
-	   a simple byte a byte comparison until the page alignment for s1
-	   is reached.  */
-L(pagecross):
-	add	r7, r3, r7
-	subf	r9, r3, r7
-	mtctr	r9
-
-	.align	4
-L(pagecross_loop):
-	/* Loads a byte from s1 and s2, compare if *s1 is equal to *s2
-	   and if *s1 is '\0'.  */
-	lbz	r9, 0(r3)
-	lbz	r10, 0(r4)
-	addi	r3, r3, 1
-	addi	r4, r4, 1
-	cmplw	cr7, r9, r10
-	cmpdi	cr5, r9, r0
-	bne	cr7, L(pagecross_ne)
-	beq	cr5, L(pagecross_nullfound)
-	bdnz	L(pagecross_loop)
-	b	L(align)
-
-	.align	4
-L(pagecross_ne):
-	extsw	r3, r9
-	mr	r9, r10
-L(pagecross_retdiff):
-	subf	r9, r9, r3
-	extsw	r3, r9
-	blr
-
-	.align	4
-L(pagecross_nullfound):
-	li	r3, 0
-	b	L(pagecross_retdiff)
-END (STRCMP)
-libc_hidden_builtin_def (strcmp)
-#else
-#include <sysdeps/powerpc/powerpc64/power8/strcmp.S>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/power9/strncmp.S b/sysdeps/powerpc/powerpc64/power9/strncmp.S
deleted file mode 100644
index c946a5c638..0000000000
--- a/sysdeps/powerpc/powerpc64/power9/strncmp.S
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Optimized strncmp implementation for PowerPC64/POWER9.
-   Copyright (C) 2016-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#ifdef __LITTLE_ENDIAN__
-#include <sysdep.h>
-
-/* Implements the function
-
-   int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n)
-
-   The implementation uses unaligned doubleword access to avoid specialized
-   code paths depending of data alignment for first 32 bytes and uses
-   vectorised loops after that.  */
-
-#ifndef STRNCMP
-# define STRNCMP strncmp
-#endif
-
-/* TODO: Change this to actual instructions when minimum binutils is upgraded
-   to 2.27. Macros are defined below for these newer instructions in order
-   to maintain compatibility.  */
-# define VCTZLSBB(r,v) .long (0x10010602 | ((r)<<(32-11)) | ((v)<<(32-21)))
-
-# define VEXTUBRX(t,a,b) .long (0x1000070d \
-				| ((t)<<(32-11))  \
-				| ((a)<<(32-16))  \
-				| ((b)<<(32-21)) )
-
-# define VCMPNEZB(t,a,b) .long (0x10000507 \
-				| ((t)<<(32-11))  \
-				| ((a)<<(32-16))  \
-				| ((b)<<(32-21)) )
-
-/* Get 16 bytes for unaligned case.
-   reg1: Vector to hold next 16 bytes.
-   reg2: Address to read from.
-   reg3: Permute control vector.  */
-# define GET16BYTES(reg1, reg2, reg3) \
-	lvx	reg1, 0, reg2; \
-	vperm	v8, v2, reg1, reg3; \
-	vcmpequb.	v8, v0, v8; \
-	beq	cr6, 1f; \
-	vspltisb	v9, 0; \
-	b	2f; \
-	.align 4; \
-1: \
-	cmplw	cr6, r5, r11; \
-	ble	cr6, 2f; \
-	addi	r6, reg2, 16; \
-	lvx	v9, 0, r6; \
-2: \
-	vperm	reg1, v9, reg1, reg3;
-
-/* TODO: change this to .machine power9 when minimum binutils
-   is upgraded to 2.27.  */
-	.machine  power7
-EALIGN (STRNCMP, 4, 0)
-	/* Check if size is 0.  */
-	cmpdi	cr0, r5, 0
-	beq	cr0, L(ret0)
-	li	r0, 0
-
-	/* Check if [s1]+32 or [s2]+32 will cross a 4K page boundary using
-	   the code:
-
-	    (((size_t) s1) % PAGE_SIZE > (PAGE_SIZE - ITER_SIZE))
-
-	   with PAGE_SIZE being 4096 and ITER_SIZE begin 32.  */
-	rldicl	r8, r3, 0, 52
-	cmpldi	cr7, r8, 4096-32
-	bgt	cr7, L(pagecross)
-	rldicl	r9, r4, 0, 52
-	cmpldi	cr7, r9, 4096-32
-	bgt	cr7, L(pagecross)
-
-	/* For short strings up to 32 bytes, load both s1 and s2 using
-	   unaligned dwords and compare.  */
-
-	ld	r7, 0(r3)
-	ld	r9, 0(r4)
-	li	r8, 0
-	cmpb	r8, r7, r8
-	cmpb	r6, r7, r9
-	orc.	r8, r8, r6
-	bne	cr0, L(different1)
-
-	/* If the strings compared are equal, but size is less or equal
-	   to 8, return 0.  */
-	cmpldi	cr7, r5, 8
-	li	r9, 0
-	ble	cr7, L(ret1)
-	addi	r5, r5, -8
-
-	ld	r7, 8(r3)
-	ld	r9, 8(r4)
-	cmpb	r8, r7, r8
-	cmpb	r6, r7, r9
-	orc.	r8, r8, r6
-	bne	cr0, L(different1)
-	cmpldi	cr7, r5, 8
-	mr	r9, r8
-	ble	cr7, L(ret1)
-	/* Update pointers and size.  */
-	addi	r5, r5, -8
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	ld	r7, 0(r3)
-	ld	r9, 0(r4)
-	li	r8, 0
-	cmpb	r8, r7, r8
-	cmpb	r6, r7, r9
-	orc.	r8, r8, r6
-	bne	cr0, L(different1)
-	cmpldi	cr7, r5, 8
-	li	r9, 0
-	ble	cr7, L(ret1)
-	addi	r5, r5, -8
-
-	ld	r7, 8(r3)
-	ld	r9, 8(r4)
-	cmpb	r8, r7, r8
-	cmpb	r6, r7, r9
-	orc.	r8, r8, r6
-	bne	cr0, L(different1)
-	cmpldi	cr7, r5, 8
-	mr	r9, r8
-	ble	cr7, L(ret1)
-
-	/* Update pointers and size.  */
-	addi	r5, r5, -8
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-L(align):
-	/* Now it has checked for first 32 bytes, align source1 to doubleword
-	   and adjust source2 address.  */
-	vspltisb	v0, 0
-	vspltisb	v2, -1
-	or	r6, r4, r3
-	andi.	r6, r6, 0xF
-	beq	cr0, L(aligned)
-	lvsr	v6, 0, r4   /* Compute mask.  */
-	clrldi	r6, r4, 60
-	subfic	r11, r6, 16
-	andi.	r6, r3, 0xF
-	beq	cr0, L(s1_align)
-	/* Both s1 and s2 are unaligned.  */
-	GET16BYTES(v5, r4, v6)
-	lvsr	v10, 0, r3   /* Compute mask.  */
-	clrldi	r6, r3, 60
-	subfic	r11, r6, 16
-	GET16BYTES(v4, r3, v10)
-	VCMPNEZB(v7, v5, v4)
-	beq	cr6, L(match)
-	b	L(different)
-
-	/* Align s1 to qw and adjust s2 address.  */
-	.align  4
-L(match):
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	subf	r5, r11, r5
-	add	r3, r3, r11
-	add	r4, r4, r11
-	andi.	r11, r4, 0xF
-	beq	cr0, L(aligned)
-	lvsr	v6, 0, r4
-	clrldi	r6, r4, 60
-	subfic	r11, r6, 16
-	/* There are 2 loops depending on the input alignment.
-	   Each loop gets 16 bytes from s1 and s2, checks for null
-	   and compares them. Loops until a mismatch or  null occurs.  */
-L(s1_align):
-	lvx	v4, 0, r3
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	GET16BYTES(v5, r4, v6)
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-	b	L(s1_align)
-	.align  4
-L(aligned):
-	lvx	v4, 0, r3
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-
-	lvx	v4, 0, r3
-	lvx	v5, 0, r4
-	VCMPNEZB(v7, v5, v4)
-	bne	cr6, L(different)
-	cmpldi	cr7, r5, 16
-	ble	cr7, L(ret0)
-	addi	r5, r5, -16
-	addi	r3, r3, 16
-	addi	r4, r4, 16
-	b	L(aligned)
-	/* Calculate and return the difference.  */
-L(different):
-	VCTZLSBB(r6, v7)
-	cmplw	cr7, r5, r6
-	ble	cr7, L(ret0)
-	VEXTUBRX(r5, r6, v4)
-	VEXTUBRX(r4, r6, v5)
-	subf	r3, r4, r5
-	extsw	r3, r3
-	blr
-
-	.align 4
-L(ret0):
-	li	r9, 0
-L(ret1):
-	mr	r3, r9
-	blr
-
-	/* The code now checks if r8 and r5 are different by issuing a
-	   cmpb and shifts the result based on its output:
-
-	  leadzero = (__builtin_ffsl (z1) - 1);
-	  leadzero = leadzero > (n-1)*8 ? (n-1)*8 : leadzero;
-	  r1 = (r1 >> leadzero) & 0xFFUL;
-	  r2 = (r2 >> leadzero) & 0xFFUL;
-	  return r1 - r2;  */
-
-	.align 4
-L(different1):
-	neg	r11, r8
-	sldi	r5, r5, 3
-	and	r8, r11, r8
-	addi	r5, r5, -8
-	cntlzd	r8, r8
-	subfic	r8, r8, 63
-	extsw 	r8, r8
-	cmpld	cr7, r8, r5
-	ble	cr7, L(different2)
-	mr	r8, r5
-L(different2):
-	extsw	r8, r8
-	srd	r7, r7, r8
-	srd	r9, r9, r8
-	rldicl	r3, r7, 0, 56
-	rldicl	r9, r9, 0, 56
-	subf	r9, r9, 3
-	extsw	r9, r9
-	mr	r3, r9
-	blr
-
-	/* If unaligned 16 bytes reads across a 4K page boundary, it uses
-	   a simple byte a byte comparison until the page alignment for s1
-	   is reached.  */
-	.align 4
-L(pagecross):
-	lbz	r7, 0(r3)
-	lbz	r9, 0(r4)
-	subfic	r8, r8,4095
-	cmplw	cr7, r9, r7
-	bne	cr7, L(byte_ne_3)
-	cmpdi	cr7, r9, 0
-	beq	cr7, L(byte_ne_0)
-	addi	r5, r5, -1
-	subf	r7, r8, r5
-	subf	r9, r7, r5
-	addi	r9, r9, 1
-	mtctr	r9
-	b	L(pagecross_loop1)
-
-	.align 4
-L(pagecross_loop0):
-	beq	cr7, L(ret0)
-	lbz	r9, 0(r3)
-	lbz	r8, 0(r4)
-	addi	r5, r5, -1
-	cmplw	cr7, r9, r8
-	cmpdi	cr5, r9, 0
-	bne	cr7, L(byte_ne_2)
-	beq	cr5, L(byte_ne_0)
-L(pagecross_loop1):
-	cmpdi	cr7, r5, 0
-	addi	r3, r3, 1
-	addi	r4, r4, 1
-	bdnz	L(pagecross_loop0)
-	cmpdi	cr7, r7, 0
-	li	r9, 0
-	bne+	cr7, L(align)
-	b	L(ret1)
-
-	.align 4
-L(byte_ne_0):
-	li	r7, 0
-L(byte_ne_1):
-	subf	r9, r9, r7
-	extsw	r9, r9
-	b	L(ret1)
-
-	.align 4
-L(byte_ne_2):
-	extsw	r7, r9
-	mr	r9, r8
-	b	L(byte_ne_1)
-L(byte_ne_3):
-	extsw	r7, r7
-	b	L(byte_ne_1)
-END(STRNCMP)
-libc_hidden_builtin_def(strncmp)
-#else
-#include <sysdeps/powerpc/powerpc64/power8/strncmp.S>
-#endif
diff --git a/sysdeps/powerpc/powerpc64/ppc-mcount.S b/sysdeps/powerpc/powerpc64/ppc-mcount.S
deleted file mode 100644
index 8312f46644..0000000000
--- a/sysdeps/powerpc/powerpc64/ppc-mcount.S
+++ /dev/null
@@ -1,39 +0,0 @@
-/* PowerPC64-specific implementation of profiling support.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-/* We don't need to save the parameter-passing registers as gcc takes
-   care of that for us.  Thus this function looks fairly normal.
-   In fact, the generic code would work for us.  */
-
-ENTRY(_mcount)
-	mflr		 r4
-	ld		 r11, 0(r1)
-	stdu		 r1,-FRAME_MIN_SIZE(r1)
-	cfi_adjust_cfa_offset (FRAME_MIN_SIZE)
-	std		 r4, FRAME_MIN_SIZE+FRAME_LR_SAVE(r1)
-	cfi_offset (lr, FRAME_LR_SAVE)
-	ld		 r3, FRAME_LR_SAVE(r11)
-	bl		 JUMPTARGET(__mcount_internal)
-	nop
-	ld		 r0, FRAME_MIN_SIZE+FRAME_LR_SAVE(r1)
-	mtlr		 r0
-	addi		 r1,r1,FRAME_MIN_SIZE
-	blr
-END(_mcount)
-
diff --git a/sysdeps/powerpc/powerpc64/register-dump.h b/sysdeps/powerpc/powerpc64/register-dump.h
deleted file mode 100644
index 215e42b63f..0000000000
--- a/sysdeps/powerpc/powerpc64/register-dump.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Dump registers.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sys/uio.h>
-#include <_itoa.h>
-
-/* This prints out the information in the following form: */
-static const char dumpform[] = "\
-Register dump:\n\
-sr0=000000000000020% sr1=000000000000021% dar=000000000000029% dsi=000002a%\n\
-lr=000000000000024%  ctr=000000000000023% gr3*=000000000000022% trap=0000028%\n\
-ccr=0000026%  xer=0000025%\n\
-gr0-3:   000000000000000% 000000000000001% 000000000000002% 000000000000003%\n\
-gr4-7:   000000000000004% 000000000000005% 000000000000006% 000000000000007%\n\
-gr8-11:  000000000000008% 000000000000009% 00000000000000a% 00000000000000b%\n\
-gr12-15: 00000000000000c% 00000000000000d% 00000000000000e% 00000000000000f%\n\
-gr16-19: 000000000000010% 000000000000011% 000000000000012% 000000000000013%\n\
-gr20-23: 000000000000014% 000000000000015% 000000000000016% 000000000000017%\n\
-gr24-27: 000000000000018% 000000000000019% 00000000000001a% 00000000000001b%\n\
-gr28-31: 00000000000001c% 00000000000001d% 00000000000001e% 00000000000001f%\n\
-fscr=000000000000050%\n\
-fp0-3:   000000000000030% 000000000000031% 000000000000032% 000000000000033%\n\
-fp4-7:   000000000000034% 000000000000035% 000000000000036% 000000000000037%\n\
-fp8-11:  000000000000038% 000000000000038% 00000000000003a% 00000000000003b%\n\
-fp12-15: 00000000000003c% 00000000000003d% 00000000000003e% 00000000000003f%\n\
-fp16-19: 000000000000040% 000000000000041% 000000000000042% 000000000000043%\n\
-fp20-23: 000000000000044% 000000000000045% 000000000000046% 000000000000047%\n\
-fp24-27: 000000000000048% 000000000000049% 00000000000004a% 00000000000004b%\n\
-fp28-31: 00000000000004c% 00000000000004d% 00000000000004e% 00000000000004f%\n\
-";
-
-/* Most of the fields are self-explanatory.  'sr0' is the next
-   instruction to execute, from SRR0, which may have some relationship
-   with the instruction that caused the exception.  'r3*' is the value
-   that will be returned in register 3 when the current system call
-   returns.  'sr1' is SRR1, bits 16-31 of which are copied from the MSR:
-
-   16 - External interrupt enable
-   17 - Privilege level (1=user, 0=supervisor)
-   18 - FP available
-   19 - Machine check enable (if clear, processor locks up on machine check)
-   20 - FP exception mode bit 0 (FP exceptions recoverable)
-   21 - Single-step trace enable
-   22 - Branch trace enable
-   23 - FP exception mode bit 1
-   25 - exception prefix (if set, exceptions are taken from 0xFFFnnnnn,
-        otherwise from 0x000nnnnn).
-   26 - Instruction address translation enabled.
-   27 - Data address translation enabled.
-   30 - Exception is recoverable (otherwise, don't try to return).
-   31 - Little-endian mode enable.
-
-   'Trap' is the address of the exception:
-
-   00200 - Machine check exception (memory parity error, for instance)
-   00300 - Data access exception (memory not mapped, see dsisr for why)
-   00400 - Instruction access exception (memory not mapped)
-   00500 - External interrupt
-   00600 - Alignment exception (see dsisr for more information)
-   00700 - Program exception (illegal/trap instruction, FP exception)
-   00800 - FP unavailable (should not be seen by user code)
-   00900 - Decrementer exception (for instance, SIGALRM)
-   00A00 - I/O controller interface exception
-   00C00 - System call exception (for instance, kill(3)).
-   00E00 - FP assist exception (optional FP instructions, etc.)
-
-   'dar' is the memory location, for traps 00300, 00400, 00600, 00A00.
-   'dsisr' has the following bits under trap 00300:
-   0 - direct-store error exception
-   1 - no page table entry for page
-   4 - memory access not permitted
-   5 - trying to access I/O controller space or using lwarx/stwcx on
-       non-write-cached memory
-   6 - access was store
-   9 - data access breakpoint hit
-   10 - segment table search failed to find translation (64-bit ppcs only)
-   11 - I/O controller instruction not permitted
-   For trap 00400, the same bits are set in SRR1 instead.
-   For trap 00600, bits 12-31 of the DSISR set to allow emulation of
-   the instruction without actually having to read it from memory.
-*/
-
-#define xtoi(x) (x >= 'a' ? x + 10 - 'a' : x - '0')
-
-static void
-register_dump (int fd, struct sigcontext *ctx)
-{
-  char buffer[sizeof(dumpform)];
-  char *bufferpos;
-  unsigned regno;
-  unsigned long *regs = (unsigned long *)(ctx->regs);
-
-  memcpy(buffer, dumpform, sizeof(dumpform));
-
-  /* Generate the output.  */
-  while ((bufferpos = memchr (buffer, '%', sizeof(dumpform))))
-    {
-      regno = xtoi (bufferpos[-1]) | xtoi (bufferpos[-2]) << 4;
-      memset (bufferpos-2, '0', 3);
-      _itoa_word (regs[regno], bufferpos+1, 16, 0);
-    }
-
-  /* Write the output.  */
-  write (fd, buffer, sizeof(buffer) - 1);
-}
-
-
-#define REGISTER_DUMP \
-  register_dump (fd, ctx)
diff --git a/sysdeps/powerpc/powerpc64/rtld-memset.c b/sysdeps/powerpc/powerpc64/rtld-memset.c
deleted file mode 100644
index f3ed8ad1e7..0000000000
--- a/sysdeps/powerpc/powerpc64/rtld-memset.c
+++ /dev/null
@@ -1,4 +0,0 @@
-/* PPCA2 has a different cache-line size than the usual 128 bytes.  To avoid
-   using code that assumes cache-line size to be 128 bytes (with dcbz
-   instructions) we use the generic code instead.  */
-#include <string/memset.c>
diff --git a/sysdeps/powerpc/powerpc64/setjmp-common.S b/sysdeps/powerpc/powerpc64/setjmp-common.S
deleted file mode 100644
index 20f6cf364c..0000000000
--- a/sysdeps/powerpc/powerpc64/setjmp-common.S
+++ /dev/null
@@ -1,245 +0,0 @@
-/* setjmp for PowerPC64.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <stap-probe.h>
-#define _ASM
-#ifdef __NO_VMX__
-#include <novmxsetjmp.h>
-#else
-#include <jmpbuf-offsets.h>
-#endif
-
-#ifndef __NO_VMX__
-	.section	".toc","aw"
-.LC__dl_hwcap:
-# ifdef SHARED
-#  if IS_IN (rtld)
-	/* Inside ld.so we use the local alias to avoid runtime GOT
-	   relocations.  */
-	.tc _rtld_local_ro[TC],_rtld_local_ro
-#  else
-	.tc _rtld_global_ro[TC],_rtld_global_ro
-#  endif
-# else
-	.tc _dl_hwcap[TC],_dl_hwcap
-# endif
-	.section ".text"
-#endif
-
-	.machine	"altivec"
-ENTRY (setjmp_symbol)
-	CALL_MCOUNT 1
-	li r4,1			/* Set second argument to 1.  */
-	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
-END (setjmp_symbol)
-
-#if defined SHARED && !IS_IN (rtld) && !defined __NO_VMX__
-/* When called from within libc we need a special version of _setjmp
-   that saves r2 since the call won't go via a plt call stub.  See
-   bugz #269.  __GI__setjmp is used in csu/libc-start.c when
-   HAVE_CLEANUP_JMP_BUF is defined.  */
-ENTRY (__GI__setjmp)
-	std r2,FRAME_TOC_SAVE(r1)		/* Save the callers TOC in the save area.  */
-	CALL_MCOUNT 1
-	li r4,0			/* Set second argument to 0.  */
-	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
-END (__GI__setjmp)
-#endif
-
-ENTRY (_setjmp_symbol)
-	CALL_MCOUNT 1
-	li r4,0			/* Set second argument to 0.  */
-	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
-END (_setjmp_symbol)
-libc_hidden_def (_setjmp_symbol)
-
-ENTRY (__sigsetjmp_symbol)
-	CALL_MCOUNT 2
-JUMPTARGET(GLUE(__sigsetjmp_symbol,_ent)):
-#ifdef PTR_MANGLE
-	mr   r5, r1
-	PTR_MANGLE (r5, r6)
-	std  r5,(JB_GPR1*8)(3)
-#else
-	std  r1,(JB_GPR1*8)(3)
-#endif
-	mflr r0
-#if defined SHARED && !IS_IN (rtld)
-	ld   r5,FRAME_TOC_SAVE(r1)	/* Retrieve the callers TOC.  */
-	std  r5,(JB_GPR2*8)(3)
-#else
-	std  r2,(JB_GPR2*8)(3)
-#endif
-	/* setjmp probe expects longjmp first argument (8@3), second argument
-	   (-4@4), and target address (8@0), respectively.  */
-	LIBC_PROBE (setjmp, 3, 8@3, -4@4, 8@0)
-	std  r14,((JB_GPRS+0)*8)(3)
-	stfd fp14,((JB_FPRS+0)*8)(3)
-#ifdef PTR_MANGLE
-	PTR_MANGLE2 (r0, r6)
-#endif
-	std  r0,(JB_LR*8)(3)
-	std  r15,((JB_GPRS+1)*8)(3)
-	stfd fp15,((JB_FPRS+1)*8)(3)
-	mfcr r0
-	std  r16,((JB_GPRS+2)*8)(3)
-	stfd fp16,((JB_FPRS+2)*8)(3)
-	stw  r0,((JB_CR*8)+4)(3)	/* 32-bit CR.  */
-	std  r17,((JB_GPRS+3)*8)(3)
-	stfd fp17,((JB_FPRS+3)*8)(3)
-	std  r18,((JB_GPRS+4)*8)(3)
-	stfd fp18,((JB_FPRS+4)*8)(3)
-	std  r19,((JB_GPRS+5)*8)(3)
-	stfd fp19,((JB_FPRS+5)*8)(3)
-	std  r20,((JB_GPRS+6)*8)(3)
-	stfd fp20,((JB_FPRS+6)*8)(3)
-	std  r21,((JB_GPRS+7)*8)(3)
-	stfd fp21,((JB_FPRS+7)*8)(3)
-	std  r22,((JB_GPRS+8)*8)(3)
-	stfd fp22,((JB_FPRS+8)*8)(3)
-	std  r23,((JB_GPRS+9)*8)(3)
-	stfd fp23,((JB_FPRS+9)*8)(3)
-	std  r24,((JB_GPRS+10)*8)(3)
-	stfd fp24,((JB_FPRS+10)*8)(3)
-	std  r25,((JB_GPRS+11)*8)(3)
-	stfd fp25,((JB_FPRS+11)*8)(3)
-	std  r26,((JB_GPRS+12)*8)(3)
-	stfd fp26,((JB_FPRS+12)*8)(3)
-	std  r27,((JB_GPRS+13)*8)(3)
-	stfd fp27,((JB_FPRS+13)*8)(3)
-	std  r28,((JB_GPRS+14)*8)(3)
-	stfd fp28,((JB_FPRS+14)*8)(3)
-	std  r29,((JB_GPRS+15)*8)(3)
-	stfd fp29,((JB_FPRS+15)*8)(3)
-	std  r30,((JB_GPRS+16)*8)(3)
-	stfd fp30,((JB_FPRS+16)*8)(3)
-	std  r31,((JB_GPRS+17)*8)(3)
-	stfd fp31,((JB_FPRS+17)*8)(3)
-#ifndef __NO_VMX__
-	ld    r6,.LC__dl_hwcap@toc(r2)
-# ifdef SHARED
-	/* Load _rtld-global._dl_hwcap.  */
-	ld    r6,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r6)
-# else
-	ld    r6,0(r6) /* Load extern _dl_hwcap.  */
-# endif
-	andis.  r6,r6,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-	beq	L(no_vmx)
-	la	r5,((JB_VRS)*8)(3)
-	andi.	r6,r5,0xf
-	mfspr	r0,VRSAVE
-	stw	r0,((JB_VRSAVE)*8)(3)	/* 32-bit VRSAVE.  */
-	addi	r6,r5,16
-	beq+	L(aligned_save_vmx)
-
-	lvsr	v0,0,r5
-	lvsl	v1,0,r5
-	addi	r6,r5,-16
-
-# define save_misaligned_vmx(savevr,prevvr,shiftvr,tmpvr,savegpr,addgpr) \
-	addi	addgpr,addgpr,32;					 \
-	vperm	tmpvr,prevvr,savevr,shiftvr;				 \
-	stvx	tmpvr,0,savegpr
-
-	/*
-	 * We have to be careful not to corrupt the data below v20 and
-	 * above v31. To keep things simple we just rotate both ends in
-	 * the opposite direction to our main permute so we can use
-	 * the common macro.
-	 */
-
-	/* load and rotate data below v20 */
-	lvx	v2,0,r5
-	vperm	v2,v2,v2,v1
-	save_misaligned_vmx(v20,v2,v0,v3,r5,r6)
-	save_misaligned_vmx(v21,v20,v0,v3,r6,r5)
-	save_misaligned_vmx(v22,v21,v0,v3,r5,r6)
-	save_misaligned_vmx(v23,v22,v0,v3,r6,r5)
-	save_misaligned_vmx(v24,v23,v0,v3,r5,r6)
-	save_misaligned_vmx(v25,v24,v0,v3,r6,r5)
-	save_misaligned_vmx(v26,v25,v0,v3,r5,r6)
-	save_misaligned_vmx(v27,v26,v0,v3,r6,r5)
-	save_misaligned_vmx(v28,v27,v0,v3,r5,r6)
-	save_misaligned_vmx(v29,v28,v0,v3,r6,r5)
-	save_misaligned_vmx(v30,v29,v0,v3,r5,r6)
-	save_misaligned_vmx(v31,v30,v0,v3,r6,r5)
-	/* load and rotate data above v31 */
-	lvx	v2,0,r6
-	vperm	v2,v2,v2,v1
-	save_misaligned_vmx(v2,v31,v0,v3,r5,r6)
-
-	b	L(no_vmx)
-
-L(aligned_save_vmx):
-	stvx	20,0,r5
-	addi	r5,r5,32
-	stvx	21,0,r6
-	addi	r6,r6,32
-	stvx	22,0,r5
-	addi	r5,r5,32
-	stvx	23,0,r6
-	addi	r6,r6,32
-	stvx	24,0,r5
-	addi	r5,r5,32
-	stvx	25,0,r6
-	addi	r6,r6,32
-	stvx	26,0,r5
-	addi	r5,r5,32
-	stvx	27,0,r6
-	addi	r6,r6,32
-	stvx	28,0,r5
-	addi	r5,r5,32
-	stvx	29,0,r6
-	addi	r6,r6,32
-	stvx	30,0,r5
-	stvx	31,0,r6
-L(no_vmx):
-#else
-	li	r6,0
-#endif
-#if IS_IN (rtld)
-	li	r3,0
-	blr
-#elif defined SHARED
-	b	JUMPTARGET (__sigjmp_save_symbol)
-#else
-	mflr	r0
-	std	r0,FRAME_LR_SAVE(r1)
-	stdu	r1,-FRAME_MIN_SIZE(r1)
-	cfi_adjust_cfa_offset(FRAME_MIN_SIZE)
-	cfi_offset(lr,FRAME_LR_SAVE)
-	bl	JUMPTARGET (__sigjmp_save_symbol)
-	nop
-	ld	r0,FRAME_MIN_SIZE+FRAME_LR_SAVE(r1)
-	addi	r1,r1,FRAME_MIN_SIZE
-	mtlr	r0
-	blr
-#endif
-END (__sigsetjmp_symbol)
-
-#if defined SHARED && !IS_IN (rtld) && !defined __NO_VMX__
-/* When called from within libc we need a special version of __sigsetjmp
-   that saves r2 since the call won't go via a plt call stub.  See
-   bugz #269.  */
-ENTRY (__GI___sigsetjmp)
-	std r2,FRAME_TOC_SAVE(r1) /* Save the callers TOC in the save area.  */
-	CALL_MCOUNT 1
-	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
-END (__GI___sigsetjmp)
-#endif
diff --git a/sysdeps/powerpc/powerpc64/setjmp.S b/sysdeps/powerpc/powerpc64/setjmp.S
deleted file mode 100644
index 3f61d28203..0000000000
--- a/sysdeps/powerpc/powerpc64/setjmp.S
+++ /dev/null
@@ -1,61 +0,0 @@
-/* AltiVec (new) version of setjmp for PowerPC.
-   Copyright (C) 1995-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-symbols.h>
-#include <rtld-global-offsets.h>
-#include <shlib-compat.h>
-
-#if !IS_IN (libc)
-/* Build a non-versioned object for rtld-*.  */
-# define setjmp_symbol setjmp
-# define _setjmp_symbol _setjmp
-# define __sigsetjmp_symbol __sigsetjmp
-# define __sigjmp_save_symbol __sigjmp_save
-# include "setjmp-common.S"
-
-#else /* IS_IN (libc) */
-/* Build a versioned object for libc.  */
-versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4)
-versioned_symbol (libc, __vmx_setjmp, _setjmp, GLIBC_2_3_4)
-versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
-# define setjmp_symbol __vmxsetjmp
-# define _setjmp_symbol __vmx_setjmp
-# define __sigsetjmp_symbol __vmx__sigsetjmp
-# define __sigjmp_save_symbol __vmx__sigjmp_save
-# include "setjmp-common.S"
-strong_alias (__vmxsetjmp, __vmx__setjmp)
-strong_alias (__vmx__sigsetjmp, __setjmp)
-
-# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
-#  undef setjmp_symbol
-#  undef _setjmp_symbol
-#  undef __sigsetjmp_symbol
-#  undef __sigjmp_save_symbol
-#  undef JB_SIZE
-#  define __NO_VMX__
-compat_symbol (libc, __novmxsetjmp, setjmp, GLIBC_2_3)
-compat_symbol (libc, __novmx_setjmp,_setjmp, GLIBC_2_3);
-compat_symbol (libc, __novmx__sigsetjmp,__sigsetjmp, GLIBC_2_3)
-#  define setjmp_symbol __novmxsetjmp
-#  define _setjmp_symbol __novmx_setjmp
-#  define __sigsetjmp_symbol __novmx__sigsetjmp
-#  define __sigjmp_save_symbol __novmx__sigjmp_save
-#  include "setjmp-common.S"
-strong_alias (__novmxsetjmp, __novmx__setjmp)
-# endif
-#endif /* IS_IN (libc) */
diff --git a/sysdeps/powerpc/powerpc64/stackguard-macros.h b/sysdeps/powerpc/powerpc64/stackguard-macros.h
deleted file mode 100644
index e80a683e64..0000000000
--- a/sysdeps/powerpc/powerpc64/stackguard-macros.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <stdint.h>
-
-#define STACK_CHK_GUARD \
-  ({ uintptr_t x; asm ("ld %0,-28688(13)" : "=r" (x)); x; })
-
-#define POINTER_CHK_GUARD \
-  ({												\
-     uintptr_t x;										\
-     asm ("ld %0,%1(13)"										\
-	  : "=r" (x)										\
-	  : "i" (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))	\
-         );											\
-     x;												\
-   })
diff --git a/sysdeps/powerpc/powerpc64/start.S b/sysdeps/powerpc/powerpc64/start.S
deleted file mode 100644
index 937c39a740..0000000000
--- a/sysdeps/powerpc/powerpc64/start.S
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Startup code for programs linked with GNU libc.  PowerPC64 version.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file with other
-   programs, and to distribute those programs without any restriction
-   coming from the use of this file. (The GNU Lesser General Public
-   License restrictions do apply in other respects; for example, they
-   cover modification of the file, and distribution when not linked
-   into another program.)
-
-   Note that people who make modified versions of this file are not
-   obligated to grant this special exception for their modified
-   versions; it is their choice whether to do so. The GNU Lesser
-   General Public License gives permission to release a modified
-   version without this exception; this exception also makes it
-   possible to release a modified version which carries forward this
-   exception.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* We do not want .eh_frame info for crt1.o since crt1.o is linked
-   before crtbegin.o, the file defining __EH_FRAME_BEGIN__.  */
-#undef cfi_startproc
-#define cfi_startproc
-#undef cfi_endproc
-#define cfi_endproc
-
- /* These are the various addresses we require.  */
-#ifdef PIC
-	.section ".data.rel.ro.local","aw"
-#else
-	.section ".rodata"
-#endif
-	.align	3
-L(start_addresses):
-	.quad	0 /* was _SDA_BASE_  but not in 64-bit ABI*/
-/*     function descriptors so don't need JUMPTARGET */
-	.quad	main
-	.quad 	__libc_csu_init
-	.quad 	__libc_csu_fini
-
-	ASM_SIZE_DIRECTIVE(L(start_addresses))
-
-	.section	".toc","aw"
-.L01:
-	.tc	L(start_addresses)[TC],L(start_addresses)
-	.section ".text"
-ENTRY(_start)
- /* Save the stack pointer, in case we're statically linked under Linux.  */
-	mr	r9,r1
- /* Set up an initial stack frame, and clear the LR.  */
-	clrrdi	r1,r1,4
-	li	r0,0
-	stdu	r1,-128(r1)
-	mtlr	r0
-	std	r0,0(r1)
-
- /* put the address of start_addresses in r8...  **
-** PPC64 ABI uses R13 for thread local, so we leave it alone */
-	ld	r8,.L01@toc(r2)
-
- /* and continue in libc-start, in glibc.  */
-	b	JUMPTARGET(__libc_start_main)
-/* The linker needs this nop to recognize that it's OK to call via a
-   TOC adjusting stub.  */
-	nop
-
-END(_start)
-
-/* Define a symbol for the first piece of initialized data.  */
-	.section ".data"
-	.globl	__data_start
-__data_start:
-	.long	0
-weak_alias (__data_start, data_start)
diff --git a/sysdeps/powerpc/powerpc64/strchr.S b/sysdeps/powerpc/powerpc64/strchr.S
deleted file mode 100644
index cbfcc14cfe..0000000000
--- a/sysdeps/powerpc/powerpc64/strchr.S
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Optimized strchr implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how this works.  */
-
-/* char * [r3] strchr (const char *s [r3] , int c [r4] )  */
-
-#ifndef STRCHR
-# define STRCHR strchr
-#endif
-
-ENTRY (STRCHR)
-	CALL_MCOUNT 2
-
-#define rTMP1	r0
-#define rRTN	r3	/* outgoing result */
-#define rSTR	r8	/* current word pointer */
-#define rCHR	r4	/* byte we're looking for, spread over the whole word */
-#define rWORD	r5	/* the current word */
-#define rCLZB	rCHR	/* leading zero byte count */
-#define rFEFE	r6	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r7	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rTMP2	r9
-#define rIGN	r10	/* number of bits we should ignore in the first word */
-#define rMASK	r11	/* mask with the bits to ignore set to 0 */
-#define rTMP3	r12
-#define rTMP4	rIGN
-#define rTMP5	rMASK
-
-	dcbt	0,rRTN
-	insrdi	rCHR, rCHR, 8, 48
-	li	rMASK, -1
-	insrdi	rCHR, rCHR, 16, 32
-	rlwinm	rIGN, rRTN, 3, 26, 28
-	insrdi	rCHR, rCHR, 32, 0
-	lis	rFEFE, -0x101
-	lis	r7F7F, 0x7f7f
-	clrrdi	rSTR, rRTN, 3
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	sldi	rTMP1, rFEFE, 32
-	insrdi	r7F7F, r7F7F, 32, 0
-	add	rFEFE, rFEFE, rTMP1
-/* Test the first (partial?) word.  */
-	ld	rWORD, 0(rSTR)
-#ifdef __LITTLE_ENDIAN__
-	sld	rMASK, rMASK, rIGN
-#else
-	srd	rMASK, rMASK, rIGN
-#endif
-	orc	rWORD, rWORD, rMASK
-	add	rTMP1, rFEFE, rWORD
-	nor	rTMP2, r7F7F, rWORD
-	and.	rTMP4, rTMP1, rTMP2
-	xor	rTMP3, rCHR, rWORD
-	orc	rTMP3, rTMP3, rMASK
-	b	L(loopentry)
-
-/* The loop.  */
-
-L(loop):
-	ldu	rWORD, 8(rSTR)
-	and.	rTMP5, rTMP1, rTMP2
-/* Test for 0.	*/
-	add	rTMP1, rFEFE, rWORD /* x - 0x01010101.  */
-	nor	rTMP2, r7F7F, rWORD /* ~(x | 0x7f7f7f7f) == ~x & 0x80808080.  */
-	bne	L(foundit)
-	and.	rTMP4, rTMP1, rTMP2 /* (x - 0x01010101) & ~x & 0x80808080.  */
-/* Start test for the bytes we're looking for.  */
-	xor	rTMP3, rCHR, rWORD
-L(loopentry):
-	add	rTMP1, rFEFE, rTMP3
-	nor	rTMP2, r7F7F, rTMP3
-	beq	L(loop)
-
-/* There is a zero byte in the word, but may also be a matching byte (either
-   before or after the zero byte).  In fact, we may be looking for a
-   zero byte, in which case we return a match.  */
-	and.	rTMP5, rTMP1, rTMP2
-	li	rRTN, 0
-	beqlr
-/* At this point:
-   rTMP5 bytes are 0x80 for each match of c, 0 otherwise.
-   rTMP4 bytes are 0x80 for each match of 0, 0 otherwise.
-   But there may be false matches in the next most significant byte from
-   a true match due to carries.  This means we need to recalculate the
-   matches using a longer method for big-endian.  */
-#ifdef __LITTLE_ENDIAN__
-	addi	rTMP1, rTMP5, -1
-	andc	rTMP1, rTMP1, rTMP5
-	cntlzd	rCLZB, rTMP1
-	addi	rTMP2, rTMP4, -1
-	andc	rTMP2, rTMP2, rTMP4
-	cmpld	rTMP1, rTMP2
-	bgtlr
-	subfic	rCLZB, rCLZB, 64-7
-#else
-/* I think we could reduce this by two instructions by keeping the "nor"
-   results from the loop for reuse here.  See strlen.S tail.  Similarly
-   one instruction could be pruned from L(foundit).  */
-	and	rFEFE, r7F7F, rWORD
-	or	rTMP5, r7F7F, rWORD
-	and	rTMP1, r7F7F, rTMP3
-	or	rTMP4, r7F7F, rTMP3
-	add	rFEFE, rFEFE, r7F7F
-	add	rTMP1, rTMP1, r7F7F
-	nor	rWORD, rTMP5, rFEFE
-	nor	rTMP2, rTMP4, rTMP1
-	cntlzd	rCLZB, rTMP2
-	cmpld	rWORD, rTMP2
-	bgtlr
-#endif
-	srdi	rCLZB, rCLZB, 3
-	add	rRTN, rSTR, rCLZB
-	blr
-
-L(foundit):
-#ifdef __LITTLE_ENDIAN__
-	addi	rTMP1, rTMP5, -1
-	andc	rTMP1, rTMP1, rTMP5
-	cntlzd	rCLZB, rTMP1
-	subfic	rCLZB, rCLZB, 64-7-64
-	sradi	rCLZB, rCLZB, 3
-#else
-	and	rTMP1, r7F7F, rTMP3
-	or	rTMP4, r7F7F, rTMP3
-	add	rTMP1, rTMP1, r7F7F
-	nor	rTMP2, rTMP4, rTMP1
-	cntlzd	rCLZB, rTMP2
-	subi	rSTR, rSTR, 8
-	srdi	rCLZB, rCLZB, 3
-#endif
-	add	rRTN, rSTR, rCLZB
-	blr
-END (STRCHR)
-
-weak_alias (strchr, index)
-libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/powerpc/powerpc64/strcmp.S b/sysdeps/powerpc/powerpc64/strcmp.S
deleted file mode 100644
index ab5f8c231c..0000000000
--- a/sysdeps/powerpc/powerpc64/strcmp.S
+++ /dev/null
@@ -1,180 +0,0 @@
-/* Optimized strcmp implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
-
-#ifndef STRCMP
-# define STRCMP strcmp
-#endif
-
-EALIGN (STRCMP, 4, 0)
-	CALL_MCOUNT 2
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rWORD1	r5	/* current word in s1 */
-#define rWORD2	r6	/* current word in s2 */
-#define rFEFE	r7	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r8	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rNEG	r9	/* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
-#define rBITDIF	r10	/* bits that differ in s1 & s2 words */
-#define rTMP	r11
-
-	dcbt	0,rSTR1
-	or	rTMP, rSTR2, rSTR1
-	dcbt	0,rSTR2
-	clrldi.	rTMP, rTMP, 61
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-	lis	r7F7F, 0x7f7f
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	sldi	rTMP, rFEFE, 32
-	insrdi	r7F7F, r7F7F, 32, 0
-	add	rFEFE, rFEFE, rTMP
-	b	L(g1)
-
-L(g0):	ldu	rWORD1, 8(rSTR1)
-	bne	cr1, L(different)
-	ldu	rWORD2, 8(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	and.	rTMP, rTMP, rNEG
-	cmpd	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	addi    rTMP2, rTMP, -1
-	beq	cr1, L(equal)
-	andc    rTMP2, rTMP2, rTMP
-	rldimi	rTMP2, rTMP2, 1, 0
-	and	rWORD2, rWORD2, rTMP2	/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	cmpd	cr1, rWORD1, rWORD2
-	beq	cr1, L(equal)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzd	rBITDIF, rBITDIF
-	cntlzd	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpd	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	blt-	cr1, L(equal)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(unaligned):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	b	L(u1)
-
-L(u0):	lbzu	rWORD1, 1(rSTR1)
-	bne-	L(u4)
-	lbzu	rWORD2, 1(rSTR2)
-L(u1):	cmpwi	cr1, rWORD1, 0
-	beq-	cr1, L(u3)
-	cmpd	rWORD1, rWORD2
-	bne-	L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	lbzu	rWORD2, 1(rSTR2)
-	cmpdi	cr1, rWORD1, 0
-	cmpd	rWORD1, rWORD2
-	bne+	cr1, L(u0)
-L(u3):	sub	rRTN, rWORD1, rWORD2
-	blr
-L(u4):	lbz	rWORD1, -1(rSTR1)
-	sub	rRTN, rWORD1, rWORD2
-	blr
-END (STRCMP)
-libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/strlen.S b/sysdeps/powerpc/powerpc64/strlen.S
deleted file mode 100644
index 1466624c6a..0000000000
--- a/sysdeps/powerpc/powerpc64/strlen.S
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Optimized strlen implementation for PowerPC64.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* The algorithm here uses the following techniques:
-
-   1) Given a word 'x', we can test to see if it contains any 0 bytes
-      by subtracting 0x01010101, and seeing if any of the high bits of each
-      byte changed from 0 to 1. This works because the least significant
-      0 byte must have had no incoming carry (otherwise it's not the least
-      significant), so it is 0x00 - 0x01 == 0xff. For all other
-      byte values, either they have the high bit set initially, or when
-      1 is subtracted you get a value in the range 0x00-0x7f, none of which
-      have their high bit set. The expression here is
-      (x + 0xfefefeff) & ~(x | 0x7f7f7f7f), which gives 0x00000000 when
-      there were no 0x00 bytes in the word.  You get 0x80 in bytes that
-      match, but possibly false 0x80 matches in the next more significant
-      byte to a true match due to carries.  For little-endian this is
-      of no consequence since the least significant match is the one
-      we're interested in, but big-endian needs method 2 to find which
-      byte matches.
-
-   2) Given a word 'x', we can test to see _which_ byte was zero by
-      calculating ~(((x & 0x7f7f7f7f) + 0x7f7f7f7f) | x | 0x7f7f7f7f).
-      This produces 0x80 in each byte that was zero, and 0x00 in all
-      the other bytes. The '| 0x7f7f7f7f' clears the low 7 bits in each
-      byte, and the '| x' part ensures that bytes with the high bit set
-      produce 0x00. The addition will carry into the high bit of each byte
-      iff that byte had one of its low 7 bits set. We can then just see
-      which was the most significant bit set and divide by 8 to find how
-      many to add to the index.
-      This is from the book 'The PowerPC Compiler Writer's Guide',
-      by Steve Hoxey, Faraydon Karim, Bill Hay and Hank Warren.
-
-   We deal with strings not aligned to a word boundary by taking the
-   first word and ensuring that bytes not part of the string
-   are treated as nonzero. To allow for memory latency, we unroll the
-   loop a few times, being careful to ensure that we do not read ahead
-   across cache line boundaries.
-
-   Questions to answer:
-   1) How long are strings passed to strlen? If they're often really long,
-   we should probably use cache management instructions and/or unroll the
-   loop more. If they're often quite short, it might be better to use
-   fact (2) in the inner loop than have to recalculate it.
-   2) How popular are bytes with the high bit set? If they are very rare,
-   on some processors it might be useful to use the simpler expression
-   ~((x - 0x01010101) | 0x7f7f7f7f) (that is, on processors with only one
-   ALU), but this fails when any character has its high bit set.
-
-   Answer:
-   1) Added a Data Cache Block Touch early to prefetch the first 128
-   byte cache line. Adding dcbt instructions to the loop would not be
-   effective since most strings will be shorter than the cache line.  */
-
-/* Some notes on register usage: Under the SVR4 ABI, we can use registers
-   0 and 3 through 12 (so long as we don't call any procedures) without
-   saving them. We can also use registers 14 through 31 if we save them.
-   We can't use r1 (it's the stack pointer), r2 nor r13 because the user
-   program may expect them to hold their usual value if we get sent
-   a signal. Integer parameters are passed in r3 through r10.
-   We can use condition registers cr0, cr1, cr5, cr6, and cr7 without saving
-   them, the others we must save.  */
-
-/* int [r3] strlen (char *s [r3])  */
-
-#ifndef STRLEN
-# define STRLEN strlen
-#endif
-
-ENTRY (STRLEN)
-	CALL_MCOUNT 1
-
-#define rTMP4	r0
-#define rRTN	r3	/* incoming STR arg, outgoing result */
-#define rSTR	r4	/* current string position */
-#define rPADN	r5	/* number of padding bits we prepend to the
-			   string to make it start at a word boundary */
-#define rFEFE	r6	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r7	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rWORD1	r8	/* current string doubleword */
-#define rWORD2	r9	/* next string doubleword */
-#define rMASK	r9	/* mask for first string doubleword */
-#define rTMP1	r10
-#define rTMP2	r11
-#define rTMP3	r12
-
-	dcbt	0,rRTN
-	clrrdi	rSTR, rRTN, 3
-	lis	r7F7F, 0x7f7f
-	rlwinm	rPADN, rRTN, 3, 26, 28
-	ld	rWORD1, 0(rSTR)
-	addi	r7F7F, r7F7F, 0x7f7f
-	li	rMASK, -1
-	insrdi	r7F7F, r7F7F, 32, 0
-/* We use method (2) on the first two doublewords, because rFEFE isn't
-   required which reduces setup overhead.  Also gives a faster return
-   for small strings on big-endian due to needing to recalculate with
-   method (2) anyway.  */
-#ifdef __LITTLE_ENDIAN__
-	sld	rMASK, rMASK, rPADN
-#else
-	srd	rMASK, rMASK, rPADN
-#endif
-	and	rTMP1, r7F7F, rWORD1
-	or	rTMP2, r7F7F, rWORD1
-	lis	rFEFE, -0x101
-	add	rTMP1, rTMP1, r7F7F
-	addi	rFEFE, rFEFE, -0x101
-	nor	rTMP3, rTMP2, rTMP1
-	and.	rTMP3, rTMP3, rMASK
-	mtcrf	0x01, rRTN
-	bne	L(done0)
-	sldi	rTMP1, rFEFE, 32
-	add	rFEFE, rFEFE, rTMP1
-/* Are we now aligned to a doubleword boundary?  */
-	bt	28, L(loop)
-
-/* Handle second doubleword of pair.  */
-/* Perhaps use method (1) here for little-endian, saving one instruction?  */
-	ldu	rWORD1, 8(rSTR)
-	and	rTMP1, r7F7F, rWORD1
-	or	rTMP2, r7F7F, rWORD1
-	add	rTMP1, rTMP1, r7F7F
-	nor.	rTMP3, rTMP2, rTMP1
-	bne	L(done0)
-
-/* The loop.  */
-
-L(loop):
-	ld	rWORD1, 8(rSTR)
-	ldu	rWORD2, 16(rSTR)
-	add	rTMP1, rFEFE, rWORD1
-	nor	rTMP2, r7F7F, rWORD1
-	and.	rTMP1, rTMP1, rTMP2
-	add	rTMP3, rFEFE, rWORD2
-	nor	rTMP4, r7F7F, rWORD2
-	bne	L(done1)
-	and.	rTMP3, rTMP3, rTMP4
-	beq	L(loop)
-
-#ifndef __LITTLE_ENDIAN__
-	and	rTMP1, r7F7F, rWORD2
-	add	rTMP1, rTMP1, r7F7F
-	andc	rTMP3, rTMP4, rTMP1
-	b	L(done0)
-
-L(done1):
-	and	rTMP1, r7F7F, rWORD1
-	subi	rSTR, rSTR, 8
-	add	rTMP1, rTMP1, r7F7F
-	andc	rTMP3, rTMP2, rTMP1
-
-/* When we get to here, rSTR points to the first doubleword in the string that
-   contains a zero byte, and rTMP3 has 0x80 for bytes that are zero, and 0x00
-   otherwise.  */
-L(done0):
-	cntlzd	rTMP3, rTMP3
-	subf	rTMP1, rRTN, rSTR
-	srdi	rTMP3, rTMP3, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-#else
-
-L(done0):
-	addi	rTMP1, rTMP3, -1	/* Form a mask from trailing zeros.  */
-	andc	rTMP1, rTMP1, rTMP3
-	cntlzd	rTMP1, rTMP1		/* Count bits not in the mask.  */
-	subf	rTMP3, rRTN, rSTR
-	subfic	rTMP1, rTMP1, 64-7
-	srdi	rTMP1, rTMP1, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-
-L(done1):
-	addi	rTMP3, rTMP1, -1
-	andc	rTMP3, rTMP3, rTMP1
-	cntlzd	rTMP3, rTMP3
-	subf	rTMP1, rRTN, rSTR
-	subfic	rTMP3, rTMP3, 64-7-64
-	sradi	rTMP3, rTMP3, 3
-	add	rRTN, rTMP1, rTMP3
-	blr
-#endif
-
-END (STRLEN)
-libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc64/strncmp.S b/sysdeps/powerpc/powerpc64/strncmp.S
deleted file mode 100644
index 076599804a..0000000000
--- a/sysdeps/powerpc/powerpc64/strncmp.S
+++ /dev/null
@@ -1,210 +0,0 @@
-/* Optimized strcmp implementation for PowerPC64.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-/* See strlen.s for comments on how the end-of-string testing works.  */
-
-/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
-
-#ifndef STRNCMP
-# define STRNCMP strncmp
-#endif
-
-EALIGN (STRNCMP, 4, 0)
-	CALL_MCOUNT 3
-
-#define rTMP2	r0
-#define rRTN	r3
-#define rSTR1	r3	/* first string arg */
-#define rSTR2	r4	/* second string arg */
-#define rN	r5	/* max string length */
-#define rWORD1	r6	/* current word in s1 */
-#define rWORD2	r7	/* current word in s2 */
-#define rFEFE	r8	/* constant 0xfefefefefefefeff (-0x0101010101010101) */
-#define r7F7F	r9	/* constant 0x7f7f7f7f7f7f7f7f */
-#define rNEG	r10	/* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
-#define rBITDIF	r11	/* bits that differ in s1 & s2 words */
-#define rTMP	r12
-
-	dcbt	0,rSTR1
-	or	rTMP, rSTR2, rSTR1
-	lis	r7F7F, 0x7f7f
-	dcbt	0,rSTR2
-	clrldi.	rTMP, rTMP, 61
-	cmpldi	cr1, rN, 0
-	lis	rFEFE, -0x101
-	bne	L(unaligned)
-/* We are doubleword aligned so set up for two loops.  first a double word
-   loop, then fall into the byte loop if any residual.  */
-	srdi.	rTMP, rN, 3
-	clrldi	rN, rN, 61
-	addi	rFEFE, rFEFE, -0x101
-	addi	r7F7F, r7F7F, 0x7f7f
-	cmpldi	cr1, rN, 0
-	beq	L(unaligned)
-
-	mtctr	rTMP	/* Power4 wants mtctr 1st in dispatch group.  */
-	ld	rWORD1, 0(rSTR1)
-	ld	rWORD2, 0(rSTR2)
-	sldi	rTMP, rFEFE, 32
-	insrdi	r7F7F, r7F7F, 32, 0
-	add	rFEFE, rFEFE, rTMP
-	b	L(g1)
-
-L(g0):
-	ldu	rWORD1, 8(rSTR1)
-	bne-	cr1, L(different)
-	ldu	rWORD2, 8(rSTR2)
-L(g1):	add	rTMP, rFEFE, rWORD1
-	nor	rNEG, r7F7F, rWORD1
-	bdz	L(tail)
-	and.	rTMP, rTMP, rNEG
-	cmpd	cr1, rWORD1, rWORD2
-	beq+	L(g0)
-
-/* OK. We've hit the end of the string. We need to be careful that
-   we don't compare two strings as different because of gunk beyond
-   the end of the strings...  */
-
-#ifdef __LITTLE_ENDIAN__
-L(endstring):
-	addi    rTMP2, rTMP, -1
-	beq	cr1, L(equal)
-	andc    rTMP2, rTMP2, rTMP
-	rldimi	rTMP2, rTMP2, 1, 0
-	and	rWORD2, rWORD2, rTMP2	/* Mask off gunk.  */
-	and	rWORD1, rWORD1, rTMP2
-	cmpd	cr1, rWORD1, rWORD2
-	beq	cr1, L(equal)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor	rBITDIF, rWORD1, rWORD2	/* rBITDIF has bits that differ.  */
-	neg	rNEG, rBITDIF
-	and	rNEG, rNEG, rBITDIF	/* rNEG has LS bit that differs.  */
-	cntlzd	rNEG, rNEG		/* bitcount of the bit.  */
-	andi.	rNEG, rNEG, 56		/* bitcount to LS byte that differs. */
-	sld	rWORD1, rWORD1, rNEG	/* shift left to clear MS bytes.  */
-	sld	rWORD2, rWORD2, rNEG
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-
-#else
-L(endstring):
-	and	rTMP, r7F7F, rWORD1
-	beq	cr1, L(equal)
-	add	rTMP, rTMP, r7F7F
-	xor.	rBITDIF, rWORD1, rWORD2
-	andc	rNEG, rNEG, rTMP
-	blt-	L(highbit)
-	cntlzd	rBITDIF, rBITDIF
-	cntlzd	rNEG, rNEG
-	addi	rNEG, rNEG, 7
-	cmpd	cr1, rNEG, rBITDIF
-	sub	rRTN, rWORD1, rWORD2
-	blt-	cr1, L(equal)
-	sradi	rRTN, rRTN, 63		/* must return an int.  */
-	ori	rRTN, rRTN, 1
-	blr
-L(equal):
-	li	rRTN, 0
-	blr
-
-L(different):
-	ld	rWORD1, -8(rSTR1)
-	xor.	rBITDIF, rWORD1, rWORD2
-	sub	rRTN, rWORD1, rWORD2
-	blt-	L(highbit)
-	sradi	rRTN, rRTN, 63
-	ori	rRTN, rRTN, 1
-	blr
-L(highbit):
-	sradi	rRTN, rWORD2, 63
-	ori	rRTN, rRTN, 1
-	blr
-#endif
-
-/* Oh well.  In this case, we just do a byte-by-byte comparison.  */
-	.align 4
-L(tail):
-	and.	rTMP, rTMP, rNEG
-	cmpd	cr1, rWORD1, rWORD2
-	bne-	L(endstring)
-	addi	rSTR1, rSTR1, 8
-	bne-	cr1, L(different)
-	addi	rSTR2, rSTR2, 8
-	cmpldi	cr1, rN, 0
-L(unaligned):
-	mtctr   rN	/* Power4 wants mtctr 1st in dispatch group */
-	bgt	cr1, L(uz)
-L(ux):
-	li	rRTN, 0
-	blr
-	.align 4
-L(uz):
-	lbz	rWORD1, 0(rSTR1)
-	lbz	rWORD2, 0(rSTR2)
-	nop
-	b	L(u1)
-L(u0):
-	lbzu	rWORD2, 1(rSTR2)
-L(u1):
-	bdz	L(u3)
-	cmpdi	cr1, rWORD1, 0
-	cmpd	rWORD1, rWORD2
-	beq-	cr1, L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	bne-	L(u2)
-	lbzu	rWORD2, 1(rSTR2)
-	bdz	L(u3)
-	cmpdi	cr1, rWORD1, 0
-	cmpd	rWORD1, rWORD2
-	bne-	L(u3)
-	lbzu	rWORD1, 1(rSTR1)
-	bne+	cr1, L(u0)
-
-L(u2):	lbzu	rWORD1, -1(rSTR1)
-L(u3):	sub	rRTN, rWORD1, rWORD2
-	blr
-END (STRNCMP)
-libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/submul_1.S b/sysdeps/powerpc/powerpc64/submul_1.S
deleted file mode 100644
index df93b4c3f4..0000000000
--- a/sysdeps/powerpc/powerpc64/submul_1.S
+++ /dev/null
@@ -1,21 +0,0 @@
-/* PowerPC64 __mpn_addmul_1 -- Multiply a limb vector with a limb and subtract
-   the result to a second limb vector.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define USE_AS_SUBMUL
-#include "addmul_1.S"
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
deleted file mode 100644
index db7c1d78b5..0000000000
--- a/sysdeps/powerpc/powerpc64/sysdep.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Assembly macros for 64-bit PowerPC.
-   Copyright (C) 2002-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdeps/powerpc/sysdep.h>
-
-#ifdef __ASSEMBLER__
-
-/* Stack frame offsets.  */
-#if _CALL_ELF != 2
-#define FRAME_MIN_SIZE		112
-#define FRAME_MIN_SIZE_PARM	112
-#define FRAME_BACKCHAIN		0
-#define FRAME_CR_SAVE		8
-#define FRAME_LR_SAVE		16
-#define FRAME_TOC_SAVE		40
-#define FRAME_PARM_SAVE		48
-#define FRAME_PARM1_SAVE	48
-#define FRAME_PARM2_SAVE	56
-#define FRAME_PARM3_SAVE	64
-#define FRAME_PARM4_SAVE	72
-#define FRAME_PARM5_SAVE	80
-#define FRAME_PARM6_SAVE	88
-#define FRAME_PARM7_SAVE	96
-#define FRAME_PARM8_SAVE	104
-#define FRAME_PARM9_SAVE	112
-#else
-#define FRAME_MIN_SIZE		32
-#define FRAME_MIN_SIZE_PARM	96
-#define FRAME_BACKCHAIN		0
-#define FRAME_CR_SAVE		8
-#define FRAME_LR_SAVE		16
-#define FRAME_TOC_SAVE		24
-#define FRAME_PARM_SAVE		32
-#define FRAME_PARM1_SAVE	32
-#define FRAME_PARM2_SAVE	40
-#define FRAME_PARM3_SAVE	48
-#define FRAME_PARM4_SAVE	56
-#define FRAME_PARM5_SAVE	64
-#define FRAME_PARM6_SAVE	72
-#define FRAME_PARM7_SAVE	80
-#define FRAME_PARM8_SAVE	88
-#define FRAME_PARM9_SAVE	96
-#endif
-
-/* Support macros for CALL_MCOUNT.  */
-#if _CALL_ELF == 2
-#define call_mcount_parm_offset (-64)
-#else
-#define call_mcount_parm_offset FRAME_PARM_SAVE
-#endif
-	.macro SAVE_ARG NARG
-	.if \NARG
-	SAVE_ARG \NARG-1
-	std	2+\NARG,call_mcount_parm_offset-8+8*(\NARG)(1)
-	.endif
-	.endm
-
-	.macro REST_ARG NARG
-	.if \NARG
-	REST_ARG \NARG-1
-	ld	2+\NARG,FRAME_MIN_SIZE_PARM+call_mcount_parm_offset-8+8*(\NARG)(1)
-	.endif
-	.endm
-
-	.macro CFI_SAVE_ARG NARG
-	.if \NARG
-	CFI_SAVE_ARG \NARG-1
-	cfi_offset(2+\NARG,call_mcount_parm_offset-8+8*(\NARG))
-	.endif
-	.endm
-
-	.macro CFI_REST_ARG NARG
-	.if \NARG
-	CFI_REST_ARG \NARG-1
-	cfi_restore(2+\NARG)
-	.endif
-	.endm
-
-/* If compiled for profiling, call `_mcount' at the start of each function.
-   see ppc-mcount.S for more details.  */
-	.macro CALL_MCOUNT NARG
-#ifdef	PROF
-	mflr	r0
-	SAVE_ARG \NARG
-	std	r0,FRAME_LR_SAVE(r1)
-	stdu	r1,-FRAME_MIN_SIZE_PARM(r1)
-	cfi_adjust_cfa_offset(FRAME_MIN_SIZE_PARM)
-	cfi_offset(lr,FRAME_LR_SAVE)
-	CFI_SAVE_ARG \NARG
-	bl	JUMPTARGET (_mcount)
-#ifndef SHARED
-	nop
-#endif
-	ld	r0,FRAME_MIN_SIZE_PARM+FRAME_LR_SAVE(r1)
-	REST_ARG \NARG
-	mtlr	r0
-	addi	r1,r1,FRAME_MIN_SIZE_PARM
-	cfi_adjust_cfa_offset(-FRAME_MIN_SIZE_PARM)
-	cfi_restore(lr)
-	CFI_REST_ARG \NARG
-#endif
-	.endm
-
-#if _CALL_ELF != 2
-
-/* Macro to prepare for calling via a function pointer.  */
-	.macro PPC64_LOAD_FUNCPTR PTR
-	ld      r12,0(\PTR)
-	ld      r2,8(\PTR)
-	mtctr   r12
-	ld      r11,16(\PTR)
-	.endm
-
-#ifdef USE_PPC64_OVERLAPPING_OPD
-# define OPD_ENT(name)	.quad BODY_LABEL (name), .TOC.@tocbase
-#else
-# define OPD_ENT(name)	.quad BODY_LABEL (name), .TOC.@tocbase, 0
-#endif
-
-#define ENTRY_1(name)	\
-	.type BODY_LABEL(name),@function;	\
-	.globl name;				\
-	.section ".opd","aw";			\
-	.align 3;				\
-name##: OPD_ENT (name);				\
-	.previous;
-
-#define DOT_LABEL(X) X
-#define BODY_LABEL(X) .LY##X
-#define ENTRY_2(name)	\
-	.type name,@function;			\
-	ENTRY_1(name)
-#define END_2(name)	\
-	.size name,.-BODY_LABEL(name);		\
-	.size BODY_LABEL(name),.-BODY_LABEL(name);
-#define LOCALENTRY(name)
-
-#else /* _CALL_ELF */
-
-/* Macro to prepare for calling via a function pointer.  */
-	.macro PPC64_LOAD_FUNCPTR PTR
-	mr	r12,\PTR
-	mtctr   r12
-	.endm
-
-#define DOT_LABEL(X) X
-#define BODY_LABEL(X) X
-#define ENTRY_2(name)	\
-	.globl name;				\
-	.type name,@function;
-#define END_2(name)	\
-	.size name,.-name;
-#define LOCALENTRY(name)	\
-1:      addis	r2,r12,.TOC.-1b@ha; \
-        addi	r2,r2,.TOC.-1b@l; \
-	.localentry name,.-name;
-
-#endif /* _CALL_ELF */
-
-#define ENTRY(name)	\
-	.section	".text";		\
-	ENTRY_2(name)				\
-	.align ALIGNARG(2);			\
-BODY_LABEL(name):				\
-	cfi_startproc;				\
-	LOCALENTRY(name)
-
-#define EALIGN_W_0  /* No words to insert.  */
-#define EALIGN_W_1  nop
-#define EALIGN_W_2  nop;nop
-#define EALIGN_W_3  nop;nop;nop
-#define EALIGN_W_4  EALIGN_W_3;nop
-#define EALIGN_W_5  EALIGN_W_4;nop
-#define EALIGN_W_6  EALIGN_W_5;nop
-#define EALIGN_W_7  EALIGN_W_6;nop
-
-/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
-   past a 2^alignt boundary.  */
-#define EALIGN(name, alignt, words) \
-	.section	".text";		\
-	ENTRY_2(name)				\
-	.align ALIGNARG(alignt);		\
-	EALIGN_W_##words;			\
-BODY_LABEL(name):				\
-	cfi_startproc;				\
-	LOCALENTRY(name)
-
-/* Local labels stripped out by the linker.  */
-#undef L
-#define L(x) .L##x
-
-#define tostring(s) #s
-#define stringify(s) tostring(s)
-#define XGLUE(a,b) a##b
-#define GLUE(a,b) XGLUE(a,b)
-#define LT_LABEL(name) GLUE(.LT,name)
-#define LT_LABELSUFFIX(name,suffix) GLUE(GLUE(.LT,name),suffix)
-
-/* Support Traceback tables */
-#define TB_ASM			0x000c000000000000
-#define TB_GLOBALLINK		0x0000800000000000
-#define TB_IS_EPROL		0x0000400000000000
-#define TB_HAS_TBOFF		0x0000200000000000
-#define TB_INT_PROC		0x0000100000000000
-#define TB_HAS_CTL		0x0000080000000000
-#define TB_TOCLESS		0x0000040000000000
-#define TB_FP_PRESENT		0x0000020000000000
-#define TB_LOG_ABORT		0x0000010000000000
-#define TB_INT_HANDL		0x0000008000000000
-#define TB_NAME_PRESENT		0x0000004000000000
-#define TB_USES_ALLOCA		0x0000002000000000
-#define TB_SAVES_CR		0x0000000200000000
-#define TB_SAVES_LR		0x0000000100000000
-#define TB_STORES_BC		0x0000000080000000
-#define TB_FIXUP		0x0000000040000000
-#define TB_FP_SAVED(fprs)	(((fprs) & 0x3f) << 24)
-#define TB_GPR_SAVED(gprs)	(((fprs) & 0x3f) << 16)
-#define TB_FIXEDPARMS(parms)	(((parms) & 0xff) << 8)
-#define TB_FLOATPARMS(parms)	(((parms) & 0x7f) << 1)
-#define TB_PARMSONSTK		0x0000000000000001
-
-#define PPC_HIGHER(v) 		(((v) >> 32) & 0xffff)
-#define TB_DEFAULT		TB_ASM | TB_HAS_TBOFF | TB_NAME_PRESENT
-
-#define TRACEBACK(name) \
-LT_LABEL(name): ; \
-	.long	0 ; \
-	.quad	TB_DEFAULT ; \
-	.long	LT_LABEL(name)-BODY_LABEL(name) ; \
-	.short	LT_LABELSUFFIX(name,_name_end)-LT_LABELSUFFIX(name,_name_start) ; \
-LT_LABELSUFFIX(name,_name_start): ;\
-	.ascii	stringify(name) ; \
-LT_LABELSUFFIX(name,_name_end): ; \
-	.align	2 ;
-
-#define TRACEBACK_MASK(name,mask) \
-LT_LABEL(name): ; \
-	.long	0 ; \
-	.quad	TB_DEFAULT | mask ; \
-	.long	LT_LABEL(name)-BODY_LABEL(name) ; \
-	.short	LT_LABELSUFFIX(name,_name_end)-LT_LABELSUFFIX(name,_name_start) ; \
-LT_LABELSUFFIX(name,_name_start): ;\
-	.ascii	stringify(name) ; \
-LT_LABELSUFFIX(name,_name_end): ; \
-	.align	2 ;
-
-/* END generates Traceback tables */
-#undef	END
-#define END(name) \
-  cfi_endproc;			\
-  TRACEBACK(name)		\
-  END_2(name)
-
-/* This form supports more informative traceback tables */
-#define END_GEN_TB(name,mask)	\
-  cfi_endproc;			\
-  TRACEBACK_MASK(name,mask)	\
-  END_2(name)
-
-#if !IS_IN(rtld) && defined (ENABLE_LOCK_ELISION)
-# define ABORT_TRANSACTION \
-    cmpdi    13,0;		\
-    beq      1f;		\
-    lwz      0,TM_CAPABLE(13);	\
-    cmpwi    0,0;		\
-    beq	     1f;		\
-    li       11,_ABORT_SYSCALL;	\
-    tabort.  11;		\
-    .align 4;                   \
-1:
-#else
-# define ABORT_TRANSACTION
-#endif
-
-#define DO_CALL(syscall) \
-    ABORT_TRANSACTION \
-    li 0,syscall; \
-    sc
-
-/* ppc64 is always PIC */
-#undef JUMPTARGET
-#define JUMPTARGET(name) DOT_LABEL(name)
-
-#define PSEUDO(name, syscall_name, args) \
-  .section ".text";	\
-  ENTRY (name) \
-  DO_CALL (SYS_ify (syscall_name));
-
-#ifdef SHARED
-#define TAIL_CALL_SYSCALL_ERROR \
-    b JUMPTARGET(__syscall_error)
-#else
-/* Static version might be linked into a large app with a toc exceeding
-   64k.  We can't put a toc adjusting stub on a plain branch, so can't
-   tail call __syscall_error.  */
-#define TAIL_CALL_SYSCALL_ERROR \
-    .ifdef .Local_syscall_error; \
-    b .Local_syscall_error; \
-    .else; \
-.Local_syscall_error: \
-    mflr 0; \
-    std 0,FRAME_LR_SAVE(1); \
-    stdu 1,-FRAME_MIN_SIZE(1); \
-    cfi_adjust_cfa_offset(FRAME_MIN_SIZE); \
-    cfi_offset(lr,FRAME_LR_SAVE); \
-    bl JUMPTARGET(__syscall_error); \
-    nop; \
-    ld 0,FRAME_MIN_SIZE+FRAME_LR_SAVE(1); \
-    addi 1,1,FRAME_MIN_SIZE; \
-    cfi_adjust_cfa_offset(-FRAME_MIN_SIZE); \
-    mtlr 0; \
-    cfi_restore(lr); \
-    blr; \
-    .endif
-#endif
-
-#define PSEUDO_RET \
-    bnslr+; \
-    TAIL_CALL_SYSCALL_ERROR
-
-#define ret PSEUDO_RET
-
-#undef	PSEUDO_END
-#define	PSEUDO_END(name) \
-  END (name)
-
-#define PSEUDO_NOERRNO(name, syscall_name, args) \
-  .section ".text";	\
-  ENTRY (name) \
-  DO_CALL (SYS_ify (syscall_name));
-
-#define PSEUDO_RET_NOERRNO \
-    blr
-
-#define ret_NOERRNO PSEUDO_RET_NOERRNO
-
-#undef	PSEUDO_END_NOERRNO
-#define	PSEUDO_END_NOERRNO(name) \
-  END (name)
-
-#define PSEUDO_ERRVAL(name, syscall_name, args) \
-  .section ".text";	\
-  ENTRY (name) \
-  DO_CALL (SYS_ify (syscall_name));
-
-#define PSEUDO_RET_ERRVAL \
-    blr
-
-#define ret_ERRVAL PSEUDO_RET_ERRVAL
-
-#undef	PSEUDO_END_ERRVAL
-#define	PSEUDO_END_ERRVAL(name) \
-  END (name)
-
-#else /* !__ASSEMBLER__ */
-
-#if _CALL_ELF != 2
-
-#define PPC64_LOAD_FUNCPTR(ptr) \
-	"ld 	12,0(" #ptr ");\n"					\
-	"ld	2,8(" #ptr ");\n"					\
-	"mtctr	12;\n"							\
-	"ld	11,16(" #ptr ");"
-
-#ifdef USE_PPC64_OVERLAPPING_OPD
-# define OPD_ENT(name)	".quad " BODY_PREFIX #name ", .TOC.@tocbase;"
-#else
-# define OPD_ENT(name)	".quad " BODY_PREFIX #name ", .TOC.@tocbase, 0;"
-#endif
-
-#define ENTRY_1(name)	\
-	".type   " BODY_PREFIX #name ",@function;\n"			\
-	".globl " #name ";\n"						\
-	".pushsection \".opd\",\"aw\";\n"				\
-	".align  3;\n"							\
-#name ":\n"								\
-	OPD_ENT (name) "\n"						\
-	".popsection;"
-
-#define DOT_PREFIX ""
-#define BODY_PREFIX ".LY"
-#define ENTRY_2(name)	\
-	".type " #name ",@function;\n"					\
-	ENTRY_1(name)
-#define END_2(name)	\
-	".size " #name ",.-" BODY_PREFIX #name ";\n"			\
-	".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name ";"
-#define LOCALENTRY(name)
-
-#else /* _CALL_ELF */
-
-#define PPC64_LOAD_FUNCPTR(ptr) \
-	"mr	12," #ptr ";\n"						\
-	"mtctr 	12;"
-
-#define DOT_PREFIX ""
-#define BODY_PREFIX ""
-#define ENTRY_2(name)	\
-	".type " #name ",@function;\n"					\
-	".globl " #name ";"
-#define END_2(name)	\
-	".size " #name ",.-" #name ";"
-#define LOCALENTRY(name)	\
-	"1: addis 2,12,.TOC.-1b@ha;\n"					\
-	"addi	2,2,.TOC.-1b@l;\n"					\
-	".localentry " #name ",.-" #name ";"
-
-#endif /* _CALL_ELF */
-
-#endif	/* __ASSEMBLER__ */
diff --git a/sysdeps/powerpc/powerpc64/tls-macros.h b/sysdeps/powerpc/powerpc64/tls-macros.h
deleted file mode 100644
index 42a95ec5c1..0000000000
--- a/sysdeps/powerpc/powerpc64/tls-macros.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Include sysdeps/powerpc/tls-macros.h for __TLS_CALL_CLOBBERS  */
-#include_next "tls-macros.h"
-
-/* PowerPC64 Local Exec TLS access.  */
-#define TLS_LE(x)							      \
-  ({ int * __result;							      \
-     asm ("addis %0,13," #x "@tprel@ha\n\t"				      \
-	  "addi  %0,%0," #x "@tprel@l"					      \
-	  : "=b" (__result) );						      \
-     __result;								      \
-  })
-/* PowerPC64 Initial Exec TLS access.  */
-#define TLS_IE(x)							      \
-  ({ int * __result;							      \
-     asm ("ld  %0," #x "@got@tprel(2)\n\t"				      \
-	  "add %0,%0," #x "@tls"					      \
-	  : "=r" (__result) );						      \
-     __result;								      \
-  })
-
-#define __TLS_GET_ADDR "__tls_get_addr"
-
-/* PowerPC64 Local Dynamic TLS access.  */
-#define TLS_LD(x)							      \
-  ({ int * __result;							      \
-     asm ("addi  3,2," #x "@got@tlsld\n\t"				      \
-	  "bl    " __TLS_GET_ADDR "\n\t"				      \
-	  "nop   \n\t"							      \
-	  "addis %0,3," #x "@dtprel@ha\n\t"				      \
-	  "addi  %0,%0," #x "@dtprel@l"					      \
-	  : "=b" (__result) :						      \
-	  : "3", __TLS_CALL_CLOBBERS);					      \
-     __result;								      \
-  })
-/* PowerPC64 General Dynamic TLS access.  */
-#define TLS_GD(x)							      \
-  ({ register int *__result __asm__ ("r3");				      \
-     asm ("addi  3,2," #x "@got@tlsgd\n\t"				      \
-	  "bl    " __TLS_GET_ADDR "\n\t"				      \
-	  "nop   "							      \
-	  : "=r" (__result) :						      \
-	  : __TLS_CALL_CLOBBERS);					      \
-     __result;								      \
-  })
diff --git a/sysdeps/powerpc/powerpc64/tst-audit.h b/sysdeps/powerpc/powerpc64/tst-audit.h
deleted file mode 100644
index b25040b9f0..0000000000
--- a/sysdeps/powerpc/powerpc64/tst-audit.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Definitions for testing PLT entry/exit auditing.  PowerPC64 version.
-
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#if _CALL_ELF != 2
-#define pltenter la_ppc64_gnu_pltenter
-#define pltexit la_ppc64_gnu_pltexit
-#define La_regs La_ppc64_regs
-#define La_retval La_ppc64_retval
-#define int_retval lrv_r3
-#else
-#define pltenter la_ppc64v2_gnu_pltenter
-#define pltexit la_ppc64v2_gnu_pltexit
-#define La_regs La_ppc64v2_regs
-#define La_retval La_ppc64v2_retval
-#define int_retval lrv_r3
-#endif
diff --git a/sysdeps/powerpc/powerpc64le/Implies b/sysdeps/powerpc/powerpc64le/Implies
deleted file mode 100644
index a105a325f7..0000000000
--- a/sysdeps/powerpc/powerpc64le/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64
diff --git a/sysdeps/powerpc/powerpc64le/fpu/Implies b/sysdeps/powerpc/powerpc64le/fpu/Implies
deleted file mode 100644
index c1f617b7da..0000000000
--- a/sysdeps/powerpc/powerpc64le/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/fpu
diff --git a/sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies
deleted file mode 100644
index 8d6531a174..0000000000
--- a/sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/multiarch/Implies b/sysdeps/powerpc/powerpc64le/multiarch/Implies
deleted file mode 100644
index 30edcf7f9d..0000000000
--- a/sysdeps/powerpc/powerpc64le/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power7/Implies b/sysdeps/powerpc/powerpc64le/power7/Implies
deleted file mode 100644
index eedef823d5..0000000000
--- a/sysdeps/powerpc/powerpc64le/power7/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7
diff --git a/sysdeps/powerpc/powerpc64le/power7/fpu/Implies b/sysdeps/powerpc/powerpc64le/power7/fpu/Implies
deleted file mode 100644
index 8447198fbc..0000000000
--- a/sysdeps/powerpc/powerpc64le/power7/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/fpu
diff --git a/sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies
deleted file mode 100644
index 7fd86fdf87..0000000000
--- a/sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power7/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power7/multiarch/Implies
deleted file mode 100644
index 1fc7b7cd39..0000000000
--- a/sysdeps/powerpc/powerpc64le/power7/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power7/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power8/Implies b/sysdeps/powerpc/powerpc64le/power8/Implies
deleted file mode 100644
index 3c37351dcc..0000000000
--- a/sysdeps/powerpc/powerpc64le/power8/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8
diff --git a/sysdeps/powerpc/powerpc64le/power8/fpu/Implies b/sysdeps/powerpc/powerpc64le/power8/fpu/Implies
deleted file mode 100644
index ae0dbaf857..0000000000
--- a/sysdeps/powerpc/powerpc64le/power8/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/fpu
diff --git a/sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies
deleted file mode 100644
index f11e1bdba2..0000000000
--- a/sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power8/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power8/multiarch/Implies
deleted file mode 100644
index dd6bca4b36..0000000000
--- a/sysdeps/powerpc/powerpc64le/power8/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power8/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power9/Implies b/sysdeps/powerpc/powerpc64le/power9/Implies
deleted file mode 100644
index efe5d4193c..0000000000
--- a/sysdeps/powerpc/powerpc64le/power9/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power9
diff --git a/sysdeps/powerpc/powerpc64le/power9/fpu/Implies b/sysdeps/powerpc/powerpc64le/power9/fpu/Implies
deleted file mode 100644
index 3633114b47..0000000000
--- a/sysdeps/powerpc/powerpc64le/power9/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power9/fpu/
diff --git a/sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies
deleted file mode 100644
index 105948092d..0000000000
--- a/sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power9/fpu/multiarch
diff --git a/sysdeps/powerpc/powerpc64le/power9/multiarch/Implies b/sysdeps/powerpc/powerpc64le/power9/multiarch/Implies
deleted file mode 100644
index 02be30cfd0..0000000000
--- a/sysdeps/powerpc/powerpc64le/power9/multiarch/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power9/multiarch
diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
deleted file mode 100644
index 7de2eafd52..0000000000
--- a/sysdeps/powerpc/preconfigure
+++ /dev/null
@@ -1,20 +0,0 @@
-# preconfigure fragment for powerpc.
-
-case "$machine" in
-powerpc64le)
-  base_machine=powerpc machine=powerpc/powerpc64le
-  ;;
-powerpc64*)
-  base_machine=powerpc machine=powerpc/powerpc64
-  ;;
-powerpc*)
-  # Check for e500.
-  $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null > conftest.i
-  if grep -q __NO_FPRS__ conftest.i && ! grep -q _SOFT_FLOAT conftest.i; then
-    base_machine=powerpc machine=powerpc/powerpc32/e500
-  else
-    base_machine=powerpc machine=powerpc/powerpc32
-  fi
-  rm -f conftest.i
-  ;;
-esac
diff --git a/sysdeps/powerpc/rtld-global-offsets.sym b/sysdeps/powerpc/rtld-global-offsets.sym
deleted file mode 100644
index f5ea5a1466..0000000000
--- a/sysdeps/powerpc/rtld-global-offsets.sym
+++ /dev/null
@@ -1,8 +0,0 @@
-#define SHARED 1
-
-#include <ldsodefs.h>
-
-#define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem)
-
-RTLD_GLOBAL_RO_DL_HWCAP_OFFSET	rtld_global_ro_offsetof (_dl_hwcap)
-RTLD_GLOBAL_RO_DL_HWCAP2_OFFSET	rtld_global_ro_offsetof (_dl_hwcap2)
diff --git a/sysdeps/powerpc/sched_cpucount.c b/sysdeps/powerpc/sched_cpucount.c
deleted file mode 100644
index 13d17ac555..0000000000
--- a/sysdeps/powerpc/sched_cpucount.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2007-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifdef _ARCH_PWR5
-# define POPCNT(l) __builtin_popcountl (l)
-#endif
-
-#include <posix/sched_cpucount.c>
diff --git a/sysdeps/powerpc/sigjmp.c b/sysdeps/powerpc/sigjmp.c
deleted file mode 100644
index 6d593a0992..0000000000
--- a/sysdeps/powerpc/sigjmp.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Versioned copy of sysdeps/generic/sigjmp.c modified for AltiVec support.  */
-
-#include  <shlib-compat.h>
-#include <stddef.h>
-#include <setjmp.h>
-#include <signal.h>
-
-/* This function is called by the `sigsetjmp' macro
-   before doing a `__setjmp' on ENV[0].__jmpbuf.
-   Always return zero.  */
-
-int
-__vmx__sigjmp_save (sigjmp_buf env, int savemask)
-{
-  env[0].__mask_was_saved = (savemask &&
-			     __sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
-					    &env[0].__saved_mask) == 0);
-
-  return 0;
-}
-
-strong_alias (__vmx__sigjmp_save,__sigjmp_save)
diff --git a/sysdeps/powerpc/soft-fp/sfp-machine.h b/sysdeps/powerpc/soft-fp/sfp-machine.h
deleted file mode 100644
index d92a90e3e2..0000000000
--- a/sysdeps/powerpc/soft-fp/sfp-machine.h
+++ /dev/null
@@ -1,114 +0,0 @@
-#define _FP_W_TYPE_SIZE		32
-#define _FP_W_TYPE		unsigned long
-#define _FP_WS_TYPE		signed long
-#define _FP_I_TYPE		long
-
-#define _FP_MUL_MEAT_S(R,X,Y)				\
-  _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_D(R,X,Y)				\
-  _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
-#define _FP_MUL_MEAT_Q(R,X,Y)				\
-  _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
-
-#define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_loop(S,R,X,Y)
-#define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_2_udiv(D,R,X,Y)
-#define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_4_udiv(Q,R,X,Y)
-
-#define _FP_NANFRAC_S		((_FP_QNANBIT_S << 1) - 1)
-#define _FP_NANFRAC_D		((_FP_QNANBIT_D << 1) - 1), -1
-#define _FP_NANFRAC_Q		((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
-#define _FP_NANSIGN_S		0
-#define _FP_NANSIGN_D		0
-#define _FP_NANSIGN_Q		0
-
-#define _FP_KEEPNANFRACP 1
-#define _FP_QNANNEGATEDP 0
-
-/* Someone please check this.  */
-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP)			\
-  do {								\
-    if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs)		\
-	&& !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs))	\
-      {								\
-	R##_s = Y##_s;						\
-	_FP_FRAC_COPY_##wc(R,Y);				\
-      }								\
-    else							\
-      {								\
-	R##_s = X##_s;						\
-	_FP_FRAC_COPY_##wc(R,X);				\
-      }								\
-    R##_c = FP_CLS_NAN;						\
-  } while (0)
-
-#define _FP_TININESS_AFTER_ROUNDING 0
-
-#if defined __NO_FPRS__ && !defined _SOFT_FLOAT
-
-/* Exception flags.  We use the bit positions of the appropriate bits
-   in the FPEFSCR.  */
-
-# include <fenv_libc.h>
-# include <sysdep.h>
-# include <sys/prctl.h>
-
-int __feraiseexcept_soft (int);
-libc_hidden_proto (__feraiseexcept_soft)
-
-# define FP_EX_INEXACT         SPEFSCR_FINXS
-# define FP_EX_INVALID         SPEFSCR_FINVS
-# define FP_EX_DIVZERO         SPEFSCR_FDBZS
-# define FP_EX_UNDERFLOW       SPEFSCR_FUNFS
-# define FP_EX_OVERFLOW        SPEFSCR_FOVFS
-
-# define _FP_DECL_EX \
-  int _spefscr __attribute__ ((unused)), _ftrapex __attribute__ ((unused)) = 0
-# define FP_INIT_ROUNDMODE						\
-  do									\
-    {									\
-      int _r;								\
-      INTERNAL_SYSCALL_DECL (_err);					\
-									\
-      _spefscr = fegetenv_register ();					\
-      _r = INTERNAL_SYSCALL (prctl, _err, 2, PR_GET_FPEXC, &_ftrapex);	\
-      if (INTERNAL_SYSCALL_ERROR_P (_r, _err))				\
-	_ftrapex = 0;							\
-    }									\
-  while (0)
-# define FP_INIT_EXCEPTIONS /* Empty.  */
-
-# define FP_HANDLE_EXCEPTIONS  __feraiseexcept_soft (_fex)
-# define FP_ROUNDMODE          (_spefscr & 0x3)
-
-/* Not correct in general, but sufficient for the uses in soft-fp.  */
-# define FP_TRAPPING_EXCEPTIONS (_ftrapex & PR_FP_EXC_UND	\
-				 ? FP_EX_UNDERFLOW		\
-				 : 0)
-
-#else
-
-/* Exception flags.  We use the bit positions of the appropriate bits
-   in the FPSCR, which also correspond to the FE_* bits.  This makes
-   everything easier ;-).  */
-# define FP_EX_INVALID         (1 << (31 - 2))
-# define FP_EX_OVERFLOW        (1 << (31 - 3))
-# define FP_EX_UNDERFLOW       (1 << (31 - 4))
-# define FP_EX_DIVZERO         (1 << (31 - 5))
-# define FP_EX_INEXACT         (1 << (31 - 6))
-
-# define FP_HANDLE_EXCEPTIONS  __simulate_exceptions (_fex)
-# define FP_ROUNDMODE          __sim_round_mode_thread
-# define FP_TRAPPING_EXCEPTIONS \
-  (~__sim_disabled_exceptions_thread & 0x3e000000)
-
-#endif
-
-extern __thread int __sim_exceptions_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_exceptions_thread, tls_model ("initial-exec"));
-extern __thread int __sim_disabled_exceptions_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_disabled_exceptions_thread,
-		       tls_model ("initial-exec"));
-extern __thread int __sim_round_mode_thread attribute_tls_model_ie;
-libc_hidden_tls_proto (__sim_round_mode_thread, tls_model ("initial-exec"));
-
-extern void __simulate_exceptions (int x) attribute_hidden;
diff --git a/sysdeps/powerpc/sotruss-lib.c b/sysdeps/powerpc/sotruss-lib.c
deleted file mode 100644
index e5274241a5..0000000000
--- a/sysdeps/powerpc/sotruss-lib.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* PowerPC specific sotruss-lib functions.
-   Copyright (C) 2013-2017 Free Software Foundation, Inc.
-
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#define HAVE_ARCH_PLTENTER
-#define HAVE_ARCH_PLTEXIT
-
-#include <elf/sotruss-lib.c>
-
-#ifdef __powerpc64__
-# if _CALL_ELF != 2
-#  define LA_PPC_REGS          La_ppc64_regs
-#  define LA_PPC_RETVAL        La_ppc64_retval
-#  define LA_PPC_GNU_PLTENTER  la_ppc64_gnu_pltenter
-#  define LA_PPC_GNU_PLTEXIT   la_ppc64_gnu_pltexit
-# else
-#  define LA_PPC_REGS          La_ppc64v2_regs
-#  define LA_PPC_RETVAL        La_ppc64v2_retval
-#  define LA_PPC_GNU_PLTENTER  la_ppc64v2_gnu_pltenter
-#  define LA_PPC_GNU_PLTEXIT   la_ppc64v2_gnu_pltexit
-# endif
-# else
-# define LA_PPC_REGS           La_ppc32_regs
-# define LA_PPC_RETVAL         La_ppc32_retval
-# define LA_PPC_GNU_PLTENTER   la_ppc32_gnu_pltenter
-# define LA_PPC_GNU_PLTEXIT    la_ppc32_gnu_pltexit
-#endif
-
-ElfW(Addr)
-LA_PPC_GNU_PLTENTER (ElfW(Sym) *sym __attribute__ ((unused)),
-		     unsigned int ndx __attribute__ ((unused)),
-		     uintptr_t *refcook, uintptr_t *defcook,
-		     LA_PPC_REGS *regs, unsigned int *flags,
-		     const char *symname, long int *framesizep)
-{
-  print_enter (refcook, defcook, symname,
-	       regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], *flags);
-
-  /* No need to copy anything, we will not need the parameters in any case.  */
-  *framesizep = 0;
-
-  return sym->st_value;
-}
-
-unsigned int
-LA_PPC_GNU_PLTEXIT (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
-		    uintptr_t *defcook,
-		    const struct LA_PPC_REGS *inregs,
-		    struct LA_PPC_RETVAL *outregs, const char *symname)
-{
-  print_exit (refcook, defcook, symname, outregs->lrv_r3);
-
-  return 0;
-}
diff --git a/sysdeps/powerpc/stackinfo.h b/sysdeps/powerpc/stackinfo.h
deleted file mode 100644
index 964ab77d56..0000000000
--- a/sysdeps/powerpc/stackinfo.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* This file contains a bit of information about the stack allocation
-   of the processor.  */
-
-#ifndef _STACKINFO_H
-#define _STACKINFO_H	1
-
-#include <elf.h>
-
-/* On PPC the stack grows down.  */
-#define _STACK_GROWS_DOWN	1
-
-#if __WORDSIZE == 64
-/* PPC64 doesn't need an executable stack and doesn't need PT_GNU_STACK
- * to make the stack nonexecutable.  */
-# define DEFAULT_STACK_PERMS (PF_R|PF_W)
-#else
-/* PF_X can be overridden if PT_GNU_STACK is present but is presumed absent.  */
-# define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
-#endif
-
-#endif	/* stackinfo.h */
diff --git a/sysdeps/powerpc/sys/platform/ppc.h b/sysdeps/powerpc/sys/platform/ppc.h
deleted file mode 100644
index 4a0c015766..0000000000
--- a/sysdeps/powerpc/sys/platform/ppc.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* Facilities specific to the PowerPC architecture
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_PLATFORM_PPC_H
-#define _SYS_PLATFORM_PPC_H	1
-
-#include <features.h>
-#include <stdint.h>
-#include <bits/ppc.h>
-
-/* Read the Time Base Register.   */
-static __inline__ uint64_t
-__ppc_get_timebase (void)
-{
-#if __GNUC_PREREQ (4, 8)
-  return __builtin_ppc_get_timebase ();
-#else
-# ifdef __powerpc64__
-  uint64_t __tb;
-  /* "volatile" is necessary here, because the user expects this assembly
-     isn't moved after an optimization.  */
-  __asm__ volatile ("mfspr %0, 268" : "=r" (__tb));
-  return __tb;
-# else  /* not __powerpc64__ */
-  uint32_t __tbu, __tbl, __tmp; \
-  __asm__ volatile ("0:\n\t"
-		    "mftbu %0\n\t"
-		    "mftbl %1\n\t"
-		    "mftbu %2\n\t"
-		    "cmpw %0, %2\n\t"
-		    "bne- 0b"
-		    : "=r" (__tbu), "=r" (__tbl), "=r" (__tmp));
-  return (((uint64_t) __tbu << 32) | __tbl);
-# endif  /* not __powerpc64__ */
-#endif
-}
-
-/* The following functions provide hints about the usage of shared processor
-   resources, as defined in ISA 2.06 and newer. */
-
-/* Provides a hint that performance will probably be improved if shared
-   resources dedicated to the executing processor are released for use by other
-   processors.  */
-static __inline__ void
-__ppc_yield (void)
-{
-  __asm__ volatile ("or 27,27,27");
-}
-
-/* Provides a hint that performance will probably be improved if shared
-   resources dedicated to the executing processor are released until
-   all outstanding storage accesses to caching-inhibited storage have been
-   completed.  */
-static __inline__ void
-__ppc_mdoio (void)
-{
-  __asm__ volatile ("or 29,29,29");
-}
-
-/* Provides a hint that performance will probably be improved if shared
-   resources dedicated to the executing processor are released until all
-   outstanding storage accesses to cacheable storage for which the data is not
-   in the cache have been completed.  */
-static __inline__ void
-__ppc_mdoom (void)
-{
-  __asm__ volatile ("or 30,30,30");
-}
-
-
-/* ISA 2.05 and beyond support the Program Priority Register (PPR) to adjust
-   thread priorities based on lock acquisition, wait and release. The ISA
-   defines the use of form 'or Rx,Rx,Rx' as the way to modify the PRI field.
-   The unprivileged priorities are:
-     Rx = 1 (low)
-     Rx = 2 (medium)
-     Rx = 6 (medium-low/normal)
-   The 'or' instruction form is a nop in previous hardware, so it is safe to
-   use unguarded. The default value is 'medium'.
- */
-
-static __inline__ void
-__ppc_set_ppr_med (void)
-{
-  __asm__ volatile ("or 2,2,2");
-}
-
-static __inline__ void
-__ppc_set_ppr_med_low (void)
-{
-  __asm__ volatile ("or 6,6,6");
-}
-
-static __inline__ void
-__ppc_set_ppr_low (void)
-{
-  __asm__ volatile ("or 1,1,1");
-}
-
-/* Power ISA 2.07 (Book II, Chapter 3) extends the priorities that can be set
-   to the Program Priority Register (PPR).  The form 'or Rx,Rx,Rx' is used to
-   modify the PRI field of the PPR, the same way as described above.
-   The new priority levels are:
-     Rx = 31 (very low)
-     Rx = 5 (medium high)
-   Any program can set the priority to very low, low, medium low, and medium,
-   as these are unprivileged.
-   The medium high priority, on the other hand, is privileged, and may only be
-   set during certain time intervals by problem-state programs.  If the program
-   priority is medium high when the time interval expires or if an attempt is
-   made to set the priority to medium high when it is not allowed, the PRI
-   field is set to medium.
- */
-
-#ifdef _ARCH_PWR8
-
-static __inline__ void
-__ppc_set_ppr_very_low (void)
-{
-  __asm__ volatile ("or 31,31,31");
-}
-
-static __inline__ void
-__ppc_set_ppr_med_high (void)
-{
-  __asm__ volatile ("or 5,5,5");
-}
-
-#endif
-
-#endif  /* sys/platform/ppc.h */
diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
deleted file mode 100644
index f07b959eee..0000000000
--- a/sysdeps/powerpc/sysdep.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- * Powerpc Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP).
- * This entry is copied to _dl_hwcap or rtld_global._dl_hwcap during startup.
- */
-#define _SYSDEPS_SYSDEP_H 1
-#include <bits/hwcap.h>
-#ifdef ENABLE_LOCK_ELISION
-#include <tls.h>
-#include <htm.h>
-#endif
-
-#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
-
-#ifdef __ASSEMBLER__
-
-/* Symbolic names for the registers.  The only portable way to write asm
-   code is to use number but this produces really unreadable code.
-   Therefore these symbolic names.  */
-
-/* Integer registers.  */
-#define r0	0
-#define r1	1
-#define r2	2
-#define r3	3
-#define r4	4
-#define r5	5
-#define r6	6
-#define r7	7
-#define r8	8
-#define r9	9
-#define r10	10
-#define r11	11
-#define r12	12
-#define r13	13
-#define r14	14
-#define r15	15
-#define r16	16
-#define r17	17
-#define r18	18
-#define r19	19
-#define r20	20
-#define r21	21
-#define r22	22
-#define r23	23
-#define r24	24
-#define r25	25
-#define r26	26
-#define r27	27
-#define r28	28
-#define r29	29
-#define r30	30
-#define r31	31
-
-/* Floating-point registers.  */
-#define fp0	0
-#define fp1	1
-#define fp2	2
-#define fp3	3
-#define fp4	4
-#define fp5	5
-#define fp6	6
-#define fp7	7
-#define fp8	8
-#define fp9	9
-#define fp10	10
-#define fp11	11
-#define fp12	12
-#define fp13	13
-#define fp14	14
-#define fp15	15
-#define fp16	16
-#define fp17	17
-#define fp18	18
-#define fp19	19
-#define fp20	20
-#define fp21	21
-#define fp22	22
-#define fp23	23
-#define fp24	24
-#define fp25	25
-#define fp26	26
-#define fp27	27
-#define fp28	28
-#define fp29	29
-#define fp30	30
-#define fp31	31
-
-/* Condition code registers.  */
-#define cr0	0
-#define cr1	1
-#define cr2	2
-#define cr3	3
-#define cr4	4
-#define cr5	5
-#define cr6	6
-#define cr7	7
-
-/* Vector registers. */
-#define v0	0
-#define v1	1
-#define v2	2
-#define v3	3
-#define v4	4
-#define v5	5
-#define v6	6
-#define v7	7
-#define v8	8
-#define v9	9
-#define v10	10
-#define v11	11
-#define v12	12
-#define v13	13
-#define v14	14
-#define v15	15
-#define v16	16
-#define v17	17
-#define v18	18
-#define v19	19
-#define v20	20
-#define v21	21
-#define v22	22
-#define v23	23
-#define v24	24
-#define v25	25
-#define v26	26
-#define v27	27
-#define v28	28
-#define v29	29
-#define v30	30
-#define v31	31
-
-#define VRSAVE	256
-
-/* The 32-bit words of a 64-bit dword are at these offsets in memory.  */
-#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
-# define LOWORD 0
-# define HIWORD 4
-#else
-# define LOWORD 4
-# define HIWORD 0
-#endif
-
-/* The high 16-bit word of a 64-bit dword is at this offset in memory.  */
-#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
-# define HISHORT 6
-#else
-# define HISHORT 0
-#endif
-
-/* This seems to always be the case on PPC.  */
-#define ALIGNARG(log2) log2
-#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
-
-#else
-
-/* Linux kernel powerpc documentation [1] states issuing a syscall inside a
-   transaction is not recommended and may lead to undefined behavior.  It
-   also states syscalls do not abort transactions.  To avoid such traps,
-   we abort transaction just before syscalls.
-
-   [1] Documentation/powerpc/transactional_memory.txt [Syscalls]  */
-#if !IS_IN(rtld) && defined (ENABLE_LOCK_ELISION)
-# define ABORT_TRANSACTION \
-  ({ 						\
-    if (THREAD_GET_TM_CAPABLE ())		\
-      __libc_tabort (_ABORT_SYSCALL);	\
-  })
-#else
-# define ABORT_TRANSACTION
-#endif
-
-#endif	/* __ASSEMBLER__ */
diff --git a/sysdeps/powerpc/test-arith.c b/sysdeps/powerpc/test-arith.c
deleted file mode 100644
index aa1568d4d7..0000000000
--- a/sysdeps/powerpc/test-arith.c
+++ /dev/null
@@ -1,604 +0,0 @@
-/* Test floating-point arithmetic operations.
-   Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fenv.h>
-#include <assert.h>
-
-#ifndef ESIZE
-typedef double tocheck_t;
-#define ESIZE 11
-#define MSIZE 52
-#define FUNC(x) x
-#endif
-
-#define R_NEAREST 1
-#define R_ZERO 2
-#define R_UP 4
-#define R_DOWN 8
-#define R_ALL (R_NEAREST|R_ZERO|R_UP|R_DOWN)
-static fenv_t rmodes[4];
-static const char * const rmnames[4] =
-{ "nearest","zero","+Inf","-Inf" };
-
-typedef union {
-  tocheck_t tc;
-  unsigned char c[sizeof(tocheck_t)];
-} union_t;
-
-/* Don't try reading these in a font that doesn't distinguish
-   O and zero.  */
-typedef enum {
-  P_Z    = 0x0,  /* 00000...0 */
-  P_000O = 0x1,  /* 00011...1 */
-  P_001Z = 0x2,  /* 00100...0 */
-  P_00O  = 0x3,  /* 00111...1 */
-  P_01Z  = 0x4,  /* 01000...0 */
-  P_010O = 0x5,  /* 01011...1 */
-  P_011Z = 0x6,  /* 01100...0 */
-  P_0O   = 0x7,  /* 01111...1 */
-  P_1Z   = 0x8,  /* 10000...0 */
-  P_100O = 0x9,  /* 10011...1 */
-  P_101Z = 0xa,  /* 10100...0 */
-  P_10O  = 0xb,  /* 10111...1 */
-  P_11Z  = 0xc,  /* 11000...0 */
-  P_110O = 0xd,  /* 11011...1 */
-  P_111Z = 0xe,  /* 11100...0 */
-  P_O    = 0xf,  /* 11111...1 */
-  P_Z1   = 0x11, /* 000...001 */
-  P_Z10  = 0x12, /* 000...010 */
-  P_Z11  = 0x13, /* 000...011 */
-  P_0O00 = 0x14, /* 011...100 */
-  P_0O01 = 0x15, /* 011...101 */
-  P_0O0  = 0x16, /* 011...110 */
-  P_1Z1  = 0x19, /* 100...001 */
-  P_1Z10 = 0x1a, /* 100...010 */
-  P_1Z11 = 0x1b, /* 100...011 */
-  P_O00  = 0x1c, /* 111...100 */
-  P_O01  = 0x1d, /* 111...101 */
-  P_O0   = 0x1e, /* 111...110 */
-  P_R    = 0x20, /* rrr...rrr */ /* ('r' means random. ) */
-  P_Ro   = 0x21, /* rrr...rrr, with odd parity.  */
-  P_0R   = 0x22, /* 0rr...rrr */
-  P_1R   = 0x23, /* 1rr...rrr */
-  P_Rno  = 0x24, /* rrr...rrr, but not all ones.  */
-} pattern_t;
-
-static void
-pattern_fill(pattern_t ptn, unsigned char *start, int bitoffset, int count)
-{
-#define bitset(count, value) \
-      start[(count)/8] = (start[(count)/8] & ~(1 << 7-(count)%8)  \
-                          |  (value) << 7-(count)%8)
-  int i;
-
-  if (ptn >= 0 && ptn <= 0xf)
-    {
-      /* Patterns between 0 and 0xF have the following format:
-	 The LSBit is used to fill the last n-3 bits of the pattern;
-	 The next 3 bits are the first 3 bits of the pattern. */
-      for (i = 0; i < count; i++)
-	if (i < 3)
-	  bitset((bitoffset+i), ptn >> (3-i) & 1);
-	else
-	  bitset((bitoffset+i), ptn >> 0 & 1);
-    }
-  else if (ptn <= 0x1f)
-    {
-      /* Patterns between 0x10 and 0x1F have the following format:
-	 The two LSBits are the last two bits of the pattern;
-	 The 0x8 bit is the first bit of the pattern;
-	 The 0x4 bit is used to fill the remainder. */
-      for (i = 0; i < count; i++)
-	if (i == 0)
-	  bitset((bitoffset+i), ptn >> 3 & 1);
-	else if (i >= count-2)
-	  bitset((bitoffset+i), ptn >> (count-1-i) & 1);
-	else
-	  bitset((bitoffset+i), ptn >> 2 & 1);
-    }
-  else switch (ptn)
-    {
-    case P_0R: case P_1R:
-      assert(count > 0);
-      bitset(bitoffset, ptn & 1);
-      count--;
-      bitoffset++;
-    case P_R:
-      for (; count > 0; count--, bitoffset++)
-	bitset(bitoffset, rand() & 1);
-      break;
-    case P_Ro:
-      {
-	int op = 1;
-	assert(count > 0);
-	for (; count > 1; count--, bitoffset++)
-	  bitset(bitoffset, op ^= (rand() & 1));
-	bitset(bitoffset, op);
-	break;
-      }
-    case P_Rno:
-      {
-	int op = 1;
-	assert(count > 0);
-	for (; count > 1; count--, bitoffset++)
-	{
-	  int r = rand() & 1;
-	  op &= r;
-	  bitset(bitoffset, r);
-	}
-	bitset(bitoffset, rand() & (op ^ 1));
-	break;
-      }
-
-    default:
-      assert(0);
-    }
-#undef bitset
-}
-
-static tocheck_t
-pattern(int negative, pattern_t exp, pattern_t mant)
-{
-  union_t result;
-#if 0
-  int i;
-#endif
-
-  pattern_fill(negative ? P_O : P_Z, result.c, 0, 1);
-  pattern_fill(exp, result.c, 1, ESIZE);
-  pattern_fill(mant, result.c, ESIZE+1, MSIZE);
-#if 0
-  printf("neg=%d exp=%02x mant=%02x: ", negative, exp, mant);
-  for (i = 0; i < sizeof(tocheck_t); i++)
-    printf("%02x", result.c[i]);
-  printf("\n");
-#endif
-  return result.tc;
-}
-
-/* Return the closest different tocheck_t to 'x' in the direction of
-   'direction', or 'x' if there is no such value.  Assumes 'x' is not
-   a NaN.  */
-static tocheck_t
-delta(tocheck_t x, int direction)
-{
-  union_t xx;
-  int i;
-
-  xx.tc = x;
-  if (xx.c[0] & 0x80)
-    direction = -direction;
-  if (direction == +1)
-    {
-      union_t tx;
-      tx.tc = pattern(xx.c[0] >> 7, P_O, P_Z);
-      if (memcmp(tx.c, xx.c, sizeof(tocheck_t)) == 0)
-	return x;
-    }
-  for (i = sizeof(tocheck_t)-1; i > 0; i--)
-    {
-      xx.c[i] += direction;
-      if (xx.c[i] != (direction > 0 ? 0 : 0xff))
-	return xx.tc;
-    }
-  if (direction < 0 && (xx.c[0] & 0x7f) == 0)
-    return pattern(~(xx.c[0] >> 7) & 1, P_Z, P_Z1);
-  else
-    {
-      xx.c[0] += direction;
-      return xx.tc;
-    }
-}
-
-static int nerrors = 0;
-
-#ifdef FE_ALL_INVALID
-static const int all_exceptions = FE_ALL_INVALID | FE_ALL_EXCEPT;
-#else
-static const int all_exceptions = FE_ALL_EXCEPT;
-#endif
-
-static void
-check_result(int line, const char *rm, tocheck_t expected, tocheck_t actual)
-{
-  if (memcmp(&expected, &actual, sizeof(tocheck_t)) != 0)
-    {
-      unsigned char *ex, *ac;
-      size_t i;
-
-      printf("%s:%d:round %s:result failed\n"
-	     " expected result 0x", __FILE__, line, rm);
-      ex = (unsigned char *)&expected;
-      ac = (unsigned char *)&actual;
-      for (i = 0; i < sizeof(tocheck_t); i++)
-	printf("%02x", ex[i]);
-      printf(" got 0x");
-      for (i = 0; i < sizeof(tocheck_t); i++)
-	printf("%02x", ac[i]);
-      printf("\n");
-      nerrors++;
-    }
-}
-
-static const struct {
-  int except;
-  const char *name;
-} excepts[] = {
-#define except_entry(ex) { ex, #ex } ,
-#ifdef FE_INEXACT
-  except_entry(FE_INEXACT)
-#else
-# define FE_INEXACT 0
-#endif
-#ifdef FE_DIVBYZERO
-  except_entry(FE_DIVBYZERO)
-#else
-# define FE_DIVBYZERO 0
-#endif
-#ifdef FE_UNDERFLOW
-  except_entry(FE_UNDERFLOW)
-#else
-# define FE_UNDERFLOW 0
-#endif
-#ifdef FE_OVERFLOW
-  except_entry(FE_OVERFLOW)
-#else
-# define FE_OVERFLOW 0
-#endif
-#ifdef FE_INVALID
-  except_entry(FE_INVALID)
-#else
-# define FE_INVALID 0
-#endif
-#ifdef FE_INVALID_SNAN
-  except_entry(FE_INVALID_SNAN)
-#else
-# define FE_INVALID_SNAN FE_INVALID
-#endif
-#ifdef FE_INVALID_ISI
-  except_entry(FE_INVALID_ISI)
-#else
-# define FE_INVALID_ISI FE_INVALID
-#endif
-#ifdef FE_INVALID_IDI
-  except_entry(FE_INVALID_IDI)
-#else
-# define FE_INVALID_IDI FE_INVALID
-#endif
-#ifdef FE_INVALID_ZDZ
-  except_entry(FE_INVALID_ZDZ)
-#else
-# define FE_INVALID_ZDZ FE_INVALID
-#endif
-#ifdef FE_INVALID_COMPARE
-  except_entry(FE_INVALID_COMPARE)
-#else
-# define FE_INVALID_COMPARE FE_INVALID
-#endif
-#ifdef FE_INVALID_SOFTWARE
-  except_entry(FE_INVALID_SOFTWARE)
-#else
-# define FE_INVALID_SOFTWARE FE_INVALID
-#endif
-#ifdef FE_INVALID_SQRT
-  except_entry(FE_INVALID_SQRT)
-#else
-# define FE_INVALID_SQRT FE_INVALID
-#endif
-#ifdef FE_INVALID_INTEGER_CONVERSION
-  except_entry(FE_INVALID_INTEGER_CONVERSION)
-#else
-# define FE_INVALID_INTEGER_CONVERSION FE_INVALID
-#endif
-};
-
-static int excepts_missing = 0;
-
-static void
-check_excepts(int line, const char *rm, int expected, int actual)
-{
-  if (expected & excepts_missing)
-    expected = expected & ~excepts_missing | FE_INVALID_SNAN;
-  if ((expected & all_exceptions) != actual)
-    {
-      size_t i;
-      printf("%s:%d:round %s:exceptions failed\n"
-	     " expected exceptions ", __FILE__, line,rm);
-      for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-	if (expected & excepts[i].except)
-	  printf("%s ",excepts[i].name);
-      if ((expected & all_exceptions) == 0)
-	printf("- ");
-      printf("got");
-      for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
-	if (actual & excepts[i].except)
-	  printf(" %s",excepts[i].name);
-      if ((actual & all_exceptions) == 0)
-	printf("- ");
-      printf(".\n");
-      nerrors++;
-    }
-}
-
-typedef enum {
-  B_ADD, B_SUB, B_MUL, B_DIV, B_NEG, B_ABS, B_SQRT
-} op_t;
-typedef struct {
-  int line;
-  op_t op;
-  int a_sgn;
-  pattern_t a_exp, a_mant;
-  int b_sgn;
-  pattern_t b_exp, b_mant;
-  int rmode;
-  int excepts;
-  int x_sgn;
-  pattern_t x_exp, x_mant;
-} optest_t;
-static const optest_t optests[] = {
-  /* Additions of zero.  */
-  {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_Z,P_Z },
-  {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_ALL & ~R_DOWN,0, 0,P_Z,P_Z },
-  {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_DOWN,0, 1,P_Z,P_Z },
-  {__LINE__,B_ADD, 1,P_Z,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_Z,P_Z },
-
-  /* Additions with NaN.  */
-  {__LINE__,B_ADD, 0,P_O,P_101Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_101Z },
-  {__LINE__,B_ADD, 0,P_O,P_01Z, 0,P_Z,P_Z, R_ALL,
-   FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_0O, R_ALL,
-   FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_O },
-  {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_O,P_11Z, R_ALL,0, 0,P_O,P_11Z },
-  {__LINE__,B_ADD, 0,P_O,P_001Z, 0,P_O,P_001Z, R_ALL,
-   FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_101Z },
-  {__LINE__,B_ADD, 0,P_O,P_1Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_1Z },
-  {__LINE__,B_ADD, 0,P_0O,P_Z, 0,P_O,P_10O, R_ALL,0, 0,P_O,P_10O },
-
-  /* Additions with infinity.  */
-  {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_Z, R_ALL,0, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_O,P_Z, R_ALL,0, 1,P_O,P_Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_O,P_Z, R_ALL,
-   FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_O,P_Z, R_ALL,
-   FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-  {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
-
-  /* Overflow (and zero).  */
-  {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_NEAREST | R_UP,
-   FE_INEXACT | FE_OVERFLOW, 0,P_O,P_Z },
-  {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_ZERO | R_DOWN,
-   FE_INEXACT | FE_OVERFLOW, 0,P_O0,P_O },
-  {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_NEAREST | R_DOWN,
-   FE_INEXACT | FE_OVERFLOW, 1,P_O,P_Z },
-  {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_ZERO | R_UP,
-   FE_INEXACT | FE_OVERFLOW, 1,P_O0,P_O },
-  {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_ALL & ~R_DOWN,
-   0, 0,P_Z,P_Z },
-  {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_DOWN,
-   0, 1,P_Z,P_Z },
-
-  /* Negation.  */
-  {__LINE__,B_NEG, 0,P_Z,P_Z,   0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-  {__LINE__,B_NEG, 1,P_Z,P_Z,   0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-  {__LINE__,B_NEG, 0,P_O,P_Z,   0,0,0, R_ALL, 0, 1,P_O,P_Z },
-  {__LINE__,B_NEG, 1,P_O,P_Z,   0,0,0, R_ALL, 0, 0,P_O,P_Z },
-  {__LINE__,B_NEG, 0,P_O,P_1Z,  0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-  {__LINE__,B_NEG, 1,P_O,P_1Z,  0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-  {__LINE__,B_NEG, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 1,P_O,P_01Z },
-  {__LINE__,B_NEG, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-  {__LINE__,B_NEG, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 1,P_1Z,P_1Z1 },
-  {__LINE__,B_NEG, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-  {__LINE__,B_NEG, 0,P_Z,P_Z1,  0,0,0, R_ALL, 0, 1,P_Z,P_Z1 },
-  {__LINE__,B_NEG, 1,P_Z,P_Z1,  0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-
-  /* Absolute value.  */
-  {__LINE__,B_ABS, 0,P_Z,P_Z,   0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-  {__LINE__,B_ABS, 1,P_Z,P_Z,   0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-  {__LINE__,B_ABS, 0,P_O,P_Z,   0,0,0, R_ALL, 0, 0,P_O,P_Z },
-  {__LINE__,B_ABS, 1,P_O,P_Z,   0,0,0, R_ALL, 0, 0,P_O,P_Z },
-  {__LINE__,B_ABS, 0,P_O,P_1Z,  0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-  {__LINE__,B_ABS, 1,P_O,P_1Z,  0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-  {__LINE__,B_ABS, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-  {__LINE__,B_ABS, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
-  {__LINE__,B_ABS, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-  {__LINE__,B_ABS, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
-  {__LINE__,B_ABS, 0,P_Z,P_Z1,  0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-  {__LINE__,B_ABS, 1,P_Z,P_Z1,  0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
-
-  /* Square root.  */
-  {__LINE__,B_SQRT, 0,P_Z,P_Z,   0,0,0, R_ALL, 0, 0,P_Z,P_Z },
-  {__LINE__,B_SQRT, 1,P_Z,P_Z,   0,0,0, R_ALL, 0, 1,P_Z,P_Z },
-  {__LINE__,B_SQRT, 0,P_O,P_1Z,  0,0,0, R_ALL, 0, 0,P_O,P_1Z },
-  {__LINE__,B_SQRT, 1,P_O,P_1Z,  0,0,0, R_ALL, 0, 1,P_O,P_1Z },
-  {__LINE__,B_SQRT, 0,P_O,P_01Z, 0,0,0, R_ALL,
-   FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
-  {__LINE__,B_SQRT, 1,P_O,P_01Z, 0,0,0, R_ALL,
-   FE_INVALID | FE_INVALID_SNAN, 1,P_O,P_11Z },
-
-  {__LINE__,B_SQRT, 0,P_O,P_Z,   0,0,0, R_ALL, 0, 0,P_O,P_Z },
-  {__LINE__,B_SQRT, 0,P_0O,P_Z,  0,0,0, R_ALL, 0, 0,P_0O,P_Z },
-
-  {__LINE__,B_SQRT, 1,P_O,P_Z,   0,0,0, R_ALL,
-   FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-  {__LINE__,B_SQRT, 1,P_1Z,P_1Z1, 0,0,0, R_ALL,
-   FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-  {__LINE__,B_SQRT, 1,P_Z,P_Z1,  0,0,0, R_ALL,
-   FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
-
-};
-
-static void
-check_op(void)
-{
-  size_t i;
-  int j;
-  tocheck_t r, a, b, x;
-  int raised;
-
-  for (i = 0; i < sizeof(optests)/sizeof(optests[0]); i++)
-    {
-      a = pattern(optests[i].a_sgn, optests[i].a_exp,
-		  optests[i].a_mant);
-      b = pattern(optests[i].b_sgn, optests[i].b_exp,
-		  optests[i].b_mant);
-      x = pattern(optests[i].x_sgn, optests[i].x_exp,
-		  optests[i].x_mant);
-      for (j = 0; j < 4; j++)
-	if (optests[i].rmode & 1<<j)
-	  {
-	    fesetenv(rmodes+j);
-	    switch (optests[i].op)
-	      {
-	      case B_ADD: r = a + b; break;
-	      case B_SUB: r = a - b; break;
-	      case B_MUL: r = a * b; break;
-	      case B_DIV: r = a / b; break;
-	      case B_NEG: r = -a; break;
-	      case B_ABS: r = FUNC(fabs)(a); break;
-	      case B_SQRT: r = FUNC(sqrt)(a); break;
-	      }
-	    raised = fetestexcept(all_exceptions);
-	    check_result(optests[i].line,rmnames[j],x,r);
-	    check_excepts(optests[i].line,rmnames[j],
-			  optests[i].excepts,raised);
-	  }
-    }
-}
-
-static void
-fail_xr(int line, const char *rm, tocheck_t x, tocheck_t r, tocheck_t xx,
-	int xflag)
-{
-  size_t i;
-  unsigned char *cx, *cr, *cxx;
-
-  printf("%s:%d:round %s:fail\n with x=0x", __FILE__, line,rm);
-  cx = (unsigned char *)&x;
-  cr = (unsigned char *)&r;
-  cxx = (unsigned char *)&xx;
-  for (i = 0; i < sizeof(tocheck_t); i++)
-    printf("%02x", cx[i]);
-  printf(" r=0x");
-  for (i = 0; i < sizeof(tocheck_t); i++)
-    printf("%02x", cr[i]);
-  printf(" xx=0x");
-  for (i = 0; i < sizeof(tocheck_t); i++)
-    printf("%02x", cxx[i]);
-  printf(" inexact=%d\n", xflag != 0);
-  nerrors++;
-}
-
-static void
-check_sqrt(tocheck_t a)
-{
-  int j;
-  tocheck_t r0, r1, r2, x0, x1, x2;
-  int raised = 0;
-  int ok;
-
-  for (j = 0; j < 4; j++)
-    {
-      int excepts;
-
-      fesetenv(rmodes+j);
-      r1 = FUNC(sqrt)(a);
-      excepts = fetestexcept(all_exceptions);
-      fesetenv(FE_DFL_ENV);
-      raised |= excepts & ~FE_INEXACT;
-      x1 = r1 * r1 - a;
-      if (excepts & FE_INEXACT)
-	{
-	  r0 = delta(r1,-1); r2 = delta(r1,1);
-	  switch (1 << j)
-	    {
-	    case R_NEAREST:
-	      x0 = r0 * r0 - a; x2 = r2 * r2 - a;
-	      ok = fabs(x0) >= fabs(x1) && fabs(x1) <= fabs(x2);
-	      break;
-	    case R_ZERO:  case R_DOWN:
-	      x2 = r2 * r2 - a;
-	      ok = x1 <= 0 && x2 >= 0;
-	      break;
-	    case R_UP:
-	      x0 = r0 * r0 - a;
-	      ok = x1 >= 0 && x0 <= 0;
-	      break;
-	    default:
-	      assert(0);
-	    }
-	}
-      else
-	ok = x1 == 0;
-      if (!ok)
-	fail_xr(__LINE__,rmnames[j],a,r1,x1,excepts&FE_INEXACT);
-    }
-  check_excepts(__LINE__,"all",0,raised);
-}
-
-int main(int argc, char **argv)
-{
-  int i;
-
-  _LIB_VERSION = _IEEE_;
-
-  /* Set up environments for rounding modes.  */
-  fesetenv(FE_DFL_ENV);
-  fesetround(FE_TONEAREST);
-  fegetenv(rmodes+0);
-  fesetround(FE_TOWARDZERO);
-  fegetenv(rmodes+1);
-  fesetround(FE_UPWARD);
-  fegetenv(rmodes+2);
-  fesetround(FE_DOWNWARD);
-  fegetenv(rmodes+3);
-
-#if defined(FE_INVALID_SOFTWARE) || defined(FE_INVALID_SQRT)
-  /* There's this really stupid feature of the 601... */
-  fesetenv(FE_DFL_ENV);
-  feraiseexcept(FE_INVALID_SOFTWARE);
-  if (!fetestexcept(FE_INVALID_SOFTWARE))
-    excepts_missing |= FE_INVALID_SOFTWARE;
-  fesetenv(FE_DFL_ENV);
-  feraiseexcept(FE_INVALID_SQRT);
-  if (!fetestexcept(FE_INVALID_SQRT))
-    excepts_missing |= FE_INVALID_SQRT;
-#endif
-
-  check_op();
-  for (i = 0; i < 100000; i++)
-    check_sqrt(pattern(0, P_Rno, P_R));
-  for (i = 0; i < 100; i++)
-    check_sqrt(pattern(0, P_Z, P_R));
-  check_sqrt(pattern(0,P_Z,P_Z1));
-
-  printf("%d errors.\n", nerrors);
-  return nerrors == 0 ? 0 : 1;
-}
diff --git a/sysdeps/powerpc/test-arithf.c b/sysdeps/powerpc/test-arithf.c
deleted file mode 100644
index d78ec49009..0000000000
--- a/sysdeps/powerpc/test-arithf.c
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef float tocheck_t;
-#define ESIZE 8
-#define MSIZE 23
-#define FUNC(x) x##f
-
-#include "test-arith.c"
diff --git a/sysdeps/powerpc/test-get_hwcap-static.c b/sysdeps/powerpc/test-get_hwcap-static.c
deleted file mode 100644
index 86d1ca355b..0000000000
--- a/sysdeps/powerpc/test-get_hwcap-static.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Check __ppc_get_hwcap() and __ppc_get_at_plaftorm() functionality.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Tests if the hwcap, hwcap2 and platform data are stored in the TCB.  */
-
-#define STATIC_TST_HWCAP 1
-
-#include "test-get_hwcap.c"
diff --git a/sysdeps/powerpc/test-get_hwcap.c b/sysdeps/powerpc/test-get_hwcap.c
deleted file mode 100644
index d776310734..0000000000
--- a/sysdeps/powerpc/test-get_hwcap.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Check __ppc_get_hwcap() and __ppc_get_at_plaftorm() functionality.
-   Copyright (C) 2015-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Tests if the hwcap, hwcap2 and platform data are stored in the TCB.  */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <pthread.h>
-
-#include <support/check.h>
-#include <support/xthread.h>
-
-#include <sys/auxv.h>
-
-#include <dl-procinfo.h>
-
-#ifndef STATIC_TST_HWCAP
-#undef PROCINFO_DECL
-#include <dl-procinfo.c>
-#endif
-
-/* Offsets copied from tcb-offsets.h.  */
-
-#ifdef __powerpc64__
-# define __TPREG     "r13"
-# define __HWCAPOFF -28776
-# define __ATPLATOFF -28764
-#else
-# define __TPREG     "r2"
-# define __HWCAPOFF -28736
-# define __HWCAP2OFF -28732
-# define __ATPLATOFF -28724
-#endif
-
-uint64_t check_tcbhwcap (long tid)
-{
-
-  uint32_t tcb_at_platform, at_platform;
-  uint64_t hwcap, hwcap2, tcb_hwcap;
-  const char *at_platform_string;
-
-  /* Testing if the hwcap/hwcap2 data is correctly initialized by
-     TLS_TP_INIT.  */
-
-  register unsigned long __tp __asm__ (__TPREG);
-
-#ifdef __powerpc64__
-  __asm__  ("ld %0,%1(%2)\n"
-	    : "=r" (tcb_hwcap)
-	    : "i" (__HWCAPOFF), "b" (__tp));
-#else
-  uint64_t h1, h2;
-
-  __asm__ ("lwz %0,%1(%2)\n"
-      : "=r" (h1)
-      : "i" (__HWCAPOFF), "b" (__tp));
-  __asm__ ("lwz %0,%1(%2)\n"
-      : "=r" (h2)
-      : "i" (__HWCAP2OFF), "b" (__tp));
-  tcb_hwcap = (h1 >> 32) << 32 | (h2 >> 32);
-#endif
-
-  hwcap = getauxval (AT_HWCAP);
-  hwcap2 = getauxval (AT_HWCAP2);
-
-  /* hwcap contains only the latest supported ISA, the code checks which is
-     and fills the previous supported ones.  This is necessary because the
-     same is done in hwcapinfo.c when setting the values that are copied to
-     the TCB.  */
-
-  if (hwcap2 & PPC_FEATURE2_ARCH_2_07)
-    hwcap |= PPC_FEATURE_ARCH_2_06
-	  | PPC_FEATURE_ARCH_2_05
-	  | PPC_FEATURE_POWER5_PLUS
-	  | PPC_FEATURE_POWER5
-	  | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_ARCH_2_06)
-    hwcap |= PPC_FEATURE_ARCH_2_05
-	  | PPC_FEATURE_POWER5_PLUS
-	  | PPC_FEATURE_POWER5
-	  | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_ARCH_2_05)
-    hwcap |= PPC_FEATURE_POWER5_PLUS
-	  | PPC_FEATURE_POWER5
-	  | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5_PLUS)
-    hwcap |= PPC_FEATURE_POWER5
-	  | PPC_FEATURE_POWER4;
-  else if (hwcap & PPC_FEATURE_POWER5)
-    hwcap |= PPC_FEATURE_POWER4;
-
-  hwcap = (hwcap << 32) + hwcap2;
-
-  if ( tcb_hwcap != hwcap )
-    {
-      printf ("FAIL: __ppc_get_hwcap() - HWCAP is %" PRIx64 ". Should be %"
-	      PRIx64 " for thread %ld.\n", tcb_hwcap, hwcap, tid);
-      return 1;
-    }
-
-  /* Same test for the platform number.  */
-  __asm__  ("lwz %0,%1(%2)\n"
-	    : "=r" (tcb_at_platform)
-	    : "i" (__ATPLATOFF), "b" (__tp));
-
-  at_platform_string = (const char *) getauxval (AT_PLATFORM);
-  at_platform = _dl_string_platform (at_platform_string);
-
-  if ( tcb_at_platform != at_platform )
-    {
-      printf ("FAIL: __ppc_get_at_platform() - AT_PLATFORM is %x. Should be %x"
-	     " for thread %ld\n", tcb_at_platform, at_platform, tid);
-      return 1;
-    }
-
-  return 0;
-}
-
-void *t1 (void *tid)
-{
-  if (check_tcbhwcap ((long) tid))
-    {
-      pthread_exit (tid);
-    }
-
-  pthread_exit (NULL);
-
-}
-
-static int
-do_test (void)
-{
-
-  pthread_t threads[2];
-  pthread_attr_t attr;
-  pthread_attr_init (&attr);
-  pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_JOINABLE);
-
-  long i = 0;
-
-  /* Check for main.  */
-  if (check_tcbhwcap (i))
-    {
-      return 1;
-    }
-
-  /* Check for other thread.  */
-  i++;
-  threads[i] = xpthread_create (&attr, t1, (void *)i);
-
-  pthread_attr_destroy (&attr);
-  TEST_VERIFY_EXIT (xpthread_join (threads[i]) == NULL);
-
-  printf("PASS: HWCAP, HWCAP2 and AT_PLATFORM are correctly set in the TCB for"
-	 " all threads.\n");
-
-  pthread_exit (NULL);
-
-}
-
-#include <support/test-driver.c>
diff --git a/sysdeps/powerpc/test-gettimebase.c b/sysdeps/powerpc/test-gettimebase.c
deleted file mode 100644
index 0e8e2f00fc..0000000000
--- a/sysdeps/powerpc/test-gettimebase.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Check __ppc_get_timebase() for architecture changes
-   Copyright (C) 2012-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Test if __ppc_get_timebase() is compatible with the current processor and if
-   it's changing between reads.  A read failure might indicate a Power ISA or
-   binutils change.  */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdint.h>
-
-#include <sys/platform/ppc.h>
-
-static int
-do_test (void)
-{
-  uint64_t t1, t2, t3;
-  t1 = __ppc_get_timebase ();
-  printf ("Time Base = %"PRIu64"\n", t1);
-  t2 = __ppc_get_timebase ();
-  printf ("Time Base = %"PRIu64"\n", t2);
-  t3 = __ppc_get_timebase ();
-  printf ("Time Base = %"PRIu64"\n", t3);
-  if (t1 != t2 && t1 != t3 && t2 != t3)
-    return 0;
-
-  printf ("Fail: timebase reads should always be different.\n");
-  return 1;
-}
-
-#include <support/test-driver.c>
diff --git a/sysdeps/powerpc/tls-macros.h b/sysdeps/powerpc/tls-macros.h
deleted file mode 100644
index 809ef5cea1..0000000000
--- a/sysdeps/powerpc/tls-macros.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define __TLS_CALL_CLOBBERS						      \
-	"0", "4", "5", "6", "7", "8", "9", "10", "11", "12",		      \
-	"lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7"
diff --git a/sysdeps/powerpc/tst-set_ppr.c b/sysdeps/powerpc/tst-set_ppr.c
deleted file mode 100644
index df8dda78e8..0000000000
--- a/sysdeps/powerpc/tst-set_ppr.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Test the implementation of __ppc_set_ppr_* functions.
-   Copyright (C) 2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <sys/auxv.h>
-
-#include <sys/platform/ppc.h>
-
-#include <support/test-driver.h>
-
-#ifdef __powerpc64__
-  typedef uint64_t ppr_t;
-# define MFPPR "mfppr"
-  /* The thread priority value is obtained from bits 11:13.  */
-# define EXTRACT_THREAD_PRIORITY(x) ((x >> 50) & 7)
-#else
-  typedef uint32_t ppr_t;
-# define MFPPR "mfppr32"
-  /* For 32-bit, the upper 32 bits of the Program Priority Register (PPR)
-     are used, so the thread priority value is obtained from bits 43:46.  */
-# define EXTRACT_THREAD_PRIORITY(x) ((x >> 18) & 7)
-#endif /* !__powerpc64__ */
-
-/* Read the thread priority value set in the PPR.  */
-static __inline__ ppr_t
-get_thread_priority (void)
-{
-  /* Read the PPR.  */
-  ppr_t ppr;
-  asm volatile (MFPPR" %0" : "=r"(ppr));
-  /* Return the thread priority value.  */
-  return EXTRACT_THREAD_PRIORITY (ppr);
-}
-
-/* Check the thread priority bits of PPR are set as expected. */
-uint8_t
-check_thread_priority (uint8_t expected)
-{
-  ppr_t actual = get_thread_priority ();
-
-  if (actual != expected)
-    {
-      printf ("FAIL: Expected %"PRIu8" got %"PRIuMAX".\n", expected,
-	      (uintmax_t) actual);
-      return 1;
-    }
-  printf ("PASS: Thread priority set to %"PRIu8" correctly.\n", expected);
-  return 0;
-}
-
-/* The Power ISA 2.06 allows the following thread priorities for any
-   problem state program: low (2), medium low (3), and medium (4).
-   Power ISA 2.07b added very low (1).
-   Check whether the values set by __ppc_set_ppr_* are correct.  */
-static int
-do_test (void)
-{
-  /* Check for the minimum required Power ISA to run these tests.  */
-  if ((getauxval (AT_HWCAP) & PPC_FEATURE_ARCH_2_06) == 0)
-    {
-      printf ("Requires an environment that implements the Power ISA version"
-              " 2.06 or greater.\n");
-      return EXIT_UNSUPPORTED;
-    }
-
-  uint8_t rc = 0;
-
-#ifdef _ARCH_PWR8
-  __ppc_set_ppr_very_low ();
-  rc |= check_thread_priority (1);
-#endif /* _ARCH_PWR8 */
-
-  __ppc_set_ppr_low ();
-  rc |= check_thread_priority (2);
-
-  __ppc_set_ppr_med_low ();
-  rc |= check_thread_priority (3);
-
-  __ppc_set_ppr_med ();
-  rc |= check_thread_priority (4);
-
-  return rc;
-}
-
-#include <support/test-driver.c>
diff --git a/sysdeps/powerpc/tst-stack-align.h b/sysdeps/powerpc/tst-stack-align.h
deleted file mode 100644
index c01d0793ff..0000000000
--- a/sysdeps/powerpc/tst-stack-align.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2005-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdio.h>
-#include <stdint.h>
-
-#define TEST_STACK_ALIGN() \
-  ({									     \
-    /* Altivec __vector int etc. needs 16byte aligned stack.		     \
-       Instead of using altivec.h here, use aligned attribute instead.  */   \
-    struct _S								     \
-      {									     \
-        int _i __attribute__((aligned (16)));				     \
-	int _j[3];							     \
-      } _s = { ._i = 18, ._j[0] = 19, ._j[1] = 20, ._j[2] = 21 };	     \
-    double _d = 12.0;							     \
-    long double _ld = 15.0;						     \
-    int _ret = 0;							     \
-    printf ("__vector int:  { %d, %d, %d, %d } %p %zu\n", _s._i, _s._j[0],   \
-            _s._j[1], _s._j[2], &_s, __alignof (_s));			     \
-    if ((((uintptr_t) &_s) & (__alignof (_s) - 1)) != 0)		     \
-      _ret = 1;								     \
-									     \
-    printf ("double:  %g %p %zu\n", _d, &_d, __alignof (double));	     \
-    if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0)		     \
-      _ret = 1;								     \
-									     \
-    printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double));    \
-    if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0)	     \
-      _ret = 1;								     \
-    _ret;								     \
-    })
diff --git a/sysdeps/powerpc/tst-tlsopt-powerpc.c b/sysdeps/powerpc/tst-tlsopt-powerpc.c
deleted file mode 100644
index 8ae928a3f4..0000000000
--- a/sysdeps/powerpc/tst-tlsopt-powerpc.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* glibc test for __tls_get_addr optimization.  */
-#include <stdio.h>
-
-#include "../../elf/tls-macros.h"
-#include "dl-tls.h"
-
-/* common 'int' variable in TLS.  */
-COMMON_INT_DEF(foo);
-
-
-static int
-do_test (void)
-{
-  int result = 0;
-
-  /* Get variable using general dynamic model.  */
-  int *ap = TLS_GD (foo);
-  if (*ap != 0)
-    {
-      printf ("foo = %d\n", *ap);
-      result = 1;
-    }
-
-  tls_index *tls_arg;
-#ifdef __powerpc64__
-  register unsigned long thread_pointer __asm__ ("r13");
-  asm ("addi %0,2,foo@got@tlsgd" : "=r" (tls_arg));
-#else
-  register unsigned long thread_pointer __asm__ ("r2");
-  asm ("bcl 20,31,1f\n1:\t"
-       "mflr %0\n\t"
-       "addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n\t"
-       "addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n\t"
-       "addi %0,%0,foo@got@tlsgd" : "=b" (tls_arg));
-#endif
-
-  if (tls_arg->ti_module != 0)
-    {
-      printf ("tls_index not optimized, binutils too old?\n");
-      result = 1;
-    }
-  else if (tls_arg->ti_offset + thread_pointer != (unsigned long) ap)
-    {
-      printf ("tls_index->ti_offset wrong value\n");
-      result = 1;
-    }
-
-  return result;
-}
-
-#include <support/test-driver.c>