Commit Graph

15 Commits

Author SHA1 Message Date
Joseph Myers f29b6f17e4 Use rint functions not __rint functions in glibc libm.
Continuing the move to use, within libm, public names for libm
functions that can be inlined as built-in functions on many
architectures, this patch moves calls to __rint functions to call the
corresponding rint names instead, with asm redirection to __rint when
the calls are not inlined.  The x86_64 math_private.h is removed as no
longer useful after this patch.

This patch is relative to a tree with my floor patch
<https://sourceware.org/ml/libc-alpha/2018-09/msg00148.html> applied,
and much the same considerations arise regarding possibly replacing an
IFUNC call with a direct inline expansion.

Tested for x86_64, and with build-many-glibcs.py.

	* include/math.h [!_ISOMAC && !(__FINITE_MATH_ONLY__ &&
	__FINITE_MATH_ONLY__ > 0) && !NO_MATH_REDIRECT] (rint): Redirect
	using MATH_REDIRECT.
	* sysdeps/aarch64/fpu/s_rint.c: Define NO_MATH_REDIRECT before
	header inclusion.
	* sysdeps/aarch64/fpu/s_rintf.c: Likewise.
	* sysdeps/alpha/fpu/s_rint.c: Likewise.
	* sysdeps/alpha/fpu/s_rintf.c: Likewise.
	* sysdeps/i386/fpu/s_rintl.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_rint.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_rint.c: Likewise.
	* sysdeps/ieee754/float128/s_rintf128.c: Likewise.
	* sysdeps/ieee754/flt-32/s_rintf.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_rintl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: Likewise.
	* sysdeps/m68k/coldfire/fpu/s_rint.c: Likewise.
	* sysdeps/m68k/coldfire/fpu/s_rintf.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_rint.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_rintf.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_rintl.c: Likewise.
	* sysdeps/powerpc/fpu/s_rint.c: Likewise.
	* sysdeps/powerpc/fpu/s_rintf.c: Likewise.
	* sysdeps/riscv/rv64/rvd/s_rint.c: Likewise.
	* sysdeps/riscv/rvf/s_rintf.c: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.c: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.c: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c: Likewise.
	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c: Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_rint.c: Likewise.
	* sysdeps/x86_64/fpu/multiarch/s_rintf.c: Likewise.
	* sysdeps/x86_64/fpu/math_private.h: Remove file.
	* math/e_scalb.c (invalid_fn): Use rint functions instead of
	__rint variants.
	* math/e_scalbf.c (invalid_fn): Likewise.
	* math/e_scalbl.c (invalid_fn): Likewise.
	* sysdeps/ieee754/dbl-64/e_gamma_r.c (__ieee754_gamma_r):
	Likewise.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c (__ieee754_gammaf_r):
	Likewise.
	* sysdeps/ieee754/k_standard.c (__kernel_standard): Likewise.
	* sysdeps/ieee754/k_standardl.c (__kernel_standard_l): Likewise.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c (__ieee754_gammal_r):
	Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (__ieee754_gammal_r):
	Likewise.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r):
	Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_llrint.c (__llrint): Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_llrintf.c (__llrintf): Likewise.
2018-09-14 13:10:39 +00:00
Joseph Myers 688903eb3e Update copyright dates with scripts/update-copyrights.
* All files with FSF copyright notices: Update copyright dates
	using scripts/update-copyrights.
	* locale/programs/charmap-kw.h: Regenerated.
	* locale/programs/locfile-kw.h: Likewise.
2018-01-01 00:32:25 +00:00
Joseph Myers 5de606387b Use libm_alias_double for alpha.
Continuing the preparation for additional _FloatN / _FloatNx function
aliases, this patch makes alpha libm function implementations use
libm_alias_double to define function aliases.  This also simplifies
the code because the compatibility for long double = double is handled
by libm_alias_double instead of locally in each source file.

Tested with build-many-glibcs.py for alpha-linux-gnu that installed
stripped shared libraries are unchanged by the patch.

	* sysdeps/alpha/fpu/s_ceil.c: Include <libm-alias-double.h>.
	(ceil): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_copysign.c: Include <libm-alias-double.h>.
	(copysign): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_fabs.c: Include <libm-alias-double.h>.
	(fabs): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_floor.c: Include <libm-alias-double.h>.
	(floor): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_fmax.S: Include <libm-alias-double.h>.
	(fmax): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_fmin.S: Include <libm-alias-double.h>.
	(fmin): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_lrint.c: Include <libm-alias-double.h>.
	(lrint): Define using libm_alias_double.
	(llrint): Likewise.
	* sysdeps/alpha/fpu/s_lround.c: Include <libm-alias-double.h>.
	(lround): Define using libm_alias_double.
	(llround): Likewise.
	* sysdeps/alpha/fpu/s_rint.c: Include <libm-alias-double.h>.
	(rint): Define using libm_alias_double.
	* sysdeps/alpha/fpu/s_trunc.c: Include <libm-alias-double.h>.
	(trunc): Define using libm_alias_double.
