diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2015-09-18 16:30:43 +0100 |
---|---|---|
committer | Wilco Dijkstra <wdijkstr@arm.com> | 2015-09-18 16:34:45 +0100 |
commit | 8df4e219e43a4a257d0759b54fef8c488e2f282e (patch) | |
tree | fd17e1976bc8fb5443476300f9bcf9645de920a9 /ChangeLog | |
parent | cb2f668d4692df8d31b2ccf9b18b86bebe2d9174 (diff) | |
download | glibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.zip glibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.tar.gz glibc-8df4e219e43a4a257d0759b54fef8c488e2f282e.tar.bz2 |
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-- | ChangeLog | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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. |