glibc/sysdeps/ieee754/ldbl-128ibm
Adhemerval Zanella 41e8926aa4 PowerPC: Set/restore rounding mode only when needed
This patch helps some math functions performance by adding the libc_fexxx
variant of inline functions to handle both FPU round and exception set/restore
and by using them on the libc_fexxx_ctx functions. It is based on already coded
fexxx family functions for PPC with fpu.

Here is the summary of performance improvements due this patch (measured on a
POWER7 machine):

Before:

cos(): ITERS:9.5895e+07: TOTAL:5116.03Mcy, MAX:77.6cy, MIN:49.792cy, 18744 calls/Mcy
exp(): ITERS:2.827e+07: TOTAL:5187.15Mcy, MAX:494.018cy, MIN:38.422cy, 5450.01 calls/Mcy
pow(): ITERS:6.1705e+07: TOTAL:5144.26Mcy, MAX:171.95cy, MIN:29.935cy, 11994.9 calls/Mcy
sin(): ITERS:8.6898e+07: TOTAL:5117.06Mcy, MAX:83.841cy, MIN:46.582cy, 16982 calls/Mcy
tan(): ITERS:2.9473e+07: TOTAL:5115.39Mcy, MAX:191.017cy, MIN:172.352cy, 5761.63 calls/Mcy

After:

cos(): ITERS:2.05265e+08: TOTAL:5111.37Mcy, MAX:78.754cy, MIN:24.196cy, 40158.5 calls/Mcy
exp(): ITERS:3.341e+07: TOTAL:5170.84Mcy, MAX:476.317cy, MIN:15.574cy, 6461.23 calls/Mcy
pow(): ITERS:7.6153e+07: TOTAL:5129.1Mcy, MAX:147.5cy, MIN:30.916cy, 14847.2 calls/Mcy
sin(): ITERS:1.58816e+08: TOTAL:5115.11Mcy, MAX:1490.39cy, MIN:22.341cy, 31048.4 calls/Mcy
tan(): ITERS:3.4964e+07: TOTAL:5114.18Mcy, MAX:177.422cy, MIN:146.115cy, 6836.68 calls/Mcy
2013-11-25 06:34:41 -06:00
..
e_acoshl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_acosl.c Avoid ordered comparisons of NaNs in ldbl-128ibm acosl and asinl. 2013-10-10 19:11:30 +00:00
e_asinl.c Avoid ordered comparisons of NaNs in ldbl-128ibm acosl and asinl. 2013-10-10 19:11:30 +00:00
e_atan2l.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_atanhl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_coshl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_exp10l.c IBM long double mechanical changes to support little-endian 2013-10-04 10:28:42 +09:30
e_expl.c PowerPC: Set/restore rounding mode only when needed 2013-11-25 06:34:41 -06:00
e_fmodl.c PowerPC floating point little-endian [4 of 15] 2013-10-04 10:32:48 +09:30
e_gammal_r.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_hypotl.c PowerPC floating point little-endian [4 of 15] 2013-10-04 10:32:48 +09:30
e_ilogbl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_j0l.c 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
e_j1l.c 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
e_jnl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_lgammal_r.c 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
e_log2l.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_log10l.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_logl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_powl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
e_rem_pio2l.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_remainderl.c PowerPC floating point little-endian [4 of 15] 2013-10-04 10:32:48 +09:30
e_sinhl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
e_sqrtl.c PowerPC floating point little-endian [6 of 15] 2013-10-04 10:33:21 +09:30
gamma_productl.c Improve tgamma accuracy (bugs 2546, 2560, 5159, 15426). 2013-05-08 11:58:18 +00:00
ieee754.h PowerPC floating point little-endian [5 of 15] 2013-10-04 10:33:05 +09:30
k_cosl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
k_sincosl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
k_sinl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
k_tanl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
ldbl2mpn.c Fix for [BZ #15680] IBM long double inaccuracy 2013-10-04 10:30:56 +09:30
Makefile 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
math_ldbl.h PowerPC floating point little-endian [5 of 15] 2013-10-04 10:33:05 +09:30
mpn2ldbl.c Fix for [BZ #15680] IBM long double inaccuracy 2013-10-04 10:30:56 +09:30
printf_fphex.c PowerPC floating point little-endian [1 of 15] 2013-10-04 10:31:41 +09:30
s_asinhl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_atanl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_cbrtl.c 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
s_ceill.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_copysignl.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_cosl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_cprojl.c Fix cproj handling of (finite, NaN) arguments (bug 15531). 2013-08-20 19:41:15 +00:00
s_ctanhl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_ctanl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_erfl.c PowerPC floating point little-endian [4 of 15] 2013-10-04 10:32:48 +09:30
s_expm1l.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_fabsl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_finitel.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_floorl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fmal.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fpclassifyl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_frexpl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_isinf_nsl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_isinfl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_isnanl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_issignalingl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_llrintl.c PowerPC: Set/restore rounding mode only when needed 2013-11-25 06:34:41 -06:00
s_llroundl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_log1pl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_logbl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_lrintl.c PowerPC: Set/restore rounding mode only when needed 2013-11-25 06:34:41 -06:00
s_lroundl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_modfl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_nearbyintl.c IBM long double mechanical changes to support little-endian 2013-10-04 10:28:42 +09:30
s_nextafterl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_nexttoward.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_nexttowardf.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_remquol.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_rintl.c PowerPC: Set/restore rounding mode only when needed 2013-11-25 06:34:41 -06:00
s_roundl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_scalblnl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_scalbnl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_signbitl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_sincosl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_sinl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_tanhl.c PowerPC floating point little-endian [3 of 15] 2013-10-04 10:32:36 +09:30
s_tanl.c PowerPC floating point little-endian [2 of 15] 2013-10-04 10:32:19 +09:30
s_truncl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
strtold_l.c IBM long double mechanical changes to support little-endian 2013-10-04 10:28:42 +09:30
t_sincosl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
w_expl.c BZ#13889: expl (709.75) wrongly overflows for ldbl-128ibm 2013-03-22 12:39:10 -03:00
x2y2m1l.c IBM long double mechanical changes to support little-endian 2013-10-04 10:28:42 +09:30