diff options
| author | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2024-12-13 15:43:07 +0000 |
|---|---|---|
| committer | Wilco Dijkstra <wilco.dijkstra@arm.com> | 2025-02-13 18:16:54 +0000 |
| commit | 5afaf99edb326fd9f36eb306a828d129a3a1d7f7 (patch) | |
| tree | 46a53911bfaaf9d2b929db513400dc9bdf51a1f6 | |
| parent | cdb9ba84191ce72e86346fb8b1d906e7cd930ea2 (diff) | |
| download | glibc-5afaf99edb326fd9f36eb306a828d129a3a1d7f7.tar.xz glibc-5afaf99edb326fd9f36eb306a828d129a3a1d7f7.zip | |
math: Improve layout of exp/exp10 data
GCC aligns global data to 16 bytes if their size is >= 16 bytes. This patch
changes the exp_data struct slightly so that the fields are better aligned
and without gaps. As a result on targets that support them, more load-pair
instructions are used in exp. Exp10 is improved by moving invlog10_2N later
so that neglog10_2hiN and neglog10_2loN can be loaded using load-pair.
The exp benchmark improves 2.5%, "144bits" by 7.2%, "768bits" by 12.7% on
Neoverse V2. Exp10 improves by 1.5%.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
| -rw-r--r-- | sysdeps/ieee754/dbl-64/math_config.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h index 299a2ff8c1..3382e385f9 100644 --- a/sysdeps/ieee754/dbl-64/math_config.h +++ b/sysdeps/ieee754/dbl-64/math_config.h @@ -195,16 +195,18 @@ check_uflow (double x) extern const struct exp_data { double invln2N; - double shift; double negln2hiN; double negln2loN; double poly[4]; /* Last four coefficients. */ + double shift; + double exp2_shift; double exp2_poly[EXP2_POLY_ORDER]; - double invlog10_2N; + double neglog10_2hiN; double neglog10_2loN; double exp10_poly[5]; + double invlog10_2N; uint64_t tab[2*(1 << EXP_TABLE_BITS)]; } __exp_data attribute_hidden; |
