about summary refs log tree commit diff
path: root/sysdeps/powerpc
Commit message (Collapse)AuthorAgeFilesLines
* Fix powerpc software sqrt (bug 17964). release/2.19/masterJoseph Myers2017-02-201-15/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As Adhemerval noted in <https://sourceware.org/ml/libc-alpha/2015-01/msg00451.html>, the powerpc sqrt implementation for when _ARCH_PPCSQ is not defined is inaccurate in some cases. The problem is that this code relies on fused multiply-add, and relies on the compiler contracting a * b + c to get a fused operation. But sysdeps/ieee754/dbl-64/Makefile disables contraction for e_sqrt.c, because the implementation in that directory relies on *not* having contracted operations. While it would be possible to arrange makefiles so that an earlier sysdeps directory can disable the setting in sysdeps/ieee754/dbl-64/Makefile, it seems a lot cleaner to make the dependence on fused operations explicit in the .c file. GCC 4.6 introduced support for __builtin_fma on powerpc and other architectures with such instructions, so we can rely on that; this patch duly makes the code use __builtin_fma for all such fused operations. Tested for powerpc32 (hard float). 2015-02-12 Joseph Myers <joseph@codesourcery.com> [BZ #17964] * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Use __builtin_fma instead of relying on contraction of a * b + c. (cherry picked from commit e8bd5286c68bc35be3b41e94c15c4387dcb3bec9)
* powerpc: Fix fsqrt build in libm [BZ#16576]Adhemerval Zanella2016-11-215-102/+24
| | | | | | | | | | | | Some powerpc64 processors (e5500 core for instance) does not provide the fsqrt instruction, however current check to use in math_private.h is __WORDSIZE and _ARCH_PWR4 (ISA 2.02). This is patch change it to use the compiler flag _ARCH_PPCSQ (which is the same condition GCC uses to decide whether to generate fsqrt instruction). It fixes BZ#16576. (cherry picked from commit 08cee2a464f614a6d4275b5af6c52481f1aa16e6)
* PowerPC: Fix gprof entry point for LEAdhemerval Zanella2015-08-241-0/+2
| | | | | | | | This patch fixes the ELFv2 gprof entry point since the ABI does not define function descriptors. It fixes BZ#17213. Conflicts: NEWS
* abilist-pattern configurabilityAdhemerval Zanella2014-02-041-0/+4
| | | | | | | This patch creates implicit rules to match the abifiles if abilist-pattern is defined in the architecture Makefile. This allows machine specific Makefiles to define different abifiles names (for instance *-le.abilist for powerpc64le).
* PowerPC: sotruss-lib implementationAdhemerval Zanella2014-01-151-0/+69
| | | | This patch add the missing sotruss-lib interfaces for PowerPC.
* PowerPC: remove wrong truncl implementation for PowerPC64Adhemerval Zanella2014-01-081-120/+0
| | | | | | | | | | | | | | | The truncl assembly implementation (sysdeps/powerpc/powerpc64/fpu/s_truncl.S) returns wrong results for some inputs where first double is a exact integer and the precision is determined by second long double. Checking on implementation comments and history, I am very confident the assembly implementation was based on a version before commit 5c68d401698a58cf7da150d9cce769fa6679ba5f that fixes BZ#2423 (Errors in long double (ldbl-128ibm) rounding functions in glibc-2.4). By just removing the implementation and make the build select sysdeps/ieee754/ldbl-128ibm/s_truncl.c instead it fixes tgammal issues regarding wrong result sign.
* Update powerpc-fpu ULPs.Adhemerval Zanella2014-01-081-6/+91
|
* Regenerate powerpc-nofpu ulps (again).Joseph Myers2014-01-071-52/+64
|
* Fix soft-float ldbl-128ibm atan2l signs of zero results (bug 16390).Joseph Myers2014-01-031-0/+1
| | | | | | | | | | | This patch fixes bug 16390, incorrect signs of zero results from ldbl-128ibm atan2l, soft-float only. The problem is a longstanding GCC bug with fabsl not being correct for signed zero for soft float, and the fix is using -fno-builtin-fabsl as a workaround, as already done for various other source files. Tested powerpc-nofpu. * sysdeps/powerpc/nofpu/Makefile [$(subdir) = math] (CFLAGS-e_atan2l.c): Use -fno-builtin-fabsl.
* PowerPC: Fix compiler warningsAdhemerval Zanella2014-01-034-4/+4
| | | | | This patch fixes some compile warnings related to extra tokens at end of #undef directive from multilib patchset.
* Regenerate powerpc-nofpu ulps.Joseph Myers2014-01-031-963/+7499
|
* Update copyright notices with scripts/update-copyrightsAllan McRae2014-01-01697-697/+697
|
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-231-73/+4075
|
* Don't make soft-fp symbols compat symbols for powerpc-nofpu.Joseph Myers2013-12-192-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sysdeps/powerpc/powerpc32/libgcc-compat.S makes certain symbols that glibc once accidentally reexported from libgcc into compat symbols. Where the exports were purely accidental, this is the right thing to do. However, for powerpc-nofpu the soft-fp symbols are deliberately exported from libc, given public versions in sysdeps/powerpc/nofpu/Versions and used by libm in preference to the libgcc versions that do not support the software exceptions and rounding modes. The libc versions should also be usable by user programs, though normally libgcc gets linked in first (meaning, effectively, that the <fenv.h> functions are broken as regards their expected effects on user arithmetic). A longstanding todo item is to remove the functions in question from libgcc (when built with recent enough glibc) - that is, remove them from static libgcc and make them compat symbols in shared libgcc - so that this works properly (this is one of the items mentioned at <http://gcc.gnu.org/wiki/Software_floating_point> - parts of that page are obviously out of date, but this item still applies). Doing this requires first that the functions are actually available from libc for new links, not just as compat symbols. This patch stops the symbols in question being compat symbols for powerpc-nofpu. The nofpu Versions entries for them are removed (the symbols never were exported at GLIBC_2.3.2, only GLIBC_2.0, because the compat symbols took precedence). Tested powerpc-nofpu. The symbols are no longer compat symbols and libm.so now properly gets undefined references to them (resolved to libc.so) instead of the libgcc copies getting linked into libm as before. * sysdeps/powerpc/powerpc32/libgcc-compat.S [_SOFT_FLOAT || __NO_FPRS__] (__fixdfdi_v_glibc20): Do not define as a macro and a compat symbol. [_SOFT_FLOAT || __NO_FPRS__] (__fixsfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunsdfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__fixunssfdi_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floatdidf_v_glibc20): Likewise. [_SOFT_FLOAT || __NO_FPRS__] (__floaddisf_v_glibc20): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixdfdi): Do not use .hidden. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixsfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunsdfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__fixunssfdi): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddidf): Likewise. [HAVE_DOT_HIDDEN && (_SOFT_FLOAT || __NO_FPRS__)] (__floaddisf): Likewise. * sysdeps/powerpc/nofpu/Versions (libc): Remove __fixdfdi, __fixsfdi, __fixunsdfdi, __fixunssfdi, __floatdidf and __floatdisf from GLIBC_2.3.2.
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-191-0/+633
|
* Fix uses of CALL_MCOUNT in ppc64 assembler sourcesAndreas Schwab2013-12-193-2/+6
|
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-171-2/+380
|
* PowerPC: multiarch hypot/hypotf for PowerPC64Adhemerval Zanella2013-12-137-1/+158
|
* PowerPC: multiarch modf/modff for PowerPC64Adhemerval Zanella2013-12-137-2/+173
|
* PowerPC: multiarch logb/logbl/logbf for PowerPC64Adhemerval Zanella2013-12-1310-1/+244
|
* PowerPC: multiarch isinf/isinff for PowerPC64Adhemerval Zanella2013-12-136-2/+178
|
* PowerPC: multiarch finite/finitef for PowerPC64Adhemerval Zanella2013-12-136-2/+186
|
* PowerPC: multiarch llrint/lrint for PowerPC64Adhemerval Zanella2013-12-135-1/+122
|
* PowerPC: multiarch copysign/copysignf for PowerPC64Adhemerval Zanella2013-12-135-2/+155
|
* PowerPC: multiarch trunc/truncf for PowerPC64Adhemerval Zanella2013-12-137-1/+188
|
* PowerPC: multiarch round/roundf for PowerPC64Adhemerval Zanella2013-12-137-1/+188
|
* PowerPC: multiarch floor/floorf for PowerPC64Adhemerval Zanella2013-12-137-1/+190
|
* PowerPC: multiarch ceil/ceilf for PowerPC64Adhemerval Zanella2013-12-137-1/+188
|
* PowerPC: multiarch llround/lround for PowerPC64Adhemerval Zanella2013-12-136-1/+155
|
* PowerPC: multiarch isnan/isnanf for PowerPC64Adhemerval Zanella2013-12-138-0/+264
|
* PowerPC: Adjust multiarch Implies for PowerPC64Adhemerval Zanella2013-12-135-0/+5
| | | | | | This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
* PowerPC: Cleaning up uneeded sqrt routinesAdhemerval Zanella2013-12-134-202/+0
| | | | | | | | For PPC64, all the wrappers at sysdeps are superfluous: they are basically the same implementation from math/w_sqrt.c with the '#ifdef _IEEE_LIBM'. And the power4 version just force the 'fsqrt' instruction utilization with an inline assembly, which is already handled by math_private.h __ieee754_sqrt implementation.
* PowerPC: multiarch stpcpy for PowerPC64Adhemerval Zanella2013-12-135-1/+130
|
* PowerPC: multiarch strcpy for PowerPC64Adhemerval Zanella2013-12-135-1/+123
|
* PowerPC: multiarch wordcopy for PowerPC64Adhemerval Zanella2013-12-135-1/+146
|
* PowerPC: multiarch wcscpy for PowerPC64.Adhemerval Zanella2013-12-136-1/+106
|
* PowerPC: multiarch wcsrchr for PowerPC64Adhemerval Zanella2013-12-136-1/+107
|
* PowerPC: multiarch wcschr for PowerPC64Adhemerval Zanella2013-12-136-1/+109
|
* PowerPC: multiarch strchrnul for PowerPC64Adhemerval Zanella2013-12-135-1/+105
|
* PowerPC: multiarch strchr for PowerPC64Adhemerval Zanella2013-12-136-1/+143
|
* PowerPC: multiarch strncmp for PowerPC64Adhemerval Zanella2013-12-136-1/+169
|
* PowerPC: multiarch strncasecmp for PowerPC64Adhemerval Zanella2013-12-136-1/+152
|
* PowerPC: multiarch strcasecmp for PowerPC64Adhemerval Zanella2013-12-136-1/+182
|
* PowerPC: multiarch strnlen for PowerPC64Adhemerval Zanella2013-12-135-1/+104
|
* PowerPC: multiarch strlen for PowerPC64Adhemerval Zanella2013-12-135-1/+120
|
* PowerPC: multiarch rawmemchr for PowerPC64Adhemerval Zanella2013-12-135-1/+102
|
* PowerPC: multiarch memrchr for PowerPC64Adhemerval Zanella2013-12-135-1/+107
|
* PowerPC: multiarch memchr for PowerPC64Adhemerval Zanella2013-12-135-1/+107
|
* PowerPC: multiarch mempcpy for PowerPC64Adhemerval Zanella2013-12-135-1/+109
|
* PowerPC: multiarch memset/bzero for PowerPC64Adhemerval Zanella2013-12-1316-1/+385
|