glibc/soft-fp
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
..
adddf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
addsf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
addtf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Banner Update. 1999-12-29 18:11:48 +00:00
divdf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
divsf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
divtf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
double.h soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
eqdf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
eqsf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
eqtf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
extenddftf2.c soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled. 2014-10-09 01:00:41 +00:00
extended.h soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
extendsfdf2.c soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled. 2014-10-09 01:00:41 +00:00
extendsftf2.c soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled. 2014-10-09 01:00:41 +00:00
extendxftf2.c soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled. 2014-10-09 01:00:41 +00:00
fixdfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixdfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixdfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixsfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixsfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixsfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixtfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixtfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixtfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunsdfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunsdfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunsdfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunssfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunssfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunssfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunstfdi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunstfsi.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fixunstfti.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatdidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatdisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatditf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatsidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatsisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatsitf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floattidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floattisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floattitf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatundidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatundisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatunditf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatunsidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatunsisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatunsitf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatuntidf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatuntisf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
floatuntitf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fmadf4.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fmasf4.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fmatf4.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
gedf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
gesf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
getf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
ledf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
lesf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
letf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
Makefile Consistently include Makeconfig after defining subdir. 2014-02-26 23:12:03 +00:00
muldf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mulsf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
multf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
negdf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
negsf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
negtf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
op-1.h soft-fp: Fix comment formatting. 2014-09-17 22:20:45 +00:00
op-2.h soft-fp: Fix comment formatting. 2014-09-17 22:20:45 +00:00
op-4.h soft-fp: Fix comment formatting. 2014-09-17 22:20:45 +00:00
op-8.h soft-fp: Fix comment formatting. 2014-09-17 22:20:45 +00:00
op-common.h soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
quad.h soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
single.h soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
soft-fp.h soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled. 2014-10-09 01:00:41 +00:00
sqrtdf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sqrtsf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sqrttf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
subdf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
subsf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
subtf3.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
testit.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
truncdfsf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
trunctfdf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
trunctfsf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
trunctfxf2.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
unorddf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
unordsf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00
unordtf2.c soft-fp: Refactor exception handling for comparisons. 2014-10-09 01:03:56 +00:00