math: new exp2f and expf
authorSzabolcs Nagy <nsz@port70.net>
Sun, 22 Oct 2017 18:06:00 +0000 (18:06 +0000)
committerRich Felker <dalias@aerifal.cx>
Thu, 18 Apr 2019 03:43:53 +0000 (23:43 -0400)
commit3f94c648ef32c95fa7f5c94b5cb8f2b764fc1938
tree078300c87fed8d8e673f1b94ef4e6bad95cf587a
parent098868b338e9afd3ef844070a94b9b10360d913f
math: new exp2f and expf

from https://github.com/ARM-software/optimized-routines,
commit 04884bd04eac4b251da4026900010ea7d8850edc

In expf TOINT_INTRINSICS is kept, but is unused, it would require support
for __builtin_round and __builtin_lround as single instruction.

code size change: +94 bytes.
benchmark on x86_64 before, after, speedup:

-Os:
  expf rthruput:   9.19 ns/call  8.11 ns/call 1.13x
   expf latency:  34.19 ns/call 18.77 ns/call 1.82x
 exp2f rthruput:   5.59 ns/call  6.52 ns/call 0.86x
  exp2f latency:  17.93 ns/call 16.70 ns/call 1.07x
-O3:
  expf rthruput:   9.12 ns/call  4.92 ns/call 1.85x
   expf latency:  34.44 ns/call 18.99 ns/call 1.81x
 exp2f rthruput:   5.58 ns/call  4.49 ns/call 1.24x
  exp2f latency:  17.95 ns/call 16.94 ns/call 1.06x
src/internal/libm.h
src/math/exp2f.c
src/math/exp2f_data.c [new file with mode: 0644]
src/math/exp2f_data.h [new file with mode: 0644]
src/math/expf.c