From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: [PATCH 00/18] math updates
Date: Sat, 8 Dec 2018 13:50:10 +0100 [thread overview]
Message-ID: <20181208125009.GY21289@port70.net> (raw)
add new code from
https://github.com/ARM-software/optimized-routines
with small modifications:
- remove all code paths related to errno handling (WANT_ERRNO cases)
- reformat with clang-format to linux style instead of gnu style.
- drop non-default configs (polynomial and table size settings)
- remove SNaN support (but keep the code so adding it back is easy)
- use __FP_FAST_FMA feature test with __builtin_fma
- some macros got renamed: barriers, unlikely, HIDDEN
- kept TOINT_INTRINSICS code paths, but it's never set
(requires __builtin_round and __builtin_lround support as single insn)
- error handling is split up across several translation units.
- data layout declarations are split into several _data.h headers
todo:
- fp_barrier implementation for various targets
- musl does not enable fma contraction, new code would be better with it
- musl disables fabs etc inlining, using builtins would help
- FENV_ACCESS pragma should be set in some top level header in principle
(like features.h)
- use the new helper functions/macros in existing code.
overall libc.so code size increase on x86_64: +8540 bytes
(i'll send the patches as attachments in two parts, because they are too
big for one mail)
Szabolcs Nagy (18):
define FP_FAST_FMA* when fma* can be inlined
math: move complex math out of libm.h
math: add asuint, asuint64, asfloat and asdouble
math: remove sun copyright from libm.h
math: add fp_arch.h with fp_barrier and fp_force_eval
math: add eval_as_float and eval_as_double
math: add single precision error handling functions
math: add double precision error handling functions
math: add macros for static branch prediction hints
math: add configuration macros
math: new logf
math: new log2f
math: new exp2f and expf
math: new powf
math: new log
math: new log2
math: new exp and exp2
math: new pow
arch/aarch64/fp_arch.h | 25 ++
arch/generic/fp_arch.h | 0
include/math.h | 12 +
src/complex/__cexp.c | 2 +-
src/complex/__cexpf.c | 2 +-
src/complex/cabs.c | 2 +-
src/complex/cabsf.c | 2 +-
src/complex/cabsl.c | 2 +-
src/complex/cacos.c | 2 +-
src/complex/cacosf.c | 2 +-
src/complex/cacosh.c | 2 +-
src/complex/cacoshf.c | 2 +-
src/complex/cacoshl.c | 2 +-
src/complex/cacosl.c | 2 +-
src/complex/carg.c | 2 +-
src/complex/cargf.c | 2 +-
src/complex/cargl.c | 2 +-
src/complex/casin.c | 2 +-
src/complex/casinf.c | 2 +-
src/complex/casinh.c | 2 +-
src/complex/casinhf.c | 2 +-
src/complex/casinhl.c | 2 +-
src/complex/casinl.c | 2 +-
src/complex/catan.c | 2 +-
src/complex/catanf.c | 2 +-
src/complex/catanh.c | 2 +-
src/complex/catanhf.c | 2 +-
src/complex/catanhl.c | 2 +-
src/complex/catanl.c | 2 +-
src/complex/ccos.c | 2 +-
src/complex/ccosf.c | 2 +-
src/complex/ccosh.c | 2 +-
src/complex/ccoshf.c | 2 +-
src/complex/ccoshl.c | 2 +-
src/complex/ccosl.c | 2 +-
src/complex/cexp.c | 2 +-
src/complex/cexpf.c | 2 +-
src/complex/cexpl.c | 2 +-
src/complex/cimag.c | 2 +-
src/complex/cimagf.c | 2 +-
src/complex/cimagl.c | 2 +-
src/complex/clog.c | 2 +-
src/complex/clogf.c | 2 +-
src/complex/clogl.c | 2 +-
src/complex/conj.c | 2 +-
src/complex/conjf.c | 2 +-
src/complex/conjl.c | 2 +-
src/complex/cpow.c | 2 +-
src/complex/cpowf.c | 2 +-
src/complex/cpowl.c | 2 +-
src/complex/cproj.c | 2 +-
src/complex/cprojf.c | 2 +-
src/complex/cprojl.c | 2 +-
src/complex/csin.c | 2 +-
src/complex/csinf.c | 2 +-
src/complex/csinh.c | 2 +-
src/complex/csinhf.c | 2 +-
src/complex/csinhl.c | 2 +-
src/complex/csinl.c | 2 +-
src/complex/csqrt.c | 2 +-
src/complex/csqrtf.c | 2 +-
src/complex/csqrtl.c | 2 +-
src/complex/ctan.c | 2 +-
src/complex/ctanf.c | 2 +-
src/complex/ctanh.c | 2 +-
src/complex/ctanhf.c | 2 +-
src/complex/ctanhl.c | 2 +-
src/complex/ctanl.c | 2 +-
src/internal/complex_impl.h | 22 ++
src/internal/libm.h | 223 ++++++++-----
src/math/__math_divzero.c | 6 +
src/math/__math_divzerof.c | 6 +
src/math/__math_invalid.c | 6 +
src/math/__math_invalidf.c | 6 +
src/math/__math_oflow.c | 6 +
src/math/__math_oflowf.c | 6 +
src/math/__math_uflow.c | 6 +
src/math/__math_uflowf.c | 6 +
src/math/__math_xflow.c | 6 +
src/math/__math_xflowf.c | 6 +
src/math/exp.c | 240 +++++++-------
src/math/exp2.c | 466 ++++++---------------------
src/math/exp2f.c | 165 ++++------
src/math/exp2f_data.c | 35 ++
src/math/exp2f_data.h | 23 ++
src/math/exp_data.c | 182 +++++++++++
src/math/exp_data.h | 26 ++
src/math/expf.c | 133 ++++----
src/math/log.c | 202 ++++++------
src/math/log2.c | 212 ++++++------
src/math/log2_data.c | 201 ++++++++++++
src/math/log2_data.h | 28 ++
src/math/log2f.c | 114 ++++---
src/math/log2f_data.c | 33 ++
src/math/log2f_data.h | 19 ++
src/math/log_data.c | 328 +++++++++++++++++++
src/math/log_data.h | 28 ++
src/math/logf.c | 110 +++----
src/math/logf_data.c | 33 ++
src/math/logf_data.h | 20 ++
src/math/pow.c | 621 ++++++++++++++++++------------------
src/math/pow_data.c | 180 +++++++++++
src/math/pow_data.h | 22 ++
src/math/powf.c | 406 ++++++++++-------------
src/math/powf_data.c | 34 ++
src/math/powf_data.h | 26 ++
106 files changed, 2693 insertions(+), 1666 deletions(-)
create mode 100644 arch/aarch64/fp_arch.h
create mode 100644 arch/generic/fp_arch.h
create mode 100644 src/internal/complex_impl.h
create mode 100644 src/math/__math_divzero.c
create mode 100644 src/math/__math_divzerof.c
create mode 100644 src/math/__math_invalid.c
create mode 100644 src/math/__math_invalidf.c
create mode 100644 src/math/__math_oflow.c
create mode 100644 src/math/__math_oflowf.c
create mode 100644 src/math/__math_uflow.c
create mode 100644 src/math/__math_uflowf.c
create mode 100644 src/math/__math_xflow.c
create mode 100644 src/math/__math_xflowf.c
create mode 100644 src/math/exp2f_data.c
create mode 100644 src/math/exp2f_data.h
create mode 100644 src/math/exp_data.c
create mode 100644 src/math/exp_data.h
create mode 100644 src/math/log2_data.c
create mode 100644 src/math/log2_data.h
create mode 100644 src/math/log2f_data.c
create mode 100644 src/math/log2f_data.h
create mode 100644 src/math/log_data.c
create mode 100644 src/math/log_data.h
create mode 100644 src/math/logf_data.c
create mode 100644 src/math/logf_data.h
create mode 100644 src/math/pow_data.c
create mode 100644 src/math/pow_data.h
create mode 100644 src/math/powf_data.c
create mode 100644 src/math/powf_data.h
--
2.19.1
next reply other threads:[~2018-12-08 12:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-08 12:50 Szabolcs Nagy [this message]
2018-12-08 12:54 ` [PATCH 01-10/18] " Szabolcs Nagy
2018-12-08 12:56 ` [PATCH 11-18/18] " Szabolcs Nagy
2019-02-23 23:36 ` [PATCH 00/18] " Rich Felker
2019-02-24 21:00 ` Szabolcs Nagy
2019-02-24 20:58 ` Joe Duarte
2019-02-24 21:25 ` Szabolcs Nagy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181208125009.GY21289@port70.net \
--to=nsz@port70.net \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).