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.
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.
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.
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.
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.
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.
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.
[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.
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.
* 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.
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>
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.
* soft-fp/op-common.h (FP_TRUNC): When truncating a NaN, clear
workbits in semi-raw fraction.
* math/test-misc.c: Add new tests.
* math/basic-test.c: Include test-skeleton.c.
(TEST_TRUNC): Define.
(truncdfsf_test, trunctfsf_test, trunctfdf_test): New.
(main): Rename to ...
(do_test): ...this. Run new tests.
(TEST_FUNCTION): Define.
[BZ #2749]
* soft-fp/op-4.h (__FP_FRAC_SUB_3, __FP_FRAC_SUB_4): Correct borrow
handling for high words.
* soft-fp/op-common.h (_FP_OVERFLOW_SEMIRAW): Always set inexact
and overflow for infinity.
2007-01-15 Jakub Jelinek <jakub@redhat.com>
* soft-fp/op-common.h (FP_TRUNC): When truncating a NaN, clear
workbits in semi-raw fraction.
* math/test-misc.c: Add new tests.
2007-01-14 Steven Munroe <sjmunroe@us.ibm.com>
* math/basic-test.c: Include test-skeleton.c.
(TEST_TRUNC): Define.
(truncdfsf_test, trunctfsf_test, trunctfdf_test): New.
(main): Rename to ...
(do_test): ...this. Run new tests.
(TEST_FUNCTION): Define.
2006-10-05 Steven Munroe <sjmunroe@us.ibm.com>
Joe Kerian <jkerian@us.us.ibm.com>
[BZ #2749]
* soft-fp/op-4.h (__FP_FRAC_SUB_3, __FP_FRAC_SUB_4): Correct borrow
handling for high words.
* soft-fp/op-common.h (_FP_OVERFLOW_SEMIRAW): Always set inexact
and overflow for infinity.
2002-10-08 Richard Henderson <rth@redhat.com>
* soft-fp/op-4.h: Handle carry correctly in
__FP_FRAC_ADD_3, __FP_FRAC_ADD_4, __FP_FRAC_SUB_3,
__FP_FRAC_SUB_4, __FP_FRAC_DEC_3, __FP_FRAC_DEC_4.
* soft-fp/op-common.h: New macros _FP_DIV_MEAT_N_loop.
2002-10-08 Aldy Hernandez <aldyh@redhat.com>
* configure.in: Compute completely-soft.
* config.make.in: Make completely-soft available to sub-makes.
* sysdeps/powerpc/soft-fp/Makefile: Add gcc-single-routines and
gcc-double-routines. Add sim-full.c. Add fenv_const and
fe_nomask to libm-support.
* sysdeps/powerpc/soft-fp/sim-full.c: New file.
* sysdeps/powerpc/soft-fp/fraiseexcpt.c: New file.
* sysdeps/powerpc/soft-fp/fegetexcept.c: New file.
* sysdeps/powerpc/soft-fp/fclrexcpt.c: New file.
* sysdeps/powerpc/soft-fp/ftestexcept.c: New file.
* sysdeps/powerpc/soft-fp/fgetexcptflg.c: New file.
* sysdeps/powerpc/soft-fp/fsetexcptflg.c: New file.
* sysdeps/powerpc/soft-fp/fedisblxcpt.c: New file.
* sysdeps/powerpc/soft-fp/feenablxcpt.c: New file.
* sysdeps/powerpc/soft-fp/fegetenv.c: New file.
* sysdeps/powerpc/soft-fp/fesetenv.c: New file.
* sysdeps/powerpc/soft-fp/fegetround.c: New file.
* sysdeps/powerpc/soft-fp/fesetround.c: New file.
* sysdeps/powerpc/soft-fp/feupdateenv.c: New file.
* sysdeps/powerpc/soft-fp/feholdexcpt.c: New file.
* sysdeps/powerpc/soft-fp/fenv_const.c: New file.
* sysdeps/powerpc/soft-fp/libm-test-ulps: New file.
* sysdeps/powerpc/soft-fp/Versions: Add libgcc soft-float
symbols. Add __sim_disabled_exceptions, __sim_exceptions,
__sim_round_mode.
* sysdeps/powerpc/soft-float/Dist: Add sim-full.c, fenv_const.c.
* sysdeps/powerpc/soft-float/sfp-machine.h: Define
FP_HANDLE_EXCEPTIONS.
Define FP_ROUNDMODE.
Redefine FP_* macros to correspond to the FE_* bit positions.
Define FP_DIV_MEAT_S to _FP_DIV_MEAT_1_loop.
Define externs for __sim_exceptions, __sim_disabled_exceptions,
__sim_round_mode, __simulate_exceptions.
* sysdeps/powerpc/fpu/bits/fenv.h: Move file from here...
* sysdeps/powerpc/bits/fenv.h: ...to here.
2002-10-06 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela):
Store R_PPC_UADDR32 and R_PPC_UADDR16 one byte at a time.
Use __builtin_expect for R_PPC_ADDR24 overflow check. Fix
R_PPC_ADDR16, R_PPC_UADDR16 and R_PPC_ADDR14* overflow check, use
__builtin_expect.
2002-05-17 David S. Miller <davem@redhat.com>
* sysdeps/unix/sysv/linux/sparc/fork.S: Define _internal aliases.
2002-05-16 David S. Miller <davem@redhat.com>
* sysdeps/sparc/sparc32/dl-machine.h (LOAD_PIC_REG): Define.
(elf_machine_dynamic): Use it to force PIC register to be loaded.
(elf_machine_load_address): Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Mirror sparc32 changes.
* sysdeps/sparc/sparc64/strncmp.S: When second argument pointer
is unaligned, do not forget to fully initialize %g1 magic value.
* sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Fix 64-bit elf
register definitions and provide 32-bit variants of structures
during 64-bit builds.
* soft-fp/op-1.h (_FP_FRAC_CLEAR_OVERP_1): Define.
* soft-fp/op-2.h (_FP_FRAC_CLEAR_OVERP_2): Define.
* soft-fp/op-4.h (_FP_FRAC_CLEAR_OVERP_4): Define.
* soft-fp/op-common.h (_FP_PACK_CANONICAL): After rounding, if
_FP_FRAC_OVERP_X is set, use _FP_FRAC_CLEAR_OVERP_X to clear it.
(_FP_FROM_INT): Perform right shifts on unsigned integer type.
Do not clear implicit one bit here, it must be done post-rounding.
Only pad to the left using left shift if value uses less than the
available fractional bits.
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.
1999-12-29 Ulrich Drepper <drepper@cygnus.com>
* soft-fp/*: Tons of new files to implement floating-point arithmetic
in software.
Contributed by Richard Henderson, Jakub Jelinek and others.