freebsd-dev/lib/msun
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
..
aarch64 Add the fe* symbols to libm for arm64. 2015-03-31 19:07:28 +00:00
amd64 Resolve conflicts between macros in fenv.h and ieeefp.h 2018-05-31 20:22:47 +00:00
arm lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
bsdsrc Remove an unused incude from lib/msun/bsdsrc/b_log.c. 2017-12-07 20:41:23 +00:00
i387 Resolve conflicts between macros in fenv.h and ieeefp.h 2018-05-31 20:22:47 +00:00
ld80 Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
ld128 Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
man Revert r336497 for now, as it breaks on architectures using gcc, with: 2018-07-19 19:07:25 +00:00
mips lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
powerpc lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
riscv Replace SOFTFLOAT with __riscv_float_abi_*. 2018-04-19 20:36:15 +00:00
sparc64 lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
src Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
tests Resolve conflicts between macros in fenv.h and ieeefp.h 2018-05-31 20:22:47 +00:00
x86 Resolve conflicts between macros in fenv.h and ieeefp.h 2018-05-31 20:22:47 +00:00
Makefile Revert r336497 for now, as it breaks on architectures using gcc, with: 2018-07-19 19:07:25 +00:00
Makefile.depend DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
Symbol.map msun: add ld80/ld128 powl, cpow, cpowf, cpowl from openbsd 2018-07-15 00:23:10 +00:00