glibc/sysdeps/unix/sysv/linux/s390
Joseph Myers f8e8b8ed9f Add getpayload, getpayloadf, getpayloadl.
TS 18661-1 defines functions for manipulating the payloads of NaNs.
This patch implements the getpayload functions for glibc; these
extract the NaN payload (from an argument passed as a pointer, for
which corresponding libm-test support is added) and return it in the
same floating-point type.  The return value of these functions is
unspecified for non-NaN arguments; the patch does the simplest thing
to implement, which is that the functions do not check whether the
argument is a NaN and just treat the relevant bits of the
representation as a payload regardless.  A conversion from integer to
floating-point is used to produce the required return value, except in
the ldbl-128 case; as 128-bit integers are not supported for all
configurations using ldbl-128, the code constructs the required
floating-point representation of the return value directly instead.

Tested for x86_64, x86, mips64 and powerpc.

	* math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)]
	(getpayload): New declaration.
	* math/Versions (getpayload): New libm symbol at version
	GLIBC_2.25.
	(getpayloadf): Likewise.
	(getpayloadl): Likewise.
	* math/Makefile (libm-calls): Add s_getpayloadF.
	* math/libm-test.inc: Include <nan-high-order-bit.h>.
	(struct test_f_f_data): Add comment.
	(RUN_TEST_fp_f): New macro.
	(RUN_TEST_LOOP_fp_f): Likewise.
	(getpayload_test_data): New array.
	(getpayload_test): New function.
	(main): Call getpayload_test.
	* math/gen-libm-test.pl (parse_args): Handle 'p' in argument
	descriptor.
	* manual/arith.texi (FP Bit Twiddling): Document getpayload,
	getpayloadf and getpayloadl.
	* manual/libm-err-tab.pl: Update comment on interfaces without
	ulps tabulated.
	* sysdeps/ieee754/dbl-64/s_getpayload.c: New file.
	* sysdeps/ieee754/dbl-64/wordsize-64/s_getpayload.c: Likewise.
	* sysdeps/ieee754/flt-32/s_getpayloadf.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_getpayloadl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_getpayloadl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_getpayloadl.c: Likewise.
	* 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-10-19 01:49:09 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
fpu Implement accurate fma. 2010-10-13 22:27:03 -04:00
s390-32 Add getpayload, getpayloadf, getpayloadl. 2016-10-19 01:49:09 +00:00
s390-64 Add getpayload, getpayloadf, getpayloadl. 2016-10-19 01:49:09 +00:00
sys Minor correction to the "installed header hygiene" patches. 2016-09-28 07:19:59 -04:00
arch-fork.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
brk.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
configure Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
configure.ac Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
dl-cache.h Update. 2003-06-25 08:19:44 +00:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-conf.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-conf.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-lock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-timed.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-trylock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elision-unlock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
force-elision.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Implies NPTL is no longer an add-on! 2014-07-07 09:29:06 -07:00
init-first.c S390: Add support for vdso getcpu symbol. 2016-05-09 11:05:45 +02:00
jmp-unwind.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
kernel-features.h Adjust kernel-features.h defaults for recvmsg and sendmsg 2016-05-25 17:27:57 -03:00
ldconfig.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
ldd-rewrite.sed Fix for bi-arch support. 2002-03-11 11:01:07 +00:00
libanl.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libc-vdso.h S390: Add support for vdso getcpu symbol. 2016-05-09 11:05:45 +02:00
localplt.data S390: Support PLT and GOT references in check-localplt. 2016-09-06 14:44:15 +02:00
longjmp_chk.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
lowlevellock.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Makefile Do not override objects in libc.a in other static libraries [BZ #20452] 2016-08-17 14:57:01 +02:00
nldbl-abi.h * math/divtc3.c: New file. 2006-02-01 03:02:06 +00:00
opensock.c * sysdeps/unix/sysv/linux/Makefile [subdir=inet] (sysdep_headers): 2007-11-23 15:19:41 +00:00
pt-longjmp.c Use libc_ifunc macro for siglongjmp, longjmp in libpthread. 2016-10-07 10:12:48 +02:00
pt-vfork.S S390: Consolidate NPTL/non versions of vfork 2014-06-26 09:30:52 -07:00
pthread_mutex_cond_lock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
pthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
pthread_mutex_timedlock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
pthread_mutex_trylock.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
readelflib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
rt-sysdep.S Update. 2004-04-18 02:37:56 +00:00
sa_len.c Clean up __libc_sa_len helper. 2013-08-27 10:34:16 -07:00
semtimedop.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sigcontextinfo.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sysconf.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
system.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
ucontext_i.sym S/390: Revert the jmp_buf/ucontext_t ABI change. 2014-07-31 20:04:54 +02:00
Versions Move remaining S390 code out of nptl/. 2014-06-26 09:31:11 -07:00