summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2015-09-18 16:30:43 +0100
committerWilco Dijkstra <wdijkstr@arm.com>2015-09-18 16:34:45 +0100
commit8df4e219e43a4a257d0759b54fef8c488e2f282e (patch)
treefd17e1976bc8fb5443476300f9bcf9645de920a9 /ChangeLog
parentcb2f668d4692df8d31b2ccf9b18b86bebe2d9174 (diff)
downloadglibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.tar.gz
glibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.tar.xz
glibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.zip
Add inlining of the C99 math functions isinf/isnan/signbit/isfinite/isnormal/fpclassify using GCC
built-ins when available. Since going through the PLT is expensive for these small functions,
inlining results in major speedups (about 7x on Cortex-A57 for isinf). The GCC built-ins are not
correct if signalling NaN support is required, and thus are turned off in that case (see GCC bug
66462). The test-snan.c tests sNaNs and so must be explicitly built with -fsignaling-nans.

2015-09-18  Wilco Dijkstra  <wdijkstr@arm.com>

        [BZ #15367]
        [BZ #17441]

        * math/Makefile: Build test-snan.c with -fsignaling-nans.
        * math/math.h (fpclassify): Use __builtin_fpclassify when
        available.  (signbit): Use __builtin_signbit(f/l).
        (isfinite): Use__builtin_isfinite.  (isnormal): Use
        __builtin_isnormal.  (isnan): Use __builtin_isnan.
        (isinf): Use __builtin_isinf_sign.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog12
1 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 93652a9e90..c6216c982b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2015-09-18  Wilco Dijkstra  <wdijkstr@arm.com>
 
+	[BZ #15367]
+	[BZ #17441]
+
+	* math/Makefile: Build test-snan.c with -fsignaling-nans.
+	* math/math.h (fpclassify): Use __builtin_fpclassify when
+	available.  (signbit): Use __builtin_signbit(f/l).
+	(isfinite): Use__builtin_isfinite.  (isnormal): Use
+	__builtin_isnormal.  (isnan): Use __builtin_isnan.
+	(isinf): Use __builtin_isinf_sign.
+
+2015-09-18  Wilco Dijkstra  <wdijkstr@arm.com>
+
 	* benchtests/Makefile: Add bench-math-inlines, link with libm.
 	* benchtests/bench-math-inlines.c: New benchmark.
 	* benchtests/bench-util.h: New file.