diff options
author | Ulrich Drepper <drepper@gmail.com> | 2012-01-09 18:59:04 -0500 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2012-01-09 18:59:04 -0500 |
commit | d6e97a1da05c1be8ac4cc2f735a98181c457d90b (patch) | |
tree | f0982c62e9e7e2bade0dfb87796c36aa0011f066 | |
parent | e5f484c622fa0163379b7e577d5b289f0a0b49e7 (diff) | |
download | glibc-d6e97a1da05c1be8ac4cc2f735a98181c457d90b.zip glibc-d6e97a1da05c1be8ac4cc2f735a98181c457d90b.tar.gz glibc-d6e97a1da05c1be8ac4cc2f735a98181c457d90b.tar.bz2 |
Some branch prediction for log1p
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_log1p.c | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -1,3 +1,7 @@ +2012-01-09 Ulrich Drepper <drepper@gmail.com> + + * sysdeps/ieee754/dbl-64/s_log1p.c (__log1p): Add branch prediction. + 2012-01-08 Ulrich Drepper <drepper@gmail.com> * io/bits/poll2.h: Add __BEGIN/__END_DECLS. diff --git a/sysdeps/ieee754/dbl-64/s_log1p.c b/sysdeps/ieee754/dbl-64/s_log1p.c index dc79a02..f82048f 100644 --- a/sysdeps/ieee754/dbl-64/s_log1p.c +++ b/sysdeps/ieee754/dbl-64/s_log1p.c @@ -106,11 +106,11 @@ __log1p(double x) k = 1; if (hx < 0x3FDA827A) { /* x < 0.41422 */ - if(ax>=0x3ff00000) { /* x <= -1.0 */ + if(__builtin_expect(ax>=0x3ff00000, 0)) { /* x <= -1.0 */ if(x==-1.0) return -two54/(x-x);/* log1p(-1)=+inf */ else return (x-x)/(x-x); /* log1p(x<-1)=NaN */ } - if(ax<0x3e200000) { /* |x| < 2**-29 */ + if(__builtin_expect(ax<0x3e200000, 0)) { /* |x| < 2**-29 */ math_force_eval(two54+x); /* raise inexact */ if (ax<0x3c900000) /* |x| < 2**-54 */ return x; @@ -120,7 +120,7 @@ __log1p(double x) if(hx>0||hx<=((int32_t)0xbfd2bec3)) { k=0;f=x;hu=1;} /* -0.2929<x<0.41422 */ } - if (hx >= 0x7ff00000) return x+x; + else if (__builtin_expect(hx >= 0x7ff00000, 0)) return x+x; if(k!=0) { if(hx<0x43400000) { u = 1.0+x; |