glibc/manual
Joseph Myers eb3c12c784 Add setpayload, setpayloadf, setpayloadl.
TS 18661-1 defines functions for manipulating the payloads of NaNs.
This patch implements the setpayload functions for glibc; these set a
number (pointed to by a function argument) to a quiet NaN with the
given payload, or to +0 if the given payload is not valid.  The
implementations are structured to allow the substance of the
implementation to be shared with the setpayloadsig functions when
those are added.

The semantics in the TS are not entirely clear in the case where the
payload passed to the function is zero (see discussion on the WG14
reflector last month).  This patch implements what seems the most
sensible interpretation, that -0 is never valid to give as the
payload, but +0 is valid in the case where the kind of NaN being
generated has its high mantissa bit set so payload 0 is actually
possible in such a NaN.

Tested for x86_64, x86, mips64 and powerpc.

	* math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(setpayload): New declaration.
	* math/Versions (setpayload): New libm symbol at version
	GLIBC_2.25.
	(setpayloadf): Likewise.
	(setpayloadl): Likewise.
	* math/Makefile (libm-calls): Add s_setpayloadF.
	* math/libm-test.inc (struct test_Ffp_b1_data): Rename to struct
	test_Ff_b1_data.
	(RUN_TEST_Ff_b1): New macro.
	(RUN_TEST_LOOP_Ff_b1): Likewise.
	(canonicalize_test_data): Update type.
	(setpayload_test_data): New array.
	(setpayload_test): New function.
	(main): Call setpayload_test.
	* manual/arith.texi (FP Bit Twiddling): Document setpayload,
	setpayloadf and setpayloadl.
	* manual/libm-err-tab.pl: Update comment on interfaces without
	ulps tabulated.
	* sysdeps/ieee754/dbl-64/s_setpayload.c: New file.
	* sysdeps/ieee754/dbl-64/s_setpayload_main.c: Likewise.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_setpayload_main.c:
	Likewise.
	* sysdeps/ieee754/flt-32/s_setpayloadf.c: Likewise.
	* sysdeps/ieee754/flt-32/s_setpayloadf_main.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_setpayloadl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_setpayloadl_main.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_setpayloadl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_setpayloadl_main.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_setpayloadl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_setpayloadl_main.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/nldbl-setpayload.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add
	setpayload.
	(CFLAGS-nldbl-setpayload.c): New variable.
	* sysdeps/nacl/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-11-19 00:16:28 +00:00
..
examples libio: Multiple fixes for open_{w}memstram (BZ#18241 and BZ#20181) 2016-09-30 09:14:15 -07:00
argp.texi Manual typos: The Basic Program/System Interface 2016-10-06 12:19:25 +05:30
arith.texi Add setpayload, setpayloadf, setpayloadl. 2016-11-19 00:16:28 +00:00
charset.texi
check-safety.sh
conf.texi Manual typos: System Configuration Parameters 2016-10-06 12:24:07 +05:30
contrib.texi Manual typos: Contributors to 2016-10-06 12:30:03 +05:30
creature.texi
crypt.texi Manual typos: DES Encryption and Password Handling 2016-10-06 12:25:00 +05:30
ctype.texi
debug.texi Manual typos: Debugging support 2016-10-06 12:25:38 +05:30
dir
errno.texi
fdl-1.3.texi
filesys.texi Manual typos: File System Interface 2016-10-06 12:01:51 +05:30
freemanuals.texi
getopt.texi Manual typos: The Basic Program/System Interface 2016-10-06 12:19:25 +05:30
header.texi
install-plain.texi
install.texi Add configure check to test if gcc supports attribute ifunc. 2016-10-07 10:02:59 +02:00
intro.texi
io.texi
ipc.texi
job.texi Manual typos: Job Control 2016-10-06 12:20:28 +05:30
lang.texi Manual typos: C Language Facilities in the Library 2016-10-06 12:27:48 +05:30
lgpl-2.1.texi
libc-texinfo.sh
libc.texinfo
libcbook.texi
libdl.texi
libm-err-tab.pl Add setpayload, setpayloadf, setpayloadl. 2016-11-19 00:16:28 +00:00
llio.texi Manual typos: Low-Level Input/Output 2016-10-06 11:58:02 +05:30
locale.texi
macros.texi
maint.texi Manual typos: Library Maintenance 2016-10-06 12:29:11 +05:30
Makefile
math.texi Correct clog10 documentation (bug 19673). 2016-11-01 18:38:52 +00:00
memory.texi Remove references to sbrk to grow/shrink arenas 2016-10-26 15:07:07 +05:30
message.texi
nss.texi Manual typos: System Databases and Name Service Switch 2016-10-06 12:36:26 +05:30
nsswitch.texi
pattern.texi
pipe.texi
platform.texi
probes.texi Manual typos: Internal probes 2016-10-06 12:26:35 +05:30
process.texi Manual typos: Processes 2016-10-06 12:20:00 +05:30
resource.texi Manual typos: Resource Usage and Limitation 2016-10-06 12:16:53 +05:30
search.texi
setjmp.texi Manual typos: Non-Local Exits 2016-10-06 12:17:29 +05:30
signal.texi Manual typos: Signal Handling 2016-10-06 12:18:05 +05:30
socket.texi Manual typos: Sockets 2016-10-06 12:05:11 +05:30
startup.texi Manual typos: The Basic Program/System Interface 2016-10-06 12:19:25 +05:30
stdio-fp.c
stdio.texi Manual typos: Input/Output on Streams 2016-10-06 11:55:58 +05:30
string.texi manual: Clarify the documentation of strverscmp [BZ #20524] 2016-09-21 15:41:17 +02:00
summary.awk
sysinfo.texi manual: Remove non-existent mount options S_IMMUTABLE and S_APPEND [BZ #11235] 2016-11-15 15:56:00 -05:00
syslog.texi Manual typos: Syslog 2016-10-06 12:08:46 +05:30
terminal.texi Manual typos: Low-Level Terminal Interface 2016-10-06 12:07:28 +05:30
texinfo.tex
texis.awk
threads.texi Manual typos: POSIX Threads 2016-10-06 12:26:06 +05:30
time.texi Manual typos: Date and Time 2016-10-06 12:14:36 +05:30
tsort.awk
users.texi Manual typos: Users and Groups 2016-10-06 12:21:46 +05:30
xtract-typefun.awk