Commit Graph

148 Commits

Author SHA1 Message Date
Andreas Schwab 4e6e34e6ca Update powerpc libm-test ULPs 2012-11-23 16:57:39 +01:00
Joseph Myers 5b5b04d628 Make fma use of Dekker and Knuth algorithms use round-to-nearest (bug 14796). 2012-11-03 19:48:53 +00:00
Andreas Schwab 1818fcb781 Update powerpc libm ULPs 2012-10-31 22:20:21 +01:00
Adhemerval Zanella 28cfe84316 Fix ctan, ctanh of subnormals in round-upwards mode (bug 14328).
IBM long double fixes and POWER ulps update.
2012-07-11 09:19:27 -03:00
Andreas Schwab 0abaf3e48a Fix float range reduction problems (#14283) 2012-07-06 23:57:20 +02:00
Adhemerval Zanella 73a68f94d6 PowerPC: Fix for POWER7 sinf/cosf
This patch fixes some sinf/cosf calculations that generated unexpected
underflows exceptions.
2012-06-01 10:10:18 -03:00
Andreas Schwab e77253266a Sort sysdeps/powerpc/fpu/libm-test-ulps 2012-06-01 01:26:27 +02:00
Joseph Myers 795405f956 Don't include exceptions in libm-test-ulps test names. 2012-05-24 12:14:03 +00:00
Adhemerval Zanella 478143fa17 PowerPC: ULPs update
Adjustments for libm ulps added with commit d8b82cad1b,
495fd99f3a, and 5ba3cc691c.
I also adjusted some exp10 ulps definition that was higher than needed.
2012-05-21 14:28:51 -03:00
Adhemerval Zanella a6f1845d45 Update powerpc ULPs for ccos, csin, ccosh, csinh tests. 2012-05-19 15:46:20 +00:00
Adhemerval Zanella 31dc8730af Fix for ldbl-128ibm acosl/asinl inaccuracies
2012-05-02  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>

	* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Fix
	long double comparison inaccuracies.
	* sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl):
	* Likewise.
	* sysdeps/powerpc/fpu/libm-test-ulps: Update.
