Message ID | 20200327211801.31234-3-murphyp@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Series | IEEE binary128 long double on powerpc64le | expand |
"Paul E. Murphy via Libc-alpha" <libc-alpha@sourceware.org> writes: > The test for enabling _Float128 or IEEE 128 long double can be > greatly simplified knowing that there is no ibm128, thus we require > no special cases, and everything is canonical. > > This reverts the changes to ldbl-128ibm iscanonical.h from commit > 8dbfea3a2094798a52cebddde01d255483f49665 and extends the check > for __NO_LONG_DOUBLE_MATH to include a check for float128 redirects > to long double. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Pushed. Thanks! On 4/3/20 3:12 PM, Tulio Magno Quites Machado Filho wrote: > "Paul E. Murphy via Libc-alpha" <libc-alpha@sourceware.org> writes: > >> The test for enabling _Float128 or IEEE 128 long double can be >> greatly simplified knowing that there is no ibm128, thus we require >> no special cases, and everything is canonical. >> >> This reverts the changes to ldbl-128ibm iscanonical.h from commit >> 8dbfea3a2094798a52cebddde01d255483f49665 and extends the check >> for __NO_LONG_DOUBLE_MATH to include a check for float128 redirects >> to long double. > > Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> >
diff --git a/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h b/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h index 70da85f2cb..b2021b5d64 100644 --- a/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h +++ b/sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h @@ -20,15 +20,11 @@ # error "Never use <bits/iscanonical.h> directly; include <math.h> instead." #endif -#ifdef __NO_LONG_DOUBLE_MATH +#if defined (__NO_LONG_DOUBLE_MATH) || __LONG_DOUBLE_USES_FLOAT128 == 1 # define iscanonical(x) ((void) (__typeof (x)) (x), 1) #else -# if __LONG_DOUBLE_USES_FLOAT128 == 1 -# define __iscanonicall(x) ((void) (__typeof (x)) (x), 1) -# else extern int __iscanonicall (long double __x) __THROW __attribute__ ((__const__)); -# endif # define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1) # define __iscanonical(x) ((void) (__typeof (x)) (x), 1) # if __HAVE_DISTINCT_FLOAT128 @@ -54,9 +50,7 @@ extern "C++" { inline int iscanonical (float __val) { return __iscanonicalf (__val); } inline int iscanonical (double __val) { return __iscanonical (__val); } inline int iscanonical (long double __val) { return __iscanonicall (__val); } -/* When using an IEEE 128-bit long double, _Float128 is defined as long double - in C++. */ -# if __HAVE_DISTINCT_FLOAT128 && __HAVE_FLOAT128_UNLIKE_LDBL +# if __HAVE_DISTINCT_FLOAT128 inline int iscanonical (_Float128 __val) { return __iscanonicalf128 (__val); } # endif }