2017-11-28 00:07:56 +00:00
Joseph Myers bfff8b1bec Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Aurelien Jarno cb7f9d63b9 alpha: fix rint on sNaN input
The alpha version of rint wrongly return sNaN for sNaN input. Fix that
by checking for NaN and by returning the input value added with itself
in that case.

Changelog:
	* sysdeps/alpha/fpu/s_rint.c (__rint): Add argument with itself
	when it is a NaN.
	* sysdeps/alpha/fpu/s_rintf.c (__rintf): Likewise.
2016-08-02 09:18:59 +02:00
Joseph Myers f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Joseph Myers b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Richard Henderson 68b7efaadb Relocate alpha from ports to libc
Also fixed the following whitespace nits to satisfy the push:

sysdeps/alpha/alphaev6/memset.S:142: space before tab in indent.
sysdeps/alpha/configure:1: new blank line at EOF.
sysdeps/alpha/fpu/e_sqrt.c:126: space before tab in indent.
sysdeps/alpha/preconfigure:1: new blank line at EOF.
sysdeps/unix/sysv/linux/alpha/syscalls.list:1: new blank line at EOF.
2014-02-12 07:00:06 -08:00
Roland McGrath c0439b95b8 Moved alpha to ports repository.
2008-11-25  Roland McGrath  <roland@redhat.com>

	* sysdeps/alpha, sysdeps/unix/bsd/osf/alpha,
	sysdeps/unix/bsd/Attic/osf1/alpha, sysdeps/unix/sysv/linux/alpha,
	sysdeps/unix/sysv/linux/alpha/alpha, sysdeps/unix/alpha,
	sysdeps/mach/alpha, sysdeps/mach/hurd/alpha:
	Subdirectories moved to ports repository.
	* configure.in (base_machine): Remove alpha case.
2008-11-26 07:26:32 +00:00
Richard Henderson aea1d19e2f * sysdeps/alpha/fpu/s_ceil.c: Rewrite without branches.
* sysdeps/alpha/fpu/s_ceilf.c: Likewise. 
* sysdeps/alpha/fpu/s_floor.c: Likewise. 
* sysdeps/alpha/fpu/s_floorf.c: Likewise. 
* sysdeps/alpha/fpu/s_rint.c: Likewise. 
* sysdeps/alpha/fpu/s_rintf.c: Likewise.
	* sysdeps/alpha/fpu/s_fmax.S: New file.
	* sysdeps/alpha/fpu/s_fmaxf.S: New file.
	* sysdeps/alpha/fpu/s_fmin.S: New file.
	* sysdeps/alpha/fpu/s_fminf.S: New file.
	* sysdeps/alpha/fpu/s_isnan.c: New file.
	* sysdeps/alpha/fpu/s_isnanf.c: New file.
	* sysdeps/alpha/fpu/s_llrint.c: New file.
	* sysdeps/alpha/fpu/s_llrintf.c: New file.
	* sysdeps/alpha/fpu/s_lrint.c: New file.
	* sysdeps/alpha/fpu/s_lrintf.c: New file.
	* sysdeps/alpha/fpu/s_nearbyint.c: New file.
	* sysdeps/alpha/fpu/s_nearbyintf.c: New file.

	* sysdeps/alpha/fpu/bits/mathinline.h (__floorf, __floor): Remove.
	(__fdimf, fdimf, __fdim, fdim): Remove.
	(__signbitf, __signbit, __signbitl): Use gcc builtin if available.
	(__isnanf, __isnan, __isnanl): New.
2007-03-14  Richard Henderson  <rth@redhat.com>

	* sysdeps/alpha/fpu/s_ceil.c: Rewrite without branches.
	* sysdeps/alpha/fpu/s_ceilf.c: Likewise.
	* sysdeps/alpha/fpu/s_floor.c: Likewise.
	* sysdeps/alpha/fpu/s_floorf.c: Likewise.
	* sysdeps/alpha/fpu/s_rint.c: Likewise.
	* sysdeps/alpha/fpu/s_rintf.c: Likewise.

	* sysdeps/alpha/fpu/s_fmax.S: New file.
	* sysdeps/alpha/fpu/s_fmaxf.S: New file.
	* sysdeps/alpha/fpu/s_fmin.S: New file.
	* sysdeps/alpha/fpu/s_fminf.S: New file.
	* sysdeps/alpha/fpu/s_isnan.c: New file.
	* sysdeps/alpha/fpu/s_isnanf.c: New file.
	* sysdeps/alpha/fpu/s_llrint.c: New file.
	* sysdeps/alpha/fpu/s_llrintf.c: New file.
	* sysdeps/alpha/fpu/s_lrint.c: New file.
	* sysdeps/alpha/fpu/s_lrintf.c: New file.
	* sysdeps/alpha/fpu/s_nearbyint.c: New file.
	* sysdeps/alpha/fpu/s_nearbyintf.c: New file.

	* sysdeps/alpha/fpu/bits/mathinline.h (__floorf, __floor): Remove.
	(__fdimf, fdimf, __fdim, fdim): Remove.
	(__signbitf, __signbit, __signbitl): Use gcc builtin if available.
	(__isnanf, __isnan, __isnanl): New.
