about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2013-11-25 06:12:30 -0600
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2013-11-25 06:34:41 -0600
commit41e8926aa4b7f17bc95984737ee82a254ad0911c (patch)
treef113bbedd0ec991ae1b9dddf3a36077e22d19815 /ChangeLog
parent085b5ddfe301eb74bc9f824ff293f054c1c910b7 (diff)
downloadglibc-41e8926aa4b7f17bc95984737ee82a254ad0911c.tar.gz
glibc-41e8926aa4b7f17bc95984737ee82a254ad0911c.tar.xz
glibc-41e8926aa4b7f17bc95984737ee82a254ad0911c.zip
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
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog16
1 files changed, 16 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b9201fc7ff..9e2a0c62e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2013-11-25  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use
+	SET_RESTORE_ROUND instead of feholdexcept/fesetround/fesetenv.
+	* sysdeps/powerpc/fpu/fenv_libc.h (__fegetround): Remove define.
+	(__fesetround): Remove define.
+	* sysdeps/powerpc/fpu/fenv_private.h: New file: Inline floating point
+	rounding and exceptions handling.
+	* sysdeps/powerpc/fpu/math_private.h: Include fenv_private.h.
+	* sysdeps/powerpc/fpu/fenv_libc.h (__fe_mask_env): Define as hidden.
+	(__fe_nomask_env): Likewise.
+	* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c (__llrintl): Use
+	__fegetround instead of fegetround.
+	* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c (__lrintl): Likewise.
+	* sysdeps/ieee754/ldbl-128ibm/s_rintl.c (__rintl): Likewise.
+
 2013-11-21  Roland McGrath  <roland@hack.frob.com>
 
 	* malloc/malloc.c: Move #include <sys/param.h> to the top; comment why