glibc/sysdeps/x86_64
Joseph Myers f4015c8a86 Use generic fdim on more architectures (bug 6796, bug 20255, bug 20256).
Some architectures have their own versions of fdim functions, which
are missing errno setting (bug 6796) and may also return sNaN instead
of qNaN for sNaN input, in the case of the x86 / x86_64 long double
versions (bug 20256).

These versions are not actually doing anything that a compiler
couldn't generate, just straightforward comparisons / arithmetic (and,
in the x86 / x86_64 case, testing for NaNs with fxam, which isn't
actually needed once you use an unordered comparison and let the NaNs
pass through the same subtraction as non-NaN inputs).  This patch
removes the x86 / x86_64 / powerpc versions, so that those
architectures use the generic C versions, which correctly handle
setting errno and deal properly with sNaN inputs.  This seems better
than dealing with setting errno in lots of .S versions.

The i386 versions also return results with excess range and precision,
which is not appropriate for a function exactly defined by reference
to IEEE operations.  For errno setting to work correctly on overflow,
it's necessary to remove excess range with math_narrow_eval, which
this patch duly does in the float and double versions so that the
tests can reliably pass on x86.  For float, this avoids any double
rounding issues as the long double precision is more than twice that
of float.  For double, double rounding issues will need to be
addressed separately, so this patch does not fully fix bug 20255.

Tested for x86_64, x86 and powerpc.

	[BZ #6796]
	[BZ #20255]
	[BZ #20256]
	* math/s_fdim.c: Include <math_private.h>.
	(__fdim): Use math_narrow_eval on result.
	* math/s_fdimf.c: Include <math_private.h>.
	(__fdimf): Use math_narrow_eval on result.
	* sysdeps/i386/fpu/s_fdim.S: Remove file.
	* sysdeps/i386/fpu/s_fdimf.S: Likewise.
	* sysdeps/i386/fpu/s_fdiml.S: Likewise.
	* sysdeps/i386/i686/fpu/s_fdim.S: Likewise.
	* sysdeps/i386/i686/fpu/s_fdimf.S: Likewise.
	* sysdeps/i386/i686/fpu/s_fdiml.S: Likewise.
	* sysdeps/powerpc/fpu/s_fdim.c: Likewise.
	* sysdeps/powerpc/fpu/s_fdimf.c: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: Likewise.
	* sysdeps/x86_64/fpu/s_fdiml.S: Likewise.
	* math/libm-test.inc (fdim_test_data): Expect errno setting on
	overflow.  Add sNaN tests.
2016-06-14 16:04:19 +00:00
..
64
fpu Use generic fdim on more architectures (bug 6796, bug 20255, bug 20256). 2016-06-14 16:04:19 +00:00
multiarch X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
nptl
x32
Implies
Makefile Register extra test objects 2016-04-13 17:07:13 +02:00
Versions
____longjmp_chk.S
__longjmp.S
_mcount.S
abort-instr.h
add_n.S
addmul_1.S
atomic-machine.h
backtrace.c
bsd-_setjmp.S
bsd-setjmp.S
bzero.S
configure configure: fix `test ==` usage 2016-04-09 20:05:13 -04:00
configure.ac configure: fix `test ==` usage 2016-04-09 20:05:13 -04:00
crti.S
crtn.S
dl-irel.h
dl-lookupcfg.h
dl-machine.h Call init_cpu_features only if SHARED is defined 2016-05-13 08:29:33 -07:00
dl-procinfo.c
dl-runtime.c
dl-tls.h
dl-tlsdesc.S
dl-tlsdesc.h
dl-trampoline.S
dl-trampoline.h
ffs.c
ffsll.c
hp-timing.h
htonl.S
ifuncmain8.c
ifuncmod8.c
jmpbuf-offsets.h
jmpbuf-unwind.h
l10nflist.c
ldbl2mpn.c
ldsodefs.h
link-defines.sym
locale-defines.sym
localplt.data
lshift.S
machine-gmon.h
memchr.S
memcmp.S
memcopy.h X86-64: Add dummy memcopy.h and wordcopy.c 2016-06-09 04:38:34 -07:00
memcpy.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
memcpy_chk.S
memmove.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
memmove_chk.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
mempcpy.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
mempcpy_chk.S
memrchr.S
memset.S X86-64: Remove the previous SSE2/AVX2 memsets 2016-06-08 13:56:14 -07:00
memset_chk.S
memusage.h
mp_clz_tab.c
mul_1.S
preconfigure
preconfigure.ac
rawmemchr.S
rshift.S
sched_cpucount.c
setjmp.S
stack-aliasing.h
stackguard-macros.h
stackinfo.h
start.S Always indirect branch to __libc_start_main via GOT 2016-06-09 04:43:31 -07:00
stpcpy.S
strcasecmp.S
strcasecmp_l-nonascii.c
strcasecmp_l.S
strcat.S
strchr.S
strchrnul.S
strcmp.S
strcpy.S
strcspn.S
strlen.S
strncase.S
strncase_l-nonascii.c
strncase_l.S
strncmp.S
strnlen.S
strpbrk.S
strrchr.S
strspn.S
strtok.S
strtok_r.S
sub_n.S
submul_1.S
sysdep.h Avoid an extra branch to PLT for -z now 2016-05-24 08:44:23 -07:00
tls-macros.h
tlsdesc.c
tlsdesc.sym
tst-audit.h
tst-audit3.c
tst-audit4-aux.c
tst-audit4.c
tst-audit5.c
tst-audit6.c
tst-audit7.c
tst-audit10-aux.c
tst-audit10.c
tst-auditmod3a.c
tst-auditmod3b.c
tst-auditmod4a.c
tst-auditmod4b.c
tst-auditmod5a.c
tst-auditmod5b.c
tst-auditmod6a.c
tst-auditmod6b.c
tst-auditmod6c.c
tst-auditmod7a.c
tst-auditmod7b.c
tst-auditmod10a.c
tst-auditmod10b.c
tst-mallocalign1.c
tst-quad1.c
tst-quad1pie.c
tst-quad2.c
tst-quad2pie.c
tst-quadmod1.S
tst-quadmod1pie.S
tst-quadmod2.S
tst-quadmod2pie.S
tst-split-dynreloc.c
tst-split-dynreloc.lds
tst-stack-align.h
wcschr.S
wcscmp.S
wcslen.S
wcsrchr.S
wordcopy.c X86-64: Add dummy memcopy.h and wordcopy.c 2016-06-09 04:38:34 -07:00