about summary refs log tree commit diff
path: root/soft-fp
Commit message (Collapse)AuthorAgeFilesLines
...
* soft-fp: Fix _FP_TO_INT latent bug in overflow handling.Joseph Myers2014-10-091-2/+7
| | | | | | | | | | | | | | | | | | | | This patch fixes a latent bug in _FP_TO_INT regarding handling of arguments with maximum exponent (infinities and NaNs). If the maximum exponent is below that calculated as an overflow threshold, such values would incorrectly be treated as normal values for the purposes of the conversion. This could not occur for any of the conversions actually occurring in glibc, libgcc or the Linux kernel (the maximum exponent for float is, just, big enough to ensure overflow for unsigned __int128), but would apply if soft-fp were used for IEEE binary16. Appropriate checks are inserted to ensure that the maximum exponent is always treated as an overflowing exponent, and never as a normal one. Tested for powerpc-nofpu that the disassembly of installed shared libraries is unchanged by this patch. * soft-fp/op-common.h (_FP_TO_INT): Ensure maximum exponent is treated as invalid conversion, not as normal exponent.
* soft-fp: Refactor exception handling for comparisons.Joseph Myers2014-10-0917-61/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch refactors how soft-fp comparisons handle setting exceptions for NaN operands, so that exceptions are set through the FP_CMP macros rather than directly in the C files calling them. The _FP_CMP* and FP_CMP* macros gain an extra argument to specify when exceptions should be set, 0 for no exception setting (I'm not sure this is actually needed - at least it's not needed for IEEE operations in glibc / libgcc, but might be relevant in some cases for kernel use), 1 for exceptions only for signaling NaNs and 2 for exceptions for all NaNs. This argument is handled through _FP_CMP_CHECK_NAN, newly called by the _FP_CMP* macros when a NaN is encountered. Calls to these macros are updated, which eliminates all the existing checking and exception setting in soft-fp *.c files in glibc. Tested for powerpc-nofpu. (The __unord* functions have no code changes; the __eq* / __ge* / __le* functions get slightly larger, but I don't think that's significant.) * soft-fp/op-common.h (_FP_CMP_CHECK_NAN): New macro. (_FP_CMP): Add extra argument EX. Call _FP_CMP_CHECK_NAN. (_FP_CMP_EQ): Likewise. (_FP_CMP_UNORD): Likewise. * soft-fp/double.h (FP_CMP_D): Add extra argument EX. (FP_CMP_EQ_D): Likewise. (FP_CMP_UNORD_D): Likewise. * soft-fp/extended.h (FP_CMP_E): Likewise. (FP_CMP_EQ_E): Likewise. (FP_CMP_UNORD_E): Likewise. * soft-fp/quad.h (FP_CMP_Q): Likewise. (FP_CMP_EQ_Q): Likewise. (FP_CMP_UNORD_Q): Likewise. * soft-fp/single.h (FP_CMP_S): Likewise. (FP_CMP_EQ_S): Likewise. (FP_CMP_UNORD_S): Likewise. * soft-fp/eqdf2.c (__eqdf2): Update call to FP_CMP_EQ_D. * soft-fp/eqsf2.c (__eqsf2): Update call to FP_CMP_EQ_S. * soft-fp/eqtf2.c (__eqtf2): Update call to FP_CMP_EQ_Q. * soft-fp/gedf2.c (__gedf2): Update call to FP_CMP_D. * soft-fp/gesf2.c (__gesf2): Update call to FP_CMP_S. * soft-fp/getf2.c (__getf2): Update call to FP_CMP_Q. * soft-fp/ledf2.c (__ledf2): Update call to FP_CMP_D. * soft-fp/lesf2.c (__lesf2): Update call to FP_CMP_S. * soft-fp/letf2.c (__letf2): Update call to FP_CMP_Q. * soft-fp/unorddf2.c (__unorddf2): Update call to FP_CMP_UNORD_D. * soft-fp/unordsf2.c (__unordsf2): Update call to FP_CMP_UNORD_S. * soft-fp/unordtf2.c (__unordtf2): Update call to FP_CMP_UNORD_Q. * sysdeps/alpha/soft-fp/ots_cmpe.c (internal_compare): Update call to FP_CMP_Q. * sysdeps/sparc/sparc32/soft-fp/q_cmp.c (_Q_cmp): Update call to FP_CMP_Q. * sysdeps/sparc/sparc32/soft-fp/q_cmpe.c (_Q_cmpe): Likewise. * sysdeps/sparc/sparc32/soft-fp/q_feq.c (_Q_feq): Update call to FP_CMP_EQ_Q. * sysdeps/sparc/sparc32/soft-fp/q_fge.c (_Q_fge): Update call to FP_CMP_Q. * sysdeps/sparc/sparc32/soft-fp/q_fgt.c (_Q_fgt): Likewise. * sysdeps/sparc/sparc32/soft-fp/q_fle.c (_Q_fle): Likewise. * sysdeps/sparc/sparc32/soft-fp/q_flt.c (_Q_flt): Likewise. * sysdeps/sparc/sparc32/soft-fp/q_fne.c (_Q_fne): Update call to FP_CMP_EQ_Q. * sysdeps/sparc/sparc64/soft-fp/qp_cmp.c (_Qp_cmp): Update call to FP_CMP_Q. * sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c (_Qp_cmpe): Likewise. * sysdeps/sparc/sparc64/soft-fp/qp_feq.c (_Qp_feq): Update call to FP_CMP_EQ_Q. * sysdeps/sparc/sparc64/soft-fp/qp_fge.c (_Qp_fge): Update call to FP_CMP_Q. * sysdeps/sparc/sparc64/soft-fp/qp_fgt.c (_Qp_fgt): Likewise. * sysdeps/sparc/sparc64/soft-fp/qp_fle.c (_Qp_fle): Likewise. * sysdeps/sparc/sparc64/soft-fp/qp_flt.c (_Qp_flt): Likewise. * sysdeps/sparc/sparc64/soft-fp/qp_fne.c (_Qp_fne): Update call to FP_CMP_EQ_Q.
* soft-fp: Make extensions of subnormals from XFmode to TFmode signal ↵Joseph Myers2014-10-096-2/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | underflow if traps enabled. This patch fixes a soft-fp corner case I previously noted in <https://sourceware.org/ml/libc-alpha/2013-10/msg00349.html>: when trapping on underflow is enabled, extensions of subnormals from XFmode to TFmode need to signal underflow because the result is tiny (but exact, so the underflow flag is not raised unless trapping is enabled). To avoid any excess initialization or tests for other cases of floating-point extensions, a new FP_INIT_TRAPPING_EXCEPTIONS is added that does the initialization required for this particular case (more than FP_INIT_EXCEPTIONS, less than FP_INIT_ROUNDMODE, in general), and FP_NO_EXACT_UNDERFLOW is added to stub out FP_TRAPPING_EXCEPTIONS tests for those cases of extensions where the test would be dead code, to avoid any uninitialized variable warnings. As the relevant case only applies in libgcc, not to any use of soft-fp in glibc, there is no bug report in Bugzilla and no non-default definitions of FP_INIT_TRAPPING_EXCEPTIONS are added by the patch. A testcase will be added to GCC as part of an update of soft-fp in libgcc once this patch is in libc. Tested for powerpc-nofpu that the disassembly of installed shared libraries is unchanged by this patch. Bootstrapped GCC with updated soft-fp with no regressions on x86_64-unknown-linux-gnu and verified that a test of the relevant case passes where it failed before. * soft-fp/op-common.h (FP_EXTEND): When a subnormal input produces a subnormal result, set the underflow exception if trapping on underflow is enabled. * soft-fp/soft-fp.h (FP_INIT_TRAPPING_EXCEPTIONS): New macro. (FP_INIT_EXCEPTIONS): Default to FP_INIT_TRAPPING_EXCEPTIONS. [FP_NO_EXACT_UNDERFLOW] (FP_TRAPPING_EXCEPTIONS): Undefine and redefine to 0. * soft-fp/extenddftf2.c (FP_NO_EXACT_UNDERFLOW): Define. * soft-fp/extendsfdf2.c (FP_NO_EXACT_UNDERFLOW): Likewise. * soft-fp/extendsftf2.c (FP_NO_EXACT_UNDERFLOW): Likewise. * soft-fp/extendxftf2.c (__extendxftf2): Use FP_INIT_TRAPPING_EXCEPTIONS instead of FP_INIT_ROUNDMODE.
* soft-fp: Remove FP_CLEAR_EXCEPTIONS.Joseph Myers2014-10-091-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As noted in <https://sourceware.org/ml/libc-alpha/2013-10/msg00516.html>, the soft-fp macro FP_CLEAR_EXCEPTIONS should not be necessary, as soft-fp code should never set an exception and later clear it. In fact, all four uses in glibc (for SPARC) are indeed unnecessary: they appear in files that convert 32-bit or 64-bit integers to IEEE binary128, an operation that can never raise any exceptions. If this was intended to enable the compiler to optimize away any FP_FROM_INT code testing for exceptional cases, we now have a better way of doing this: defining FP_NO_EXCEPTIONS before including soft-fp.h causes all code handling exceptions to be stubbed out, and the rounding mode to be hardwired for round-to-zero, to allow such optimizations for source files where (a) the operation in question, for the particular types in question, can never raise exceptions, but (b) some instances of the operation for other types can, so the macros used in the file do contain references to rounding or exceptions, albeit dead in that particular file. The uses in the Linux kernel are also unnecessary (clearing exceptions at a point where they are already cleared). This patch duly removes FP_CLEAR_EXCEPTIONS, making the SPARC code in question use FP_NO_EXCEPTIONS and stop using exception-related macros. * soft-fp/soft-fp.h (FP_CLEAR_EXCEPTIONS): Remove macro. * sysdeps/sparc/sparc32/soft-fp/q_itoq.c: Define FP_NO_EXCEPTIONS. (_Q_itoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or FP_HANDLE_EXCEPTIONS. * sysdeps/sparc/sparc32/soft-fp/q_lltoq.c: Define FP_NO_EXCEPTIONS. (_Q_lltoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or FP_HANDLE_EXCEPTIONS. * sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c: Define FP_NO_EXCEPTIONS. (_Q_ulltoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or FP_HANDLE_EXCEPTIONS. * sysdeps/sparc/sparc32/soft-fp/q_utoq.c: Define FP_NO_EXCEPTIONS. (_Q_utoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or FP_HANDLE_EXCEPTIONS.
* soft-fp: Fix comment formatting.Joseph Myers2014-09-177-183/+113
| | | | | | | | | | | | | | | | | This patch fixes formatting of comments in soft-fp (in particular, the normal style in glibc does not have a leading '*' on each line, and comments should start with capital letters and end with ". */"). Tested for powerpc-nofpu that the disassembly of installed shared libraries is unchanged by this patch. * soft-fp/extended.h: Fix comment formatting. * soft-fp/op-1.h: Likewise. * soft-fp/op-2.h: Likewise. * soft-fp/op-4.h: Likewise. * soft-fp/op-8.h: Likewise. * soft-fp/op-common.h: Likewise. * soft-fp/soft-fp.h: Likewise.
* soft-fp: Correct _FP_TO_INT formatting.Joseph Myers2014-09-171-5/+7
| | | | | | | | | | This patch corrects some soft-fp formatting that failed to follow the GNU Coding Standards. Tested for powerpc-nofpu that the disassembly of installed shared libraries is unchanged by this patch. * soft-fp/op-common.h (_FP_TO_INT): Correct formatting.
* Rename soft-fp op-[1248].h variables to avoid risk of shadowing.Joseph Myers2014-06-304-510/+726
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the soft-fp variable renaming from <https://sourceware.org/ml/libc-alpha/2014-06/msg00434.html> to avoid shadowing if two macros happen to use the same variable name and that variable is involved in an argument one of those macros passes to another, this patch renames variables in op-[1248].h. (The two patches are to different files and are independent of each other.) Tested for powerpc32 (soft-float) and mips64 that this makes no change to the disassembly of installed shared libraries. * soft-fp/op-1.h (_FP_UNPACK_RAW_1): Rename local variables to include macro name. (_FP_UNPACK_RAW_1_P): Likewise. (_FP_PACK_RAW_1): Likewise. (_FP_PACK_RAW_1_P): Likewise. (_FP_MUL_MEAT_1_wide): Likewise. (_FP_MUL_MEAT_DW_1_hard): Likewise. (_FP_MUL_MEAT_1_hard): Likewise. (_FP_DIV_MEAT_1_imm): Likewise. (_FP_DIV_MEAT_1_udiv_norm): Likewise. (_FP_DIV_MEAT_1_udiv): Likewise. * soft-fp/op-2.h (__FP_FRAC_DEC_2): Likewise. (_FP_UNPACK_RAW_2): Likewise. (_FP_UNPACK_RAW_2_P): Likewise. (_FP_PACK_RAW_2): Likewise. (_FP_PACK_RAW_2_P): Likewise. (_FP_MUL_MEAT_DW_2_wide): Likewise. (_FP_MUL_MEAT_2_wide): Likewise. (_FP_MUL_MEAT_DW_2_wide_3mul): Likewise. (_FP_MUL_MEAT_2_wide_3mul): Likewise. (_FP_MUL_MEAT_DW_2_gmp): Likewise. (_FP_MUL_MEAT_2_gmp): Likewise. (_FP_DIV_MEAT_2_udiv): Likewise. * soft-fp/op-4.h (_FP_FRAC_SLL_4): Likewise. (_FP_FRAC_SRL_4): Likewise. (_FP_FRAC_SRST_4): Likewise. (_FP_FRAC_SRS_4): Likewise. (_FP_UNPACK_RAW_4): Likewise. (_FP_UNPACK_RAW_4_P): Likewise. (_FP_PACK_RAW_4): Likewise. (_FP_PACK_RAW_4_P): Likewise. (_FP_MUL_MEAT_DW_4_wide): Likewise. (_FP_MUL_MEAT_4_wide): Likewise. (_FP_MUL_MEAT_4_gmp): Likewise. (umul_ppppmnnn): Likewise. (_FP_DIV_MEAT_4_udiv): Likewise. (__FP_FRAC_ADD_4): Likewise. (__FP_FRAC_SUB_3): Likewise. (__FP_FRAC_SUB_4): Likewise. (__FP_FRAC_DEC_3): Likewise. (__FP_FRAC_DEC_4): Likewise. (__FP_FRAC_ADDI_4): Likewise. * soft-fp/op-8.h (_FP_FRAC_SLL_8): Likewise. (_FP_FRAC_SRL_8): Likewise. (_FP_FRAC_SRS_8): Likewise.
* Rename soft-fp extended.h, op-common.h variables to avoid risk of shadowing.Joseph Myers2014-06-302-258/+299
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In <https://sourceware.org/ml/libc-alpha/2013-06/msg00851.html>, I fixed a bug caused by multiple soft-fp macros using the same variable names, resulting in shadowing when one macro called another that used the same variable name, with an argument involving the variable in the outer macro. The fix was to rename the local variables so their names included the containing macro name, to ensure uniqueness. I noted then that this would make sense more systematically for all variables in any soft-fp macro. Since then, I've used such variable names in new soft-fp macros. This patch now converts existing macros in extended.h and op-common.h to use this convention. (op-[1248].h are intended to be converted separately.) (Name conflicts could arise for label names as well, but because those are function-scope in C any such conflict will give an immediate compile error rather than a subtle bug, so there's no need for preemptive renaming in that case.) Tested for powerpc32 (soft-float) and mips64 that this makes no change to the disassembly of installed shared libraries. * soft-fp/extended.h (FP_UNPACK_RAW_E): Rename local variables to include macro name. (FP_UNPACK_RAW_EP): Likewise. (FP_PACK_RAW_E): Likewise. (FP_PACK_RAW_EP): Likewise. * soft-fp/op-common.h (_FP_UNPACK_CANONICAL): Likewise. (_FP_ISSIGNAN): Likewise. (_FP_ADD_INTERNAL): Likewise. (_FP_FMA): Likewise. (_FP_CMP): Likewise. (_FP_SQRT): Likewise. (_FP_TO_INT): Likewise. (_FP_FROM_INT): Likewise. (FP_EXTEND): Likewise. (_FP_DIV_MEAT_N_loop): Likewise.
* Consistently include Makeconfig after defining subdir.Joseph Myers2014-02-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html> I noted it was necessary to add includes of Makeconfig early in various subdirectory makefiles for the tests-special variable settings added by that patch to be conditional on configuration information. No-one commented on the general question there of whether Makeconfig should always be included immediately after the definition of subdir. This patch implements that early inclusion of Makeconfig in each directory (which is a lot easier than consistent placement of includes of Rules). Includes are added if needed, or moved up if already present. Subdirectory "all:" targets are removed, since Makeconfig provides one. There is potential for further cleanups I haven't done. Rules and Makerules have code such as ifneq "$(findstring env,$(origin headers))" "" headers := endif to override to empty any value of various variables that came from the environment. I think there is a case for Makeconfig setting all the subdirectory variables (other than subdir) to empty to ensure no outside value is going to take effect if a subdirectory fails to define a variable. (A list of such variables, possibly out of date and incomplete, is in manual/maint.texi.) Rules and Makerules would give errors if Makeconfig hadn't already been included, instead of including it themselves. The special code to override values coming from the environment would then be obsolete and could be removed. Tested x86_64, including that installed binaries are identical before and after the patch. * argp/Makefile: Include Makeconfig immediately after defining subdir. * assert/Makefile: Likewise. * benchtests/Makefile: Likewise. * catgets/Makefile: Likewise. * conform/Makefile: Likewise. * crypt/Makefile: Likewise. * csu/Makefile: Likewise. (all): Remove target. * ctype/Makefile: Include Makeconfig immediately after defining subdir. * debug/Makefile: Likewise. * dirent/Makefile: Likewise. * dlfcn/Makefile: Likewise. * gmon/Makefile: Likewise. * gnulib/Makefile: Likewise. * grp/Makefile: Likewise. * gshadow/Makefile: Likewise. * hesiod/Makefile: Likewise. * hurd/Makefile: Likewise. (all): Remove target. * iconvdata/Makefile: Include Makeconfig immediately after defining subdir. * inet/Makefile: Likewise. * intl/Makefile: Likewise. * io/Makefile: Likewise. * libio/Makefile: Likewise. (all): Remove target. * locale/Makefile: Include Makeconfig immediately after defining subdir. * login/Makefile: Likewise. * mach/Makefile: Likewise. (all): Remove target. * malloc/Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. * manual/Makefile: Include Makeconfig immediately after defining subdir. * math/Makefile: Likewise. * misc/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * po/Makefile: Likewise. (all): Remove target. * posix/Makefile: Include Makeconfig immediately after defining subdir. * pwd/Makefile: Likewise. * resolv/Makefile: Likewise. * resource/Makefile: Likewise. * rt/Makefile: Likewise. * setjmp/Makefile: Likewise. * shadow/Makefile: Likewise. * signal/Makefile: Likewise. * socket/Makefile: Likewise. * soft-fp/Makefile: Likewise. * stdio-common/Makefile: Likewise. * stdlib/Makefile: Likewise. * streams/Makefile: Likewise. * string/Makefile: Likewise. * sunrpc/Makefile: Likewise. (all): Remove target. * sysvipc/Makefile: Include Makeconfig immediately after defining subdir. * termios/Makefile: Likewise. * time/Makefile: Likewise. * timezone/Makefile: Likewise. (all): Remove target. * wcsmbs/Makefile: Include Makeconfig immediately after defining subdir. * wctype/Makefile: Likewise. libidn/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. localedata/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. nptl/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. nptl_db/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir.
* soft-fp: support after-rounding tininess detection.Joseph Myers2014-02-122-4/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IEEE 754-2008 defines two ways in which tiny results can be detected, "before rounding" (based on the infinite-precision result) and "after rounding" (based on the result when rounded to normal precision as if the exponent range were unbounded). All binary operations on an architecture must use the same choice of how tininess is detected. soft-fp has so far implemented only before-rounding tininess detection. This patch adds support for after-rounding tininess detection. A new macro _FP_TININESS_AFTER_ROUNDING is added that sfp-machine.h must define (soft-fp is meant to be self-contained so the existing tininess.h files aren't used here, though the information going in sfp-machine.h has been taken from them). The soft-fp macros dealing with raising underflow exceptions then handle the cases where the choice matters specially, rounding a copy of the input to the appropriate precision to see if a value that's tiny before rounding isn't tiny after rounding. Tested for mips64 using GCC trunk (which now uses soft-fp on MIPS, so supporting exceptions and rounding modes for long double where not previously supported - this is the immediate motivation for doing this patch now) together with (a) a patch to sysdeps/mips/math-tests.h to enable exceptions / rounding modes tests for long double for GCC 4.9 and later, and (b) corresponding changes applied to libgcc's soft-fp and sfp-machine.h files. In the libgcc context this is also tested on x86_64 (also an after-rounding architecture) with testcases for __float128 that I intend to add to the GCC testsuite when updating soft-fp there. (To be clear: this patch does not fix any glibc bugs that were user-visible in past releases, since after-rounding architectures didn't use soft-fp in any affected case with support for floating-point exceptions - so there is no corresponding Bugzilla bug. Rather, it works together with the GCC changes to use soft-fp on MIPS to allow previously absent long double functionality to work properly, and allows soft-fp to be used in glibc on after-rounding architectures in cases where it couldn't previously be used.) * soft-fp/op-common.h (_FP_DECL): Mark exponent as possibly unused. (_FP_PACK_SEMIRAW): Determine tininess based on rounding shifted value if _FP_TININESS_AFTER_ROUNDING and unrounded value is in subnormal range. (_FP_PACK_CANONICAL): Determine tininess based on rounding to normal precision if _FP_TININESS_AFTER_ROUNDING and unrounded value has largest subnormal exponent. * soft-fp/soft-fp.h [FP_NO_EXCEPTIONS] (_FP_TININESS_AFTER_ROUNDING): Undefine and redefine to 0. * sysdeps/aarch64/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): New macro. * sysdeps/alpha/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/arm/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/mips/mips64/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/mips/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/powerpc/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/sh/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/sparc/sparc32/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise. * sysdeps/tile/sfp-machine.h (_FP_TININESS_AFTER_ROUNDING): Likewise.
* Update copyright notices with scripts/update-copyrightsAllan McRae2014-01-0188-88/+88
|
* Avoid "left shift count >= width of type" warnings in soft-fp code.Uros Bizjak2013-11-261-4/+4
|
* soft-fp: make extensions quiet signaling NaNs (bug 16041).Joseph Myers2013-10-171-0/+1
|
* soft-fp: fix horizontal whitespace.Joseph Myers2013-10-1687-1783/+1785
|
* soft-fp: remove unused macros.Joseph Myers2013-10-152-33/+0
|
* soft-fp: fix vertical whitespace and indentation.Joseph Myers2013-10-1585-3286/+3777
|
* soft-fp: fix preprocessor indentation.Joseph Myers2013-10-128-278/+279
|
* soft-fp: make __unord* raise "invalid" for signaling NaNs (bug 16036).Joseph Myers2013-10-123-0/+15
|
* soft-fp: make ordered comparisons raise "invalid" for quiet NaNs (bug 14910).Joseph Myers2013-10-126-6/+6
|
* soft-fp: add missing FP_INIT_EXCEPTIONS and FP_INIT_ROUNDMODE calls.Joseph Myers2013-10-1239-0/+39
|
* soft-fp: add macro FP_NO_EXCEPTIONS.Joseph Myers2013-10-127-12/+30
|
* soft-fp: fix _FP_DIV_MEAT_* returning results with wrong exponent (bug 16032).Joseph Myers2013-10-122-4/+4
|
* soft-fp: fix floating-point to integer unsigned saturation.Joseph Myers2013-10-121-1/+1
|
* Update copyright and license notices in soft-fp files from libgcc.Joseph Myers2013-10-1014-56/+42
|
* Add soft-fp files from libgcc.Joseph Myers2013-10-1014-0/+646
|
* soft-fp: split FP_INIT_EXCEPTIONS from FP_INIT_ROUNDMODE.Joseph Myers2013-10-104-3/+11
|
* soft-fp: fix negation NaN handling (bug 16034).Joseph Myers2013-10-104-18/+7
|
* soft-fp: Remove trailing semicolon from _FP_FRAC_DISASSEMBLE_4.Joseph Myers2013-10-091-1/+1
|
* soft-fp: fix typo in comment.Adam Buchbinder2013-10-091-1/+1
|
* Implement fma in soft-fp.Joseph Myers2013-07-0211-97/+580
|
* Fix soft-fp shadowing between __FP_FRAC_ADD_3 and _FP_MUL_MEAT_2_wide_3mul ↵Joseph Myers2013-06-221-6/+6
| | | | (bug 15667).
* Fix bad shift in soft-fp (bug 7006).Joseph Myers2013-06-211-2/+3
|
* Fix leading whitespaces.Ondrej Bilka2013-06-064-20/+20
|
* Remove trailing whitespace.Joseph Myers2013-06-056-22/+22
|
* MIPS: soft-fp NaN representation correctionsMaciej W. Rozycki2013-05-162-11/+54
| | | | | | | | [BZ #15442] This adds support for the inverse interpretation of the quiet bit of IEEE 754 floating-point NaN data that some processors use. This includes in particular MIPS architecture processors; the payload used for the canonical qNaN encoding is updated accordingly so as not to interfere with the quiet bit.
* soft-fp: s/sNAN/NAN/ -- no sNaNs are ever produced.Maciej W. Rozycki2013-04-251-1/+1
|
* Update copyright notices with scripts/update-copyrights.Joseph Myers2013-01-0271-72/+71
|
* Add script to update copyright notices and reformat some to facilitate its use.Joseph Myers2013-01-011-2/+1
|
* soft-fp: Fix used without set warning in _FP_MUL and _FP_DIVRichard Henderson2012-12-071-2/+2
| | | | | | | | | | | | | Seen in, e.g. ports/sysdeps/alpha/soft-fp/ots_mul.c. The problem here is we have a switch on the class of X*Y, followed by a switch on the class of R. The exponent field of R really is not set by the first switch for NaN outputs, because we know it's not going to be used. The compiler is not smart enough to see through this. By pulling the exponent computation out of the NORMAL*NORMAL path, we will not be pessimizing the most common case, while still providing an arbitrary value to satisfy the compiler.
* Fix "set but not used" warnings for X##_s in soft-fp.Joseph Myers2012-12-051-2/+4
|
* Fix missing truncation UNDERFLOW.Marcus Shawcroft2012-11-132-30/+29
|
* Fix underflow generation in soft-fp.David S. Miller2012-05-302-3/+17
| | | | | | | | | | | | | * soft-fp/soft-fp.h (FP_CUR_EXCEPTIONS): Define. (FP_TRAPPING_EXCEPTIONS): Provide default implementation. * sysdeps/sparc/sparc32/soft-fp/sfp-machine.h (FP_TRAPPING_EXCEPTIONS): Define. * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h (FP_TRAPPING_EXCEPTIONS): Define. * soft-fp/op-common.h (_FP_PACK_SEMIRAW): Signal underflow for subnormals only when inexact has been signalled or underflow exceptions are enabled. (_FP_PACK_CANONICAL): Likewise.
* Remove distribute variable from MakefilesUlrich Drepper2012-03-071-7/+1
|
* soft-fp: Support using struct layout attributes on bit-fields.Kai Tietz2012-03-015-13/+23
|
* Replace FSF snail mail address with URLs.Paul Eggert2012-02-0971-215/+142
|
* * soft-fp/double.h [_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_D, Jakub Jelinek2009-02-161-3/+4
| | | | | | | | | | FP_UNPACK_SEMIRAW_DP): Use _FP_UNPACK_RAW_1 instead of _FP_UNPACK_RAW_2, fix up first argument. 2008-12-01 Fredrik Unger <fred@tree.se> * soft-fp/double.h [_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_D, FP_UNPACK_SEMIRAW_DP): Use _FP_UNPACK_RAW_1 instead of _FP_UNPACK_RAW_2, fix up first argument.
* * soft-fp/soft-fp.h (CMPtype): Define to "int" if undefined. Jakub Jelinek2007-06-1413-40/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * soft-fp/eqdf2.c (__eqdf2): Use CMPtype instead of int as the return type. Change type of "r" variable to CMPtype. * soft-fp/eqsf2.c (__eqsf2): Likewise. * soft-fp/eqtf2.c (__eqtf2): Likewise. * soft-fp/gedf2.c (__gedf2): Likewise. * soft-fp/gesf2.c (__gesf2): Likewise. * soft-fp/getf2.c (__getf2): Likewise. * soft-fp/ledf2.c (__ledf2): Likewise. * soft-fp/lesf2.c (__lesf2): Likewise. * soft-fp/letf2.c (__letf2): Likewise. * soft-fp/unorddf2 (__unorddf2): Likewise. * soft-fp/unordsf2 (__unordsf2): Likewise. * soft-fp/unordtf2 (__unordtf2): Likewise. 2007-06-14 Uros Bizjak <ubizjak@gmail.com> * soft-fp/soft-fp.h (CMPtype): Define to "int" if undefined. * soft-fp/eqdf2.c (__eqdf2): Use CMPtype instead of int as the return type. Change type of "r" variable to CMPtype. * soft-fp/eqsf2.c (__eqsf2): Likewise. * soft-fp/eqtf2.c (__eqtf2): Likewise. * soft-fp/gedf2.c (__gedf2): Likewise. * soft-fp/gesf2.c (__gesf2): Likewise. * soft-fp/getf2.c (__getf2): Likewise. * soft-fp/ledf2.c (__ledf2): Likewise. * soft-fp/lesf2.c (__lesf2): Likewise. * soft-fp/letf2.c (__letf2): Likewise. * soft-fp/unorddf2 (__unorddf2): Likewise. * soft-fp/unordsf2 (__unordsf2): Likewise. * soft-fp/unordtf2 (__unordtf2): Likewise.
* * soft-fp/op-common.h (FP_TRUNC): Replace raising of FP_EX_INEXACT cvs/fedora-glibc-20070504T0917Jakub Jelinek2007-05-038-49/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with setting the sticky bit. * math/test-misc.c (main): Add more truncation tests. * soft-fp/floatunsidf.c (__floatunsidf): Use DFtype instead of double in the function declaration. * soft-fp/floatundidf.c (__floatundidf): Use DFtype instead of double in the function declaration. * soft-fp/floatunsisf.c (__floatunsisf): Use SFtype instead of float in the function declaration. * soft-fp/floatunsisf.c (__floatunsisf): Use SFtype instead of float in the function declaration. * soft-fp/extended.h (FP_UNPACK_RAW_E): Do not increase X##_e for denormal operands. Do not generate FP_EX_DENORM exception. (FP_UNPACK_RAW_EP): Ditto. (FP_UNPACK_SEMIRAW_E): Use FP_UNPACK_RAW_E instead of undefined _FP_UNPACK_RAW_E. (FP_UNPACK_SEMIRAW_EP): Use FP_UNPACK_RAW_EP instead of undefined _FP_UNPACK_RAW_EP. (FP_PACK_SEMIRAW_E): Use FP_PACK_RAW_E instead of undefined _FP_PACK_RAW_E. (FP_PACK_SEMIRAW_EP): Use FP_PACK_RAW_EP instead of undefined _FP_PACK_RAW_EP. * op-2.h (_FP_FRAC_COPY_2_2): Define as alias to _FP_FRAC_COPY_2. * op-4.h (_FP_FRAC_COPY_2_2): Define as alias to _FP_FRAC_COPY_4. * soft-fp/op-common.h (FP_EXTEND): Do not abort when _FP_EXPBIAS_##dfs == _FP_EXPBIAS_##sfs. Handle denormals for this case. * soft-fp/op-common.h (FP_TRUNC): Ditto. * soft-fp/op-common.h (FP_TRUNC): Replace raising of FP_EX_INEXACT with setting the sticky bit. * math/test-misc.c (main): Add more truncation tests. 2007-04-14 Uros Bizjak <ubizjak@gmail.com> * soft-fp/floatunsidf.c (__floatunsidf): Use DFtype instead of double in the function declaration. * soft-fp/floatundidf.c (__floatundidf): Use DFtype instead of double in the function declaration. * soft-fp/floatunsisf.c (__floatunsisf): Use SFtype instead of float in the function declaration. * soft-fp/floatunsisf.c (__floatunsisf): Use SFtype instead of float in the function declaration. * soft-fp/extended.h (FP_UNPACK_RAW_E): Do not increase X##_e for denormal operands. Do not generate FP_EX_DENORM exception. (FP_UNPACK_RAW_EP): Ditto. (FP_UNPACK_SEMIRAW_E): Use FP_UNPACK_RAW_E instead of undefined _FP_UNPACK_RAW_E. (FP_UNPACK_SEMIRAW_EP): Use FP_UNPACK_RAW_EP instead of undefined _FP_UNPACK_RAW_EP. (FP_PACK_SEMIRAW_E): Use FP_PACK_RAW_E instead of undefined _FP_PACK_RAW_E. (FP_PACK_SEMIRAW_EP): Use FP_PACK_RAW_EP instead of undefined _FP_PACK_RAW_EP. * op-2.h (_FP_FRAC_COPY_2_2): Define as alias to _FP_FRAC_COPY_2. * op-4.h (_FP_FRAC_COPY_2_2): Define as alias to _FP_FRAC_COPY_4. 2007-04-16 Uros Bizjak <ubizjak@gmail.com> Jakub Jelinek <jakub@redhat.com> * soft-fp/op-common.h (FP_EXTEND): Do not abort when _FP_EXPBIAS_##dfs == _FP_EXPBIAS_##sfs. Handle denormals for this case. * soft-fp/op-common.h (FP_TRUNC): Ditto. 2007-05-03 Jakub Jelinek <jakub@redhat.com>
* * math/test-misc.c (main): Add tests for rounding long double Jakub Jelinek2007-05-031-2/+5
| | | | | | | | | | | | | | | | | values close to smallest double denormalized value to double. * soft-fp/op-common.h (FP_TRUNC): Correct off-by-one error in condition for truncating to 0. Set sticky bit for such truncation. 2007-05-03 Jakub Jelinek <jakub@redhat.com> * math/test-misc.c (main): Add tests for rounding long double values close to smallest double denormalized value to double. 2007-04-30 Joseph Myers <joseph@codesourcery.com> * soft-fp/op-common.h (FP_TRUNC): Correct off-by-one error in condition for truncating to 0. Set sticky bit for such truncation.
* [BZ #2831]Jakub Jelinek2007-03-203-24/+24
| | | | | | | | | | | | | | | | | | | | * soft-fp/double.h (_FP_UNION_D): Use _FP_W_TYPE for frac bit-fields. * soft-fp/extended.h (_FP_UNION_E): Likewise. [BZ #2831] * soft-fp/quad.h (_FP_UNION_Q): Use _FP_W_TYPE for frac bit-fields. 2007-03-20 Jakub Jelinek <jakub@redhat.com> * soft-fp/double.h (_FP_UNION_D): Use _FP_W_TYPE for frac bit-fields. * soft-fp/extended.h (_FP_UNION_E): Likewise. 2006-06-07 Joseph Myers <joseph@codesourcery.com> [BZ #2831] * soft-fp/quad.h (_FP_UNION_Q): Use _FP_W_TYPE for frac bit-fields.