about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1127
-rw-r--r--math/machine/endian.h4
-rw-r--r--math/math_private.h99
-rw-r--r--math/w_acos.c (renamed from sysdeps/libm-ieee754/w_acos.c)0
-rw-r--r--math/w_acosf.c (renamed from sysdeps/libm-ieee754/w_acosf.c)0
-rw-r--r--math/w_acosh.c (renamed from sysdeps/libm-ieee754/w_acosh.c)0
-rw-r--r--math/w_acoshf.c (renamed from sysdeps/libm-ieee754/w_acoshf.c)0
-rw-r--r--math/w_acoshl.c (renamed from sysdeps/libm-ieee754/w_acoshl.c)0
-rw-r--r--math/w_acosl.c (renamed from sysdeps/libm-ieee754/w_acosl.c)0
-rw-r--r--math/w_asin.c (renamed from sysdeps/libm-ieee754/w_asin.c)0
-rw-r--r--math/w_asinf.c (renamed from sysdeps/libm-ieee754/w_asinf.c)0
-rw-r--r--math/w_asinl.c (renamed from sysdeps/libm-ieee754/w_asinl.c)0
-rw-r--r--math/w_atan2.c (renamed from sysdeps/libm-ieee754/w_atan2.c)0
-rw-r--r--math/w_atan2f.c (renamed from sysdeps/libm-ieee754/w_atan2f.c)0
-rw-r--r--math/w_atan2l.c (renamed from sysdeps/libm-ieee754/w_atan2l.c)0
-rw-r--r--math/w_atanh.c (renamed from sysdeps/libm-ieee754/w_atanh.c)0
-rw-r--r--math/w_atanhf.c (renamed from sysdeps/libm-ieee754/w_atanhf.c)0
-rw-r--r--math/w_atanhl.c (renamed from sysdeps/libm-ieee754/w_atanhl.c)0
-rw-r--r--math/w_cosh.c (renamed from sysdeps/libm-ieee754/w_cosh.c)0
-rw-r--r--math/w_coshf.c (renamed from sysdeps/libm-ieee754/w_coshf.c)0
-rw-r--r--math/w_coshl.c (renamed from sysdeps/libm-ieee754/w_coshl.c)0
-rw-r--r--math/w_drem.c (renamed from sysdeps/libm-ieee754/w_drem.c)0
-rw-r--r--math/w_dremf.c (renamed from sysdeps/libm-ieee754/w_dremf.c)0
-rw-r--r--math/w_dreml.c (renamed from sysdeps/libm-ieee754/w_dreml.c)0
-rw-r--r--math/w_exp10.c (renamed from sysdeps/libm-ieee754/w_exp10.c)0
-rw-r--r--math/w_exp10f.c (renamed from sysdeps/libm-ieee754/w_exp10f.c)0
-rw-r--r--math/w_exp10l.c (renamed from sysdeps/libm-ieee754/w_exp10l.c)0
-rw-r--r--math/w_exp2.c (renamed from sysdeps/libm-ieee754/w_exp2.c)0
-rw-r--r--math/w_exp2f.c (renamed from sysdeps/libm-ieee754/w_exp2f.c)0
-rw-r--r--math/w_exp2l.c (renamed from sysdeps/libm-ieee754/w_exp2l.c)0
-rw-r--r--math/w_fmod.c (renamed from sysdeps/libm-ieee754/w_fmod.c)0
-rw-r--r--math/w_fmodf.c (renamed from sysdeps/libm-ieee754/w_fmodf.c)0
-rw-r--r--math/w_fmodl.c (renamed from sysdeps/libm-ieee754/w_fmodl.c)0
-rw-r--r--math/w_hypot.c (renamed from sysdeps/libm-ieee754/w_hypot.c)0
-rw-r--r--math/w_hypotf.c (renamed from sysdeps/libm-ieee754/w_hypotf.c)0
-rw-r--r--math/w_hypotl.c (renamed from sysdeps/libm-ieee754/w_hypotl.c)0
-rw-r--r--math/w_j0.c (renamed from sysdeps/libm-ieee754/w_j0.c)0
-rw-r--r--math/w_j0f.c (renamed from sysdeps/libm-ieee754/w_j0f.c)0
-rw-r--r--math/w_j0l.c (renamed from sysdeps/libm-ieee754/w_j0l.c)0
-rw-r--r--math/w_j1.c (renamed from sysdeps/libm-ieee754/w_j1.c)0
-rw-r--r--math/w_j1f.c (renamed from sysdeps/libm-ieee754/w_j1f.c)0
-rw-r--r--math/w_j1l.c (renamed from sysdeps/libm-ieee754/w_j1l.c)0
-rw-r--r--math/w_jn.c (renamed from sysdeps/libm-ieee754/w_jn.c)0
-rw-r--r--math/w_jnf.c (renamed from sysdeps/libm-ieee754/w_jnf.c)0
-rw-r--r--math/w_jnl.c (renamed from sysdeps/libm-ieee754/w_jnl.c)0
-rw-r--r--math/w_lgamma.c (renamed from sysdeps/libm-ieee754/w_lgamma.c)0
-rw-r--r--math/w_lgamma_r.c (renamed from sysdeps/libm-ieee754/w_lgamma_r.c)0
-rw-r--r--math/w_lgammaf.c (renamed from sysdeps/libm-ieee754/w_lgammaf.c)0
-rw-r--r--math/w_lgammaf_r.c (renamed from sysdeps/libm-ieee754/w_lgammaf_r.c)0
-rw-r--r--math/w_lgammal.c (renamed from sysdeps/libm-ieee754/w_lgammal.c)0
-rw-r--r--math/w_lgammal_r.c (renamed from sysdeps/libm-ieee754/w_lgammal_r.c)0
-rw-r--r--math/w_log.c (renamed from sysdeps/libm-ieee754/w_log.c)0
-rw-r--r--math/w_log10.c (renamed from sysdeps/libm-ieee754/w_log10.c)0
-rw-r--r--math/w_log10f.c (renamed from sysdeps/libm-ieee754/w_log10f.c)0
-rw-r--r--math/w_log10l.c (renamed from sysdeps/libm-ieee754/w_log10l.c)0
-rw-r--r--math/w_logf.c (renamed from sysdeps/libm-ieee754/w_logf.c)0
-rw-r--r--math/w_logl.c (renamed from sysdeps/libm-ieee754/w_logl.c)0
-rw-r--r--math/w_pow.c (renamed from sysdeps/libm-ieee754/w_pow.c)0
-rw-r--r--math/w_powf.c (renamed from sysdeps/libm-ieee754/w_powf.c)0
-rw-r--r--math/w_powl.c (renamed from sysdeps/libm-ieee754/w_powl.c)0
-rw-r--r--math/w_remainder.c (renamed from sysdeps/libm-ieee754/w_remainder.c)0
-rw-r--r--math/w_remainderf.c (renamed from sysdeps/libm-ieee754/w_remainderf.c)0
-rw-r--r--math/w_remainderl.c (renamed from sysdeps/libm-ieee754/w_remainderl.c)0
-rw-r--r--math/w_scalb.c (renamed from sysdeps/libm-ieee754/w_scalb.c)0
-rw-r--r--math/w_scalbf.c (renamed from sysdeps/libm-ieee754/w_scalbf.c)0
-rw-r--r--math/w_scalbl.c (renamed from sysdeps/libm-ieee754/w_scalbl.c)0
-rw-r--r--math/w_sinh.c (renamed from sysdeps/libm-ieee754/w_sinh.c)0
-rw-r--r--math/w_sinhf.c (renamed from sysdeps/libm-ieee754/w_sinhf.c)0
-rw-r--r--math/w_sinhl.c (renamed from sysdeps/libm-ieee754/w_sinhl.c)0
-rw-r--r--math/w_sqrt.c (renamed from sysdeps/libm-ieee754/w_sqrt.c)0
-rw-r--r--math/w_sqrtf.c (renamed from sysdeps/libm-ieee754/w_sqrtf.c)0
-rw-r--r--math/w_sqrtl.c (renamed from sysdeps/libm-ieee754/w_sqrtl.c)0
-rw-r--r--math/w_tgamma.c (renamed from sysdeps/libm-ieee754/w_tgamma.c)0
-rw-r--r--math/w_tgammaf.c (renamed from sysdeps/libm-ieee754/w_tgammaf.c)0
-rw-r--r--math/w_tgammal.c (renamed from sysdeps/libm-ieee754/w_tgammal.c)0
-rw-r--r--stdio-common/printf_fp.c25
-rw-r--r--sysdeps/alpha/Implies5
-rw-r--r--sysdeps/arm/Implies3
-rw-r--r--sysdeps/generic/e_atanhl.c14
-rw-r--r--sysdeps/generic/e_coshl.c14
-rw-r--r--sysdeps/generic/e_exp10.c (renamed from sysdeps/libm-ieee754/e_exp10.c)0
-rw-r--r--sysdeps/generic/e_exp10f.c (renamed from sysdeps/libm-ieee754/e_exp10f.c)0
-rw-r--r--sysdeps/generic/e_exp10l.c (renamed from sysdeps/libm-ieee754/e_exp10l.c)0
-rw-r--r--sysdeps/generic/e_gammal_r.c14
-rw-r--r--sysdeps/generic/e_hypotl.c14
-rw-r--r--sysdeps/generic/e_scalb.c (renamed from sysdeps/libm-ieee754/e_scalb.c)0
-rw-r--r--sysdeps/generic/e_scalbf.c (renamed from sysdeps/libm-ieee754/e_scalbf.c)0
-rw-r--r--sysdeps/generic/e_scalbl.c (renamed from sysdeps/libm-ieee754/e_scalbl.c)0
-rw-r--r--sysdeps/generic/e_sinhl.c14
-rw-r--r--sysdeps/generic/ldbl2mpn.c33
-rw-r--r--sysdeps/generic/math_ldbl.h5
-rw-r--r--sysdeps/generic/mpn2ldbl.c31
-rw-r--r--sysdeps/generic/printf_fphex.c64
-rw-r--r--sysdeps/generic/s_asinhl.c15
-rw-r--r--sysdeps/generic/s_cacos.c (renamed from sysdeps/libm-ieee754/s_cacos.c)0
-rw-r--r--sysdeps/generic/s_cacosf.c (renamed from sysdeps/libm-ieee754/s_cacosf.c)0
-rw-r--r--sysdeps/generic/s_cacosh.c (renamed from sysdeps/libm-ieee754/s_cacosh.c)0
-rw-r--r--sysdeps/generic/s_cacoshf.c (renamed from sysdeps/libm-ieee754/s_cacoshf.c)0
-rw-r--r--sysdeps/generic/s_cacoshl.c (renamed from sysdeps/libm-ieee754/s_cacoshl.c)0
-rw-r--r--sysdeps/generic/s_cacosl.c (renamed from sysdeps/libm-ieee754/s_cacosl.c)0
-rw-r--r--sysdeps/generic/s_casin.c (renamed from sysdeps/libm-ieee754/s_casin.c)0
-rw-r--r--sysdeps/generic/s_casinf.c (renamed from sysdeps/libm-ieee754/s_casinf.c)0
-rw-r--r--sysdeps/generic/s_casinh.c (renamed from sysdeps/libm-ieee754/s_casinh.c)0
-rw-r--r--sysdeps/generic/s_casinhf.c (renamed from sysdeps/libm-ieee754/s_casinhf.c)0
-rw-r--r--sysdeps/generic/s_casinhl.c (renamed from sysdeps/libm-ieee754/s_casinhl.c)0
-rw-r--r--sysdeps/generic/s_casinl.c (renamed from sysdeps/libm-ieee754/s_casinl.c)0
-rw-r--r--sysdeps/generic/s_catan.c (renamed from sysdeps/libm-ieee754/s_catan.c)0
-rw-r--r--sysdeps/generic/s_catanf.c (renamed from sysdeps/libm-ieee754/s_catanf.c)0
-rw-r--r--sysdeps/generic/s_catanh.c (renamed from sysdeps/libm-ieee754/s_catanh.c)0
-rw-r--r--sysdeps/generic/s_catanhf.c (renamed from sysdeps/libm-ieee754/s_catanhf.c)0
-rw-r--r--sysdeps/generic/s_catanhl.c (renamed from sysdeps/libm-ieee754/s_catanhl.c)0
-rw-r--r--sysdeps/generic/s_catanl.c (renamed from sysdeps/libm-ieee754/s_catanl.c)0
-rw-r--r--sysdeps/generic/s_cbrtl.c15
-rw-r--r--sysdeps/generic/s_ccos.c (renamed from sysdeps/libm-ieee754/s_ccos.c)0
-rw-r--r--sysdeps/generic/s_ccosf.c (renamed from sysdeps/libm-ieee754/s_ccosf.c)0
-rw-r--r--sysdeps/generic/s_ccosh.c (renamed from sysdeps/libm-ieee754/s_ccosh.c)0
-rw-r--r--sysdeps/generic/s_ccoshf.c (renamed from sysdeps/libm-ieee754/s_ccoshf.c)0
-rw-r--r--sysdeps/generic/s_ccoshl.c (renamed from sysdeps/libm-ieee754/s_ccoshl.c)0
-rw-r--r--sysdeps/generic/s_ccosl.c (renamed from sysdeps/libm-ieee754/s_ccosl.c)0
-rw-r--r--sysdeps/generic/s_cexp.c (renamed from sysdeps/libm-ieee754/s_cexp.c)0
-rw-r--r--sysdeps/generic/s_cexpf.c (renamed from sysdeps/libm-ieee754/s_cexpf.c)0
-rw-r--r--sysdeps/generic/s_cexpl.c (renamed from sysdeps/libm-ieee754/s_cexpl.c)0
-rw-r--r--sysdeps/generic/s_clog.c (renamed from sysdeps/libm-ieee754/s_clog.c)0
-rw-r--r--sysdeps/generic/s_clog10.c (renamed from sysdeps/libm-ieee754/s_clog10.c)0
-rw-r--r--sysdeps/generic/s_clog10f.c (renamed from sysdeps/libm-ieee754/s_clog10f.c)0
-rw-r--r--sysdeps/generic/s_clog10l.c (renamed from sysdeps/libm-ieee754/s_clog10l.c)0
-rw-r--r--sysdeps/generic/s_clogf.c (renamed from sysdeps/libm-ieee754/s_clogf.c)0
-rw-r--r--sysdeps/generic/s_clogl.c (renamed from sysdeps/libm-ieee754/s_clogl.c)0
-rw-r--r--sysdeps/generic/s_cpow.c (renamed from sysdeps/libm-ieee754/s_cpow.c)0
-rw-r--r--sysdeps/generic/s_cpowf.c (renamed from sysdeps/libm-ieee754/s_cpowf.c)0
-rw-r--r--sysdeps/generic/s_cpowl.c (renamed from sysdeps/libm-ieee754/s_cpowl.c)0
-rw-r--r--sysdeps/generic/s_cproj.c (renamed from sysdeps/libm-ieee754/s_cproj.c)0
-rw-r--r--sysdeps/generic/s_cprojf.c (renamed from sysdeps/libm-ieee754/s_cprojf.c)0
-rw-r--r--sysdeps/generic/s_cprojl.c (renamed from sysdeps/libm-ieee754/s_cprojl.c)0
-rw-r--r--sysdeps/generic/s_csin.c (renamed from sysdeps/libm-ieee754/s_csin.c)0
-rw-r--r--sysdeps/generic/s_csinf.c (renamed from sysdeps/libm-ieee754/s_csinf.c)0
-rw-r--r--sysdeps/generic/s_csinh.c (renamed from sysdeps/libm-ieee754/s_csinh.c)0
-rw-r--r--sysdeps/generic/s_csinhf.c (renamed from sysdeps/libm-ieee754/s_csinhf.c)0
-rw-r--r--sysdeps/generic/s_csinhl.c (renamed from sysdeps/libm-ieee754/s_csinhl.c)0
-rw-r--r--sysdeps/generic/s_csinl.c (renamed from sysdeps/libm-ieee754/s_csinl.c)0
-rw-r--r--sysdeps/generic/s_csqrt.c (renamed from sysdeps/libm-ieee754/s_csqrt.c)0
-rw-r--r--sysdeps/generic/s_csqrtf.c (renamed from sysdeps/libm-ieee754/s_csqrtf.c)0
-rw-r--r--sysdeps/generic/s_csqrtl.c (renamed from sysdeps/libm-ieee754/s_csqrtl.c)0
-rw-r--r--sysdeps/generic/s_ctan.c (renamed from sysdeps/libm-ieee754/s_ctan.c)0
-rw-r--r--sysdeps/generic/s_ctanf.c (renamed from sysdeps/libm-ieee754/s_ctanf.c)0
-rw-r--r--sysdeps/generic/s_ctanh.c (renamed from sysdeps/libm-ieee754/s_ctanh.c)0
-rw-r--r--sysdeps/generic/s_ctanhf.c (renamed from sysdeps/libm-ieee754/s_ctanhf.c)0
-rw-r--r--sysdeps/generic/s_ctanhl.c (renamed from sysdeps/libm-ieee754/s_ctanhl.c)0
-rw-r--r--sysdeps/generic/s_ctanl.c (renamed from sysdeps/libm-ieee754/s_ctanl.c)0
-rw-r--r--sysdeps/generic/s_fdim.c (renamed from sysdeps/libm-ieee754/s_fdim.c)0
-rw-r--r--sysdeps/generic/s_fdimf.c (renamed from sysdeps/libm-ieee754/s_fdimf.c)0
-rw-r--r--sysdeps/generic/s_fdiml.c (renamed from sysdeps/libm-ieee754/s_fdiml.c)0
-rw-r--r--sysdeps/generic/s_fma.c (renamed from sysdeps/libm-ieee754/s_fma.c)0
-rw-r--r--sysdeps/generic/s_fmaf.c (renamed from sysdeps/libm-ieee754/s_fmaf.c)0
-rw-r--r--sysdeps/generic/s_fmal.c (renamed from sysdeps/libm-ieee754/s_fmal.c)0
-rw-r--r--sysdeps/generic/s_fmax.c (renamed from sysdeps/libm-ieee754/s_fmax.c)0
-rw-r--r--sysdeps/generic/s_fmaxf.c (renamed from sysdeps/libm-ieee754/s_fmaxf.c)0
-rw-r--r--sysdeps/generic/s_fmaxl.c (renamed from sysdeps/libm-ieee754/s_fmaxl.c)0
-rw-r--r--sysdeps/generic/s_fmin.c (renamed from sysdeps/libm-ieee754/s_fmin.c)0
-rw-r--r--sysdeps/generic/s_fminf.c (renamed from sysdeps/libm-ieee754/s_fminf.c)0
-rw-r--r--sysdeps/generic/s_fminl.c (renamed from sysdeps/libm-ieee754/s_fminl.c)0
-rw-r--r--sysdeps/generic/s_ldexp.c (renamed from sysdeps/libm-ieee754/s_ldexp.c)0
-rw-r--r--sysdeps/generic/s_ldexpf.c (renamed from sysdeps/libm-ieee754/s_ldexpf.c)0
-rw-r--r--sysdeps/generic/s_ldexpl.c (renamed from sysdeps/libm-ieee754/s_ldexpl.c)0
-rw-r--r--sysdeps/generic/s_nan.c (renamed from sysdeps/libm-ieee754/s_nan.c)0
-rw-r--r--sysdeps/generic/s_nanf.c (renamed from sysdeps/libm-ieee754/s_nanf.c)0
-rw-r--r--sysdeps/generic/s_nanl.c (renamed from sysdeps/libm-ieee754/s_nanl.c)0
-rw-r--r--sysdeps/generic/s_nextafter.c (renamed from sysdeps/libm-ieee754/s_nextafter.c)2
-rw-r--r--sysdeps/generic/s_nexttowardf.c79
-rw-r--r--sysdeps/generic/s_nexttowardl.c (renamed from sysdeps/libm-ieee754/s_nexttowardl.c)0
-rw-r--r--sysdeps/generic/s_significand.c (renamed from sysdeps/libm-ieee754/s_significand.c)0
-rw-r--r--sysdeps/generic/s_significandf.c (renamed from sysdeps/libm-ieee754/s_significandf.c)0
-rw-r--r--sysdeps/generic/s_significandl.c (renamed from sysdeps/libm-ieee754/s_significandl.c)4
-rw-r--r--sysdeps/generic/s_tanhl.c15
-rw-r--r--sysdeps/generic/strtold.c42
-rw-r--r--sysdeps/generic/w_expl.c13
-rw-r--r--sysdeps/i386/Implies4
-rw-r--r--sysdeps/i386/fpu/Implies2
-rw-r--r--sysdeps/i386/fpu/e_acos.S (renamed from sysdeps/libm-i387/e_acos.S)0
-rw-r--r--sysdeps/i386/fpu/e_acosf.S (renamed from sysdeps/libm-i387/e_acosf.S)0
-rw-r--r--sysdeps/i386/fpu/e_acosh.S (renamed from sysdeps/libm-i387/e_acosh.S)0
-rw-r--r--sysdeps/i386/fpu/e_acoshf.S (renamed from sysdeps/libm-i387/e_acoshf.S)0
-rw-r--r--sysdeps/i386/fpu/e_acoshl.S (renamed from sysdeps/libm-i387/e_acoshl.S)0
-rw-r--r--sysdeps/i386/fpu/e_acosl.S (renamed from sysdeps/libm-i387/e_acosl.S)0
-rw-r--r--sysdeps/i386/fpu/e_asin.S (renamed from sysdeps/libm-i387/e_asin.S)0
-rw-r--r--sysdeps/i386/fpu/e_asinf.S (renamed from sysdeps/libm-i387/e_asinf.S)0
-rw-r--r--sysdeps/i386/fpu/e_asinl.S (renamed from sysdeps/libm-i387/e_asinl.S)0
-rw-r--r--sysdeps/i386/fpu/e_atan2.S (renamed from sysdeps/libm-i387/e_atan2.S)0
-rw-r--r--sysdeps/i386/fpu/e_atan2f.S (renamed from sysdeps/libm-i387/e_atan2f.S)0
-rw-r--r--sysdeps/i386/fpu/e_atan2l.S (renamed from sysdeps/libm-i387/e_atan2l.S)0
-rw-r--r--sysdeps/i386/fpu/e_atanh.S (renamed from sysdeps/libm-i387/e_atanh.S)0
-rw-r--r--sysdeps/i386/fpu/e_atanhf.S (renamed from sysdeps/libm-i387/e_atanhf.S)0
-rw-r--r--sysdeps/i386/fpu/e_atanhl.S (renamed from sysdeps/libm-i387/e_atanhl.S)0
-rw-r--r--sysdeps/i386/fpu/e_exp.S (renamed from sysdeps/libm-i387/e_exp.S)0
-rw-r--r--sysdeps/i386/fpu/e_exp10.S (renamed from sysdeps/libm-i387/e_exp10.S)0
-rw-r--r--sysdeps/i386/fpu/e_exp10f.S (renamed from sysdeps/libm-i387/e_exp10f.S)0
-rw-r--r--sysdeps/i386/fpu/e_exp10l.S (renamed from sysdeps/libm-i387/e_exp10l.S)0
-rw-r--r--sysdeps/i386/fpu/e_expf.S (renamed from sysdeps/libm-i387/e_expf.S)0
-rw-r--r--sysdeps/i386/fpu/e_expl.S (renamed from sysdeps/libm-i387/e_expl.S)0
-rw-r--r--sysdeps/i386/fpu/e_fmod.S (renamed from sysdeps/libm-i387/e_fmod.S)0
-rw-r--r--sysdeps/i386/fpu/e_fmodf.S (renamed from sysdeps/libm-i387/e_fmodf.S)0
-rw-r--r--sysdeps/i386/fpu/e_fmodl.S (renamed from sysdeps/libm-i387/e_fmodl.S)0
-rw-r--r--sysdeps/i386/fpu/e_hypot.S (renamed from sysdeps/libm-i387/e_hypot.S)0
-rw-r--r--sysdeps/i386/fpu/e_hypotf.S (renamed from sysdeps/libm-i387/e_hypotf.S)0
-rw-r--r--sysdeps/i386/fpu/e_log.S (renamed from sysdeps/libm-i387/e_log.S)0
-rw-r--r--sysdeps/i386/fpu/e_log10.S (renamed from sysdeps/libm-i387/e_log10.S)0
-rw-r--r--sysdeps/i386/fpu/e_log10f.S (renamed from sysdeps/libm-i387/e_log10f.S)0
-rw-r--r--sysdeps/i386/fpu/e_log10l.S (renamed from sysdeps/libm-i387/e_log10l.S)0
-rw-r--r--sysdeps/i386/fpu/e_logf.S (renamed from sysdeps/libm-i387/e_logf.S)0
-rw-r--r--sysdeps/i386/fpu/e_logl.S (renamed from sysdeps/libm-i387/e_logl.S)0
-rw-r--r--sysdeps/i386/fpu/e_pow.S (renamed from sysdeps/libm-i387/e_pow.S)0
-rw-r--r--sysdeps/i386/fpu/e_powf.S (renamed from sysdeps/libm-i387/e_powf.S)0
-rw-r--r--sysdeps/i386/fpu/e_powl.S (renamed from sysdeps/libm-i387/e_powl.S)0
-rw-r--r--sysdeps/i386/fpu/e_rem_pio2.c (renamed from sysdeps/libm-i387/e_rem_pio2.c)0
-rw-r--r--sysdeps/i386/fpu/e_rem_pio2f.c (renamed from sysdeps/libm-i387/e_rem_pio2f.c)0
-rw-r--r--sysdeps/i386/fpu/e_rem_pio2l.c (renamed from sysdeps/libm-i387/e_rem_pio2l.c)0
-rw-r--r--sysdeps/i386/fpu/e_remainder.S (renamed from sysdeps/libm-i387/e_remainder.S)0
-rw-r--r--sysdeps/i386/fpu/e_remainderf.S (renamed from sysdeps/libm-i387/e_remainderf.S)0
-rw-r--r--sysdeps/i386/fpu/e_remainderl.S (renamed from sysdeps/libm-i387/e_remainderl.S)0
-rw-r--r--sysdeps/i386/fpu/e_scalb.S (renamed from sysdeps/libm-i387/e_scalb.S)0
-rw-r--r--sysdeps/i386/fpu/e_scalbf.S (renamed from sysdeps/libm-i387/e_scalbf.S)0
-rw-r--r--sysdeps/i386/fpu/e_scalbl.S (renamed from sysdeps/libm-i387/e_scalbl.S)0
-rw-r--r--sysdeps/i386/fpu/e_sqrt.S (renamed from sysdeps/libm-i387/e_sqrt.S)0
-rw-r--r--sysdeps/i386/fpu/e_sqrtf.S (renamed from sysdeps/libm-i387/e_sqrtf.S)0
-rw-r--r--sysdeps/i386/fpu/e_sqrtl.S (renamed from sysdeps/libm-i387/e_sqrtl.S)0
-rw-r--r--sysdeps/i386/fpu/k_rem_pio2.c (renamed from sysdeps/libm-i387/k_rem_pio2.c)0
-rw-r--r--sysdeps/i386/fpu/k_rem_pio2f.c (renamed from sysdeps/libm-i387/k_rem_pio2f.c)0
-rw-r--r--sysdeps/i386/fpu/k_rem_pio2l.c (renamed from sysdeps/libm-i387/k_rem_pio2l.c)0
-rw-r--r--sysdeps/i386/fpu/s_asinh.S (renamed from sysdeps/libm-i387/s_asinh.S)0
-rw-r--r--sysdeps/i386/fpu/s_asinhf.S (renamed from sysdeps/libm-i387/s_asinhf.S)0
-rw-r--r--sysdeps/i386/fpu/s_asinhl.S (renamed from sysdeps/libm-i387/s_asinhl.S)0
-rw-r--r--sysdeps/i386/fpu/s_atan.S (renamed from sysdeps/libm-i387/s_atan.S)0
-rw-r--r--sysdeps/i386/fpu/s_atanf.S (renamed from sysdeps/libm-i387/s_atanf.S)0
-rw-r--r--sysdeps/i386/fpu/s_atanl.S (renamed from sysdeps/libm-i387/s_atanl.S)0
-rw-r--r--sysdeps/i386/fpu/s_cbrt.S (renamed from sysdeps/libm-i387/s_cbrt.S)0
-rw-r--r--sysdeps/i386/fpu/s_cbrtf.S (renamed from sysdeps/libm-i387/s_cbrtf.S)0
-rw-r--r--sysdeps/i386/fpu/s_cbrtl.S (renamed from sysdeps/libm-i387/s_cbrtl.S)0
-rw-r--r--sysdeps/i386/fpu/s_ceil.S (renamed from sysdeps/libm-i387/s_ceil.S)0
-rw-r--r--sysdeps/i386/fpu/s_ceilf.S (renamed from sysdeps/libm-i387/s_ceilf.S)0
-rw-r--r--sysdeps/i386/fpu/s_ceill.S (renamed from sysdeps/libm-i387/s_ceill.S)0
-rw-r--r--sysdeps/i386/fpu/s_cexp.S (renamed from sysdeps/libm-i387/s_cexp.S)0
-rw-r--r--sysdeps/i386/fpu/s_cexpf.S (renamed from sysdeps/libm-i387/s_cexpf.S)0
-rw-r--r--sysdeps/i386/fpu/s_cexpl.S (renamed from sysdeps/libm-i387/s_cexpl.S)0
-rw-r--r--sysdeps/i386/fpu/s_copysign.S (renamed from sysdeps/libm-i387/s_copysign.S)0
-rw-r--r--sysdeps/i386/fpu/s_copysignf.S (renamed from sysdeps/libm-i387/s_copysignf.S)0
-rw-r--r--sysdeps/i386/fpu/s_copysignl.S (renamed from sysdeps/libm-i387/s_copysignl.S)0
-rw-r--r--sysdeps/i386/fpu/s_cos.S (renamed from sysdeps/libm-i387/s_cos.S)0
-rw-r--r--sysdeps/i386/fpu/s_cosf.S (renamed from sysdeps/libm-i387/s_cosf.S)0
-rw-r--r--sysdeps/i386/fpu/s_cosl.S (renamed from sysdeps/libm-i387/s_cosl.S)0
-rw-r--r--sysdeps/i386/fpu/s_exp2.S (renamed from sysdeps/libm-i387/s_exp2.S)0
-rw-r--r--sysdeps/i386/fpu/s_exp2f.S (renamed from sysdeps/libm-i387/s_exp2f.S)0
-rw-r--r--sysdeps/i386/fpu/s_exp2l.S (renamed from sysdeps/libm-i387/s_exp2l.S)0
-rw-r--r--sysdeps/i386/fpu/s_expm1.S (renamed from sysdeps/libm-i387/s_expm1.S)0
-rw-r--r--sysdeps/i386/fpu/s_expm1f.S (renamed from sysdeps/libm-i387/s_expm1f.S)0
-rw-r--r--sysdeps/i386/fpu/s_expm1l.S (renamed from sysdeps/libm-i387/s_expm1l.S)0
-rw-r--r--sysdeps/i386/fpu/s_fdim.S (renamed from sysdeps/libm-i387/s_fdim.S)0
-rw-r--r--sysdeps/i386/fpu/s_fdimf.S (renamed from sysdeps/libm-i387/s_fdimf.S)0
-rw-r--r--sysdeps/i386/fpu/s_fdiml.S (renamed from sysdeps/libm-i387/s_fdiml.S)0
-rw-r--r--sysdeps/i386/fpu/s_finite.S (renamed from sysdeps/libm-i387/s_finite.S)0
-rw-r--r--sysdeps/i386/fpu/s_finitef.S (renamed from sysdeps/libm-i387/s_finitef.S)0
-rw-r--r--sysdeps/i386/fpu/s_finitel.S (renamed from sysdeps/libm-i387/s_finitel.S)0
-rw-r--r--sysdeps/i386/fpu/s_floor.S (renamed from sysdeps/libm-i387/s_floor.S)0
-rw-r--r--sysdeps/i386/fpu/s_floorf.S (renamed from sysdeps/libm-i387/s_floorf.S)0
-rw-r--r--sysdeps/i386/fpu/s_floorl.S (renamed from sysdeps/libm-i387/s_floorl.S)0
-rw-r--r--sysdeps/i386/fpu/s_fma.S (renamed from sysdeps/libm-i387/s_fma.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmaf.S (renamed from sysdeps/libm-i387/s_fmaf.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmal.S (renamed from sysdeps/libm-i387/s_fmal.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmax.S (renamed from sysdeps/libm-i387/s_fmax.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmaxf.S (renamed from sysdeps/libm-i387/s_fmaxf.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmaxl.S (renamed from sysdeps/libm-i387/s_fmaxl.S)0
-rw-r--r--sysdeps/i386/fpu/s_fmin.S (renamed from sysdeps/libm-i387/s_fmin.S)0
-rw-r--r--sysdeps/i386/fpu/s_fminf.S (renamed from sysdeps/libm-i387/s_fminf.S)0
-rw-r--r--sysdeps/i386/fpu/s_fminl.S (renamed from sysdeps/libm-i387/s_fminl.S)0
-rw-r--r--sysdeps/i386/fpu/s_frexp.S (renamed from sysdeps/libm-i387/s_frexp.S)0
-rw-r--r--sysdeps/i386/fpu/s_frexpf.S (renamed from sysdeps/libm-i387/s_frexpf.S)0
-rw-r--r--sysdeps/i386/fpu/s_frexpl.S (renamed from sysdeps/libm-i387/s_frexpl.S)0
-rw-r--r--sysdeps/i386/fpu/s_ilogb.S (renamed from sysdeps/libm-i387/s_ilogb.S)0
-rw-r--r--sysdeps/i386/fpu/s_ilogbf.S (renamed from sysdeps/libm-i387/s_ilogbf.S)0
-rw-r--r--sysdeps/i386/fpu/s_ilogbl.S (renamed from sysdeps/libm-i387/s_ilogbl.S)0
-rw-r--r--sysdeps/i386/fpu/s_isinfl.c (renamed from sysdeps/libm-i387/s_isinfl.c)0
-rw-r--r--sysdeps/i386/fpu/s_isnanl.c (renamed from sysdeps/libm-i387/s_isnanl.c)0
-rw-r--r--sysdeps/i386/fpu/s_llrint.S (renamed from sysdeps/libm-i387/s_llrint.S)0
-rw-r--r--sysdeps/i386/fpu/s_llrintf.S (renamed from sysdeps/libm-i387/s_llrintf.S)0
-rw-r--r--sysdeps/i386/fpu/s_llrintl.S (renamed from sysdeps/libm-i387/s_llrintl.S)0
-rw-r--r--sysdeps/i386/fpu/s_log1p.S (renamed from sysdeps/libm-i387/s_log1p.S)0
-rw-r--r--sysdeps/i386/fpu/s_log1pf.S (renamed from sysdeps/libm-i387/s_log1pf.S)0
-rw-r--r--sysdeps/i386/fpu/s_log1pl.S (renamed from sysdeps/libm-i387/s_log1pl.S)0
-rw-r--r--sysdeps/i386/fpu/s_log2.S (renamed from sysdeps/libm-i387/s_log2.S)0
-rw-r--r--sysdeps/i386/fpu/s_log2f.S (renamed from sysdeps/libm-i387/s_log2f.S)0
-rw-r--r--sysdeps/i386/fpu/s_log2l.S (renamed from sysdeps/libm-i387/s_log2l.S)0
-rw-r--r--sysdeps/i386/fpu/s_logb.S (renamed from sysdeps/libm-i387/s_logb.S)0
-rw-r--r--sysdeps/i386/fpu/s_logbf.S (renamed from sysdeps/libm-i387/s_logbf.S)0
-rw-r--r--sysdeps/i386/fpu/s_logbl.S (renamed from sysdeps/libm-i387/s_logbl.S)0
-rw-r--r--sysdeps/i386/fpu/s_lrint.S (renamed from sysdeps/libm-i387/s_lrint.S)0
-rw-r--r--sysdeps/i386/fpu/s_lrintf.S (renamed from sysdeps/libm-i387/s_lrintf.S)0
-rw-r--r--sysdeps/i386/fpu/s_lrintl.S (renamed from sysdeps/libm-i387/s_lrintl.S)0
-rw-r--r--sysdeps/i386/fpu/s_nearbyint.S (renamed from sysdeps/libm-i387/s_nearbyint.S)0
-rw-r--r--sysdeps/i386/fpu/s_nearbyintf.S (renamed from sysdeps/libm-i387/s_nearbyintf.S)0
-rw-r--r--sysdeps/i386/fpu/s_nearbyintl.S (renamed from sysdeps/libm-i387/s_nearbyintl.S)0
-rw-r--r--sysdeps/i386/fpu/s_nextafterl.c (renamed from sysdeps/libm-i387/s_nextafterl.c)0
-rw-r--r--sysdeps/i386/fpu/s_remquo.S (renamed from sysdeps/libm-i387/s_remquo.S)0
-rw-r--r--sysdeps/i386/fpu/s_remquof.S (renamed from sysdeps/libm-i387/s_remquof.S)0
-rw-r--r--sysdeps/i386/fpu/s_remquol.S (renamed from sysdeps/libm-i387/s_remquol.S)0
-rw-r--r--sysdeps/i386/fpu/s_rint.S (renamed from sysdeps/libm-i387/s_rint.S)0
-rw-r--r--sysdeps/i386/fpu/s_rintf.S (renamed from sysdeps/libm-i387/s_rintf.S)0
-rw-r--r--sysdeps/i386/fpu/s_rintl.S (renamed from sysdeps/libm-i387/s_rintl.S)0
-rw-r--r--sysdeps/i386/fpu/s_scalbln.c (renamed from sysdeps/libm-i387/s_scalbln.c)0
-rw-r--r--sysdeps/i386/fpu/s_scalblnf.c (renamed from sysdeps/libm-i387/s_scalblnf.c)0
-rw-r--r--sysdeps/i386/fpu/s_scalblnl.c (renamed from sysdeps/libm-i387/s_scalblnl.c)0
-rw-r--r--sysdeps/i386/fpu/s_scalbn.S (renamed from sysdeps/libm-i387/s_scalbn.S)0
-rw-r--r--sysdeps/i386/fpu/s_scalbnf.S (renamed from sysdeps/libm-i387/s_scalbnf.S)0
-rw-r--r--sysdeps/i386/fpu/s_scalbnl.S (renamed from sysdeps/libm-i387/s_scalbnl.S)0
-rw-r--r--sysdeps/i386/fpu/s_significand.S (renamed from sysdeps/libm-i387/s_significand.S)0
-rw-r--r--sysdeps/i386/fpu/s_significandf.S (renamed from sysdeps/libm-i387/s_significandf.S)0
-rw-r--r--sysdeps/i386/fpu/s_significandl.S (renamed from sysdeps/libm-i387/s_significandl.S)0
-rw-r--r--sysdeps/i386/fpu/s_sin.S (renamed from sysdeps/libm-i387/s_sin.S)0
-rw-r--r--sysdeps/i386/fpu/s_sincos.S (renamed from sysdeps/libm-i387/s_sincos.S)0
-rw-r--r--sysdeps/i386/fpu/s_sincosf.S (renamed from sysdeps/libm-i387/s_sincosf.S)0
-rw-r--r--sysdeps/i386/fpu/s_sincosl.S (renamed from sysdeps/libm-i387/s_sincosl.S)0
-rw-r--r--sysdeps/i386/fpu/s_sinf.S (renamed from sysdeps/libm-i387/s_sinf.S)0
-rw-r--r--sysdeps/i386/fpu/s_sinl.S (renamed from sysdeps/libm-i387/s_sinl.S)0
-rw-r--r--sysdeps/i386/fpu/s_tan.S (renamed from sysdeps/libm-i387/s_tan.S)0
-rw-r--r--sysdeps/i386/fpu/s_tanf.S (renamed from sysdeps/libm-i387/s_tanf.S)0
-rw-r--r--sysdeps/i386/fpu/s_tanl.S (renamed from sysdeps/libm-i387/s_tanl.S)0
-rw-r--r--sysdeps/i386/fpu/s_trunc.S (renamed from sysdeps/libm-i387/s_trunc.S)0
-rw-r--r--sysdeps/i386/fpu/s_truncf.S (renamed from sysdeps/libm-i387/s_truncf.S)0
-rw-r--r--sysdeps/i386/fpu/s_truncl.S (renamed from sysdeps/libm-i387/s_truncl.S)0
-rw-r--r--sysdeps/i386/fpu/t_exp.c (renamed from sysdeps/libm-i387/t_exp.c)0
-rw-r--r--sysdeps/i386/i686/Implies1
-rw-r--r--sysdeps/i386/i686/fpu/s_fdim.S (renamed from sysdeps/libm-i387/i686/s_fdim.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fdimf.S (renamed from sysdeps/libm-i387/i686/s_fdimf.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fdiml.S (renamed from sysdeps/libm-i387/i686/s_fdiml.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fmax.S (renamed from sysdeps/libm-i387/i686/s_fmax.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fmaxf.S (renamed from sysdeps/libm-i387/i686/s_fmaxf.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fmaxl.S (renamed from sysdeps/libm-i387/i686/s_fmaxl.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fmin.S (renamed from sysdeps/libm-i387/i686/s_fmin.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fminf.S (renamed from sysdeps/libm-i387/i686/s_fminf.S)0
-rw-r--r--sysdeps/i386/i686/fpu/s_fminl.S (renamed from sysdeps/libm-i387/i686/s_fminl.S)0
-rw-r--r--sysdeps/i960/Implies3
-rw-r--r--sysdeps/ieee754/Implies2
-rw-r--r--sysdeps/ieee754/dbl-64/Dist1
-rw-r--r--sysdeps/ieee754/dbl-64/dbl2mpn.c (renamed from sysdeps/ieee754/dbl2mpn.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_acos.c (renamed from sysdeps/libm-ieee754/e_acos.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_acosh.c (renamed from sysdeps/libm-ieee754/e_acosh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_asin.c (renamed from sysdeps/libm-ieee754/e_asin.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_atan2.c (renamed from sysdeps/libm-ieee754/e_atan2.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_atanh.c (renamed from sysdeps/libm-ieee754/e_atanh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_cosh.c (renamed from sysdeps/libm-ieee754/e_cosh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_exp.c (renamed from sysdeps/libm-ieee754/e_exp.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_fmod.c (renamed from sysdeps/libm-ieee754/e_fmod.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_gamma_r.c (renamed from sysdeps/libm-ieee754/e_gamma_r.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_hypot.c (renamed from sysdeps/libm-ieee754/e_hypot.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_j0.c (renamed from sysdeps/libm-ieee754/e_j0.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_j1.c (renamed from sysdeps/libm-ieee754/e_j1.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_jn.c (renamed from sysdeps/libm-ieee754/e_jn.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_lgamma_r.c (renamed from sysdeps/libm-ieee754/e_lgamma_r.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_log.c (renamed from sysdeps/libm-ieee754/e_log.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_log10.c (renamed from sysdeps/libm-ieee754/e_log10.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_pow.c (renamed from sysdeps/libm-ieee754/e_pow.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_rem_pio2.c (renamed from sysdeps/libm-ieee754/e_rem_pio2.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_remainder.c (renamed from sysdeps/libm-ieee754/e_remainder.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_sinh.c (renamed from sysdeps/libm-ieee754/e_sinh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/e_sqrt.c (renamed from sysdeps/libm-ieee754/e_sqrt.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/k_cos.c (renamed from sysdeps/libm-ieee754/k_cos.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/k_rem_pio2.c (renamed from sysdeps/libm-ieee754/k_rem_pio2.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/k_sin.c (renamed from sysdeps/libm-ieee754/k_sin.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/k_tan.c (renamed from sysdeps/libm-ieee754/k_tan.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/mpn2dbl.c (renamed from sysdeps/ieee754/mpn2dbl.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_asinh.c (renamed from sysdeps/libm-ieee754/s_asinh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_atan.c (renamed from sysdeps/libm-ieee754/s_atan.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_cbrt.c (renamed from sysdeps/libm-ieee754/s_cbrt.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_ceil.c (renamed from sysdeps/libm-ieee754/s_ceil.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_copysign.c (renamed from sysdeps/libm-ieee754/s_copysign.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_cos.c (renamed from sysdeps/libm-ieee754/s_cos.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_erf.c (renamed from sysdeps/libm-ieee754/s_erf.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_exp2.c (renamed from sysdeps/libm-ieee754/s_exp2.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_expm1.c (renamed from sysdeps/libm-ieee754/s_expm1.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_fabs.c (renamed from sysdeps/libm-ieee754/s_fabs.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_finite.c (renamed from sysdeps/libm-ieee754/s_finite.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_floor.c (renamed from sysdeps/libm-ieee754/s_floor.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_fpclassify.c (renamed from sysdeps/libm-ieee754/s_fpclassify.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_frexp.c (renamed from sysdeps/libm-ieee754/s_frexp.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_ilogb.c (renamed from sysdeps/libm-ieee754/s_ilogb.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_isinf.c (renamed from sysdeps/libm-ieee754/s_isinf.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_isnan.c (renamed from sysdeps/libm-ieee754/s_isnan.c)2
-rw-r--r--sysdeps/ieee754/dbl-64/s_llrint.c (renamed from sysdeps/libm-ieee754/s_llrint.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_llround.c (renamed from sysdeps/libm-ieee754/s_llround.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_log1p.c (renamed from sysdeps/libm-ieee754/s_log1p.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_log2.c (renamed from sysdeps/libm-ieee754/s_log2.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_logb.c (renamed from sysdeps/libm-ieee754/s_logb.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_lrint.c (renamed from sysdeps/libm-ieee754/s_lrint.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_lround.c (renamed from sysdeps/libm-ieee754/s_lround.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_modf.c (renamed from sysdeps/libm-ieee754/s_modf.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_nearbyint.c (renamed from sysdeps/libm-ieee754/s_nearbyint.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_nexttoward.c1
-rw-r--r--sysdeps/ieee754/dbl-64/s_remquo.c (renamed from sysdeps/libm-ieee754/s_remquo.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_rint.c (renamed from sysdeps/libm-ieee754/s_rint.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_round.c (renamed from sysdeps/libm-ieee754/s_round.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_scalbln.c (renamed from sysdeps/libm-ieee754/s_scalbln.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_scalbn.c (renamed from sysdeps/libm-ieee754/s_scalbn.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_signbit.c (renamed from sysdeps/libm-ieee754/s_signbit.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_sin.c (renamed from sysdeps/libm-ieee754/s_sin.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_sincos.c (renamed from sysdeps/libm-ieee754/s_sincos.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_tan.c (renamed from sysdeps/libm-ieee754/s_tan.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_tanh.c (renamed from sysdeps/libm-ieee754/s_tanh.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/s_trunc.c (renamed from sysdeps/libm-ieee754/s_trunc.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/t_exp.c (renamed from sysdeps/libm-ieee754/t_exp.c)0
-rw-r--r--sysdeps/ieee754/dbl-64/t_exp2.h (renamed from sysdeps/libm-ieee754/t_exp2.h)0
-rw-r--r--sysdeps/ieee754/dbl-64/w_exp.c (renamed from sysdeps/libm-ieee754/w_exp.c)0
-rw-r--r--sysdeps/ieee754/flt-32/Dist (renamed from sysdeps/libm-ieee754/Dist)1
-rw-r--r--sysdeps/ieee754/flt-32/e_acosf.c (renamed from sysdeps/libm-ieee754/e_acosf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_acoshf.c (renamed from sysdeps/libm-ieee754/e_acoshf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_asinf.c (renamed from sysdeps/libm-ieee754/e_asinf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_atan2f.c (renamed from sysdeps/libm-ieee754/e_atan2f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_atanhf.c (renamed from sysdeps/libm-ieee754/e_atanhf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_coshf.c (renamed from sysdeps/libm-ieee754/e_coshf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_expf.c (renamed from sysdeps/libm-ieee754/e_expf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_fmodf.c (renamed from sysdeps/libm-ieee754/e_fmodf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_gammaf_r.c (renamed from sysdeps/libm-ieee754/e_gammaf_r.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_hypotf.c (renamed from sysdeps/libm-ieee754/e_hypotf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_j0f.c (renamed from sysdeps/libm-ieee754/e_j0f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_j1f.c (renamed from sysdeps/libm-ieee754/e_j1f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_jnf.c (renamed from sysdeps/libm-ieee754/e_jnf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_lgammaf_r.c (renamed from sysdeps/libm-ieee754/e_lgammaf_r.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_log10f.c (renamed from sysdeps/libm-ieee754/e_log10f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_logf.c (renamed from sysdeps/libm-ieee754/e_logf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_powf.c (renamed from sysdeps/libm-ieee754/e_powf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_rem_pio2f.c (renamed from sysdeps/libm-ieee754/e_rem_pio2f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_remainderf.c (renamed from sysdeps/libm-ieee754/e_remainderf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_sinhf.c (renamed from sysdeps/libm-ieee754/e_sinhf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/e_sqrtf.c (renamed from sysdeps/libm-ieee754/e_sqrtf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/k_cosf.c (renamed from sysdeps/libm-ieee754/k_cosf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/k_rem_pio2f.c (renamed from sysdeps/libm-ieee754/k_rem_pio2f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/k_sinf.c (renamed from sysdeps/libm-ieee754/k_sinf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/k_tanf.c (renamed from sysdeps/libm-ieee754/k_tanf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/mpn2flt.c (renamed from sysdeps/ieee754/mpn2flt.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_asinhf.c (renamed from sysdeps/libm-ieee754/s_asinhf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_atanf.c (renamed from sysdeps/libm-ieee754/s_atanf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_cbrtf.c (renamed from sysdeps/libm-ieee754/s_cbrtf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_ceilf.c (renamed from sysdeps/libm-ieee754/s_ceilf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_copysignf.c (renamed from sysdeps/libm-ieee754/s_copysignf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_cosf.c (renamed from sysdeps/libm-ieee754/s_cosf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_erff.c (renamed from sysdeps/libm-ieee754/s_erff.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_exp2f.c (renamed from sysdeps/libm-ieee754/s_exp2f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_expm1f.c (renamed from sysdeps/libm-ieee754/s_expm1f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_fabsf.c (renamed from sysdeps/libm-ieee754/s_fabsf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_finitef.c (renamed from sysdeps/libm-ieee754/s_finitef.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_floorf.c (renamed from sysdeps/libm-ieee754/s_floorf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_fpclassifyf.c (renamed from sysdeps/libm-ieee754/s_fpclassifyf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_frexpf.c (renamed from sysdeps/libm-ieee754/s_frexpf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_ilogbf.c (renamed from sysdeps/libm-ieee754/s_ilogbf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_isinff.c (renamed from sysdeps/libm-ieee754/s_isinff.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_isnanf.c (renamed from sysdeps/libm-ieee754/s_isnanf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_llrintf.c (renamed from sysdeps/libm-ieee754/s_llrintf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_llroundf.c (renamed from sysdeps/libm-ieee754/s_llroundf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_log1pf.c (renamed from sysdeps/libm-ieee754/s_log1pf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_log2f.c (renamed from sysdeps/libm-ieee754/s_log2f.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_logbf.c (renamed from sysdeps/libm-ieee754/s_logbf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_lrintf.c (renamed from sysdeps/libm-ieee754/s_lrintf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_lroundf.c (renamed from sysdeps/libm-ieee754/s_lroundf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_modff.c (renamed from sysdeps/libm-ieee754/s_modff.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_nearbyintf.c (renamed from sysdeps/libm-ieee754/s_nearbyintf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_nextafterf.c (renamed from sysdeps/libm-ieee754/s_nextafterf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_remquof.c (renamed from sysdeps/libm-ieee754/s_remquof.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_rintf.c (renamed from sysdeps/libm-ieee754/s_rintf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_roundf.c (renamed from sysdeps/libm-ieee754/s_roundf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_scalblnf.c (renamed from sysdeps/libm-ieee754/s_scalblnf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_scalbnf.c (renamed from sysdeps/libm-ieee754/s_scalbnf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_signbitf.c (renamed from sysdeps/libm-ieee754/s_signbitf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_sincosf.c (renamed from sysdeps/libm-ieee754/s_sincosf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_sinf.c (renamed from sysdeps/libm-ieee754/s_sinf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_tanf.c (renamed from sysdeps/libm-ieee754/s_tanf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_tanhf.c (renamed from sysdeps/libm-ieee754/s_tanhf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/s_truncf.c (renamed from sysdeps/libm-ieee754/s_truncf.c)0
-rw-r--r--sysdeps/ieee754/flt-32/t_exp2f.h (renamed from sysdeps/libm-ieee754/t_exp2f.h)0
-rw-r--r--sysdeps/ieee754/flt-32/w_expf.c (renamed from sysdeps/libm-ieee754/w_expf.c)0
-rw-r--r--sysdeps/ieee754/k_standard.c (renamed from sysdeps/libm-ieee754/k_standard.c)0
-rw-r--r--sysdeps/ieee754/ldbl-128/e_acoshl.c68
-rw-r--r--sysdeps/ieee754/ldbl-128/e_atan2l.c129
-rw-r--r--sysdeps/ieee754/ldbl-128/e_fmodl.c138
-rw-r--r--sysdeps/ieee754/ldbl-128/e_gammal_r.c52
-rw-r--r--sysdeps/ieee754/ldbl-128/e_remainderl.c78
-rw-r--r--sysdeps/ieee754/ldbl-128/ieee754.h171
-rw-r--r--sysdeps/ieee754/ldbl-128/ldbl2mpn.c137
-rw-r--r--sysdeps/ieee754/ldbl-128/math_ldbl.h82
-rw-r--r--sysdeps/ieee754/ldbl-128/mpn2ldbl.c51
-rw-r--r--sysdeps/ieee754/ldbl-128/printf_fphex.c84
-rw-r--r--sysdeps/ieee754/ldbl-128/s_ceill.c84
-rw-r--r--sysdeps/ieee754/ldbl-128/s_copysignl.c43
-rw-r--r--sysdeps/ieee754/ldbl-128/s_cosl.c83
-rw-r--r--sysdeps/ieee754/ldbl-128/s_fabsl.c39
-rw-r--r--sysdeps/ieee754/ldbl-128/s_finitel.c40
-rw-r--r--sysdeps/ieee754/ldbl-128/s_floorl.c85
-rw-r--r--sysdeps/ieee754/ldbl-128/s_fpclassifyl.c44
-rw-r--r--sysdeps/ieee754/ldbl-128/s_frexpl.c63
-rw-r--r--sysdeps/ieee754/ldbl-128/s_ilogbl.c55
-rw-r--r--sysdeps/ieee754/ldbl-128/s_isinfl.c28
-rw-r--r--sysdeps/ieee754/ldbl-128/s_isnanl.c42
-rw-r--r--sysdeps/ieee754/ldbl-128/s_llrintl.c75
-rw-r--r--sysdeps/ieee754/ldbl-128/s_llroundl.c74
-rw-r--r--sysdeps/ieee754/ldbl-128/s_logbl.c46
-rw-r--r--sysdeps/ieee754/ldbl-128/s_lrintl.c91
-rw-r--r--sysdeps/ieee754/ldbl-128/s_lroundl.c74
-rw-r--r--sysdeps/ieee754/ldbl-128/s_modfl.c88
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nearbyintl.c93
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nextafterl.c85
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nexttoward.c97
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nexttowardf.c81
-rw-r--r--sysdeps/ieee754/ldbl-128/s_remquol.c110
-rw-r--r--sysdeps/ieee754/ldbl-128/s_rintl.c90
-rw-r--r--sysdeps/ieee754/ldbl-128/s_roundl.c94
-rw-r--r--sysdeps/ieee754/ldbl-128/s_scalblnl.c70
-rw-r--r--sysdeps/ieee754/ldbl-128/s_scalbnl.c70
-rw-r--r--sysdeps/ieee754/ldbl-128/s_signbitl.c32
-rw-r--r--sysdeps/ieee754/ldbl-128/s_sincosl.c77
-rw-r--r--sysdeps/ieee754/ldbl-128/s_sinl.c83
-rw-r--r--sysdeps/ieee754/ldbl-128/s_tanl.c77
-rw-r--r--sysdeps/ieee754/ldbl-128/s_truncl.c57
-rw-r--r--sysdeps/ieee754/ldbl-128/strtold.c42
-rw-r--r--sysdeps/ieee754/ldbl-96/e_acoshl.c (renamed from sysdeps/libm-ieee754/e_acoshl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_atan2l.c (renamed from sysdeps/libm-ieee754/e_atan2l.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_atanhl.c (renamed from sysdeps/libm-ieee754/e_atanhl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_coshl.c (renamed from sysdeps/libm-ieee754/e_coshl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_gammal_r.c (renamed from sysdeps/libm-ieee754/e_gammal_r.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_hypotl.c (renamed from sysdeps/libm-ieee754/e_hypotl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_remainderl.c (renamed from sysdeps/libm-ieee754/e_remainderl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/e_sinhl.c (renamed from sysdeps/libm-ieee754/e_sinhl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/ldbl2mpn.c (renamed from sysdeps/ieee754/ldbl2mpn.c)4
-rw-r--r--sysdeps/ieee754/ldbl-96/math_ldbl.h98
-rw-r--r--sysdeps/ieee754/ldbl-96/mpn2ldbl.c (renamed from sysdeps/ieee754/mpn2ldbl.c)4
-rw-r--r--sysdeps/ieee754/ldbl-96/printf_fphex.c61
-rw-r--r--sysdeps/ieee754/ldbl-96/s_asinhl.c (renamed from sysdeps/libm-ieee754/s_asinhl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_cbrtl.c (renamed from sysdeps/libm-ieee754/s_cbrtl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_ceill.c (renamed from sysdeps/libm-ieee754/s_ceill.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_copysignl.c (renamed from sysdeps/libm-ieee754/s_copysignl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_cosl.c (renamed from sysdeps/libm-ieee754/s_cosl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_fabsl.c (renamed from sysdeps/libm-ieee754/s_fabsl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_finitel.c (renamed from sysdeps/libm-ieee754/s_finitel.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_floorl.c (renamed from sysdeps/libm-ieee754/s_floorl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_fpclassifyl.c (renamed from sysdeps/libm-ieee754/s_fpclassifyl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_frexpl.c (renamed from sysdeps/libm-ieee754/s_frexpl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_ilogbl.c (renamed from sysdeps/libm-ieee754/s_ilogbl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_isinfl.c (renamed from sysdeps/libm-ieee754/s_isinfl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_isnanl.c (renamed from sysdeps/libm-ieee754/s_isnanl.c)2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_llrintl.c (renamed from sysdeps/libm-ieee754/s_llrintl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_llroundl.c (renamed from sysdeps/libm-ieee754/s_llroundl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_logbl.c (renamed from sysdeps/libm-ieee754/s_logbl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_lrintl.c (renamed from sysdeps/libm-ieee754/s_lrintl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_lroundl.c (renamed from sysdeps/libm-ieee754/s_lroundl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_modfl.c (renamed from sysdeps/libm-ieee754/s_modfl.c)2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_nearbyintl.c (renamed from sysdeps/libm-ieee754/s_nearbyintl.c)7
-rw-r--r--sysdeps/ieee754/ldbl-96/s_nextafterl.c (renamed from sysdeps/libm-ieee754/s_nextafterl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_nexttoward.c (renamed from sysdeps/libm-ieee754/s_nexttoward.c)8
-rw-r--r--sysdeps/ieee754/ldbl-96/s_nexttowardf.c (renamed from sysdeps/libm-ieee754/s_nexttowardf.c)8
-rw-r--r--sysdeps/ieee754/ldbl-96/s_remquol.c (renamed from sysdeps/libm-ieee754/s_remquol.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_rintl.c (renamed from sysdeps/libm-ieee754/s_rintl.c)7
-rw-r--r--sysdeps/ieee754/ldbl-96/s_roundl.c (renamed from sysdeps/libm-ieee754/s_roundl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_scalblnl.c (renamed from sysdeps/libm-ieee754/s_scalblnl.c)2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_scalbnl.c (renamed from sysdeps/libm-ieee754/s_scalbnl.c)2
-rw-r--r--sysdeps/ieee754/ldbl-96/s_signbitl.c (renamed from sysdeps/libm-ieee754/s_signbitl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_sincosl.c (renamed from sysdeps/libm-ieee754/s_sincosl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_sinl.c (renamed from sysdeps/libm-ieee754/s_sinl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_tanhl.c (renamed from sysdeps/libm-ieee754/s_tanhl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_tanl.c (renamed from sysdeps/libm-ieee754/s_tanl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/s_truncl.c (renamed from sysdeps/libm-ieee754/s_truncl.c)0
-rw-r--r--sysdeps/ieee754/ldbl-96/strtold.c42
-rw-r--r--sysdeps/ieee754/ldbl-96/w_expl.c (renamed from sysdeps/libm-ieee754/w_expl.c)0
-rw-r--r--sysdeps/ieee754/s_lib_version.c (renamed from sysdeps/libm-ieee754/s_lib_version.c)0
-rw-r--r--sysdeps/ieee754/s_matherr.c (renamed from sysdeps/libm-ieee754/s_matherr.c)0
-rw-r--r--sysdeps/ieee754/s_signgam.c (renamed from sysdeps/libm-ieee754/s_signgam.c)0
-rw-r--r--sysdeps/m68k/Implies4
-rw-r--r--sysdeps/m68k/printf_fphex.c2
-rw-r--r--sysdeps/m68k/strtold.c2
-rw-r--r--sysdeps/mips/Implies3
-rw-r--r--sysdeps/mips/mips64/Implies3
-rw-r--r--sysdeps/powerpc/Implies3
-rw-r--r--sysdeps/sparc/Implies2
-rw-r--r--sysdeps/sparc/fpu/bits/mathdef.h15
-rw-r--r--sysdeps/sparc/fpu/bits/mathinline.h211
-rw-r--r--sysdeps/sparc/sparc32/Implies3
-rw-r--r--sysdeps/sparc/sparc32/bits/wordsize.h (renamed from sysdeps/sparc/bits/wordsize.h)0
-rw-r--r--sysdeps/sparc/sparc32/fpu/bits/huge_val.h100
-rw-r--r--sysdeps/sparc/sparc64/Implies4
-rw-r--r--sysdeps/sparc/sparc64/Makefile13
-rw-r--r--sysdeps/sparc/sparc64/addmul_1.S36
-rw-r--r--sysdeps/sparc/sparc64/bits/wordsize.h7
-rw-r--r--sysdeps/sparc/sparc64/fpu/bits/huge_val.h100
587 files changed, 5286 insertions, 339 deletions
diff --git a/ChangeLog b/ChangeLog
index 27c491de9f..6e901aa96f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1130 @@
+1999-07-12  Jakub Jelinek  <jj@ultra.linux.cz>
+
+	* stdio-common/printf_fp.c (__printf_fp): Adjust for IEEE quad
+	as _FPIO_CONST_OFFSET does not cover all bits after binary dot.
+	* sysdeps/generic/printf_fphex.c (__printf_fphex): Support IEEE
+	quad by moving long double support into PRINT_FPHEX_LONG_DOUBLE
+	macro.
+	* sysdeps/alpha/Implies: Imply ieee754/flt-32 and ieee754/dbl-64
+	instead of ieee754.
+	* sysdeps/arm/Implies: Likewise.
+	* sysdeps/i386/Implies: Imply ieee754/flt-32, ieee754/dbl-64, and
+	ieee754/ldbl-96 instead of ieee754.
+	* sysdeps/i386/i686/Implies: Remove implication for libm-i387/i686.
+	* sysdeps/generic/strtold.c: Remove.
+	* sysdeps/generic/e_atanhl.c: New file.
+	* sysdeps/generic/e_coshl.c: New file.
+	* sysdeps/generic/e_sinhl.c: New file.
+	* sysdeps/generic/e_gammal_r.c: New file.
+	* sysdeps/generic/e_hypotl.c: New file.
+	* sysdeps/generic/s_cbrtl.c: New file.
+	* sysdeps/generic/s_asinhl.c: New file.
+	* sysdeps/generic/s_tanhl.c: New file.
+	* sysdeps/generic/w_expl.c: New file.
+	* sysdeps/m68k/Implies: Imply ieee754/flt-32, ieee754/dbl-64, and
+	ieee754/ldbl-96 instead of ieee754.
+	* sysdeps/m68k/strtold.c: Include ldbl-96 version of strtold.
+	* sysdeps/m68k/printf_fphex.c: Include ldbl-96 version of
+	printf_fphex.
+	* sysdeps/mips/Implies: Imply ieee754/flt-32 and ieee754/dbl-64
+	instead of ieee754.
+	* sysdeps/mips/mips64/Implies: Likewise.
+	* sysdeps/powerpc/Implies: Likewise.
+	* sysdeps/sparc/Implies: Remove.
+	* sysdeps/sparc/sparc32/Implies: Imply ieee754/flt-32 and
+	ieee754/dbl-64.
+	* sysdeps/sparc/sparc64/Implies: Imply ieee754/flt-32, ieee754/dbl-64,
+	and ieee754/ldbl-128.
+
+	* sysdeps/sparc/bits/wordsize.h: Remove.
+	* sysdeps/sparc/fpu/bits/mathinline.h: New file.
+	* sysdeps/sparc/fpu/bits/mathdef.h: __NO_LONG_DOUBLE_MATH
+	only for sparc32.
+	* sysdeps/sparc/sparc32/fpu/bits/huge_val.h: New file.
+	* sysdeps/sparc/sparc32/bits/wordsize.h: New file.
+	* sysdeps/sparc/sparc64/fpu/bits/huge_val.h: New file.
+	* sysdeps/sparc/sparc64/bits/wordsize.h: New file.
+	* sysdeps/sparc/sparc64/Makefile: Add IEEE quad long double
+	support.
+
+	* sysdeps/sparc/sparc64/addmul_1.S: Fix miscalculation
+	of carries. Optimize.
+
+	* sysdeps/libm-ieee754/e_exp10.c: Moved to ...
+	* math/e_exp10.c: ...here.
+	* sysdeps/libm-ieee754/e_exp10f.c: Moved to ...
+	* math/e_exp10f.c: ...here.
+	* sysdeps/libm-ieee754/e_exp10l.c: Moved to ...
+	* math/e_exp10l.c: ...here.
+	* sysdeps/libm-ieee754/e_scalb.c: Moved to ...
+	* math/e_scalb.c: ...here.
+	* sysdeps/libm-ieee754/e_scalbf.c: Moved to ...
+	* math/e_scalbf.c: ...here.
+	* sysdeps/libm-ieee754/e_scalbl.c: Moved to ...
+	* math/e_scalbl.c: ...here.
+	* sysdeps/libm-ieee754/s_cacos.c: Moved to ...
+	* math/s_cacos.c: ...here.
+	* sysdeps/libm-ieee754/s_cacosf.c: Moved to ...
+	* math/s_cacosf.c: ...here.
+	* sysdeps/libm-ieee754/s_cacosh.c: Moved to ...
+	* math/s_cacosh.c: ...here.
+	* sysdeps/libm-ieee754/s_cacoshf.c: Moved to ...
+	* math/s_cacoshf.c: ...here.
+	* sysdeps/libm-ieee754/s_cacoshl.c: Moved to ...
+	* math/s_cacoshl.c: ...here.
+	* sysdeps/libm-ieee754/s_cacosl.c: Moved to ...
+	* math/s_cacosl.c: ...here.
+	* sysdeps/libm-ieee754/s_casin.c: Moved to ...
+	* math/s_casin.c: ...here.
+	* sysdeps/libm-ieee754/s_casinf.c: Moved to ...
+	* math/s_casinf.c: ...here.
+	* sysdeps/libm-ieee754/s_casinh.c: Moved to ...
+	* math/s_casinh.c: ...here.
+	* sysdeps/libm-ieee754/s_casinhf.c: Moved to ...
+	* math/s_casinhf.c: ...here.
+	* sysdeps/libm-ieee754/s_casinhl.c: Moved to ...
+	* math/s_casinhl.c: ...here.
+	* sysdeps/libm-ieee754/s_casinl.c: Moved to ...
+	* math/s_casinl.c: ...here.
+	* sysdeps/libm-ieee754/s_catan.c: Moved to ...
+	* math/s_catan.c: ...here.
+	* sysdeps/libm-ieee754/s_catanf.c: Moved to ...
+	* math/s_catanf.c: ...here.
+	* sysdeps/libm-ieee754/s_catanh.c: Moved to ...
+	* math/s_catanh.c: ...here.
+	* sysdeps/libm-ieee754/s_catanhf.c: Moved to ...
+	* math/s_catanhf.c: ...here.
+	* sysdeps/libm-ieee754/s_catanhl.c: Moved to ...
+	* math/s_catanhl.c: ...here.
+	* sysdeps/libm-ieee754/s_catanl.c: Moved to ...
+	* math/s_catanl.c: ...here.
+	* sysdeps/libm-ieee754/s_ccos.c: Moved to ...
+	* math/s_ccos.c: ...here.
+	* sysdeps/libm-ieee754/s_ccosf.c: Moved to ...
+	* math/s_ccosf.c: ...here.
+	* sysdeps/libm-ieee754/s_ccosh.c: Moved to ...
+	* math/s_ccosh.c: ...here.
+	* sysdeps/libm-ieee754/s_ccoshf.c: Moved to ...
+	* math/s_ccoshf.c: ...here.
+	* sysdeps/libm-ieee754/s_ccoshl.c: Moved to ...
+	* math/s_ccoshl.c: ...here.
+	* sysdeps/libm-ieee754/s_ccosl.c: Moved to ...
+	* math/s_ccosl.c: ...here.
+	* sysdeps/libm-ieee754/s_cexp.c: Moved to ...
+	* math/s_cexp.c: ...here.
+	* sysdeps/libm-ieee754/s_cexpf.c: Moved to ...
+	* math/s_cexpf.c: ...here.
+	* sysdeps/libm-ieee754/s_cexpl.c: Moved to ...
+	* math/s_cexpl.c: ...here.
+	* sysdeps/libm-ieee754/s_clog.c: Moved to ...
+	* math/s_clog.c: ...here.
+	* sysdeps/libm-ieee754/s_clog10.c: Moved to ...
+	* math/s_clog10.c: ...here.
+	* sysdeps/libm-ieee754/s_clog10f.c: Moved to ...
+	* math/s_clog10f.c: ...here.
+	* sysdeps/libm-ieee754/s_clog10l.c: Moved to ...
+	* math/s_clog10l.c: ...here.
+	* sysdeps/libm-ieee754/s_clogf.c: Moved to ...
+	* math/s_clogf.c: ...here.
+	* sysdeps/libm-ieee754/s_clogl.c: Moved to ...
+	* math/s_clogl.c: ...here.
+	* sysdeps/libm-ieee754/s_cpow.c: Moved to ...
+	* math/s_cpow.c: ...here.
+	* sysdeps/libm-ieee754/s_cpowf.c: Moved to ...
+	* math/s_cpowf.c: ...here.
+	* sysdeps/libm-ieee754/s_cpowl.c: Moved to ...
+	* math/s_cpowl.c: ...here.
+	* sysdeps/libm-ieee754/s_cproj.c: Moved to ...
+	* math/s_cproj.c: ...here.
+	* sysdeps/libm-ieee754/s_cprojf.c: Moved to ...
+	* math/s_cprojf.c: ...here.
+	* sysdeps/libm-ieee754/s_cprojl.c: Moved to ...
+	* math/s_cprojl.c: ...here.
+	* sysdeps/libm-ieee754/s_csin.c: Moved to ...
+	* math/s_csin.c: ...here.
+	* sysdeps/libm-ieee754/s_csinf.c: Moved to ...
+	* math/s_csinf.c: ...here.
+	* sysdeps/libm-ieee754/s_csinh.c: Moved to ...
+	* math/s_csinh.c: ...here.
+	* sysdeps/libm-ieee754/s_csinhf.c: Moved to ...
+	* math/s_csinhf.c: ...here.
+	* sysdeps/libm-ieee754/s_csinhl.c: Moved to ...
+	* math/s_csinhl.c: ...here.
+	* sysdeps/libm-ieee754/s_csinl.c: Moved to ...
+	* math/s_csinl.c: ...here.
+	* sysdeps/libm-ieee754/s_csqrt.c: Moved to ...
+	* math/s_csqrt.c: ...here.
+	* sysdeps/libm-ieee754/s_csqrtf.c: Moved to ...
+	* math/s_csqrtf.c: ...here.
+	* sysdeps/libm-ieee754/s_csqrtl.c: Moved to ...
+	* math/s_csqrtl.c: ...here.
+	* sysdeps/libm-ieee754/s_ctan.c: Moved to ...
+	* math/s_ctan.c: ...here.
+	* sysdeps/libm-ieee754/s_ctanf.c: Moved to ...
+	* math/s_ctanf.c: ...here.
+	* sysdeps/libm-ieee754/s_ctanh.c: Moved to ...
+	* math/s_ctanh.c: ...here.
+	* sysdeps/libm-ieee754/s_ctanhf.c: Moved to ...
+	* math/s_ctanhf.c: ...here.
+	* sysdeps/libm-ieee754/s_ctanhl.c: Moved to ...
+	* math/s_ctanhl.c: ...here.
+	* sysdeps/libm-ieee754/s_ctanl.c: Moved to ...
+	* math/s_ctanl.c: ...here.
+	* sysdeps/libm-ieee754/s_fdim.c: Moved to ...
+	* math/s_fdim.c: ...here.
+	* sysdeps/libm-ieee754/s_fdimf.c: Moved to ...
+	* math/s_fdimf.c: ...here.
+	* sysdeps/libm-ieee754/s_fdiml.c: Moved to ...
+	* math/s_fdiml.c: ...here.
+	* sysdeps/libm-ieee754/s_fma.c: Moved to ...
+	* math/s_fma.c: ...here.
+	* sysdeps/libm-ieee754/s_fmaf.c: Moved to ...
+	* math/s_fmaf.c: ...here.
+	* sysdeps/libm-ieee754/s_fmal.c: Moved to ...
+	* math/s_fmal.c: ...here.
+	* sysdeps/libm-ieee754/s_fmax.c: Moved to ...
+	* math/s_fmax.c: ...here.
+	* sysdeps/libm-ieee754/s_fmaxf.c: Moved to ...
+	* math/s_fmaxf.c: ...here.
+	* sysdeps/libm-ieee754/s_fmaxl.c: Moved to ...
+	* math/s_fmaxl.c: ...here.
+	* sysdeps/libm-ieee754/s_fmin.c: Moved to ...
+	* math/s_fmin.c: ...here.
+	* sysdeps/libm-ieee754/s_fminf.c: Moved to ...
+	* math/s_fminf.c: ...here.
+	* sysdeps/libm-ieee754/s_fminl.c: Moved to ...
+	* math/s_fminl.c: ...here.
+	* sysdeps/libm-ieee754/s_ldexp.c: Moved to ...
+	* math/s_ldexp.c: ...here.
+	* sysdeps/libm-ieee754/s_ldexpf.c: Moved to ...
+	* math/s_ldexpf.c: ...here.
+	* sysdeps/libm-ieee754/s_ldexpl.c: Moved to ...
+	* math/s_ldexpl.c: ...here.
+	* sysdeps/libm-ieee754/s_nan.c: Moved to ...
+	* math/s_nan.c: ...here.
+	* sysdeps/libm-ieee754/s_nanf.c: Moved to ...
+	* math/s_nanf.c: ...here.
+	* sysdeps/libm-ieee754/s_nanl.c: Moved to ...
+	* math/s_nanl.c: ...here.
+	* sysdeps/libm-ieee754/s_significand.c: Moved to ...
+	* math/s_significand.c: ...here.
+	* sysdeps/libm-ieee754/s_significandf.c: Moved to ...
+	* math/s_significandf.c: ...here.
+	* sysdeps/libm-ieee754/s_significandl.c: Moved to ...
+	* math/s_significandl.c: ...here.
+	Avoid conversion from int to double and then to long double.
+	* sysdeps/libm-ieee754/w_acos.c: Moved to ...
+	* math/w_acos.c: ...here.
+	* sysdeps/libm-ieee754/w_acosf.c: Moved to ...
+	* math/w_acosf.c: ...here.
+	* sysdeps/libm-ieee754/w_acosh.c: Moved to ...
+	* math/w_acosh.c: ...here.
+	* sysdeps/libm-ieee754/w_acoshf.c: Moved to ...
+	* math/w_acoshf.c: ...here.
+	* sysdeps/libm-ieee754/w_acoshl.c: Moved to ...
+	* math/w_acoshl.c: ...here.
+	* sysdeps/libm-ieee754/w_acosl.c: Moved to ...
+	* math/w_acosl.c: ...here.
+	* sysdeps/libm-ieee754/w_asin.c: Moved to ...
+	* math/w_asin.c: ...here.
+	* sysdeps/libm-ieee754/w_asinf.c: Moved to ...
+	* math/w_asinf.c: ...here.
+	* sysdeps/libm-ieee754/w_asinl.c: Moved to ...
+	* math/w_asinl.c: ...here.
+	* sysdeps/libm-ieee754/w_atan2.c: Moved to ...
+	* math/w_atan2.c: ...here.
+	* sysdeps/libm-ieee754/w_atan2f.c: Moved to ...
+	* math/w_atan2f.c: ...here.
+	* sysdeps/libm-ieee754/w_atan2l.c: Moved to ...
+	* math/w_atan2l.c: ...here.
+	* sysdeps/libm-ieee754/w_atanh.c: Moved to ...
+	* math/w_atanh.c: ...here.
+	* sysdeps/libm-ieee754/w_atanhf.c: Moved to ...
+	* math/w_atanhf.c: ...here.
+	* sysdeps/libm-ieee754/w_atanhl.c: Moved to ...
+	* math/w_atanhl.c: ...here.
+	* sysdeps/libm-ieee754/w_cosh.c: Moved to ...
+	* math/w_cosh.c: ...here.
+	* sysdeps/libm-ieee754/w_coshf.c: Moved to ...
+	* math/w_coshf.c: ...here.
+	* sysdeps/libm-ieee754/w_coshl.c: Moved to ...
+	* math/w_coshl.c: ...here.
+	* sysdeps/libm-ieee754/w_drem.c: Moved to ...
+	* math/w_drem.c: ...here.
+	* sysdeps/libm-ieee754/w_dremf.c: Moved to ...
+	* math/w_dremf.c: ...here.
+	* sysdeps/libm-ieee754/w_dreml.c: Moved to ...
+	* math/w_dreml.c: ...here.
+	* sysdeps/libm-ieee754/w_exp10.c: Moved to ...
+	* math/w_exp10.c: ...here.
+	* sysdeps/libm-ieee754/w_exp10f.c: Moved to ...
+	* math/w_exp10f.c: ...here.
+	* sysdeps/libm-ieee754/w_exp10l.c: Moved to ...
+	* math/w_exp10l.c: ...here.
+	* sysdeps/libm-ieee754/w_exp2.c: Moved to ...
+	* math/w_exp2.c: ...here.
+	* sysdeps/libm-ieee754/w_exp2f.c: Moved to ...
+	* math/w_exp2f.c: ...here.
+	* sysdeps/libm-ieee754/w_exp2l.c: Moved to ...
+	* math/w_exp2l.c: ...here.
+	* sysdeps/libm-ieee754/w_fmod.c: Moved to ...
+	* math/w_fmod.c: ...here.
+	* sysdeps/libm-ieee754/w_fmodf.c: Moved to ...
+	* math/w_fmodf.c: ...here.
+	* sysdeps/libm-ieee754/w_fmodl.c: Moved to ...
+	* math/w_fmodl.c: ...here.
+	* sysdeps/libm-ieee754/w_hypot.c: Moved to ...
+	* math/w_hypot.c: ...here.
+	* sysdeps/libm-ieee754/w_hypotf.c: Moved to ...
+	* math/w_hypotf.c: ...here.
+	* sysdeps/libm-ieee754/w_hypotl.c: Moved to ...
+	* math/w_hypotl.c: ...here.
+	* sysdeps/libm-ieee754/w_j0.c: Moved to ...
+	* math/w_j0.c: ...here.
+	* sysdeps/libm-ieee754/w_j0f.c: Moved to ...
+	* math/w_j0f.c: ...here.
+	* sysdeps/libm-ieee754/w_j0l.c: Moved to ...
+	* math/w_j0l.c: ...here.
+	* sysdeps/libm-ieee754/w_j1.c: Moved to ...
+	* math/w_j1.c: ...here.
+	* sysdeps/libm-ieee754/w_j1f.c: Moved to ...
+	* math/w_j1f.c: ...here.
+	* sysdeps/libm-ieee754/w_j1l.c: Moved to ...
+	* math/w_j1l.c: ...here.
+	* sysdeps/libm-ieee754/w_jn.c: Moved to ...
+	* math/w_jn.c: ...here.
+	* sysdeps/libm-ieee754/w_jnf.c: Moved to ...
+	* math/w_jnf.c: ...here.
+	* sysdeps/libm-ieee754/w_jnl.c: Moved to ...
+	* math/w_jnl.c: ...here.
+	* sysdeps/libm-ieee754/w_lgamma.c: Moved to ...
+	* math/w_lgamma.c: ...here.
+	* sysdeps/libm-ieee754/w_lgamma_r.c: Moved to ...
+	* math/w_lgamma_r.c: ...here.
+	* sysdeps/libm-ieee754/w_lgammaf.c: Moved to ...
+	* math/w_lgammaf.c: ...here.
+	* sysdeps/libm-ieee754/w_lgammaf_r.c: Moved to ...
+	* math/w_lgammaf_r.c: ...here.
+	* sysdeps/libm-ieee754/w_lgammal.c: Moved to ...
+	* math/w_lgammal.c: ...here.
+	* sysdeps/libm-ieee754/w_lgammal_r.c: Moved to ...
+	* math/w_lgammal_r.c: ...here.
+	* sysdeps/libm-ieee754/w_log.c: Moved to ...
+	* math/w_log.c: ...here.
+	* sysdeps/libm-ieee754/w_log10.c: Moved to ...
+	* math/w_log10.c: ...here.
+	* sysdeps/libm-ieee754/w_log10f.c: Moved to ...
+	* math/w_log10f.c: ...here.
+	* sysdeps/libm-ieee754/w_log10l.c: Moved to ...
+	* math/w_log10l.c: ...here.
+	* sysdeps/libm-ieee754/w_logf.c: Moved to ...
+	* math/w_logf.c: ...here.
+	* sysdeps/libm-ieee754/w_logl.c: Moved to ...
+	* math/w_logl.c: ...here.
+	* sysdeps/libm-ieee754/w_pow.c: Moved to ...
+	* math/w_pow.c: ...here.
+	* sysdeps/libm-ieee754/w_powf.c: Moved to ...
+	* math/w_powf.c: ...here.
+	* sysdeps/libm-ieee754/w_powl.c: Moved to ...
+	* math/w_powl.c: ...here.
+	* sysdeps/libm-ieee754/w_remainder.c: Moved to ...
+	* math/w_remainder.c: ...here.
+	* sysdeps/libm-ieee754/w_remainderf.c: Moved to ...
+	* math/w_remainderf.c: ...here.
+	* sysdeps/libm-ieee754/w_remainderl.c: Moved to ...
+	* math/w_remainderl.c: ...here.
+	* sysdeps/libm-ieee754/w_scalb.c: Moved to ...
+	* math/w_scalb.c: ...here.
+	* sysdeps/libm-ieee754/w_scalbf.c: Moved to ...
+	* math/w_scalbf.c: ...here.
+	* sysdeps/libm-ieee754/w_scalbl.c: Moved to ...
+	* math/w_scalbl.c: ...here.
+	* sysdeps/libm-ieee754/w_sinh.c: Moved to ...
+	* math/w_sinh.c: ...here.
+	* sysdeps/libm-ieee754/w_sinhf.c: Moved to ...
+	* math/w_sinhf.c: ...here.
+	* sysdeps/libm-ieee754/w_sinhl.c: Moved to ...
+	* math/w_sinhl.c: ...here.
+	* sysdeps/libm-ieee754/w_sqrt.c: Moved to ...
+	* math/w_sqrt.c: ...here.
+	* sysdeps/libm-ieee754/w_sqrtf.c: Moved to ...
+	* math/w_sqrtf.c: ...here.
+	* sysdeps/libm-ieee754/w_sqrtl.c: Moved to ...
+	* math/w_sqrtl.c: ...here.
+	* sysdeps/libm-ieee754/w_tgamma.c: Moved to ...
+	* math/w_tgamma.c: ...here.
+	* sysdeps/libm-ieee754/w_tgammaf.c: Moved to ...
+	* math/w_tgammaf.c: ...here.
+	* sysdeps/libm-ieee754/w_tgammal.c: Moved to ...
+	* math/w_tgammal.c: ...here.
+	* sysdeps/libm-i387/e_acos.S: Moved to ...
+	* sysdeps/i386/fpu/e_acos.S: ...here.
+	* sysdeps/libm-i387/e_acosf.S: Moved to ...
+	* sysdeps/i386/fpu/e_acosf.S: ...here.
+	* sysdeps/libm-i387/e_acosh.S: Moved to ...
+	* sysdeps/i386/fpu/e_acosh.S: ...here.
+	* sysdeps/libm-i387/e_acoshf.S: Moved to ...
+	* sysdeps/i386/fpu/e_acoshf.S: ...here.
+	* sysdeps/libm-i387/e_acoshl.S: Moved to ...
+	* sysdeps/i386/fpu/e_acoshl.S: ...here.
+	* sysdeps/libm-i387/e_acosl.S: Moved to ...
+	* sysdeps/i386/fpu/e_acosl.S: ...here.
+	* sysdeps/libm-i387/e_asin.S: Moved to ...
+	* sysdeps/i386/fpu/e_asin.S: ...here.
+	* sysdeps/libm-i387/e_asinf.S: Moved to ...
+	* sysdeps/i386/fpu/e_asinf.S: ...here.
+	* sysdeps/libm-i387/e_asinl.S: Moved to ...
+	* sysdeps/i386/fpu/e_asinl.S: ...here.
+	* sysdeps/libm-i387/e_atan2.S: Moved to ...
+	* sysdeps/i386/fpu/e_atan2.S: ...here.
+	* sysdeps/libm-i387/e_atan2f.S: Moved to ...
+	* sysdeps/i386/fpu/e_atan2f.S: ...here.
+	* sysdeps/libm-i387/e_atan2l.S: Moved to ...
+	* sysdeps/i386/fpu/e_atan2l.S: ...here.
+	* sysdeps/libm-i387/e_atanh.S: Moved to ...
+	* sysdeps/i386/fpu/e_atanh.S: ...here.
+	* sysdeps/libm-i387/e_atanhf.S: Moved to ...
+	* sysdeps/i386/fpu/e_atanhf.S: ...here.
+	* sysdeps/libm-i387/e_atanhl.S: Moved to ...
+	* sysdeps/i386/fpu/e_atanhl.S: ...here.
+	* sysdeps/libm-i387/e_exp.S: Moved to ...
+	* sysdeps/i386/fpu/e_exp.S: ...here.
+	* sysdeps/libm-i387/e_exp10.S: Moved to ...
+	* sysdeps/i386/fpu/e_exp10.S: ...here.
+	* sysdeps/libm-i387/e_exp10f.S: Moved to ...
+	* sysdeps/i386/fpu/e_exp10f.S: ...here.
+	* sysdeps/libm-i387/e_exp10l.S: Moved to ...
+	* sysdeps/i386/fpu/e_exp10l.S: ...here.
+	* sysdeps/libm-i387/e_expf.S: Moved to ...
+	* sysdeps/i386/fpu/e_expf.S: ...here.
+	* sysdeps/libm-i387/e_expl.S: Moved to ...
+	* sysdeps/i386/fpu/e_expl.S: ...here.
+	* sysdeps/libm-i387/e_fmod.S: Moved to ...
+	* sysdeps/i386/fpu/e_fmod.S: ...here.
+	* sysdeps/libm-i387/e_fmodf.S: Moved to ...
+	* sysdeps/i386/fpu/e_fmodf.S: ...here.
+	* sysdeps/libm-i387/e_fmodl.S: Moved to ...
+	* sysdeps/i386/fpu/e_fmodl.S: ...here.
+	* sysdeps/libm-i387/e_hypot.S: Moved to ...
+	* sysdeps/i386/fpu/e_hypot.S: ...here.
+	* sysdeps/libm-i387/e_hypotf.S: Moved to ...
+	* sysdeps/i386/fpu/e_hypotf.S: ...here.
+	* sysdeps/libm-i387/e_log.S: Moved to ...
+	* sysdeps/i386/fpu/e_log.S: ...here.
+	* sysdeps/libm-i387/e_log10.S: Moved to ...
+	* sysdeps/i386/fpu/e_log10.S: ...here.
+	* sysdeps/libm-i387/e_log10f.S: Moved to ...
+	* sysdeps/i386/fpu/e_log10f.S: ...here.
+	* sysdeps/libm-i387/e_log10l.S: Moved to ...
+	* sysdeps/i386/fpu/e_log10l.S: ...here.
+	* sysdeps/libm-i387/e_logf.S: Moved to ...
+	* sysdeps/i386/fpu/e_logf.S: ...here.
+	* sysdeps/libm-i387/e_logl.S: Moved to ...
+	* sysdeps/i386/fpu/e_logl.S: ...here.
+	* sysdeps/libm-i387/e_pow.S: Moved to ...
+	* sysdeps/i386/fpu/e_pow.S: ...here.
+	* sysdeps/libm-i387/e_powf.S: Moved to ...
+	* sysdeps/i386/fpu/e_powf.S: ...here.
+	* sysdeps/libm-i387/e_powl.S: Moved to ...
+	* sysdeps/i386/fpu/e_powl.S: ...here.
+	* sysdeps/libm-i387/e_rem_pio2l.c: Moved to ...
+	* sysdeps/i386/fpu/e_rem_pio2l.c: ...here.
+	* sysdeps/libm-i387/e_remainder.S: Moved to ...
+	* sysdeps/i386/fpu/e_remainder.S: ...here.
+	* sysdeps/libm-i387/e_remainderf.S: Moved to ...
+	* sysdeps/i386/fpu/e_remainderf.S: ...here.
+	* sysdeps/libm-i387/e_remainderl.S: Moved to ...
+	* sysdeps/i386/fpu/e_remainderl.S: ...here.
+	* sysdeps/libm-i387/e_scalb.S: Moved to ...
+	* sysdeps/i386/fpu/e_scalb.S: ...here.
+	* sysdeps/libm-i387/e_scalbf.S: Moved to ...
+	* sysdeps/i386/fpu/e_scalbf.S: ...here.
+	* sysdeps/libm-i387/e_scalbl.S: Moved to ...
+	* sysdeps/i386/fpu/e_scalbl.S: ...here.
+	* sysdeps/libm-i387/e_sqrt.S: Moved to ...
+	* sysdeps/i386/fpu/e_sqrt.S: ...here.
+	* sysdeps/libm-i387/e_sqrtf.S: Moved to ...
+	* sysdeps/i386/fpu/e_sqrtf.S: ...here.
+	* sysdeps/libm-i387/e_sqrtl.S: Moved to ...
+	* sysdeps/i386/fpu/e_sqrtl.S: ...here.
+	* sysdeps/libm-i387/k_rem_pio2l.c: Moved to ...
+	* sysdeps/i386/fpu/k_rem_pio2l.c: ...here.
+	* sysdeps/libm-i387/s_asinh.S: Moved to ...
+	* sysdeps/i386/fpu/s_asinh.S: ...here.
+	* sysdeps/libm-i387/s_asinhf.S: Moved to ...
+	* sysdeps/i386/fpu/s_asinhf.S: ...here.
+	* sysdeps/libm-i387/s_asinhl.S: Moved to ...
+	* sysdeps/i386/fpu/s_asinhl.S: ...here.
+	* sysdeps/libm-i387/s_atan.S: Moved to ...
+	* sysdeps/i386/fpu/s_atan.S: ...here.
+	* sysdeps/libm-i387/s_atanf.S: Moved to ...
+	* sysdeps/i386/fpu/s_atanf.S: ...here.
+	* sysdeps/libm-i387/s_atanl.S: Moved to ...
+	* sysdeps/i386/fpu/s_atanl.S: ...here.
+	* sysdeps/libm-i387/s_cbrt.S: Moved to ...
+	* sysdeps/i386/fpu/s_cbrt.S: ...here.
+	* sysdeps/libm-i387/s_cbrtf.S: Moved to ...
+	* sysdeps/i386/fpu/s_cbrtf.S: ...here.
+	* sysdeps/libm-i387/s_cbrtl.S: Moved to ...
+	* sysdeps/i386/fpu/s_cbrtl.S: ...here.
+	* sysdeps/libm-i387/s_ceil.S: Moved to ...
+	* sysdeps/i386/fpu/s_ceil.S: ...here.
+	* sysdeps/libm-i387/s_ceilf.S: Moved to ...
+	* sysdeps/i386/fpu/s_ceilf.S: ...here.
+	* sysdeps/libm-i387/s_ceill.S: Moved to ...
+	* sysdeps/i386/fpu/s_ceill.S: ...here.
+	* sysdeps/libm-i387/s_cexp.S: Moved to ...
+	* sysdeps/i386/fpu/s_cexp.S: ...here.
+	* sysdeps/libm-i387/s_cexpf.S: Moved to ...
+	* sysdeps/i386/fpu/s_cexpf.S: ...here.
+	* sysdeps/libm-i387/s_cexpl.S: Moved to ...
+	* sysdeps/i386/fpu/s_cexpl.S: ...here.
+	* sysdeps/libm-i387/s_copysign.S: Moved to ...
+	* sysdeps/i386/fpu/s_copysign.S: ...here.
+	* sysdeps/libm-i387/s_copysignf.S: Moved to ...
+	* sysdeps/i386/fpu/s_copysignf.S: ...here.
+	* sysdeps/libm-i387/s_copysignl.S: Moved to ...
+	* sysdeps/i386/fpu/s_copysignl.S: ...here.
+	* sysdeps/libm-i387/s_cos.S: Moved to ...
+	* sysdeps/i386/fpu/s_cos.S: ...here.
+	* sysdeps/libm-i387/s_cosf.S: Moved to ...
+	* sysdeps/i386/fpu/s_cosf.S: ...here.
+	* sysdeps/libm-i387/s_cosl.S: Moved to ...
+	* sysdeps/i386/fpu/s_cosl.S: ...here.
+	* sysdeps/libm-i387/s_exp2.S: Moved to ...
+	* sysdeps/i386/fpu/s_exp2.S: ...here.
+	* sysdeps/libm-i387/s_exp2f.S: Moved to ...
+	* sysdeps/i386/fpu/s_exp2f.S: ...here.
+	* sysdeps/libm-i387/s_exp2l.S: Moved to ...
+	* sysdeps/i386/fpu/s_exp2l.S: ...here.
+	* sysdeps/libm-i387/s_expm1.S: Moved to ...
+	* sysdeps/i386/fpu/s_expm1.S: ...here.
+	* sysdeps/libm-i387/s_expm1f.S: Moved to ...
+	* sysdeps/i386/fpu/s_expm1f.S: ...here.
+	* sysdeps/libm-i387/s_expm1l.S: Moved to ...
+	* sysdeps/i386/fpu/s_expm1l.S: ...here.
+	* sysdeps/libm-i387/s_fdim.S: Moved to ...
+	* sysdeps/i386/fpu/s_fdim.S: ...here.
+	* sysdeps/libm-i387/s_fdimf.S: Moved to ...
+	* sysdeps/i386/fpu/s_fdimf.S: ...here.
+	* sysdeps/libm-i387/s_fdiml.S: Moved to ...
+	* sysdeps/i386/fpu/s_fdiml.S: ...here.
+	* sysdeps/libm-i387/s_finite.S: Moved to ...
+	* sysdeps/i386/fpu/s_finite.S: ...here.
+	* sysdeps/libm-i387/s_finitef.S: Moved to ...
+	* sysdeps/i386/fpu/s_finitef.S: ...here.
+	* sysdeps/libm-i387/s_finitel.S: Moved to ...
+	* sysdeps/i386/fpu/s_finitel.S: ...here.
+	* sysdeps/libm-i387/s_floor.S: Moved to ...
+	* sysdeps/i386/fpu/s_floor.S: ...here.
+	* sysdeps/libm-i387/s_floorf.S: Moved to ...
+	* sysdeps/i386/fpu/s_floorf.S: ...here.
+	* sysdeps/libm-i387/s_floorl.S: Moved to ...
+	* sysdeps/i386/fpu/s_floorl.S: ...here.
+	* sysdeps/libm-i387/s_fma.S: Moved to ...
+	* sysdeps/i386/fpu/s_fma.S: ...here.
+	* sysdeps/libm-i387/s_fmaf.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmaf.S: ...here.
+	* sysdeps/libm-i387/s_fmal.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmal.S: ...here.
+	* sysdeps/libm-i387/s_fmax.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmax.S: ...here.
+	* sysdeps/libm-i387/s_fmaxf.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmaxf.S: ...here.
+	* sysdeps/libm-i387/s_fmaxl.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmaxl.S: ...here.
+	* sysdeps/libm-i387/s_fmin.S: Moved to ...
+	* sysdeps/i386/fpu/s_fmin.S: ...here.
+	* sysdeps/libm-i387/s_fminf.S: Moved to ...
+	* sysdeps/i386/fpu/s_fminf.S: ...here.
+	* sysdeps/libm-i387/s_fminl.S: Moved to ...
+	* sysdeps/i386/fpu/s_fminl.S: ...here.
+	* sysdeps/libm-i387/s_frexp.S: Moved to ...
+	* sysdeps/i386/fpu/s_frexp.S: ...here.
+	* sysdeps/libm-i387/s_frexpf.S: Moved to ...
+	* sysdeps/i386/fpu/s_frexpf.S: ...here.
+	* sysdeps/libm-i387/s_frexpl.S: Moved to ...
+	* sysdeps/i386/fpu/s_frexpl.S: ...here.
+	* sysdeps/libm-i387/s_ilogb.S: Moved to ...
+	* sysdeps/i386/fpu/s_ilogb.S: ...here.
+	* sysdeps/libm-i387/s_ilogbf.S: Moved to ...
+	* sysdeps/i386/fpu/s_ilogbf.S: ...here.
+	* sysdeps/libm-i387/s_ilogbl.S: Moved to ...
+	* sysdeps/i386/fpu/s_ilogbl.S: ...here.
+	* sysdeps/libm-i387/s_llrint.S: Moved to ...
+	* sysdeps/i386/fpu/s_llrint.S: ...here.
+	* sysdeps/libm-i387/s_llrintf.S: Moved to ...
+	* sysdeps/i386/fpu/s_llrintf.S: ...here.
+	* sysdeps/libm-i387/s_llrintl.S: Moved to ...
+	* sysdeps/i386/fpu/s_llrintl.S: ...here.
+	* sysdeps/libm-i387/s_log1p.S: Moved to ...
+	* sysdeps/i386/fpu/s_log1p.S: ...here.
+	* sysdeps/libm-i387/s_log1pf.S: Moved to ...
+	* sysdeps/i386/fpu/s_log1pf.S: ...here.
+	* sysdeps/libm-i387/s_log1pl.S: Moved to ...
+	* sysdeps/i386/fpu/s_log1pl.S: ...here.
+	* sysdeps/libm-i387/s_log2.S: Moved to ...
+	* sysdeps/i386/fpu/s_log2.S: ...here.
+	* sysdeps/libm-i387/s_log2f.S: Moved to ...
+	* sysdeps/i386/fpu/s_log2f.S: ...here.
+	* sysdeps/libm-i387/s_log2l.S: Moved to ...
+	* sysdeps/i386/fpu/s_log2l.S: ...here.
+	* sysdeps/libm-i387/s_logb.S: Moved to ...
+	* sysdeps/i386/fpu/s_logb.S: ...here.
+	* sysdeps/libm-i387/s_logbf.S: Moved to ...
+	* sysdeps/i386/fpu/s_logbf.S: ...here.
+	* sysdeps/libm-i387/s_logbl.S: Moved to ...
+	* sysdeps/i386/fpu/s_logbl.S: ...here.
+	* sysdeps/libm-i387/s_lrint.S: Moved to ...
+	* sysdeps/i386/fpu/s_lrint.S: ...here.
+	* sysdeps/libm-i387/s_lrintf.S: Moved to ...
+	* sysdeps/i386/fpu/s_lrintf.S: ...here.
+	* sysdeps/libm-i387/s_lrintl.S: Moved to ...
+	* sysdeps/i386/fpu/s_lrintl.S: ...here.
+	* sysdeps/libm-i387/s_nearbyint.S: Moved to ...
+	* sysdeps/i386/fpu/s_nearbyint.S: ...here.
+	* sysdeps/libm-i387/s_nearbyintf.S: Moved to ...
+	* sysdeps/i386/fpu/s_nearbyintf.S: ...here.
+	* sysdeps/libm-i387/s_nearbyintl.S: Moved to ...
+	* sysdeps/i386/fpu/s_nearbyintl.S: ...here.
+	* sysdeps/libm-i387/s_remquo.S: Moved to ...
+	* sysdeps/i386/fpu/s_remquo.S: ...here.
+	* sysdeps/libm-i387/s_remquof.S: Moved to ...
+	* sysdeps/i386/fpu/s_remquof.S: ...here.
+	* sysdeps/libm-i387/s_remquol.S: Moved to ...
+	* sysdeps/i386/fpu/s_remquol.S: ...here.
+	* sysdeps/libm-i387/s_rint.S: Moved to ...
+	* sysdeps/i386/fpu/s_rint.S: ...here.
+	* sysdeps/libm-i387/s_rintf.S: Moved to ...
+	* sysdeps/i386/fpu/s_rintf.S: ...here.
+	* sysdeps/libm-i387/s_rintl.S: Moved to ...
+	* sysdeps/i386/fpu/s_rintl.S: ...here.
+	* sysdeps/libm-i387/s_scalbn.S: Moved to ...
+	* sysdeps/i386/fpu/s_scalbn.S: ...here.
+	* sysdeps/libm-i387/s_scalbnf.S: Moved to ...
+	* sysdeps/i386/fpu/s_scalbnf.S: ...here.
+	* sysdeps/libm-i387/s_scalbnl.S: Moved to ...
+	* sysdeps/i386/fpu/s_scalbnl.S: ...here.
+	* sysdeps/libm-i387/s_significand.S: Moved to ...
+	* sysdeps/i386/fpu/s_significand.S: ...here.
+	* sysdeps/libm-i387/s_significandf.S: Moved to ...
+	* sysdeps/i386/fpu/s_significandf.S: ...here.
+	* sysdeps/libm-i387/s_significandl.S: Moved to ...
+	* sysdeps/i386/fpu/s_significandl.S: ...here.
+	* sysdeps/libm-i387/s_sin.S: Moved to ...
+	* sysdeps/i386/fpu/s_sin.S: ...here.
+	* sysdeps/libm-i387/s_sincos.S: Moved to ...
+	* sysdeps/i386/fpu/s_sincos.S: ...here.
+	* sysdeps/libm-i387/s_sincosf.S: Moved to ...
+	* sysdeps/i386/fpu/s_sincosf.S: ...here.
+	* sysdeps/libm-i387/s_sincosl.S: Moved to ...
+	* sysdeps/i386/fpu/s_sincosl.S: ...here.
+	* sysdeps/libm-i387/s_sinf.S: Moved to ...
+	* sysdeps/i386/fpu/s_sinf.S: ...here.
+	* sysdeps/libm-i387/s_sinl.S: Moved to ...
+	* sysdeps/i386/fpu/s_sinl.S: ...here.
+	* sysdeps/libm-i387/s_tan.S: Moved to ...
+	* sysdeps/i386/fpu/s_tan.S: ...here.
+	* sysdeps/libm-i387/s_tanf.S: Moved to ...
+	* sysdeps/i386/fpu/s_tanf.S: ...here.
+	* sysdeps/libm-i387/s_tanl.S: Moved to ...
+	* sysdeps/i386/fpu/s_tanl.S: ...here.
+	* sysdeps/libm-i387/s_trunc.S: Moved to ...
+	* sysdeps/i386/fpu/s_trunc.S: ...here.
+	* sysdeps/libm-i387/s_truncf.S: Moved to ...
+	* sysdeps/i386/fpu/s_truncf.S: ...here.
+	* sysdeps/libm-i387/s_truncl.S: Moved to ...
+	* sysdeps/i386/fpu/s_truncl.S: ...here.
+	* sysdeps/libm-ieee754/k_standard.c: Moved to ...
+	* sysdeps/ieee754/k_standard.c: ...here.
+	* sysdeps/libm-ieee754/s_lib_version.c: Moved to ...
+	* sysdeps/ieee754/s_lib_version.c: ...here.
+	* sysdeps/libm-ieee754/s_matherr.c: Moved to ...
+	* sysdeps/ieee754/s_matherr.c: ...here.
+	* sysdeps/libm-ieee754/s_signgam.c: Moved to ...
+	* sysdeps/ieee754/s_signgam.c: ...here.
+	* sysdeps/ieee754/dbl2mpn.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/dbl2mpn.c: ...here.
+	* sysdeps/ieee754/mpn2dbl.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/mpn2dbl.c: ...here.
+	* sysdeps/libm-ieee754/e_acos.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_acos.c: ...here.
+	* sysdeps/libm-ieee754/e_acosh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_acosh.c: ...here.
+	* sysdeps/libm-ieee754/e_asin.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_asin.c: ...here.
+	* sysdeps/libm-ieee754/e_atan2.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_atan2.c: ...here.
+	* sysdeps/libm-ieee754/e_atanh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_atanh.c: ...here.
+	* sysdeps/libm-ieee754/e_cosh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_cosh.c: ...here.
+	* sysdeps/libm-ieee754/e_exp.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_exp.c: ...here.
+	* sysdeps/libm-ieee754/e_fmod.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_fmod.c: ...here.
+	* sysdeps/libm-ieee754/e_gamma_r.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_gamma_r.c: ...here.
+	* sysdeps/libm-ieee754/e_hypot.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_hypot.c: ...here.
+	* sysdeps/libm-ieee754/e_j0.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_j0.c: ...here.
+	* sysdeps/libm-ieee754/e_j1.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_j1.c: ...here.
+	* sysdeps/libm-ieee754/e_jn.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_jn.c: ...here.
+	* sysdeps/libm-ieee754/e_lgamma_r.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_lgamma_r.c: ...here.
+	* sysdeps/libm-ieee754/e_log.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_log.c: ...here.
+	* sysdeps/libm-ieee754/e_log10.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_log10.c: ...here.
+	* sysdeps/libm-ieee754/e_pow.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_pow.c: ...here.
+	* sysdeps/libm-ieee754/e_remainder.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_remainder.c: ...here.
+	* sysdeps/libm-ieee754/e_sinh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_sinh.c: ...here.
+	* sysdeps/libm-ieee754/e_sqrt.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_sqrt.c: ...here.
+	* sysdeps/libm-ieee754/k_cos.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/k_cos.c: ...here.
+	* sysdeps/libm-ieee754/k_sin.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/k_sin.c: ...here.
+	* sysdeps/libm-ieee754/k_tan.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/k_tan.c: ...here.
+	* sysdeps/libm-ieee754/s_asinh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_asinh.c: ...here.
+	* sysdeps/libm-ieee754/s_atan.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_atan.c: ...here.
+	* sysdeps/libm-ieee754/s_cbrt.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_cbrt.c: ...here.
+	* sysdeps/libm-ieee754/s_ceil.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_ceil.c: ...here.
+	* sysdeps/libm-ieee754/s_copysign.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_copysign.c: ...here.
+	* sysdeps/libm-ieee754/s_cos.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_cos.c: ...here.
+	* sysdeps/libm-ieee754/s_erf.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_erf.c: ...here.
+	* sysdeps/libm-ieee754/s_exp2.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_exp2.c: ...here.
+	* sysdeps/libm-ieee754/s_expm1.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_expm1.c: ...here.
+	* sysdeps/libm-ieee754/s_fabs.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_fabs.c: ...here.
+	* sysdeps/libm-ieee754/s_finite.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_finite.c: ...here.
+	* sysdeps/libm-ieee754/s_floor.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_floor.c: ...here.
+	* sysdeps/libm-ieee754/s_fpclassify.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_fpclassify.c: ...here.
+	* sysdeps/libm-ieee754/s_frexp.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_frexp.c: ...here.
+	* sysdeps/libm-ieee754/s_ilogb.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_ilogb.c: ...here.
+	* sysdeps/libm-ieee754/s_isinf.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_isinf.c: ...here.
+	* sysdeps/libm-ieee754/s_isnan.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_isnan.c: ...here.
+	(__isnan): Comment above function says it returns 0 or 1, but it
+	used to return 0 or -1.
+	* sysdeps/libm-ieee754/s_llrint.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_llrint.c: ...here.
+	* sysdeps/libm-ieee754/s_llround.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_llround.c: ...here.
+	* sysdeps/libm-ieee754/s_log1p.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_log1p.c: ...here.
+	* sysdeps/libm-ieee754/s_log2.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_log2.c: ...here.
+	* sysdeps/libm-ieee754/s_logb.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_logb.c: ...here.
+	* sysdeps/libm-ieee754/s_lrint.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_lrint.c: ...here.
+	* sysdeps/libm-ieee754/s_lround.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_lround.c: ...here.
+	* sysdeps/libm-ieee754/s_modf.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_modf.c: ...here.
+	* sysdeps/libm-ieee754/s_nearbyint.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_nearbyint.c: ...here.
+	* sysdeps/libm-ieee754/s_nextafter.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_nextafter.c: ...here.
+	Add __nexttoward and nexttoward aliases if NO_LONG_DOUBLE.
+	* sysdeps/libm-ieee754/s_remquo.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_remquo.c: ...here.
+	* sysdeps/libm-ieee754/s_rint.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_rint.c: ...here.
+	* sysdeps/libm-ieee754/s_round.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_round.c: ...here.
+	* sysdeps/libm-ieee754/s_scalbn.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_scalbn.c: ...here.
+	* sysdeps/libm-ieee754/s_signbit.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_signbit.c: ...here.
+	* sysdeps/libm-ieee754/s_sin.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_sin.c: ...here.
+	* sysdeps/libm-ieee754/s_sincos.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_sincos.c: ...here.
+	* sysdeps/libm-ieee754/s_tan.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_tan.c: ...here.
+	* sysdeps/libm-ieee754/s_tanh.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_tanh.c: ...here.
+	* sysdeps/libm-ieee754/s_trunc.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_trunc.c: ...here.
+	* sysdeps/libm-ieee754/t_exp2.h: Moved to ...
+	* sysdeps/ieee754/dbl-64/t_exp2.h: ...here.
+	* sysdeps/libm-ieee754/w_exp.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/w_exp.c: ...here.
+	* sysdeps/ieee754/mpn2flt.c: Moved to ...
+	* sysdeps/ieee754/flt-32/mpn2flt.c: ...here.
+	* sysdeps/libm-ieee754/e_acosf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_acosf.c: ...here.
+	* sysdeps/libm-ieee754/e_acoshf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_acoshf.c: ...here.
+	* sysdeps/libm-ieee754/e_asinf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_asinf.c: ...here.
+	* sysdeps/libm-ieee754/e_atan2f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_atan2f.c: ...here.
+	* sysdeps/libm-ieee754/e_atanhf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_atanhf.c: ...here.
+	* sysdeps/libm-ieee754/e_coshf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_coshf.c: ...here.
+	* sysdeps/libm-ieee754/e_expf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_expf.c: ...here.
+	* sysdeps/libm-ieee754/e_fmodf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_fmodf.c: ...here.
+	* sysdeps/libm-ieee754/e_gammaf_r.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_gammaf_r.c: ...here.
+	* sysdeps/libm-ieee754/e_hypotf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_hypotf.c: ...here.
+	* sysdeps/libm-ieee754/e_j0f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_j0f.c: ...here.
+	* sysdeps/libm-ieee754/e_j1f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_j1f.c: ...here.
+	* sysdeps/libm-ieee754/e_jnf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_jnf.c: ...here.
+	* sysdeps/libm-ieee754/e_lgammaf_r.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_lgammaf_r.c: ...here.
+	* sysdeps/libm-ieee754/e_log10f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_log10f.c: ...here.
+	* sysdeps/libm-ieee754/e_logf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_logf.c: ...here.
+	* sysdeps/libm-ieee754/e_powf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_powf.c: ...here.
+	* sysdeps/libm-ieee754/e_remainderf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_remainderf.c: ...here.
+	* sysdeps/libm-ieee754/e_sinhf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_sinhf.c: ...here.
+	* sysdeps/libm-ieee754/e_sqrtf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_sqrtf.c: ...here.
+	* sysdeps/libm-ieee754/k_cosf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/k_cosf.c: ...here.
+	* sysdeps/libm-ieee754/k_sinf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/k_sinf.c: ...here.
+	* sysdeps/libm-ieee754/k_tanf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/k_tanf.c: ...here.
+	* sysdeps/libm-ieee754/s_asinhf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_asinhf.c: ...here.
+	* sysdeps/libm-ieee754/s_atanf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_atanf.c: ...here.
+	* sysdeps/libm-ieee754/s_cbrtf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_cbrtf.c: ...here.
+	* sysdeps/libm-ieee754/s_ceilf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_ceilf.c: ...here.
+	* sysdeps/libm-ieee754/s_copysignf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_copysignf.c: ...here.
+	* sysdeps/libm-ieee754/s_cosf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_cosf.c: ...here.
+	* sysdeps/libm-ieee754/s_erff.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_erff.c: ...here.
+	* sysdeps/libm-ieee754/s_exp2f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_exp2f.c: ...here.
+	* sysdeps/libm-ieee754/s_expm1f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_expm1f.c: ...here.
+	* sysdeps/libm-ieee754/s_fabsf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_fabsf.c: ...here.
+	* sysdeps/libm-ieee754/s_finitef.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_finitef.c: ...here.
+	* sysdeps/libm-ieee754/s_floorf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_floorf.c: ...here.
+	* sysdeps/libm-ieee754/s_fpclassifyf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_fpclassifyf.c: ...here.
+	* sysdeps/libm-ieee754/s_frexpf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_frexpf.c: ...here.
+	* sysdeps/libm-ieee754/s_ilogbf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_ilogbf.c: ...here.
+	* sysdeps/libm-ieee754/s_isinff.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_isinff.c: ...here.
+	* sysdeps/libm-ieee754/s_isnanf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_isnanf.c: ...here.
+	* sysdeps/libm-ieee754/s_llrintf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_llrintf.c: ...here.
+	* sysdeps/libm-ieee754/s_llroundf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_llroundf.c: ...here.
+	* sysdeps/libm-ieee754/s_log1pf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_log1pf.c: ...here.
+	* sysdeps/libm-ieee754/s_log2f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_log2f.c: ...here.
+	* sysdeps/libm-ieee754/s_logbf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_logbf.c: ...here.
+	* sysdeps/libm-ieee754/s_lrintf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_lrintf.c: ...here.
+	* sysdeps/libm-ieee754/s_lroundf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_lroundf.c: ...here.
+	* sysdeps/libm-ieee754/s_modff.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_modff.c: ...here.
+	* sysdeps/libm-ieee754/s_nearbyintf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_nearbyintf.c: ...here.
+	* sysdeps/libm-ieee754/s_nextafterf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_nextafterf.c: ...here.
+	* sysdeps/libm-ieee754/s_remquof.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_remquof.c: ...here.
+	* sysdeps/libm-ieee754/s_rintf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_rintf.c: ...here.
+	* sysdeps/libm-ieee754/s_roundf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_roundf.c: ...here.
+	* sysdeps/libm-ieee754/s_scalbnf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_scalbnf.c: ...here.
+	* sysdeps/libm-ieee754/s_signbitf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_signbitf.c: ...here.
+	* sysdeps/libm-ieee754/s_sincosf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_sincosf.c: ...here.
+	* sysdeps/libm-ieee754/s_sinf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_sinf.c: ...here.
+	* sysdeps/libm-ieee754/s_tanf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_tanf.c: ...here.
+	* sysdeps/libm-ieee754/s_tanhf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_tanhf.c: ...here.
+	* sysdeps/libm-ieee754/s_truncf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_truncf.c: ...here.
+	* sysdeps/libm-ieee754/t_exp2f.h: Moved to ...
+	* sysdeps/ieee754/flt-32/t_exp2f.h: ...here.
+	* sysdeps/libm-ieee754/w_expf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/w_expf.c: ...here.
+	* sysdeps/libm-ieee754/e_acoshl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_acoshl.c: ...here.
+	* sysdeps/libm-ieee754/e_atan2l.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_atan2l.c: ...here.
+	* sysdeps/libm-ieee754/e_atanhl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_atanhl.c: ...here.
+	* sysdeps/libm-ieee754/e_coshl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_coshl.c: ...here.
+	* sysdeps/libm-ieee754/e_gammal_r.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_gammal_r.c: ...here.
+	* sysdeps/libm-ieee754/e_hypotl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_hypotl.c: ...here.
+	* sysdeps/libm-ieee754/e_remainderl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_remainderl.c: ...here.
+	* sysdeps/libm-ieee754/e_sinhl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/e_sinhl.c: ...here.
+	* sysdeps/libm-ieee754/s_asinhl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_asinhl.c: ...here.
+	* sysdeps/libm-ieee754/s_cbrtl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_cbrtl.c: ...here.
+	* sysdeps/libm-ieee754/s_ceill.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_ceill.c: ...here.
+	* sysdeps/libm-ieee754/s_copysignl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_copysignl.c: ...here.
+	* sysdeps/libm-ieee754/s_cosl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_cosl.c: ...here.
+	* sysdeps/libm-ieee754/s_fabsl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_fabsl.c: ...here.
+	* sysdeps/libm-ieee754/s_finitel.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_finitel.c: ...here.
+	* sysdeps/libm-ieee754/s_floorl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_floorl.c: ...here.
+	* sysdeps/libm-ieee754/s_fpclassifyl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_fpclassifyl.c: ...here.
+	* sysdeps/libm-ieee754/s_frexpl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_frexpl.c: ...here.
+	* sysdeps/libm-ieee754/s_ilogbl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_ilogbl.c: ...here.
+	* sysdeps/libm-ieee754/s_llrintl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_llrintl.c: ...here.
+	* sysdeps/libm-ieee754/s_llroundl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_llroundl.c: ...here.
+	* sysdeps/libm-ieee754/s_logbl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_logbl.c: ...here.
+	* sysdeps/libm-ieee754/s_lrintl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_lrintl.c: ...here.
+	* sysdeps/libm-ieee754/s_lroundl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_lroundl.c: ...here.
+	* sysdeps/libm-ieee754/s_modfl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_modfl.c: ...here.
+	(__modfl): IEEE 854 long doubles should use SET_LDOUBLE_WORDS, not
+	INSERT_WORDS.
+	* sysdeps/libm-ieee754/s_nearbyintl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_nearbyintl.c: ...here.
+	(__nearbyintl): Fix for exponents 2^30.
+	* sysdeps/libm-ieee754/s_remquol.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_remquol.c: ...here.
+	* sysdeps/libm-ieee754/s_rintl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_rintl.c: ...here.
+	(__rintl): Fix for exponents 2^30.
+	* sysdeps/libm-ieee754/s_roundl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_roundl.c: ...here.
+	* sysdeps/libm-ieee754/s_scalbnl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_scalbnl.c: ...here.
+	(__scalbnl): Fix exponent for subnormal result.
+	* sysdeps/libm-ieee754/s_signbitl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_signbitl.c: ...here.
+	* sysdeps/libm-ieee754/s_sincosl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_sincosl.c: ...here.
+	* sysdeps/libm-ieee754/s_sinl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_sinl.c: ...here.
+	* sysdeps/libm-ieee754/s_tanhl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_tanhl.c: ...here.
+	* sysdeps/libm-ieee754/s_tanl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_tanl.c: ...here.
+	* sysdeps/libm-ieee754/s_truncl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_truncl.c: ...here.
+	* sysdeps/libm-ieee754/w_expl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/w_expl.c: ...here.
+	* sysdeps/libm-i387/i686/s_fminl.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fminl.S: ...here.
+	* sysdeps/libm-i387/s_scalblnf.c: Moved to ...
+	* sysdeps/i386/fpu/s_scalblnf.c: ...here.
+	* sysdeps/libm-ieee754/s_scalblnf.c: Moved to ...
+	* sysdeps/ieee754/flt-32/s_scalblnf.c: ...here.
+	* sysdeps/libm-i387/i686/s_fdiml.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fdiml.S: ...here.
+	* sysdeps/libm-i387/e_rem_pio2f.c: Moved to ...
+	* sysdeps/i386/fpu/e_rem_pio2f.c: ...here.
+	* sysdeps/libm-ieee754/e_rem_pio2f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/e_rem_pio2f.c: ...here.
+	* sysdeps/libm-i387/i686/s_fmin.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fmin.S: ...here.
+	* sysdeps/libm-i387/k_rem_pio2.c: Moved to ...
+	* sysdeps/i386/fpu/k_rem_pio2.c: ...here.
+	* sysdeps/libm-ieee754/k_rem_pio2.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/k_rem_pio2.c: ...here.
+	* sysdeps/libm-i387/k_rem_pio2f.c: Moved to ...
+	* sysdeps/i386/fpu/k_rem_pio2f.c: ...here.
+	* sysdeps/libm-ieee754/k_rem_pio2f.c: Moved to ...
+	* sysdeps/ieee754/flt-32/k_rem_pio2f.c: ...here.
+	* sysdeps/libm-i387/s_scalbln.c: Moved to ...
+	* sysdeps/i386/fpu/s_scalbln.c: ...here.
+	* sysdeps/libm-ieee754/s_scalbln.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/s_scalbln.c: ...here.
+	* sysdeps/libm-i387/i686/s_fmax.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fmax.S: ...here.
+	* sysdeps/libm-i387/t_exp.c: Moved to ...
+	* sysdeps/i386/fpu/t_exp.c: ...here.
+	* sysdeps/libm-ieee754/t_exp.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/t_exp.c: ...here.
+	* sysdeps/libm-i387/e_rem_pio2.c: Moved to ...
+	* sysdeps/i386/fpu/e_rem_pio2.c: ...here.
+	* sysdeps/libm-ieee754/e_rem_pio2.c: Moved to ...
+	* sysdeps/ieee754/dbl-64/e_rem_pio2.c: ...here.
+	* sysdeps/libm-i387/s_isinfl.c: Moved to ...
+	* sysdeps/i386/fpu/s_isinfl.c: ...here.
+	* sysdeps/libm-ieee754/s_isinfl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_isinfl.c: ...here.
+	* sysdeps/libm-i387/s_scalblnl.c: Moved to ...
+	* sysdeps/i386/fpu/s_scalblnl.c: ...here.
+	* sysdeps/libm-ieee754/s_scalblnl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_scalblnl.c: ...here.
+	Fix exponent for subnormal result.
+	* sysdeps/libm-ieee754/s_nexttowardl.c: Moved to ...
+	* math/s_nexttowardl.c: ...here.
+	* sysdeps/libm-i387/i686/s_fmaxf.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fmaxf.S: ...here.
+	* sysdeps/libm-i387/s_isnanl.c: Moved to ...
+	* sysdeps/i386/fpu/s_isnanl.c: ...here.
+	* sysdeps/libm-ieee754/s_isnanl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_isnanl.c: ...here.
+	Comment above function says it returns 0 or 1, but it used to return
+	0 or -1.
+	* sysdeps/libm-i387/i686/s_fminf.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fminf.S: ...here.
+	* sysdeps/libm-i387/i686/s_fdim.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fdim.S: ...here.
+	* sysdeps/libm-i387/i686/s_fdimf.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fdimf.S: ...here.
+	* sysdeps/libm-i387/i686/s_fmaxl.S: Moved to ...
+	* sysdeps/i386/i686/fpu/s_fmaxl.S: ...here.
+	* sysdeps/libm-ieee754/s_nexttoward.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_nexttoward.c: ...here.
+	Cannot compare exponents with different biases without adjusting.
+	* sysdeps/libm-ieee754/s_nexttowardf.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_nexttowardf.c: ...here.
+	Cannot compare exponents with different biases without adjusting.
+	* sysdeps/libm-i387/s_nextafterl.c: Moved to ...
+	* sysdeps/i386/fpu/s_nextafterl.c: ...here.
+	* sysdeps/libm-ieee754/s_nextafterl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/s_nextafterl.c: ...here.
+	* sysdeps/ieee754/ldbl2mpn.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/ldbl2mpn.c: ...here.
+	Removed __NO_LONG_DOUBLE_MATH ifndef around the whole file.
+	* sysdeps/ieee754/mpn2ldbl.c: Moved to ...
+	* sysdeps/ieee754/ldbl-96/mpn2ldbl.c: ...here.
+	Removed __NO_LONG_DOUBLE_MATH ifndef around the whole file.
+	* sysdeps/libm-ieee754/Dist: Split into ...
+	* sysdeps/ieee754/dbl-64/Dist: ...this and ...
+	* sysdeps/ieee754/flt-32/Dist: ...this file.
+
+	* sysdeps/ieee754/flt-32/Implies: New file.
+	* sysdeps/ieee754/dbl-64/Implies: New file.
+	* sysdeps/ieee754/dbl-64/math_ldbl.h: New file.
+	* sysdeps/ieee754/dbl-64/s_nexttoward.c: New file.
+	* sysdeps/ieee754/dbl-64/s_nexttowardf.c: New file.
+	* sysdeps/ieee754/dbl-64/strtold.c: New file.
+	* sysdeps/ieee754/dbl-64/mpn2ldbl.c: New file.
+	* sysdeps/ieee754/dbl-64/ldbl2mpn.c: New file.
+	* sysdeps/ieee754/ldbl-96/Implies: New file.
+	* sysdeps/ieee754/ldbl-96/math_ldbl.h: New file.
+	* sysdeps/ieee754/ldbl-96/strtold.c: New file.
+	* sysdeps/ieee754/ldbl-96/printf_fphex.c: New file.
+	* sysdeps/ieee754/ldbl-128/Implies: New file.
+	* sysdeps/ieee754/ldbl-128/s_sinl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_ceill.c: New file.
+	* sysdeps/ieee754/ldbl-128/e_remainderl.c: New file.
+	* sysdeps/ieee754/ldbl-128/ieee754.h: New file.
+	* sysdeps/ieee754/ldbl-128/e_atan2l.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_finitel.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_roundl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_llrintl.c: New file.
+	* sysdeps/ieee754/ldbl-128/e_gammal_r.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_llroundl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_sincosl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_cosl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_fpclassifyl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_ilogbl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_floorl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_logbl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_scalbnl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_remquol.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_nearbyintl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_tanl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_rintl.c: New file.
+	* sysdeps/ieee754/ldbl-128/e_acoshl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_lroundl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_signbitl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_copysignl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_fabsl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_frexpl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_truncl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_modfl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_lrintl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_isinfl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_scalblnl.c: New file.
+	* sysdeps/ieee754/ldbl-128/e_fmodl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_isnanl.c: New file.
+	* sysdeps/ieee754/ldbl-128/math_ldbl.h: New file.
+	* sysdeps/ieee754/ldbl-128/strtold.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_nextafterl.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_nexttoward.c: New file.
+	* sysdeps/ieee754/ldbl-128/s_nexttowardf.c: New file.
+	* sysdeps/ieee754/ldbl-128/printf_fphex.c: New file.
+	* sysdeps/ieee754/ldbl-128/mpn2ldbl.c: New file.
+	* sysdeps/ieee754/ldbl-128/ldbl2mpn.c: New file.
+
+	* math/machine/endian.h: Remove.
+	* sysdeps/i386/fpu/Implies: Remove.
+	* sysdeps/ieee754/Implies: Remove.
+
+	* math/math_private.h: Move long double macros to math_ldbl.h
+	header.
+
 1999-07-12  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/posix/getaddrinfo.c (gaih_inet): For non-passive
diff --git a/math/machine/endian.h b/math/machine/endian.h
deleted file mode 100644
index 88804564bf..0000000000
--- a/math/machine/endian.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* math_private.h wants to include <machine/endian.h>; we provide this
-   file so it can, leaving math_private.h unmodified from the original.  */
-
-#include <endian.h>
diff --git a/math/math_private.h b/math/math_private.h
index 906b1dabba..35e3e4e7ca 100644
--- a/math/math_private.h
+++ b/math/math_private.h
@@ -17,7 +17,7 @@
 #ifndef _MATH_PRIVATE_H_
 #define _MATH_PRIVATE_H_
 
-#include <machine/endian.h>
+#include <endian.h>
 #include <sys/types.h>
 
 /* The original fdlibm code used statements like:
@@ -147,101 +147,8 @@ do {								\
   (d) = sf_u.value;						\
 } while (0)
 
-/* A union which permits us to convert between a long double and
-   three 32 bit ints.  */
-
-#if __FLOAT_WORD_ORDER == BIG_ENDIAN
-
-typedef union
-{
-  long double value;
-  struct
-  {
-    unsigned int sign_exponent:16;
-    unsigned int empty:16;
-    u_int32_t msw;
-    u_int32_t lsw;
-  } parts;
-} ieee_long_double_shape_type;
-
-#endif
-
-#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
-
-typedef union
-{
-  long double value;
-  struct
-  {
-    u_int32_t lsw;
-    u_int32_t msw;
-    unsigned int sign_exponent:16;
-    unsigned int empty:16;
-  } parts;
-} ieee_long_double_shape_type;
-
-#endif
-
-/* Get three 32 bit ints from a double.  */
-
-#define GET_LDOUBLE_WORDS(exp,ix0,ix1,d)			\
-do {								\
-  ieee_long_double_shape_type ew_u;				\
-  ew_u.value = (d);						\
-  (exp) = ew_u.parts.sign_exponent;				\
-  (ix0) = ew_u.parts.msw;					\
-  (ix1) = ew_u.parts.lsw;					\
-} while (0)
-
-/* Set a double from two 32 bit ints.  */
-
-#define SET_LDOUBLE_WORDS(d,exp,ix0,ix1)			\
-do {								\
-  ieee_long_double_shape_type iw_u;				\
-  iw_u.parts.sign_exponent = (exp);				\
-  iw_u.parts.msw = (ix0);					\
-  iw_u.parts.lsw = (ix1);					\
-  (d) = iw_u.value;						\
-} while (0)
-
-/* Get the more significant 32 bits of a long double mantissa.  */
-
-#define GET_LDOUBLE_MSW(v,d)					\
-do {								\
-  ieee_long_double_shape_type sh_u;				\
-  sh_u.value = (d);						\
-  (v) = sh_u.parts.msw;						\
-} while (0)
-
-/* Set the more significant 32 bits of a long double mantissa from an int.  */
-
-#define SET_LDOUBLE_MSW(d,v)					\
-do {								\
-  ieee_long_double_shape_type sh_u;				\
-  sh_u.value = (d);						\
-  sh_u.parts.msw = (v);						\
-  (d) = sh_u.value;						\
-} while (0)
-
-/* Get int from the exponent of a long double.  */
-
-#define GET_LDOUBLE_EXP(exp,d)					\
-do {								\
-  ieee_long_double_shape_type ge_u;				\
-  ge_u.value = (d);						\
-  (exp) = ge_u.parts.sign_exponent;				\
-} while (0)
-
-/* Set exponent of a long double from an int.  */
-
-#define SET_LDOUBLE_EXP(d,exp)					\
-do {								\
-  ieee_long_double_shape_type se_u;				\
-  se_u.value = (d);						\
-  se_u.parts.sign_exponent = (exp);				\
-  (d) = se_u.value;						\
-} while (0)
-
+/* Get long double macros from a separate header.  */
+#include <math_ldbl.h>
 
 /* ieee style elementary functions */
 extern double __ieee754_sqrt __P((double));
diff --git a/sysdeps/libm-ieee754/w_acos.c b/math/w_acos.c
index 5a1158ea7a..5a1158ea7a 100644
--- a/sysdeps/libm-ieee754/w_acos.c
+++ b/math/w_acos.c
diff --git a/sysdeps/libm-ieee754/w_acosf.c b/math/w_acosf.c
index 28260ddd3e..28260ddd3e 100644
--- a/sysdeps/libm-ieee754/w_acosf.c
+++ b/math/w_acosf.c
diff --git a/sysdeps/libm-ieee754/w_acosh.c b/math/w_acosh.c
index 2b5d60f7ea..2b5d60f7ea 100644
--- a/sysdeps/libm-ieee754/w_acosh.c
+++ b/math/w_acosh.c
diff --git a/sysdeps/libm-ieee754/w_acoshf.c b/math/w_acoshf.c
index f701983dc2..f701983dc2 100644
--- a/sysdeps/libm-ieee754/w_acoshf.c
+++ b/math/w_acoshf.c
diff --git a/sysdeps/libm-ieee754/w_acoshl.c b/math/w_acoshl.c
index a37d4c15d9..a37d4c15d9 100644
--- a/sysdeps/libm-ieee754/w_acoshl.c
+++ b/math/w_acoshl.c
diff --git a/sysdeps/libm-ieee754/w_acosl.c b/math/w_acosl.c
index cd9cecf2f9..cd9cecf2f9 100644
--- a/sysdeps/libm-ieee754/w_acosl.c
+++ b/math/w_acosl.c
diff --git a/sysdeps/libm-ieee754/w_asin.c b/math/w_asin.c
index a7ca4ef9fd..a7ca4ef9fd 100644
--- a/sysdeps/libm-ieee754/w_asin.c
+++ b/math/w_asin.c
diff --git a/sysdeps/libm-ieee754/w_asinf.c b/math/w_asinf.c
index d7f7a253b0..d7f7a253b0 100644
--- a/sysdeps/libm-ieee754/w_asinf.c
+++ b/math/w_asinf.c
diff --git a/sysdeps/libm-ieee754/w_asinl.c b/math/w_asinl.c
index 0ac3038e95..0ac3038e95 100644
--- a/sysdeps/libm-ieee754/w_asinl.c
+++ b/math/w_asinl.c
diff --git a/sysdeps/libm-ieee754/w_atan2.c b/math/w_atan2.c
index 801baa2347..801baa2347 100644
--- a/sysdeps/libm-ieee754/w_atan2.c
+++ b/math/w_atan2.c
diff --git a/sysdeps/libm-ieee754/w_atan2f.c b/math/w_atan2f.c
index 09caa06f00..09caa06f00 100644
--- a/sysdeps/libm-ieee754/w_atan2f.c
+++ b/math/w_atan2f.c
diff --git a/sysdeps/libm-ieee754/w_atan2l.c b/math/w_atan2l.c
index 2897c8c5f9..2897c8c5f9 100644
--- a/sysdeps/libm-ieee754/w_atan2l.c
+++ b/math/w_atan2l.c
diff --git a/sysdeps/libm-ieee754/w_atanh.c b/math/w_atanh.c
index e7995b1830..e7995b1830 100644
--- a/sysdeps/libm-ieee754/w_atanh.c
+++ b/math/w_atanh.c
diff --git a/sysdeps/libm-ieee754/w_atanhf.c b/math/w_atanhf.c
index 0b24f2c71a..0b24f2c71a 100644
--- a/sysdeps/libm-ieee754/w_atanhf.c
+++ b/math/w_atanhf.c
diff --git a/sysdeps/libm-ieee754/w_atanhl.c b/math/w_atanhl.c
index d675fc6fe7..d675fc6fe7 100644
--- a/sysdeps/libm-ieee754/w_atanhl.c
+++ b/math/w_atanhl.c
diff --git a/sysdeps/libm-ieee754/w_cosh.c b/math/w_cosh.c
index 8db25c868c..8db25c868c 100644
--- a/sysdeps/libm-ieee754/w_cosh.c
+++ b/math/w_cosh.c
diff --git a/sysdeps/libm-ieee754/w_coshf.c b/math/w_coshf.c
index 53ca84108e..53ca84108e 100644
--- a/sysdeps/libm-ieee754/w_coshf.c
+++ b/math/w_coshf.c
diff --git a/sysdeps/libm-ieee754/w_coshl.c b/math/w_coshl.c
index 343d5724b9..343d5724b9 100644
--- a/sysdeps/libm-ieee754/w_coshl.c
+++ b/math/w_coshl.c
diff --git a/sysdeps/libm-ieee754/w_drem.c b/math/w_drem.c
index 9e2b1e7472..9e2b1e7472 100644
--- a/sysdeps/libm-ieee754/w_drem.c
+++ b/math/w_drem.c
diff --git a/sysdeps/libm-ieee754/w_dremf.c b/math/w_dremf.c
index b740ea304c..b740ea304c 100644
--- a/sysdeps/libm-ieee754/w_dremf.c
+++ b/math/w_dremf.c
diff --git a/sysdeps/libm-ieee754/w_dreml.c b/math/w_dreml.c
index aa73eedc49..aa73eedc49 100644
--- a/sysdeps/libm-ieee754/w_dreml.c
+++ b/math/w_dreml.c
diff --git a/sysdeps/libm-ieee754/w_exp10.c b/math/w_exp10.c
index bf0d361f52..bf0d361f52 100644
--- a/sysdeps/libm-ieee754/w_exp10.c
+++ b/math/w_exp10.c
diff --git a/sysdeps/libm-ieee754/w_exp10f.c b/math/w_exp10f.c
index f78be7973b..f78be7973b 100644
--- a/sysdeps/libm-ieee754/w_exp10f.c
+++ b/math/w_exp10f.c
diff --git a/sysdeps/libm-ieee754/w_exp10l.c b/math/w_exp10l.c
index 7117873c22..7117873c22 100644
--- a/sysdeps/libm-ieee754/w_exp10l.c
+++ b/math/w_exp10l.c
diff --git a/sysdeps/libm-ieee754/w_exp2.c b/math/w_exp2.c
index 126aa090bc..126aa090bc 100644
--- a/sysdeps/libm-ieee754/w_exp2.c
+++ b/math/w_exp2.c
diff --git a/sysdeps/libm-ieee754/w_exp2f.c b/math/w_exp2f.c
index d2c340db3f..d2c340db3f 100644
--- a/sysdeps/libm-ieee754/w_exp2f.c
+++ b/math/w_exp2f.c
diff --git a/sysdeps/libm-ieee754/w_exp2l.c b/math/w_exp2l.c
index 965e9bf3e4..965e9bf3e4 100644
--- a/sysdeps/libm-ieee754/w_exp2l.c
+++ b/math/w_exp2l.c
diff --git a/sysdeps/libm-ieee754/w_fmod.c b/math/w_fmod.c
index 0ceeb98c55..0ceeb98c55 100644
--- a/sysdeps/libm-ieee754/w_fmod.c
+++ b/math/w_fmod.c
diff --git a/sysdeps/libm-ieee754/w_fmodf.c b/math/w_fmodf.c
index 9afe5ddfdd..9afe5ddfdd 100644
--- a/sysdeps/libm-ieee754/w_fmodf.c
+++ b/math/w_fmodf.c
diff --git a/sysdeps/libm-ieee754/w_fmodl.c b/math/w_fmodl.c
index 71ed4a94a4..71ed4a94a4 100644
--- a/sysdeps/libm-ieee754/w_fmodl.c
+++ b/math/w_fmodl.c
diff --git a/sysdeps/libm-ieee754/w_hypot.c b/math/w_hypot.c
index e91db17083..e91db17083 100644
--- a/sysdeps/libm-ieee754/w_hypot.c
+++ b/math/w_hypot.c
diff --git a/sysdeps/libm-ieee754/w_hypotf.c b/math/w_hypotf.c
index a7e5c1fdb6..a7e5c1fdb6 100644
--- a/sysdeps/libm-ieee754/w_hypotf.c
+++ b/math/w_hypotf.c
diff --git a/sysdeps/libm-ieee754/w_hypotl.c b/math/w_hypotl.c
index 2ec215fd13..2ec215fd13 100644
--- a/sysdeps/libm-ieee754/w_hypotl.c
+++ b/math/w_hypotl.c
diff --git a/sysdeps/libm-ieee754/w_j0.c b/math/w_j0.c
index 5a018760bb..5a018760bb 100644
--- a/sysdeps/libm-ieee754/w_j0.c
+++ b/math/w_j0.c
diff --git a/sysdeps/libm-ieee754/w_j0f.c b/math/w_j0f.c
index 32e2eebb56..32e2eebb56 100644
--- a/sysdeps/libm-ieee754/w_j0f.c
+++ b/math/w_j0f.c
diff --git a/sysdeps/libm-ieee754/w_j0l.c b/math/w_j0l.c
index b74d9ddcff..b74d9ddcff 100644
--- a/sysdeps/libm-ieee754/w_j0l.c
+++ b/math/w_j0l.c
diff --git a/sysdeps/libm-ieee754/w_j1.c b/math/w_j1.c
index 39fe8543b1..39fe8543b1 100644
--- a/sysdeps/libm-ieee754/w_j1.c
+++ b/math/w_j1.c
diff --git a/sysdeps/libm-ieee754/w_j1f.c b/math/w_j1f.c
index 2a7c8db819..2a7c8db819 100644
--- a/sysdeps/libm-ieee754/w_j1f.c
+++ b/math/w_j1f.c
diff --git a/sysdeps/libm-ieee754/w_j1l.c b/math/w_j1l.c
index 49a486cf8e..49a486cf8e 100644
--- a/sysdeps/libm-ieee754/w_j1l.c
+++ b/math/w_j1l.c
diff --git a/sysdeps/libm-ieee754/w_jn.c b/math/w_jn.c
index 85fc383fb7..85fc383fb7 100644
--- a/sysdeps/libm-ieee754/w_jn.c
+++ b/math/w_jn.c
diff --git a/sysdeps/libm-ieee754/w_jnf.c b/math/w_jnf.c
index 63ad335573..63ad335573 100644
--- a/sysdeps/libm-ieee754/w_jnf.c
+++ b/math/w_jnf.c
diff --git a/sysdeps/libm-ieee754/w_jnl.c b/math/w_jnl.c
index 866e3cdb00..866e3cdb00 100644
--- a/sysdeps/libm-ieee754/w_jnl.c
+++ b/math/w_jnl.c
diff --git a/sysdeps/libm-ieee754/w_lgamma.c b/math/w_lgamma.c
index 0cc62a1784..0cc62a1784 100644
--- a/sysdeps/libm-ieee754/w_lgamma.c
+++ b/math/w_lgamma.c
diff --git a/sysdeps/libm-ieee754/w_lgamma_r.c b/math/w_lgamma_r.c
index f3e7d821e2..f3e7d821e2 100644
--- a/sysdeps/libm-ieee754/w_lgamma_r.c
+++ b/math/w_lgamma_r.c
diff --git a/sysdeps/libm-ieee754/w_lgammaf.c b/math/w_lgammaf.c
index 4c64aa4130..4c64aa4130 100644
--- a/sysdeps/libm-ieee754/w_lgammaf.c
+++ b/math/w_lgammaf.c
diff --git a/sysdeps/libm-ieee754/w_lgammaf_r.c b/math/w_lgammaf_r.c
index 66962acc7e..66962acc7e 100644
--- a/sysdeps/libm-ieee754/w_lgammaf_r.c
+++ b/math/w_lgammaf_r.c
diff --git a/sysdeps/libm-ieee754/w_lgammal.c b/math/w_lgammal.c
index 41104e47e4..41104e47e4 100644
--- a/sysdeps/libm-ieee754/w_lgammal.c
+++ b/math/w_lgammal.c
diff --git a/sysdeps/libm-ieee754/w_lgammal_r.c b/math/w_lgammal_r.c
index 71f5c005d0..71f5c005d0 100644
--- a/sysdeps/libm-ieee754/w_lgammal_r.c
+++ b/math/w_lgammal_r.c
diff --git a/sysdeps/libm-ieee754/w_log.c b/math/w_log.c
index 5f0af79731..5f0af79731 100644
--- a/sysdeps/libm-ieee754/w_log.c
+++ b/math/w_log.c
diff --git a/sysdeps/libm-ieee754/w_log10.c b/math/w_log10.c
index 8a0a70bdf7..8a0a70bdf7 100644
--- a/sysdeps/libm-ieee754/w_log10.c
+++ b/math/w_log10.c
diff --git a/sysdeps/libm-ieee754/w_log10f.c b/math/w_log10f.c
index f90cb0cabc..f90cb0cabc 100644
--- a/sysdeps/libm-ieee754/w_log10f.c
+++ b/math/w_log10f.c
diff --git a/sysdeps/libm-ieee754/w_log10l.c b/math/w_log10l.c
index 0d0861689d..0d0861689d 100644
--- a/sysdeps/libm-ieee754/w_log10l.c
+++ b/math/w_log10l.c
diff --git a/sysdeps/libm-ieee754/w_logf.c b/math/w_logf.c
index 9eabe4b34c..9eabe4b34c 100644
--- a/sysdeps/libm-ieee754/w_logf.c
+++ b/math/w_logf.c
diff --git a/sysdeps/libm-ieee754/w_logl.c b/math/w_logl.c
index bb979c26c3..bb979c26c3 100644
--- a/sysdeps/libm-ieee754/w_logl.c
+++ b/math/w_logl.c
diff --git a/sysdeps/libm-ieee754/w_pow.c b/math/w_pow.c
index 5850651a1a..5850651a1a 100644
--- a/sysdeps/libm-ieee754/w_pow.c
+++ b/math/w_pow.c
diff --git a/sysdeps/libm-ieee754/w_powf.c b/math/w_powf.c
index 32196fd89f..32196fd89f 100644
--- a/sysdeps/libm-ieee754/w_powf.c
+++ b/math/w_powf.c
diff --git a/sysdeps/libm-ieee754/w_powl.c b/math/w_powl.c
index 17feb9fc61..17feb9fc61 100644
--- a/sysdeps/libm-ieee754/w_powl.c
+++ b/math/w_powl.c
diff --git a/sysdeps/libm-ieee754/w_remainder.c b/math/w_remainder.c
index d85a3febce..d85a3febce 100644
--- a/sysdeps/libm-ieee754/w_remainder.c
+++ b/math/w_remainder.c
diff --git a/sysdeps/libm-ieee754/w_remainderf.c b/math/w_remainderf.c
index 58255f5be5..58255f5be5 100644
--- a/sysdeps/libm-ieee754/w_remainderf.c
+++ b/math/w_remainderf.c
diff --git a/sysdeps/libm-ieee754/w_remainderl.c b/math/w_remainderl.c
index 284140174d..284140174d 100644
--- a/sysdeps/libm-ieee754/w_remainderl.c
+++ b/math/w_remainderl.c
diff --git a/sysdeps/libm-ieee754/w_scalb.c b/math/w_scalb.c
index e5c407a435..e5c407a435 100644
--- a/sysdeps/libm-ieee754/w_scalb.c
+++ b/math/w_scalb.c
diff --git a/sysdeps/libm-ieee754/w_scalbf.c b/math/w_scalbf.c
index 488a717503..488a717503 100644
--- a/sysdeps/libm-ieee754/w_scalbf.c
+++ b/math/w_scalbf.c
diff --git a/sysdeps/libm-ieee754/w_scalbl.c b/math/w_scalbl.c
index 3ca8d9601d..3ca8d9601d 100644
--- a/sysdeps/libm-ieee754/w_scalbl.c
+++ b/math/w_scalbl.c
diff --git a/sysdeps/libm-ieee754/w_sinh.c b/math/w_sinh.c
index 9b34cd1873..9b34cd1873 100644
--- a/sysdeps/libm-ieee754/w_sinh.c
+++ b/math/w_sinh.c
diff --git a/sysdeps/libm-ieee754/w_sinhf.c b/math/w_sinhf.c
index a69cf3072d..a69cf3072d 100644
--- a/sysdeps/libm-ieee754/w_sinhf.c
+++ b/math/w_sinhf.c
diff --git a/sysdeps/libm-ieee754/w_sinhl.c b/math/w_sinhl.c
index 3e93cc598d..3e93cc598d 100644
--- a/sysdeps/libm-ieee754/w_sinhl.c
+++ b/math/w_sinhl.c
diff --git a/sysdeps/libm-ieee754/w_sqrt.c b/math/w_sqrt.c
index be15d959ea..be15d959ea 100644
--- a/sysdeps/libm-ieee754/w_sqrt.c
+++ b/math/w_sqrt.c
diff --git a/sysdeps/libm-ieee754/w_sqrtf.c b/math/w_sqrtf.c
index f5ccc73868..f5ccc73868 100644
--- a/sysdeps/libm-ieee754/w_sqrtf.c
+++ b/math/w_sqrtf.c
diff --git a/sysdeps/libm-ieee754/w_sqrtl.c b/math/w_sqrtl.c
index 5873ce93ab..5873ce93ab 100644
--- a/sysdeps/libm-ieee754/w_sqrtl.c
+++ b/math/w_sqrtl.c
diff --git a/sysdeps/libm-ieee754/w_tgamma.c b/math/w_tgamma.c
index 2adbc2e14d..2adbc2e14d 100644
--- a/sysdeps/libm-ieee754/w_tgamma.c
+++ b/math/w_tgamma.c
diff --git a/sysdeps/libm-ieee754/w_tgammaf.c b/math/w_tgammaf.c
index 152f4be156..152f4be156 100644
--- a/sysdeps/libm-ieee754/w_tgammaf.c
+++ b/math/w_tgammaf.c
diff --git a/sysdeps/libm-ieee754/w_tgammal.c b/math/w_tgammal.c
index 9efce2bb95..9efce2bb95 100644
--- a/sysdeps/libm-ieee754/w_tgammal.c
+++ b/math/w_tgammal.c
diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c
index 1b550abe4f..0a2efb7891 100644
--- a/stdio-common/printf_fp.c
+++ b/stdio-common/printf_fp.c
@@ -439,9 +439,28 @@ __printf_fp (FILE *fp,
 	    {
 	      if (scalesize == 0)
 		{
-		  tmpsize = powers->arraysize;
-		  memcpy (tmp, &__tens[powers->arrayoff],
-			  tmpsize * sizeof (mp_limb_t));
+#ifndef __NO_LONG_DOUBLE_MATH
+		  if (LDBL_MANT_DIG > _FPIO_CONST_OFFSET * BITS_PER_MP_LIMB
+		      && info->is_long_double)
+		    {
+#define _FPIO_CONST_SHIFT \
+  (((LDBL_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB) \
+   - _FPIO_CONST_OFFSET)
+		      /* 64bit const offset is not enough for
+			 IEEE quad long double.  */
+		      tmpsize = powers->arraysize + _FPIO_CONST_SHIFT;
+		      memcpy (tmp + _FPIO_CONST_SHIFT,
+			      &__tens[powers->arrayoff],
+			      tmpsize * sizeof (mp_limb_t));
+		      MPN_ZERO (tmp, _FPIO_CONST_SHIFT);
+		    }
+		  else
+#endif
+		    {
+		      tmpsize = powers->arraysize;
+		      memcpy (tmp, &__tens[powers->arrayoff],
+			      tmpsize * sizeof (mp_limb_t));
+		    }
 		}
 	      else
 		{
diff --git a/sysdeps/alpha/Implies b/sysdeps/alpha/Implies
index 37fee79d97..2c6af5b7bb 100644
--- a/sysdeps/alpha/Implies
+++ b/sysdeps/alpha/Implies
@@ -1,3 +1,4 @@
 wordsize-64
-# Alpha uses IEEE 754 floating point.
-ieee754
+# Alpha uses IEEE 754 single and double precision floating point.
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/arm/Implies b/sysdeps/arm/Implies
index d6acf04a82..780c4e2467 100644
--- a/sysdeps/arm/Implies
+++ b/sysdeps/arm/Implies
@@ -1,2 +1,3 @@
 wordsize-32
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/generic/e_atanhl.c b/sysdeps/generic/e_atanhl.c
new file mode 100644
index 0000000000..625d42db31
--- /dev/null
+++ b/sysdeps/generic/e_atanhl.c
@@ -0,0 +1,14 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_atanhl (long double x)
+{
+  fputs ("__ieee754_atanhl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+stub_warning (__ieee754_atanhl)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/e_coshl.c b/sysdeps/generic/e_coshl.c
new file mode 100644
index 0000000000..0da319b785
--- /dev/null
+++ b/sysdeps/generic/e_coshl.c
@@ -0,0 +1,14 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_coshl (long double x)
+{
+  fputs ("__ieee754_coshl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+stub_warning (__ieee754_coshl)
+#include <stub-tag.h>
diff --git a/sysdeps/libm-ieee754/e_exp10.c b/sysdeps/generic/e_exp10.c
index 55d676ec09..55d676ec09 100644
--- a/sysdeps/libm-ieee754/e_exp10.c
+++ b/sysdeps/generic/e_exp10.c
diff --git a/sysdeps/libm-ieee754/e_exp10f.c b/sysdeps/generic/e_exp10f.c
index d6cc9dc03d..d6cc9dc03d 100644
--- a/sysdeps/libm-ieee754/e_exp10f.c
+++ b/sysdeps/generic/e_exp10f.c
diff --git a/sysdeps/libm-ieee754/e_exp10l.c b/sysdeps/generic/e_exp10l.c
index cf8658b747..cf8658b747 100644
--- a/sysdeps/libm-ieee754/e_exp10l.c
+++ b/sysdeps/generic/e_exp10l.c
diff --git a/sysdeps/generic/e_gammal_r.c b/sysdeps/generic/e_gammal_r.c
new file mode 100644
index 0000000000..16b641bdd9
--- /dev/null
+++ b/sysdeps/generic/e_gammal_r.c
@@ -0,0 +1,14 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_gammal_r (long double x, int *signgamp)
+{
+  fputs ("__ieee754_gammal_r not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+stub_warning (__ieee754_gammal_r)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/e_hypotl.c b/sysdeps/generic/e_hypotl.c
new file mode 100644
index 0000000000..07df22eb36
--- /dev/null
+++ b/sysdeps/generic/e_hypotl.c
@@ -0,0 +1,14 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_hypotl (long double x, long double y)
+{
+  fputs ("__ieee754_hypotl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+stub_warning (__ieee754_hypotl)
+#include <stub-tag.h>
diff --git a/sysdeps/libm-ieee754/e_scalb.c b/sysdeps/generic/e_scalb.c
index d9a326b2b2..d9a326b2b2 100644
--- a/sysdeps/libm-ieee754/e_scalb.c
+++ b/sysdeps/generic/e_scalb.c
diff --git a/sysdeps/libm-ieee754/e_scalbf.c b/sysdeps/generic/e_scalbf.c
index f51057e7b4..f51057e7b4 100644
--- a/sysdeps/libm-ieee754/e_scalbf.c
+++ b/sysdeps/generic/e_scalbf.c
diff --git a/sysdeps/libm-ieee754/e_scalbl.c b/sysdeps/generic/e_scalbl.c
index dccc876c85..dccc876c85 100644
--- a/sysdeps/libm-ieee754/e_scalbl.c
+++ b/sysdeps/generic/e_scalbl.c
diff --git a/sysdeps/generic/e_sinhl.c b/sysdeps/generic/e_sinhl.c
new file mode 100644
index 0000000000..4cec79cb2d
--- /dev/null
+++ b/sysdeps/generic/e_sinhl.c
@@ -0,0 +1,14 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_sinhl (long double x)
+{
+  fputs ("__ieee754_sinhl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+stub_warning (__ieee754_sinhl)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/ldbl2mpn.c b/sysdeps/generic/ldbl2mpn.c
index e456d59e1d..450f9381cc 100644
--- a/sysdeps/generic/ldbl2mpn.c
+++ b/sysdeps/generic/ldbl2mpn.c
@@ -1,32 +1 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-   This file is part of the 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,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Convert a `long double' to a multi-precision integer representing the
-   significand scaled up by the highest possible number of significant bits
-   of fraction (LDBL_MANT_DIG), and an integral power of two (MPN frexpl). */
-
-mp_size_t
-__mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
-		      int *expt, int *is_neg,
-		      double value)
-{
-#error "not implemented for this floating point format"
-}
+/* Empty.  Not needed unless ldbl support is in. */
diff --git a/sysdeps/generic/math_ldbl.h b/sysdeps/generic/math_ldbl.h
new file mode 100644
index 0000000000..83684e61c4
--- /dev/null
+++ b/sysdeps/generic/math_ldbl.h
@@ -0,0 +1,5 @@
+#ifndef _MATH_PRIVATE_H
+#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
+#endif
+
+/* This is empty.  Any machine using long double type will override this header.  */
diff --git a/sysdeps/generic/mpn2ldbl.c b/sysdeps/generic/mpn2ldbl.c
index c269ce689b..450f9381cc 100644
--- a/sysdeps/generic/mpn2ldbl.c
+++ b/sysdeps/generic/mpn2ldbl.c
@@ -1,30 +1 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-   This file is part of the 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,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include <float.h>
-
-/* Convert a multi-precision integer of the needed number of bits and an
-   integral power of two to a `long double'.  */
-
-long double
-__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int negative)
-{
-#error "__mpn_construct_long_double not implemented for floating point format"
-}
+/* Empty.  Not needed unless ldbl support is in. */
diff --git a/sysdeps/generic/printf_fphex.c b/sysdeps/generic/printf_fphex.c
index 9e9fd07dfc..53e3254286 100644
--- a/sysdeps/generic/printf_fphex.c
+++ b/sysdeps/generic/printf_fphex.c
@@ -106,8 +106,8 @@ __printf_fphex (FILE *fp,
   const char *special = NULL;
 
   /* Buffer for the generated number string for the mantissa.  The
-     maximal size for the mantissa is 64 bits.  */
-  char numbuf[16];
+     maximal size for the mantissa is 128 bits.  */
+  char numbuf[32];
   char *numstr;
   char *numend;
   int negative;
@@ -229,8 +229,6 @@ __printf_fphex (FILE *fp,
       return done;
     }
 
-  /* We are handling here only 64 and 80 bit IEEE foating point
-     numbers.  */
   if (info->is_long_double == 0 || sizeof (double) == sizeof (long double))
     {
       /* We have 52 bits of mantissa plus one implicit digit.  Since
@@ -281,64 +279,10 @@ __printf_fphex (FILE *fp,
 	  exponent = -(exponent - IEEE754_DOUBLE_BIAS);
 	}
     }
+#ifdef PRINT_FPHEX_LONG_DOUBLE
   else
-    {
-      /* The "strange" 80 bit format on ix86 and m68k has an explicit
-	 leading digit in the 64 bit mantissa.  */
-      unsigned long long int num;
-
-      assert (sizeof (long double) == 12);
-
-      num = (((unsigned long long int) fpnum.ldbl.ieee.mantissa0) << 32
-	     | fpnum.ldbl.ieee.mantissa1);
-
-      zero_mantissa = num == 0;
-
-      if (sizeof (unsigned long int) > 6)
-	numstr = _itoa_word (num, numbuf + sizeof numbuf, 16,
-			     info->spec == 'A');
-      else
-	numstr = _itoa (num, numbuf + sizeof numbuf, 16, info->spec == 'A');
-
-      /* Fill with zeroes.  */
-      while (numstr > numbuf + (sizeof numbuf - 64 / 4))
-	*--numstr = '0';
-
-      /* We use a full nibble for the leading digit.  */
-      leading = *numstr++;
-
-      /* We have 3 bits from the mantissa in the leading nibble.
-	 Therefore we are here using `IEEE854_LONG_DOUBLE_BIAS + 3'.  */
-      exponent = fpnum.ldbl.ieee.exponent;
-
-      if (exponent == 0)
-	{
-	  if (zero_mantissa)
-	    expnegative = 0;
-	  else
-	    {
-	      /* This is a denormalized number.  */
-	      expnegative = 1;
-	      /* This is a hook for the m68k long double format, where the
-		 exponent bias is the same for normalized and denormalized
-		 numbers.  */
-#ifndef LONG_DOUBLE_DENORM_BIAS
-# define LONG_DOUBLE_DENORM_BIAS (IEEE854_LONG_DOUBLE_BIAS - 1)
+    PRINT_FPHEX_LONG_DOUBLE;
 #endif
-	      exponent = LONG_DOUBLE_DENORM_BIAS + 3;
-	    }
-	}
-      else if (exponent >= IEEE854_LONG_DOUBLE_BIAS + 3)
-	{
-	  expnegative = 0;
-	  exponent -= IEEE854_LONG_DOUBLE_BIAS + 3;
-	}
-      else
-	{
-	  expnegative = 1;
-	  exponent = -(exponent - (IEEE854_LONG_DOUBLE_BIAS + 3));
-	}
-    }
 
   /* Look for trailing zeroes.  */
   if (! zero_mantissa)
diff --git a/sysdeps/generic/s_asinhl.c b/sysdeps/generic/s_asinhl.c
new file mode 100644
index 0000000000..1d5cf47a4f
--- /dev/null
+++ b/sysdeps/generic/s_asinhl.c
@@ -0,0 +1,15 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__asinhl(long double x)
+{
+  fputs ("__asinhl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+weak_alias (__asinhl, asinhl)
+stub_warning (asinhl)
+#include <stub-tag.h>
diff --git a/sysdeps/libm-ieee754/s_cacos.c b/sysdeps/generic/s_cacos.c
index 9b007598f0..9b007598f0 100644
--- a/sysdeps/libm-ieee754/s_cacos.c
+++ b/sysdeps/generic/s_cacos.c
diff --git a/sysdeps/libm-ieee754/s_cacosf.c b/sysdeps/generic/s_cacosf.c
index 6fb132dc23..6fb132dc23 100644
--- a/sysdeps/libm-ieee754/s_cacosf.c
+++ b/sysdeps/generic/s_cacosf.c
diff --git a/sysdeps/libm-ieee754/s_cacosh.c b/sysdeps/generic/s_cacosh.c
index d938c64473..d938c64473 100644
--- a/sysdeps/libm-ieee754/s_cacosh.c
+++ b/sysdeps/generic/s_cacosh.c
diff --git a/sysdeps/libm-ieee754/s_cacoshf.c b/sysdeps/generic/s_cacoshf.c
index 6aa33e5a48..6aa33e5a48 100644
--- a/sysdeps/libm-ieee754/s_cacoshf.c
+++ b/sysdeps/generic/s_cacoshf.c
diff --git a/sysdeps/libm-ieee754/s_cacoshl.c b/sysdeps/generic/s_cacoshl.c
index 1c91e93fab..1c91e93fab 100644
--- a/sysdeps/libm-ieee754/s_cacoshl.c
+++ b/sysdeps/generic/s_cacoshl.c
diff --git a/sysdeps/libm-ieee754/s_cacosl.c b/sysdeps/generic/s_cacosl.c
index 40ad812aa1..40ad812aa1 100644
--- a/sysdeps/libm-ieee754/s_cacosl.c
+++ b/sysdeps/generic/s_cacosl.c
diff --git a/sysdeps/libm-ieee754/s_casin.c b/sysdeps/generic/s_casin.c
index 516aea0464..516aea0464 100644
--- a/sysdeps/libm-ieee754/s_casin.c
+++ b/sysdeps/generic/s_casin.c
diff --git a/sysdeps/libm-ieee754/s_casinf.c b/sysdeps/generic/s_casinf.c
index aaf0d66c28..aaf0d66c28 100644
--- a/sysdeps/libm-ieee754/s_casinf.c
+++ b/sysdeps/generic/s_casinf.c
diff --git a/sysdeps/libm-ieee754/s_casinh.c b/sysdeps/generic/s_casinh.c
index da7d1ed429..da7d1ed429 100644
--- a/sysdeps/libm-ieee754/s_casinh.c
+++ b/sysdeps/generic/s_casinh.c
diff --git a/sysdeps/libm-ieee754/s_casinhf.c b/sysdeps/generic/s_casinhf.c
index e8441f4fa0..e8441f4fa0 100644
--- a/sysdeps/libm-ieee754/s_casinhf.c
+++ b/sysdeps/generic/s_casinhf.c
diff --git a/sysdeps/libm-ieee754/s_casinhl.c b/sysdeps/generic/s_casinhl.c
index 44e07f773f..44e07f773f 100644
--- a/sysdeps/libm-ieee754/s_casinhl.c
+++ b/sysdeps/generic/s_casinhl.c
diff --git a/sysdeps/libm-ieee754/s_casinl.c b/sysdeps/generic/s_casinl.c
index cc750d4a11..cc750d4a11 100644
--- a/sysdeps/libm-ieee754/s_casinl.c
+++ b/sysdeps/generic/s_casinl.c
diff --git a/sysdeps/libm-ieee754/s_catan.c b/sysdeps/generic/s_catan.c
index a3fc9ad3e8..a3fc9ad3e8 100644
--- a/sysdeps/libm-ieee754/s_catan.c
+++ b/sysdeps/generic/s_catan.c
diff --git a/sysdeps/libm-ieee754/s_catanf.c b/sysdeps/generic/s_catanf.c
index 18881cd6c9..18881cd6c9 100644
--- a/sysdeps/libm-ieee754/s_catanf.c
+++ b/sysdeps/generic/s_catanf.c
diff --git a/sysdeps/libm-ieee754/s_catanh.c b/sysdeps/generic/s_catanh.c
index 0cb852a069..0cb852a069 100644
--- a/sysdeps/libm-ieee754/s_catanh.c
+++ b/sysdeps/generic/s_catanh.c
diff --git a/sysdeps/libm-ieee754/s_catanhf.c b/sysdeps/generic/s_catanhf.c
index ac0ed17edb..ac0ed17edb 100644
--- a/sysdeps/libm-ieee754/s_catanhf.c
+++ b/sysdeps/generic/s_catanhf.c
diff --git a/sysdeps/libm-ieee754/s_catanhl.c b/sysdeps/generic/s_catanhl.c
index 22f3d4b646..22f3d4b646 100644
--- a/sysdeps/libm-ieee754/s_catanhl.c
+++ b/sysdeps/generic/s_catanhl.c
diff --git a/sysdeps/libm-ieee754/s_catanl.c b/sysdeps/generic/s_catanl.c
index b7df5c39c2..b7df5c39c2 100644
--- a/sysdeps/libm-ieee754/s_catanl.c
+++ b/sysdeps/generic/s_catanl.c
diff --git a/sysdeps/generic/s_cbrtl.c b/sysdeps/generic/s_cbrtl.c
new file mode 100644
index 0000000000..d668e377af
--- /dev/null
+++ b/sysdeps/generic/s_cbrtl.c
@@ -0,0 +1,15 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__cbrtl(long double x)
+{
+  fputs ("__cbrtl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+weak_alias (__cbrtl, cbrtl)
+stub_warning (cbrtl)
+#include <stub-tag.h>
diff --git a/sysdeps/libm-ieee754/s_ccos.c b/sysdeps/generic/s_ccos.c
index f8dfcc8af6..f8dfcc8af6 100644
--- a/sysdeps/libm-ieee754/s_ccos.c
+++ b/sysdeps/generic/s_ccos.c
diff --git a/sysdeps/libm-ieee754/s_ccosf.c b/sysdeps/generic/s_ccosf.c
index b090ae5747..b090ae5747 100644
--- a/sysdeps/libm-ieee754/s_ccosf.c
+++ b/sysdeps/generic/s_ccosf.c
diff --git a/sysdeps/libm-ieee754/s_ccosh.c b/sysdeps/generic/s_ccosh.c
index 394101f23a..394101f23a 100644
--- a/sysdeps/libm-ieee754/s_ccosh.c
+++ b/sysdeps/generic/s_ccosh.c
diff --git a/sysdeps/libm-ieee754/s_ccoshf.c b/sysdeps/generic/s_ccoshf.c
index a8043fdd39..a8043fdd39 100644
--- a/sysdeps/libm-ieee754/s_ccoshf.c
+++ b/sysdeps/generic/s_ccoshf.c
diff --git a/sysdeps/libm-ieee754/s_ccoshl.c b/sysdeps/generic/s_ccoshl.c
index 9301a9e10d..9301a9e10d 100644
--- a/sysdeps/libm-ieee754/s_ccoshl.c
+++ b/sysdeps/generic/s_ccoshl.c
diff --git a/sysdeps/libm-ieee754/s_ccosl.c b/sysdeps/generic/s_ccosl.c
index fdcc7a63dd..fdcc7a63dd 100644
--- a/sysdeps/libm-ieee754/s_ccosl.c
+++ b/sysdeps/generic/s_ccosl.c
diff --git a/sysdeps/libm-ieee754/s_cexp.c b/sysdeps/generic/s_cexp.c
index 6ba5b0a4a5..6ba5b0a4a5 100644
--- a/sysdeps/libm-ieee754/s_cexp.c
+++ b/sysdeps/generic/s_cexp.c
diff --git a/sysdeps/libm-ieee754/s_cexpf.c b/sysdeps/generic/s_cexpf.c
index 603e78d716..603e78d716 100644
--- a/sysdeps/libm-ieee754/s_cexpf.c
+++ b/sysdeps/generic/s_cexpf.c
diff --git a/sysdeps/libm-ieee754/s_cexpl.c b/sysdeps/generic/s_cexpl.c
index 67fa7a08b9..67fa7a08b9 100644
--- a/sysdeps/libm-ieee754/s_cexpl.c
+++ b/sysdeps/generic/s_cexpl.c
diff --git a/sysdeps/libm-ieee754/s_clog.c b/sysdeps/generic/s_clog.c
index c14a734759..c14a734759 100644
--- a/sysdeps/libm-ieee754/s_clog.c
+++ b/sysdeps/generic/s_clog.c
diff --git a/sysdeps/libm-ieee754/s_clog10.c b/sysdeps/generic/s_clog10.c
index 7b2e474b8f..7b2e474b8f 100644
--- a/sysdeps/libm-ieee754/s_clog10.c
+++ b/sysdeps/generic/s_clog10.c
diff --git a/sysdeps/libm-ieee754/s_clog10f.c b/sysdeps/generic/s_clog10f.c
index bc4094b8ba..bc4094b8ba 100644
--- a/sysdeps/libm-ieee754/s_clog10f.c
+++ b/sysdeps/generic/s_clog10f.c
diff --git a/sysdeps/libm-ieee754/s_clog10l.c b/sysdeps/generic/s_clog10l.c
index 186eba25cd..186eba25cd 100644
--- a/sysdeps/libm-ieee754/s_clog10l.c
+++ b/sysdeps/generic/s_clog10l.c
diff --git a/sysdeps/libm-ieee754/s_clogf.c b/sysdeps/generic/s_clogf.c
index 9c9aa83e33..9c9aa83e33 100644
--- a/sysdeps/libm-ieee754/s_clogf.c
+++ b/sysdeps/generic/s_clogf.c
diff --git a/sysdeps/libm-ieee754/s_clogl.c b/sysdeps/generic/s_clogl.c
index a297ec9628..a297ec9628 100644
--- a/sysdeps/libm-ieee754/s_clogl.c
+++ b/sysdeps/generic/s_clogl.c
diff --git a/sysdeps/libm-ieee754/s_cpow.c b/sysdeps/generic/s_cpow.c
index 074b38bd2d..074b38bd2d 100644
--- a/sysdeps/libm-ieee754/s_cpow.c
+++ b/sysdeps/generic/s_cpow.c
diff --git a/sysdeps/libm-ieee754/s_cpowf.c b/sysdeps/generic/s_cpowf.c
index fa4541ca2b..fa4541ca2b 100644
--- a/sysdeps/libm-ieee754/s_cpowf.c
+++ b/sysdeps/generic/s_cpowf.c
diff --git a/sysdeps/libm-ieee754/s_cpowl.c b/sysdeps/generic/s_cpowl.c
index 69097d5dcc..69097d5dcc 100644
--- a/sysdeps/libm-ieee754/s_cpowl.c
+++ b/sysdeps/generic/s_cpowl.c
diff --git a/sysdeps/libm-ieee754/s_cproj.c b/sysdeps/generic/s_cproj.c
index fb50bb5a88..fb50bb5a88 100644
--- a/sysdeps/libm-ieee754/s_cproj.c
+++ b/sysdeps/generic/s_cproj.c
diff --git a/sysdeps/libm-ieee754/s_cprojf.c b/sysdeps/generic/s_cprojf.c
index b90590835c..b90590835c 100644
--- a/sysdeps/libm-ieee754/s_cprojf.c
+++ b/sysdeps/generic/s_cprojf.c
diff --git a/sysdeps/libm-ieee754/s_cprojl.c b/sysdeps/generic/s_cprojl.c
index 13da4b417d..13da4b417d 100644
--- a/sysdeps/libm-ieee754/s_cprojl.c
+++ b/sysdeps/generic/s_cprojl.c
diff --git a/sysdeps/libm-ieee754/s_csin.c b/sysdeps/generic/s_csin.c
index 6627387d42..6627387d42 100644
--- a/sysdeps/libm-ieee754/s_csin.c
+++ b/sysdeps/generic/s_csin.c
diff --git a/sysdeps/libm-ieee754/s_csinf.c b/sysdeps/generic/s_csinf.c
index 31d2f1fd54..31d2f1fd54 100644
--- a/sysdeps/libm-ieee754/s_csinf.c
+++ b/sysdeps/generic/s_csinf.c
diff --git a/sysdeps/libm-ieee754/s_csinh.c b/sysdeps/generic/s_csinh.c
index 29a271fec6..29a271fec6 100644
--- a/sysdeps/libm-ieee754/s_csinh.c
+++ b/sysdeps/generic/s_csinh.c
diff --git a/sysdeps/libm-ieee754/s_csinhf.c b/sysdeps/generic/s_csinhf.c
index 9c479bba95..9c479bba95 100644
--- a/sysdeps/libm-ieee754/s_csinhf.c
+++ b/sysdeps/generic/s_csinhf.c
diff --git a/sysdeps/libm-ieee754/s_csinhl.c b/sysdeps/generic/s_csinhl.c
index 471cc7e81e..471cc7e81e 100644
--- a/sysdeps/libm-ieee754/s_csinhl.c
+++ b/sysdeps/generic/s_csinhl.c
diff --git a/sysdeps/libm-ieee754/s_csinl.c b/sysdeps/generic/s_csinl.c
index bae8648c32..bae8648c32 100644
--- a/sysdeps/libm-ieee754/s_csinl.c
+++ b/sysdeps/generic/s_csinl.c
diff --git a/sysdeps/libm-ieee754/s_csqrt.c b/sysdeps/generic/s_csqrt.c
index a4dedf8806..a4dedf8806 100644
--- a/sysdeps/libm-ieee754/s_csqrt.c
+++ b/sysdeps/generic/s_csqrt.c
diff --git a/sysdeps/libm-ieee754/s_csqrtf.c b/sysdeps/generic/s_csqrtf.c
index 3bc979f6e2..3bc979f6e2 100644
--- a/sysdeps/libm-ieee754/s_csqrtf.c
+++ b/sysdeps/generic/s_csqrtf.c
diff --git a/sysdeps/libm-ieee754/s_csqrtl.c b/sysdeps/generic/s_csqrtl.c
index b806bc6785..b806bc6785 100644
--- a/sysdeps/libm-ieee754/s_csqrtl.c
+++ b/sysdeps/generic/s_csqrtl.c
diff --git a/sysdeps/libm-ieee754/s_ctan.c b/sysdeps/generic/s_ctan.c
index f1ce9688bb..f1ce9688bb 100644
--- a/sysdeps/libm-ieee754/s_ctan.c
+++ b/sysdeps/generic/s_ctan.c
diff --git a/sysdeps/libm-ieee754/s_ctanf.c b/sysdeps/generic/s_ctanf.c
index 750d3511b9..750d3511b9 100644
--- a/sysdeps/libm-ieee754/s_ctanf.c
+++ b/sysdeps/generic/s_ctanf.c
diff --git a/sysdeps/libm-ieee754/s_ctanh.c b/sysdeps/generic/s_ctanh.c
index d8825f35f9..d8825f35f9 100644
--- a/sysdeps/libm-ieee754/s_ctanh.c
+++ b/sysdeps/generic/s_ctanh.c
diff --git a/sysdeps/libm-ieee754/s_ctanhf.c b/sysdeps/generic/s_ctanhf.c
index fd66648d79..fd66648d79 100644
--- a/sysdeps/libm-ieee754/s_ctanhf.c
+++ b/sysdeps/generic/s_ctanhf.c
diff --git a/sysdeps/libm-ieee754/s_ctanhl.c b/sysdeps/generic/s_ctanhl.c
index 5ec06a6fa4..5ec06a6fa4 100644
--- a/sysdeps/libm-ieee754/s_ctanhl.c
+++ b/sysdeps/generic/s_ctanhl.c
diff --git a/sysdeps/libm-ieee754/s_ctanl.c b/sysdeps/generic/s_ctanl.c
index 31ab3b48a6..31ab3b48a6 100644
--- a/sysdeps/libm-ieee754/s_ctanl.c
+++ b/sysdeps/generic/s_ctanl.c
diff --git a/sysdeps/libm-ieee754/s_fdim.c b/sysdeps/generic/s_fdim.c
index b45c413cb8..b45c413cb8 100644
--- a/sysdeps/libm-ieee754/s_fdim.c
+++ b/sysdeps/generic/s_fdim.c
diff --git a/sysdeps/libm-ieee754/s_fdimf.c b/sysdeps/generic/s_fdimf.c
index a8d8192c0f..a8d8192c0f 100644
--- a/sysdeps/libm-ieee754/s_fdimf.c
+++ b/sysdeps/generic/s_fdimf.c
diff --git a/sysdeps/libm-ieee754/s_fdiml.c b/sysdeps/generic/s_fdiml.c
index c97a668f10..c97a668f10 100644
--- a/sysdeps/libm-ieee754/s_fdiml.c
+++ b/sysdeps/generic/s_fdiml.c
diff --git a/sysdeps/libm-ieee754/s_fma.c b/sysdeps/generic/s_fma.c
index 53974dc40c..53974dc40c 100644
--- a/sysdeps/libm-ieee754/s_fma.c
+++ b/sysdeps/generic/s_fma.c
diff --git a/sysdeps/libm-ieee754/s_fmaf.c b/sysdeps/generic/s_fmaf.c
index 44e5e15def..44e5e15def 100644
--- a/sysdeps/libm-ieee754/s_fmaf.c
+++ b/sysdeps/generic/s_fmaf.c
diff --git a/sysdeps/libm-ieee754/s_fmal.c b/sysdeps/generic/s_fmal.c
index f73751f4db..f73751f4db 100644
--- a/sysdeps/libm-ieee754/s_fmal.c
+++ b/sysdeps/generic/s_fmal.c
diff --git a/sysdeps/libm-ieee754/s_fmax.c b/sysdeps/generic/s_fmax.c
index bc6af7286c..bc6af7286c 100644
--- a/sysdeps/libm-ieee754/s_fmax.c
+++ b/sysdeps/generic/s_fmax.c
diff --git a/sysdeps/libm-ieee754/s_fmaxf.c b/sysdeps/generic/s_fmaxf.c
index e56193fe7b..e56193fe7b 100644
--- a/sysdeps/libm-ieee754/s_fmaxf.c
+++ b/sysdeps/generic/s_fmaxf.c
diff --git a/sysdeps/libm-ieee754/s_fmaxl.c b/sysdeps/generic/s_fmaxl.c
index 6e1c7152ed..6e1c7152ed 100644
--- a/sysdeps/libm-ieee754/s_fmaxl.c
+++ b/sysdeps/generic/s_fmaxl.c
diff --git a/sysdeps/libm-ieee754/s_fmin.c b/sysdeps/generic/s_fmin.c
index b79e6eca5a..b79e6eca5a 100644
--- a/sysdeps/libm-ieee754/s_fmin.c
+++ b/sysdeps/generic/s_fmin.c
diff --git a/sysdeps/libm-ieee754/s_fminf.c b/sysdeps/generic/s_fminf.c
index 72c656e1ac..72c656e1ac 100644
--- a/sysdeps/libm-ieee754/s_fminf.c
+++ b/sysdeps/generic/s_fminf.c
diff --git a/sysdeps/libm-ieee754/s_fminl.c b/sysdeps/generic/s_fminl.c
index 0f06194b77..0f06194b77 100644
--- a/sysdeps/libm-ieee754/s_fminl.c
+++ b/sysdeps/generic/s_fminl.c
diff --git a/sysdeps/libm-ieee754/s_ldexp.c b/sysdeps/generic/s_ldexp.c
index 12c336fad4..12c336fad4 100644
--- a/sysdeps/libm-ieee754/s_ldexp.c
+++ b/sysdeps/generic/s_ldexp.c
diff --git a/sysdeps/libm-ieee754/s_ldexpf.c b/sysdeps/generic/s_ldexpf.c
index 1ecbe8346b..1ecbe8346b 100644
--- a/sysdeps/libm-ieee754/s_ldexpf.c
+++ b/sysdeps/generic/s_ldexpf.c
diff --git a/sysdeps/libm-ieee754/s_ldexpl.c b/sysdeps/generic/s_ldexpl.c
index 123a6b3b58..123a6b3b58 100644
--- a/sysdeps/libm-ieee754/s_ldexpl.c
+++ b/sysdeps/generic/s_ldexpl.c
diff --git a/sysdeps/libm-ieee754/s_nan.c b/sysdeps/generic/s_nan.c
index ff3b26855f..ff3b26855f 100644
--- a/sysdeps/libm-ieee754/s_nan.c
+++ b/sysdeps/generic/s_nan.c
diff --git a/sysdeps/libm-ieee754/s_nanf.c b/sysdeps/generic/s_nanf.c
index b59040ac82..b59040ac82 100644
--- a/sysdeps/libm-ieee754/s_nanf.c
+++ b/sysdeps/generic/s_nanf.c
diff --git a/sysdeps/libm-ieee754/s_nanl.c b/sysdeps/generic/s_nanl.c
index bd42689b78..bd42689b78 100644
--- a/sysdeps/libm-ieee754/s_nanl.c
+++ b/sysdeps/generic/s_nanl.c
diff --git a/sysdeps/libm-ieee754/s_nextafter.c b/sysdeps/generic/s_nextafter.c
index b98a161cf2..8b81e563d9 100644
--- a/sysdeps/libm-ieee754/s_nextafter.c
+++ b/sysdeps/generic/s_nextafter.c
@@ -81,4 +81,6 @@ weak_alias (__nextafter, nextafter)
 #ifdef NO_LONG_DOUBLE
 strong_alias (__nextafter, __nextafterl)
 weak_alias (__nextafter, nextafterl)
+strong_alias (__nextafter, __nexttoward)
+weak_alias (__nextafter, nexttoward)
 #endif
diff --git a/sysdeps/generic/s_nexttowardf.c b/sysdeps/generic/s_nexttowardf.c
new file mode 100644
index 0000000000..f4cf18d06e
--- /dev/null
+++ b/sysdeps/generic/s_nexttowardf.c
@@ -0,0 +1,79 @@
+/* Single precision version of nexttoward.c.
+   Conversion to IEEE single float by Jakub Jelinek, jj@ultra.linux.cz. */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* IEEE functions
+ *	nexttowardf(x,y)
+ *	return the next machine floating-point number of x in the
+ *	direction toward y.
+ * This is for machines which use the same binary type for double and
+ * long double.
+ *   Special cases:
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	float __nexttowardf(float x, long double y)
+#else
+	float __nexttowardf(x,y)
+	float x;
+	long double y;
+#endif
+{
+	int32_t hx,hy,ix,iy;
+	u_int32_t ly;
+
+	GET_FLOAT_WORD(hx,x);
+	EXTRACT_WORDS(hy,ly,y);
+	ix = hx&0x7fffffff;		/* |x| */
+	iy = hy&0x7fffffff;		/* |y| */
+
+	if(((ix>=0x7f800000) ||				    /* x is nan */
+	   ((iy>=0x7ff00000)&&((iy-0x7ff00000)|ly)!=0))     /* y is nan */
+	   return x+y;
+	if((long double) x==y) return y;	/* x=y, return y */
+	if(ix==0) {				/* x == 0 */
+	    float x2;
+	    SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/
+	    x2 = x*x;
+	    if(x2==x) return x2; else return x; /* raise underflow flag */
+	}
+	if(hx>=0) {				/* x > 0 */
+	    if(hy<0||(ix>>23)>(iy>>20)-0x380
+	       || ((ix>>23)==(iy>>20)-0x380
+		   && (ix&0x7fffff)>((hy<<3)|(ly>>29))&0x7fffff))	/* x > y, x -= ulp */
+		hx -= 1;
+	    else				/* x < y, x += ulp */
+		hx += 1;
+	} else {				/* x < 0 */
+	    if(hy>=0||(ix>>23)>(iy>>20)-0x380
+	       || ((ix>>23)==(iy>>20)-0x380
+		   && (ix&0x7fffff)>((hy<<3)|(ly>>29))&0x7fffff))	/* x < y, x -= ulp */
+		hx -= 1;
+	    else				/* x > y, x += ulp */
+		hx += 1;
+	}
+	hy = hx&0x7f800000;
+	if(hy>=0x7f800000) return x+x;	/* overflow  */
+	if(hy<0x00800000) {		/* underflow */
+	    float x2 = x*x;
+	    if(x2!=x) {		/* raise underflow flag */
+		SET_FLOAT_WORD(x2,hx);
+		return x2;
+	    }
+	}
+	SET_FLOAT_WORD(x,hx);
+	return x;
+}
+weak_alias (__nexttowardf, nexttowardf)
diff --git a/sysdeps/libm-ieee754/s_nexttowardl.c b/sysdeps/generic/s_nexttowardl.c
index 73c3610fc1..73c3610fc1 100644
--- a/sysdeps/libm-ieee754/s_nexttowardl.c
+++ b/sysdeps/generic/s_nexttowardl.c
diff --git a/sysdeps/libm-ieee754/s_significand.c b/sysdeps/generic/s_significand.c
index 4ab078c473..4ab078c473 100644
--- a/sysdeps/libm-ieee754/s_significand.c
+++ b/sysdeps/generic/s_significand.c
diff --git a/sysdeps/libm-ieee754/s_significandf.c b/sysdeps/generic/s_significandf.c
index 2893a4e1b7..2893a4e1b7 100644
--- a/sysdeps/libm-ieee754/s_significandf.c
+++ b/sysdeps/generic/s_significandf.c
diff --git a/sysdeps/libm-ieee754/s_significandl.c b/sysdeps/generic/s_significandl.c
index 6339274b5a..d84e806fdc 100644
--- a/sysdeps/libm-ieee754/s_significandl.c
+++ b/sysdeps/generic/s_significandl.c
@@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: $";
 
 /*
  * significandl(x) computes just
- * 	scalbl(x, (double) -ilogbl(x)),
+ * 	scalbl(x, (long double) -ilogbl(x)),
  * for exercising the fraction-part(F) IEEE 754-1985 test vector.
  */
 
@@ -34,6 +34,6 @@ static char rcsid[] = "$NetBSD: $";
 	long double x;
 #endif
 {
-	return __ieee754_scalbl(x,(double) -ilogbl(x));
+	return __ieee754_scalbl(x,(long double) -ilogbl(x));
 }
 weak_alias (__significandl, significandl)
diff --git a/sysdeps/generic/s_tanhl.c b/sysdeps/generic/s_tanhl.c
new file mode 100644
index 0000000000..bc9a2d7f48
--- /dev/null
+++ b/sysdeps/generic/s_tanhl.c
@@ -0,0 +1,15 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__tanhl(long double x)
+{
+  fputs ("__tanhl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+weak_alias (__tanhl, tanhl)
+stub_warning (tanhl)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/strtold.c b/sysdeps/generic/strtold.c
index f1bb2f1c0d..86b2f7f2f4 100644
--- a/sysdeps/generic/strtold.c
+++ b/sysdeps/generic/strtold.c
@@ -1,31 +1,23 @@
-#include <math.h>
+/* Copyright (C) 1999 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 Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-#ifndef __NO_LONG_DOUBLE_MATH
-/* The actual implementation for all floating point sizes is in strtod.c.
-   These macros tell it to produce the `long double' version, `strtold'.  */
+   The GNU C Library is distributed in the hope that 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.
 
-# define FLOAT		long double
-# define FLT		LDBL
-# ifdef USE_IN_EXTENDED_LOCALE_MODEL
-#  define STRTOF	__strtold_l
-# else
-#  define STRTOF	strtold
-# endif
-# define MPN2FLOAT	__mpn_construct_long_double
-# define FLOAT_HUGE_VAL	HUGE_VALL
-# define SET_MANTISSA(flt, mant) \
-  do { union ieee854_long_double u;					      \
-       u.d = (flt);							      \
-       if ((mant & 0x7fffffffffffffffULL) == 0)				      \
-	 mant = 0x4000000000000000ULL;					      \
-       u.ieee.mantissa0 = (((mant) >> 32) & 0x7fffffff) | 0x80000000;	      \
-       u.ieee.mantissa1 = (mant) & 0xffffffff;				      \
-       (flt) = u.d;							      \
-  } while (0)
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+#include <stdlib.h>
 
-# include "strtod.c"
-#else
-# include <stdlib.h>
 /* There is no `long double' type, use the `double' implementations.  */
 long double
 __strtold_internal (const char *nptr, char **endptr, int group)
diff --git a/sysdeps/generic/w_expl.c b/sysdeps/generic/w_expl.c
new file mode 100644
index 0000000000..70096a820c
--- /dev/null
+++ b/sysdeps/generic/w_expl.c
@@ -0,0 +1,13 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__expl(long double x)
+{
+  fputs ("__expl not implemented\n", stderr);
+  __set_errno (ENOSYS);
+  return 0.0;
+}
+
+weak_alias (__expl, expl)
diff --git a/sysdeps/i386/Implies b/sysdeps/i386/Implies
index d6acf04a82..ac22f59f78 100644
--- a/sysdeps/i386/Implies
+++ b/sysdeps/i386/Implies
@@ -1,2 +1,4 @@
 wordsize-32
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
+ieee754/ldbl-96
diff --git a/sysdeps/i386/fpu/Implies b/sysdeps/i386/fpu/Implies
deleted file mode 100644
index de9b0b27aa..0000000000
--- a/sysdeps/i386/fpu/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# For x86 machines with FPU, use the i387 port of libm by JT Conklin.
-libm-i387
diff --git a/sysdeps/libm-i387/e_acos.S b/sysdeps/i386/fpu/e_acos.S
index b9d07b1091..b9d07b1091 100644
--- a/sysdeps/libm-i387/e_acos.S
+++ b/sysdeps/i386/fpu/e_acos.S
diff --git a/sysdeps/libm-i387/e_acosf.S b/sysdeps/i386/fpu/e_acosf.S
index 50b13fd1bd..50b13fd1bd 100644
--- a/sysdeps/libm-i387/e_acosf.S
+++ b/sysdeps/i386/fpu/e_acosf.S
diff --git a/sysdeps/libm-i387/e_acosh.S b/sysdeps/i386/fpu/e_acosh.S
index a3397b365c..a3397b365c 100644
--- a/sysdeps/libm-i387/e_acosh.S
+++ b/sysdeps/i386/fpu/e_acosh.S
diff --git a/sysdeps/libm-i387/e_acoshf.S b/sysdeps/i386/fpu/e_acoshf.S
index 8aa78957e2..8aa78957e2 100644
--- a/sysdeps/libm-i387/e_acoshf.S
+++ b/sysdeps/i386/fpu/e_acoshf.S
diff --git a/sysdeps/libm-i387/e_acoshl.S b/sysdeps/i386/fpu/e_acoshl.S
index 0c81daaebe..0c81daaebe 100644
--- a/sysdeps/libm-i387/e_acoshl.S
+++ b/sysdeps/i386/fpu/e_acoshl.S
diff --git a/sysdeps/libm-i387/e_acosl.S b/sysdeps/i386/fpu/e_acosl.S
index d69f056556..d69f056556 100644
--- a/sysdeps/libm-i387/e_acosl.S
+++ b/sysdeps/i386/fpu/e_acosl.S
diff --git a/sysdeps/libm-i387/e_asin.S b/sysdeps/i386/fpu/e_asin.S
index 945e308245..945e308245 100644
--- a/sysdeps/libm-i387/e_asin.S
+++ b/sysdeps/i386/fpu/e_asin.S
diff --git a/sysdeps/libm-i387/e_asinf.S b/sysdeps/i386/fpu/e_asinf.S
index d450e9a740..d450e9a740 100644
--- a/sysdeps/libm-i387/e_asinf.S
+++ b/sysdeps/i386/fpu/e_asinf.S
diff --git a/sysdeps/libm-i387/e_asinl.S b/sysdeps/i386/fpu/e_asinl.S
index 3919fbcf58..3919fbcf58 100644
--- a/sysdeps/libm-i387/e_asinl.S
+++ b/sysdeps/i386/fpu/e_asinl.S
diff --git a/sysdeps/libm-i387/e_atan2.S b/sysdeps/i386/fpu/e_atan2.S
index 8df04e485e..8df04e485e 100644
--- a/sysdeps/libm-i387/e_atan2.S
+++ b/sysdeps/i386/fpu/e_atan2.S
diff --git a/sysdeps/libm-i387/e_atan2f.S b/sysdeps/i386/fpu/e_atan2f.S
index fc6621f183..fc6621f183 100644
--- a/sysdeps/libm-i387/e_atan2f.S
+++ b/sysdeps/i386/fpu/e_atan2f.S
diff --git a/sysdeps/libm-i387/e_atan2l.S b/sysdeps/i386/fpu/e_atan2l.S
index f58eaa94a9..f58eaa94a9 100644
--- a/sysdeps/libm-i387/e_atan2l.S
+++ b/sysdeps/i386/fpu/e_atan2l.S
diff --git a/sysdeps/libm-i387/e_atanh.S b/sysdeps/i386/fpu/e_atanh.S
index 231e96f57f..231e96f57f 100644
--- a/sysdeps/libm-i387/e_atanh.S
+++ b/sysdeps/i386/fpu/e_atanh.S
diff --git a/sysdeps/libm-i387/e_atanhf.S b/sysdeps/i386/fpu/e_atanhf.S
index 687d4c97fb..687d4c97fb 100644
--- a/sysdeps/libm-i387/e_atanhf.S
+++ b/sysdeps/i386/fpu/e_atanhf.S
diff --git a/sysdeps/libm-i387/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index 8a2bd11ce4..8a2bd11ce4 100644
--- a/sysdeps/libm-i387/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
diff --git a/sysdeps/libm-i387/e_exp.S b/sysdeps/i386/fpu/e_exp.S
index 4a75fa1d1c..4a75fa1d1c 100644
--- a/sysdeps/libm-i387/e_exp.S
+++ b/sysdeps/i386/fpu/e_exp.S
diff --git a/sysdeps/libm-i387/e_exp10.S b/sysdeps/i386/fpu/e_exp10.S
index 6bfcdbb723..6bfcdbb723 100644
--- a/sysdeps/libm-i387/e_exp10.S
+++ b/sysdeps/i386/fpu/e_exp10.S
diff --git a/sysdeps/libm-i387/e_exp10f.S b/sysdeps/i386/fpu/e_exp10f.S
index 4791b99afa..4791b99afa 100644
--- a/sysdeps/libm-i387/e_exp10f.S
+++ b/sysdeps/i386/fpu/e_exp10f.S
diff --git a/sysdeps/libm-i387/e_exp10l.S b/sysdeps/i386/fpu/e_exp10l.S
index 71f0da792d..71f0da792d 100644
--- a/sysdeps/libm-i387/e_exp10l.S
+++ b/sysdeps/i386/fpu/e_exp10l.S
diff --git a/sysdeps/libm-i387/e_expf.S b/sysdeps/i386/fpu/e_expf.S
index 5fd49b89fd..5fd49b89fd 100644
--- a/sysdeps/libm-i387/e_expf.S
+++ b/sysdeps/i386/fpu/e_expf.S
diff --git a/sysdeps/libm-i387/e_expl.S b/sysdeps/i386/fpu/e_expl.S
index 2bcdf58c58..2bcdf58c58 100644
--- a/sysdeps/libm-i387/e_expl.S
+++ b/sysdeps/i386/fpu/e_expl.S
diff --git a/sysdeps/libm-i387/e_fmod.S b/sysdeps/i386/fpu/e_fmod.S
index 4cf6e92054..4cf6e92054 100644
--- a/sysdeps/libm-i387/e_fmod.S
+++ b/sysdeps/i386/fpu/e_fmod.S
diff --git a/sysdeps/libm-i387/e_fmodf.S b/sysdeps/i386/fpu/e_fmodf.S
index bbce40976d..bbce40976d 100644
--- a/sysdeps/libm-i387/e_fmodf.S
+++ b/sysdeps/i386/fpu/e_fmodf.S
diff --git a/sysdeps/libm-i387/e_fmodl.S b/sysdeps/i386/fpu/e_fmodl.S
index 7ae63a40ab..7ae63a40ab 100644
--- a/sysdeps/libm-i387/e_fmodl.S
+++ b/sysdeps/i386/fpu/e_fmodl.S
diff --git a/sysdeps/libm-i387/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S
index 07a32878a0..07a32878a0 100644
--- a/sysdeps/libm-i387/e_hypot.S
+++ b/sysdeps/i386/fpu/e_hypot.S
diff --git a/sysdeps/libm-i387/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S
index bf5416b664..bf5416b664 100644
--- a/sysdeps/libm-i387/e_hypotf.S
+++ b/sysdeps/i386/fpu/e_hypotf.S
diff --git a/sysdeps/libm-i387/e_log.S b/sysdeps/i386/fpu/e_log.S
index c7cacdfb0a..c7cacdfb0a 100644
--- a/sysdeps/libm-i387/e_log.S
+++ b/sysdeps/i386/fpu/e_log.S
diff --git a/sysdeps/libm-i387/e_log10.S b/sysdeps/i386/fpu/e_log10.S
index 2c8488c3a9..2c8488c3a9 100644
--- a/sysdeps/libm-i387/e_log10.S
+++ b/sysdeps/i386/fpu/e_log10.S
diff --git a/sysdeps/libm-i387/e_log10f.S b/sysdeps/i386/fpu/e_log10f.S
index 2c07161085..2c07161085 100644
--- a/sysdeps/libm-i387/e_log10f.S
+++ b/sysdeps/i386/fpu/e_log10f.S
diff --git a/sysdeps/libm-i387/e_log10l.S b/sysdeps/i386/fpu/e_log10l.S
index 6fe7c5a6f7..6fe7c5a6f7 100644
--- a/sysdeps/libm-i387/e_log10l.S
+++ b/sysdeps/i386/fpu/e_log10l.S
diff --git a/sysdeps/libm-i387/e_logf.S b/sysdeps/i386/fpu/e_logf.S
index bdba1d3225..bdba1d3225 100644
--- a/sysdeps/libm-i387/e_logf.S
+++ b/sysdeps/i386/fpu/e_logf.S
diff --git a/sysdeps/libm-i387/e_logl.S b/sysdeps/i386/fpu/e_logl.S
index bda3ea508e..bda3ea508e 100644
--- a/sysdeps/libm-i387/e_logl.S
+++ b/sysdeps/i386/fpu/e_logl.S
diff --git a/sysdeps/libm-i387/e_pow.S b/sysdeps/i386/fpu/e_pow.S
index 75ad211872..75ad211872 100644
--- a/sysdeps/libm-i387/e_pow.S
+++ b/sysdeps/i386/fpu/e_pow.S
diff --git a/sysdeps/libm-i387/e_powf.S b/sysdeps/i386/fpu/e_powf.S
index d7342bf56f..d7342bf56f 100644
--- a/sysdeps/libm-i387/e_powf.S
+++ b/sysdeps/i386/fpu/e_powf.S
diff --git a/sysdeps/libm-i387/e_powl.S b/sysdeps/i386/fpu/e_powl.S
index 2e09dcc820..2e09dcc820 100644
--- a/sysdeps/libm-i387/e_powl.S
+++ b/sysdeps/i386/fpu/e_powl.S
diff --git a/sysdeps/libm-i387/e_rem_pio2.c b/sysdeps/i386/fpu/e_rem_pio2.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/e_rem_pio2.c
+++ b/sysdeps/i386/fpu/e_rem_pio2.c
diff --git a/sysdeps/libm-i387/e_rem_pio2f.c b/sysdeps/i386/fpu/e_rem_pio2f.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/e_rem_pio2f.c
+++ b/sysdeps/i386/fpu/e_rem_pio2f.c
diff --git a/sysdeps/libm-i387/e_rem_pio2l.c b/sysdeps/i386/fpu/e_rem_pio2l.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/e_rem_pio2l.c
+++ b/sysdeps/i386/fpu/e_rem_pio2l.c
diff --git a/sysdeps/libm-i387/e_remainder.S b/sysdeps/i386/fpu/e_remainder.S
index 2f43cb894c..2f43cb894c 100644
--- a/sysdeps/libm-i387/e_remainder.S
+++ b/sysdeps/i386/fpu/e_remainder.S
diff --git a/sysdeps/libm-i387/e_remainderf.S b/sysdeps/i386/fpu/e_remainderf.S
index 79f821993b..79f821993b 100644
--- a/sysdeps/libm-i387/e_remainderf.S
+++ b/sysdeps/i386/fpu/e_remainderf.S
diff --git a/sysdeps/libm-i387/e_remainderl.S b/sysdeps/i386/fpu/e_remainderl.S
index 5f50b626a2..5f50b626a2 100644
--- a/sysdeps/libm-i387/e_remainderl.S
+++ b/sysdeps/i386/fpu/e_remainderl.S
diff --git a/sysdeps/libm-i387/e_scalb.S b/sysdeps/i386/fpu/e_scalb.S
index 7ff5541e2f..7ff5541e2f 100644
--- a/sysdeps/libm-i387/e_scalb.S
+++ b/sysdeps/i386/fpu/e_scalb.S
diff --git a/sysdeps/libm-i387/e_scalbf.S b/sysdeps/i386/fpu/e_scalbf.S
index 4222eecc97..4222eecc97 100644
--- a/sysdeps/libm-i387/e_scalbf.S
+++ b/sysdeps/i386/fpu/e_scalbf.S
diff --git a/sysdeps/libm-i387/e_scalbl.S b/sysdeps/i386/fpu/e_scalbl.S
index 56cc833a56..56cc833a56 100644
--- a/sysdeps/libm-i387/e_scalbl.S
+++ b/sysdeps/i386/fpu/e_scalbl.S
diff --git a/sysdeps/libm-i387/e_sqrt.S b/sysdeps/i386/fpu/e_sqrt.S
index 6f253d51aa..6f253d51aa 100644
--- a/sysdeps/libm-i387/e_sqrt.S
+++ b/sysdeps/i386/fpu/e_sqrt.S
diff --git a/sysdeps/libm-i387/e_sqrtf.S b/sysdeps/i386/fpu/e_sqrtf.S
index 5ce1ad0544..5ce1ad0544 100644
--- a/sysdeps/libm-i387/e_sqrtf.S
+++ b/sysdeps/i386/fpu/e_sqrtf.S
diff --git a/sysdeps/libm-i387/e_sqrtl.S b/sysdeps/i386/fpu/e_sqrtl.S
index d47aae5cb5..d47aae5cb5 100644
--- a/sysdeps/libm-i387/e_sqrtl.S
+++ b/sysdeps/i386/fpu/e_sqrtl.S
diff --git a/sysdeps/libm-i387/k_rem_pio2.c b/sysdeps/i386/fpu/k_rem_pio2.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/k_rem_pio2.c
+++ b/sysdeps/i386/fpu/k_rem_pio2.c
diff --git a/sysdeps/libm-i387/k_rem_pio2f.c b/sysdeps/i386/fpu/k_rem_pio2f.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/k_rem_pio2f.c
+++ b/sysdeps/i386/fpu/k_rem_pio2f.c
diff --git a/sysdeps/libm-i387/k_rem_pio2l.c b/sysdeps/i386/fpu/k_rem_pio2l.c
index 1347b0468c..1347b0468c 100644
--- a/sysdeps/libm-i387/k_rem_pio2l.c
+++ b/sysdeps/i386/fpu/k_rem_pio2l.c
diff --git a/sysdeps/libm-i387/s_asinh.S b/sysdeps/i386/fpu/s_asinh.S
index a4c52cb67c..a4c52cb67c 100644
--- a/sysdeps/libm-i387/s_asinh.S
+++ b/sysdeps/i386/fpu/s_asinh.S
diff --git a/sysdeps/libm-i387/s_asinhf.S b/sysdeps/i386/fpu/s_asinhf.S
index a6925c7b4c..a6925c7b4c 100644
--- a/sysdeps/libm-i387/s_asinhf.S
+++ b/sysdeps/i386/fpu/s_asinhf.S
diff --git a/sysdeps/libm-i387/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index 62e29bc58e..62e29bc58e 100644
--- a/sysdeps/libm-i387/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
diff --git a/sysdeps/libm-i387/s_atan.S b/sysdeps/i386/fpu/s_atan.S
index 7502f6d828..7502f6d828 100644
--- a/sysdeps/libm-i387/s_atan.S
+++ b/sysdeps/i386/fpu/s_atan.S
diff --git a/sysdeps/libm-i387/s_atanf.S b/sysdeps/i386/fpu/s_atanf.S
index 70232c8240..70232c8240 100644
--- a/sysdeps/libm-i387/s_atanf.S
+++ b/sysdeps/i386/fpu/s_atanf.S
diff --git a/sysdeps/libm-i387/s_atanl.S b/sysdeps/i386/fpu/s_atanl.S
index 8b07272764..8b07272764 100644
--- a/sysdeps/libm-i387/s_atanl.S
+++ b/sysdeps/i386/fpu/s_atanl.S
diff --git a/sysdeps/libm-i387/s_cbrt.S b/sysdeps/i386/fpu/s_cbrt.S
index 3f6a0174f2..3f6a0174f2 100644
--- a/sysdeps/libm-i387/s_cbrt.S
+++ b/sysdeps/i386/fpu/s_cbrt.S
diff --git a/sysdeps/libm-i387/s_cbrtf.S b/sysdeps/i386/fpu/s_cbrtf.S
index a14e04ed2f..a14e04ed2f 100644
--- a/sysdeps/libm-i387/s_cbrtf.S
+++ b/sysdeps/i386/fpu/s_cbrtf.S
diff --git a/sysdeps/libm-i387/s_cbrtl.S b/sysdeps/i386/fpu/s_cbrtl.S
index 6a3b9a8dc5..6a3b9a8dc5 100644
--- a/sysdeps/libm-i387/s_cbrtl.S
+++ b/sysdeps/i386/fpu/s_cbrtl.S
diff --git a/sysdeps/libm-i387/s_ceil.S b/sysdeps/i386/fpu/s_ceil.S
index b0159128aa..b0159128aa 100644
--- a/sysdeps/libm-i387/s_ceil.S
+++ b/sysdeps/i386/fpu/s_ceil.S
diff --git a/sysdeps/libm-i387/s_ceilf.S b/sysdeps/i386/fpu/s_ceilf.S
index 352d40d7ce..352d40d7ce 100644
--- a/sysdeps/libm-i387/s_ceilf.S
+++ b/sysdeps/i386/fpu/s_ceilf.S
diff --git a/sysdeps/libm-i387/s_ceill.S b/sysdeps/i386/fpu/s_ceill.S
index 0128966ebe..0128966ebe 100644
--- a/sysdeps/libm-i387/s_ceill.S
+++ b/sysdeps/i386/fpu/s_ceill.S
diff --git a/sysdeps/libm-i387/s_cexp.S b/sysdeps/i386/fpu/s_cexp.S
index 61158d9540..61158d9540 100644
--- a/sysdeps/libm-i387/s_cexp.S
+++ b/sysdeps/i386/fpu/s_cexp.S
diff --git a/sysdeps/libm-i387/s_cexpf.S b/sysdeps/i386/fpu/s_cexpf.S
index d6dcebcb23..d6dcebcb23 100644
--- a/sysdeps/libm-i387/s_cexpf.S
+++ b/sysdeps/i386/fpu/s_cexpf.S
diff --git a/sysdeps/libm-i387/s_cexpl.S b/sysdeps/i386/fpu/s_cexpl.S
index 203a7ee779..203a7ee779 100644
--- a/sysdeps/libm-i387/s_cexpl.S
+++ b/sysdeps/i386/fpu/s_cexpl.S
diff --git a/sysdeps/libm-i387/s_copysign.S b/sysdeps/i386/fpu/s_copysign.S
index 2520a94427..2520a94427 100644
--- a/sysdeps/libm-i387/s_copysign.S
+++ b/sysdeps/i386/fpu/s_copysign.S
diff --git a/sysdeps/libm-i387/s_copysignf.S b/sysdeps/i386/fpu/s_copysignf.S
index 57b1a6f119..57b1a6f119 100644
--- a/sysdeps/libm-i387/s_copysignf.S
+++ b/sysdeps/i386/fpu/s_copysignf.S
diff --git a/sysdeps/libm-i387/s_copysignl.S b/sysdeps/i386/fpu/s_copysignl.S
index 2163e7b014..2163e7b014 100644
--- a/sysdeps/libm-i387/s_copysignl.S
+++ b/sysdeps/i386/fpu/s_copysignl.S
diff --git a/sysdeps/libm-i387/s_cos.S b/sysdeps/i386/fpu/s_cos.S
index ac8b1459d9..ac8b1459d9 100644
--- a/sysdeps/libm-i387/s_cos.S
+++ b/sysdeps/i386/fpu/s_cos.S
diff --git a/sysdeps/libm-i387/s_cosf.S b/sysdeps/i386/fpu/s_cosf.S
index d8e8090639..d8e8090639 100644
--- a/sysdeps/libm-i387/s_cosf.S
+++ b/sysdeps/i386/fpu/s_cosf.S
diff --git a/sysdeps/libm-i387/s_cosl.S b/sysdeps/i386/fpu/s_cosl.S
index 61c9010c99..61c9010c99 100644
--- a/sysdeps/libm-i387/s_cosl.S
+++ b/sysdeps/i386/fpu/s_cosl.S
diff --git a/sysdeps/libm-i387/s_exp2.S b/sysdeps/i386/fpu/s_exp2.S
index 778c0c0eb6..778c0c0eb6 100644
--- a/sysdeps/libm-i387/s_exp2.S
+++ b/sysdeps/i386/fpu/s_exp2.S
diff --git a/sysdeps/libm-i387/s_exp2f.S b/sysdeps/i386/fpu/s_exp2f.S
index c2d1af1af1..c2d1af1af1 100644
--- a/sysdeps/libm-i387/s_exp2f.S
+++ b/sysdeps/i386/fpu/s_exp2f.S
diff --git a/sysdeps/libm-i387/s_exp2l.S b/sysdeps/i386/fpu/s_exp2l.S
index fa1fdc9236..fa1fdc9236 100644
--- a/sysdeps/libm-i387/s_exp2l.S
+++ b/sysdeps/i386/fpu/s_exp2l.S
diff --git a/sysdeps/libm-i387/s_expm1.S b/sysdeps/i386/fpu/s_expm1.S
index 92beaf0776..92beaf0776 100644
--- a/sysdeps/libm-i387/s_expm1.S
+++ b/sysdeps/i386/fpu/s_expm1.S
diff --git a/sysdeps/libm-i387/s_expm1f.S b/sysdeps/i386/fpu/s_expm1f.S
index 45a60fe010..45a60fe010 100644
--- a/sysdeps/libm-i387/s_expm1f.S
+++ b/sysdeps/i386/fpu/s_expm1f.S
diff --git a/sysdeps/libm-i387/s_expm1l.S b/sysdeps/i386/fpu/s_expm1l.S
index 13fa698cc7..13fa698cc7 100644
--- a/sysdeps/libm-i387/s_expm1l.S
+++ b/sysdeps/i386/fpu/s_expm1l.S
diff --git a/sysdeps/libm-i387/s_fdim.S b/sysdeps/i386/fpu/s_fdim.S
index 7a1e2ffa49..7a1e2ffa49 100644
--- a/sysdeps/libm-i387/s_fdim.S
+++ b/sysdeps/i386/fpu/s_fdim.S
diff --git a/sysdeps/libm-i387/s_fdimf.S b/sysdeps/i386/fpu/s_fdimf.S
index 7e58f6752b..7e58f6752b 100644
--- a/sysdeps/libm-i387/s_fdimf.S
+++ b/sysdeps/i386/fpu/s_fdimf.S
diff --git a/sysdeps/libm-i387/s_fdiml.S b/sysdeps/i386/fpu/s_fdiml.S
index 7a8c18a5d3..7a8c18a5d3 100644
--- a/sysdeps/libm-i387/s_fdiml.S
+++ b/sysdeps/i386/fpu/s_fdiml.S
diff --git a/sysdeps/libm-i387/s_finite.S b/sysdeps/i386/fpu/s_finite.S
index 63c766a950..63c766a950 100644
--- a/sysdeps/libm-i387/s_finite.S
+++ b/sysdeps/i386/fpu/s_finite.S
diff --git a/sysdeps/libm-i387/s_finitef.S b/sysdeps/i386/fpu/s_finitef.S
index dabb71a115..dabb71a115 100644
--- a/sysdeps/libm-i387/s_finitef.S
+++ b/sysdeps/i386/fpu/s_finitef.S
diff --git a/sysdeps/libm-i387/s_finitel.S b/sysdeps/i386/fpu/s_finitel.S
index acc5ad4cd0..acc5ad4cd0 100644
--- a/sysdeps/libm-i387/s_finitel.S
+++ b/sysdeps/i386/fpu/s_finitel.S
diff --git a/sysdeps/libm-i387/s_floor.S b/sysdeps/i386/fpu/s_floor.S
index 20a8660424..20a8660424 100644
--- a/sysdeps/libm-i387/s_floor.S
+++ b/sysdeps/i386/fpu/s_floor.S
diff --git a/sysdeps/libm-i387/s_floorf.S b/sysdeps/i386/fpu/s_floorf.S
index eca93a2aa3..eca93a2aa3 100644
--- a/sysdeps/libm-i387/s_floorf.S
+++ b/sysdeps/i386/fpu/s_floorf.S
diff --git a/sysdeps/libm-i387/s_floorl.S b/sysdeps/i386/fpu/s_floorl.S
index c2bf091d73..c2bf091d73 100644
--- a/sysdeps/libm-i387/s_floorl.S
+++ b/sysdeps/i386/fpu/s_floorl.S
diff --git a/sysdeps/libm-i387/s_fma.S b/sysdeps/i386/fpu/s_fma.S
index 2affafcbf5..2affafcbf5 100644
--- a/sysdeps/libm-i387/s_fma.S
+++ b/sysdeps/i386/fpu/s_fma.S
diff --git a/sysdeps/libm-i387/s_fmaf.S b/sysdeps/i386/fpu/s_fmaf.S
index 03c6cc0f9e..03c6cc0f9e 100644
--- a/sysdeps/libm-i387/s_fmaf.S
+++ b/sysdeps/i386/fpu/s_fmaf.S
diff --git a/sysdeps/libm-i387/s_fmal.S b/sysdeps/i386/fpu/s_fmal.S
index c15fca8dab..c15fca8dab 100644
--- a/sysdeps/libm-i387/s_fmal.S
+++ b/sysdeps/i386/fpu/s_fmal.S
diff --git a/sysdeps/libm-i387/s_fmax.S b/sysdeps/i386/fpu/s_fmax.S
index 3dbaa139ad..3dbaa139ad 100644
--- a/sysdeps/libm-i387/s_fmax.S
+++ b/sysdeps/i386/fpu/s_fmax.S
diff --git a/sysdeps/libm-i387/s_fmaxf.S b/sysdeps/i386/fpu/s_fmaxf.S
index 5dd94a43c4..5dd94a43c4 100644
--- a/sysdeps/libm-i387/s_fmaxf.S
+++ b/sysdeps/i386/fpu/s_fmaxf.S
diff --git a/sysdeps/libm-i387/s_fmaxl.S b/sysdeps/i386/fpu/s_fmaxl.S
index d833bd1985..d833bd1985 100644
--- a/sysdeps/libm-i387/s_fmaxl.S
+++ b/sysdeps/i386/fpu/s_fmaxl.S
diff --git a/sysdeps/libm-i387/s_fmin.S b/sysdeps/i386/fpu/s_fmin.S
index 1ac46c7d21..1ac46c7d21 100644
--- a/sysdeps/libm-i387/s_fmin.S
+++ b/sysdeps/i386/fpu/s_fmin.S
diff --git a/sysdeps/libm-i387/s_fminf.S b/sysdeps/i386/fpu/s_fminf.S
index 7dd346d2bc..7dd346d2bc 100644
--- a/sysdeps/libm-i387/s_fminf.S
+++ b/sysdeps/i386/fpu/s_fminf.S
diff --git a/sysdeps/libm-i387/s_fminl.S b/sysdeps/i386/fpu/s_fminl.S
index 883735d32c..883735d32c 100644
--- a/sysdeps/libm-i387/s_fminl.S
+++ b/sysdeps/i386/fpu/s_fminl.S
diff --git a/sysdeps/libm-i387/s_frexp.S b/sysdeps/i386/fpu/s_frexp.S
index 6a05f26720..6a05f26720 100644
--- a/sysdeps/libm-i387/s_frexp.S
+++ b/sysdeps/i386/fpu/s_frexp.S
diff --git a/sysdeps/libm-i387/s_frexpf.S b/sysdeps/i386/fpu/s_frexpf.S
index 1021b97aee..1021b97aee 100644
--- a/sysdeps/libm-i387/s_frexpf.S
+++ b/sysdeps/i386/fpu/s_frexpf.S
diff --git a/sysdeps/libm-i387/s_frexpl.S b/sysdeps/i386/fpu/s_frexpl.S
index e3019ced6d..e3019ced6d 100644
--- a/sysdeps/libm-i387/s_frexpl.S
+++ b/sysdeps/i386/fpu/s_frexpl.S
diff --git a/sysdeps/libm-i387/s_ilogb.S b/sysdeps/i386/fpu/s_ilogb.S
index 36fb000c02..36fb000c02 100644
--- a/sysdeps/libm-i387/s_ilogb.S
+++ b/sysdeps/i386/fpu/s_ilogb.S
diff --git a/sysdeps/libm-i387/s_ilogbf.S b/sysdeps/i386/fpu/s_ilogbf.S
index 54f9d4647e..54f9d4647e 100644
--- a/sysdeps/libm-i387/s_ilogbf.S
+++ b/sysdeps/i386/fpu/s_ilogbf.S
diff --git a/sysdeps/libm-i387/s_ilogbl.S b/sysdeps/i386/fpu/s_ilogbl.S
index 1dad93abeb..1dad93abeb 100644
--- a/sysdeps/libm-i387/s_ilogbl.S
+++ b/sysdeps/i386/fpu/s_ilogbl.S
diff --git a/sysdeps/libm-i387/s_isinfl.c b/sysdeps/i386/fpu/s_isinfl.c
index f07898fd1b..f07898fd1b 100644
--- a/sysdeps/libm-i387/s_isinfl.c
+++ b/sysdeps/i386/fpu/s_isinfl.c
diff --git a/sysdeps/libm-i387/s_isnanl.c b/sysdeps/i386/fpu/s_isnanl.c
index 6a74b956cc..6a74b956cc 100644
--- a/sysdeps/libm-i387/s_isnanl.c
+++ b/sysdeps/i386/fpu/s_isnanl.c
diff --git a/sysdeps/libm-i387/s_llrint.S b/sysdeps/i386/fpu/s_llrint.S
index 6109ec45c3..6109ec45c3 100644
--- a/sysdeps/libm-i387/s_llrint.S
+++ b/sysdeps/i386/fpu/s_llrint.S
diff --git a/sysdeps/libm-i387/s_llrintf.S b/sysdeps/i386/fpu/s_llrintf.S
index c1e1c225c0..c1e1c225c0 100644
--- a/sysdeps/libm-i387/s_llrintf.S
+++ b/sysdeps/i386/fpu/s_llrintf.S
diff --git a/sysdeps/libm-i387/s_llrintl.S b/sysdeps/i386/fpu/s_llrintl.S
index d894897d5e..d894897d5e 100644
--- a/sysdeps/libm-i387/s_llrintl.S
+++ b/sysdeps/i386/fpu/s_llrintl.S
diff --git a/sysdeps/libm-i387/s_log1p.S b/sysdeps/i386/fpu/s_log1p.S
index 10e8a36369..10e8a36369 100644
--- a/sysdeps/libm-i387/s_log1p.S
+++ b/sysdeps/i386/fpu/s_log1p.S
diff --git a/sysdeps/libm-i387/s_log1pf.S b/sysdeps/i386/fpu/s_log1pf.S
index df9fdcbcfc..df9fdcbcfc 100644
--- a/sysdeps/libm-i387/s_log1pf.S
+++ b/sysdeps/i386/fpu/s_log1pf.S
diff --git a/sysdeps/libm-i387/s_log1pl.S b/sysdeps/i386/fpu/s_log1pl.S
index 05a17b2831..05a17b2831 100644
--- a/sysdeps/libm-i387/s_log1pl.S
+++ b/sysdeps/i386/fpu/s_log1pl.S
diff --git a/sysdeps/libm-i387/s_log2.S b/sysdeps/i386/fpu/s_log2.S
index 4632c96f67..4632c96f67 100644
--- a/sysdeps/libm-i387/s_log2.S
+++ b/sysdeps/i386/fpu/s_log2.S
diff --git a/sysdeps/libm-i387/s_log2f.S b/sysdeps/i386/fpu/s_log2f.S
index bfdd0ef88e..bfdd0ef88e 100644
--- a/sysdeps/libm-i387/s_log2f.S
+++ b/sysdeps/i386/fpu/s_log2f.S
diff --git a/sysdeps/libm-i387/s_log2l.S b/sysdeps/i386/fpu/s_log2l.S
index 184981c4bb..184981c4bb 100644
--- a/sysdeps/libm-i387/s_log2l.S
+++ b/sysdeps/i386/fpu/s_log2l.S
diff --git a/sysdeps/libm-i387/s_logb.S b/sysdeps/i386/fpu/s_logb.S
index f78c091c8a..f78c091c8a 100644
--- a/sysdeps/libm-i387/s_logb.S
+++ b/sysdeps/i386/fpu/s_logb.S
diff --git a/sysdeps/libm-i387/s_logbf.S b/sysdeps/i386/fpu/s_logbf.S
index 91eb3d2925..91eb3d2925 100644
--- a/sysdeps/libm-i387/s_logbf.S
+++ b/sysdeps/i386/fpu/s_logbf.S
diff --git a/sysdeps/libm-i387/s_logbl.S b/sysdeps/i386/fpu/s_logbl.S
index 5c9a9c1c9d..5c9a9c1c9d 100644
--- a/sysdeps/libm-i387/s_logbl.S
+++ b/sysdeps/i386/fpu/s_logbl.S
diff --git a/sysdeps/libm-i387/s_lrint.S b/sysdeps/i386/fpu/s_lrint.S
index 40956ab0d0..40956ab0d0 100644
--- a/sysdeps/libm-i387/s_lrint.S
+++ b/sysdeps/i386/fpu/s_lrint.S
diff --git a/sysdeps/libm-i387/s_lrintf.S b/sysdeps/i386/fpu/s_lrintf.S
index 2f49bdbabe..2f49bdbabe 100644
--- a/sysdeps/libm-i387/s_lrintf.S
+++ b/sysdeps/i386/fpu/s_lrintf.S
diff --git a/sysdeps/libm-i387/s_lrintl.S b/sysdeps/i386/fpu/s_lrintl.S
index 3a06c91b29..3a06c91b29 100644
--- a/sysdeps/libm-i387/s_lrintl.S
+++ b/sysdeps/i386/fpu/s_lrintl.S
diff --git a/sysdeps/libm-i387/s_nearbyint.S b/sysdeps/i386/fpu/s_nearbyint.S
index 65ce4f76a1..65ce4f76a1 100644
--- a/sysdeps/libm-i387/s_nearbyint.S
+++ b/sysdeps/i386/fpu/s_nearbyint.S
diff --git a/sysdeps/libm-i387/s_nearbyintf.S b/sysdeps/i386/fpu/s_nearbyintf.S
index 090c631607..090c631607 100644
--- a/sysdeps/libm-i387/s_nearbyintf.S
+++ b/sysdeps/i386/fpu/s_nearbyintf.S
diff --git a/sysdeps/libm-i387/s_nearbyintl.S b/sysdeps/i386/fpu/s_nearbyintl.S
index 2f60af8f18..2f60af8f18 100644
--- a/sysdeps/libm-i387/s_nearbyintl.S
+++ b/sysdeps/i386/fpu/s_nearbyintl.S
diff --git a/sysdeps/libm-i387/s_nextafterl.c b/sysdeps/i386/fpu/s_nextafterl.c
index 4596c6b93c..4596c6b93c 100644
--- a/sysdeps/libm-i387/s_nextafterl.c
+++ b/sysdeps/i386/fpu/s_nextafterl.c
diff --git a/sysdeps/libm-i387/s_remquo.S b/sysdeps/i386/fpu/s_remquo.S
index 8ada191771..8ada191771 100644
--- a/sysdeps/libm-i387/s_remquo.S
+++ b/sysdeps/i386/fpu/s_remquo.S
diff --git a/sysdeps/libm-i387/s_remquof.S b/sysdeps/i386/fpu/s_remquof.S
index f60aec9c46..f60aec9c46 100644
--- a/sysdeps/libm-i387/s_remquof.S
+++ b/sysdeps/i386/fpu/s_remquof.S
diff --git a/sysdeps/libm-i387/s_remquol.S b/sysdeps/i386/fpu/s_remquol.S
index 115d6e874b..115d6e874b 100644
--- a/sysdeps/libm-i387/s_remquol.S
+++ b/sysdeps/i386/fpu/s_remquol.S
diff --git a/sysdeps/libm-i387/s_rint.S b/sysdeps/i386/fpu/s_rint.S
index be36c5f0ca..be36c5f0ca 100644
--- a/sysdeps/libm-i387/s_rint.S
+++ b/sysdeps/i386/fpu/s_rint.S
diff --git a/sysdeps/libm-i387/s_rintf.S b/sysdeps/i386/fpu/s_rintf.S
index 2b358c1cf1..2b358c1cf1 100644
--- a/sysdeps/libm-i387/s_rintf.S
+++ b/sysdeps/i386/fpu/s_rintf.S
diff --git a/sysdeps/libm-i387/s_rintl.S b/sysdeps/i386/fpu/s_rintl.S
index fd1ae6324e..fd1ae6324e 100644
--- a/sysdeps/libm-i387/s_rintl.S
+++ b/sysdeps/i386/fpu/s_rintl.S
diff --git a/sysdeps/libm-i387/s_scalbln.c b/sysdeps/i386/fpu/s_scalbln.c
index 1009713fbc..1009713fbc 100644
--- a/sysdeps/libm-i387/s_scalbln.c
+++ b/sysdeps/i386/fpu/s_scalbln.c
diff --git a/sysdeps/libm-i387/s_scalblnf.c b/sysdeps/i386/fpu/s_scalblnf.c
index 5e558c3540..5e558c3540 100644
--- a/sysdeps/libm-i387/s_scalblnf.c
+++ b/sysdeps/i386/fpu/s_scalblnf.c
diff --git a/sysdeps/libm-i387/s_scalblnl.c b/sysdeps/i386/fpu/s_scalblnl.c
index cda2ec11c8..cda2ec11c8 100644
--- a/sysdeps/libm-i387/s_scalblnl.c
+++ b/sysdeps/i386/fpu/s_scalblnl.c
diff --git a/sysdeps/libm-i387/s_scalbn.S b/sysdeps/i386/fpu/s_scalbn.S
index ea9e25f094..ea9e25f094 100644
--- a/sysdeps/libm-i387/s_scalbn.S
+++ b/sysdeps/i386/fpu/s_scalbn.S
diff --git a/sysdeps/libm-i387/s_scalbnf.S b/sysdeps/i386/fpu/s_scalbnf.S
index dc8cfb4296..dc8cfb4296 100644
--- a/sysdeps/libm-i387/s_scalbnf.S
+++ b/sysdeps/i386/fpu/s_scalbnf.S
diff --git a/sysdeps/libm-i387/s_scalbnl.S b/sysdeps/i386/fpu/s_scalbnl.S
index 295494b3d2..295494b3d2 100644
--- a/sysdeps/libm-i387/s_scalbnl.S
+++ b/sysdeps/i386/fpu/s_scalbnl.S
diff --git a/sysdeps/libm-i387/s_significand.S b/sysdeps/i386/fpu/s_significand.S
index 4859b7ed71..4859b7ed71 100644
--- a/sysdeps/libm-i387/s_significand.S
+++ b/sysdeps/i386/fpu/s_significand.S
diff --git a/sysdeps/libm-i387/s_significandf.S b/sysdeps/i386/fpu/s_significandf.S
index 3a2de97759..3a2de97759 100644
--- a/sysdeps/libm-i387/s_significandf.S
+++ b/sysdeps/i386/fpu/s_significandf.S
diff --git a/sysdeps/libm-i387/s_significandl.S b/sysdeps/i386/fpu/s_significandl.S
index e3a69cba73..e3a69cba73 100644
--- a/sysdeps/libm-i387/s_significandl.S
+++ b/sysdeps/i386/fpu/s_significandl.S
diff --git a/sysdeps/libm-i387/s_sin.S b/sysdeps/i386/fpu/s_sin.S
index eb22d7e98b..eb22d7e98b 100644
--- a/sysdeps/libm-i387/s_sin.S
+++ b/sysdeps/i386/fpu/s_sin.S
diff --git a/sysdeps/libm-i387/s_sincos.S b/sysdeps/i386/fpu/s_sincos.S
index fe99f42d18..fe99f42d18 100644
--- a/sysdeps/libm-i387/s_sincos.S
+++ b/sysdeps/i386/fpu/s_sincos.S
diff --git a/sysdeps/libm-i387/s_sincosf.S b/sysdeps/i386/fpu/s_sincosf.S
index 5bb13f3c33..5bb13f3c33 100644
--- a/sysdeps/libm-i387/s_sincosf.S
+++ b/sysdeps/i386/fpu/s_sincosf.S
diff --git a/sysdeps/libm-i387/s_sincosl.S b/sysdeps/i386/fpu/s_sincosl.S
index 8b6694f09f..8b6694f09f 100644
--- a/sysdeps/libm-i387/s_sincosl.S
+++ b/sysdeps/i386/fpu/s_sincosl.S
diff --git a/sysdeps/libm-i387/s_sinf.S b/sysdeps/i386/fpu/s_sinf.S
index a010d60f5e..a010d60f5e 100644
--- a/sysdeps/libm-i387/s_sinf.S
+++ b/sysdeps/i386/fpu/s_sinf.S
diff --git a/sysdeps/libm-i387/s_sinl.S b/sysdeps/i386/fpu/s_sinl.S
index 3e215de5e1..3e215de5e1 100644
--- a/sysdeps/libm-i387/s_sinl.S
+++ b/sysdeps/i386/fpu/s_sinl.S
diff --git a/sysdeps/libm-i387/s_tan.S b/sysdeps/i386/fpu/s_tan.S
index 7b3547af4c..7b3547af4c 100644
--- a/sysdeps/libm-i387/s_tan.S
+++ b/sysdeps/i386/fpu/s_tan.S
diff --git a/sysdeps/libm-i387/s_tanf.S b/sysdeps/i386/fpu/s_tanf.S
index 7a7509119b..7a7509119b 100644
--- a/sysdeps/libm-i387/s_tanf.S
+++ b/sysdeps/i386/fpu/s_tanf.S
diff --git a/sysdeps/libm-i387/s_tanl.S b/sysdeps/i386/fpu/s_tanl.S
index f2bdd6a605..f2bdd6a605 100644
--- a/sysdeps/libm-i387/s_tanl.S
+++ b/sysdeps/i386/fpu/s_tanl.S
diff --git a/sysdeps/libm-i387/s_trunc.S b/sysdeps/i386/fpu/s_trunc.S
index 3100d716a9..3100d716a9 100644
--- a/sysdeps/libm-i387/s_trunc.S
+++ b/sysdeps/i386/fpu/s_trunc.S
diff --git a/sysdeps/libm-i387/s_truncf.S b/sysdeps/i386/fpu/s_truncf.S
index 275e5f714c..275e5f714c 100644
--- a/sysdeps/libm-i387/s_truncf.S
+++ b/sysdeps/i386/fpu/s_truncf.S
diff --git a/sysdeps/libm-i387/s_truncl.S b/sysdeps/i386/fpu/s_truncl.S
index 4c0bb0ce53..4c0bb0ce53 100644
--- a/sysdeps/libm-i387/s_truncl.S
+++ b/sysdeps/i386/fpu/s_truncl.S
diff --git a/sysdeps/libm-i387/t_exp.c b/sysdeps/i386/fpu/t_exp.c
index fd37963b05..fd37963b05 100644
--- a/sysdeps/libm-i387/t_exp.c
+++ b/sysdeps/i386/fpu/t_exp.c
diff --git a/sysdeps/i386/i686/Implies b/sysdeps/i386/i686/Implies
index 5e3b4cb5e7..b5c05ec7f2 100644
--- a/sysdeps/i386/i686/Implies
+++ b/sysdeps/i386/i686/Implies
@@ -2,4 +2,3 @@
 # not really good to use heavily i586 optimized code on a i686.  It's
 # better to use i486/i386 code.
 i386/i486
-libm-i387/i686
diff --git a/sysdeps/libm-i387/i686/s_fdim.S b/sysdeps/i386/i686/fpu/s_fdim.S
index 6f722c5b07..6f722c5b07 100644
--- a/sysdeps/libm-i387/i686/s_fdim.S
+++ b/sysdeps/i386/i686/fpu/s_fdim.S
diff --git a/sysdeps/libm-i387/i686/s_fdimf.S b/sysdeps/i386/i686/fpu/s_fdimf.S
index 1bcaf0012e..1bcaf0012e 100644
--- a/sysdeps/libm-i387/i686/s_fdimf.S
+++ b/sysdeps/i386/i686/fpu/s_fdimf.S
diff --git a/sysdeps/libm-i387/i686/s_fdiml.S b/sysdeps/i386/i686/fpu/s_fdiml.S
index 9e909ba60e..9e909ba60e 100644
--- a/sysdeps/libm-i387/i686/s_fdiml.S
+++ b/sysdeps/i386/i686/fpu/s_fdiml.S
diff --git a/sysdeps/libm-i387/i686/s_fmax.S b/sysdeps/i386/i686/fpu/s_fmax.S
index 3639ba7470..3639ba7470 100644
--- a/sysdeps/libm-i387/i686/s_fmax.S
+++ b/sysdeps/i386/i686/fpu/s_fmax.S
diff --git a/sysdeps/libm-i387/i686/s_fmaxf.S b/sysdeps/i386/i686/fpu/s_fmaxf.S
index ad948d0b62..ad948d0b62 100644
--- a/sysdeps/libm-i387/i686/s_fmaxf.S
+++ b/sysdeps/i386/i686/fpu/s_fmaxf.S
diff --git a/sysdeps/libm-i387/i686/s_fmaxl.S b/sysdeps/i386/i686/fpu/s_fmaxl.S
index 14859b0a6d..14859b0a6d 100644
--- a/sysdeps/libm-i387/i686/s_fmaxl.S
+++ b/sysdeps/i386/i686/fpu/s_fmaxl.S
diff --git a/sysdeps/libm-i387/i686/s_fmin.S b/sysdeps/i386/i686/fpu/s_fmin.S
index 383e9579f6..383e9579f6 100644
--- a/sysdeps/libm-i387/i686/s_fmin.S
+++ b/sysdeps/i386/i686/fpu/s_fmin.S
diff --git a/sysdeps/libm-i387/i686/s_fminf.S b/sysdeps/i386/i686/fpu/s_fminf.S
index f3dae00377..f3dae00377 100644
--- a/sysdeps/libm-i387/i686/s_fminf.S
+++ b/sysdeps/i386/i686/fpu/s_fminf.S
diff --git a/sysdeps/libm-i387/i686/s_fminl.S b/sysdeps/i386/i686/fpu/s_fminl.S
index f125531112..f125531112 100644
--- a/sysdeps/libm-i387/i686/s_fminl.S
+++ b/sysdeps/i386/i686/fpu/s_fminl.S
diff --git a/sysdeps/i960/Implies b/sysdeps/i960/Implies
index f8c4079ab5..1d569744ab 100644
--- a/sysdeps/i960/Implies
+++ b/sysdeps/i960/Implies
@@ -1,2 +1,3 @@
 # i960 family uses IEEE 754 floating point.
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/ieee754/Implies b/sysdeps/ieee754/Implies
deleted file mode 100644
index 5c9e98b7ae..0000000000
--- a/sysdeps/ieee754/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# For all IEEE machines, use Sun's fdlibm code.
-libm-ieee754
diff --git a/sysdeps/ieee754/dbl-64/Dist b/sysdeps/ieee754/dbl-64/Dist
new file mode 100644
index 0000000000..1bb7be3537
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/Dist
@@ -0,0 +1 @@
+t_exp2.h
diff --git a/sysdeps/ieee754/dbl2mpn.c b/sysdeps/ieee754/dbl-64/dbl2mpn.c
index f7dead4936..f7dead4936 100644
--- a/sysdeps/ieee754/dbl2mpn.c
+++ b/sysdeps/ieee754/dbl-64/dbl2mpn.c
diff --git a/sysdeps/libm-ieee754/e_acos.c b/sysdeps/ieee754/dbl-64/e_acos.c
index eb4080a8b8..eb4080a8b8 100644
--- a/sysdeps/libm-ieee754/e_acos.c
+++ b/sysdeps/ieee754/dbl-64/e_acos.c
diff --git a/sysdeps/libm-ieee754/e_acosh.c b/sysdeps/ieee754/dbl-64/e_acosh.c
index 27c29cd8c9..27c29cd8c9 100644
--- a/sysdeps/libm-ieee754/e_acosh.c
+++ b/sysdeps/ieee754/dbl-64/e_acosh.c
diff --git a/sysdeps/libm-ieee754/e_asin.c b/sysdeps/ieee754/dbl-64/e_asin.c
index aa19598848..aa19598848 100644
--- a/sysdeps/libm-ieee754/e_asin.c
+++ b/sysdeps/ieee754/dbl-64/e_asin.c
diff --git a/sysdeps/libm-ieee754/e_atan2.c b/sysdeps/ieee754/dbl-64/e_atan2.c
index ae7d759a9f..ae7d759a9f 100644
--- a/sysdeps/libm-ieee754/e_atan2.c
+++ b/sysdeps/ieee754/dbl-64/e_atan2.c
diff --git a/sysdeps/libm-ieee754/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
index fa4fe675c9..fa4fe675c9 100644
--- a/sysdeps/libm-ieee754/e_atanh.c
+++ b/sysdeps/ieee754/dbl-64/e_atanh.c
diff --git a/sysdeps/libm-ieee754/e_cosh.c b/sysdeps/ieee754/dbl-64/e_cosh.c
index 65106b9989..65106b9989 100644
--- a/sysdeps/libm-ieee754/e_cosh.c
+++ b/sysdeps/ieee754/dbl-64/e_cosh.c
diff --git a/sysdeps/libm-ieee754/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c
index ee0b22f6ae..ee0b22f6ae 100644
--- a/sysdeps/libm-ieee754/e_exp.c
+++ b/sysdeps/ieee754/dbl-64/e_exp.c
diff --git a/sysdeps/libm-ieee754/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index 2ce613574a..2ce613574a 100644
--- a/sysdeps/libm-ieee754/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
diff --git a/sysdeps/libm-ieee754/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c
index bd802c24f1..bd802c24f1 100644
--- a/sysdeps/libm-ieee754/e_gamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c
diff --git a/sysdeps/libm-ieee754/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
index 76a77ec33a..76a77ec33a 100644
--- a/sysdeps/libm-ieee754/e_hypot.c
+++ b/sysdeps/ieee754/dbl-64/e_hypot.c
diff --git a/sysdeps/libm-ieee754/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c
index 55e8294bb9..55e8294bb9 100644
--- a/sysdeps/libm-ieee754/e_j0.c
+++ b/sysdeps/ieee754/dbl-64/e_j0.c
diff --git a/sysdeps/libm-ieee754/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c
index daf025fdb7..daf025fdb7 100644
--- a/sysdeps/libm-ieee754/e_j1.c
+++ b/sysdeps/ieee754/dbl-64/e_j1.c
diff --git a/sysdeps/libm-ieee754/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
index d63d7688a3..d63d7688a3 100644
--- a/sysdeps/libm-ieee754/e_jn.c
+++ b/sysdeps/ieee754/dbl-64/e_jn.c
diff --git a/sysdeps/libm-ieee754/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index 92e9556568..92e9556568 100644
--- a/sysdeps/libm-ieee754/e_lgamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
diff --git a/sysdeps/libm-ieee754/e_log.c b/sysdeps/ieee754/dbl-64/e_log.c
index 851bd30198..851bd30198 100644
--- a/sysdeps/libm-ieee754/e_log.c
+++ b/sysdeps/ieee754/dbl-64/e_log.c
diff --git a/sysdeps/libm-ieee754/e_log10.c b/sysdeps/ieee754/dbl-64/e_log10.c
index e8a3278eaf..e8a3278eaf 100644
--- a/sysdeps/libm-ieee754/e_log10.c
+++ b/sysdeps/ieee754/dbl-64/e_log10.c
diff --git a/sysdeps/libm-ieee754/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c
index 1e1496f00d..1e1496f00d 100644
--- a/sysdeps/libm-ieee754/e_pow.c
+++ b/sysdeps/ieee754/dbl-64/e_pow.c
diff --git a/sysdeps/libm-ieee754/e_rem_pio2.c b/sysdeps/ieee754/dbl-64/e_rem_pio2.c
index a8a8cdb2b2..a8a8cdb2b2 100644
--- a/sysdeps/libm-ieee754/e_rem_pio2.c
+++ b/sysdeps/ieee754/dbl-64/e_rem_pio2.c
diff --git a/sysdeps/libm-ieee754/e_remainder.c b/sysdeps/ieee754/dbl-64/e_remainder.c
index 6418081182..6418081182 100644
--- a/sysdeps/libm-ieee754/e_remainder.c
+++ b/sysdeps/ieee754/dbl-64/e_remainder.c
diff --git a/sysdeps/libm-ieee754/e_sinh.c b/sysdeps/ieee754/dbl-64/e_sinh.c
index 1701b9bb67..1701b9bb67 100644
--- a/sysdeps/libm-ieee754/e_sinh.c
+++ b/sysdeps/ieee754/dbl-64/e_sinh.c
diff --git a/sysdeps/libm-ieee754/e_sqrt.c b/sysdeps/ieee754/dbl-64/e_sqrt.c
index 67da5455f9..67da5455f9 100644
--- a/sysdeps/libm-ieee754/e_sqrt.c
+++ b/sysdeps/ieee754/dbl-64/e_sqrt.c
diff --git a/sysdeps/libm-ieee754/k_cos.c b/sysdeps/ieee754/dbl-64/k_cos.c
index 7e38ef7915..7e38ef7915 100644
--- a/sysdeps/libm-ieee754/k_cos.c
+++ b/sysdeps/ieee754/dbl-64/k_cos.c
diff --git a/sysdeps/libm-ieee754/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
index ccf1633bd4..ccf1633bd4 100644
--- a/sysdeps/libm-ieee754/k_rem_pio2.c
+++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c
diff --git a/sysdeps/libm-ieee754/k_sin.c b/sysdeps/ieee754/dbl-64/k_sin.c
index 49c59228e0..49c59228e0 100644
--- a/sysdeps/libm-ieee754/k_sin.c
+++ b/sysdeps/ieee754/dbl-64/k_sin.c
diff --git a/sysdeps/libm-ieee754/k_tan.c b/sysdeps/ieee754/dbl-64/k_tan.c
index 55dafb8ebc..55dafb8ebc 100644
--- a/sysdeps/libm-ieee754/k_tan.c
+++ b/sysdeps/ieee754/dbl-64/k_tan.c
diff --git a/sysdeps/ieee754/mpn2dbl.c b/sysdeps/ieee754/dbl-64/mpn2dbl.c
index 8145eb9c3d..8145eb9c3d 100644
--- a/sysdeps/ieee754/mpn2dbl.c
+++ b/sysdeps/ieee754/dbl-64/mpn2dbl.c
diff --git a/sysdeps/libm-ieee754/s_asinh.c b/sysdeps/ieee754/dbl-64/s_asinh.c
index 985cfe32e1..985cfe32e1 100644
--- a/sysdeps/libm-ieee754/s_asinh.c
+++ b/sysdeps/ieee754/dbl-64/s_asinh.c
diff --git a/sysdeps/libm-ieee754/s_atan.c b/sysdeps/ieee754/dbl-64/s_atan.c
index cad3ba12a8..cad3ba12a8 100644
--- a/sysdeps/libm-ieee754/s_atan.c
+++ b/sysdeps/ieee754/dbl-64/s_atan.c
diff --git a/sysdeps/libm-ieee754/s_cbrt.c b/sysdeps/ieee754/dbl-64/s_cbrt.c
index 753049d375..753049d375 100644
--- a/sysdeps/libm-ieee754/s_cbrt.c
+++ b/sysdeps/ieee754/dbl-64/s_cbrt.c
diff --git a/sysdeps/libm-ieee754/s_ceil.c b/sysdeps/ieee754/dbl-64/s_ceil.c
index 1b352a679e..1b352a679e 100644
--- a/sysdeps/libm-ieee754/s_ceil.c
+++ b/sysdeps/ieee754/dbl-64/s_ceil.c
diff --git a/sysdeps/libm-ieee754/s_copysign.c b/sysdeps/ieee754/dbl-64/s_copysign.c
index 5e35e6943c..5e35e6943c 100644
--- a/sysdeps/libm-ieee754/s_copysign.c
+++ b/sysdeps/ieee754/dbl-64/s_copysign.c
diff --git a/sysdeps/libm-ieee754/s_cos.c b/sysdeps/ieee754/dbl-64/s_cos.c
index 7edb5deafe..7edb5deafe 100644
--- a/sysdeps/libm-ieee754/s_cos.c
+++ b/sysdeps/ieee754/dbl-64/s_cos.c
diff --git a/sysdeps/libm-ieee754/s_erf.c b/sysdeps/ieee754/dbl-64/s_erf.c
index d8b6629a72..d8b6629a72 100644
--- a/sysdeps/libm-ieee754/s_erf.c
+++ b/sysdeps/ieee754/dbl-64/s_erf.c
diff --git a/sysdeps/libm-ieee754/s_exp2.c b/sysdeps/ieee754/dbl-64/s_exp2.c
index 875d4d6f2c..875d4d6f2c 100644
--- a/sysdeps/libm-ieee754/s_exp2.c
+++ b/sysdeps/ieee754/dbl-64/s_exp2.c
diff --git a/sysdeps/libm-ieee754/s_expm1.c b/sysdeps/ieee754/dbl-64/s_expm1.c
index bfd15b2e31..bfd15b2e31 100644
--- a/sysdeps/libm-ieee754/s_expm1.c
+++ b/sysdeps/ieee754/dbl-64/s_expm1.c
diff --git a/sysdeps/libm-ieee754/s_fabs.c b/sysdeps/ieee754/dbl-64/s_fabs.c
index 1abe9432a3..1abe9432a3 100644
--- a/sysdeps/libm-ieee754/s_fabs.c
+++ b/sysdeps/ieee754/dbl-64/s_fabs.c
diff --git a/sysdeps/libm-ieee754/s_finite.c b/sysdeps/ieee754/dbl-64/s_finite.c
index b12ff42360..b12ff42360 100644
--- a/sysdeps/libm-ieee754/s_finite.c
+++ b/sysdeps/ieee754/dbl-64/s_finite.c
diff --git a/sysdeps/libm-ieee754/s_floor.c b/sysdeps/ieee754/dbl-64/s_floor.c
index 77db9ef392..77db9ef392 100644
--- a/sysdeps/libm-ieee754/s_floor.c
+++ b/sysdeps/ieee754/dbl-64/s_floor.c
diff --git a/sysdeps/libm-ieee754/s_fpclassify.c b/sysdeps/ieee754/dbl-64/s_fpclassify.c
index 72a15369b5..72a15369b5 100644
--- a/sysdeps/libm-ieee754/s_fpclassify.c
+++ b/sysdeps/ieee754/dbl-64/s_fpclassify.c
diff --git a/sysdeps/libm-ieee754/s_frexp.c b/sysdeps/ieee754/dbl-64/s_frexp.c
index 7dbddfde06..7dbddfde06 100644
--- a/sysdeps/libm-ieee754/s_frexp.c
+++ b/sysdeps/ieee754/dbl-64/s_frexp.c
diff --git a/sysdeps/libm-ieee754/s_ilogb.c b/sysdeps/ieee754/dbl-64/s_ilogb.c
index 820f01c9b2..820f01c9b2 100644
--- a/sysdeps/libm-ieee754/s_ilogb.c
+++ b/sysdeps/ieee754/dbl-64/s_ilogb.c
diff --git a/sysdeps/libm-ieee754/s_isinf.c b/sysdeps/ieee754/dbl-64/s_isinf.c
index 4f063d09c5..4f063d09c5 100644
--- a/sysdeps/libm-ieee754/s_isinf.c
+++ b/sysdeps/ieee754/dbl-64/s_isinf.c
diff --git a/sysdeps/libm-ieee754/s_isnan.c b/sysdeps/ieee754/dbl-64/s_isnan.c
index 1aed525af1..86301e1531 100644
--- a/sysdeps/libm-ieee754/s_isnan.c
+++ b/sysdeps/ieee754/dbl-64/s_isnan.c
@@ -34,7 +34,7 @@ static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $";
 	hx &= 0x7fffffff;
 	hx |= (u_int32_t)(lx|(-lx))>>31;
 	hx = 0x7ff00000 - hx;
-	return (int)((u_int32_t)(hx))>>31;
+	return (int)(((u_int32_t)hx)>>31);
 }
 weak_alias (__isnan, isnan)
 #ifdef NO_LONG_DOUBLE
diff --git a/sysdeps/libm-ieee754/s_llrint.c b/sysdeps/ieee754/dbl-64/s_llrint.c
index 8e70bcff36..8e70bcff36 100644
--- a/sysdeps/libm-ieee754/s_llrint.c
+++ b/sysdeps/ieee754/dbl-64/s_llrint.c
diff --git a/sysdeps/libm-ieee754/s_llround.c b/sysdeps/ieee754/dbl-64/s_llround.c
index 92ce10fc42..92ce10fc42 100644
--- a/sysdeps/libm-ieee754/s_llround.c
+++ b/sysdeps/ieee754/dbl-64/s_llround.c
diff --git a/sysdeps/libm-ieee754/s_log1p.c b/sysdeps/ieee754/dbl-64/s_log1p.c
index 0a9801a931..0a9801a931 100644
--- a/sysdeps/libm-ieee754/s_log1p.c
+++ b/sysdeps/ieee754/dbl-64/s_log1p.c
diff --git a/sysdeps/libm-ieee754/s_log2.c b/sysdeps/ieee754/dbl-64/s_log2.c
index 7379ce85e7..7379ce85e7 100644
--- a/sysdeps/libm-ieee754/s_log2.c
+++ b/sysdeps/ieee754/dbl-64/s_log2.c
diff --git a/sysdeps/libm-ieee754/s_logb.c b/sysdeps/ieee754/dbl-64/s_logb.c
index 4668cf78f8..4668cf78f8 100644
--- a/sysdeps/libm-ieee754/s_logb.c
+++ b/sysdeps/ieee754/dbl-64/s_logb.c
diff --git a/sysdeps/libm-ieee754/s_lrint.c b/sysdeps/ieee754/dbl-64/s_lrint.c
index 8f0d717963..8f0d717963 100644
--- a/sysdeps/libm-ieee754/s_lrint.c
+++ b/sysdeps/ieee754/dbl-64/s_lrint.c
diff --git a/sysdeps/libm-ieee754/s_lround.c b/sysdeps/ieee754/dbl-64/s_lround.c
index 49be12f03b..49be12f03b 100644
--- a/sysdeps/libm-ieee754/s_lround.c
+++ b/sysdeps/ieee754/dbl-64/s_lround.c
diff --git a/sysdeps/libm-ieee754/s_modf.c b/sysdeps/ieee754/dbl-64/s_modf.c
index 7851f675a4..7851f675a4 100644
--- a/sysdeps/libm-ieee754/s_modf.c
+++ b/sysdeps/ieee754/dbl-64/s_modf.c
diff --git a/sysdeps/libm-ieee754/s_nearbyint.c b/sysdeps/ieee754/dbl-64/s_nearbyint.c
index 32f5bf9447..32f5bf9447 100644
--- a/sysdeps/libm-ieee754/s_nearbyint.c
+++ b/sysdeps/ieee754/dbl-64/s_nearbyint.c
diff --git a/sysdeps/ieee754/dbl-64/s_nexttoward.c b/sysdeps/ieee754/dbl-64/s_nexttoward.c
new file mode 100644
index 0000000000..c68ba98cb3
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/s_nexttoward.c
@@ -0,0 +1 @@
+/* This function is the same as nextafter so we use an alias there.  */
diff --git a/sysdeps/libm-ieee754/s_remquo.c b/sysdeps/ieee754/dbl-64/s_remquo.c
index 6e32efbba2..6e32efbba2 100644
--- a/sysdeps/libm-ieee754/s_remquo.c
+++ b/sysdeps/ieee754/dbl-64/s_remquo.c
diff --git a/sysdeps/libm-ieee754/s_rint.c b/sysdeps/ieee754/dbl-64/s_rint.c
index e5f241291c..e5f241291c 100644
--- a/sysdeps/libm-ieee754/s_rint.c
+++ b/sysdeps/ieee754/dbl-64/s_rint.c
diff --git a/sysdeps/libm-ieee754/s_round.c b/sysdeps/ieee754/dbl-64/s_round.c
index fdb17f8de8..fdb17f8de8 100644
--- a/sysdeps/libm-ieee754/s_round.c
+++ b/sysdeps/ieee754/dbl-64/s_round.c
diff --git a/sysdeps/libm-ieee754/s_scalbln.c b/sysdeps/ieee754/dbl-64/s_scalbln.c
index aa6134f093..aa6134f093 100644
--- a/sysdeps/libm-ieee754/s_scalbln.c
+++ b/sysdeps/ieee754/dbl-64/s_scalbln.c
diff --git a/sysdeps/libm-ieee754/s_scalbn.c b/sysdeps/ieee754/dbl-64/s_scalbn.c
index 3dbfe8fef0..3dbfe8fef0 100644
--- a/sysdeps/libm-ieee754/s_scalbn.c
+++ b/sysdeps/ieee754/dbl-64/s_scalbn.c
diff --git a/sysdeps/libm-ieee754/s_signbit.c b/sysdeps/ieee754/dbl-64/s_signbit.c
index ee340035fb..ee340035fb 100644
--- a/sysdeps/libm-ieee754/s_signbit.c
+++ b/sysdeps/ieee754/dbl-64/s_signbit.c
diff --git a/sysdeps/libm-ieee754/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c
index 376c69ed00..376c69ed00 100644
--- a/sysdeps/libm-ieee754/s_sin.c
+++ b/sysdeps/ieee754/dbl-64/s_sin.c
diff --git a/sysdeps/libm-ieee754/s_sincos.c b/sysdeps/ieee754/dbl-64/s_sincos.c
index 5bc564ba5b..5bc564ba5b 100644
--- a/sysdeps/libm-ieee754/s_sincos.c
+++ b/sysdeps/ieee754/dbl-64/s_sincos.c
diff --git a/sysdeps/libm-ieee754/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c
index 714cf27dd2..714cf27dd2 100644
--- a/sysdeps/libm-ieee754/s_tan.c
+++ b/sysdeps/ieee754/dbl-64/s_tan.c
diff --git a/sysdeps/libm-ieee754/s_tanh.c b/sysdeps/ieee754/dbl-64/s_tanh.c
index 944f96386f..944f96386f 100644
--- a/sysdeps/libm-ieee754/s_tanh.c
+++ b/sysdeps/ieee754/dbl-64/s_tanh.c
diff --git a/sysdeps/libm-ieee754/s_trunc.c b/sysdeps/ieee754/dbl-64/s_trunc.c
index 07b4951bcb..07b4951bcb 100644
--- a/sysdeps/libm-ieee754/s_trunc.c
+++ b/sysdeps/ieee754/dbl-64/s_trunc.c
diff --git a/sysdeps/libm-ieee754/t_exp.c b/sysdeps/ieee754/dbl-64/t_exp.c
index b02b4f55ca..b02b4f55ca 100644
--- a/sysdeps/libm-ieee754/t_exp.c
+++ b/sysdeps/ieee754/dbl-64/t_exp.c
diff --git a/sysdeps/libm-ieee754/t_exp2.h b/sysdeps/ieee754/dbl-64/t_exp2.h
index 1fd73338cf..1fd73338cf 100644
--- a/sysdeps/libm-ieee754/t_exp2.h
+++ b/sysdeps/ieee754/dbl-64/t_exp2.h
diff --git a/sysdeps/libm-ieee754/w_exp.c b/sysdeps/ieee754/dbl-64/w_exp.c
index 445c5788d2..445c5788d2 100644
--- a/sysdeps/libm-ieee754/w_exp.c
+++ b/sysdeps/ieee754/dbl-64/w_exp.c
diff --git a/sysdeps/libm-ieee754/Dist b/sysdeps/ieee754/flt-32/Dist
index 4b085470f5..045ac801f6 100644
--- a/sysdeps/libm-ieee754/Dist
+++ b/sysdeps/ieee754/flt-32/Dist
@@ -1,2 +1 @@
-t_exp2.h
 t_exp2f.h
diff --git a/sysdeps/libm-ieee754/e_acosf.c b/sysdeps/ieee754/flt-32/e_acosf.c
index 0d85c4210d..0d85c4210d 100644
--- a/sysdeps/libm-ieee754/e_acosf.c
+++ b/sysdeps/ieee754/flt-32/e_acosf.c
diff --git a/sysdeps/libm-ieee754/e_acoshf.c b/sysdeps/ieee754/flt-32/e_acoshf.c
index c607f72117..c607f72117 100644
--- a/sysdeps/libm-ieee754/e_acoshf.c
+++ b/sysdeps/ieee754/flt-32/e_acoshf.c
diff --git a/sysdeps/libm-ieee754/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
index 5270f31144..5270f31144 100644
--- a/sysdeps/libm-ieee754/e_asinf.c
+++ b/sysdeps/ieee754/flt-32/e_asinf.c
diff --git a/sysdeps/libm-ieee754/e_atan2f.c b/sysdeps/ieee754/flt-32/e_atan2f.c
index 8b3398c0a3..8b3398c0a3 100644
--- a/sysdeps/libm-ieee754/e_atan2f.c
+++ b/sysdeps/ieee754/flt-32/e_atan2f.c
diff --git a/sysdeps/libm-ieee754/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
index f26a15bbc1..f26a15bbc1 100644
--- a/sysdeps/libm-ieee754/e_atanhf.c
+++ b/sysdeps/ieee754/flt-32/e_atanhf.c
diff --git a/sysdeps/libm-ieee754/e_coshf.c b/sysdeps/ieee754/flt-32/e_coshf.c
index 223fbeea20..223fbeea20 100644
--- a/sysdeps/libm-ieee754/e_coshf.c
+++ b/sysdeps/ieee754/flt-32/e_coshf.c
diff --git a/sysdeps/libm-ieee754/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c
index e8a9c9d874..e8a9c9d874 100644
--- a/sysdeps/libm-ieee754/e_expf.c
+++ b/sysdeps/ieee754/flt-32/e_expf.c
diff --git a/sysdeps/libm-ieee754/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index 47b312392c..47b312392c 100644
--- a/sysdeps/libm-ieee754/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
diff --git a/sysdeps/libm-ieee754/e_gammaf_r.c b/sysdeps/ieee754/flt-32/e_gammaf_r.c
index 926905e7cd..926905e7cd 100644
--- a/sysdeps/libm-ieee754/e_gammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_gammaf_r.c
diff --git a/sysdeps/libm-ieee754/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c
index d6b1520cb8..d6b1520cb8 100644
--- a/sysdeps/libm-ieee754/e_hypotf.c
+++ b/sysdeps/ieee754/flt-32/e_hypotf.c
diff --git a/sysdeps/libm-ieee754/e_j0f.c b/sysdeps/ieee754/flt-32/e_j0f.c
index eed171cc90..eed171cc90 100644
--- a/sysdeps/libm-ieee754/e_j0f.c
+++ b/sysdeps/ieee754/flt-32/e_j0f.c
diff --git a/sysdeps/libm-ieee754/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
index e6f14a16ac..e6f14a16ac 100644
--- a/sysdeps/libm-ieee754/e_j1f.c
+++ b/sysdeps/ieee754/flt-32/e_j1f.c
diff --git a/sysdeps/libm-ieee754/e_jnf.c b/sysdeps/ieee754/flt-32/e_jnf.c
index 9e5279c30a..9e5279c30a 100644
--- a/sysdeps/libm-ieee754/e_jnf.c
+++ b/sysdeps/ieee754/flt-32/e_jnf.c
diff --git a/sysdeps/libm-ieee754/e_lgammaf_r.c b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
index f744d5320e..f744d5320e 100644
--- a/sysdeps/libm-ieee754/e_lgammaf_r.c
+++ b/sysdeps/ieee754/flt-32/e_lgammaf_r.c
diff --git a/sysdeps/libm-ieee754/e_log10f.c b/sysdeps/ieee754/flt-32/e_log10f.c
index cea3d9156b..cea3d9156b 100644
--- a/sysdeps/libm-ieee754/e_log10f.c
+++ b/sysdeps/ieee754/flt-32/e_log10f.c
diff --git a/sysdeps/libm-ieee754/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c
index de8f869df4..de8f869df4 100644
--- a/sysdeps/libm-ieee754/e_logf.c
+++ b/sysdeps/ieee754/flt-32/e_logf.c
diff --git a/sysdeps/libm-ieee754/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c
index 4798340c84..4798340c84 100644
--- a/sysdeps/libm-ieee754/e_powf.c
+++ b/sysdeps/ieee754/flt-32/e_powf.c
diff --git a/sysdeps/libm-ieee754/e_rem_pio2f.c b/sysdeps/ieee754/flt-32/e_rem_pio2f.c
index 4b8c4466bd..4b8c4466bd 100644
--- a/sysdeps/libm-ieee754/e_rem_pio2f.c
+++ b/sysdeps/ieee754/flt-32/e_rem_pio2f.c
diff --git a/sysdeps/libm-ieee754/e_remainderf.c b/sysdeps/ieee754/flt-32/e_remainderf.c
index 90d0d366d4..90d0d366d4 100644
--- a/sysdeps/libm-ieee754/e_remainderf.c
+++ b/sysdeps/ieee754/flt-32/e_remainderf.c
diff --git a/sysdeps/libm-ieee754/e_sinhf.c b/sysdeps/ieee754/flt-32/e_sinhf.c
index 045f6f121e..045f6f121e 100644
--- a/sysdeps/libm-ieee754/e_sinhf.c
+++ b/sysdeps/ieee754/flt-32/e_sinhf.c
diff --git a/sysdeps/libm-ieee754/e_sqrtf.c b/sysdeps/ieee754/flt-32/e_sqrtf.c
index 7648ef4bca..7648ef4bca 100644
--- a/sysdeps/libm-ieee754/e_sqrtf.c
+++ b/sysdeps/ieee754/flt-32/e_sqrtf.c
diff --git a/sysdeps/libm-ieee754/k_cosf.c b/sysdeps/ieee754/flt-32/k_cosf.c
index b232cab11f..b232cab11f 100644
--- a/sysdeps/libm-ieee754/k_cosf.c
+++ b/sysdeps/ieee754/flt-32/k_cosf.c
diff --git a/sysdeps/libm-ieee754/k_rem_pio2f.c b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
index 2783480fcb..2783480fcb 100644
--- a/sysdeps/libm-ieee754/k_rem_pio2f.c
+++ b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
diff --git a/sysdeps/libm-ieee754/k_sinf.c b/sysdeps/ieee754/flt-32/k_sinf.c
index 4fec15e830..4fec15e830 100644
--- a/sysdeps/libm-ieee754/k_sinf.c
+++ b/sysdeps/ieee754/flt-32/k_sinf.c
diff --git a/sysdeps/libm-ieee754/k_tanf.c b/sysdeps/ieee754/flt-32/k_tanf.c
index eb1a670939..eb1a670939 100644
--- a/sysdeps/libm-ieee754/k_tanf.c
+++ b/sysdeps/ieee754/flt-32/k_tanf.c
diff --git a/sysdeps/ieee754/mpn2flt.c b/sysdeps/ieee754/flt-32/mpn2flt.c
index a409b456b0..a409b456b0 100644
--- a/sysdeps/ieee754/mpn2flt.c
+++ b/sysdeps/ieee754/flt-32/mpn2flt.c
diff --git a/sysdeps/libm-ieee754/s_asinhf.c b/sysdeps/ieee754/flt-32/s_asinhf.c
index fac256d37a..fac256d37a 100644
--- a/sysdeps/libm-ieee754/s_asinhf.c
+++ b/sysdeps/ieee754/flt-32/s_asinhf.c
diff --git a/sysdeps/libm-ieee754/s_atanf.c b/sysdeps/ieee754/flt-32/s_atanf.c
index a68933fa6a..a68933fa6a 100644
--- a/sysdeps/libm-ieee754/s_atanf.c
+++ b/sysdeps/ieee754/flt-32/s_atanf.c
diff --git a/sysdeps/libm-ieee754/s_cbrtf.c b/sysdeps/ieee754/flt-32/s_cbrtf.c
index fa0fef9987..fa0fef9987 100644
--- a/sysdeps/libm-ieee754/s_cbrtf.c
+++ b/sysdeps/ieee754/flt-32/s_cbrtf.c
diff --git a/sysdeps/libm-ieee754/s_ceilf.c b/sysdeps/ieee754/flt-32/s_ceilf.c
index 29ccadb049..29ccadb049 100644
--- a/sysdeps/libm-ieee754/s_ceilf.c
+++ b/sysdeps/ieee754/flt-32/s_ceilf.c
diff --git a/sysdeps/libm-ieee754/s_copysignf.c b/sysdeps/ieee754/flt-32/s_copysignf.c
index a4e84e5397..a4e84e5397 100644
--- a/sysdeps/libm-ieee754/s_copysignf.c
+++ b/sysdeps/ieee754/flt-32/s_copysignf.c
diff --git a/sysdeps/libm-ieee754/s_cosf.c b/sysdeps/ieee754/flt-32/s_cosf.c
index 86c59d440c..86c59d440c 100644
--- a/sysdeps/libm-ieee754/s_cosf.c
+++ b/sysdeps/ieee754/flt-32/s_cosf.c
diff --git a/sysdeps/libm-ieee754/s_erff.c b/sysdeps/ieee754/flt-32/s_erff.c
index 774714cfd1..774714cfd1 100644
--- a/sysdeps/libm-ieee754/s_erff.c
+++ b/sysdeps/ieee754/flt-32/s_erff.c
diff --git a/sysdeps/libm-ieee754/s_exp2f.c b/sysdeps/ieee754/flt-32/s_exp2f.c
index 8229885453..8229885453 100644
--- a/sysdeps/libm-ieee754/s_exp2f.c
+++ b/sysdeps/ieee754/flt-32/s_exp2f.c
diff --git a/sysdeps/libm-ieee754/s_expm1f.c b/sysdeps/ieee754/flt-32/s_expm1f.c
index 375e334c38..375e334c38 100644
--- a/sysdeps/libm-ieee754/s_expm1f.c
+++ b/sysdeps/ieee754/flt-32/s_expm1f.c
diff --git a/sysdeps/libm-ieee754/s_fabsf.c b/sysdeps/ieee754/flt-32/s_fabsf.c
index 6b1451379f..6b1451379f 100644
--- a/sysdeps/libm-ieee754/s_fabsf.c
+++ b/sysdeps/ieee754/flt-32/s_fabsf.c
diff --git a/sysdeps/libm-ieee754/s_finitef.c b/sysdeps/ieee754/flt-32/s_finitef.c
index baafc31aec..baafc31aec 100644
--- a/sysdeps/libm-ieee754/s_finitef.c
+++ b/sysdeps/ieee754/flt-32/s_finitef.c
diff --git a/sysdeps/libm-ieee754/s_floorf.c b/sysdeps/ieee754/flt-32/s_floorf.c
index e8822b0884..e8822b0884 100644
--- a/sysdeps/libm-ieee754/s_floorf.c
+++ b/sysdeps/ieee754/flt-32/s_floorf.c
diff --git a/sysdeps/libm-ieee754/s_fpclassifyf.c b/sysdeps/ieee754/flt-32/s_fpclassifyf.c
index a6b35cfe1b..a6b35cfe1b 100644
--- a/sysdeps/libm-ieee754/s_fpclassifyf.c
+++ b/sysdeps/ieee754/flt-32/s_fpclassifyf.c
diff --git a/sysdeps/libm-ieee754/s_frexpf.c b/sysdeps/ieee754/flt-32/s_frexpf.c
index a984457a87..a984457a87 100644
--- a/sysdeps/libm-ieee754/s_frexpf.c
+++ b/sysdeps/ieee754/flt-32/s_frexpf.c
diff --git a/sysdeps/libm-ieee754/s_ilogbf.c b/sysdeps/ieee754/flt-32/s_ilogbf.c
index e652b93619..e652b93619 100644
--- a/sysdeps/libm-ieee754/s_ilogbf.c
+++ b/sysdeps/ieee754/flt-32/s_ilogbf.c
diff --git a/sysdeps/libm-ieee754/s_isinff.c b/sysdeps/ieee754/flt-32/s_isinff.c
index efc0935251..efc0935251 100644
--- a/sysdeps/libm-ieee754/s_isinff.c
+++ b/sysdeps/ieee754/flt-32/s_isinff.c
diff --git a/sysdeps/libm-ieee754/s_isnanf.c b/sysdeps/ieee754/flt-32/s_isnanf.c
index 9ec412fd66..9ec412fd66 100644
--- a/sysdeps/libm-ieee754/s_isnanf.c
+++ b/sysdeps/ieee754/flt-32/s_isnanf.c
diff --git a/sysdeps/libm-ieee754/s_llrintf.c b/sysdeps/ieee754/flt-32/s_llrintf.c
index a812377d19..a812377d19 100644
--- a/sysdeps/libm-ieee754/s_llrintf.c
+++ b/sysdeps/ieee754/flt-32/s_llrintf.c
diff --git a/sysdeps/libm-ieee754/s_llroundf.c b/sysdeps/ieee754/flt-32/s_llroundf.c
index 9aad81fd45..9aad81fd45 100644
--- a/sysdeps/libm-ieee754/s_llroundf.c
+++ b/sysdeps/ieee754/flt-32/s_llroundf.c
diff --git a/sysdeps/libm-ieee754/s_log1pf.c b/sysdeps/ieee754/flt-32/s_log1pf.c
index bd3d57635c..bd3d57635c 100644
--- a/sysdeps/libm-ieee754/s_log1pf.c
+++ b/sysdeps/ieee754/flt-32/s_log1pf.c
diff --git a/sysdeps/libm-ieee754/s_log2f.c b/sysdeps/ieee754/flt-32/s_log2f.c
index 2377acd36a..2377acd36a 100644
--- a/sysdeps/libm-ieee754/s_log2f.c
+++ b/sysdeps/ieee754/flt-32/s_log2f.c
diff --git a/sysdeps/libm-ieee754/s_logbf.c b/sysdeps/ieee754/flt-32/s_logbf.c
index ade892a8f9..ade892a8f9 100644
--- a/sysdeps/libm-ieee754/s_logbf.c
+++ b/sysdeps/ieee754/flt-32/s_logbf.c
diff --git a/sysdeps/libm-ieee754/s_lrintf.c b/sysdeps/ieee754/flt-32/s_lrintf.c
index 210ffec501..210ffec501 100644
--- a/sysdeps/libm-ieee754/s_lrintf.c
+++ b/sysdeps/ieee754/flt-32/s_lrintf.c
diff --git a/sysdeps/libm-ieee754/s_lroundf.c b/sysdeps/ieee754/flt-32/s_lroundf.c
index df1d242e2a..df1d242e2a 100644
--- a/sysdeps/libm-ieee754/s_lroundf.c
+++ b/sysdeps/ieee754/flt-32/s_lroundf.c
diff --git a/sysdeps/libm-ieee754/s_modff.c b/sysdeps/ieee754/flt-32/s_modff.c
index e6c22b2add..e6c22b2add 100644
--- a/sysdeps/libm-ieee754/s_modff.c
+++ b/sysdeps/ieee754/flt-32/s_modff.c
diff --git a/sysdeps/libm-ieee754/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c
index 7d6f262f51..7d6f262f51 100644
--- a/sysdeps/libm-ieee754/s_nearbyintf.c
+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c
diff --git a/sysdeps/libm-ieee754/s_nextafterf.c b/sysdeps/ieee754/flt-32/s_nextafterf.c
index 611742bdf4..611742bdf4 100644
--- a/sysdeps/libm-ieee754/s_nextafterf.c
+++ b/sysdeps/ieee754/flt-32/s_nextafterf.c
diff --git a/sysdeps/libm-ieee754/s_remquof.c b/sysdeps/ieee754/flt-32/s_remquof.c
index 2ffd16c903..2ffd16c903 100644
--- a/sysdeps/libm-ieee754/s_remquof.c
+++ b/sysdeps/ieee754/flt-32/s_remquof.c
diff --git a/sysdeps/libm-ieee754/s_rintf.c b/sysdeps/ieee754/flt-32/s_rintf.c
index 4e5b409b29..4e5b409b29 100644
--- a/sysdeps/libm-ieee754/s_rintf.c
+++ b/sysdeps/ieee754/flt-32/s_rintf.c
diff --git a/sysdeps/libm-ieee754/s_roundf.c b/sysdeps/ieee754/flt-32/s_roundf.c
index 5dc0e368ff..5dc0e368ff 100644
--- a/sysdeps/libm-ieee754/s_roundf.c
+++ b/sysdeps/ieee754/flt-32/s_roundf.c
diff --git a/sysdeps/libm-ieee754/s_scalblnf.c b/sysdeps/ieee754/flt-32/s_scalblnf.c
index 4ed48733cf..4ed48733cf 100644
--- a/sysdeps/libm-ieee754/s_scalblnf.c
+++ b/sysdeps/ieee754/flt-32/s_scalblnf.c
diff --git a/sysdeps/libm-ieee754/s_scalbnf.c b/sysdeps/ieee754/flt-32/s_scalbnf.c
index 11b77bd6c2..11b77bd6c2 100644
--- a/sysdeps/libm-ieee754/s_scalbnf.c
+++ b/sysdeps/ieee754/flt-32/s_scalbnf.c
diff --git a/sysdeps/libm-ieee754/s_signbitf.c b/sysdeps/ieee754/flt-32/s_signbitf.c
index 85418ea73f..85418ea73f 100644
--- a/sysdeps/libm-ieee754/s_signbitf.c
+++ b/sysdeps/ieee754/flt-32/s_signbitf.c
diff --git a/sysdeps/libm-ieee754/s_sincosf.c b/sysdeps/ieee754/flt-32/s_sincosf.c
index 0fd7b0ca8b..0fd7b0ca8b 100644
--- a/sysdeps/libm-ieee754/s_sincosf.c
+++ b/sysdeps/ieee754/flt-32/s_sincosf.c
diff --git a/sysdeps/libm-ieee754/s_sinf.c b/sysdeps/ieee754/flt-32/s_sinf.c
index 76a7c21fcb..76a7c21fcb 100644
--- a/sysdeps/libm-ieee754/s_sinf.c
+++ b/sysdeps/ieee754/flt-32/s_sinf.c
diff --git a/sysdeps/libm-ieee754/s_tanf.c b/sysdeps/ieee754/flt-32/s_tanf.c
index e8f6016c32..e8f6016c32 100644
--- a/sysdeps/libm-ieee754/s_tanf.c
+++ b/sysdeps/ieee754/flt-32/s_tanf.c
diff --git a/sysdeps/libm-ieee754/s_tanhf.c b/sysdeps/ieee754/flt-32/s_tanhf.c
index 2a0ca9f3df..2a0ca9f3df 100644
--- a/sysdeps/libm-ieee754/s_tanhf.c
+++ b/sysdeps/ieee754/flt-32/s_tanhf.c
diff --git a/sysdeps/libm-ieee754/s_truncf.c b/sysdeps/ieee754/flt-32/s_truncf.c
index feb6b6f23a..feb6b6f23a 100644
--- a/sysdeps/libm-ieee754/s_truncf.c
+++ b/sysdeps/ieee754/flt-32/s_truncf.c
diff --git a/sysdeps/libm-ieee754/t_exp2f.h b/sysdeps/ieee754/flt-32/t_exp2f.h
index e15d15787c..e15d15787c 100644
--- a/sysdeps/libm-ieee754/t_exp2f.h
+++ b/sysdeps/ieee754/flt-32/t_exp2f.h
diff --git a/sysdeps/libm-ieee754/w_expf.c b/sysdeps/ieee754/flt-32/w_expf.c
index ad38fac0f3..ad38fac0f3 100644
--- a/sysdeps/libm-ieee754/w_expf.c
+++ b/sysdeps/ieee754/flt-32/w_expf.c
diff --git a/sysdeps/libm-ieee754/k_standard.c b/sysdeps/ieee754/k_standard.c
index 22300652e9..22300652e9 100644
--- a/sysdeps/libm-ieee754/k_standard.c
+++ b/sysdeps/ieee754/k_standard.c
diff --git a/sysdeps/ieee754/ldbl-128/e_acoshl.c b/sysdeps/ieee754/ldbl-128/e_acoshl.c
new file mode 100644
index 0000000000..7f7934025a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/e_acoshl.c
@@ -0,0 +1,68 @@
+/* e_acoshl.c -- long double version of e_acosh.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_acoshl(x)
+ * Method :
+ *	Based on
+ *		acoshl(x) = logl [ x + sqrtl(x*x-1) ]
+ *	we have
+ *		acoshl(x) := logl(x)+ln2,	if x is large; else
+ *		acoshl(x) := logl(2x-1/(sqrtl(x*x-1)+x)) if x>2; else
+ *		acoshl(x) := log1pl(t+sqrtl(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ *	acoshl(x) is NaN with signal if x<1.
+ *	acoshl(NaN) is NaN without signal.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+one	= 1.0,
+ln2	= 0.6931471805599453094172321214581766L;
+
+#ifdef __STDC__
+	long double __ieee754_acoshl(long double x)
+#else
+	long double __ieee754_acoshl(x)
+	long double x;
+#endif
+{
+	long double t;
+	u_int64_t lx;
+	int64_t hx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	if(hx<0x3fff000000000000LL) {		/* x < 1 */
+	    return (x-x)/(x-x);
+	} else if(hx >=0x401b000000000000LL) {	/* x > 2**28 */
+	    if(hx >=0x7fff000000000000LL) {	/* x is inf of NaN */
+	        return x+x;
+	    } else
+		return __ieee754_logl(x)+ln2;	/* acoshl(huge)=logl(2x) */
+	} else if(((hx-0x3fff000000000000LL)|lx)==0) {
+	    return 0.0L;			/* acosh(1) = 0 */
+	} else if (hx > 0x4000000000000000LL) {	/* 2**28 > x > 2 */
+	    t=x*x;
+	    return __ieee754_logl(2.0L*x-one/(x+__ieee754_sqrtl(t-one)));
+	} else {			/* 1<x<2 */
+	    t = x-one;
+	    return __log1pl(t+__sqrtl(2.0L*t+t*t));
+	}
+}
diff --git a/sysdeps/ieee754/ldbl-128/e_atan2l.c b/sysdeps/ieee754/ldbl-128/e_atan2l.c
new file mode 100644
index 0000000000..2e081d3bab
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/e_atan2l.c
@@ -0,0 +1,129 @@
+/* e_atan2l.c -- long double version of e_atan2.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_atan2l(y,x)
+ * Method :
+ *	1. Reduce y to positive by atan2l(y,x)=-atan2l(-y,x).
+ *	2. Reduce x to positive by (if x and y are unexceptional):
+ *		ARG (x+iy) = arctan(y/x)   	   ... if x > 0,
+ *		ARG (x+iy) = pi - arctan[y/(-x)]   ... if x < 0,
+ *
+ * Special cases:
+ *
+ *	ATAN2((anything), NaN ) is NaN;
+ *	ATAN2(NAN , (anything) ) is NaN;
+ *	ATAN2(+-0, +(anything but NaN)) is +-0  ;
+ *	ATAN2(+-0, -(anything but NaN)) is +-pi ;
+ *	ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2;
+ *	ATAN2(+-(anything but INF and NaN), +INF) is +-0 ;
+ *	ATAN2(+-(anything but INF and NaN), -INF) is +-pi;
+ *	ATAN2(+-INF,+INF ) is +-pi/4 ;
+ *	ATAN2(+-INF,-INF ) is +-3pi/4;
+ *	ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2;
+ *
+ * Constants:
+ * The hexadecimal values are the intended ones for the following
+ * constants. The decimal values may be used, provided that the
+ * compiler will convert from decimal to binary accurately enough
+ * to produce the hexadecimal values shown.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+tiny  = 1.0e-4900L,
+zero  = 0.0,
+pi_o_4  = 7.85398163397448309615660845819875699e-01L, /* 3ffe921fb54442d18469898cc51701b8 */
+pi_o_2  = 1.57079632679489661923132169163975140e+00L, /* 3fff921fb54442d18469898cc51701b8 */
+pi      = 3.14159265358979323846264338327950280e+00L, /* 4000921fb54442d18469898cc51701b8 */
+pi_lo   = 8.67181013012378102479704402604335225e-35L; /* 3f8dcd129024e088a67cc74020bbea64 */
+
+#ifdef __STDC__
+	long double __ieee754_atan2l(long double y, long double x)
+#else
+	long double __ieee754_atan2l(y,x)
+	long double  y,x;
+#endif
+{
+	long double z;
+	int64_t k,m,hx,hy,ix,iy;
+	u_int64_t lx,ly;
+
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	ix = hx&0x7fffffffffffffffLL;
+	GET_LDOUBLE_WORDS64(hy,ly,y);
+	iy = hy&0x7fffffffffffffffLL;
+	if(((ix|((lx|-lx)>>63))>0x7fff000000000000LL)||
+	   ((iy|((ly|-ly)>>63))>0x7fff000000000000LL))	/* x or y is NaN */
+	   return x+y;
+	if((hx-0x3fff000000000000LL|lx)==0) return __atanl(y);   /* x=1.0L */
+	m = ((hy>>63)&1)|((hx>>62)&2);	/* 2*sign(x)+sign(y) */
+
+    /* when y = 0 */
+	if((iy|ly)==0) {
+	    switch(m) {
+		case 0:
+		case 1: return y; 	/* atan(+-0,+anything)=+-0 */
+		case 2: return  pi+tiny;/* atan(+0,-anything) = pi */
+		case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */
+	    }
+	}
+    /* when x = 0 */
+	if((ix|lx)==0) return (hy<0)?  -pi_o_2-tiny: pi_o_2+tiny;
+
+    /* when x is INF */
+	if(ix==0x7fff000000000000LL) {
+	    if(iy==0x7fff000000000000LL) {
+		switch(m) {
+		    case 0: return  pi_o_4+tiny;/* atan(+INF,+INF) */
+		    case 1: return -pi_o_4-tiny;/* atan(-INF,+INF) */
+		    case 2: return  3.0L*pi_o_4+tiny;/*atan(+INF,-INF)*/
+		    case 3: return -3.0L*pi_o_4-tiny;/*atan(-INF,-INF)*/
+		}
+	    } else {
+		switch(m) {
+		    case 0: return  zero  ;	/* atan(+...,+INF) */
+		    case 1: return -zero  ;	/* atan(-...,+INF) */
+		    case 2: return  pi+tiny  ;	/* atan(+...,-INF) */
+		    case 3: return -pi-tiny  ;	/* atan(-...,-INF) */
+		}
+	    }
+	}
+    /* when y is INF */
+	if(iy==0x7fff000000000000LL) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
+
+    /* compute y/x */
+	k = (iy-ix)>>48;
+	if(k > 120) z=pi_o_2+0.5L*pi_lo; 	/* |y/x| >  2**120 */
+	else if(hx<0&&k<-120) z=0.0L; 		/* |y|/x < -2**120 */
+	else z=__atanl(fabsl(y/x));		/* safe to do y/x */
+	switch (m) {
+	    case 0: return       z  ;	/* atan(+,+) */
+	    case 1: {
+	    	      u_int64_t zh;
+		      GET_LDOUBLE_MSW64(zh,z);
+		      SET_LDOUBLE_MSW64(z,zh ^ 0x8000000000000000ULL);
+		    }
+		    return       z  ;	/* atan(-,+) */
+	    case 2: return  pi-(z-pi_lo);/* atan(+,-) */
+	    default: /* case 3 */
+	    	    return  (z-pi_lo)-pi;/* atan(-,-) */
+	}
+}
diff --git a/sysdeps/ieee754/ldbl-128/e_fmodl.c b/sysdeps/ieee754/ldbl-128/e_fmodl.c
new file mode 100644
index 0000000000..1043f69cb3
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/e_fmodl.c
@@ -0,0 +1,138 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice 
+ * is preserved.
+ * ====================================================
+ */
+
+/* 
+ * __ieee754_fmodl(x,y)
+ * Return x mod y in exact arithmetic
+ * Method: shift and subtract
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double one = 1.0, Zero[] = {0.0, -0.0,};
+#else
+static long double one = 1.0, Zero[] = {0.0, -0.0,};
+#endif
+
+#ifdef __STDC__
+	long double __ieee754_fmodl(long double x, long double y)
+#else
+	long double __ieee754_fmodl(x,y)
+	long double x,y;
+#endif
+{
+	int64_t n,hx,hy,hz,ix,iy,sx,i;
+	u_int64_t lx,ly,lz;
+
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	GET_LDOUBLE_WORDS64(hy,ly,y);
+	sx = hx&0x8000000000000000ULL;		/* sign of x */
+	hx ^=sx;				/* |x| */
+	hy &= 0x7fffffffffffffffLL;		/* |y| */
+
+    /* purge off exception values */
+	if((hy|ly)==0||(hx>=0x7fff000000000000LL)|| /* y=0,or x not finite */
+	  ((hy|((ly|-ly)>>63))>0x7fff000000000000LL))	/* or y is NaN */
+	    return (x*y)/(x*y);
+	if(hx<=hy) {
+	    if((hx<hy)||(lx<ly)) return x;	/* |x|<|y| return x */
+	    if(lx==ly) 
+		return Zero[(u_int64_t)sx>>63];	/* |x|=|y| return x*0*/
+	}
+
+    /* determine ix = ilogb(x) */
+	if(hx<0x0001000000000000LL) {	/* subnormal x */
+	    if(hx==0) {
+		for (ix = -16431, i=lx; i>0; i<<=1) ix -=1;
+	    } else {
+		for (ix = -16382, i=hx<<15; i>0; i<<=1) ix -=1;
+	    }
+	} else ix = (hx>>48)-0x3fff;
+
+    /* determine iy = ilogb(y) */
+	if(hy<0x0001000000000000LL) {	/* subnormal y */
+	    if(hy==0) {
+		for (iy = -16431, i=ly; i>0; i<<=1) iy -=1;
+	    } else {
+		for (iy = -16382, i=hy<<15; i>0; i<<=1) iy -=1;
+	    }
+	} else iy = (hy>>48)-0x3fff;
+
+    /* set up {hx,lx}, {hy,ly} and align y to x */
+	if(ix >= -16382) 
+	    hx = 0x0001000000000000LL|(0x0000ffffffffffffLL&hx);
+	else {		/* subnormal x, shift x to normal */
+	    n = -16382-ix;
+	    if(n<=63) {
+	        hx = (hx<<n)|(lx>>(64-n));
+	        lx <<= n;
+	    } else {
+		hx = lx<<(n-64);
+		lx = 0;
+	    }
+	}
+	if(iy >= -16382) 
+	    hy = 0x0001000000000000LL|(0x0000ffffffffffffLL&hy);
+	else {		/* subnormal y, shift y to normal */
+	    n = -16382-iy;
+	    if(n<=63) {
+	        hy = (hy<<n)|(ly>>(64-n));
+	        ly <<= n;
+	    } else {
+		hy = ly<<(n-64);
+		ly = 0;
+	    }
+	}
+
+    /* fix point fmod */
+	n = ix - iy;
+	while(n--) {
+	    hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+	    if(hz<0){hx = hx+hx+(lx>>63); lx = lx+lx;}
+	    else {
+	    	if((hz|lz)==0) 		/* return sign(x)*0 */
+		    return Zero[(u_int64_t)sx>>63];
+	    	hx = hz+hz+(lz>>63); lx = lz+lz;
+	    }
+	}
+	hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
+	if(hz>=0) {hx=hz;lx=lz;}
+
+    /* convert back to floating value and restore the sign */
+	if((hx|lx)==0) 			/* return sign(x)*0 */
+	    return Zero[(u_int64_t)sx>>63];	
+	while(hx<0x0001000000000000LL) {	/* normalize x */
+	    hx = hx+hx+(lx>>63); lx = lx+lx;
+	    iy -= 1;
+	}
+	if(iy>= -16382) {	/* normalize output */
+	    hx = ((hx-0x0001000000000000LL)|((iy+16383)<<48));
+	    SET_LDOUBLE_WORDS64(x,hx|sx,lx);
+	} else {		/* subnormal output */
+	    n = -16382 - iy;
+	    if(n<=48) {
+		lx = (lx>>n)|((u_int64_t)hx<<(64-n));
+		hx >>= n;
+	    } else if (n<=63) {
+		lx = (hx<<(64-n))|(lx>>n); hx = sx;
+	    } else {
+		lx = hx>>(n-64); hx = sx;
+	    }
+	    SET_LDOUBLE_WORDS64(x,hx|sx,lx);
+	    x *= one;		/* create necessary signal */
+	}
+	return x;		/* exact output */
+}
diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
new file mode 100644
index 0000000000..f77350fa5c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c
@@ -0,0 +1,52 @@
+/* Implementation of gamma function according to ISO C.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+#include <math_private.h>
+
+
+long double
+__ieee754_gammal_r (long double x, int *signgamp)
+{
+  /* We don't have a real gamma implementation now.  We'll use lgamma
+     and the exp function.  But due to the required boundary
+     conditions we must check some values separately.  */
+  int64_t hx;
+  u_int64_t lx;
+
+  GET_LDOUBLE_WORDS64 (hx, lx, x);
+
+  if (((hx & 0x7fffffffffffffffLL) | lx) == 0)
+    {
+      /* Return value for x == 0 is NaN with invalid exception.  */
+      *signgamp = 0;
+      return x / x;
+    }
+  if (hx < 0 && (u_int64_t) hx < 0xffff000000000000ULL && __rintl (x) == x)
+    {
+      /* Return value for integer x < 0 is NaN with invalid exception.  */
+      *signgamp = 0;
+      return (x - x) / (x - x);
+    }
+
+  /* XXX FIXME.  */
+  return __ieee754_expl (__ieee754_lgammal_r (x, signgamp));
+}
diff --git a/sysdeps/ieee754/ldbl-128/e_remainderl.c b/sysdeps/ieee754/ldbl-128/e_remainderl.c
new file mode 100644
index 0000000000..81af247b33
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/e_remainderl.c
@@ -0,0 +1,78 @@
+/* e_fmodl.c -- long double version of e_fmod.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice 
+ * is preserved.
+ * ====================================================
+ */
+
+/* __ieee754_remainderl(x,p)
+ * Return :                  
+ * 	returns  x REM p  =  x - [x/p]*p as if in infinite 
+ * 	precise arithmetic, where [x/p] is the (infinite bit) 
+ *	integer nearest x/p (in half way case choose the even one).
+ * Method : 
+ *	Based on fmodl() return x-[x/p]chopped*p exactlp.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double zero = 0.0L;
+#else
+static long double zero = 0.0L;
+#endif
+
+
+#ifdef __STDC__
+	long double __ieee754_remainderl(long double x, long double p)
+#else
+	long double __ieee754_remainderl(x,p)
+	long double x,p;
+#endif
+{
+	int64_t hx,hp;
+	u_int64_t sx,lx,lp;
+	long double p_half;
+
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	GET_LDOUBLE_WORDS64(hp,lp,p);
+	sx = hx&0x8000000000000000ULL;
+	hp &= 0x7fffffffffffffffLL;
+	hx &= 0x7fffffffffffffffLL;
+
+    /* purge off exception values */
+	if((hp|lp)==0) return (x*p)/(x*p); 	/* p = 0 */
+	if((hx>=0x7fff000000000000LL)||			/* x not finite */
+	  ((hp>=0x7fff000000000000LL)&&			/* p is NaN */
+	  (((hp-0x7fff000000000000LL)|lp)!=0)))
+	    return (x*p)/(x*p);
+
+
+	if (hp<=0x7ffdffffffffffffLL) x = __ieee754_fmodl(x,p+p);	/* now x < 2p */
+	if (((hx-hp)|(lx-lp))==0) return zero*x;
+	x  = fabsl(x);
+	p  = fabsl(p);
+	if (hp<0x0002000000000000LL) {
+	    if(x+x>p) {
+		x-=p;
+		if(x+x>=p) x -= p;
+	    }
+	} else {
+	    p_half = 0.5L*p;
+	    if(x>p_half) {
+		x-=p;
+		if(x>=p_half) x -= p;
+	    }
+	}
+	GET_LDOUBLE_MSW64(hx,x);
+	SET_LDOUBLE_MSW64(x,hx^sx);
+	return x;
+}
diff --git a/sysdeps/ieee754/ldbl-128/ieee754.h b/sysdeps/ieee754/ldbl-128/ieee754.h
new file mode 100644
index 0000000000..c3b2f38916
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/ieee754.h
@@ -0,0 +1,171 @@
+/* Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _IEEE754_H
+
+#define _IEEE754_H 1
+#include <features.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+union ieee754_float
+  {
+    float f;
+
+    /* This is the IEEE 754 single-precision format.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:8;
+	unsigned int mantissa:23;
+#endif				/* Big endian.  */
+#if	__BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int mantissa:23;
+	unsigned int exponent:8;
+	unsigned int negative:1;
+#endif				/* Little endian.  */
+      } ieee;
+
+    /* This format makes it easier to see if a NaN is a signalling NaN.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:8;
+	unsigned int quiet_nan:1;
+	unsigned int mantissa:22;
+#endif				/* Big endian.  */
+#if	__BYTE_ORDER == __LITTLE_ENDIAN
+	unsigned int mantissa:22;
+	unsigned int quiet_nan:1;
+	unsigned int exponent:8;
+	unsigned int negative:1;
+#endif				/* Little endian.  */
+      } ieee_nan;
+  };
+
+#define IEEE754_FLOAT_BIAS	0x7f /* Added to exponent.  */
+
+
+union ieee754_double
+  {
+    double d;
+
+    /* This is the IEEE 754 double-precision format.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:11;
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa0:20;
+	unsigned int mantissa1:32;
+#endif				/* Big endian.  */
+#if	__BYTE_ORDER == __LITTLE_ENDIAN
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa1:32;
+	unsigned int mantissa0:20;
+	unsigned int exponent:11;
+	unsigned int negative:1;
+#endif				/* Little endian.  */
+      } ieee;
+
+    /* This format makes it easier to see if a NaN is a signalling NaN.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:11;
+	unsigned int quiet_nan:1;
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa0:19;
+	unsigned int mantissa1:32;
+#else
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa1:32;
+	unsigned int mantissa0:19;
+	unsigned int quiet_nan:1;
+	unsigned int exponent:11;
+	unsigned int negative:1;
+#endif
+      } ieee_nan;
+  };
+
+#define IEEE754_DOUBLE_BIAS	0x3ff /* Added to exponent.  */
+
+
+union ieee854_long_double
+  {
+    long double d;
+
+    /* This is the IEEE 854 quad-precision format.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:15;
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa0:16;
+	unsigned int mantissa1:32;
+	unsigned int mantissa2:32;
+	unsigned int mantissa3:32;
+#endif				/* Big endian.  */
+#if	__BYTE_ORDER == __LITTLE_ENDIAN
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa3:32;
+	unsigned int mantissa2:32;
+	unsigned int mantissa1:32;
+	unsigned int mantissa0:16;
+	unsigned int exponent:15;
+	unsigned int negative:1;
+#endif				/* Little endian.  */
+      } ieee;
+
+    /* This format makes it easier to see if a NaN is a signalling NaN.  */
+    struct
+      {
+#if	__BYTE_ORDER == __BIG_ENDIAN
+	unsigned int negative:1;
+	unsigned int exponent:15;
+	unsigned int quiet_nan:1;
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa0:15;
+	unsigned int mantissa1:32;
+	unsigned int mantissa2:32;
+	unsigned int mantissa3:32;
+#else
+	/* Together these comprise the mantissa.  */
+	unsigned int mantissa3:32;
+	unsigned int mantissa2:32;
+	unsigned int mantissa1:32;
+	unsigned int mantissa0:15;
+	unsigned int quiet_nan:1;
+	unsigned int exponent:15;
+	unsigned int negative:1;
+#endif
+      } ieee_nan;
+  };
+
+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent.  */
+
+__END_DECLS
+
+#endif /* ieee754.h */
diff --git a/sysdeps/ieee754/ldbl-128/ldbl2mpn.c b/sysdeps/ieee754/ldbl-128/ldbl2mpn.c
new file mode 100644
index 0000000000..68ecea8753
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/ldbl2mpn.c
@@ -0,0 +1,137 @@
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include "longlong.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+
+/* Convert a `long double' in IEEE854 quad-precision format to a
+   multi-precision integer representing the significand scaled up by its
+   number of bits (113 for long double) and an integral power of two
+   (MPN frexpl). */
+
+mp_size_t
+__mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
+			   int *expt, int *is_neg,
+			   long double value)
+{
+  union ieee854_long_double u;
+  u.d = value;
+
+  *is_neg = u.ieee.negative;
+  *expt = (int) u.ieee.exponent - IEEE854_LONG_DOUBLE_BIAS;
+
+#if BITS_PER_MP_LIMB == 32
+  res_ptr[0] = u.ieee.mantissa3; /* Low-order 32 bits of fraction.  */
+  res_ptr[1] = u.ieee.mantissa2;
+  res_ptr[2] = u.ieee.mantissa1;
+  res_ptr[3] = u.ieee.mantissa0; /* High-order 32 bits.  */
+  #define N 4
+#elif BITS_PER_MP_LIMB == 64
+  /* Hopefully the compiler will combine the two bitfield extracts
+     and this composition into just the original quadword extract.  */
+  res_ptr[0] = ((unsigned long int) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
+  res_ptr[1] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+  #define N 2
+#else
+  #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+/* The format does not fill the last limb.  There are some zeros.  */
+#define NUM_LEADING_ZEROS (BITS_PER_MP_LIMB \
+			   - (LDBL_MANT_DIG - ((N - 1) * BITS_PER_MP_LIMB)))
+
+  if (u.ieee.exponent == 0)
+    {
+      /* A biased exponent of zero is a special case.
+	 Either it is a zero or it is a denormal number.  */
+      if (res_ptr[0] == 0 && res_ptr[1] == 0
+          && res_ptr[N - 2] == 0 && res_ptr[N - 1] == 0) /* Assumes N<=4.  */
+	/* It's zero.  */
+	*expt = 0;
+      else
+	{
+          /* It is a denormal number, meaning it has no implicit leading
+  	     one bit, and its exponent is in fact the format minimum.  */
+	  int cnt;
+
+#if N == 2
+	  if (res_ptr[N - 1] != 0)
+	    {
+	      count_leading_zeros (cnt, res_ptr[N - 1]);
+	      cnt -= NUM_LEADING_ZEROS;
+	      res_ptr[N - 1] = res_ptr[N - 1] << cnt
+			       | (res_ptr[0] >> (BITS_PER_MP_LIMB - cnt));
+	      res_ptr[0] <<= cnt;
+	      *expt = LDBL_MIN_EXP - 1 - cnt;
+	    }
+	  else
+	    {
+	      count_leading_zeros (cnt, res_ptr[0]);
+	      if (cnt >= NUM_LEADING_ZEROS)
+		{
+		  res_ptr[N - 1] = res_ptr[0] << (cnt - NUM_LEADING_ZEROS);
+		  res_ptr[0] = 0;
+		}
+	      else
+		{
+		  res_ptr[N - 1] = res_ptr[0] >> (NUM_LEADING_ZEROS - cnt);
+		  res_ptr[0] <<= BITS_PER_MP_LIMB - (NUM_LEADING_ZEROS - cnt);
+		}
+	      *expt = LDBL_MIN_EXP - 1
+		- (BITS_PER_MP_LIMB - NUM_LEADING_ZEROS) - cnt;
+	    }
+#else
+	  int j, k, l;
+
+	  for (j = N - 1; j > 0; j++)
+	    if (res_ptr[j] != 0)
+	      break;
+
+	  count_leading_zeros (cnt, res_ptr[j]);
+	  cnt -= NUM_LEADING_ZEROS;
+	  l = N - 1 - j;
+	  if (cnt < 0)
+	    {
+	      cnt += BITS_PER_MP_LIMB;
+	      l++;
+	    }
+	  if (!cnt)
+	    for (k = N - 1; k >= l; k--)
+	      res_ptr[k] = res_ptr[k-l];
+	  else
+	    for (k = N - 1; k >= l; k--)
+	      res_ptr[k] = res_ptr[k-l] << cnt
+			   | res_ptr[k-l-1] >> (BITS_PER_MP_LIMB - cnt);
+	    res_ptr[k--] = res_ptr[0] << cnt;
+
+	  for (; k >= 0; k--)
+	    res_ptr[k] = 0;
+	  *expt = LDBL_MIN_EXP - 1 - 3 * BITS_PER_MP_LIMB - cnt;
+#endif
+	}
+    }
+  else
+    /* Add the implicit leading one bit for a normalized number.  */
+    res_ptr[N - 1] |= 1L << (LDBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
+
+  return N;
+}
diff --git a/sysdeps/ieee754/ldbl-128/math_ldbl.h b/sysdeps/ieee754/ldbl-128/math_ldbl.h
new file mode 100644
index 0000000000..aecb20a972
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/math_ldbl.h
@@ -0,0 +1,82 @@
+#ifndef _MATH_PRIVATE_H_
+#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
+#endif
+
+/* A union which permits us to convert between a long double and
+   four 32 bit ints or two 64 bit ints.  */
+
+#if __FLOAT_WORD_ORDER == BIG_ENDIAN
+
+typedef union
+{
+  long double value;
+  struct
+  {
+    u_int64_t msw;
+    u_int64_t lsw;
+  } parts64;
+  struct
+  {
+    u_int32_t w0, w1, w2, w3;
+  } parts32;
+} ieee854_long_double_shape_type;
+
+#endif
+
+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
+
+typedef union
+{
+  long double value;
+  struct
+  {
+    u_int64_t lsw;
+    u_int64_t msw;
+  } parts64;
+  struct
+  {
+    u_int32_t w3, w2, w1, w0;
+  } parts32;
+} ieee854_long_double_shape_type;
+
+#endif
+
+/* Get two 64 bit ints from a long double.  */
+
+#define GET_LDOUBLE_WORDS64(ix0,ix1,d)				\
+do {								\
+  ieee854_long_double_shape_type qw_u;				\
+  qw_u.value = (d);						\
+  (ix0) = qw_u.parts64.msw;					\
+  (ix1) = qw_u.parts64.lsw;					\
+} while (0)
+
+/* Set a long double from two 64 bit ints.  */
+
+#define SET_LDOUBLE_WORDS64(d,ix0,ix1)				\
+do {								\
+  ieee854_long_double_shape_type qw_u;				\
+  qw_u.parts64.msw = (ix0);					\
+  qw_u.parts64.lsw = (ix1);					\
+  (d) = qw_u.value;						\
+} while (0)
+
+/* Get the more significant 64 bits of a long double mantissa.  */
+
+#define GET_LDOUBLE_MSW64(v,d)					\
+do {								\
+  ieee854_long_double_shape_type sh_u;				\
+  sh_u.value = (d);						\
+  (v) = sh_u.parts64.msw;					\
+} while (0)
+
+/* Set the more significant 64 bits of a long double mantissa from an int.  */
+
+#define SET_LDOUBLE_MSW64(d,v)					\
+do {								\
+  ieee854_long_double_shape_type sh_u;				\
+  sh_u.value = (d);						\
+  sh_u.parts64.msw = (v);					\
+  (d) = sh_u.value;						\
+} while (0)
+
diff --git a/sysdeps/ieee754/ldbl-128/mpn2ldbl.c b/sysdeps/ieee754/ldbl-128/mpn2ldbl.c
new file mode 100644
index 0000000000..d9cc4521c8
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/mpn2ldbl.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <ieee754.h>
+#include <float.h>
+#include <math.h>
+
+/* Convert a multi-precision integer of the needed number of bits (113 for
+   long double) and an integral power of two to a `long double' in IEEE854
+   quad-precision format.  */
+
+long double
+__mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
+{
+  union ieee854_long_double u;
+
+  u.ieee.negative = sign;
+  u.ieee.exponent = expt + IEEE854_LONG_DOUBLE_BIAS;
+#if BITS_PER_MP_LIMB == 32
+  u.ieee.mantissa3 = frac_ptr[0];
+  u.ieee.mantissa2 = frac_ptr[1];
+  u.ieee.mantissa1 = frac_ptr[2];
+  u.ieee.mantissa0 = frac_ptr[3] & ((1 << (LDBL_MANT_DIG - 96)) - 1);
+#elif BITS_PER_MP_LIMB == 64
+  u.ieee.mantissa3 = frac_ptr[0] & ((1L << 32) - 1);
+  u.ieee.mantissa2 = frac_ptr[0] >> 32;
+  u.ieee.mantissa1 = frac_ptr[1] & ((1L << 32) - 1);
+  u.ieee.mantissa0 = (frac_ptr[1] >> 32) & ((1 << (LDBL_MANT_DIG - 96)) - 1);
+#else
+  #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+  return u.d;
+}
diff --git a/sysdeps/ieee754/ldbl-128/printf_fphex.c b/sysdeps/ieee754/ldbl-128/printf_fphex.c
new file mode 100644
index 0000000000..e25d668d9a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/printf_fphex.c
@@ -0,0 +1,84 @@
+/* Print floating point number in hexadecimal notation according to
+   ISO C 9X.
+   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#define PRINT_FPHEX_LONG_DOUBLE \
+do {									      \
+      /* We have 112 bits of mantissa plus one implicit digit.  Since	      \
+	 112 bits are representable without rest using hexadecimal	      \
+	 digits we use only the implicit digits for the number before	      \
+	 the decimal point.  */						      \
+      unsigned long long int num0, num1;				      \
+									      \
+      assert (sizeof (long double) == 16);				      \
+									      \
+      num0 = (((unsigned long long int) fpnum.ldbl.ieee.mantissa0) << 32      \
+	     | fpnum.ldbl.ieee.mantissa1);				      \
+      num1 = (((unsigned long long int) fpnum.ldbl.ieee.mantissa2) << 32      \
+	     | fpnum.ldbl.ieee.mantissa3);				      \
+									      \
+      zero_mantissa = (num0|num1) == 0;					      \
+									      \
+      if (sizeof (unsigned long int) > 6)				      \
+	numstr = _itoa_word (num1, numbuf + sizeof numbuf, 16,		      \
+			     info->spec == 'A');			      \
+      else								      \
+	numstr = _itoa (num1, numbuf + sizeof numbuf, 16,		      \
+			info->spec == 'A');				      \
+									      \
+      while (numstr > numbuf + (sizeof numbuf - 64 / 4))		      \
+	*--numstr = '0';						      \
+									      \
+      if (sizeof (unsigned long int) > 6)				      \
+	numstr = _itoa_word (num0, numstr, 16, info->spec == 'A');	      \
+      else								      \
+	numstr = _itoa (num0, numstr, 16, info->spec == 'A');		      \
+									      \
+      /* Fill with zeroes.  */						      \
+      while (numstr > numbuf + (sizeof numbuf - 112 / 4))		      \
+	*--numstr = '0';						      \
+									      \
+      leading = fpnum.ldbl.ieee.exponent == 0 ? '0' : '1';		      \
+									      \
+      exponent = fpnum.ldbl.ieee.exponent;				      \
+									      \
+      if (exponent == 0)						      \
+	{								      \
+	  if (zero_mantissa)						      \
+	    expnegative = 0;						      \
+	  else								      \
+	    {								      \
+	      /* This is a denormalized number.  */			      \
+	      expnegative = 1;						      \
+	      exponent = IEEE854_LONG_DOUBLE_BIAS - 1;			      \
+	    }								      \
+	}								      \
+      else if (exponent >= IEEE854_LONG_DOUBLE_BIAS)			      \
+	{								      \
+	  expnegative = 0;						      \
+	  exponent -= IEEE854_LONG_DOUBLE_BIAS;				      \
+	}								      \
+      else								      \
+	{								      \
+	  expnegative = 1;						      \
+	  exponent = -(exponent - IEEE854_LONG_DOUBLE_BIAS);		      \
+	}								      \
+} while (0)
+
+#include <sysdeps/generic/printf_fphex.c>
diff --git a/sysdeps/ieee754/ldbl-128/s_ceill.c b/sysdeps/ieee754/ldbl-128/s_ceill.c
new file mode 100644
index 0000000000..f241554042
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_ceill.c
@@ -0,0 +1,84 @@
+/* s_ceill.c -- long double version of s_ceil.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * ceill(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ *	Bit twiddling.
+ * Exception:
+ *	Inexact flag raised if x not equal to ceil(x).
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double huge = 1.0e4930;
+#else
+static long double huge = 1.0e4930;
+#endif
+
+#ifdef __STDC__
+	long double __ceill(long double x)
+#else
+	long double __ceill(x)
+	long double x;
+#endif
+{
+	int64_t i0,i1,j0;
+	u_int64_t i,j;
+	GET_LDOUBLE_WORDS64(i0,i1,x);
+	j0 = ((i0>>48)&0x7fff)-0x3fff;
+	if(j0<48) {
+	    if(j0<0) { 	/* raise inexact if x != 0 */
+		if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
+		    if(i0<0) {i0=0x8000000000000000ULL;i1=0;}
+		    else if((i0|i1)!=0) { i0=0x3fff000000000000ULL;i1=0;}
+		}
+	    } else {
+		i = (0x7fffffffffffffffULL)>>j0;
+		if(((i0&i)|i1)==0) return x; /* x is integral */
+		if(huge+x>0.0) {	/* raise inexact flag */
+		    if(i0>0) i0 += (0x0001000000000000LL)>>j0;
+		    i0 &= (~i); i1=0;
+		}
+	    }
+	} else if (j0>111) {
+	    if(j0==0x4000) return x+x;	/* inf or NaN */
+	    else return x;		/* x is integral */
+	} else {
+	    i = -1ULL>>(j0-48);
+	    if((i1&i)==0) return x;	/* x is integral */
+	    if(huge+x>0.0) { 		/* raise inexact flag */
+		if(i0>0) {
+		    if(j0==48) i0+=1;
+		    else {
+			j = i1+(1LL<<(112-j0));
+			if(j<i1) i0 +=1 ; 	/* got a carry */
+			i1=j;
+		    }
+		}
+		i1 &= (~i);
+	    }
+	}
+	SET_LDOUBLE_WORDS64(x,i0,i1);
+	return x;
+}
+weak_alias (__ceill, ceill)
diff --git a/sysdeps/ieee754/ldbl-128/s_copysignl.c b/sysdeps/ieee754/ldbl-128/s_copysignl.c
new file mode 100644
index 0000000000..cece4f2496
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_copysignl.c
@@ -0,0 +1,43 @@
+/* s_copysignl.c -- long double version of s_copysign.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * copysignl(long double x, long double y)
+ * copysignl(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __copysignl(long double x, long double y)
+#else
+	long double __copysignl(x,y)
+	long double x,y;
+#endif
+{
+	u_int64_t hx,hy;
+	GET_LDOUBLE_MSW64(hx,x);
+	GET_LDOUBLE_MSW64(hy,y);
+	SET_LDOUBLE_MSW64(x,(hx&0x7fffffffffffffffULL)
+			    |(hy&0x8000000000000000ULL));
+        return x;
+}
+weak_alias (__copysignl, copysignl)
diff --git a/sysdeps/ieee754/ldbl-128/s_cosl.c b/sysdeps/ieee754/ldbl-128/s_cosl.c
new file mode 100644
index 0000000000..d1258b2cf1
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_cosl.c
@@ -0,0 +1,83 @@
+/* s_cosl.c -- long double version of s_cos.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* cosl(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ *	__kernel_sinl		... sine function on [-pi/4,pi/4]
+ *	__kernel_cosl		... cosine function on [-pi/4,pi/4]
+ *	__ieee754_rem_pio2l	... argument reduction routine
+ *
+ * Method.
+ *      Let S,C and T denote the sin, cos and tan respectively on
+ *	[-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ *	in [-pi/4 , +pi/4], and let n = k mod 4.
+ *	We have
+ *
+ *          n        sin(x)      cos(x)        tan(x)
+ *     ----------------------------------------------------------
+ *	    0	       S	   C		 T
+ *	    1	       C	  -S		-1/T
+ *	    2	      -S	  -C		 T
+ *	    3	      -C	   S		-1/T
+ *     ----------------------------------------------------------
+ *
+ * Special cases:
+ *      Let trig be any of sin, cos, or tan.
+ *      trig(+-INF)  is NaN, with signals;
+ *      trig(NaN)    is that NaN;
+ *
+ * Accuracy:
+ *	TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __cosl(long double x)
+#else
+	long double __cosl(x)
+	long double x;
+#endif
+{
+	long double y[2],z=0.0L;
+	int64_t n, ix;
+
+    /* High word of x. */
+	GET_LDOUBLE_MSW64(ix,x);
+
+    /* |x| ~< pi/4 */
+	ix &= 0x7fffffffffffffffLL;
+	if(ix <= 0x3ffe921fb54442d1LL)
+	  return __kernel_cosl(x,z);
+
+    /* cos(Inf or NaN) is NaN */
+	else if (ix>=0x7fff000000000000LL) return x-x;
+
+    /* argument reduction needed */
+	else {
+	    n = __ieee754_rem_pio2l(x,y);
+	    switch(n&3) {
+		case 0: return  __kernel_cosl(y[0],y[1]);
+		case 1: return -__kernel_sinl(y[0],y[1],1);
+		case 2: return -__kernel_cosl(y[0],y[1]);
+		default:
+		        return  __kernel_sinl(y[0],y[1],1);
+	    }
+	}
+}
+weak_alias (__cosl, cosl)
diff --git a/sysdeps/ieee754/ldbl-128/s_fabsl.c b/sysdeps/ieee754/ldbl-128/s_fabsl.c
new file mode 100644
index 0000000000..c0fd05af63
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_fabsl.c
@@ -0,0 +1,39 @@
+/* s_fabsl.c -- long double version of s_fabs.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * fabsl(x) returns the absolute value of x.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __fabsl(long double x)
+#else
+	long double __fabsl(x)
+	long double x;
+#endif
+{
+	u_int64_t hx;
+	GET_LDOUBLE_MSW64(hx,x);
+	SET_LDOUBLE_MSW64(x,hx&0x7fffffffffffffffLL);
+        return x;
+}
+weak_alias (__fabsl, fabsl)
diff --git a/sysdeps/ieee754/ldbl-128/s_finitel.c b/sysdeps/ieee754/ldbl-128/s_finitel.c
new file mode 100644
index 0000000000..dd176c1e7a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_finitel.c
@@ -0,0 +1,40 @@
+/* s_finitel.c -- long double version of s_finite.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * finitel(x) returns 1 is x is finite, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	int __finitel(long double x)
+#else
+	int __finitel(x)
+	long double x;
+#endif
+{
+	int64_t hx;
+	GET_LDOUBLE_MSW64(hx,x);
+	return (int)((u_int64_t)((hx&0x7fffffffffffffffLL)
+				 -0x7fff000000000000LL)>>63);
+}
+weak_alias (__finitel, finitel)
diff --git a/sysdeps/ieee754/ldbl-128/s_floorl.c b/sysdeps/ieee754/ldbl-128/s_floorl.c
new file mode 100644
index 0000000000..c9b8b70dbf
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_floorl.c
@@ -0,0 +1,85 @@
+/* s_floorl.c -- long double version of s_floor.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * floorl(x)
+ * Return x rounded toward -inf to integral value
+ * Method:
+ *	Bit twiddling.
+ * Exception:
+ *	Inexact flag raised if x not equal to floor(x).
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double huge = 1.0e4930;
+#else
+static long double huge = 1.0e4930;
+#endif
+
+#ifdef __STDC__
+	long double __floorl(long double x)
+#else
+	long double __floorl(x)
+	long double x;
+#endif
+{
+	int64_t i0,i1,j0;
+	u_int64_t i,j;
+	GET_LDOUBLE_WORDS64(i0,i1,x);
+	j0 = ((i0>>48)&0x7fff)-0x3fff;
+	if(j0<48) {
+	    if(j0<0) { 	/* raise inexact if x != 0 */
+		if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
+		    if(i0>=0) {i0=i1=0;}
+		    else if(((i0&0x7fffffffffffffffLL)|i1)!=0)
+			{ i0=0xbfff000000000000ULL;i1=0;}
+		}
+	    } else {
+		i = (0x7fffffffffffffffULL)>>j0;
+		if(((i0&i)|i1)==0) return x; /* x is integral */
+		if(huge+x>0.0) {	/* raise inexact flag */
+		    if(i0<0) i0 += (0x0001000000000000LL)>>j0;
+		    i0 &= (~i); i1=0;
+		}
+	    }
+	} else if (j0>111) {
+	    if(j0==0x4000) return x+x;	/* inf or NaN */
+	    else return x;		/* x is integral */
+	} else {
+	    i = -1ULL>>(j0-48);
+	    if((i1&i)==0) return x;	/* x is integral */
+	    if(huge+x>0.0) { 		/* raise inexact flag */
+		if(i0<0) {
+		    if(j0==48) i0+=1;
+		    else {
+			j = i1+(1LL<<(112-j0));
+			if(j<i1) i0 +=1 ; 	/* got a carry */
+			i1=j;
+		    }
+		}
+		i1 &= (~i);
+	    }
+	}
+	SET_LDOUBLE_WORDS64(x,i0,i1);
+	return x;
+}
+weak_alias (__floorl, floorl)
diff --git a/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c b/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c
new file mode 100644
index 0000000000..868c3c4e87
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c
@@ -0,0 +1,44 @@
+/* Return classification value corresponding to argument.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+int
+__fpclassifyl (long double x)
+{
+  u_int64_t hx, lx;
+  int retval = FP_NORMAL;
+
+  GET_LDOUBLE_WORDS64 (hx, lx, x);
+  lx |= (hx & 0x0000ffffffffffffLL);
+  hx &= 0x7fff000000000000LL;
+  if ((hx | lx) == 0)
+    retval = FP_ZERO;
+  else if (hx == 0)
+    retval = FP_SUBNORMAL;
+  else if (hx == 0x7fff000000000000LL)
+    retval = lx != 0 ? FP_NAN : FP_INFINITE;
+
+  return retval;
+}
diff --git a/sysdeps/ieee754/ldbl-128/s_frexpl.c b/sysdeps/ieee754/ldbl-128/s_frexpl.c
new file mode 100644
index 0000000000..6dbb60ece0
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_frexpl.c
@@ -0,0 +1,63 @@
+/* s_frexpl.c -- long double version of s_frexp.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * for non-zero x
+ *	x = frexpl(arg,&exp);
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
+ * and the corresponding binary exponent "exp". That is
+ *	arg = x*2^exp.
+ * If arg is inf, 0.0, or NaN, then frexpl(arg,&exp) returns arg
+ * with *exp=0.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+two114 = 2.0769187434139310514121985316880384E+34L; /* 0x4071000000000000, 0 */
+
+#ifdef __STDC__
+	long double __frexpl(long double x, int *eptr)
+#else
+	long double __frexpl(x, eptr)
+	long double x; int *eptr;
+#endif
+{
+	u_int64_t hx, lx, ix;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	ix = 0x7fffffffffffffffULL&hx;
+	*eptr = 0;
+	if(ix>=0x7fff000000000000ULL||((ix|lx)==0)) return x;	/* 0,inf,nan */
+	if (ix<0x0001000000000000ULL) {		/* subnormal */
+	    x *= two114;
+	    GET_LDOUBLE_MSW64(hx,x);
+	    ix = hx&0x7fffffffffffffffULL;
+	    *eptr = -114;
+	}
+	*eptr += (ix>>48)-16382;
+	hx = (hx&0x8000ffffffffffffULL) | 0x3ffe000000000000ULL;
+	SET_LDOUBLE_MSW64(x,hx);
+	return x;
+}
+weak_alias (__frexpl, frexpl)
diff --git a/sysdeps/ieee754/ldbl-128/s_ilogbl.c b/sysdeps/ieee754/ldbl-128/s_ilogbl.c
new file mode 100644
index 0000000000..d2acfd3105
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_ilogbl.c
@@ -0,0 +1,55 @@
+/* s_ilogbl.c -- long double version of s_ilogb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* ilogbl(long double x)
+ * return the binary exponent of non-zero x
+ * ilogbl(0) = 0x80000001
+ * ilogbl(inf/NaN) = 0x7fffffff (no signal is raised)
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	int __ilogbl(long double x)
+#else
+	int __ilogbl(x)
+	long double x;
+#endif
+{
+	int64_t hx,lx;
+	int ix;
+
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	hx &= 0x7fffffffffffffffLL;
+	if(hx <= 0x0001000000000000LL) {
+	    if((hx|lx)==0)
+		return FP_ILOGB0;	/* ilogbl(0) = FP_ILOGB0 */
+	    else			/* subnormal x */
+		if(hx==0) {
+		    for (ix = -16431; lx>0; lx<<=1) ix -=1;
+		} else {
+		    for (ix = -16382, hx<<=15; hx>0; hx<<=1) ix -=1;
+		}
+	    return ix;
+	}
+	else if (hx<0x7fff000000000000LL) return (hx>>48)-0x3fff;
+	else return FP_ILOGBNAN;
+}
+weak_alias (__ilogbl, ilogbl)
diff --git a/sysdeps/ieee754/ldbl-128/s_isinfl.c b/sysdeps/ieee754/ldbl-128/s_isinfl.c
new file mode 100644
index 0000000000..038c294c79
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_isinfl.c
@@ -0,0 +1,28 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj@ultra.linux.cz>
+ * Public domain.
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+int
+__isinfl (long double x)
+{
+	int64_t hx,lx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	lx |= (hx & 0x7fffffffffffffffLL) ^ 0x7fff000000000000LL;
+	lx |= -lx;
+	return ~(lx >> 63) & (hx >> 62);
+}
+weak_alias (__isinfl, isinfl)
diff --git a/sysdeps/ieee754/ldbl-128/s_isnanl.c b/sysdeps/ieee754/ldbl-128/s_isnanl.c
new file mode 100644
index 0000000000..d2fb4038ce
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_isnanl.c
@@ -0,0 +1,42 @@
+/* s_isnanl.c -- long double version of s_isnan.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * isnanl(x) returns 1 is x is nan, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	int __isnanl(long double x)
+#else
+	int __isnanl(x)
+	long double x;
+#endif
+{
+	int64_t hx,lx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	hx &= 0x7fffffffffffffffLL;
+	hx |= (u_int64_t)(lx|(-lx))>>63;
+	hx = 0x7fff000000000000LL - hx;
+	return (int)((u_int64_t)hx>>63);
+}
+weak_alias (__isnanl, isnanl)
diff --git a/sysdeps/ieee754/ldbl-128/s_llrintl.c b/sysdeps/ieee754/ldbl-128/s_llrintl.c
new file mode 100644
index 0000000000..389a65dc0e
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_llrintl.c
@@ -0,0 +1,75 @@
+/* Round argument to nearest integral value according to current rounding
+   direction.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+static const long double two112[2] =
+{
+  5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */
+ -5.19229685853482762853049632922009600E+33L  /* 0xC06F000000000000, 0 */
+};
+
+long long int
+__llrintl (long double x)
+{
+  int32_t j0;
+  u_int64_t i0,i1;
+  volatile long double w;
+  long double t;
+  long long int result;
+  int sx;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  sx = i0 >> 63;
+  i0 &= 0x0000ffffffffffffLL;
+  i0 |= 0x0001000000000000LL;
+
+  if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+    {
+      if (j0 < -1)
+	return 0;
+      w = two112[sx] + x;
+      t = w - two112[sx];
+      GET_LDOUBLE_WORDS64 (i0, i1, x);
+      j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+      i0 &= 0x0000ffffffffffffLL;
+      i0 |= 0x0001000000000000LL;
+
+      if (j0 <= 48)
+	result = i0 >> (48 - j0);
+      else
+	result = ((long long int) i0 << (j0 - 48)) | (i1 >> (112 - j0));
+    }
+  else
+    {
+      /* The number is too large.  It is left implementation defined
+	 what happens.  */
+      return (long long int) x;
+    }
+
+  return sx ? -result : result;
+}
+
+weak_alias (__llrintl, llrintl)
diff --git a/sysdeps/ieee754/ldbl-128/s_llroundl.c b/sysdeps/ieee754/ldbl-128/s_llroundl.c
new file mode 100644
index 0000000000..82395a7b5a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_llroundl.c
@@ -0,0 +1,74 @@
+/* Round long double value to long long int.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+long long int
+__llroundl (long double x)
+{
+  int64_t j0;
+  u_int64_t i1, i0;
+  long long int result;
+  int sign;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  sign = (i0 & 0x8000000000000000ULL) != 0 ? -1 : 1;
+  i0 &= 0x0000ffffffffffffLL;
+  i0 |= 0x0001000000000000LL;
+
+  if (j0 < 48)
+    {
+      if (j0 < 0)
+	return j0 < -1 ? 0 : sign;
+      else
+	{
+	  i0 += 0x0000800000000000LL >> j0;
+	  result = i0 >> (48 - j0);
+	}
+    }
+  else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
+    {
+      if (j0 >= 112)
+	result = ((long long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+      else
+	{
+	  u_int64_t j = i1 + (0x8000000000000000ULL >> (j0 - 48));
+	  if (j < i1)
+	    ++i0;
+
+	  result = ((long long int) i0 << (j0 - 48)) | (j >> (112 - j0));
+	}
+    }
+  else
+    {
+      /* The number is too large.  It is left implementation defined
+	 what happens.  */
+      return (long long int) x;
+    }
+
+  return sign * result;
+}
+
+weak_alias (__llroundl, llroundl)
diff --git a/sysdeps/ieee754/ldbl-128/s_logbl.c b/sysdeps/ieee754/ldbl-128/s_logbl.c
new file mode 100644
index 0000000000..1fda289312
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_logbl.c
@@ -0,0 +1,46 @@
+/* s_logbl.c -- long double version of s_logb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * long double logbl(x)
+ * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
+ * Use ilogb instead.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __logbl(long double x)
+#else
+	long double __logbl(x)
+	long double x;
+#endif
+{
+	int64_t lx,hx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	hx &= 0x7fffffffffffffffLL;		/* high |x| */
+	if((hx|lx)==0) return -1.0/fabs(x);
+	if(hx>=0x7fff000000000000LL) return x*x;
+	if((hx>>=48)==0) 			/* IEEE 754 logb */
+		return -16382.0;
+	else
+		return (long double) (hx-0x3fff);
+}
+weak_alias (__logbl, logbl)
diff --git a/sysdeps/ieee754/ldbl-128/s_lrintl.c b/sysdeps/ieee754/ldbl-128/s_lrintl.c
new file mode 100644
index 0000000000..434aa315a7
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_lrintl.c
@@ -0,0 +1,91 @@
+/* Round argument to nearest integral value according to current rounding
+   direction.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+static const long double two112[2] =
+{
+  5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */
+ -5.19229685853482762853049632922009600E+33L  /* 0xC06F000000000000, 0 */
+};
+
+long int
+__lrintl (long double x)
+{
+  int32_t j0;
+  u_int64_t i0,i1;
+  volatile long double w;
+  long double t;
+  long int result;
+  int sx;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  sx = i0 >> 63;
+  i0 &= 0x0000ffffffffffffLL;
+  i0 |= 0x0001000000000000LL;
+
+  if (j0 < 48)
+    {
+      if (j0 < -1)
+	return 0;
+      else
+	{
+	  w = two112[sx] + x;
+	  t = w - two112[sx];
+	  GET_LDOUBLE_WORDS64 (i0, i1, x);
+	  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+	  i0 &= 0x0000ffffffffffffLL;
+	  i0 |= 0x0001000000000000LL;
+
+	  result = i0 >> (48 - j0);
+	}
+    }
+  else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+    {
+      if (j0 >= 112)
+	result = ((long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+      else
+	{
+	  w = two112[sx] + x;
+	  t = w - two112[sx];
+	  GET_LDOUBLE_WORDS64 (i0, i1, x);
+	  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+	  i0 &= 0x0000ffffffffffffLL;
+	  i0 |= 0x0001000000000000LL;
+
+	  result = ((long int) i0 << (j0 - 48)) | (i1 >> (112 - j0));
+	}
+    }
+  else
+    {
+      /* The number is too large.  It is left implementation defined
+	 what happens.  */
+      return (long int) x;
+    }
+
+  return sx ? -result : result;
+}
+
+weak_alias (__lrintl, lrintl)
diff --git a/sysdeps/ieee754/ldbl-128/s_lroundl.c b/sysdeps/ieee754/ldbl-128/s_lroundl.c
new file mode 100644
index 0000000000..ea82f4c3f8
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_lroundl.c
@@ -0,0 +1,74 @@
+/* Round long double value to long int.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+long int
+__lroundl (long double x)
+{
+  int64_t j0;
+  u_int64_t i1, i0;
+  long int result;
+  int sign;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  sign = (i0 & 0x8000000000000000ULL) != 0 ? -1 : 1;
+  i0 &= 0x0000ffffffffffffLL;
+  i0 |= 0x0001000000000000LL;
+
+  if (j0 < 48)
+    {
+      if (j0 < 0)
+	return j0 < -1 ? 0 : sign;
+      else
+	{
+	  i0 += 0x0000800000000000LL >> j0;
+	  result = i0 >> (48 - j0);
+	}
+    }
+  else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
+    {
+      if (j0 >= 112)
+	result = ((long int) i0 << (j0 - 48)) | (i1 << (j0 - 112));
+      else
+	{
+	  u_int64_t j = i1 + (0x8000000000000000ULL >> (j0 - 48));
+	  if (j < i1)
+	    ++i0;
+
+	  result = ((long int) i0 << (j0 - 48)) | (j >> (112 - j0));
+	}
+    }
+  else
+    {
+      /* The number is too large.  It is left implementation defined
+	 what happens.  */
+      return (long int) x;
+    }
+
+  return sign * result;
+}
+
+weak_alias (__lroundl, lroundl)
diff --git a/sysdeps/ieee754/ldbl-128/s_modfl.c b/sysdeps/ieee754/ldbl-128/s_modfl.c
new file mode 100644
index 0000000000..63d66e7114
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_modfl.c
@@ -0,0 +1,88 @@
+/* s_modfl.c -- long double version of s_modf.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * modfl(long double x, long double *iptr)
+ * return fraction part of x, and return x's integral part in *iptr.
+ * Method:
+ *	Bit twiddling.
+ *
+ * Exception:
+ *	No exception.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double one = 1.0;
+#else
+static long double one = 1.0;
+#endif
+
+#ifdef __STDC__
+	long double __modfl(long double x, long double *iptr)
+#else
+	long double __modfl(x, iptr)
+	long double x,*iptr;
+#endif
+{
+	int64_t i0,i1,j0;
+	u_int64_t i;
+	GET_LDOUBLE_WORDS64(i0,i1,x);
+	j0 = ((i0>>48)&0x7fff)-0x3fff;	/* exponent of x */
+	if(j0<48) {			/* integer part in high x */
+	    if(j0<0) {			/* |x|<1 */
+		/* *iptr = +-0 */
+	        SET_LDOUBLE_WORDS64(*iptr,i0&0x8000000000000000ULL,0);
+		return x;
+	    } else {
+		i = (0x0000ffffffffffffLL)>>j0;
+		if(((i0&i)|i1)==0) {		/* x is integral */
+		    *iptr = x;
+		    /* return +-0 */
+		    SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+		    return x;
+		} else {
+		    SET_LDOUBLE_WORDS64(*iptr,i0&(~i),0);
+		    return x - *iptr;
+		}
+	    }
+	} else if (j0>111) {		/* no fraction part */
+	    *iptr = x*one;
+	    /* We must handle NaNs separately.  */
+	    if (j0 == 0x4000 && ((i0 & 0x0000ffffffffffffLL) | i1))
+	      return x*one;
+	    /* return +-0 */
+	    SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+	    return x;
+	} else {			/* fraction part in low x */
+	    i = -1ULL>>(j0-48);
+	    if((i1&i)==0) { 		/* x is integral */
+		*iptr = x;
+		/* return +-0 */
+		SET_LDOUBLE_WORDS64(x,i0&0x8000000000000000ULL,0);
+		return x;
+	    } else {
+		SET_LDOUBLE_WORDS64(*iptr,i0,i1&(~i));
+		return x - *iptr;
+	    }
+	}
+}
+weak_alias (__modfl, modfl)
diff --git a/sysdeps/ieee754/ldbl-128/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
new file mode 100644
index 0000000000..bea3183d39
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
@@ -0,0 +1,93 @@
+/* s_nearbyintl.c -- long double version of s_nearbyint.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/*
+ * nearbyintl(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ *	Using floating addition.
+ * Exception:
+ *	Inexact flag raised if x not equal to rintl(x).
+ */
+
+#include <fenv.h>
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+TWO112[2]={
+  5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */
+ -5.19229685853482762853049632922009600E+33L  /* 0xC06F000000000000, 0 */
+};
+
+#ifdef __STDC__
+	long double __nearbyintl(long double x)
+#else
+	long double __nearbyintl(x)
+	long double x;
+#endif
+{
+	fenv_t env;
+	int64_t i0,j0,sx;
+	u_int64_t i,i1;
+	long double w,t;
+	GET_LDOUBLE_WORDS64(i0,i1,x);
+	sx = (((u_int64_t)i0)>>63);
+	j0 = ((i0>>48)&0x7fff)-0x3fff;
+	if(j0<48) {
+	    if(j0<0) {
+		if(((i0&0x7fffffffffffffffLL)|i1)==0) return x;
+		i1 |= (i0&0x0000ffffffffffffLL);
+		i0 &= 0xffffe00000000000ULL;
+		i0 |= ((i1|-i1)>>16)&0x0000800000000000LL;
+		SET_LDOUBLE_MSW64(x,i0);
+		feholdexcept (&env);
+	        w = TWO112[sx]+x;
+	        t = w-TWO112[sx];
+	        fesetenv (&env);
+		GET_LDOUBLE_MSW64(i0,t);
+		SET_LDOUBLE_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
+	        return t;
+	    } else {
+		i = (0x0000ffffffffffffLL)>>j0;
+		if(((i0&i)|i1)==0) return x; /* x is integral */
+		i>>=1;
+		if(((i0&i)|i1)!=0) {
+		    if(j0==47) i1 = 0x4000000000000000ULL; else
+		    i0 = (i0&(~i))|((0x0000200000000000LL)>>j0);
+		}
+	    }
+	} else if (j0>111) {
+	    if(j0==0x4000) return x+x;	/* inf or NaN */
+	    else return x;		/* x is integral */
+	} else {
+	    i = -1ULL>>(j0-48);
+	    if((i1&i)==0) return x;	/* x is integral */
+	    i>>=1;
+	    if((i1&i)!=0) i1 = (i1&(~i))|((0x4000000000000000LL)>>(j0-48));
+	}
+	SET_LDOUBLE_WORDS64(x,i0,i1);
+	feholdexcept (&env);
+	w = TWO112[sx]+x;
+	t = w-TWO112[sx];
+	fesetenv (&env);
+	return t;
+}
+weak_alias (__nearbyintl, nearbyintl)
diff --git a/sysdeps/ieee754/ldbl-128/s_nextafterl.c b/sysdeps/ieee754/ldbl-128/s_nextafterl.c
new file mode 100644
index 0000000000..d3df668178
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_nextafterl.c
@@ -0,0 +1,85 @@
+/* s_nextafterl.c -- long double version of s_nextafter.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ *	nextafterl(x,y)
+ *	return the next machine floating-point number of x in the
+ *	direction toward y.
+ *   Special cases:
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __nextafterl(long double x, long double y)
+#else
+	long double __nextafterl(x,y)
+	long double x,y;
+#endif
+{
+	int64_t hx,hy,ix,iy;
+	u_int64_t lx,ly;
+
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+	GET_LDOUBLE_WORDS64(hy,ly,y);
+	ix = hx&0x7fffffffffffffffLL;		/* |x| */
+	iy = hy&0x7fffffffffffffffLL;		/* |y| */
+
+	if(((ix>=0x7fff000000000000LL)&&((ix-0x7fff000000000000LL)|lx)!=0) ||   /* x is nan */
+	   ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0))     /* y is nan */
+	   return x+y;
+	if(x==y) return y;		/* x=y, return y */
+	if((ix|lx)==0) {			/* x == 0 */
+	    SET_LDOUBLE_WORDS64(x,hy&0x8000000000000000ULL,1);/* return +-minsubnormal */
+	    y = x*x;
+	    if(y==x) return y; else return x;	/* raise underflow flag */
+	}
+	if(hx>=0) {			/* x > 0 */
+	    if(hx>hy||((hx==hy)&&(lx>ly))) {	/* x > y, x -= ulp */
+		if(lx==0) hx--;
+		lx--;
+	    } else {				/* x < y, x += ulp */
+		lx++;
+		if(lx==0) hx++;
+	    }
+	} else {				/* x < 0 */
+	    if(hy>=0||hx>hy||((hx==hy)&&(lx>ly))){/* x < y, x -= ulp */
+		if(lx==0) hx--;
+		lx--;
+	    } else {				/* x > y, x += ulp */
+		lx++;
+		if(lx==0) hx++;
+	    }
+	}
+	hy = hx&0x7fff000000000000LL;
+	if(hy==0x7fff000000000000LL) return x+x;/* overflow  */
+	if(hy==0) {				/* underflow */
+	    y = x*x;
+	    if(y!=x) {		/* raise underflow flag */
+	        SET_LDOUBLE_WORDS64(y,hx,lx);
+		return y;
+	    }
+	}
+	SET_LDOUBLE_WORDS64(x,hx,lx);
+	return x;
+}
+weak_alias (__nextafterl, nextafterl)
+strong_alias (__nextafterl, __nexttowardl)
+weak_alias (__nextafterl, nexttowardl)
diff --git a/sysdeps/ieee754/ldbl-128/s_nexttoward.c b/sysdeps/ieee754/ldbl-128/s_nexttoward.c
new file mode 100644
index 0000000000..f121be2fac
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_nexttoward.c
@@ -0,0 +1,97 @@
+/* s_nexttoward.c
+ * Conversion from s_nextafter.c by Ulrich Drepper, Cygnus Support,
+ * drepper@cygnus.com and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* IEEE functions
+ *	nexttoward(x,y)
+ *	return the next machine floating-point number of x in the
+ *	direction toward y.
+ *   Special cases:
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	double __nexttoward(double x, long double y)
+#else
+	double __nexttoward(x,y)
+	double x;
+	long double y;
+#endif
+{
+	int32_t hx,ix;
+	int64_t hy,iy;
+	u_int32_t lx;
+	u_int64_t ly;
+
+	EXTRACT_WORDS(hx,lx,x);
+	GET_LDOUBLE_WORDS64(hy,ly,y);
+	ix = hx&0x7fffffff;		/* |x| */
+	iy = hy&0x7fffffffffffffffLL;	/* |y| */
+
+	if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) ||   /* x is nan */
+	   ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0))
+	   						    /* y is nan */
+	   return x+y;
+	if((long double) x==y) return x;	/* x=y, return x */
+	if((ix|lx)==0) {			/* x == 0 */
+	    double x2;
+	    INSERT_WORDS(x,(u_int32_t)((hy>>32)&0x80000000),1);/* return +-minsub */
+	    x2 = x*x;
+	    if(x2==x) return x2; else return x;	/* raise underflow flag */
+	}
+	if(hx>=0) {				/* x > 0 */
+	    if (hy<0||(ix>>20)>(iy>>48)-0x3c00
+		|| ((ix>>20)==(iy>>48)-0x3c00
+		    && (((((int64_t)hx)<<28)|(lx>>4))>(hy&0x0000ffffffffffffLL)
+			|| (((((int64_t)hx)<<28)|(lx>>4))==(hy&0x0000ffffffffffffLL)
+			    && (lx&0xf)>(ly>>60))))) {	/* x > y, x -= ulp */
+		if(lx==0) hx -= 1;
+		lx -= 1;
+	    } else {				/* x < y, x += ulp */
+		lx += 1;
+		if(lx==0) hx += 1;
+	    }
+	} else {				/* x < 0 */
+	    if (hy>=0||(ix>>20)>(iy>>48)-0x3c00
+		|| ((ix>>20)==(iy>>48)-0x3c00
+		    && (((((int64_t)hx)<<28)|(lx>>4))>(hy&0x0000ffffffffffffLL)
+			|| (((((int64_t)hx)<<28)|(lx>>4))==(hy&0x0000ffffffffffffLL)
+			    && (lx&0xf)>(ly>>60))))) {	/* x < y, x -= ulp */
+		if(lx==0) hx -= 1;
+		lx -= 1;
+	    } else {				/* x > y, x += ulp */
+		lx += 1;
+		if(lx==0) hx += 1;
+	    }
+	}
+	hy = hx&0x7ff00000;
+	if(hy>=0x7ff00000) return x+x;	/* overflow  */
+	if(hy<0x00100000) {		/* underflow */
+	    double x2 = x*x;
+	    if(x2!=x) {		/* raise underflow flag */
+	        INSERT_WORDS(x2,hx,lx);
+		return x2;
+	    }
+	}
+	INSERT_WORDS(x,hx,lx);
+	return x;
+}
+weak_alias (__nexttoward, nexttoward)
diff --git a/sysdeps/ieee754/ldbl-128/s_nexttowardf.c b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
new file mode 100644
index 0000000000..1a22e0102c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c
@@ -0,0 +1,81 @@
+/* s_nexttowardf.c -- float version of s_nextafter.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com
+ * and Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	float __nexttowardf(float x, long double y)
+#else
+	float __nexttowardf(x,y)
+	float x;
+	long double y;
+#endif
+{
+	int32_t hx,ix;
+	int64_t hy,iy;
+	u_int64_t ly;
+                                
+	GET_FLOAT_WORD(hx,x);
+	GET_LDOUBLE_WORDS64(hy,ly,y);
+	ix = hx&0x7fffffff;		/* |x| */
+	iy = hy&0x7fffffffffffffffLL;	/* |y| */
+
+	if((ix>0x7f800000) ||   /* x is nan */
+	   ((iy>=0x7fff000000000000LL)&&((iy-0x7fff000000000000LL)|ly)!=0))
+				/* y is nan */
+	   return x+y;
+	if((long double) x==y) return y;	/* x=y, return y */
+	if(ix==0) {				/* x == 0 */
+	    float x2;
+	    SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/
+	    x2 = x*x;
+	    if(x2==x) return x2; else return x;	/* raise underflow flag */
+	}
+	if(hx>=0) {				/* x > 0 */
+	    if(hy<0||(ix>>23)>(iy>>48)-0x3f80
+	       || ((ix>>23)==(iy>>48)-0x3f80
+		   && (ix&0x7fffff)>((hy>>25)&0x7fffff))) {/* x > y, x -= ulp */
+		hx -= 1;
+	    } else {				/* x < y, x += ulp */
+		hx += 1;
+	    }
+	} else {				/* x < 0 */
+	    if(hy>=0||(ix>>23)>(iy>>48)-0x3f80
+	       || ((ix>>23)==(iy>>48)-0x3f80
+		   && (ix&0x7fffff)>((hy>>25)&0x7fffff))) {/* x < y, x -= ulp */
+		hx -= 1;
+	    } else {				/* x > y, x += ulp */
+		hx += 1;
+	    }
+	}
+	hy = hx&0x7f800000;
+	if(hy>=0x7f800000) return x+x;	/* overflow  */
+	if(hy<0x00800000) {		/* underflow */
+	    float x2 = x*x;
+	    if(x2!=x) {		/* raise underflow flag */
+	        SET_FLOAT_WORD(x2,hx);
+		return x2;
+	    }
+	}
+	SET_FLOAT_WORD(x,hx);
+	return x;
+}
+weak_alias (__nexttowardf, nexttowardf)
diff --git a/sysdeps/ieee754/ldbl-128/s_remquol.c b/sysdeps/ieee754/ldbl-128/s_remquol.c
new file mode 100644
index 0000000000..0d2695844b
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_remquol.c
@@ -0,0 +1,110 @@
+/* Compute remainder and a congruent to the quotient.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+static const long double zero = 0.0;
+
+
+long double
+__remquol (long double x, long double y, int *quo)
+{
+  int64_t hx,hy;
+  u_int64_t sx,lx,ly;
+  int cquo,qs;
+
+  GET_LDOUBLE_WORDS64 (hx, lx, x);
+  GET_LDOUBLE_WORDS64 (hy, ly, y);
+  sx = hx & 0x8000000000000000ULL;
+  qs = sx ^ (hy & 0x8000000000000000ULL);
+  hy &= 0x7fffffffffffffffLL;
+  hx &= 0x7fffffffffffffffLL;
+
+  /* Purge off exception values.  */
+  if ((hy | ly) == 0)
+    return (x * y) / (x * y); 			/* y = 0 */
+  if ((hx >= 0x7fff000000000000LL)		/* x not finite */
+      || ((hy >= 0x7fff000000000000LL)		/* y is NaN */
+	  && (((hy - 0x7fff000000000000LL) | ly) != 0)))
+    return (x * y) / (x * y);
+
+  if (hy <= 0x7ffbffffffffffffLL)
+    x = __ieee754_fmodl (x, 8 * y);              /* now x < 8y */
+      
+  if (((hx - hy) | (lx - ly)) == 0)
+    {
+      *quo = qs ? -1 : 1;
+      return zero * x;
+    }
+
+  x  = fabsl (x);
+  y  = fabsl (y);
+  cquo = 0;
+
+  if (x >= 4 * y)
+    {
+      x -= 4 * y;
+      cquo += 4;
+    }
+  if (x >= 2 * y)
+    {
+      x -= 2 * y;
+      cquo += 2;
+    }
+
+  if (hy < 0x0002000000000000LL)
+    {
+      if (x + x > y)
+	{
+	  x -= y;
+	  ++cquo;
+	  if (x + x >= y)
+	    {
+	      x -= y;
+	      ++cquo;
+	    }
+	}
+    }
+  else
+    {
+      long double y_half = 0.5L * y;
+      if (x > y_half)
+	{
+	  x -= y;
+	  ++cquo;
+	  if (x >= y_half)
+	    {
+	      x -= y;
+	      ++cquo;
+	    }
+	}
+    }
+
+  *quo = qs ? -cquo : cquo;
+
+  if (sx)
+    x = -x;
+  return x;
+}
+weak_alias (__remquol, remquol)
diff --git a/sysdeps/ieee754/ldbl-128/s_rintl.c b/sysdeps/ieee754/ldbl-128/s_rintl.c
new file mode 100644
index 0000000000..c3fc3ba193
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_rintl.c
@@ -0,0 +1,90 @@
+/* s_rintl.c -- long double version of s_rint.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * rintl(x)
+ * Return x rounded to integral value according to the prevailing
+ * rounding mode.
+ * Method:
+ *	Using floating addition.
+ * Exception:
+ *	Inexact flag raised if x not equal to rintl(x).
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+TWO112[2]={
+  5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */
+ -5.19229685853482762853049632922009600E+33L  /* 0xC06F000000000000, 0 */
+};
+
+#ifdef __STDC__
+	long double __rintl(long double x)
+#else
+	long double __rintl(x)
+	long double x;
+#endif
+{
+	int64_t i0,j0,sx;
+	u_int64_t i,i1;
+	long double w,t;
+	GET_LDOUBLE_WORDS64(i0,i1,x);
+	sx = (((u_int64_t)i0)>>63);
+	j0 = ((i0>>48)&0x7fff)-0x3fff;
+	if(j0<48) {
+	    if(j0<0) {
+		if(((i0&0x7fffffffffffffffLL)|i1)==0) return x;
+		i1 |= (i0&0x0000ffffffffffffLL);
+		i0 &= 0xffffe00000000000ULL;
+		i0 |= ((i1|-i1)>>16)&0x0000800000000000LL;
+		SET_LDOUBLE_MSW64(x,i0);
+	        w = TWO112[sx]+x;
+	        t = w-TWO112[sx];
+		GET_LDOUBLE_MSW64(i0,t);
+		SET_LDOUBLE_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
+	        return t;
+	    } else {
+		i = (0x0000ffffffffffffLL)>>j0;
+		if(((i0&i)|i1)==0) return x; /* x is integral */
+		i>>=1;
+		if(((i0&i)|i1)!=0) {
+		    if(j0==47) i1 = 0x4000000000000000ULL; else
+		    i0 = (i0&(~i))|((0x0000200000000000LL)>>j0);
+		}
+	    }
+	} else if (j0>111) {
+	    if(j0==0x4000) return x+x;	/* inf or NaN */
+	    else return x;		/* x is integral */
+	} else {
+	    i = -1ULL>>(j0-48);
+	    if((i1&i)==0) return x;	/* x is integral */
+	    i>>=1;
+	    if((i1&i)!=0) i1 = (i1&(~i))|((0x4000000000000000LL)>>(j0-48));
+	}
+	SET_LDOUBLE_WORDS64(x,i0,i1);
+	w = TWO112[sx]+x;
+	return w-TWO112[sx];
+}
+weak_alias (__rintl, rintl)
diff --git a/sysdeps/ieee754/ldbl-128/s_roundl.c b/sysdeps/ieee754/ldbl-128/s_roundl.c
new file mode 100644
index 0000000000..f9fff48f6c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_roundl.c
@@ -0,0 +1,94 @@
+/* Round long double to integer away from zero.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+static const long double huge = 1.0E4930L;
+
+
+long double
+__roundl (long double x)
+{
+  int32_t j0;
+  u_int64_t se, i1, i0;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  if (j0 < 31)
+    {
+      if (j0 < 0)
+	{
+	  if (huge + x > 0.0)
+	    {
+	      i0 &= 0x8000000000000000ULL;
+	      if (j0 == -1)
+		i0 |= 0x3fff000000000000LL;
+	      i1 = 0;
+	    }
+	}
+      else
+	{
+	  u_int64_t i = 0x0000ffffffffffffLL >> j0;
+	  if (((i0 & i) | i1) == 0)
+	    /* X is integral.  */
+	    return x;
+	  if (huge + x > 0.0)
+	    {
+	      /* Raise inexact if x != 0.  */
+	      i0 += 0x0000800000000000LL >> j0;
+	      i0 &= ~i;
+	      i1 = 0;
+	    }
+	}
+    }
+  else if (j0 > 111)
+    {
+      if (j0 == 0x4000)
+	/* Inf or NaN.  */
+	return x + x;
+      else
+	return x;
+    }
+  else
+    {
+      u_int64_t i = -1ULL >> (j0 - 48);
+      if ((i1 & i) == 0)
+	/* X is integral.  */
+	return x;
+
+      if (huge + x > 0.0)
+	{
+	  /* Raise inexact if x != 0.  */
+	  u_int64_t j = i1 + (1LL << (111 - j0));
+	  if (j < i1)
+	    i0 += 1;
+	  i1 = j;
+	}
+      i1 &= ~i;
+    }
+
+  SET_LDOUBLE_WORDS64 (x, i0, i1);
+  return x;
+}
+weak_alias (__roundl, roundl)
diff --git a/sysdeps/ieee754/ldbl-128/s_scalblnl.c b/sysdeps/ieee754/ldbl-128/s_scalblnl.c
new file mode 100644
index 0000000000..5e8b58b733
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_scalblnl.c
@@ -0,0 +1,70 @@
+/* s_scalblnl.c -- long double version of s_scalbn.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+   
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalblnl (long double x, long int n)
+ * scalblnl(x,n) returns x* 2**n  computed by  exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+two114 = 2.0769187434139310514121985316880384E+34L, /* 0x4071000000000000, 0 */
+twom114 = 4.8148248609680896326399448564623183E-35L, /* 0x3F8D000000000000, 0 */
+huge   = 1.0E+4900L,
+tiny   = 1.0E-4900L;
+
+#ifdef __STDC__
+	long double __scalblnl (long double x, long int n)
+#else
+	long double __scalblnl (x,n)
+	long double x; long int n;
+#endif
+{
+	int64_t k,hx,lx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+        k = (hx>>48)&0x7fff;		/* extract exponent */
+        if (k==0) {				/* 0 or subnormal x */
+            if ((lx|(hx&0x7fffffffffffffffULL))==0) return x; /* +-0 */
+	    x *= two114;
+	    GET_LDOUBLE_MSW64(hx,x);
+	    k = ((hx>>48)&0x7fff) - 114;
+	}
+        if (k==0x7fff) return x+x;		/* NaN or Inf */
+        k = k+n;
+        if (n> 50000 || k > 0x7ffe)
+	  return huge*__copysignl(huge,x); /* overflow  */
+	if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow*/
+        if (k > 0) 				/* normal result */
+	    {SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
+        if (k <= -114)
+	  return tiny*__copysignl(tiny,x); 	/*underflow*/
+        k += 114;				/* subnormal result */
+	SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
+        return x*twom114;
+}
+weak_alias (__scalblnl, scalblnl)
diff --git a/sysdeps/ieee754/ldbl-128/s_scalbnl.c b/sysdeps/ieee754/ldbl-128/s_scalbnl.c
new file mode 100644
index 0000000000..c54f064c0c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_scalbnl.c
@@ -0,0 +1,70 @@
+/* s_scalbnl.c -- long double version of s_scalbn.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+   
+/* @(#)s_scalbn.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * scalbnl (long double x, int n)
+ * scalbnl(x,n) returns x* 2**n  computed by  exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+two114 = 2.0769187434139310514121985316880384E+34L, /* 0x4071000000000000, 0 */
+twom114 = 4.8148248609680896326399448564623183E-35L, /* 0x3F8D000000000000, 0 */
+huge   = 1.0E+4900L,
+tiny   = 1.0E-4900L;
+
+#ifdef __STDC__
+	long double __scalbnl (long double x, int n)
+#else
+	long double __scalbnl (x,n)
+	long double x; int n;
+#endif
+{
+	int64_t k,hx,lx;
+	GET_LDOUBLE_WORDS64(hx,lx,x);
+        k = (hx>>48)&0x7fff;		/* extract exponent */
+        if (k==0) {				/* 0 or subnormal x */
+            if ((lx|(hx&0x7fffffffffffffffULL))==0) return x; /* +-0 */
+	    x *= two114;
+	    GET_LDOUBLE_MSW64(hx,x);
+	    k = ((hx>>48)&0x7fff) - 114;
+	}
+        if (k==0x7fff) return x+x;		/* NaN or Inf */
+        k = k+n;
+        if (n> 50000 || k > 0x7ffe)
+	  return huge*__copysignl(huge,x); /* overflow  */
+	if (n< -50000) return tiny*__copysignl(tiny,x); /*underflow*/
+        if (k > 0) 				/* normal result */
+	    {SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
+        if (k <= -114)
+	  return tiny*__copysignl(tiny,x); 	/*underflow*/
+        k += 114;				/* subnormal result */
+	SET_LDOUBLE_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
+        return x*twom114;
+}
+weak_alias (__scalbnl, scalbnl)
diff --git a/sysdeps/ieee754/ldbl-128/s_signbitl.c b/sysdeps/ieee754/ldbl-128/s_signbitl.c
new file mode 100644
index 0000000000..52a0afbe6a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_signbitl.c
@@ -0,0 +1,32 @@
+/* Return nonzero value if number is negative.
+   Copyright (C) 1997, 1999 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 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+int
+__signbitl (long double x)
+{
+  int64_t e;
+
+  GET_LDOUBLE_MSW64 (e, x);
+  return e < 0;
+}
diff --git a/sysdeps/ieee754/ldbl-128/s_sincosl.c b/sysdeps/ieee754/ldbl-128/s_sincosl.c
new file mode 100644
index 0000000000..2d74e72a50
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_sincosl.c
@@ -0,0 +1,77 @@
+/* Compute sine and cosine of argument.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+		  Jakub Jelinek <jj@ultra.linux.cz>.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+/* Note: We should probably introduce __kernel_sincosl to speed things up,
+   because __kernel_{cos,sin}l sometimes compute both sine and cosine.  */
+
+void
+__sincosl (long double x, long double *sinx, long double *cosx)
+{
+  int64_t ix;
+
+  /* High word of x. */
+  GET_LDOUBLE_MSW64 (ix, x);
+
+  /* |x| ~< pi/4 */
+  ix &= 0x7fffffffffffffffLL;
+  if (ix <= 0x3ffe921fb54442d1LL)
+    {
+      *sinx = __kernel_sinl (x, 0.0, 0);
+      *cosx = __kernel_cosl (x, 0.0);
+    }
+  else if (ix >= 0x7fff000000000000LL)
+    {
+      /* sin(Inf or NaN) is NaN */
+      *sinx = *cosx = x - x;
+    }
+  else
+    {
+      /* Argument reduction needed.  */
+      long double y[2];
+      int n;
+
+      n = __ieee754_rem_pio2l (x, y);
+      switch (n & 3)
+	{
+	case 0:
+	  *sinx = __kernel_sinl (y[0], y[1], 1);
+	  *cosx = __kernel_cosl (y[0], y[1]);
+	  break;
+	case 1:
+	  *sinx = __kernel_cosl (y[0], y[1]);
+	  *cosx = -__kernel_sinl (y[0], y[1], 1);
+	  break;
+	case 2:
+	  *sinx = -__kernel_sinl (y[0], y[1], 1);
+	  *cosx = -__kernel_cosl (y[0], y[1]);
+	  break;
+	default:
+	  *sinx = -__kernel_cosl (y[0], y[1]);
+	  *cosx = __kernel_sinl (y[0], y[1], 1);
+	  break;
+	}
+    }
+}
+weak_alias (__sincosl, sincosl)
diff --git a/sysdeps/ieee754/ldbl-128/s_sinl.c b/sysdeps/ieee754/ldbl-128/s_sinl.c
new file mode 100644
index 0000000000..446a75f126
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_sinl.c
@@ -0,0 +1,83 @@
+/* s_sinl.c -- long double version of s_sin.c.
+ * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* sinl(x)
+ * Return sine function of x.
+ *
+ * kernel function:
+ *	__kernel_sinl		... sine function on [-pi/4,pi/4]
+ *	__kernel_cosl		... cose function on [-pi/4,pi/4]
+ *	__ieee754_rem_pio2l	... argument reduction routine
+ *
+ * Method.
+ *      Let S,C and T denote the sin, cos and tan respectively on
+ *	[-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ *	in [-pi/4 , +pi/4], and let n = k mod 4.
+ *	We have
+ *
+ *          n        sin(x)      cos(x)        tan(x)
+ *     ----------------------------------------------------------
+ *	    0	       S	   C		 T
+ *	    1	       C	  -S		-1/T
+ *	    2	      -S	  -C		 T
+ *	    3	      -C	   S		-1/T
+ *     ----------------------------------------------------------
+ *
+ * Special cases:
+ *      Let trig be any of sin, cos, or tan.
+ *      trig(+-INF)  is NaN, with signals;
+ *      trig(NaN)    is that NaN;
+ *
+ * Accuracy:
+ *	TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __sinl(long double x)
+#else
+	long double __sinl(x)
+	long double x;
+#endif
+{
+	long double y[2],z=0.0L;
+	int64_t n, ix;
+
+    /* High word of x. */
+	GET_LDOUBLE_MSW64(ix,x);
+
+    /* |x| ~< pi/4 */
+	ix &= 0x7fffffffffffffffLL;
+	if(ix <= 0x3ffe921fb54442d1LL)
+	  return __kernel_sinl(x,z,0);
+
+    /* sin(Inf or NaN) is NaN */
+	else if (ix>=0x7fff000000000000LL) return x-x;
+
+    /* argument reduction needed */
+	else {
+	    n = __ieee754_rem_pio2l(x,y);
+	    switch(n&3) {
+		case 0: return  __kernel_sinl(y[0],y[1],1);
+		case 1: return  __kernel_cosl(y[0],y[1]);
+		case 2: return -__kernel_sinl(y[0],y[1],1);
+		default:
+			return -__kernel_cosl(y[0],y[1]);
+	    }
+	}
+}
+weak_alias (__sinl, sinl)
diff --git a/sysdeps/ieee754/ldbl-128/s_tanl.c b/sysdeps/ieee754/ldbl-128/s_tanl.c
new file mode 100644
index 0000000000..ea9d053d9b
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_tanl.c
@@ -0,0 +1,77 @@
+/* s_tanl.c -- long double version of s_tan.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
+ */
+  
+/* @(#)s_tan.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+/* tanl(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ *	__kernel_tanl		... tangent function on [-pi/4,pi/4]
+ *	__ieee754_rem_pio2l	... argument reduction routine
+ *
+ * Method.
+ *      Let S,C and T denote the sin, cos and tan respectively on
+ *	[-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ *	in [-pi/4 , +pi/4], and let n = k mod 4.
+ *	We have
+ *
+ *          n        sin(x)      cos(x)        tan(x)
+ *     ----------------------------------------------------------
+ *	    0	       S	   C		 T
+ *	    1	       C	  -S		-1/T
+ *	    2	      -S	  -C		 T
+ *	    3	      -C	   S		-1/T
+ *     ----------------------------------------------------------
+ *
+ * Special cases:
+ *      Let trig be any of sin, cos, or tan.
+ *      trig(+-INF)  is NaN, with signals;
+ *      trig(NaN)    is that NaN;
+ *
+ * Accuracy:
+ *	TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+	long double __tanl(long double x)
+#else
+	long double __tanl(x)
+	long double x;
+#endif
+{
+	long double y[2],z=0.0L;
+	int64_t n, ix;
+
+    /* High word of x. */
+	GET_LDOUBLE_MSW64(ix,x);
+
+    /* |x| ~< pi/4 */
+	ix &= 0x7fffffffffffffffLL;
+	if(ix <= 0x3ffe921fb54442d1LL) return __kernel_tanl(x,z,1);
+
+    /* tanl(Inf or NaN) is NaN */
+	else if (ix>=0x7fff000000000000LL) return x-x;		/* NaN */
+
+    /* argument reduction needed */
+	else {
+	    n = __ieee754_rem_pio2l(x,y);
+	    return __kernel_tanl(y[0],y[1],1-((n&1)<<1)); /*   1 -- n even
+							-1 -- n odd */
+	}
+}
+weak_alias (__tanl, tanl)
diff --git a/sysdeps/ieee754/ldbl-128/s_truncl.c b/sysdeps/ieee754/ldbl-128/s_truncl.c
new file mode 100644
index 0000000000..bbff5a42cf
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/s_truncl.c
@@ -0,0 +1,57 @@
+/* Truncate argument to nearest integral value not larger than the argument.
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997 and
+   		  Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+#include "math_private.h"
+
+
+long double
+__truncl (long double x)
+{
+  int32_t j0;
+  u_int64_t i0, i1, sx;
+
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  sx = i0 & 0x8000000000000000ULL;
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  if (j0 < 48)
+    {
+      if (j0 < 0)
+	/* The magnitude of the number is < 1 so the result is +-0.  */
+	SET_LDOUBLE_WORDS64 (x, sx, 0);
+      else
+	SET_LDOUBLE_WORDS64 (x, i0 & ~(0x0000ffffffffffffLL >> j0), 0);
+    }
+  else if (j0 > 111)
+    {
+      if (j0 == 0x4000)
+	/* x is inf or NaN.  */
+	return x + x;
+    }
+  else
+    {
+      SET_LDOUBLE_WORDS64 (x, i0, i1 & ~(0xffffffffffffffffULL >> (j0 - 48)));
+    }
+
+  return x;
+}
+weak_alias (__truncl, truncl)
diff --git a/sysdeps/ieee754/ldbl-128/strtold.c b/sysdeps/ieee754/ldbl-128/strtold.c
new file mode 100644
index 0000000000..32049fc83d
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128/strtold.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1999 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 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+   These macros tell it to produce the `long double' version, `strtold'.  */
+
+# define FLOAT		long double
+# define FLT		LDBL
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define STRTOF	__strtold_l
+# else
+#  define STRTOF	strtold
+# endif
+# define MPN2FLOAT	__mpn_construct_long_double
+# define FLOAT_HUGE_VAL	HUGE_VALL
+# define SET_MANTISSA(flt, mant) \
+  do { union ieee854_long_double u;					      \
+       u.d = (flt);							      \
+       u.ieee.mantissa0 = 0x8000;					      \
+       u.ieee.mantissa1 = 0;						      \
+       u.ieee.mantissa2 = ((mant) >> 32);	      			      \
+       u.ieee.mantissa3 = (mant) & 0xffffffff;				      \
+       (flt) = u.d;							      \
+  } while (0)
+
+# include "strtod.c"
diff --git a/sysdeps/libm-ieee754/e_acoshl.c b/sysdeps/ieee754/ldbl-96/e_acoshl.c
index a60704aa29..a60704aa29 100644
--- a/sysdeps/libm-ieee754/e_acoshl.c
+++ b/sysdeps/ieee754/ldbl-96/e_acoshl.c
diff --git a/sysdeps/libm-ieee754/e_atan2l.c b/sysdeps/ieee754/ldbl-96/e_atan2l.c
index aff7a3d976..aff7a3d976 100644
--- a/sysdeps/libm-ieee754/e_atan2l.c
+++ b/sysdeps/ieee754/ldbl-96/e_atan2l.c
diff --git a/sysdeps/libm-ieee754/e_atanhl.c b/sysdeps/ieee754/ldbl-96/e_atanhl.c
index fdcd1e9fe8..fdcd1e9fe8 100644
--- a/sysdeps/libm-ieee754/e_atanhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_atanhl.c
diff --git a/sysdeps/libm-ieee754/e_coshl.c b/sysdeps/ieee754/ldbl-96/e_coshl.c
index 6af846cb2d..6af846cb2d 100644
--- a/sysdeps/libm-ieee754/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-96/e_coshl.c
diff --git a/sysdeps/libm-ieee754/e_gammal_r.c b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
index 104992450b..104992450b 100644
--- a/sysdeps/libm-ieee754/e_gammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_gammal_r.c
diff --git a/sysdeps/libm-ieee754/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
index 1a40c556dc..1a40c556dc 100644
--- a/sysdeps/libm-ieee754/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c
diff --git a/sysdeps/libm-ieee754/e_remainderl.c b/sysdeps/ieee754/ldbl-96/e_remainderl.c
index e721a6e8cd..e721a6e8cd 100644
--- a/sysdeps/libm-ieee754/e_remainderl.c
+++ b/sysdeps/ieee754/ldbl-96/e_remainderl.c
diff --git a/sysdeps/libm-ieee754/e_sinhl.c b/sysdeps/ieee754/ldbl-96/e_sinhl.c
index 4f9cfe2c38..4f9cfe2c38 100644
--- a/sysdeps/libm-ieee754/e_sinhl.c
+++ b/sysdeps/ieee754/ldbl-96/e_sinhl.c
diff --git a/sysdeps/ieee754/ldbl2mpn.c b/sysdeps/ieee754/ldbl-96/ldbl2mpn.c
index e95895c0af..78e0b7097f 100644
--- a/sysdeps/ieee754/ldbl2mpn.c
+++ b/sysdeps/ieee754/ldbl-96/ldbl2mpn.c
@@ -24,8 +24,6 @@
 #include <math.h>
 #include <stdlib.h>
 
-#ifndef __NO_LONG_DOUBLE_MATH
-
 /* Convert a `long double' in IEEE854 standard double-precision format to a
    multi-precision integer representing the significand scaled up by its
    number of bits (64 for long double) and an integral power of two
@@ -95,5 +93,3 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
 
   return N;
 }
-
-#endif	/* __NO_LONG_DOUBLE_MATH */
diff --git a/sysdeps/ieee754/ldbl-96/math_ldbl.h b/sysdeps/ieee754/ldbl-96/math_ldbl.h
new file mode 100644
index 0000000000..dccc4a1240
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-96/math_ldbl.h
@@ -0,0 +1,98 @@
+#ifndef _MATH_PRIVATE_H_
+#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
+#endif
+
+/* A union which permits us to convert between a long double and
+   three 32 bit ints.  */
+
+#if __FLOAT_WORD_ORDER == BIG_ENDIAN
+
+typedef union
+{
+  long double value;
+  struct
+  {
+    unsigned int sign_exponent:16;
+    unsigned int empty:16;
+    u_int32_t msw;
+    u_int32_t lsw;
+  } parts;
+} ieee_long_double_shape_type;
+
+#endif
+
+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
+
+typedef union
+{
+  long double value;
+  struct
+  {
+    u_int32_t lsw;
+    u_int32_t msw;
+    unsigned int sign_exponent:16;
+    unsigned int empty:16;
+  } parts;
+} ieee_long_double_shape_type;
+
+#endif
+
+/* Get three 32 bit ints from a double.  */
+
+#define GET_LDOUBLE_WORDS(exp,ix0,ix1,d)			\
+do {								\
+  ieee_long_double_shape_type ew_u;				\
+  ew_u.value = (d);						\
+  (exp) = ew_u.parts.sign_exponent;				\
+  (ix0) = ew_u.parts.msw;					\
+  (ix1) = ew_u.parts.lsw;					\
+} while (0)
+
+/* Set a double from two 32 bit ints.  */
+
+#define SET_LDOUBLE_WORDS(d,exp,ix0,ix1)			\
+do {								\
+  ieee_long_double_shape_type iw_u;				\
+  iw_u.parts.sign_exponent = (exp);				\
+  iw_u.parts.msw = (ix0);					\
+  iw_u.parts.lsw = (ix1);					\
+  (d) = iw_u.value;						\
+} while (0)
+
+/* Get the more significant 32 bits of a long double mantissa.  */
+
+#define GET_LDOUBLE_MSW(v,d)					\
+do {								\
+  ieee_long_double_shape_type sh_u;				\
+  sh_u.value = (d);						\
+  (v) = sh_u.parts.msw;						\
+} while (0)
+
+/* Set the more significant 32 bits of a long double mantissa from an int.  */
+
+#define SET_LDOUBLE_MSW(d,v)					\
+do {								\
+  ieee_long_double_shape_type sh_u;				\
+  sh_u.value = (d);						\
+  sh_u.parts.msw = (v);						\
+  (d) = sh_u.value;						\
+} while (0)
+
+/* Get int from the exponent of a long double.  */
+
+#define GET_LDOUBLE_EXP(exp,d)					\
+do {								\
+  ieee_long_double_shape_type ge_u;				\
+  ge_u.value = (d);						\
+  (exp) = ge_u.parts.sign_exponent;				\
+} while (0)
+
+/* Set exponent of a long double from an int.  */
+
+#define SET_LDOUBLE_EXP(d,exp)					\
+do {								\
+  ieee_long_double_shape_type se_u;				\
+  se_u.value = (d);						\
+  se_u.parts.sign_exponent = (exp);				\
+  (d) = se_u.value;						\
+} while (0)
diff --git a/sysdeps/ieee754/mpn2ldbl.c b/sysdeps/ieee754/ldbl-96/mpn2ldbl.c
index 7802355eba..1f049ba12e 100644
--- a/sysdeps/ieee754/mpn2ldbl.c
+++ b/sysdeps/ieee754/ldbl-96/mpn2ldbl.c
@@ -22,8 +22,6 @@
 #include <float.h>
 #include <math.h>
 
-#ifndef __NO_LONG_DOUBLE_MATH
-
 /* Convert a multi-precision integer of the needed number of bits (64 for
    long double) and an integral power of two to a `long double' in IEEE854
    extended-precision format.  */
@@ -47,5 +45,3 @@ __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
 
   return u.d;
 }
-
-#endif /* __NO_LONG_DOUBLE_MATH */
diff --git a/sysdeps/ieee754/ldbl-96/printf_fphex.c b/sysdeps/ieee754/ldbl-96/printf_fphex.c
new file mode 100644
index 0000000000..8dfa387df5
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-96/printf_fphex.c
@@ -0,0 +1,61 @@
+#ifndef LONG_DOUBLE_DENORM_BIAS
+# define LONG_DOUBLE_DENORM_BIAS (IEEE854_LONG_DOUBLE_BIAS - 1)
+#endif
+
+#define PRINT_FPHEX_LONG_DOUBLE							\
+do {										\
+      /* The "strange" 80 bit format on ix86 and m68k has an explicit		\
+	 leading digit in the 64 bit mantissa.  */				\
+      unsigned long long int num;						\
+										\
+      assert (sizeof (long double) == 12);					\
+										\
+      num = (((unsigned long long int) fpnum.ldbl.ieee.mantissa0) << 32		\
+	     | fpnum.ldbl.ieee.mantissa1);					\
+										\
+      zero_mantissa = num == 0;							\
+										\
+      if (sizeof (unsigned long int) > 6)					\
+	numstr = _itoa_word (num, numbuf + sizeof numbuf, 16,			\
+			     info->spec == 'A');				\
+      else									\
+	numstr = _itoa (num, numbuf + sizeof numbuf, 16, info->spec == 'A');	\
+										\
+      /* Fill with zeroes.  */							\
+      while (numstr > numbuf + (sizeof numbuf - 64 / 4))			\
+	*--numstr = '0';							\
+										\
+      /* We use a full nibble for the leading digit.  */			\
+      leading = *numstr++;							\
+										\
+      /* We have 3 bits from the mantissa in the leading nibble.		\
+	 Therefore we are here using `IEEE854_LONG_DOUBLE_BIAS + 3'.  */	\
+      exponent = fpnum.ldbl.ieee.exponent;					\
+										\
+      if (exponent == 0)							\
+	{									\
+	  if (zero_mantissa)							\
+	    expnegative = 0;							\
+	  else									\
+	    {									\
+	      /* This is a denormalized number.  */				\
+	      expnegative = 1;							\
+	      /* This is a hook for the m68k long double format, where the	\
+		 exponent bias is the same for normalized and denormalized	\
+		 numbers.  */							\
+	      exponent = LONG_DOUBLE_DENORM_BIAS + 3;				\
+	    }									\
+	}									\
+      else if (exponent >= IEEE854_LONG_DOUBLE_BIAS + 3)			\
+	{									\
+	  expnegative = 0;							\
+	  exponent -= IEEE854_LONG_DOUBLE_BIAS + 3;				\
+	}									\
+      else									\
+	{									\
+	  expnegative = 1;							\
+	  exponent = -(exponent - (IEEE854_LONG_DOUBLE_BIAS + 3));		\
+	}									\
+} while (0)
+
+#include <sysdeps/generic/printf_fphex.c>
diff --git a/sysdeps/libm-ieee754/s_asinhl.c b/sysdeps/ieee754/ldbl-96/s_asinhl.c
index 6eb434c44b..6eb434c44b 100644
--- a/sysdeps/libm-ieee754/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-96/s_asinhl.c
diff --git a/sysdeps/libm-ieee754/s_cbrtl.c b/sysdeps/ieee754/ldbl-96/s_cbrtl.c
index 1d021b7c3c..1d021b7c3c 100644
--- a/sysdeps/libm-ieee754/s_cbrtl.c
+++ b/sysdeps/ieee754/ldbl-96/s_cbrtl.c
diff --git a/sysdeps/libm-ieee754/s_ceill.c b/sysdeps/ieee754/ldbl-96/s_ceill.c
index d53f3954ba..d53f3954ba 100644
--- a/sysdeps/libm-ieee754/s_ceill.c
+++ b/sysdeps/ieee754/ldbl-96/s_ceill.c
diff --git a/sysdeps/libm-ieee754/s_copysignl.c b/sysdeps/ieee754/ldbl-96/s_copysignl.c
index 9976575b3b..9976575b3b 100644
--- a/sysdeps/libm-ieee754/s_copysignl.c
+++ b/sysdeps/ieee754/ldbl-96/s_copysignl.c
diff --git a/sysdeps/libm-ieee754/s_cosl.c b/sysdeps/ieee754/ldbl-96/s_cosl.c
index 9765f7fd4e..9765f7fd4e 100644
--- a/sysdeps/libm-ieee754/s_cosl.c
+++ b/sysdeps/ieee754/ldbl-96/s_cosl.c
diff --git a/sysdeps/libm-ieee754/s_fabsl.c b/sysdeps/ieee754/ldbl-96/s_fabsl.c
index f7170503fb..f7170503fb 100644
--- a/sysdeps/libm-ieee754/s_fabsl.c
+++ b/sysdeps/ieee754/ldbl-96/s_fabsl.c
diff --git a/sysdeps/libm-ieee754/s_finitel.c b/sysdeps/ieee754/ldbl-96/s_finitel.c
index 6e444e90d0..6e444e90d0 100644
--- a/sysdeps/libm-ieee754/s_finitel.c
+++ b/sysdeps/ieee754/ldbl-96/s_finitel.c
diff --git a/sysdeps/libm-ieee754/s_floorl.c b/sysdeps/ieee754/ldbl-96/s_floorl.c
index fb0c37e801..fb0c37e801 100644
--- a/sysdeps/libm-ieee754/s_floorl.c
+++ b/sysdeps/ieee754/ldbl-96/s_floorl.c
diff --git a/sysdeps/libm-ieee754/s_fpclassifyl.c b/sysdeps/ieee754/ldbl-96/s_fpclassifyl.c
index 4df0b44f75..4df0b44f75 100644
--- a/sysdeps/libm-ieee754/s_fpclassifyl.c
+++ b/sysdeps/ieee754/ldbl-96/s_fpclassifyl.c
diff --git a/sysdeps/libm-ieee754/s_frexpl.c b/sysdeps/ieee754/ldbl-96/s_frexpl.c
index 7a49bc37c8..7a49bc37c8 100644
--- a/sysdeps/libm-ieee754/s_frexpl.c
+++ b/sysdeps/ieee754/ldbl-96/s_frexpl.c
diff --git a/sysdeps/libm-ieee754/s_ilogbl.c b/sysdeps/ieee754/ldbl-96/s_ilogbl.c
index d44229dcda..d44229dcda 100644
--- a/sysdeps/libm-ieee754/s_ilogbl.c
+++ b/sysdeps/ieee754/ldbl-96/s_ilogbl.c
diff --git a/sysdeps/libm-ieee754/s_isinfl.c b/sysdeps/ieee754/ldbl-96/s_isinfl.c
index 6f7c07c5af..6f7c07c5af 100644
--- a/sysdeps/libm-ieee754/s_isinfl.c
+++ b/sysdeps/ieee754/ldbl-96/s_isinfl.c
diff --git a/sysdeps/libm-ieee754/s_isnanl.c b/sysdeps/ieee754/ldbl-96/s_isnanl.c
index ba53faa1fd..0a7ff38433 100644
--- a/sysdeps/libm-ieee754/s_isnanl.c
+++ b/sysdeps/ieee754/ldbl-96/s_isnanl.c
@@ -39,6 +39,6 @@ static char rcsid[] = "$NetBSD: $";
 	lx |= hx & 0x7fffffff;
 	se |= (u_int32_t)(lx|(-lx))>>31;
 	se = 0xfffe - se;
-	return (int)((u_int32_t)(se))>>16;
+	return (int)(((u_int32_t)(se))>>31);
 }
 weak_alias (__isnanl, isnanl)
diff --git a/sysdeps/libm-ieee754/s_llrintl.c b/sysdeps/ieee754/ldbl-96/s_llrintl.c
index 2aeaa1e102..2aeaa1e102 100644
--- a/sysdeps/libm-ieee754/s_llrintl.c
+++ b/sysdeps/ieee754/ldbl-96/s_llrintl.c
diff --git a/sysdeps/libm-ieee754/s_llroundl.c b/sysdeps/ieee754/ldbl-96/s_llroundl.c
index 4a537c871e..4a537c871e 100644
--- a/sysdeps/libm-ieee754/s_llroundl.c
+++ b/sysdeps/ieee754/ldbl-96/s_llroundl.c
diff --git a/sysdeps/libm-ieee754/s_logbl.c b/sysdeps/ieee754/ldbl-96/s_logbl.c
index 2cd9d105f8..2cd9d105f8 100644
--- a/sysdeps/libm-ieee754/s_logbl.c
+++ b/sysdeps/ieee754/ldbl-96/s_logbl.c
diff --git a/sysdeps/libm-ieee754/s_lrintl.c b/sysdeps/ieee754/ldbl-96/s_lrintl.c
index 673cf3d9db..673cf3d9db 100644
--- a/sysdeps/libm-ieee754/s_lrintl.c
+++ b/sysdeps/ieee754/ldbl-96/s_lrintl.c
diff --git a/sysdeps/libm-ieee754/s_lroundl.c b/sysdeps/ieee754/ldbl-96/s_lroundl.c
index 3bdac830b4..3bdac830b4 100644
--- a/sysdeps/libm-ieee754/s_lroundl.c
+++ b/sysdeps/ieee754/ldbl-96/s_lroundl.c
diff --git a/sysdeps/libm-ieee754/s_modfl.c b/sysdeps/ieee754/ldbl-96/s_modfl.c
index ad16ef65ec..fb1b3acf30 100644
--- a/sysdeps/libm-ieee754/s_modfl.c
+++ b/sysdeps/ieee754/ldbl-96/s_modfl.c
@@ -74,7 +74,7 @@ static long double one = 1.0;
 	    i = ((u_int32_t)(0xffffffff))>>(j0-32);
 	    if((i1&i)==0) { 		/* x is integral */
 		*iptr = x;
-		INSERT_WORDS(x,se&0x8000,0);	/* return +-0 */
+		SET_LDOUBLE_WORDS(x,se&0x8000,0,0);	/* return +-0 */
 		return x;
 	    } else {
 		SET_LDOUBLE_WORDS(*iptr,se,i0,i1&(~i));
diff --git a/sysdeps/libm-ieee754/s_nearbyintl.c b/sysdeps/ieee754/ldbl-96/s_nearbyintl.c
index 3b0715e5a5..92c3ebf368 100644
--- a/sysdeps/libm-ieee754/s_nearbyintl.c
+++ b/sysdeps/ieee754/ldbl-96/s_nearbyintl.c
@@ -72,13 +72,8 @@ TWO63[2]={
 		if(((i0&i)|i1)==0) return x; /* x is integral */
 		i>>=1;
 		if(((i0&i)|i1)!=0) {
-		    if(j0==31) i1 = 0x40000000; else
+		    if (j0==30) i1 = 0x40000000; else
 		    i0 = (i0&(~i))|((0x20000000)>>j0);
-		    /* Shouldn't this be
-		         if (j0 >= 30) i1 = 0x80000000 >> (j0 - 30);
-		         i0 = (i0&(~i))|((0x20000000)>>j0);
-		       If yes, this should be correct in s_rint and
-		       s_rintf, too.  -- drepper@cygnus.com */
 		}
 	    }
 	} else if (j0>62) {
diff --git a/sysdeps/libm-ieee754/s_nextafterl.c b/sysdeps/ieee754/ldbl-96/s_nextafterl.c
index aea57e3086..aea57e3086 100644
--- a/sysdeps/libm-ieee754/s_nextafterl.c
+++ b/sysdeps/ieee754/ldbl-96/s_nextafterl.c
diff --git a/sysdeps/libm-ieee754/s_nexttoward.c b/sysdeps/ieee754/ldbl-96/s_nexttoward.c
index 0bb57d8465..debbb86a3c 100644
--- a/sysdeps/libm-ieee754/s_nexttoward.c
+++ b/sysdeps/ieee754/ldbl-96/s_nexttoward.c
@@ -55,8 +55,8 @@ static char rcsid[] = "$NetBSD: $";
 	    if(x2==x) return x2; else return x;	/* raise underflow flag */
 	}
 	if(hx>=0) {				/* x > 0 */
-	    if (esy>=0x8000||((ix>>20)&0x7ff)>iy
-		|| (((ix>>20)&0x7ff)==iy
+	    if (esy>=0x8000||((ix>>20)&0x7ff)>iy-0x3c00
+		|| (((ix>>20)&0x7ff)==iy-0x3c00
 		    && (((hx<<11)|(lx>>21))>(hy&0x7fffffff)
 			|| (((hx<<11)|(lx>>21))==(hy&0x7fffffff)
 			    && (lx<<11)>ly)))) {	/* x > y, x -= ulp */
@@ -67,8 +67,8 @@ static char rcsid[] = "$NetBSD: $";
 		if(lx==0) hx += 1;
 	    }
 	} else {				/* x < 0 */
-	    if (esy<0x8000||((ix>>20)&0x7ff)>iy
-		|| (((ix>>20)&0x7ff)==iy
+	    if (esy<0x8000||((ix>>20)&0x7ff)>iy-0x3c00
+		|| (((ix>>20)&0x7ff)==iy-0x3c00
 		    && (((hx<<11)|(lx>>21))>(hy&0x7fffffff)
 			|| (((hx<<11)|(lx>>21))==(hy&0x7fffffff)
 			    && (lx<<11)>ly))))	{/* x < y, x -= ulp */
diff --git a/sysdeps/libm-ieee754/s_nexttowardf.c b/sysdeps/ieee754/ldbl-96/s_nexttowardf.c
index 71a28987ec..b7e9f00185 100644
--- a/sysdeps/libm-ieee754/s_nexttowardf.c
+++ b/sysdeps/ieee754/ldbl-96/s_nexttowardf.c
@@ -47,16 +47,16 @@ static char rcsid[] = "$NetBSD: $";
 	    if(x2==x) return x2; else return x;	/* raise underflow flag */
 	}
 	if(hx>=0) {				/* x > 0 */
-	    if(esy>=0x8000||((ix>>23)&0xff)>iy
-	       || (((ix>>23)&0xff)==iy
+	    if(esy>=0x8000||((ix>>23)&0xff)>iy-0x3f80
+	       || (((ix>>23)&0xff)==iy-0x3f80
 		   && ((ix&0x7fffff)<<8)>(hy&0x7fffffff))) {/* x > y, x -= ulp */
 		hx -= 1;
 	    } else {				/* x < y, x += ulp */
 		hx += 1;
 	    }
 	} else {				/* x < 0 */
-	    if(esy<0x8000||((ix>>23)&0xff)>iy
-	       || (((ix>>23)&0xff)==iy
+	    if(esy<0x8000||((ix>>23)&0xff)>iy-0x3f80
+	       || (((ix>>23)&0xff)==iy-0x3f80
 		   && ((ix&0x7fffff)<<8)>(hy&0x7fffffff))) {/* x < y, x -= ulp */
 		hx -= 1;
 	    } else {				/* x > y, x += ulp */
diff --git a/sysdeps/libm-ieee754/s_remquol.c b/sysdeps/ieee754/ldbl-96/s_remquol.c
index 88ff298eb6..88ff298eb6 100644
--- a/sysdeps/libm-ieee754/s_remquol.c
+++ b/sysdeps/ieee754/ldbl-96/s_remquol.c
diff --git a/sysdeps/libm-ieee754/s_rintl.c b/sysdeps/ieee754/ldbl-96/s_rintl.c
index 4e957d8373..9d4777dcc4 100644
--- a/sysdeps/libm-ieee754/s_rintl.c
+++ b/sysdeps/ieee754/ldbl-96/s_rintl.c
@@ -71,13 +71,8 @@ TWO63[2]={
 		if(((i0&i)|i1)==0) return x; /* x is integral */
 		i>>=1;
 		if(((i0&i)|i1)!=0) {
-		    if(j0==31) i1 = 0x40000000; else
+		    if(j0==30) i1 = 0x40000000; else
 		    i0 = (i0&(~i))|((0x20000000)>>j0);
-		    /* Shouldn't this be
-		         if (j0 >= 30) i1 = 0x80000000 >> (j0 - 30);
-		         i0 = (i0&(~i))|((0x20000000)>>j0);
-		       If yes, this should be correct in s_rint and
-		       s_rintf, too.  -- drepper@cygnus.com */
 		}
 	    }
 	} else if (j0>62) {
diff --git a/sysdeps/libm-ieee754/s_roundl.c b/sysdeps/ieee754/ldbl-96/s_roundl.c
index d7482b9b7c..d7482b9b7c 100644
--- a/sysdeps/libm-ieee754/s_roundl.c
+++ b/sysdeps/ieee754/ldbl-96/s_roundl.c
diff --git a/sysdeps/libm-ieee754/s_scalblnl.c b/sysdeps/ieee754/ldbl-96/s_scalblnl.c
index b885fbcadb..8e556fabe1 100644
--- a/sysdeps/libm-ieee754/s_scalblnl.c
+++ b/sysdeps/ieee754/ldbl-96/s_scalblnl.c
@@ -64,7 +64,7 @@ tiny   = 1.0e-4900L;
 	    {SET_LDOUBLE_EXP(x,(es&0x8000)|k); return x;}
         if (k <= -63)
 	    return tiny*__copysignl(tiny,x); 	/*underflow*/
-        k += 54;				/* subnormal result */
+        k += 63;				/* subnormal result */
 	SET_LDOUBLE_EXP(x,(es&0x8000)|k);
         return x*twom63;
 }
diff --git a/sysdeps/libm-ieee754/s_scalbnl.c b/sysdeps/ieee754/ldbl-96/s_scalbnl.c
index 32e4fb8cea..34c52e773a 100644
--- a/sysdeps/libm-ieee754/s_scalbnl.c
+++ b/sysdeps/ieee754/ldbl-96/s_scalbnl.c
@@ -64,7 +64,7 @@ tiny   = 1.0e-4900L;
 	    {SET_LDOUBLE_EXP(x,(es&0x8000)|k); return x;}
         if (k <= -63)
 	    return tiny*__copysignl(tiny,x); 	/*underflow*/
-        k += 54;				/* subnormal result */
+        k += 63;				/* subnormal result */
 	SET_LDOUBLE_EXP(x,(es&0x8000)|k);
         return x*twom63;
 }
diff --git a/sysdeps/libm-ieee754/s_signbitl.c b/sysdeps/ieee754/ldbl-96/s_signbitl.c
index b12fdefff4..b12fdefff4 100644
--- a/sysdeps/libm-ieee754/s_signbitl.c
+++ b/sysdeps/ieee754/ldbl-96/s_signbitl.c
diff --git a/sysdeps/libm-ieee754/s_sincosl.c b/sysdeps/ieee754/ldbl-96/s_sincosl.c
index 78c78d5619..78c78d5619 100644
--- a/sysdeps/libm-ieee754/s_sincosl.c
+++ b/sysdeps/ieee754/ldbl-96/s_sincosl.c
diff --git a/sysdeps/libm-ieee754/s_sinl.c b/sysdeps/ieee754/ldbl-96/s_sinl.c
index 4fd48805b4..4fd48805b4 100644
--- a/sysdeps/libm-ieee754/s_sinl.c
+++ b/sysdeps/ieee754/ldbl-96/s_sinl.c
diff --git a/sysdeps/libm-ieee754/s_tanhl.c b/sysdeps/ieee754/ldbl-96/s_tanhl.c
index 1e3dc3b613..1e3dc3b613 100644
--- a/sysdeps/libm-ieee754/s_tanhl.c
+++ b/sysdeps/ieee754/ldbl-96/s_tanhl.c
diff --git a/sysdeps/libm-ieee754/s_tanl.c b/sysdeps/ieee754/ldbl-96/s_tanl.c
index 97a0b27f32..97a0b27f32 100644
--- a/sysdeps/libm-ieee754/s_tanl.c
+++ b/sysdeps/ieee754/ldbl-96/s_tanl.c
diff --git a/sysdeps/libm-ieee754/s_truncl.c b/sysdeps/ieee754/ldbl-96/s_truncl.c
index 59c3b9c173..59c3b9c173 100644
--- a/sysdeps/libm-ieee754/s_truncl.c
+++ b/sysdeps/ieee754/ldbl-96/s_truncl.c
diff --git a/sysdeps/ieee754/ldbl-96/strtold.c b/sysdeps/ieee754/ldbl-96/strtold.c
new file mode 100644
index 0000000000..cabb787d4e
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-96/strtold.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1999 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 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <math.h>
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+   These macros tell it to produce the `long double' version, `strtold'.  */
+
+# define FLOAT		long double
+# define FLT		LDBL
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+#  define STRTOF	__strtold_l
+# else
+#  define STRTOF	strtold
+# endif
+# define MPN2FLOAT	__mpn_construct_long_double
+# define FLOAT_HUGE_VAL	HUGE_VALL
+# define SET_MANTISSA(flt, mant) \
+  do { union ieee854_long_double u;					      \
+       u.d = (flt);							      \
+       if ((mant & 0x7fffffffffffffffULL) == 0)				      \
+	 mant = 0x4000000000000000ULL;					      \
+       u.ieee.mantissa0 = (((mant) >> 32) & 0x7fffffff) | 0x80000000;	      \
+       u.ieee.mantissa1 = (mant) & 0xffffffff;				      \
+       (flt) = u.d;							      \
+  } while (0)
+
+# include "strtod.c"
diff --git a/sysdeps/libm-ieee754/w_expl.c b/sysdeps/ieee754/ldbl-96/w_expl.c
index b8152cea65..b8152cea65 100644
--- a/sysdeps/libm-ieee754/w_expl.c
+++ b/sysdeps/ieee754/ldbl-96/w_expl.c
diff --git a/sysdeps/libm-ieee754/s_lib_version.c b/sysdeps/ieee754/s_lib_version.c
index 121bdaa540..121bdaa540 100644
--- a/sysdeps/libm-ieee754/s_lib_version.c
+++ b/sysdeps/ieee754/s_lib_version.c
diff --git a/sysdeps/libm-ieee754/s_matherr.c b/sysdeps/ieee754/s_matherr.c
index 1ad3eb3334..1ad3eb3334 100644
--- a/sysdeps/libm-ieee754/s_matherr.c
+++ b/sysdeps/ieee754/s_matherr.c
diff --git a/sysdeps/libm-ieee754/s_signgam.c b/sysdeps/ieee754/s_signgam.c
index 021b0ffca1..021b0ffca1 100644
--- a/sysdeps/libm-ieee754/s_signgam.c
+++ b/sysdeps/ieee754/s_signgam.c
diff --git a/sysdeps/m68k/Implies b/sysdeps/m68k/Implies
index 09dd873973..b64e753525 100644
--- a/sysdeps/m68k/Implies
+++ b/sysdeps/m68k/Implies
@@ -1,3 +1,5 @@
 wordsize-32
 # 68k uses IEEE 754 floating point.
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
+ieee754/ldbl-96
diff --git a/sysdeps/m68k/printf_fphex.c b/sysdeps/m68k/printf_fphex.c
index 0e68b16b77..d021a090ab 100644
--- a/sysdeps/m68k/printf_fphex.c
+++ b/sysdeps/m68k/printf_fphex.c
@@ -1,2 +1,2 @@
 #define LONG_DOUBLE_DENORM_BIAS IEEE854_LONG_DOUBLE_BIAS
-#include <sysdeps/generic/printf_fphex.c>
+#include <sysdeps/ieee754/ldbl-96/printf_fphex.c>
diff --git a/sysdeps/m68k/strtold.c b/sysdeps/m68k/strtold.c
index dd7fbce195..f756488275 100644
--- a/sysdeps/m68k/strtold.c
+++ b/sysdeps/m68k/strtold.c
@@ -1,2 +1,2 @@
 #define DENORM_EXP (MIN_EXP - 1)
-#include <sysdeps/generic/strtold.c>
+#include <sysdeps/ieee754/ldbl-96/strtold.c>
diff --git a/sysdeps/mips/Implies b/sysdeps/mips/Implies
index 5aeb9ae460..9f60963329 100644
--- a/sysdeps/mips/Implies
+++ b/sysdeps/mips/Implies
@@ -1,3 +1,4 @@
 wordsize-32
 # MIPS uses IEEE 754 floating point.
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/mips/mips64/Implies b/sysdeps/mips/mips64/Implies
index 06b9091f3b..25106df989 100644
--- a/sysdeps/mips/mips64/Implies
+++ b/sysdeps/mips/mips64/Implies
@@ -1,3 +1,4 @@
 wordsize-64
 # MIPS uses IEEE 754 floating point.
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies
index d6acf04a82..780c4e2467 100644
--- a/sysdeps/powerpc/Implies
+++ b/sysdeps/powerpc/Implies
@@ -1,2 +1,3 @@
 wordsize-32
-ieee754
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/sparc/Implies b/sysdeps/sparc/Implies
deleted file mode 100644
index da719e1707..0000000000
--- a/sysdeps/sparc/Implies
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPARC uses IEEE 754 floating point.
-ieee754
diff --git a/sysdeps/sparc/fpu/bits/mathdef.h b/sysdeps/sparc/fpu/bits/mathdef.h
index c1727b66bb..5294ad4720 100644
--- a/sysdeps/sparc/fpu/bits/mathdef.h
+++ b/sysdeps/sparc/fpu/bits/mathdef.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,6 +20,8 @@
 # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
 #endif
 
+#include <bits/wordsize.h>
+
 /* FIXME! This file describes properties of the compiler, not the machine;
    it should not be part of libc!  */
 
@@ -74,7 +76,12 @@ typedef double double_t;
 #endif	/* ISO C 9X */
 
 #ifndef __NO_LONG_DOUBLE_MATH
-/* Signal that we do not really have a `long double'.  The disables the
-   declaration of all the `long double' function variants.  */
-# define __NO_LONG_DOUBLE_MATH	1
+
+# if __WORDSIZE == 32
+/* Signal that in 32bit ABI we do not really have a `long double'.
+   The disables the declaration of all the `long double' function
+   variants.  */
+#  define __NO_LONG_DOUBLE_MATH	1
+# endif
+
 #endif
diff --git a/sysdeps/sparc/fpu/bits/mathinline.h b/sysdeps/sparc/fpu/bits/mathinline.h
new file mode 100644
index 0000000000..9017be3544
--- /dev/null
+++ b/sysdeps/sparc/fpu/bits/mathinline.h
@@ -0,0 +1,211 @@
+/* Inline math functions for SPARC.
+   Copyright (C) 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
+
+   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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _MATH_H
+# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#if defined __GNUC__
+
+#ifdef __USE_ISOC9X
+
+#if __WORDSIZE == 32
+
+# define __unordered_cmp(x, y) \
+  (__extension__							      \
+   ({ unsigned __r;							      \
+      if (sizeof(x) == 4 && sizeof(y) == 4)				      \
+	{								      \
+	  float __x = (x); float __y = (y);				      \
+	  __asm__("fcmps %1,%2; st %%fsr, %0" : "=m" (__r) : "f" (__x),	      \
+		  "f" (__y) : "cc");					      \
+	}								      \
+      else								      \
+	{								      \
+	  double __x = (x); double __y = (y);				      \
+	  __asm__("fcmpd\t%1,%2\n\tst\t%%fsr,%0" : "=m" (__r) : "f" (__x),    \
+		  "f" (__y) : "cc");					      \
+	}								      \
+      __r; }))
+
+# define isgreater(x, y) ((__unordered_cmp (x, y) & (3 << 10)) == (2 << 10))
+# define isgreaterequal(x, y) ((__unordered_cmp (x, y) & (1 << 10)) == 0)
+# define isless(x, y) ((__unordered_cmp (x, y) & (3 << 10)) == (1 << 10))
+# define islessequal(x, y) ((__unordered_cmp (x, y) & (2 << 10)) == 0)
+# define islessgreater(x, y) (((__unordered_cmp (x, y) + (1 << 10)) & (2 << 10)) != 0)
+# define isunordered(x, y) ((__unordered_cmp (x, y) & (3 << 10)) == (3 << 10))
+
+#else /* sparc64 */
+
+# define __unordered_v9cmp(x, y, op, qop) \
+  (__extension__							      \
+   ({ unsigned __r;						      	      \
+      if (sizeof(x) == 4 && sizeof(y) == 4)				      \
+	{								      \
+	  float __x = (x); float __y = (y);				      \
+	  __asm__("fcmps\t%%fcc3,%1,%2\n\tmov" ## op ## "\t%%fcc3,1,%0"	      \
+		  : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc");	      \
+	}								      \
+      else if (sizeof(x) <= 8 && sizeof(y) <= 8)			      \
+	{								      \
+	  double __x = (x); double __y = (y);				      \
+	  __asm__("fcmpd\t%%fcc3,%1,%2\n\tmov" ## op ## "\t%%fcc3,1,%0"	      \
+		  : "=r" (__r) : "f" (__x), "f" (__y), "0" (0) : "cc");	      \
+	}								      \
+      else								      \
+	{								      \
+	  long double __x = (x); long double __y = (y);			      \
+	  extern int _Qp_cmp(const long double *a, const long double *b);     \
+	  __r = qop;						      	      \
+	}								      \
+      __r; }))
+      
+# define isgreater(x, y) __unordered_v9cmp(x, y, "g", _Qp_cmp (&__x, &__y) == 2)
+# define isgreaterequal(x, y) __unordered_v9cmp(x, y, "ge", (_Qp_cmp (&__x, &__y) & 1) == 0)
+# define isless(x, y) __unordered_v9cmp(x, y, "l", _Qp_cmp (&__x, &__y) == 1)
+# define islessequal(x, y) __unordered_v9cmp(x, y, "le", (_Qp_cmp (&__x, &__y) & 2) == 0)
+# define islessgreater(x, y) __unordered_v9cmp(x, y, "lg", ((_Qp_cmp (&__x, &__y) + 1) & 2) != 0)
+# define isunordered(x, y) __unordered_v9cmp(x, y, "u", _Qp_cmp (&__x, &__y) == 3)
+
+#endif /* sparc64 */
+
+#endif /* __USE_ISOC9X */
+
+#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) && defined __OPTIMIZE__
+
+#ifdef __cplusplus
+# define __MATH_INLINE __inline
+#else
+# define __MATH_INLINE extern __inline
+#endif  /* __cplusplus */
+
+/* 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__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 7))
+   /* Test for negative number.  Used in the signbit() macro.  */
+__MATH_INLINE int
+__signbitf (float __x)
+{
+  __extension__ union { float __f; int __i; } __u = { __f: __x };
+  return __u.__i < 0;
+}
+
+__MATH_INLINE int
+__signbit (double __x)
+{
+  __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
+  return __u.__i[0] < 0;
+}
+
+__MATH_INLINE int
+__signbitl (long double __x)
+{
+  if (sizeof(long double) == 8)
+    {
+      __extension__ union { long double __l; int __i[2]; } __u = { __l: __x };
+      return __u.__i[0] < 0;
+    }
+  else
+    {
+      __extension__ union { long double __l; int __i[4]; } __u = { __l: __x };
+      return __u.__i[0] < 0;
+    }
+}
+
+__MATH_INLINE double
+sqrt(double __x)
+{
+  register double __r;
+  __asm ("fsqrtd %1,%0" : "=f" (__r) : "f" (__x));
+  return __r;
+}
+
+__MATH_INLINE float
+sqrtf(float __x)
+{
+  register float __r;
+  __asm ("fsqrts %1,%0" : "=f" (__r) : "f" (__x));
+  return __r;
+}
+
+#if __WORDSIZE == 64
+__MATH_INLINE long double
+sqrtl(long double __x)
+{
+  long double __r;
+  extern void _Qp_sqrt(long double *, __const__ long double *);
+  _Qp_sqrt(&__r, &__x);
+  return __r;
+}
+#endif /* sparc64 */
+
+/* This code is used internally in the GNU libc.  */
+#ifdef __LIBC_INTERNAL_MATH_INLINES
+__MATH_INLINE double
+__ieee754_sqrt(double __x)
+{
+  register double __r;
+  __asm ("fsqrtd %1,%0" : "=f" (__r) : "f" (__x));
+  return __r;
+}
+
+__MATH_INLINE float
+__ieee754_sqrtf(float __x)
+{
+  register float __r;
+  __asm ("fsqrts %1,%0" : "=f" (__r) : "f" (__x));
+  return __r;
+}
+
+#if __WORDSIZE == 64
+__MATH_INLINE long double
+__ieee754_sqrtl(long double __x)
+{
+  long double __r;
+  extern void _Qp_sqrt(long double *, __const__ long double *);
+  _Qp_sqrt(&__r, &__x);
+  return __r;
+}
+#endif /* sparc64 */
+#endif /* __LIBC_INTERNAL_MATH_INLINES */
+#endif /* gcc 2.8+ */
+
+#ifdef __USE_ISOC9X
+
+__MATH_INLINE double fdim (double __x, double __y);
+__MATH_INLINE double
+fdim (double __x, double __y)
+{
+  return __x < __y ? 0 : __x - __y;
+}
+
+__MATH_INLINE float fdimf (float __x, float __y);
+__MATH_INLINE float
+fdimf (float __x, float __y)
+{
+  return __x < __y ? 0 : __x - __y;
+}
+
+#endif /* __USE_ISOC9X */
+#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
+#endif /* __GNUC__ */
diff --git a/sysdeps/sparc/sparc32/Implies b/sysdeps/sparc/sparc32/Implies
index 39a34c5f57..ae984a8257 100644
--- a/sysdeps/sparc/sparc32/Implies
+++ b/sysdeps/sparc/sparc32/Implies
@@ -1 +1,4 @@
 wordsize-32
+# SPARC uses IEEE 754 floating point.
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/sysdeps/sparc/bits/wordsize.h b/sysdeps/sparc/sparc32/bits/wordsize.h
index 2ad12e1e7f..2ad12e1e7f 100644
--- a/sysdeps/sparc/bits/wordsize.h
+++ b/sysdeps/sparc/sparc32/bits/wordsize.h
diff --git a/sysdeps/sparc/sparc32/fpu/bits/huge_val.h b/sysdeps/sparc/sparc32/fpu/bits/huge_val.h
new file mode 100644
index 0000000000..673d6f0532
--- /dev/null
+++ b/sysdeps/sparc/sparc32/fpu/bits/huge_val.h
@@ -0,0 +1,100 @@
+/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
+   Used by <stdlib.h> and <math.h> functions for overflow.
+   Copyright (C) 1992, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _MATH_H
+# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+#include <features.h>
+#include <bits/wordsize.h>
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity).  */
+
+#ifdef	__GNUC__
+
+# define HUGE_VAL \
+  (__extension__							      \
+   ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \
+    { __l: 0x7ff0000000000000ULL }).__d)
+
+#else /* not GCC */
+
+typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
+
+# define __HUGE_VAL_bytes	{ 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
+
+static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
+# define HUGE_VAL	(__huge_val.__d)
+
+#endif	/* GCC.  */
+
+
+/* ISO C 9X extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */
+
+#ifdef __USE_ISOC9X
+
+# ifdef __GNUC__
+
+#  define HUGE_VALF \
+  (__extension__							      \
+   ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; })    \
+    { __l: 0x7f800000UL }).__d)
+
+# else /* not GCC */
+
+typedef union { unsigned char __c[4]; float __f; } __huge_valf_t;
+
+#  define __HUGE_VALF_bytes	{ 0x7f, 0x80, 0, 0 }
+
+static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
+#  define HUGE_VALF	(__huge_valf.__f)
+
+# endif	/* GCC.  */
+
+#if __WORDSIZE == 32
+
+/* Sparc32 has IEEE 754 64bit long double */
+# define HUGE_VALL HUGE_VAL
+
+#else
+
+/* Sparc64 uses IEEE 754 128bit long double */
+
+#ifdef	__GNUC__
+
+# define HUGE_VALL \
+  (__extension__									\
+   ((union { struct { unsigned long __h, __l; } __i; long double __d; })		\
+    { __i: { __h: 0x7fff000000000000UL, __l: 0 } }).__d)
+              
+#else /* not GCC */
+
+typedef union { unsigned char __c[16]; long double __d; } __huge_vall_t;
+
+# define __HUGE_VALL_bytes	{ 0x7f, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
+# define HUGE_VALL	(__huge_vall.__d)
+
+#endif	/* GCC.  */
+
+#endif
+
+#endif /* __USE_ISOC9X.  */
diff --git a/sysdeps/sparc/sparc64/Implies b/sysdeps/sparc/sparc64/Implies
index a8cae95f9d..5b293ba87d 100644
--- a/sysdeps/sparc/sparc64/Implies
+++ b/sysdeps/sparc/sparc64/Implies
@@ -1 +1,5 @@
 wordsize-64
+# SPARC uses IEEE 754 floating point.
+ieee754/flt-32
+ieee754/dbl-64
+ieee754/ldbl-128
diff --git a/sysdeps/sparc/sparc64/Makefile b/sysdeps/sparc/sparc64/Makefile
index 656274d75c..312e59ea21 100644
--- a/sysdeps/sparc/sparc64/Makefile
+++ b/sysdeps/sparc/sparc64/Makefile
@@ -1,11 +1,2 @@
-# The Sparc`long double' is a distinct type we support.
-#long-double-fcts = yes
-
-# But the support for ieee quads is so bad we just skip the whole thing.
-# XXX This is only a temporary hack.
-omit-long-double-fcts = yes
-
-# But we do need these few functions to even link stdio proggies
-ifeq ($(subdir),math)
-sysdep_routines += s_isinfl s_isnanl s_finitel s_signbitl
-endif
+# The Sparc `long double' is a distinct type we support.
+long-double-fcts = yes
diff --git a/sysdeps/sparc/sparc64/addmul_1.S b/sysdeps/sparc/sparc64/addmul_1.S
index 6782db77df..db8f53656e 100644
--- a/sysdeps/sparc/sparc64/addmul_1.S
+++ b/sysdeps/sparc/sparc64/addmul_1.S
@@ -1,7 +1,7 @@
 /* SPARC v9 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
    add the product to a second limb vector.
 
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
 
    This file is part of the GNU MP Library.
 
@@ -31,29 +31,26 @@
 
 
 ENTRY(__mpn_addmul_1)
-	!#PROLOGUE#	0
 	save	%sp,-192,%sp
-	!#PROLOGUE#	1
 
 	sub	%g0,%i2,%o7
-	sllx	%o7,3,%g5
-	sub	%i1,%g5,%o3
-	sub	%i0,%g5,%o4
 	mov	0,%o0			! zero cy_limb
-
+	sllx	%o7,3,%o7
+	sethi	%hi(0x80000000),%o2
 	srl	%i3,0,%o1		! extract low 32 bits of s2_limb
+	sub	%i1,%o7,%o3
 	srlx	%i3,32,%i3		! extract high 32 bits of s2_limb
-	mov	1,%o2
-	sllx	%o2,32,%o2		! o2 = 0x100000000
+	sub	%i0,%o7,%o4
+	add	%o2,%o2,%o2		! o2 = 0x100000000
 
 	!   hi   !
              !  mid-1 !
              !  mid-2 !
 		 !   lo   !
 1:
-	sllx	%o7,3,%g1
-	ldx	[%o3+%g1],%g5
+	ldx	[%o3+%o7],%g5
 	srl	%g5,0,%i0		! zero hi bits
+	ldx	[%o4+%o7],%l1
 	srlx	%g5,32,%g5
 	mulx	%o1,%i0,%i4		! lo product
 	mulx	%i3,%i0,%i1		! mid-1 product
@@ -64,25 +61,24 @@ ENTRY(__mpn_addmul_1)
 	addcc	%i1,%l2,%i1		! add mid products
 	mov	0,%l0			! we need the carry from that add...
 	movcs	%xcc,%o2,%l0		! ...compute it and...
+	sllx	%i1,32,%i0		!  align low bits of mid product
 	add	%i5,%l0,%i5		! ...add to bit 32 of the hi product
-	sllx	%i1,32,%i0		! align low bits of mid product
 	srl	%i4,0,%g5		! zero high 32 bits of lo product
 	add	%i0,%g5,%i0		! combine into low 64 bits of result
 	srlx	%i1,32,%i1		! extract high bits of mid product...
+	addcc	%i0,%o0,%i0		!  add cy_limb to low 64 bits of result
 	add	%i5,%i1,%i1		! ...and add them to the high result
-	addcc	%i0,%o0,%i0		! add cy_limb to low 64 bits of result
 	mov	0,%g5
 	movcs	%xcc,1,%g5
-	add	%o7,1,%o7
-	ldx	[%o4+%g1],%l1
 	addcc	%l1,%i0,%i0
-	movcs	%xcc,1,%g5
-	stx	%i0,[%o4+%g1]
-	brnz	%o7,1b
+	stx	%i0,[%o4+%o7]
+	add	%g5,1,%l1
+	movcs	%xcc,%l1,%g5
+	addcc	%o7,8,%o7
+	bne,pt	%xcc,1b
 	 add	%i1,%g5,%o0		! compute new cy_limb
 
-	mov	%o0,%i0
 	jmpl	%i7+8, %g0
-	 restore
+	 restore %o0,%g0,%o0
 
 END(__mpn_addmul_1)
diff --git a/sysdeps/sparc/sparc64/bits/wordsize.h b/sysdeps/sparc/sparc64/bits/wordsize.h
new file mode 100644
index 0000000000..2ad12e1e7f
--- /dev/null
+++ b/sysdeps/sparc/sparc64/bits/wordsize.h
@@ -0,0 +1,7 @@
+/* Determine the wordsize from the preprocessor defines.  */
+
+#if defined __sparc_v9__ || defined __arch64__ || defined __sparcv9
+# define __WORDSIZE	64
+#else
+# define __WORDSIZE	32
+#endif
diff --git a/sysdeps/sparc/sparc64/fpu/bits/huge_val.h b/sysdeps/sparc/sparc64/fpu/bits/huge_val.h
new file mode 100644
index 0000000000..673d6f0532
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/bits/huge_val.h
@@ -0,0 +1,100 @@
+/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
+   Used by <stdlib.h> and <math.h> functions for overflow.
+   Copyright (C) 1992, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+   This file is part of the 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,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _MATH_H
+# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+#include <features.h>
+#include <bits/wordsize.h>
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity).  */
+
+#ifdef	__GNUC__
+
+# define HUGE_VAL \
+  (__extension__							      \
+   ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \
+    { __l: 0x7ff0000000000000ULL }).__d)
+
+#else /* not GCC */
+
+typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
+
+# define __HUGE_VAL_bytes	{ 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
+
+static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
+# define HUGE_VAL	(__huge_val.__d)
+
+#endif	/* GCC.  */
+
+
+/* ISO C 9X extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */
+
+#ifdef __USE_ISOC9X
+
+# ifdef __GNUC__
+
+#  define HUGE_VALF \
+  (__extension__							      \
+   ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; })    \
+    { __l: 0x7f800000UL }).__d)
+
+# else /* not GCC */
+
+typedef union { unsigned char __c[4]; float __f; } __huge_valf_t;
+
+#  define __HUGE_VALF_bytes	{ 0x7f, 0x80, 0, 0 }
+
+static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
+#  define HUGE_VALF	(__huge_valf.__f)
+
+# endif	/* GCC.  */
+
+#if __WORDSIZE == 32
+
+/* Sparc32 has IEEE 754 64bit long double */
+# define HUGE_VALL HUGE_VAL
+
+#else
+
+/* Sparc64 uses IEEE 754 128bit long double */
+
+#ifdef	__GNUC__
+
+# define HUGE_VALL \
+  (__extension__									\
+   ((union { struct { unsigned long __h, __l; } __i; long double __d; })		\
+    { __i: { __h: 0x7fff000000000000UL, __l: 0 } }).__d)
+              
+#else /* not GCC */
+
+typedef union { unsigned char __c[16]; long double __d; } __huge_vall_t;
+
+# define __HUGE_VALL_bytes	{ 0x7f, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
+# define HUGE_VALL	(__huge_vall.__d)
+
+#endif	/* GCC.  */
+
+#endif
+
+#endif /* __USE_ISOC9X.  */