GNU C Library master sources branch master updated. glibc-2.24-276-g6f322a8
jsm28@sourceware.org
jsm28@sourceware.org
Mon Oct 17 22:49:00 GMT 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 6f322a894704e7959b9cee7c2cc7ec1963a26e73 (commit)
from 8e36adc08eebb526d180b8477f1840c5bd549d83 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6f322a894704e7959b9cee7c2cc7ec1963a26e73
commit 6f322a894704e7959b9cee7c2cc7ec1963a26e73
Author: Joseph Myers <joseph@codesourcery.com>
Date: Mon Oct 17 22:48:51 2016 +0000
Define HIGH_ORDER_BIT_IS_SET_FOR_SNAN to 0 or 1.
This patch moves the HIGH_ORDER_BIT_IS_SET_FOR_SNAN macro from being
defined or undefined to the preferred convention of always being
defined, to either 0 or 1, so allowing typo-proof tests with #if.
The macro is moved from math_private.h to a new header
nan-high-order-bit.h to make it easy for all architectures to define,
either through the sysdeps/generic version of the header or through
providing their own version of the header, without needing #ifndef in
the generic math_private.h to give a default definition. The move
also allows the macro to be used without needing math_private.h to be
included; the immediate motivation of this patch is to allow tests to
access this information (to know what kinds of NaNs 0 is a valid
payload for) without needing to include math_private.h. Existing
C level rather than preprocessor conditionals at all, but this patch
does not make such a change).
Tested for x86_64 and x86 (testsuite); also verified for x86_64, x86,
mips64 and powerpc that installed stripped shared libraries are
unchanged by the patch.
* sysdeps/generic/nan-high-order-bit.h: New file.
* sysdeps/hppa/nan-high-order-bit.h: Likewise.
* sysdeps/mips/nan-high-order-bit.h: Likewise.
* sysdeps/hppa/math_private.h: Remove file.
* sysdeps/mips/math_private.h (HIGH_ORDER_BIT_IS_SET_FOR_SNAN): Do
not define here.
* sysdeps/ieee754/dbl-64/s_issignaling.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/s_totalorder.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_issignalingf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_totalorderf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_issignalingl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
* sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
<nan-high-order-bit.h>.
[HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
diff --git a/ChangeLog b/ChangeLog
index 3c328b2..5448fad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,66 @@
+2016-10-17 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/generic/nan-high-order-bit.h: New file.
+ * sysdeps/hppa/nan-high-order-bit.h: Likewise.
+ * sysdeps/mips/nan-high-order-bit.h: Likewise.
+ * sysdeps/hppa/math_private.h: Remove file.
+ * sysdeps/mips/math_private.h (HIGH_ORDER_BIT_IS_SET_FOR_SNAN): Do
+ not define here.
+ * sysdeps/ieee754/dbl-64/s_issignaling.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/dbl-64/s_totalorder.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/flt-32/s_issignalingf.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/flt-32/s_totalorderf.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128/s_issignalingl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-96/s_issignalingl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+ * sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
+ <nan-high-order-bit.h>.
+ [HIGH_ORDER_BIT_IS_SET_FOR_SNAN]: Test with #if not #ifdef.
+
2016-10-17 Stefan Liebler <stli@linux.vnet.ibm.com>
* sysdeps/s390/fpu/fix-fp-int-compare-invalid.h: New file.
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/generic/nan-high-order-bit.h
similarity index 63%
copy from sysdeps/hppa/math_private.h
copy to sysdeps/generic/nan-high-order-bit.h
index 1acfb9a..1561915 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/generic/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff. HPPA version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions. Generic version.
+ Copyright (C) 2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,12 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H 1
-/* One of the few architectures where the meaning of the quiet/signaling bit is
- inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985). */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+/* Define this macro to 1 if the high-order bit of a NaN's mantissa is
+ set for signaling NaNs and clear for quiet NaNs, 0 otherwise (the
+ preferred IEEE convention). */
+#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
-#include_next <math_private.h>
-
-#endif
+#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/hppa/nan-high-order-bit.h
similarity index 64%
copy from sysdeps/hppa/math_private.h
copy to sysdeps/hppa/nan-high-order-bit.h
index 1acfb9a..a63d6a7 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/hppa/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff. HPPA version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions. HPPA version.
+ Copyright (C) 2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,12 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H 1
-/* One of the few architectures where the meaning of the quiet/signaling bit is
- inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985). */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+/* One of the few architectures where the meaning of the
+ quiet/signaling bit is inverse to IEEE 754-2008 (as well as common
+ practice for IEEE 754-1985). */
+#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 1
-#include_next <math_private.h>
-
-#endif
+#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/ieee754/dbl-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/s_issignaling.c
index 4b93d6a..0b845e2 100644
--- a/sysdeps/ieee754/dbl-64/s_issignaling.c
+++ b/sysdeps/ieee754/dbl-64/s_issignaling.c
@@ -18,11 +18,12 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignaling (double x)
{
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
u_int32_t hxi;
GET_HIGH_WORD (hxi, x);
/* We only have to care about the high-order bit of x's significand, because
diff --git a/sysdeps/ieee754/dbl-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/s_totalorder.c
index 73ac32f..c4ec917 100644
--- a/sysdeps/ieee754/dbl-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/s_totalorder.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -27,7 +28,7 @@ totalorder (double x, double y)
uint32_t lx, ly;
EXTRACT_WORDS (hx, lx, x);
EXTRACT_WORDS (hy, ly, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
uint32_t uhx = hx & 0x7fffffff, uhy = hy & 0x7fffffff;
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the arguments interpreted as
diff --git a/sysdeps/ieee754/dbl-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/s_totalordermag.c
index e41dade..3850c33 100644
--- a/sysdeps/ieee754/dbl-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/s_totalordermag.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -29,7 +30,7 @@ totalordermag (double x, double y)
EXTRACT_WORDS (hy, ly, y);
hx &= 0x7fffffff;
hy &= 0x7fffffff;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the absolute values of the
arguments. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
index c22e608..18d1acd 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c
@@ -18,13 +18,14 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignaling (double x)
{
u_int64_t xi;
EXTRACT_WORDS64 (xi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* We only have to care about the high-order bit of x's significand, because
having it set (sNaN) already makes the significand different from that
used to designate infinity. */
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
index 02cd799..dd5587b 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -26,7 +27,7 @@ totalorder (double x, double y)
int64_t ix, iy;
EXTRACT_WORDS64 (ix, x);
EXTRACT_WORDS64 (iy, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the arguments interpreted as
sign-magnitude integers. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
index 38f2e1b..999a919 100644
--- a/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
+++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -28,7 +29,7 @@ totalordermag (double x, double y)
EXTRACT_WORDS64 (iy, y);
ix &= 0x7fffffffffffffffULL;
iy &= 0x7fffffffffffffffULL;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the absolute values of the
arguments. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/flt-32/s_issignalingf.c b/sysdeps/ieee754/flt-32/s_issignalingf.c
index 2409ff4..965ba92 100644
--- a/sysdeps/ieee754/flt-32/s_issignalingf.c
+++ b/sysdeps/ieee754/flt-32/s_issignalingf.c
@@ -18,13 +18,14 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignalingf (float x)
{
u_int32_t xi;
GET_FLOAT_WORD (xi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* We only have to care about the high-order bit of x's significand, because
having it set (sNaN) already makes the significand different from that
used to designate infinity. */
diff --git a/sysdeps/ieee754/flt-32/s_totalorderf.c b/sysdeps/ieee754/flt-32/s_totalorderf.c
index 1ed30d8..243387b 100644
--- a/sysdeps/ieee754/flt-32/s_totalorderf.c
+++ b/sysdeps/ieee754/flt-32/s_totalorderf.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -26,7 +27,7 @@ totalorderf (float x, float y)
int32_t ix, iy;
GET_FLOAT_WORD (ix, x);
GET_FLOAT_WORD (iy, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the arguments interpreted as
sign-magnitude integers. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/flt-32/s_totalordermagf.c b/sysdeps/ieee754/flt-32/s_totalordermagf.c
index 7c01edc..be78eae 100644
--- a/sysdeps/ieee754/flt-32/s_totalordermagf.c
+++ b/sysdeps/ieee754/flt-32/s_totalordermagf.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -28,7 +29,7 @@ totalordermagf (float x, float y)
GET_FLOAT_WORD (iy, y);
ix &= 0x7fffffff;
iy &= 0x7fffffff;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the absolute values of the
arguments. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/sysdeps/ieee754/ldbl-128/s_issignalingl.c
index 6af1db4..cb0f2a5 100644
--- a/sysdeps/ieee754/ldbl-128/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-128/s_issignalingl.c
@@ -18,13 +18,14 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignalingl (_Float128 x)
{
u_int64_t hxi, lxi __attribute__ ((unused));
GET_LDOUBLE_WORDS64 (hxi, lxi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* We only have to care about the high-order bit of x's significand, because
having it set (sNaN) already makes the significand different from that
used to designate infinity. */
diff --git a/sysdeps/ieee754/ldbl-128/s_totalorderl.c b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
index dc76ccf..32ede1f 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalorderl.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -27,7 +28,7 @@ totalorderl (_Float128 x, _Float128 y)
uint64_t lx, ly;
GET_LDOUBLE_WORDS64 (hx, lx, x);
GET_LDOUBLE_WORDS64 (hy, ly, y);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
uint64_t uhx = hx & 0x7fffffffffffffffULL;
uint64_t uhy = hy & 0x7fffffffffffffffULL;
/* For the preferred quiet NaN convention, this operation is a
diff --git a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
index bcfeecd..5446809 100644
--- a/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128/s_totalordermagl.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -29,7 +30,7 @@ totalordermagl (_Float128 x, _Float128 y)
GET_LDOUBLE_WORDS64 (hy, ly, y);
hx &= 0x7fffffffffffffffULL;
hy &= 0x7fffffffffffffffULL;
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
/* For the preferred quiet NaN convention, this operation is a
comparison of the representations of the absolute values of the
arguments. If both arguments are NaNs, invert the
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
index 0915139..94cfffc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignalingl (long double x)
@@ -29,7 +30,7 @@ __issignalingl (long double x)
xhi = ldbl_high (x);
EXTRACT_WORDS64 (xi, xhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error untested
/* We only have to care about the high-order bit of x's significand, because
having it set (sNaN) already makes the significand different from that
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
index 1535b2f..ff55779 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -30,7 +31,7 @@ totalorderl (long double x, long double y)
EXTRACT_WORDS64 (hx, xhi);
ldbl_unpack (y, &yhi, &ylo);
EXTRACT_WORDS64 (hy, yhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
#endif
uint64_t hx_sign = hx >> 63;
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
index 509a23a..739e231 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c
@@ -18,6 +18,7 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -30,7 +31,7 @@ totalordermagl (long double x, long double y)
EXTRACT_WORDS64 (hx, xhi);
ldbl_unpack (y, &yhi, &ylo);
EXTRACT_WORDS64 (hy, yhi);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
#endif
uint64_t x_sign = hx & 0x8000000000000000ULL;
diff --git a/sysdeps/ieee754/ldbl-96/s_issignalingl.c b/sysdeps/ieee754/ldbl-96/s_issignalingl.c
index 73646ca..364e5db 100644
--- a/sysdeps/ieee754/ldbl-96/s_issignalingl.c
+++ b/sysdeps/ieee754/ldbl-96/s_issignalingl.c
@@ -18,13 +18,14 @@
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
int
__issignalingl (long double x)
{
u_int32_t exi, hxi, lxi;
GET_LDOUBLE_WORDS (exi, hxi, lxi, x);
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
#else
/* To keep the following comparison simple, toggle the quiet/signaling bit,
diff --git a/sysdeps/ieee754/ldbl-96/s_totalorderl.c b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
index 4f14baf..ddc28b8 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalorderl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalorderl.c
@@ -19,6 +19,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -41,7 +42,7 @@ totalorderl (long double x, long double y)
if ((expy & 0x7fff) == 0x7fff)
hy |= 0x80000000;
}
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
#endif
uint32_t x_sign = expx >> 15;
diff --git a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
index 0167f0f..4ca28e7 100644
--- a/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
+++ b/sysdeps/ieee754/ldbl-96/s_totalordermagl.c
@@ -19,6 +19,7 @@
#include <float.h>
#include <math.h>
#include <math_private.h>
+#include <nan-high-order-bit.h>
#include <stdint.h>
int
@@ -43,7 +44,7 @@ totalordermagl (long double x, long double y)
if (expy == 0x7fff)
hy |= 0x80000000;
}
-#ifdef HIGH_ORDER_BIT_IS_SET_FOR_SNAN
+#if HIGH_ORDER_BIT_IS_SET_FOR_SNAN
# error not implemented
#endif
return expx < expy || (expx == expy && (hx < hy || (hx == hy && lx <= ly)));
diff --git a/sysdeps/mips/math_private.h b/sysdeps/mips/math_private.h
index 2ea3c57..4587d01 100644
--- a/sysdeps/mips/math_private.h
+++ b/sysdeps/mips/math_private.h
@@ -19,14 +19,6 @@
#ifndef MIPS_MATH_PRIVATE_H
#define MIPS_MATH_PRIVATE_H 1
-#ifdef __mips_nan2008
-/* MIPS aligned to IEEE 754-2008. */
-#else
-/* One of the few architectures where the meaning of the quiet/signaling bit is
- inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985). */
-# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
-#endif
-
/* Inline functions to speed up the math library implementation. The
default versions of these routines are in generic/math_private.h
and call fesetround, feholdexcept, etc. These routines use inlined
diff --git a/sysdeps/hppa/math_private.h b/sysdeps/mips/nan-high-order-bit.h
similarity index 58%
rename from sysdeps/hppa/math_private.h
rename to sysdeps/mips/nan-high-order-bit.h
index 1acfb9a..0aaef0f 100644
--- a/sysdeps/hppa/math_private.h
+++ b/sysdeps/mips/nan-high-order-bit.h
@@ -1,5 +1,5 @@
-/* Internal math stuff. HPPA version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+/* Specify NaN high-order bit conventions. MIPS version.
+ Copyright (C) 2016 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,13 +16,17 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef HPPA_MATH_PRIVATE_H
-#define HPPA_MATH_PRIVATE_H 1
-
-/* One of the few architectures where the meaning of the quiet/signaling bit is
- inverse to IEEE 754-2008 (as well as common practice for IEEE 754-1985). */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN
-
-#include_next <math_private.h>
+#ifndef NAN_HIGH_ORDER_BIT_H
+#define NAN_HIGH_ORDER_BIT_H 1
+#ifdef __mips_nan2008
+/* MIPS aligned to IEEE 754-2008. */
+# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
+#else
+/* One of the few architectures where the meaning of the
+ quiet/signaling bit is inverse to IEEE 754-2008 (as well as common
+ practice for IEEE 754-1985). */
+# define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 1
#endif
+
+#endif /* nan-high-order-bit.h */
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 63 ++++++++++++++++++++
sysdeps/generic/nan-high-order-bit.h | 27 ++++++++
sysdeps/hppa/math_private.h | 28 ---------
sysdeps/hppa/nan-high-order-bit.h | 27 ++++++++
sysdeps/ieee754/dbl-64/s_issignaling.c | 3 +-
sysdeps/ieee754/dbl-64/s_totalorder.c | 3 +-
sysdeps/ieee754/dbl-64/s_totalordermag.c | 3 +-
sysdeps/ieee754/dbl-64/wordsize-64/s_issignaling.c | 3 +-
sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c | 3 +-
.../ieee754/dbl-64/wordsize-64/s_totalordermag.c | 3 +-
sysdeps/ieee754/flt-32/s_issignalingf.c | 3 +-
sysdeps/ieee754/flt-32/s_totalorderf.c | 3 +-
sysdeps/ieee754/flt-32/s_totalordermagf.c | 3 +-
sysdeps/ieee754/ldbl-128/s_issignalingl.c | 3 +-
sysdeps/ieee754/ldbl-128/s_totalorderl.c | 3 +-
sysdeps/ieee754/ldbl-128/s_totalordermagl.c | 3 +-
sysdeps/ieee754/ldbl-128ibm/s_issignalingl.c | 3 +-
sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c | 3 +-
sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c | 3 +-
sysdeps/ieee754/ldbl-96/s_issignalingl.c | 3 +-
sysdeps/ieee754/ldbl-96/s_totalorderl.c | 3 +-
sysdeps/ieee754/ldbl-96/s_totalordermagl.c | 3 +-
sysdeps/mips/math_private.h | 8 ---
sysdeps/mips/nan-high-order-bit.h | 32 ++++++++++
24 files changed, 185 insertions(+), 54 deletions(-)
create mode 100644 sysdeps/generic/nan-high-order-bit.h
delete mode 100644 sysdeps/hppa/math_private.h
create mode 100644 sysdeps/hppa/nan-high-order-bit.h
create mode 100644 sysdeps/mips/nan-high-order-bit.h
hooks/post-receive
--
GNU C Library master sources
More information about the Glibc-cvs
mailing list