glibc/sysdeps
Joseph Myers e2bcf6a855 Fix i386 fenv_private.h float128 for 32-bit --with-fpmath=sse (bug 22902).
As discussed in bug 22902, the i386 fenv_private.h implementation has
problems for float128 for the case of 32-bit glibc built with libgcc
from GCC configured using --with-fpmath=sse.

The optimized floating-point state handling in fenv_private.h needs to
know which floating-point state - x87 or SSE - is used for each
floating-point type, so that only one state needs updating / testing
for libm code using that state internally.  On 32-bit x86, the x87
rounding mode is always used for float128, but the x87 exception flags
are only used when libgcc is built using x87 floating-point
arithmetic; if libgcc is built for SSE arithmetic, the SSE exception
flags are used.

The choice of arithmetic with which libgcc is built is independent of
that with which glibc is built.  Thus, since glibc cannot tell the
choice used in libgcc, the default implementations of
libc_feholdexcept_setroundf128 and libc_feupdateenv_testf128 (which
use the <fenv.h> functions, thus using both x87 and SSE state on
processors that have both) need to be used; this patch updates the
code accordingly.

Tested for 32-bit x86; HJ reports testing in the --with-fpmath=sse
case.

	[BZ #22902]
	* sysdeps/i386/fpu/fenv_private.h [!__x86_64__]
	(libc_feholdexcept_setroundf128): New macro.
	[!__x86_64__] (libc_feupdateenv_testf128): Likewise.
2018-02-28 21:55:51 +00:00
..
aarch64 aarch64/strcmp: fix misaligned loop jump target 2018-02-22 23:48:14 +05:30
alpha Update Alpha libm-test-ulps 2018-01-27 13:31:38 +01:00
arm Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
generic Rename nptl-signals.h to internal-signals.h 2018-02-22 16:43:59 -03:00
gnu Add TCP_FASTOPEN_KEY, TCP_FASTOPEN_NO_COOKIE from Linux 4.15. 2018-02-06 00:42:22 +00:00
hppa Fix ulps for pow on hppa. 2018-02-17 13:46:50 -05:00
i386 Fix i386 fenv_private.h float128 for 32-bit --with-fpmath=sse (bug 22902). 2018-02-28 21:55:51 +00:00
ia64 Remove mplog and mpexp 2018-02-15 12:41:05 +00:00
ieee754 Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
init_array sysdeps/init_array: Add PREINIT_FUNCTION to crti.S 2018-01-29 10:22:26 -08:00
m68k Remove mplog and mpexp 2018-02-15 12:41:05 +00:00
mach hurd: fix gai_misc build 2018-02-27 01:11:08 +01:00
microblaze Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
mips Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
nios2 Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
nptl Move NPTL-specific code to NPTL-specific header 2018-02-27 00:48:24 +01:00
posix Fix -Os feof_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-15 20:57:15 +00:00
powerpc powerpc: Update pow() ULPs 2018-02-12 13:23:03 -02:00
pthread hurd: fix timer_routines.c build 2018-02-27 01:15:39 +01:00
riscv RISC-V: fmax/fmin: Handle signalling NaNs correctly. 2018-02-22 14:31:54 -05:00
s390 S390: Regenerate ULPs. 2018-02-22 09:19:49 +01:00
sh Update SH libm-tests-ulps 2018-02-14 14:03:40 -02:00
sparc Update sparc ulps 2018-02-22 16:44:58 -03:00
tile Unify and simplify bits/byteswap.h, bits/byteswap-16.h headers (bug 14508, bug 15512, bug 17082, bug 20530). 2018-02-06 21:55:08 +00:00
unix linux/powerpc: sync sys/ptrace.h with Linux 4.15 [BZ #22433, #22807] 2018-02-26 13:46:31 +00:00
wordsize-32 Use libc_hidden_* for strtoumax (bug 15105). 2018-02-28 14:16:21 +00:00
wordsize-64 Use libc_hidden_* for strtoumax (bug 15105). 2018-02-28 14:16:21 +00:00
x86 Unify and simplify bits/byteswap.h, bits/byteswap-16.h headers (bug 14508, bug 15512, bug 17082, bug 20530). 2018-02-06 21:55:08 +00:00
x86_64 Remove mplog and mpexp 2018-02-15 12:41:05 +00:00