2007-03-14 17:44:14 +00:00
Roland McGrath 8400b18bfb * sysdeps/unix/sysv/linux/alpha/fpu/Implies: New file.
* sysdeps/alpha/fpu/s_ceil.c: Include math_ldbl_opt.h, add
	compat_symbol if LONG_DOUBLE_COMPAT.
	* sysdeps/alpha/fpu/s_copysign.c: Likewise.
	* sysdeps/alpha/fpu/s_fabs.c: Likewise.
	* sysdeps/alpha/fpu/s_floor.c: Likewise.
	* sysdeps/alpha/fpu/s_rint.c: Likewise.
	* sysdeps/alpha/soft-fp/e_sqrtl.c: New file.
	* sysdeps/alpha/Implies: Add ieee754/ldbl-128.

	* sysdeps/unix/sysv/linux/alpha/bits/wordsize.h: New file.
	* sysdeps/unix/sysv/linux/alpha/Implies: Add ieee754/ldbl-64-128,
	ieee754/ldbl-opt.
	* sysdeps/alpha/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove.
	* sysdeps/unix/sysv/linux/alpha/nldbl-abi.h: New file.
	* sysdeps/unix/sysv/linux/alpha/Makefile
	[$(subdir) = math] (libm-routines): Add multc3, divtc3.
2006-02-01 03:14:01 +00:00
Ulrich Drepper a334319f65 (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4. 2004-12-22 20:10:10 +00:00
Jakub Jelinek 0ecb606cb6 2.5-18.1 2007-07-12 18:26:36 +00:00
Andreas Jaeger 41bdb6e20c Update to LGPL v2.1.
2001-07-06  Paul Eggert  <eggert@twinsun.com>

	* manual/argp.texi: Remove ignored LGPL copyright notice; it's
	not appropriate for documentation anyway.
	* manual/libc-texinfo.sh: "Library General Public License" ->
	"Lesser General Public License".

2001-07-06  Andreas Jaeger  <aj@suse.de>

	* All files under GPL/LGPL version 2: Place under LGPL version
	2.1.
2001-07-06 04:58:11 +00:00
Richard Henderson b7434f8243 * sysdeps/alpha/fpu/fraiseexcpt.c: Use get/set_fp_control instead of arithmetic instructions.
* sysdeps/alpha/fpu/s_ceil.c: Use round to -inf instead of playing
        with the fpcr.  Protect from INV exception.
        * sysdeps/alpha/fpu/s_ceilf.c: Likewise.
        * sysdeps/alpha/fpu/s_floor.c: Protect from INV exception.
        * sysdeps/alpha/fpu/s_floorf.c: Likewise.

        * sysdeps/alpha/fpu/s_copysign.c: New.
        * sysdeps/alpha/fpu/s_copysignf.c: New.
        * sysdeps/alpha/fpu/s_fabs.c: New.
        * sysdeps/alpha/fpu/s_fabsf.c: New.
        * sysdeps/alpha/fpu/s_rint.c: New.
        * sysdeps/alpha/fpu/s_rintf.c: New.
	* sysdeps/alpha/fpu/fraiseexcpt.c: Use get/set_fp_control instead
	of arithmetic instructions.

	* sysdeps/alpha/fpu/s_ceil.c: Use round to -inf instead of playing
	with the fpcr.  Protect from INV exception.
	* sysdeps/alpha/fpu/s_ceilf.c: Likewise.
	* sysdeps/alpha/fpu/s_floor.c: Protect from INV exception.
	* sysdeps/alpha/fpu/s_floorf.c: Likewise.

	* sysdeps/alpha/fpu/s_copysign.c: New.
	* sysdeps/alpha/fpu/s_copysignf.c: New.
	* sysdeps/alpha/fpu/s_fabs.c: New.
	* sysdeps/alpha/fpu/s_fabsf.c: New.
	* sysdeps/alpha/fpu/s_rint.c: New.
	* sysdeps/alpha/fpu/s_rintf.c: New.
2000-03-20 20:32:11 +00:00