the 3 patches referenced below implement some faster exp10f code, inspired by
the expf code, that is much faster than the current one (tested on x86_64).
Here are the "make bench" results (I had to add an entry for exp10f):
before new code:
with new code:
I disabled the code in math/w_exp10f_compat.c by adding #if 0 ... #endif
around it, since I don't know how to properly do it.
in w_exp10f_compat.c, and math/w_exp10f.c using symbol versioning with
GLIBC_2_32 version, and sysdeps/ieee754/w_expf.c overriding that with a
dummy file, and e_expf.c using a GLIBC_2_32 symbol version, and
math/Versions being updated with the new symbol version, and all the ABI
test baselines being updated as well.
Everything apart from the benchtests will need to go in a single commit
(thus a single patch in the submission), rather than having later patches
fix up problems with earlier ones, on the principle of bisectability.
Benchtests can go in a separate commit.
Also, you'll need to take special care that architectures with
architecture-specific versions of exp10f (i386, ia64, m68k) do get the new
symbol version as expected. Again, see how expf is handled for an example
(note the special .symver handling in sysdeps/ia64/fpu/e_expf.S - and the
wrapper handling done in commit f7a0b063e7fc81d0eff1e8b2b169876bdfb4cc44).
thank you for your comments. Since I'm new to glibc, I'm not sure to understand
everything. Anyway I've prepared a new cumulated patch at . But I get a
compile error (multiple definition of __exp10f) I don't know how to get rid of.
PS: if you prefer, we can continue the discussion off-list.