freebsd-nq/lib/msun/ld80
Bruce Evans 27aa844253 Centralize the complications for special efficient rounding to integers.
This was open-coded in range reduction for trig and exp functions.  Now
there are 3 static inline functions rnint[fl]() that replace open-coded
expressions, and type-generic irint() and i64rint() macros that hide the
complications for efficiently using non-generic irint() and irintl()
functions and casts.

Special details:

ld128/e_rem_pio2l.h needs to use i64rint() since it needs a 46-bit integer
result.  Everything else only needs a (less than) 32-bit integer result so
uses irint().

Float and double cases now use float_t and double_t locally instead of
STRICT_ASSIGN() to avoid bugs in extra precision.

On amd64, inline asm is now only used for irint() on long doubles.  The SSE
asm for irint() on amd64 only existed because the ifdef tangles made the
correct method of simply casting to int for this case non-obvious.
2018-07-20 12:42:24 +00:00
..
e_lgammal_r.c
e_powl.c Revert r336497 for now, as it breaks on architectures using gcc, with: 2018-07-19 19:07:25 +00:00
e_rem_pio2l.h Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
invtrig.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
invtrig.h lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
k_cosl.c
k_expl.h Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
k_sinl.c
k_tanl.c
s_erfl.c
s_exp2l.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_expl.c Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
s_logl.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_nanl.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00