glibc/sysdeps/alpha
Joseph Myers 73e28d9c88 soft-fp: Refactor exception handling for comparisons.
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.
2014-10-09 01:03:56 +00:00
..
alphaev5 Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
alphaev6 Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
alphaev67 Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
bits Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
fpu Add missing #include in sysdeps/alpha/fpu/s_nearbyint.c 2014-07-03 21:15:56 -07:00
nptl Alpha: Define TLS_DEFINE_INIT_TP 2014-06-11 12:23:35 -07:00
soft-fp soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
__longjmp.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
_mcount.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
add_n.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
addmul_1.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
backtrace.c Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
bb_init_func.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
bsd-_setjmp.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
bsd-setjmp.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
bzero.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
configure Require autoconf 2.69 2014-09-29 07:53:36 -07:00
configure.ac Require autoconf 2.69 2014-09-29 07:53:36 -07:00
crti.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
crtn.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
div_libc.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
div.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
divl.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
divlu.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
divq.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
divqu.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-dtprocnum.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-machine.h alpha: Define ELF_MACHINE_NO_RELA 2014-05-20 07:17:21 -07:00
dl-procinfo.c Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-procinfo.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-sysdep.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-tls.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
dl-trampoline.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
ffs.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
ffsll.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
gccframe.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
hp-timing.h Unify hp-timing implementations 2014-07-03 08:38:30 -07:00
htonl.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
htons.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
Implies Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
jmpbuf-offsets.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
jmpbuf-unwind.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
ldiv.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
ldsodefs.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
libc-tls.c Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
lldiv.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
lshift.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
machine-gmon.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
Makefile alpha: Enable unwind tables for backtrace.c 2014-04-16 21:35:29 -07:00
memchr.c Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
memset.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
memusage.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
mul_1.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
nscd-types.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
preconfigure Remove relro configure test. 2014-06-27 16:51:22 +00:00
rawmemchr.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
reml.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
remlu.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
remq.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
remqu.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
rshift.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
setjmp.S Remove unnecessary uses of NOT_IN_libc 2014-08-21 10:26:46 +05:30
sotruss-lib.c Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
stackinfo.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
start.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
stpcpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
stpncpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strcat.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strchr.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strcmp.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strcpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strlen.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strncat.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strncmp.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strncpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
strrchr.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
stxcpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
stxncpy.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
sub_n.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
Subdirs Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
submul_1.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
tininess.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
tls-macros.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
tst-audit.h Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
udiv_qrnnd.S Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00
Versions Relocate alpha from ports to libc 2014-02-12 07:00:06 -08:00