From bb803bff5cb97b3de94896aba1c4ec0d67227524 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 6 Jan 2005 11:32:24 +0000 Subject: Update. 2004-12-29 Jakub Jelinek * sysdeps/ia64/fpu/libm_support.h (__libm_error_support): Use libc_hidden_proto instead of HIDDEN_PROTO. * sysdeps/ia64/fpu/libm-symbols.h (HIDDEN_PROTO): Remove. (__libm_error_support): If ASSEMBLER and in libc, define to HIDDEN_JUMPTARGET(__libm_error_support). 2004-12-28 David Mosberger * sysdeps/ia64/fpu/Makefile (duplicated-routines): New macro. (sysdep_routines): Replace libm_ldexp{,f,l} and libm_scalbn{,f,l} with $(duplicated-routines). (libm-sysdep_routines): Likewise, but substitute "s_" prefix for "m_" prefix. 2004-12-27 David Mosberger * sysdeps/ia64/fpu/libm-symbols.h: Add include of and undefine "ret" macro. Add __libm_error_support hidden definitions. * sysdeps/ia64/fpu/e_lgamma_r.c: Remove CVS-id comment. Add missing portion of copyright statement. * sysdeps/ia64/fpu/e_lgammaf_r.c: Likewise. * sysdeps/ia64/fpu/e_lgammal_r.c: Likewise. * sysdeps/ia64/fpu/w_lgamma.c: Remove CVS-id comment. Add missing portion of copyright statement. (__ieee754_lgamma): Rename from lgamma(). Make lgamma() a weak alias. (__ieee754_gamma): Likewise. * sysdeps/ia64/fpu/w_lgammaf.c: Likewise. * sysdeps/ia64/fpu/w_lgammal.c: Likewise. 2004-12-09 H. J. Lu * sysdeps/ia64/fpu/s_nextafterl.c: Remove. * sysdeps/ia64/fpu/s_nexttoward.c: Likewise. * sysdeps/ia64/fpu/s_nexttowardf.c: Likewise. * sysdeps/ia64/fpu/e_atan2l.S: Remove (duplicate of e_atan2l.c). * sysdeps/ia64/fpu/e_expl.S: Likewise. * sysdeps/ia64/fpu/e_logl.c: Remove (conflicts with e_logl.S). 2004-11-18 David Mosberger * sysdeps/ia64/fpu/README: New file. * sysdeps/ia64/fpu/gen_import_file_list: New file. * sysdeps/ia64/fpu/import_check: Likewise. * sysdeps/ia64/fpu/import_diffs: Likewise. * sysdeps/ia64/fpu/import_file.awk: Likewise. * sysdeps/ia64/fpu/import_intel_libm: Likewise. * sysdeps/ia64/fpu/libm-symbols.h: Likewise. * sysdeps/ia64/fpu/e_acos.S: Update from Intel libm v2.1+. * sysdeps/ia64/fpu/e_acosf.S: Likewise. * sysdeps/ia64/fpu/e_acosl.S: Likewise. * sysdeps/ia64/fpu/e_asin.S: Likewise. * sysdeps/ia64/fpu/e_asinf.S: Likewise. * sysdeps/ia64/fpu/e_asinl.S: Likewise. * sysdeps/ia64/fpu/e_atan2.S: Likewise. * sysdeps/ia64/fpu/e_atan2f.S: Likewise. * sysdeps/ia64/fpu/e_cosh.S: Likewise. * sysdeps/ia64/fpu/e_coshf.S: Likewise. * sysdeps/ia64/fpu/e_coshl.S: Likewise. * sysdeps/ia64/fpu/e_exp.S: Likewise. * sysdeps/ia64/fpu/e_expf.S: Likewise. * sysdeps/ia64/fpu/e_fmod.S: Likewise. * sysdeps/ia64/fpu/e_fmodf.S: Likewise. * sysdeps/ia64/fpu/e_fmodl.S: Likewise. * sysdeps/ia64/fpu/e_hypot.S: Likewise. * sysdeps/ia64/fpu/e_hypotf.S: Likewise. * sysdeps/ia64/fpu/e_hypotl.S: Likewise. * sysdeps/ia64/fpu/e_log.S: Likewise. * sysdeps/ia64/fpu/e_log2.S: Likewise. * sysdeps/ia64/fpu/e_log2f.S: Likewise. * sysdeps/ia64/fpu/e_log2l.S: Likewise. * sysdeps/ia64/fpu/e_logf.S: Likewise. * sysdeps/ia64/fpu/e_pow.S: Likewise. * sysdeps/ia64/fpu/e_powf.S: Likewise. * sysdeps/ia64/fpu/e_powl.S: Likewise. * sysdeps/ia64/fpu/e_remainder.S: Likewise. * sysdeps/ia64/fpu/e_remainderf.S: Likewise. * sysdeps/ia64/fpu/e_remainderl.S: Likewise. * sysdeps/ia64/fpu/e_scalb.S: Likewise. * sysdeps/ia64/fpu/e_scalbf.S: Likewise. * sysdeps/ia64/fpu/e_scalbl.S: Likewise. * sysdeps/ia64/fpu/e_sinh.S: Likewise. * sysdeps/ia64/fpu/e_sinhf.S: Likewise. * sysdeps/ia64/fpu/e_sinhl.S: Likewise. * sysdeps/ia64/fpu/e_sqrt.S: Likewise. * sysdeps/ia64/fpu/e_sqrtf.S: Likewise. * sysdeps/ia64/fpu/e_sqrtl.S: Likewise. * sysdeps/ia64/fpu/libm_error.c: Likewise. * sysdeps/ia64/fpu/libm_reduce.c: Likewise. * sysdeps/ia64/fpu/libm_support.h: Likewise. * sysdeps/ia64/fpu/s_atan.S: Likewise. * sysdeps/ia64/fpu/s_atanf.S: Likewise. * sysdeps/ia64/fpu/s_atanl.S: Likewise. * sysdeps/ia64/fpu/s_cbrt.S: Likewise. * sysdeps/ia64/fpu/s_cbrtf.S: Likewise. * sysdeps/ia64/fpu/s_cbrtl.S: Likewise. * sysdeps/ia64/fpu/s_ceil.S: Likewise. * sysdeps/ia64/fpu/s_ceilf.S: Likewise. * sysdeps/ia64/fpu/s_ceill.S: Likewise. * sysdeps/ia64/fpu/s_cos.S: Likewise. * sysdeps/ia64/fpu/s_cosf.S: Likewise. * sysdeps/ia64/fpu/s_cosl.S: Likewise. * sysdeps/ia64/fpu/s_expm1.S: Likewise. * sysdeps/ia64/fpu/s_expm1f.S: Likewise. * sysdeps/ia64/fpu/s_expm1l.S: Likewise. * sysdeps/ia64/fpu/s_fabs.S: Likewise. * sysdeps/ia64/fpu/s_fabsf.S: Likewise. * sysdeps/ia64/fpu/s_fabsl.S: Likewise. * sysdeps/ia64/fpu/s_floor.S: Likewise. * sysdeps/ia64/fpu/s_floorf.S: Likewise. * sysdeps/ia64/fpu/s_floorl.S: Likewise. * sysdeps/ia64/fpu/s_frexp.c: Likewise. * sysdeps/ia64/fpu/s_frexpf.c: Likewise. * sysdeps/ia64/fpu/s_frexpl.c: Likewise. * sysdeps/ia64/fpu/s_ilogb.S: Likewise. * sysdeps/ia64/fpu/s_ilogbf.S: Likewise. * sysdeps/ia64/fpu/s_ilogbl.S: Likewise. * sysdeps/ia64/fpu/s_log1p.S: Likewise. * sysdeps/ia64/fpu/s_log1pf.S: Likewise. * sysdeps/ia64/fpu/s_log1pl.S: Likewise. * sysdeps/ia64/fpu/s_logb.S: Likewise. * sysdeps/ia64/fpu/s_logbf.S: Likewise. * sysdeps/ia64/fpu/s_logbl.S: Likewise. * sysdeps/ia64/fpu/s_modf.S: Likewise. * sysdeps/ia64/fpu/s_modff.S: Likewise. * sysdeps/ia64/fpu/s_modfl.S: Likewise. * sysdeps/ia64/fpu/s_nearbyint.S: Likewise. * sysdeps/ia64/fpu/s_nearbyintf.S: Likewise. * sysdeps/ia64/fpu/s_nearbyintl.S: Likewise. * sysdeps/ia64/fpu/s_rint.S: Likewise. * sysdeps/ia64/fpu/s_rintf.S: Likewise. * sysdeps/ia64/fpu/s_rintl.S: Likewise. * sysdeps/ia64/fpu/s_round.S: Likewise. * sysdeps/ia64/fpu/s_roundf.S: Likewise. * sysdeps/ia64/fpu/s_roundl.S: Likewise. * sysdeps/ia64/fpu/s_significand.S: Likewise. * sysdeps/ia64/fpu/s_significandf.S: Likewise. * sysdeps/ia64/fpu/s_significandl.S: Likewise. * sysdeps/ia64/fpu/s_tan.S: Likewise. * sysdeps/ia64/fpu/s_tanf.S: Likewise. * sysdeps/ia64/fpu/s_tanl.S: Likewise. * sysdeps/ia64/fpu/s_trunc.S: Likewise. * sysdeps/ia64/fpu/s_truncf.S: Likewise. * sysdeps/ia64/fpu/s_truncl.S: Likewise. * sysdeps/ia64/fpu/e_acosh.S: New file from Intel libm v2.1+. * sysdeps/ia64/fpu/e_acoshf.S: Likewise. * sysdeps/ia64/fpu/e_acoshl.S: Likewise. * sysdeps/ia64/fpu/e_atanh.S: Likewise. * sysdeps/ia64/fpu/e_atanhf.S: Likewise. * sysdeps/ia64/fpu/e_atanhl.S: Likewise. * sysdeps/ia64/fpu/e_exp10.S: Likewise. * sysdeps/ia64/fpu/e_exp10f.S: Likewise. * sysdeps/ia64/fpu/e_exp10l.S: Likewise. * sysdeps/ia64/fpu/e_exp2.S: Likewise. * sysdeps/ia64/fpu/e_exp2f.S: Likewise. * sysdeps/ia64/fpu/e_exp2l.S: Likewise. * sysdeps/ia64/fpu/e_lgamma_r.S: Likewise. * sysdeps/ia64/fpu/e_lgammaf_r.S: Likewise. * sysdeps/ia64/fpu/e_lgammal_r.S: Likewise. * sysdeps/ia64/fpu/e_logl.S: Likewise. * sysdeps/ia64/fpu/libm_frexp.S: Likewise. * sysdeps/ia64/fpu/libm_frexpf.S: Likewise. * sysdeps/ia64/fpu/libm_frexpl.S: Likewise. * sysdeps/ia64/fpu/s_libm_ldexp.S: Likewise. * sysdeps/ia64/fpu/s_libm_ldexpf.S: Likewise. * sysdeps/ia64/fpu/s_libm_ldexpl.S: Likewise. * sysdeps/ia64/fpu/s_libm_scalbn.S: Likewise. * sysdeps/ia64/fpu/s_libm_scalbnf.S: Likewise. * sysdeps/ia64/fpu/s_libm_scalbnl.S: Likewise. * sysdeps/ia64/fpu/libm_lgamma.S: Likewise. * sysdeps/ia64/fpu/libm_lgammaf.S: Likewise. * sysdeps/ia64/fpu/libm_lgammal.S: Likewise. * sysdeps/ia64/fpu/libm_sincos.S: Likewise. * sysdeps/ia64/fpu/libm_sincos_large.S: Likewise. * sysdeps/ia64/fpu/libm_sincosf.S: Likewise. * sysdeps/ia64/fpu/libm_sincosl.S: Likewise. * sysdeps/ia64/fpu/libm_scalblnf.S: Likewise. * sysdeps/ia64/fpu/s_asinh.S: Likewise. * sysdeps/ia64/fpu/s_asinhf.S: Likewise. * sysdeps/ia64/fpu/s_asinhl.S: Likewise. * sysdeps/ia64/fpu/s_erf.S: Likewise. * sysdeps/ia64/fpu/s_erfc.S: Likewise. * sysdeps/ia64/fpu/s_erfcf.S: Likewise. * sysdeps/ia64/fpu/s_erfcl.S: Likewise. * sysdeps/ia64/fpu/s_erff.S: Likewise. * sysdeps/ia64/fpu/s_erfl.S: Likewise. * sysdeps/ia64/fpu/s_fdim.S: Likewise. * sysdeps/ia64/fpu/s_fdimf.S: Likewise. * sysdeps/ia64/fpu/s_fdiml.S: Likewise. * sysdeps/ia64/fpu/s_fma.S: Likewise. * sysdeps/ia64/fpu/s_fmaf.S: Likewise. * sysdeps/ia64/fpu/s_fmal.S: Likewise. * sysdeps/ia64/fpu/s_fmax.S: Likewise. * sysdeps/ia64/fpu/s_fmaxf.S: Likewise. * sysdeps/ia64/fpu/s_fmaxl.S: Likewise. * sysdeps/ia64/fpu/s_ldexp.c: Likewise. * sysdeps/ia64/fpu/s_ldexpf.c: Likewise. * sysdeps/ia64/fpu/s_ldexpl.c: Likewise. * sysdeps/ia64/fpu/s_nextafter.S: Likewise. * sysdeps/ia64/fpu/s_nextafterf.S: Likewise. * sysdeps/ia64/fpu/s_nextafterl.S: Likewise. * sysdeps/ia64/fpu/s_nexttoward.S: Likewise. * sysdeps/ia64/fpu/s_nexttowardf.S: Likewise. * sysdeps/ia64/fpu/s_nexttowardl.S: Likewise. * sysdeps/ia64/fpu/s_tanh.S: Likewise. * sysdeps/ia64/fpu/s_tanhf.S: Likewise. * sysdeps/ia64/fpu/s_tanhl.S: Likewise. * sysdeps/ia64/fpu/s_scalblnf.c: Likewise. * sysdeps/ia64/fpu/w_lgamma.c: Likewise. * sysdeps/ia64/fpu/w_lgammaf.c: Likewise. * sysdeps/ia64/fpu/w_lgammal.c: Likewise. * sysdeps/ia64/fpu/w_tgamma.S: Likewise. * sysdeps/ia64/fpu/w_tgammaf.S: Likewise. * sysdeps/ia64/fpu/w_tgammal.S: Likewise. * sysdeps/ia64/fpu/e_gamma_r.c: New empty dummy-file. * sysdeps/ia64/fpu/e_gammaf_r.c: Likewise. * sysdeps/ia64/fpu/e_gammal_r.c: Likewise. * sysdeps/ia64/fpu/w_acosh.c: Likewise. * sysdeps/ia64/fpu/w_acoshf.c: Likewise. * sysdeps/ia64/fpu/w_acoshl.c: Likewise. * sysdeps/ia64/fpu/w_atanh.c: Likewise. * sysdeps/ia64/fpu/w_atanhf.c: Likewise. * sysdeps/ia64/fpu/w_atanhl.c: Likewise. * sysdeps/ia64/fpu/w_exp10.c: Likewise. * sysdeps/ia64/fpu/w_exp10f.c: Likewise. * sysdeps/ia64/fpu/w_exp10l.c: Likewise. * sysdeps/ia64/fpu/w_exp2.c: Likewise. * sysdeps/ia64/fpu/w_exp2f.c: Likewise. * sysdeps/ia64/fpu/w_exp2l.c: Likewise. * sysdeps/ia64/fpu/w_expl.c: Likewise. * sysdeps/ia64/fpu/e_expl.S: Likewise. * sysdeps/ia64/fpu/w_lgamma_r.c: Likewise. * sysdeps/ia64/fpu/w_lgammaf_r.c: Likewise. * sysdeps/ia64/fpu/w_lgammal_r.c: Likewise. * sysdeps/ia64/fpu/w_log2.c: Likewise. * sysdeps/ia64/fpu/w_log2f.c: Likewise. * sysdeps/ia64/fpu/w_log2l.c: Likewise. * sysdeps/ia64/fpu/w_sinh.c: Likewise. * sysdeps/ia64/fpu/w_sinhf.c: Likewise. * sysdeps/ia64/fpu/w_sinhl.c: Likewise. * sysdeps/ia64/fpu/libm_atan2_reg.S: Remove. * sysdeps/ia64/fpu/s_ldexp.S: Likewise. * sysdeps/ia64/fpu/s_ldexpf.S: Likewise. * sysdeps/ia64/fpu/s_ldexpl.S: Likewise. * sysdeps/ia64/fpu/s_scalbn.S: Likewise. * sysdeps/ia64/fpu/s_scalbnf.S: Likewise. * sysdeps/ia64/fpu/s_scalbnl.S: Likewise. * sysdeps/ia64/fpu/s_sincos.c: Make it an empty dummy-file. * sysdeps/ia64/fpu/s_sincosf.c: Likewise. * sysdeps/ia64/fpu/s_sincosl.c: Likewise. * sysdeps/ia64/fpu/e_atan2l.S: Add "Not needed" comment. * sysdeps/ia64/fpu/s_copysign.S: Add __libm_copysign{,f,l} alias for use by libm_error.c * sysdeps/ia64/fpu/Makefile (libm-sysdep_routines): Remove libm_atan2_reg, libm_tan, libm_frexp4{f,l}. Mention s_erfc{,f,l}, libm_frexp{,f,l}, libm_ldexp{,f,l}, libm_sincos{,f,l}, libm_sincos_large, libm_lgamma{,f,l}, libm_scalbn{,f,l}, libm_scalblnf. (sysdep_routines): Remove libm_frexp4{,f,l}. Mention libm_frexp{,f,l}, libm_ldexp{,f,l}, and libm_scalbn{,f,l}. (sysdep-CPPFLAGS): Add -include libm-symbols.h, -D__POSIX__, _D_LIB_VERSIONIMF=_LIB_VERSION, -DSIZE_LONG_INT_64, and -DSIZE_LONG_LONG_INT_64. --- ChangeLog | 275 ++ sysdeps/ia64/fpu/Makefile | 35 +- sysdeps/ia64/fpu/README | 50 + sysdeps/ia64/fpu/e_acos.S | 1500 ++++--- sysdeps/ia64/fpu/e_acosf.S | 79 +- sysdeps/ia64/fpu/e_acosh.S | 1200 ++++++ sysdeps/ia64/fpu/e_acoshf.S | 1029 +++++ sysdeps/ia64/fpu/e_acoshl.S | 1713 ++++++++ sysdeps/ia64/fpu/e_acosl.S | 2916 +++++++++---- sysdeps/ia64/fpu/e_asin.S | 1466 +++---- sysdeps/ia64/fpu/e_asinf.S | 73 +- sysdeps/ia64/fpu/e_asinl.S | 2837 +++++++++--- sysdeps/ia64/fpu/e_atan2.S | 736 ++-- sysdeps/ia64/fpu/e_atan2f.S | 87 +- sysdeps/ia64/fpu/e_atanh.S | 1069 +++++ sysdeps/ia64/fpu/e_atanhf.S | 844 ++++ sysdeps/ia64/fpu/e_atanhl.S | 1155 +++++ sysdeps/ia64/fpu/e_cosh.S | 1477 +++---- sysdeps/ia64/fpu/e_coshf.S | 1447 +++---- sysdeps/ia64/fpu/e_coshl.S | 1661 ++++--- sysdeps/ia64/fpu/e_exp.S | 887 ++-- sysdeps/ia64/fpu/e_exp10.S | 602 +++ sysdeps/ia64/fpu/e_exp10f.S | 561 +++ sysdeps/ia64/fpu/e_exp10l.S | 805 ++++ sysdeps/ia64/fpu/e_exp2.S | 563 +++ sysdeps/ia64/fpu/e_exp2f.S | 538 +++ sysdeps/ia64/fpu/e_exp2l.S | 806 ++++ sysdeps/ia64/fpu/e_expf.S | 949 ++-- sysdeps/ia64/fpu/e_fmod.S | 219 +- sysdeps/ia64/fpu/e_fmodf.S | 226 +- sysdeps/ia64/fpu/e_fmodl.S | 221 +- sysdeps/ia64/fpu/e_gamma_r.c | 1 + sysdeps/ia64/fpu/e_gammaf_r.c | 1 + sysdeps/ia64/fpu/e_gammal_r.c | 1 + sysdeps/ia64/fpu/e_hypot.S | 73 +- sysdeps/ia64/fpu/e_hypotf.S | 74 +- sysdeps/ia64/fpu/e_hypotl.S | 71 +- sysdeps/ia64/fpu/e_lgamma_r.c | 71 + sysdeps/ia64/fpu/e_lgammaf_r.c | 71 + sysdeps/ia64/fpu/e_lgammal_r.c | 70 + sysdeps/ia64/fpu/e_log.S | 2454 +++++++---- sysdeps/ia64/fpu/e_log2.S | 710 +++ sysdeps/ia64/fpu/e_log2f.S | 550 +++ sysdeps/ia64/fpu/e_log2l.S | 816 ++++ sysdeps/ia64/fpu/e_logf.S | 1787 ++++---- sysdeps/ia64/fpu/e_logl.S | 1198 +++++ sysdeps/ia64/fpu/e_pow.S | 1641 ++++--- sysdeps/ia64/fpu/e_powf.S | 1573 ++++--- sysdeps/ia64/fpu/e_powl.S | 4078 ++++++++---------- sysdeps/ia64/fpu/e_remainder.S | 114 +- sysdeps/ia64/fpu/e_remainderf.S | 114 +- sysdeps/ia64/fpu/e_remainderl.S | 116 +- sysdeps/ia64/fpu/e_scalb.S | 69 +- sysdeps/ia64/fpu/e_scalbf.S | 69 +- sysdeps/ia64/fpu/e_scalbl.S | 69 +- sysdeps/ia64/fpu/e_sinh.S | 1652 +++---- sysdeps/ia64/fpu/e_sinhf.S | 1614 +++---- sysdeps/ia64/fpu/e_sinhl.S | 1778 ++++---- sysdeps/ia64/fpu/e_sqrt.S | 69 +- sysdeps/ia64/fpu/e_sqrtf.S | 70 +- sysdeps/ia64/fpu/e_sqrtl.S | 68 +- sysdeps/ia64/fpu/gen_import_file_list | 80 + sysdeps/ia64/fpu/import_check | 81 + sysdeps/ia64/fpu/import_diffs | 7 + sysdeps/ia64/fpu/import_file.awk | 148 + sysdeps/ia64/fpu/import_intel_libm | 42 + sysdeps/ia64/fpu/libm-symbols.h | 64 + sysdeps/ia64/fpu/libm_atan2_reg.S | 1234 ------ sysdeps/ia64/fpu/libm_error.c | 1853 +++++--- sysdeps/ia64/fpu/libm_frexp.S | 209 + sysdeps/ia64/fpu/libm_frexpf.S | 209 + sysdeps/ia64/fpu/libm_frexpl.S | 209 + sysdeps/ia64/fpu/libm_lgamma.S | 3594 +++++++++++++++ sysdeps/ia64/fpu/libm_lgammaf.S | 2189 ++++++++++ sysdeps/ia64/fpu/libm_lgammal.S | 7676 +++++++++++++++++++++++++++++++++ sysdeps/ia64/fpu/libm_reduce.S | 1500 +++---- sysdeps/ia64/fpu/libm_scalblnf.S | 382 ++ sysdeps/ia64/fpu/libm_sincos.S | 782 ++++ sysdeps/ia64/fpu/libm_sincos_large.S | 2754 ++++++++++++ sysdeps/ia64/fpu/libm_sincosf.S | 744 ++++ sysdeps/ia64/fpu/libm_sincosl.S | 2527 +++++++++++ sysdeps/ia64/fpu/libm_support.h | 570 ++- sysdeps/ia64/fpu/s_asinh.S | 1136 +++++ sysdeps/ia64/fpu/s_asinhf.S | 937 ++++ sysdeps/ia64/fpu/s_asinhl.S | 1346 ++++++ sysdeps/ia64/fpu/s_atan.S | 1193 +++-- sysdeps/ia64/fpu/s_atanf.S | 75 +- sysdeps/ia64/fpu/s_atanl.S | 2171 +++++----- sysdeps/ia64/fpu/s_cbrt.S | 1224 +++--- sysdeps/ia64/fpu/s_cbrtf.S | 1226 +++--- sysdeps/ia64/fpu/s_cbrtl.S | 64 +- sysdeps/ia64/fpu/s_ceil.S | 274 +- sysdeps/ia64/fpu/s_ceilf.S | 274 +- sysdeps/ia64/fpu/s_ceill.S | 276 +- sysdeps/ia64/fpu/s_copysign.S | 6 +- sysdeps/ia64/fpu/s_cos.S | 3490 ++------------- sysdeps/ia64/fpu/s_cosf.S | 1181 ++--- sysdeps/ia64/fpu/s_cosl.S | 2756 ++++++------ sysdeps/ia64/fpu/s_erf.S | 924 ++++ sysdeps/ia64/fpu/s_erfc.S | 1197 +++++ sysdeps/ia64/fpu/s_erfcf.S | 981 +++++ sysdeps/ia64/fpu/s_erfcl.S | 2064 +++++++++ sysdeps/ia64/fpu/s_erff.S | 557 +++ sysdeps/ia64/fpu/s_erfl.S | 1239 ++++++ sysdeps/ia64/fpu/s_expm1.S | 2142 +++------ sysdeps/ia64/fpu/s_expm1f.S | 2114 +++------ sysdeps/ia64/fpu/s_expm1l.S | 1950 ++++----- sysdeps/ia64/fpu/s_fabs.S | 116 +- sysdeps/ia64/fpu/s_fabsf.S | 83 +- sysdeps/ia64/fpu/s_fabsl.S | 83 +- sysdeps/ia64/fpu/s_fdim.S | 227 + sysdeps/ia64/fpu/s_fdimf.S | 227 + sysdeps/ia64/fpu/s_fdiml.S | 227 + sysdeps/ia64/fpu/s_floor.S | 252 +- sysdeps/ia64/fpu/s_floorf.S | 250 +- sysdeps/ia64/fpu/s_floorl.S | 250 +- sysdeps/ia64/fpu/s_fma.S | 71 + sysdeps/ia64/fpu/s_fmaf.S | 71 + sysdeps/ia64/fpu/s_fmal.S | 71 + sysdeps/ia64/fpu/s_fmax.S | 114 + sysdeps/ia64/fpu/s_fmaxf.S | 114 + sysdeps/ia64/fpu/s_fmaxl.S | 114 + sysdeps/ia64/fpu/s_frexp.c | 33 +- sysdeps/ia64/fpu/s_frexpf.c | 33 +- sysdeps/ia64/fpu/s_frexpl.c | 33 +- sysdeps/ia64/fpu/s_ilogb.S | 306 +- sysdeps/ia64/fpu/s_ilogbf.S | 306 +- sysdeps/ia64/fpu/s_ilogbl.S | 306 +- sysdeps/ia64/fpu/s_ldexp.S | 380 -- sysdeps/ia64/fpu/s_ldexp.c | 62 + sysdeps/ia64/fpu/s_ldexpf.S | 379 -- sysdeps/ia64/fpu/s_ldexpf.c | 62 + sysdeps/ia64/fpu/s_ldexpl.S | 379 -- sysdeps/ia64/fpu/s_ldexpl.c | 62 + sysdeps/ia64/fpu/s_libm_ldexp.S | 382 ++ sysdeps/ia64/fpu/s_libm_ldexpf.S | 380 ++ sysdeps/ia64/fpu/s_libm_ldexpl.S | 381 ++ sysdeps/ia64/fpu/s_libm_scalbn.S | 381 ++ sysdeps/ia64/fpu/s_libm_scalbnf.S | 381 ++ sysdeps/ia64/fpu/s_libm_scalbnl.S | 381 ++ sysdeps/ia64/fpu/s_log1p.S | 2312 ++++------ sysdeps/ia64/fpu/s_log1pf.S | 2028 +++------ sysdeps/ia64/fpu/s_log1pl.S | 2067 ++++----- sysdeps/ia64/fpu/s_logb.S | 315 +- sysdeps/ia64/fpu/s_logbf.S | 334 +- sysdeps/ia64/fpu/s_logbl.S | 311 +- sysdeps/ia64/fpu/s_modf.S | 47 +- sysdeps/ia64/fpu/s_modff.S | 47 +- sysdeps/ia64/fpu/s_modfl.S | 49 +- sysdeps/ia64/fpu/s_nearbyint.S | 46 +- sysdeps/ia64/fpu/s_nearbyintf.S | 46 +- sysdeps/ia64/fpu/s_nearbyintl.S | 46 +- sysdeps/ia64/fpu/s_nextafter.S | 495 +++ sysdeps/ia64/fpu/s_nextafterf.S | 502 +++ sysdeps/ia64/fpu/s_nextafterl.S | 501 +++ sysdeps/ia64/fpu/s_nextafterl.c | 1 - sysdeps/ia64/fpu/s_nexttoward.S | 488 +++ sysdeps/ia64/fpu/s_nexttoward.c | 1 - sysdeps/ia64/fpu/s_nexttowardf.S | 494 +++ sysdeps/ia64/fpu/s_nexttowardf.c | 1 - sysdeps/ia64/fpu/s_nexttowardl.S | 492 +++ sysdeps/ia64/fpu/s_rint.S | 287 +- sysdeps/ia64/fpu/s_rintf.S | 289 +- sysdeps/ia64/fpu/s_rintl.S | 289 +- sysdeps/ia64/fpu/s_round.S | 316 +- sysdeps/ia64/fpu/s_roundf.S | 316 +- sysdeps/ia64/fpu/s_roundl.S | 316 +- sysdeps/ia64/fpu/s_scalblnf.c | 62 + sysdeps/ia64/fpu/s_scalbn.S | 379 -- sysdeps/ia64/fpu/s_scalbn.c | 62 + sysdeps/ia64/fpu/s_scalbnf.S | 379 -- sysdeps/ia64/fpu/s_scalbnf.c | 62 + sysdeps/ia64/fpu/s_scalbnl.S | 379 -- sysdeps/ia64/fpu/s_scalbnl.c | 62 + sysdeps/ia64/fpu/s_significand.S | 61 +- sysdeps/ia64/fpu/s_significandf.S | 61 +- sysdeps/ia64/fpu/s_significandl.S | 61 +- sysdeps/ia64/fpu/s_sincos.c | 10 +- sysdeps/ia64/fpu/s_sincosf.c | 10 +- sysdeps/ia64/fpu/s_sincosl.c | 10 +- sysdeps/ia64/fpu/s_tan.S | 554 ++- sysdeps/ia64/fpu/s_tanf.S | 1003 ++--- sysdeps/ia64/fpu/s_tanh.S | 987 +++++ sysdeps/ia64/fpu/s_tanhf.S | 581 +++ sysdeps/ia64/fpu/s_tanhl.S | 1347 ++++++ sysdeps/ia64/fpu/s_tanl.S | 3032 +++++++------ sysdeps/ia64/fpu/s_trunc.S | 207 +- sysdeps/ia64/fpu/s_truncf.S | 207 +- sysdeps/ia64/fpu/s_truncl.S | 209 +- sysdeps/ia64/fpu/t_exp.c | 1 + sysdeps/ia64/fpu/w_acosh.c | 1 + sysdeps/ia64/fpu/w_acoshf.c | 1 + sysdeps/ia64/fpu/w_acoshl.c | 1 + sysdeps/ia64/fpu/w_atanh.c | 1 + sysdeps/ia64/fpu/w_atanhf.c | 1 + sysdeps/ia64/fpu/w_atanhl.c | 1 + sysdeps/ia64/fpu/w_exp10.c | 1 + sysdeps/ia64/fpu/w_exp10f.c | 1 + sysdeps/ia64/fpu/w_exp10l.c | 1 + sysdeps/ia64/fpu/w_exp2.c | 1 + sysdeps/ia64/fpu/w_exp2f.c | 1 + sysdeps/ia64/fpu/w_exp2l.c | 1 + sysdeps/ia64/fpu/w_expl.c | 1 + sysdeps/ia64/fpu/w_lgamma.c | 80 + sysdeps/ia64/fpu/w_lgamma_r.c | 1 + sysdeps/ia64/fpu/w_lgammaf.c | 80 + sysdeps/ia64/fpu/w_lgammaf_r.c | 1 + sysdeps/ia64/fpu/w_lgammal.c | 79 + sysdeps/ia64/fpu/w_lgammal_r.c | 1 + sysdeps/ia64/fpu/w_log2.c | 1 + sysdeps/ia64/fpu/w_log2f.c | 1 + sysdeps/ia64/fpu/w_log2l.c | 1 + sysdeps/ia64/fpu/w_sinh.c | 1 + sysdeps/ia64/fpu/w_sinhf.c | 1 + sysdeps/ia64/fpu/w_sinhl.c | 1 + sysdeps/ia64/fpu/w_tgamma.S | 1835 ++++++++ sysdeps/ia64/fpu/w_tgammaf.S | 1328 ++++++ sysdeps/ia64/fpu/w_tgammal.S | 4485 +++++++++++++++++++ 218 files changed, 99736 insertions(+), 43951 deletions(-) create mode 100644 sysdeps/ia64/fpu/README create mode 100644 sysdeps/ia64/fpu/e_acosh.S create mode 100644 sysdeps/ia64/fpu/e_acoshf.S create mode 100644 sysdeps/ia64/fpu/e_acoshl.S create mode 100644 sysdeps/ia64/fpu/e_atanh.S create mode 100644 sysdeps/ia64/fpu/e_atanhf.S create mode 100644 sysdeps/ia64/fpu/e_atanhl.S create mode 100644 sysdeps/ia64/fpu/e_exp10.S create mode 100644 sysdeps/ia64/fpu/e_exp10f.S create mode 100644 sysdeps/ia64/fpu/e_exp10l.S create mode 100644 sysdeps/ia64/fpu/e_exp2.S create mode 100644 sysdeps/ia64/fpu/e_exp2f.S create mode 100644 sysdeps/ia64/fpu/e_exp2l.S create mode 100644 sysdeps/ia64/fpu/e_gamma_r.c create mode 100644 sysdeps/ia64/fpu/e_gammaf_r.c create mode 100644 sysdeps/ia64/fpu/e_gammal_r.c create mode 100644 sysdeps/ia64/fpu/e_lgamma_r.c create mode 100644 sysdeps/ia64/fpu/e_lgammaf_r.c create mode 100644 sysdeps/ia64/fpu/e_lgammal_r.c create mode 100644 sysdeps/ia64/fpu/e_log2.S create mode 100644 sysdeps/ia64/fpu/e_log2f.S create mode 100644 sysdeps/ia64/fpu/e_log2l.S create mode 100644 sysdeps/ia64/fpu/e_logl.S create mode 100644 sysdeps/ia64/fpu/gen_import_file_list create mode 100644 sysdeps/ia64/fpu/import_check create mode 100644 sysdeps/ia64/fpu/import_diffs create mode 100644 sysdeps/ia64/fpu/import_file.awk create mode 100644 sysdeps/ia64/fpu/import_intel_libm create mode 100644 sysdeps/ia64/fpu/libm-symbols.h delete mode 100644 sysdeps/ia64/fpu/libm_atan2_reg.S create mode 100644 sysdeps/ia64/fpu/libm_frexp.S create mode 100644 sysdeps/ia64/fpu/libm_frexpf.S create mode 100644 sysdeps/ia64/fpu/libm_frexpl.S create mode 100644 sysdeps/ia64/fpu/libm_lgamma.S create mode 100644 sysdeps/ia64/fpu/libm_lgammaf.S create mode 100644 sysdeps/ia64/fpu/libm_lgammal.S create mode 100644 sysdeps/ia64/fpu/libm_scalblnf.S create mode 100644 sysdeps/ia64/fpu/libm_sincos.S create mode 100644 sysdeps/ia64/fpu/libm_sincos_large.S create mode 100644 sysdeps/ia64/fpu/libm_sincosf.S create mode 100644 sysdeps/ia64/fpu/libm_sincosl.S create mode 100644 sysdeps/ia64/fpu/s_asinh.S create mode 100644 sysdeps/ia64/fpu/s_asinhf.S create mode 100644 sysdeps/ia64/fpu/s_asinhl.S create mode 100644 sysdeps/ia64/fpu/s_erf.S create mode 100644 sysdeps/ia64/fpu/s_erfc.S create mode 100644 sysdeps/ia64/fpu/s_erfcf.S create mode 100644 sysdeps/ia64/fpu/s_erfcl.S create mode 100644 sysdeps/ia64/fpu/s_erff.S create mode 100644 sysdeps/ia64/fpu/s_erfl.S create mode 100644 sysdeps/ia64/fpu/s_fdim.S create mode 100644 sysdeps/ia64/fpu/s_fdimf.S create mode 100644 sysdeps/ia64/fpu/s_fdiml.S create mode 100644 sysdeps/ia64/fpu/s_fma.S create mode 100644 sysdeps/ia64/fpu/s_fmaf.S create mode 100644 sysdeps/ia64/fpu/s_fmal.S create mode 100644 sysdeps/ia64/fpu/s_fmax.S create mode 100644 sysdeps/ia64/fpu/s_fmaxf.S create mode 100644 sysdeps/ia64/fpu/s_fmaxl.S delete mode 100644 sysdeps/ia64/fpu/s_ldexp.S create mode 100644 sysdeps/ia64/fpu/s_ldexp.c delete mode 100644 sysdeps/ia64/fpu/s_ldexpf.S create mode 100644 sysdeps/ia64/fpu/s_ldexpf.c delete mode 100644 sysdeps/ia64/fpu/s_ldexpl.S create mode 100644 sysdeps/ia64/fpu/s_ldexpl.c create mode 100644 sysdeps/ia64/fpu/s_libm_ldexp.S create mode 100644 sysdeps/ia64/fpu/s_libm_ldexpf.S create mode 100644 sysdeps/ia64/fpu/s_libm_ldexpl.S create mode 100644 sysdeps/ia64/fpu/s_libm_scalbn.S create mode 100644 sysdeps/ia64/fpu/s_libm_scalbnf.S create mode 100644 sysdeps/ia64/fpu/s_libm_scalbnl.S create mode 100644 sysdeps/ia64/fpu/s_nextafter.S create mode 100644 sysdeps/ia64/fpu/s_nextafterf.S create mode 100644 sysdeps/ia64/fpu/s_nextafterl.S delete mode 100644 sysdeps/ia64/fpu/s_nextafterl.c create mode 100644 sysdeps/ia64/fpu/s_nexttoward.S delete mode 100644 sysdeps/ia64/fpu/s_nexttoward.c create mode 100644 sysdeps/ia64/fpu/s_nexttowardf.S delete mode 100644 sysdeps/ia64/fpu/s_nexttowardf.c create mode 100644 sysdeps/ia64/fpu/s_nexttowardl.S create mode 100644 sysdeps/ia64/fpu/s_scalblnf.c delete mode 100644 sysdeps/ia64/fpu/s_scalbn.S create mode 100644 sysdeps/ia64/fpu/s_scalbn.c delete mode 100644 sysdeps/ia64/fpu/s_scalbnf.S create mode 100644 sysdeps/ia64/fpu/s_scalbnf.c delete mode 100644 sysdeps/ia64/fpu/s_scalbnl.S create mode 100644 sysdeps/ia64/fpu/s_scalbnl.c create mode 100644 sysdeps/ia64/fpu/s_tanh.S create mode 100644 sysdeps/ia64/fpu/s_tanhf.S create mode 100644 sysdeps/ia64/fpu/s_tanhl.S create mode 100644 sysdeps/ia64/fpu/t_exp.c create mode 100644 sysdeps/ia64/fpu/w_acosh.c create mode 100644 sysdeps/ia64/fpu/w_acoshf.c create mode 100644 sysdeps/ia64/fpu/w_acoshl.c create mode 100644 sysdeps/ia64/fpu/w_atanh.c create mode 100644 sysdeps/ia64/fpu/w_atanhf.c create mode 100644 sysdeps/ia64/fpu/w_atanhl.c create mode 100644 sysdeps/ia64/fpu/w_exp10.c create mode 100644 sysdeps/ia64/fpu/w_exp10f.c create mode 100644 sysdeps/ia64/fpu/w_exp10l.c create mode 100644 sysdeps/ia64/fpu/w_exp2.c create mode 100644 sysdeps/ia64/fpu/w_exp2f.c create mode 100644 sysdeps/ia64/fpu/w_exp2l.c create mode 100644 sysdeps/ia64/fpu/w_expl.c create mode 100644 sysdeps/ia64/fpu/w_lgamma.c create mode 100644 sysdeps/ia64/fpu/w_lgamma_r.c create mode 100644 sysdeps/ia64/fpu/w_lgammaf.c create mode 100644 sysdeps/ia64/fpu/w_lgammaf_r.c create mode 100644 sysdeps/ia64/fpu/w_lgammal.c create mode 100644 sysdeps/ia64/fpu/w_lgammal_r.c create mode 100644 sysdeps/ia64/fpu/w_log2.c create mode 100644 sysdeps/ia64/fpu/w_log2f.c create mode 100644 sysdeps/ia64/fpu/w_log2l.c create mode 100644 sysdeps/ia64/fpu/w_sinh.c create mode 100644 sysdeps/ia64/fpu/w_sinhf.c create mode 100644 sysdeps/ia64/fpu/w_sinhl.c create mode 100644 sysdeps/ia64/fpu/w_tgamma.S create mode 100644 sysdeps/ia64/fpu/w_tgammaf.S create mode 100644 sysdeps/ia64/fpu/w_tgammal.S diff --git a/ChangeLog b/ChangeLog index 58c6bbb510..e251cc7e2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,278 @@ +2004-12-29 Jakub Jelinek + + * sysdeps/ia64/fpu/libm_support.h (__libm_error_support): Use + libc_hidden_proto instead of HIDDEN_PROTO. + * sysdeps/ia64/fpu/libm-symbols.h (HIDDEN_PROTO): Remove. + (__libm_error_support): If ASSEMBLER and in libc, define to + HIDDEN_JUMPTARGET(__libm_error_support). + +2004-12-28 David Mosberger + + * sysdeps/ia64/fpu/Makefile (duplicated-routines): New macro. + (sysdep_routines): Replace libm_ldexp{,f,l} and libm_scalbn{,f,l} + with $(duplicated-routines). + (libm-sysdep_routines): Likewise, but substitute "s_" prefix for + "m_" prefix. + +2004-12-27 David Mosberger + + * sysdeps/ia64/fpu/libm-symbols.h: Add include of and + undefine "ret" macro. Add __libm_error_support hidden definitions. + + * sysdeps/ia64/fpu/e_lgamma_r.c: Remove CVS-id comment. Add + missing portion of copyright statement. + * sysdeps/ia64/fpu/e_lgammaf_r.c: Likewise. + * sysdeps/ia64/fpu/e_lgammal_r.c: Likewise. + + * sysdeps/ia64/fpu/w_lgamma.c: Remove CVS-id comment. Add + missing portion of copyright statement. + (__ieee754_lgamma): Rename from lgamma(). Make lgamma() a weak alias. + (__ieee754_gamma): Likewise. + * sysdeps/ia64/fpu/w_lgammaf.c: Likewise. + * sysdeps/ia64/fpu/w_lgammal.c: Likewise. + +2004-12-09 H. J. Lu + + * sysdeps/ia64/fpu/s_nextafterl.c: Remove. + * sysdeps/ia64/fpu/s_nexttoward.c: Likewise. + * sysdeps/ia64/fpu/s_nexttowardf.c: Likewise. + * sysdeps/ia64/fpu/e_atan2l.S: Remove (duplicate of e_atan2l.c). + * sysdeps/ia64/fpu/e_expl.S: Likewise. + * sysdeps/ia64/fpu/e_logl.c: Remove (conflicts with e_logl.S). + +2004-11-18 David Mosberger + + * sysdeps/ia64/fpu/README: New file. + * sysdeps/ia64/fpu/gen_import_file_list: New file. + * sysdeps/ia64/fpu/import_check: Likewise. + * sysdeps/ia64/fpu/import_diffs: Likewise. + * sysdeps/ia64/fpu/import_file.awk: Likewise. + * sysdeps/ia64/fpu/import_intel_libm: Likewise. + * sysdeps/ia64/fpu/libm-symbols.h: Likewise. + + * sysdeps/ia64/fpu/e_acos.S: Update from Intel libm v2.1+. + * sysdeps/ia64/fpu/e_acosf.S: Likewise. + * sysdeps/ia64/fpu/e_acosl.S: Likewise. + * sysdeps/ia64/fpu/e_asin.S: Likewise. + * sysdeps/ia64/fpu/e_asinf.S: Likewise. + * sysdeps/ia64/fpu/e_asinl.S: Likewise. + * sysdeps/ia64/fpu/e_atan2.S: Likewise. + * sysdeps/ia64/fpu/e_atan2f.S: Likewise. + * sysdeps/ia64/fpu/e_cosh.S: Likewise. + * sysdeps/ia64/fpu/e_coshf.S: Likewise. + * sysdeps/ia64/fpu/e_coshl.S: Likewise. + * sysdeps/ia64/fpu/e_exp.S: Likewise. + * sysdeps/ia64/fpu/e_expf.S: Likewise. + * sysdeps/ia64/fpu/e_fmod.S: Likewise. + * sysdeps/ia64/fpu/e_fmodf.S: Likewise. + * sysdeps/ia64/fpu/e_fmodl.S: Likewise. + * sysdeps/ia64/fpu/e_hypot.S: Likewise. + * sysdeps/ia64/fpu/e_hypotf.S: Likewise. + * sysdeps/ia64/fpu/e_hypotl.S: Likewise. + * sysdeps/ia64/fpu/e_log.S: Likewise. + * sysdeps/ia64/fpu/e_log2.S: Likewise. + * sysdeps/ia64/fpu/e_log2f.S: Likewise. + * sysdeps/ia64/fpu/e_log2l.S: Likewise. + * sysdeps/ia64/fpu/e_logf.S: Likewise. + * sysdeps/ia64/fpu/e_pow.S: Likewise. + * sysdeps/ia64/fpu/e_powf.S: Likewise. + * sysdeps/ia64/fpu/e_powl.S: Likewise. + * sysdeps/ia64/fpu/e_remainder.S: Likewise. + * sysdeps/ia64/fpu/e_remainderf.S: Likewise. + * sysdeps/ia64/fpu/e_remainderl.S: Likewise. + * sysdeps/ia64/fpu/e_scalb.S: Likewise. + * sysdeps/ia64/fpu/e_scalbf.S: Likewise. + * sysdeps/ia64/fpu/e_scalbl.S: Likewise. + * sysdeps/ia64/fpu/e_sinh.S: Likewise. + * sysdeps/ia64/fpu/e_sinhf.S: Likewise. + * sysdeps/ia64/fpu/e_sinhl.S: Likewise. + * sysdeps/ia64/fpu/e_sqrt.S: Likewise. + * sysdeps/ia64/fpu/e_sqrtf.S: Likewise. + * sysdeps/ia64/fpu/e_sqrtl.S: Likewise. + * sysdeps/ia64/fpu/libm_error.c: Likewise. + * sysdeps/ia64/fpu/libm_reduce.c: Likewise. + * sysdeps/ia64/fpu/libm_support.h: Likewise. + * sysdeps/ia64/fpu/s_atan.S: Likewise. + * sysdeps/ia64/fpu/s_atanf.S: Likewise. + * sysdeps/ia64/fpu/s_atanl.S: Likewise. + * sysdeps/ia64/fpu/s_cbrt.S: Likewise. + * sysdeps/ia64/fpu/s_cbrtf.S: Likewise. + * sysdeps/ia64/fpu/s_cbrtl.S: Likewise. + * sysdeps/ia64/fpu/s_ceil.S: Likewise. + * sysdeps/ia64/fpu/s_ceilf.S: Likewise. + * sysdeps/ia64/fpu/s_ceill.S: Likewise. + * sysdeps/ia64/fpu/s_cos.S: Likewise. + * sysdeps/ia64/fpu/s_cosf.S: Likewise. + * sysdeps/ia64/fpu/s_cosl.S: Likewise. + * sysdeps/ia64/fpu/s_expm1.S: Likewise. + * sysdeps/ia64/fpu/s_expm1f.S: Likewise. + * sysdeps/ia64/fpu/s_expm1l.S: Likewise. + * sysdeps/ia64/fpu/s_fabs.S: Likewise. + * sysdeps/ia64/fpu/s_fabsf.S: Likewise. + * sysdeps/ia64/fpu/s_fabsl.S: Likewise. + * sysdeps/ia64/fpu/s_floor.S: Likewise. + * sysdeps/ia64/fpu/s_floorf.S: Likewise. + * sysdeps/ia64/fpu/s_floorl.S: Likewise. + * sysdeps/ia64/fpu/s_frexp.c: Likewise. + * sysdeps/ia64/fpu/s_frexpf.c: Likewise. + * sysdeps/ia64/fpu/s_frexpl.c: Likewise. + * sysdeps/ia64/fpu/s_ilogb.S: Likewise. + * sysdeps/ia64/fpu/s_ilogbf.S: Likewise. + * sysdeps/ia64/fpu/s_ilogbl.S: Likewise. + * sysdeps/ia64/fpu/s_log1p.S: Likewise. + * sysdeps/ia64/fpu/s_log1pf.S: Likewise. + * sysdeps/ia64/fpu/s_log1pl.S: Likewise. + * sysdeps/ia64/fpu/s_logb.S: Likewise. + * sysdeps/ia64/fpu/s_logbf.S: Likewise. + * sysdeps/ia64/fpu/s_logbl.S: Likewise. + * sysdeps/ia64/fpu/s_modf.S: Likewise. + * sysdeps/ia64/fpu/s_modff.S: Likewise. + * sysdeps/ia64/fpu/s_modfl.S: Likewise. + * sysdeps/ia64/fpu/s_nearbyint.S: Likewise. + * sysdeps/ia64/fpu/s_nearbyintf.S: Likewise. + * sysdeps/ia64/fpu/s_nearbyintl.S: Likewise. + * sysdeps/ia64/fpu/s_rint.S: Likewise. + * sysdeps/ia64/fpu/s_rintf.S: Likewise. + * sysdeps/ia64/fpu/s_rintl.S: Likewise. + * sysdeps/ia64/fpu/s_round.S: Likewise. + * sysdeps/ia64/fpu/s_roundf.S: Likewise. + * sysdeps/ia64/fpu/s_roundl.S: Likewise. + * sysdeps/ia64/fpu/s_significand.S: Likewise. + * sysdeps/ia64/fpu/s_significandf.S: Likewise. + * sysdeps/ia64/fpu/s_significandl.S: Likewise. + * sysdeps/ia64/fpu/s_tan.S: Likewise. + * sysdeps/ia64/fpu/s_tanf.S: Likewise. + * sysdeps/ia64/fpu/s_tanl.S: Likewise. + * sysdeps/ia64/fpu/s_trunc.S: Likewise. + * sysdeps/ia64/fpu/s_truncf.S: Likewise. + * sysdeps/ia64/fpu/s_truncl.S: Likewise. + + * sysdeps/ia64/fpu/e_acosh.S: New file from Intel libm v2.1+. + * sysdeps/ia64/fpu/e_acoshf.S: Likewise. + * sysdeps/ia64/fpu/e_acoshl.S: Likewise. + * sysdeps/ia64/fpu/e_atanh.S: Likewise. + * sysdeps/ia64/fpu/e_atanhf.S: Likewise. + * sysdeps/ia64/fpu/e_atanhl.S: Likewise. + * sysdeps/ia64/fpu/e_exp10.S: Likewise. + * sysdeps/ia64/fpu/e_exp10f.S: Likewise. + * sysdeps/ia64/fpu/e_exp10l.S: Likewise. + * sysdeps/ia64/fpu/e_exp2.S: Likewise. + * sysdeps/ia64/fpu/e_exp2f.S: Likewise. + * sysdeps/ia64/fpu/e_exp2l.S: Likewise. + * sysdeps/ia64/fpu/e_lgamma_r.S: Likewise. + * sysdeps/ia64/fpu/e_lgammaf_r.S: Likewise. + * sysdeps/ia64/fpu/e_lgammal_r.S: Likewise. + * sysdeps/ia64/fpu/e_logl.S: Likewise. + * sysdeps/ia64/fpu/libm_frexp.S: Likewise. + * sysdeps/ia64/fpu/libm_frexpf.S: Likewise. + * sysdeps/ia64/fpu/libm_frexpl.S: Likewise. + * sysdeps/ia64/fpu/s_libm_ldexp.S: Likewise. + * sysdeps/ia64/fpu/s_libm_ldexpf.S: Likewise. + * sysdeps/ia64/fpu/s_libm_ldexpl.S: Likewise. + * sysdeps/ia64/fpu/s_libm_scalbn.S: Likewise. + * sysdeps/ia64/fpu/s_libm_scalbnf.S: Likewise. + * sysdeps/ia64/fpu/s_libm_scalbnl.S: Likewise. + * sysdeps/ia64/fpu/libm_lgamma.S: Likewise. + * sysdeps/ia64/fpu/libm_lgammaf.S: Likewise. + * sysdeps/ia64/fpu/libm_lgammal.S: Likewise. + * sysdeps/ia64/fpu/libm_sincos.S: Likewise. + * sysdeps/ia64/fpu/libm_sincos_large.S: Likewise. + * sysdeps/ia64/fpu/libm_sincosf.S: Likewise. + * sysdeps/ia64/fpu/libm_sincosl.S: Likewise. + * sysdeps/ia64/fpu/libm_scalblnf.S: Likewise. + * sysdeps/ia64/fpu/s_asinh.S: Likewise. + * sysdeps/ia64/fpu/s_asinhf.S: Likewise. + * sysdeps/ia64/fpu/s_asinhl.S: Likewise. + * sysdeps/ia64/fpu/s_erf.S: Likewise. + * sysdeps/ia64/fpu/s_erfc.S: Likewise. + * sysdeps/ia64/fpu/s_erfcf.S: Likewise. + * sysdeps/ia64/fpu/s_erfcl.S: Likewise. + * sysdeps/ia64/fpu/s_erff.S: Likewise. + * sysdeps/ia64/fpu/s_erfl.S: Likewise. + * sysdeps/ia64/fpu/s_fdim.S: Likewise. + * sysdeps/ia64/fpu/s_fdimf.S: Likewise. + * sysdeps/ia64/fpu/s_fdiml.S: Likewise. + * sysdeps/ia64/fpu/s_fma.S: Likewise. + * sysdeps/ia64/fpu/s_fmaf.S: Likewise. + * sysdeps/ia64/fpu/s_fmal.S: Likewise. + * sysdeps/ia64/fpu/s_fmax.S: Likewise. + * sysdeps/ia64/fpu/s_fmaxf.S: Likewise. + * sysdeps/ia64/fpu/s_fmaxl.S: Likewise. + * sysdeps/ia64/fpu/s_ldexp.c: Likewise. + * sysdeps/ia64/fpu/s_ldexpf.c: Likewise. + * sysdeps/ia64/fpu/s_ldexpl.c: Likewise. + * sysdeps/ia64/fpu/s_nextafter.S: Likewise. + * sysdeps/ia64/fpu/s_nextafterf.S: Likewise. + * sysdeps/ia64/fpu/s_nextafterl.S: Likewise. + * sysdeps/ia64/fpu/s_nexttoward.S: Likewise. + * sysdeps/ia64/fpu/s_nexttowardf.S: Likewise. + * sysdeps/ia64/fpu/s_nexttowardl.S: Likewise. + * sysdeps/ia64/fpu/s_tanh.S: Likewise. + * sysdeps/ia64/fpu/s_tanhf.S: Likewise. + * sysdeps/ia64/fpu/s_tanhl.S: Likewise. + * sysdeps/ia64/fpu/s_scalblnf.c: Likewise. + * sysdeps/ia64/fpu/w_lgamma.c: Likewise. + * sysdeps/ia64/fpu/w_lgammaf.c: Likewise. + * sysdeps/ia64/fpu/w_lgammal.c: Likewise. + * sysdeps/ia64/fpu/w_tgamma.S: Likewise. + * sysdeps/ia64/fpu/w_tgammaf.S: Likewise. + * sysdeps/ia64/fpu/w_tgammal.S: Likewise. + + * sysdeps/ia64/fpu/e_gamma_r.c: New empty dummy-file. + * sysdeps/ia64/fpu/e_gammaf_r.c: Likewise. + * sysdeps/ia64/fpu/e_gammal_r.c: Likewise. + * sysdeps/ia64/fpu/w_acosh.c: Likewise. + * sysdeps/ia64/fpu/w_acoshf.c: Likewise. + * sysdeps/ia64/fpu/w_acoshl.c: Likewise. + * sysdeps/ia64/fpu/w_atanh.c: Likewise. + * sysdeps/ia64/fpu/w_atanhf.c: Likewise. + * sysdeps/ia64/fpu/w_atanhl.c: Likewise. + * sysdeps/ia64/fpu/w_exp10.c: Likewise. + * sysdeps/ia64/fpu/w_exp10f.c: Likewise. + * sysdeps/ia64/fpu/w_exp10l.c: Likewise. + * sysdeps/ia64/fpu/w_exp2.c: Likewise. + * sysdeps/ia64/fpu/w_exp2f.c: Likewise. + * sysdeps/ia64/fpu/w_exp2l.c: Likewise. + * sysdeps/ia64/fpu/w_expl.c: Likewise. + * sysdeps/ia64/fpu/e_expl.S: Likewise. + * sysdeps/ia64/fpu/w_lgamma_r.c: Likewise. + * sysdeps/ia64/fpu/w_lgammaf_r.c: Likewise. + * sysdeps/ia64/fpu/w_lgammal_r.c: Likewise. + * sysdeps/ia64/fpu/w_log2.c: Likewise. + * sysdeps/ia64/fpu/w_log2f.c: Likewise. + * sysdeps/ia64/fpu/w_log2l.c: Likewise. + * sysdeps/ia64/fpu/w_sinh.c: Likewise. + * sysdeps/ia64/fpu/w_sinhf.c: Likewise. + * sysdeps/ia64/fpu/w_sinhl.c: Likewise. + + * sysdeps/ia64/fpu/libm_atan2_reg.S: Remove. + * sysdeps/ia64/fpu/s_ldexp.S: Likewise. + * sysdeps/ia64/fpu/s_ldexpf.S: Likewise. + * sysdeps/ia64/fpu/s_ldexpl.S: Likewise. + * sysdeps/ia64/fpu/s_scalbn.S: Likewise. + * sysdeps/ia64/fpu/s_scalbnf.S: Likewise. + * sysdeps/ia64/fpu/s_scalbnl.S: Likewise. + + * sysdeps/ia64/fpu/s_sincos.c: Make it an empty dummy-file. + * sysdeps/ia64/fpu/s_sincosf.c: Likewise. + * sysdeps/ia64/fpu/s_sincosl.c: Likewise. + + * sysdeps/ia64/fpu/e_atan2l.S: Add "Not needed" comment. + + * sysdeps/ia64/fpu/s_copysign.S: Add __libm_copysign{,f,l} + alias for use by libm_error.c + + * sysdeps/ia64/fpu/Makefile (libm-sysdep_routines): Remove + libm_atan2_reg, libm_tan, libm_frexp4{f,l}. + Mention s_erfc{,f,l}, libm_frexp{,f,l}, libm_ldexp{,f,l}, + libm_sincos{,f,l}, libm_sincos_large, libm_lgamma{,f,l}, + libm_scalbn{,f,l}, libm_scalblnf. + (sysdep_routines): Remove libm_frexp4{,f,l}. + Mention libm_frexp{,f,l}, libm_ldexp{,f,l}, and libm_scalbn{,f,l}. + (sysdep-CPPFLAGS): Add -include libm-symbols.h, -D__POSIX__, + _D_LIB_VERSIONIMF=_LIB_VERSION, -DSIZE_LONG_INT_64, and + -DSIZE_LONG_LONG_INT_64. + 2005-01-05 Steven Munroe * elf/rtld.c (dl_main) [NEED_DL_SYSINFO_DSO]: Insure l_map_end and diff --git a/sysdeps/ia64/fpu/Makefile b/sysdeps/ia64/fpu/Makefile index 6d1b0c1717..7ec30c43d3 100644 --- a/sysdeps/ia64/fpu/Makefile +++ b/sysdeps/ia64/fpu/Makefile @@ -1,8 +1,33 @@ ifeq ($(subdir),math) -libm-sysdep_routines += libm_atan2_reg s_matherrf s_matherrl libm_reduce \ - libm_tan libm_error \ - libm_frexp4 libm_frexp4f libm_frexp4l +# +# Some files which need to go both into libc and libm have external +# dependencies which need to be resolved differently for libc +# vs. libm. For example, inside libc, __libm_error_support needs to +# resolve to HIDDEN_JUMPTARGET(__libm_error_support) whereas within +# libm it always resolves to __libm_error_support. Such files need to +# be compiled twice. Fortunately, math/Makefile already has logic to +# support this: if a file starts with "s_", make will automatically +# generate a matching file whose name starts with "m_" which simply +# includes the corresponding "s_" file. +# +duplicated-routines = s_libm_ldexp s_libm_ldexpf s_libm_ldexpl \ + s_libm_scalbn s_libm_scalbnf s_libm_scalbnl -sysdep_routines += libm_frexp4 libm_frexp4f libm_frexp4l libc_libm_error -sysdep-CPPFLAGS += -DSIZE_INT_32 +libm-sysdep_routines += s_erfc s_erfcf s_erfcl \ + s_matherrf s_matherrl libm_reduce \ + libm_error \ + libm_frexp libm_frexpf libm_frexpl \ + libm_sincos libm_sincosf libm_sincosl \ + libm_sincos_large \ + libm_lgamma libm_lgammaf libm_lgammal \ + libm_scalblnf \ + $(duplicated-routines:s_%=m_%) + +sysdep_routines += libc_libm_error libm_frexp libm_frexpf libm_frexpl \ + $(duplicated-routines) + +sysdep-CPPFLAGS += -include libm-symbols.h \ + -D__POSIX__ \ + -D_LIB_VERSIONIMF=_LIB_VERSION \ + -DSIZE_INT_32 -DSIZE_LONG_INT_64 -DSIZE_LONG_LONG_INT_64 endif diff --git a/sysdeps/ia64/fpu/README b/sysdeps/ia64/fpu/README new file mode 100644 index 0000000000..6f4af0678a --- /dev/null +++ b/sysdeps/ia64/fpu/README @@ -0,0 +1,50 @@ + ---------------------------------------------------------- + Notes on how to update libm based on Intel's libm releases + ---------------------------------------------------------- + +This source code in this directory is currently based on Intel libm +v2.1 as available from: + + http://www.intel.com/software/products/opensource/libraries/num.htm + +To ease importing, fix some bugs, and simplify integration into libc, +it is also necessary to apply the patch at: + + ftp://ftp.hpl.hp.com/pub/linux-ia64/intel-libm-041228.diff.gz + +The expectation is that Intel will integrate most if not all of these +changes into future releases of libm, so this patching step can +hopefully be omitted in the future. + +Once the patched libm sources are extracted in a directory $LIBM, they +can be imported into the libc source tree at $LIBC with the following +step: + + $ cd $LIBC/src/sysdep/ia64/fpu + $ ./import_intel_libm $LIBM + +This should produce a number of "Importing..." messages, without +showing any errors. + +At this point, you should be able to build glibc in the usual fashion. +We assume you do this in directory $OBJ. Once the build has +completed, run "make check" to verify that all (math) checks succeed. +If these checks succeed, you should also run the following commands to +verify that the new libm doesn't pollute the name-space and has proper +size-info for the data objects: + + $ cd $LIBC/src/sysdep/ia64/fpu + $ import_check $OBJ/math/ + +There should be no (unexpected) errors reported by this script. + +As an optional step, you may also want to confirm that the new libm +exports the exact same global symbols as the old one. + +If you want to see the changes introduced by the "import_intel_libm" +script, you can run the commands: + + $ cd $LIBC/src/sysdep/ia64/fpu + $ import_diffs + +That's it. diff --git a/sysdeps/ia64/fpu/e_acos.S b/sysdeps/ia64/fpu/e_acos.S index 7e83811727..b515f01a1e 100644 --- a/sysdeps/ia64/fpu/e_acos.S +++ b/sysdeps/ia64/fpu/e_acos.S @@ -1,10 +1,10 @@ .file "acos.s" -// Copyright (C) 2000, 2001, Intel Corporation + +// Copyright (c) 2000 - 2003 Intel Corporation // All rights reserved. // -// Contributed 2/2/2000 by John Harrison, Ted Kubaska, Bob Norin, Shane Story, -// and Ping Tak Peter Tang of the Computational Software Lab, Intel Corporation. +// Contributed 2000 by the Intel Numerics Group, Intel Corporation // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -20,9 +20,7 @@ // * The name of Intel Corporation may not be used to endorse or promote // products derived from this software without specific prior written // permission. -// -// WARRANTY DISCLAIMER -// + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -37,838 +35,800 @@ // // Intel Corporation is the author of this code, and requests that all // problem reports or change requests be submitted to it directly at -// http://developer.intel.com/opensource. +// http://www.intel.com/software/products/opensource/libraries/num.htm. // History //============================================================== -// 2/02/00 Initial version -// 8/17/00 New and much faster algorithm. -// 8/30/00 Avoided bank conflicts on loads, shortened |x|=1 and x=0 paths, +// 02/02/00 Initial version +// 08/17/00 New and much faster algorithm. +// 08/30/00 Avoided bank conflicts on loads, shortened |x|=1 and x=0 paths, // fixed mfb split issue stalls. +// 05/20/02 Cleaned up namespace and sf0 syntax +// 08/02/02 New and much faster algorithm II +// 02/06/03 Reordered header: .section, .global, .proc, .align // Description //========================================= -// The acos function computes the principle value of the arc sine of x. +// The acos function computes the principal value of the arc cosine of x. +// acos(0) returns Pi/2, acos(1) returns 0, acos(-1) returns Pi. // A doman error occurs for arguments not in the range [-1,+1]. +// +// The acos function returns the arc cosine in the range [0, Pi] radians. +// +// There are 8 paths: +// 1. x = +/-0.0 +// Return acos(x) = Pi/2 + x +// +// 2. 0.0 < |x| < 0.625 +// Return acos(x) = Pi/2 - x - x^3 *PolA(x^2) +// where PolA(x^2) = A3 + A5*x^2 + A7*x^4 +...+ A35*x^32 +// +// 3. 0.625 <=|x| < 1.0 +// Return acos(x) = Pi/2 - asin(x) = +// = Pi/2 - sign(x) * ( Pi/2 - sqrt(R) * PolB(R)) +// Where R = 1 - |x|, +// PolB(R) = B0 + B1*R + B2*R^2 +...+B12*R^12 +// +// sqrt(R) is approximated using the following sequence: +// y0 = (1 + eps)/sqrt(R) - initial approximation by frsqrta, +// |eps| < 2^(-8) +// Then 3 iterations are used to refine the result: +// H0 = 0.5*y0 +// S0 = R*y0 +// +// d0 = 0.5 - H0*S0 +// H1 = H0 + d0*H0 +// S1 = S0 + d0*S0 +// +// d1 = 0.5 - H1*S1 +// H2 = H1 + d0*H1 +// S2 = S1 + d0*S1 +// +// d2 = 0.5 - H2*S2 +// S3 = S3 + d2*S3 +// +// S3 approximates sqrt(R) with enough accuracy for this algorithm +// +// So, the result should be reconstracted as follows: +// acos(x) = Pi/2 - sign(x) * (Pi/2 - S3*PolB(R)) +// +// But for optimization purposes the reconstruction step is slightly +// changed: +// acos(x) = Cpi + sign(x)*PolB(R)*S2 - sign(x)*d2*S2*PolB(R) +// where Cpi = 0 if x > 0 and Cpi = Pi if x < 0 +// +// 4. |x| = 1.0 +// Return acos(1.0) = 0.0, acos(-1.0) = Pi +// +// 5. 1.0 < |x| <= +INF +// A doman error occurs for arguments not in the range [-1,+1] +// +// 6. x = [S,Q]NaN +// Return acos(x) = QNaN +// +// 7. x is denormal +// Return acos(x) = Pi/2 - x, +// +// 8. x is unnormal +// Normalize input in f8 and return to the very beginning of the function +// +// Registers used +//============================================================== +// Floating Point registers used: +// f8, input, output +// f6, f7, f9 -> f15, f32 -> f64 -// The acos function returns the arc cosine in the range [0, +pi] radians. -// acos(1) returns +0, acos(-1) returns pi, acos(0) returns pi/2. -// acos(x) returns a Nan and raises the invalid exception for |x| >1 +// General registers used: +// r3, r21 -> r31, r32 -> r38 -// The acos function is just like asin except that pi/2 is added at the end. +// Predicate registers used: +// p0, p6 -> p14 // // Assembly macros //========================================= - -#include "libm_support.h" - -// predicate registers -//acos_pred_LEsqrt2by2 = p7 -//acos_pred_GTsqrt2by2 = p8 - -// integer registers -ASIN_Addr1 = r33 -ASIN_Addr2 = r34 -ASIN_FFFE = r35 - -GR_SAVE_B0 = r36 -GR_SAVE_PFS = r37 -GR_SAVE_GP = r38 - -GR_Parameter_X = r39 -GR_Parameter_Y = r40 -GR_Parameter_RESULT = r41 -GR_Parameter_Tag = r42 - -// floating point registers -acos_coeff_P1 = f32 -acos_coeff_P2 = f33 -acos_coeff_P3 = f34 -acos_coeff_P4 = f35 - -acos_coeff_P5 = f36 -acos_coeff_P6 = f37 -acos_coeff_P7 = f38 -acos_coeff_P8 = f39 -acos_coeff_P9 = f40 - -acos_coeff_P10 = f41 -acos_coeff_P11 = f42 -acos_coeff_P12 = f43 -acos_coeff_P13 = f44 -acos_coeff_P14 = f45 - -acos_coeff_P15 = f46 -acos_coeff_P16 = f47 -acos_coeff_P17 = f48 -acos_coeff_P18 = f49 -acos_coeff_P19 = f50 - -acos_coeff_P20 = f51 -acos_coeff_P21 = f52 -acos_const_sqrt2by2 = f53 -acos_const_piby2 = f54 -acos_abs_x = f55 - -acos_tx = f56 -acos_tx2 = f57 -acos_tx3 = f58 -acos_tx4 = f59 -acos_tx8 = f60 - -acos_tx11 = f61 -acos_1poly_p8 = f62 -acos_1poly_p19 = f63 -acos_1poly_p4 = f64 -acos_1poly_p15 = f65 - -acos_1poly_p6 = f66 -acos_1poly_p17 = f67 -acos_1poly_p0 = f68 -acos_1poly_p11 = f69 -acos_1poly_p2 = f70 - -acos_1poly_p13 = f71 -acos_series_tx = f72 -acos_t = f73 -acos_t2 = f74 -acos_t3 = f75 - -acos_t4 = f76 -acos_t8 = f77 -acos_t11 = f78 -acos_poly_p8 = f79 -acos_poly_p19 = f80 - -acos_poly_p4 = f81 -acos_poly_p15 = f82 -acos_poly_p6 = f83 -acos_poly_p17 = f84 -acos_poly_p0 = f85 - -acos_poly_p11 = f86 -acos_poly_p2 = f87 -acos_poly_p13 = f88 -acos_series_t = f89 -acos_1by2 = f90 - -acos_3by2 = f91 -acos_5by2 = f92 -acos_11by4 = f93 -acos_35by8 = f94 -acos_63by8 = f95 - -acos_231by16 = f96 -acos_y0 = f97 -acos_H0 = f98 -acos_S0 = f99 -acos_d = f100 - -acos_l1 = f101 -acos_d2 = f102 -acos_T0 = f103 -acos_d1 = f104 -acos_e0 = f105 - -acos_l2 = f106 -acos_d3 = f107 -acos_T3 = f108 -acos_S1 = f109 -acos_e1 = f110 - -acos_z = f111 -answer2 = f112 -acos_sgn_x = f113 -acos_429by16 = f114 -acos_18by4 = f115 - -acos_3by4 = f116 -acos_l3 = f117 -acos_T6 = f118 -acos_const_add = f119 +// integer registers used +// scratch +rTblAddr = r3 + +rPiBy2Ptr = r21 +rTmpPtr3 = r22 +rDenoBound = r23 +rOne = r24 +rAbsXBits = r25 +rHalf = r26 +r0625 = r27 +rSign = r28 +rXBits = r29 +rTmpPtr2 = r30 +rTmpPtr1 = r31 + +// stacked +GR_SAVE_PFS = r32 +GR_SAVE_B0 = r33 +GR_SAVE_GP = r34 +GR_Parameter_X = r35 +GR_Parameter_Y = r36 +GR_Parameter_RESULT = r37 +GR_Parameter_TAG = r38 + +// floating point registers used +FR_X = f10 +FR_Y = f1 +FR_RESULT = f8 + + +// scratch +fXSqr = f6 +fXCube = f7 +fXQuadr = f9 +f1pX = f10 +f1mX = f11 +f1pXRcp = f12 +f1mXRcp = f13 +fH = f14 +fS = f15 +// stacked +fA3 = f32 +fB1 = f32 +fA5 = f33 +fB2 = f33 +fA7 = f34 +fPiBy2 = f34 +fA9 = f35 +fA11 = f36 +fB10 = f35 +fB11 = f36 +fA13 = f37 +fA15 = f38 +fB4 = f37 +fB5 = f38 +fA17 = f39 +fA19 = f40 +fB6 = f39 +fB7 = f40 +fA21 = f41 +fA23 = f42 +fB3 = f41 +fB8 = f42 +fA25 = f43 +fA27 = f44 +fB9 = f43 +fB12 = f44 +fA29 = f45 +fA31 = f46 +fA33 = f47 +fA35 = f48 +fBaseP = f49 +fB0 = f50 +fSignedS = f51 +fD = f52 +fHalf = f53 +fR = f54 +fCloseTo1Pol = f55 +fSignX = f56 +fDenoBound = f57 +fNormX = f58 +fX8 = f59 +fRSqr = f60 +fRQuadr = f61 +fR8 = f62 +fX16 = f63 +fCpi = f64 // Data tables //============================================================== - -#ifdef _LIBC -.rodata -#else -.data -#endif - +RODATA .align 16 - -acos_coeff_1_table: -ASM_TYPE_DIRECTIVE(acos_coeff_1_table,@object) -data8 0xE4E7E0A423A21249 , 0x00003FF8 //P7 -data8 0xC2F7EE0200FCE2A5 , 0x0000C003 //P18 -data8 0xB745D7F6C65C20E0 , 0x00003FF9 //P5 -data8 0xF75E381A323D4D94 , 0x0000C002 //P16 -data8 0x8959C2629C1024C0 , 0x0000C002 //P20 -data8 0xAFF68E7D241292C5 , 0x00003FF8 //P9 -data8 0xB6DB6DB7260AC30D , 0x00003FFA //P3 -data8 0xD0417CE2B41CB7BF , 0x0000C000 //P14 -data8 0x81D570FEA724E3E4 , 0x0000BFFD //P12 -data8 0xAAAAAAAAAAAAC277 , 0x00003FFC //P1 -data8 0xF534912FF3E7B76F , 0x00003FFF //P21 -data8 0xc90fdaa22168c235 , 0x00003fff // pi/2 -data8 0x0000000000000000 , 0x00000000 // pad to avoid bank conflicts -ASM_SIZE_DIRECTIVE(acos_coeff_1_table) - - -acos_coeff_2_table: -ASM_TYPE_DIRECTIVE(acos_coeff_2_table,@object) -data8 0x8E26AF5F29B39A2A , 0x00003FF9 //P6 -data8 0xB4F118A4B1015470 , 0x00004003 //P17 -data8 0xF8E38E10C25990E0 , 0x00003FF9 //P4 -data8 0x80F50489AEF1CAC6 , 0x00004002 //P15 -data8 0x92728015172CFE1C , 0x00004003 //P19 -data8 0xBBC3D831D4595971 , 0x00003FF8 //P8 -data8 0x999999999952A5C3 , 0x00003FFB //P2 -data8 0x855576BE6F0975EC , 0x00003FFF //P13 -data8 0xF12420E778077D89 , 0x00003FFA //P11 -data8 0xB6590FF4D23DE003 , 0x00003FF3 //P10 -data8 0xb504f333f9de6484 , 0x00003ffe // sqrt(2)/2 -ASM_SIZE_DIRECTIVE(acos_coeff_2_table) - - -.align 32 -.global acos -ASM_TYPE_DIRECTIVE(acos,@function) +LOCAL_OBJECT_START(acos_base_range_table) +// Ai: Polynomial coefficients for the acos(x), |x| < .625000 +// Bi: Polynomial coefficients for the acos(x), |x| > .625000 +data8 0xBFDAAB56C01AE468 //A29 +data8 0x3FE1C470B76A5B2B //A31 +data8 0xBFDC5FF82A0C4205 //A33 +data8 0x3FC71FD88BFE93F0 //A35 +data8 0xB504F333F9DE6487, 0x00003FFF //B0 +data8 0xAAAAAAAAAAAAFC18, 0x00003FFC //A3 +data8 0x3F9F1C71BC4A7823 //A9 +data8 0x3F96E8BBAAB216B2 //A11 +data8 0x3F91C4CA1F9F8A98 //A13 +data8 0x3F8C9DDCEDEBE7A6 //A15 +data8 0x3F877784442B1516 //A17 +data8 0x3F859C0491802BA2 //A19 +data8 0x9999999998C88B8F, 0x00003FFB //A5 +data8 0x3F6BD7A9A660BF5E //A21 +data8 0x3F9FC1659340419D //A23 +data8 0xB6DB6DB798149BDF, 0x00003FFA //A7 +data8 0xBFB3EF18964D3ED3 //A25 +data8 0x3FCD285315542CF2 //A27 +data8 0xF15BEEEFF7D2966A, 0x00003FFB //B1 +data8 0x3EF0DDA376D10FB3 //B10 +data8 0xBEB83CAFE05EBAC9 //B11 +data8 0x3F65FFB67B513644 //B4 +data8 0x3F5032FBB86A4501 //B5 +data8 0x3F392162276C7CBA //B6 +data8 0x3F2435949FD98BDF //B7 +data8 0xD93923D7FA08341C, 0x00003FF9 //B2 +data8 0x3F802995B6D90BDB //B3 +data8 0x3F10DF86B341A63F //B8 +data8 0xC90FDAA22168C235, 0x00003FFF // Pi/2 +data8 0x3EFA3EBD6B0ECB9D //B9 +data8 0x3EDE18BA080E9098 //B12 +LOCAL_OBJECT_END(acos_base_range_table) .section .text -.proc acos -.align 32 - - -acos: - -{ .mfi - alloc r32 = ar.pfs,1,6,4,0 - fma.s1 acos_tx = f8,f8,f0 - addl ASIN_Addr2 = @ltoff(acos_coeff_2_table),gp -} -{ .mfi - mov ASIN_FFFE = 0xFFFE - fnma.s1 acos_t = f8,f8,f1 - addl ASIN_Addr1 = @ltoff(acos_coeff_1_table),gp +GLOBAL_LIBM_ENTRY(acos) +acos_unnormal_back: +{ .mfi + getf.d rXBits = f8 // grab bits of input value + // set p12 = 1 if x is a NaN, denormal, or zero + fclass.m p12, p0 = f8, 0xcf + adds rSign = 1, r0 +} +{ .mfi + addl rTblAddr = @ltoff(acos_base_range_table),gp + // 1 - x = 1 - |x| for positive x + fms.s1 f1mX = f1, f1, f8 + addl rHalf = 0xFFFE, r0 // exponent of 1/2 } ;; - - -{ .mfi - setf.exp acos_1by2 = ASIN_FFFE - fmerge.s acos_abs_x = f1,f8 - nop.i 999 ;; -} - - -{ .mmf - ld8 ASIN_Addr1 = [ASIN_Addr1] - ld8 ASIN_Addr2 = [ASIN_Addr2] - fmerge.s acos_sgn_x = f8,f1 -} -;; - - -{ .mfi - nop.m 999 - fcmp.lt.s1 p11,p12 = f8, f0 - nop.i 999 ;; -} - - -{ .mfi - ldfe acos_coeff_P7 = [ASIN_Addr1],16 - fma.s1 acos_tx2 = acos_tx,acos_tx,f0 - nop.i 999 -} -{ .mfi - ldfe acos_coeff_P6 = [ASIN_Addr2],16 - fma.s1 acos_t2 = acos_t,acos_t,f0 - nop.i 999;; +{ .mfi + addl r0625 = 0x3FE4, r0 // high 16 bits of 0.625 + // set p8 = 1 if x < 0 + fcmp.lt.s1 p8, p9 = f8, f0 + shl rSign = rSign, 63 // sign bit +} +{ .mfi + // point to the beginning of the table + ld8 rTblAddr = [rTblAddr] + // 1 + x = 1 - |x| for negative x + fma.s1 f1pX = f1, f1, f8 + adds rOne = 0x3FF, r0 } - - -{ .mmf - ldfe acos_coeff_P18 = [ASIN_Addr1],16 - ldfe acos_coeff_P17 = [ASIN_Addr2],16 - fclass.m.unc p8,p0 = f8, 0xc3 //@qnan |@snan -} ;; - - -{ .mmf - ldfe acos_coeff_P5 = [ASIN_Addr1],16 - ldfe acos_coeff_P4 = [ASIN_Addr2],16 - frsqrta.s1 acos_y0,p0 = acos_t -} +{ .mfi + andcm rAbsXBits = rXBits, rSign // bits of |x| + fmerge.s fSignX = f8, f1 // signum(x) + shl r0625 = r0625, 48 // bits of DP representation of 0.625 +} +{ .mfb + setf.exp fHalf = rHalf // load A2 to FP reg + fma.s1 fXSqr = f8, f8, f0 // x^2 + // branch on special path if x is a NaN, denormal, or zero +(p12) br.cond.spnt acos_special +} ;; - - -{ .mfi - ldfe acos_coeff_P16 = [ASIN_Addr1],16 - fcmp.gt.s1 p9,p0 = acos_abs_x,f1 - nop.i 999 -} -{ .mfb - ldfe acos_coeff_P15 = [ASIN_Addr2],16 -(p8) fma.d f8 = f8,f1,f0 -(p8) br.ret.spnt b0 +{ .mfi + adds rPiBy2Ptr = 272, rTblAddr + nop.f 0 + shl rOne = rOne, 52 // bits of 1.0 +} +{ .mfi + adds rTmpPtr1 = 16, rTblAddr + nop.f 0 + // set p6 = 1 if |x| < 0.625 + cmp.lt p6, p7 = rAbsXBits, r0625 } ;; - - -{ .mmf - ldfe acos_coeff_P20 = [ASIN_Addr1],16 - ldfe acos_coeff_P19 = [ASIN_Addr2],16 - fclass.m.unc p10,p0 = f8, 0x07 //@zero -} +{ .mfi + ldfpd fA29, fA31 = [rTblAddr] // A29, fA31 + // 1 - x = 1 - |x| for positive x +(p9) fms.s1 fR = f1, f1, f8 + // point to coefficient of "near 1" polynomial +(p7) adds rTmpPtr2 = 176, rTblAddr +} +{ .mfi + ldfpd fA33, fA35 = [rTmpPtr1], 16 // A33, fA35 + // 1 + x = 1 - |x| for negative x +(p8) fma.s1 fR = f1, f1, f8 +(p6) adds rTmpPtr2 = 48, rTblAddr +} ;; - - -{ .mfi - ldfe acos_coeff_P9 = [ASIN_Addr1],16 - fma.s1 acos_t4 = acos_t2,acos_t2,f0 -(p9) mov GR_Parameter_Tag = 58 -} -{ .mfi - ldfe acos_coeff_P8 = [ASIN_Addr2],16 - fma.s1 acos_3by2 = acos_1by2,f1,f1 - nop.i 999;; +{ .mfi + ldfe fB0 = [rTmpPtr1], 16 // B0 + nop.f 0 + nop.i 0 } - - -{ .mfi - ldfe acos_coeff_P2 = [ASIN_Addr2],16 - fma.s1 acos_tx4 = acos_tx2,acos_tx2,f0 - nop.i 999 -} -{ .mfb - ldfe acos_coeff_P3 = [ASIN_Addr1],16 - fma.s1 acos_t3 = acos_t,acos_t2,f0 -(p9) br.cond.spnt __libm_error_region +{ .mib + adds rTmpPtr3 = 16, rTmpPtr2 + // set p10 = 1 if |x| = 1.0 + cmp.eq p10, p0 = rAbsXBits, rOne + // branch on special path for |x| = 1.0 +(p10) br.cond.spnt acos_abs_1 } ;; - - -{ .mfi - ldfe acos_coeff_P13 = [ASIN_Addr2],16 - fma.s1 acos_H0 = acos_y0,acos_1by2,f0 - nop.i 999 -} -{ .mfi - ldfe acos_coeff_P14 = [ASIN_Addr1],16 - fma.s1 acos_S0 = acos_y0,acos_t,f0 - nop.i 999;; +{ .mfi + ldfe fA3 = [rTmpPtr2], 48 // A3 or B1 + nop.f 0 + adds rTmpPtr1 = 64, rTmpPtr3 } - - -{ .mfi - ldfe acos_coeff_P11 = [ASIN_Addr2],16 - fcmp.eq.s1 p6,p0 = acos_abs_x, f1 - nop.i 999 -} -{ .mfi - ldfe acos_coeff_P12 = [ASIN_Addr1],16 - fma.s1 acos_tx3 = acos_tx,acos_tx2,f0 - nop.i 999 +{ .mib + ldfpd fA9, fA11 = [rTmpPtr3], 16 // A9, A11 or B10, B11 + // set p11 = 1 if |x| > 1.0 + cmp.gt p11, p0 = rAbsXBits, rOne + // branch on special path for |x| > 1.0 +(p11) br.cond.spnt acos_abs_gt_1 } ;; - - -{ .mfi - ldfe acos_coeff_P10 = [ASIN_Addr2],16 - fma.s1 acos_1poly_p6 = acos_tx,acos_coeff_P7,acos_coeff_P6 - nop.i 999 -} -{ .mfi - ldfe acos_coeff_P1 = [ASIN_Addr1],16 - fma.s1 acos_poly_p6 = acos_t,acos_coeff_P7,acos_coeff_P6 - nop.i 999;; +{ .mfi + ldfpd fA17, fA19 = [rTmpPtr2], 16 // A17, A19 or B6, B7 + // initial approximation of