2012-05-04 13:06:32 +02:00
Adhemerval Zanella 0ac229c819 Fix ctan, ctanh overflow for ldbl-128ibm (bug 11521). 2012-04-26 11:18:11 -05:00
Adhemerval Zanella 94e02fc410 Correct powerpc64 s_floorl edge cases (bug 13886).
[BZ #13886]
Remove powerpc64/fpu/s_floorl.  Use fully correct ldbl-128bim/s_floorl.c.
2012-04-24 14:21:45 -05:00
Andreas Schwab c876e002a2 Update powerpc libm test ULPs 2012-03-26 14:20:28 +02:00
Andreas Schwab 233fc56343 Update powerpc libm-test ULPs 2012-03-21 23:59:22 +01:00
Andreas Schwab e79d442ee6 Update powerpc libm test ULPs 2012-03-18 15:20:42 +01:00
Andreas Schwab 11e0098ef0 Use double precision instead of scaling for powerpc __ieee754_hypotf 2012-03-15 18:13:52 +01:00
Andreas Schwab 9cad04eaf7 Update powerpc libm ULPs 2012-03-15 13:55:46 +01:00
Andreas Schwab 058c132dd1 Update powerpc libm ULPs 2012-03-10 19:18:42 +01:00
Richard Henderson b8c036204f Use include_next to chain math_private.h headers. 2012-03-09 16:11:26 -08:00
Richard Henderson 1ed0291c31 Use <> for math.h and math_private.h everywhere.
Entire tree edited via find | grep | sed.
2012-03-09 16:09:10 -08:00
Richard Henderson 67bb6da679 powerpc: Convert __ieee754_sqrt{,f} from macros to inlines. 2012-03-09 11:16:18 -08:00
Andreas Schwab 884c5db424 Update powerpc libm ULPs 2012-03-05 20:38:18 +01:00
Andreas Schwab c692293436 Update powerpc libm ULPs 2012-03-04 16:03:21 +01:00
Joseph Myers 7b1902cb3e Improve erfc accuracy. 2012-03-01 21:15:38 +00:00
Joseph Myers 5ad91f6e6f Resort ULPs files with gen-libm-test.pl -n in C locale. 2012-02-20 18:06:05 +00:00
Paul Eggert 59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Andreas Schwab 84ba42c4fb Adjust libm test ULPs for powerpc 2012-02-07 15:21:41 +01:00
Joseph Myers 8db2188281 Remove __STDC__ conditionals from libm. 2012-01-27 17:29:45 +00:00
Andreas Schwab 850fb039ce Fix a wrong constant in powerpc hypot implementation 2011-12-06 11:12:01 +01:00
Adhemerval Zanella 8a6d525522 PowerPC: Arithmetic function optimizations for POWER 2011-11-11 13:33:38 -05:00
Ulrich Drepper 0ac5ae2335 Optimize libm
libm is now somewhat integrated with gcc's -ffinite-math-only option
and lots of the wrapper functions have been optimized.
2011-10-12 11:27:51 -04:00
Andreas Schwab 68822d7426 Adjust powerpc libm ULPs 2011-09-28 10:12:56 +02:00
Andreas Schwab edc121be8b Fix PLT uses in libm on powerpc 2011-09-15 15:35:38 +02:00
Ulrich Drepper bd8f72ec2a Fix whitespaces 2011-09-07 22:12:47 -04:00
Adhemerval Zanella 77a2a8b4a1 Trigonometric optimizations for POWER 2011-09-07 22:10:26 -04:00
Andreas Schwab 94d7165ffa Adjust libm test ulps for powerpc 2011-08-20 08:39:39 -04:00
Jakub Jelinek 5e908464b9 Implement accurate fma. 2010-10-13 22:27:03 -04:00
Jakub Jelinek 9ff8d36f27 Correct implementation of fmaf. 2010-10-11 09:27:05 -04:00
Andreas Schwab 7eb22e757e Avoid PLT call to fegetenv on s390 2010-02-09 22:34:17 -08:00
Philippe De Muyter 868f7a4053 Fix spelling of (Newton-)Raphson 2009-11-06 09:33:27 -08:00
Ulrich Drepper 1454da2195 * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S: Use
.machine push; .machine "power6" and .machine pop around mtfsf
	insns outside of _ARCH_PWR6 define.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
	Likewise.
	* sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (_SET_DI_FPSCR): Likewise.
	* sysdeps/powerpc/fpu/fenv_libc.h (fesetenv_register,
	relax_fenv_state): Likewise.
2009-03-10 04:47:30 +00:00
Ulrich Drepper b7219e53bc [BZ #9726]
2009-01-11  Ryan S. Arnold  <rsa@us.ibm.com>
	[BZ #9726]
	* sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (_SET_DI_FPSCR,
	_SET_SI_FPSCR): Clobber fp0 to prevent erroneous test-case passes.

2009-01-08  Ryan S. Arnold  <rsa@us.ibm.com>

	[BZ #9726]
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
	(__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
	(__CONTEXT_FUNC_NAME): Fix mtfsf to use fp31 instead of fp0.
2009-01-30 20:30:46 +00:00
Ulrich Drepper edba7a54eb [BZ #6411]
2008-11-13  Ryan S. Arnold  <rsa@us.ibm.com>
	[BZ #6411]
	* sysdeps/powerpc/fpu/Makefile: Added test case tst-setcontext-fpscr.
	* sysdeps/powerpc/fpu/feholdexcpt.c (_FPU_MASK_ALL): Define to replace
	magic numbers.
	* sysdeps/powerpc/fpu/fenv_libc.h (fesetenv_register): Dynamically
	choose mtfsf insn based on PPC_FEATURE_HAS_DFP.
	(relax_fenv_state): Same as above.
	(FPSCR_29): Reserve bit in ISA 2.05.
	(FPSCR_NI): Provide define for compat.
	* sysdeps/powerpc/fpu/fesetenv.c (_FPU_MASK_ALL): Define to replace
	magic numbers.
	* sysdeps/powerpc/fpu/feupdateenv.c (_FPU_MASK_ALL): Define to replace
	magic numbers.
	* sysdeps/powerpc/fpu/tst-setcontext-fpscr.c: New file.  Test case to
	test setcontext and swapcontext with dynamic 64-bit FPSCR detection.
	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S (__longjmp): Adjust
	access to hwcap to account for hwcap size increase to uint64_t.
	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S (__sigsetjmp ):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
	(*setcontext): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/setcontext.S:
	New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/swapcontext.S:
	New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
	(*setcontext): dynamically select mtfsf insn based on
	PPC_FEATURE_HAS_DFP. Adjust access to hwcap to account for hwcap size
	increase to uint64_t.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
	(*swapcontext): dynamically select mtfsf insn based on
	PPC_FEATURE_HAS_DFP.  Adjust access to hwcap to account for hwcap size
	increase to uint64_t.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/setcontext.S:
	New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/swapcontext.S:
	New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
	(*setcontext): dynamically select mtfsf insn based on
	PPC_FEATURE_HAS_DFP.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
	(*swapcontext): dynamically select mtfsf insn based on
	PPC_FEATURE_HAS_DFP.
2008-11-17 02:49:45 +00:00
Ulrich Drepper 7df49c5d81 [BZ #6845]
2008-08-14  Ryan S. Arnold  <rsa@us.ibm.com>
	[BZ #6845]
	* sysdeps/powerpc/fpu/bits/mathinline.h (__signbitl): Copy new
	__signbitl definition and __LONG_DOUBLE_128__ guard from:
	* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: Remove as
	redundant.  Functions which call floating point assembler operations
	should go into a sysdeps powerpc/fpu directory.
2008-08-17 07:34:10 +00:00
Ulrich Drepper c3a0ead420 * sysdeps/powerpc/fpu/e_sqrt.c: Avoid call to fetestexcept.
* sysdeps/powerpc/fpu/e_sqrtf.c: Likewise.
2008-04-12 03:39:30 +00:00
Ulrich Drepper 246ec41199 * sysdeps/powerpc/fpu/fenv_libc.h: Add libm_hidden_proto for
__fe_nomask_env.
	* sysdeps/powerpc/fpu/fe_nomask.c: Add libm_hidden_def.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: Likewise.

	* sysdeps/powerpc/bits/fenv.h: Make safe for C++.

	* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: New file.
	* sysdeps/powerpc/fpu/fegetexcept.c (__fegetexcept): Rename
	function from fegetexcept and make old name weak alias.
	* include/fenv.h: Declare __fegetexcept.
	* sysdeps/powerpc/fpu/fedisblxcpt.c: Use __fegetexcept instead of
	fegetexcept.
	* sysdeps/powerpc/fpu/feenablxcpt.c: Likewise.
	* sysdeps/powerpc/fpu/fraiseexcpt.c (__feraiseexcept): Avoid call
	to fetestexcept.
	* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Use __frexpl
	instead of frexpl to avoid local PLT.
	* math/s_significandl.c (__significandl): Use __ilogbl instead of
	ilogbl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Use __ldexpl
	instead of ldexpl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Use
	__roundl not roundl to avoid local PLT.
	* sysdeps/ieee754/ldbl-128/e_j0l.c: Use function names which avoid
	local PLTs.  Use __sincosl instead of separate sinl and cosl
	calls.
	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
2008-04-12 00:51:34 +00:00
Ulrich Drepper 5f7aead5c4 [BZ #5768]
2008-02-19  Steven Munroe  <sjmunroe@us.ibm.com>
	[BZ #5768]
	* sysdeps/powerpc/fpu/Makefile (libm-tests): Add test-powerpc-snan.
	* sysdeps/powerpc/fpu/test-powerpc-snan.c: New file.

2008-02-18  Steven Munroe  <sjmunroe@us.ibm.com>

	[BZ #5768]
	* sysdeps/powerpc/powerpc32/fpu/s_isnan.S: New file.
	* sysdeps/powerpc/powerpc32/fpu/s_isnan.c: Removed.
	* sysdeps/powerpc/powerpc64/fpu/s_isnan.S: New file.
	* sysdeps/powerpc/powerpc64/fpu/s_isnan.c: Removed.
2008-04-10 14:17:22 +00:00
Ulrich Drepper de1c3ebb59 * misc/sys/cdefs.h (__va_arg_pack): Define for GCC 4.3+.
* misc/bits/syslog.h (syslog): When __va_arg_pack is defined,
	implement as __extern_always_inline function.
	(vsyslog): Define as __extern_always_inline function unconditionally.
	* libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf):
	When __va_arg_pack is defined, implement as __extern_always_inline
	functions.
	(vsprintf, vsnprintf, vprintf, vfprintf): Define as
	__extern_always_inline functions unconditionally.
	* libio/bits/stdio.h (vprintf): Ifdef out the inline when
	bits/stdio2.h will be included.
	* wcsmbs/bits/wchar2.h (__swprintf_alias): New redirect.
	(swprintf, wprintf, fwprintf): When __va_arg_pack is defined,
	implement as __extern_always_inline functions.
	(vswprintf, vwprintf, vfwprintf): Define as
	__extern_always_inline functions unconditionally.
	* debug/tst-chk1.c (do_test): Enable remaining tests for C++.

2007-09-03  Jakub Jelinek  <jakub@redhat.com>

	* misc/sys/cdefs.h (__extern_inline, __extern_always_inline): Only
	define in C++ for GCC 4.3+, in C++ always use __gnu_inline__
	attribute.
	* include/features.h (__USE_EXTERN_INLINES): Define only when
	__extern_inline is defined.
	* stdlib/stdlib.h: Include bits/stdlib.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	* misc/sys/syslog.h: Include bits/syslog.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	* socket/sys/socket.h: Include bits/socket2.h when
	__extern_always_inline is defined instead of when not __cplusplus.
	* libio/stdio.h: Include bits/stdio2.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	* posix/unistd.h: Include bits/unistd.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	* string/string.h: Include bits/string3.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	* wcsmbs/wchar.h: Include bits/wchar2.h when __extern_always_inline
	is defined instead of when not __cplusplus.
	(btowc, wctob): Don't guard the inlines with ifndef __cplusplus.
	* io/fcntl.h: Don't include bits/fcntl2.h if __extern_always_inline
	is not defined.
	* misc/bits/syslog-ldbl.h: Guard *_chk stuff with
	defined __extern_always_inline instead of !defined __cplusplus.
	* libio/bits/stdio-ldbl.h: Likewise.
	* wcsmbs/bits/wchar-ldbl.h: Likewise.
	* misc/bits/syslog.h (syslog): Don't define for C++.
	(vsyslog): Use __extern_always_inline function for C++ instead of
	a macro.
	* libio/bits/stdio.h (__STDIO_INLINE): Define to __extern_inline
	whenever that macro is defined.
	(vprintf): Don't provide the inline for C++.
	(fread_unlocked, fwrite_unlocked): Don't define the macros for C++.
	* libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf): Don't
	define the macros for C++.
	(vsprintf, vsnprintf, vprintf, vfprintf): Define as
	__extern_always_inline functions for C++.
	* io/sys/stat.h (stat, lstat, fstat, fstatat, mknod, mknodat,
	stat64, lstat64, fstat64, fstatat64): Don't define if not
	__USE_EXTERN_INLINES.
	* wcsmbs/bits/wchar2.h: Fix #error message.
	(swprintf, wprintf, fwprintf): Don't define the macros for C++.
	(vswprintf, vwprintf, vfwprintf): Define using
	__extern_always_inline functions for C++.
	* string/bits/string3.h: Don't #undef macros if __cplusplus.
	(memcpy, memmove, mempcpy, memset, bcopy, bzero, strcpy, stpcpy,
	strncpy, strcat, strncat): Define as __extern_always_inline
	functions instead of macros for C++.
	* math/bits/cmathcalls.h: Guard __extern_inline routines with
	defined __extern_inline.
	* sysdeps/alpha/fpu/bits/mathinline.h (__MATH_INLINE): Define
	to __extern_inline whenever that macro is defined.
	* sysdeps/ia64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/i386/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/i386/i486/bits/string.h (__STRING_INLINE): Likewise.
	* sysdeps/s390/bits/string.h (__STRING_INLINE): Likewise.
	* sysdeps/s390/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/powerpc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/x86_64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/sparc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise.
	* sysdeps/unix/sysv/linux/sys/sysmacros.h (gnu_dev_major,
	gnu_dev_minor, gnu_dev_makedev): Remove __extern_inline from
	prototypes.  Only provide __extern_inline routines if
	__USE_EXTERN_INLINES.
	* debug/Makefile: Add rules to build and run tst-{,lfs}chk{4,5,6}
	tests.
	* debug/tst-chk1.c (do_prepare, do_test): Allow compilation as C++.
	For now avoid some *printf tests in C++.  Skip all testing
	if __USE_FORTIFY_LEVEL is defined, but __extern_always_inline macro
	is not.
	* debug/tst-chk4.cc: New file.
	* debug/tst-chk5.cc: New file.
	* debug/tst-chk6.cc: New file.
	* debug/tst-lfschk4.cc: New file.
	* debug/tst-lfschk5.cc: New file.
	* debug/tst-lfschk6.cc: New file.
	* include/wchar.h (__vfwprintf_chk, __vswprintf_chk): Avoid
	prototypes in C++.
	* include/stdio.h (__sprintf_chk, __snprintf_chk, __vsprintf_chk,
	__vsnprintf_chk, __printf_chk, __fprintf_chk, __vprintf_chk,
	__vfprintf_chk, __fgets_unlocked_chk, __fgets_chk): Likewise.
2007-09-15 02:38:04 +00:00
Ulrich Drepper 4a59e9adcb 2007-04-30 Steven Munroe <sjmunroe@us.ibm.com>
Peter Bergner  <bergner@us.ibm.com>

	* sysdeps/powerpc/bits/fenv.h: Declare __fe_mask_env extern.
	Define FE_NOMASK_ENV as FE_EANBLED_ENV.  Define FE_MASK_ENV.
	* sysdeps/powerpc/fpu/Makefile: Add fe_mask to libm-support.
	* sysdeps/powerpc/fpu/fe_mask.c: New file.
	* sysdeps/powerpc/fpu/fe_nomask.c: Correct comment.
	* sysdeps/powerpc/fpu/fedisblxcpt.c (fedisableexcept):
	Call __fe_mask_env() if all FP exceptions disabled.
	* sysdeps/powerpc/fpu/feholdexcpt.c (feholdexcept): Copy high 32-bits
	from old FPSCR to new fenv to propagate DFP rounding modes.
	Call __fe_mask_env() if FP exceptions previously enabled.
	* sysdeps/powerpc/fpu/fesetenv.c (fesetenv): Change mask to merge
	exceptions from env.  Use __fe_nomask_env() or __fe_mask_env() when
	transitioning from all exceptions disabled to any exception enabled
	or visa versa.
	* sysdeps/powerpc/fpu/feupdateenv.c (__feupdateenv): Change mask to
	merge exceptions from env.  Call __fe_nomask_env or __fe_mask_env
	when transitioning from all exceptions disabled to any exception
	enabled or visa versa.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c: ...here.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c: ...here.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c: New file.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c: New file.
2007-05-07 06:22:38 +00:00