[PATCHv3][Ping] ldbl-128ibm-compat: Add tests for IBM long double functions

Paul E Murphy murphyp@linux.ibm.com
Tue Mar 3 20:17:00 GMT 2020


I will commit this friday if there are no more requests for improvement.

On 2/28/20 9:33 AM, Paul E Murphy wrote:
> Ping.
> 
> On 2/18/20 4:00 PM, Paul E. Murphy wrote:
>> From: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
>>
>> Simplify this further.  As correctly pointed out by Joseph, compiler
>> _Float128 compiler flags should always be present where needed.  Thus,
>> I can greatly simplify this patch.  It had collected too much cruft from
>> my constant rebasing.
>>
>> Likewise, defer the ppc64le makefile changes.  They really shouldn't be
>> here, and contained harmful rebasing noise.  They have been squashed
>> into later, more appropriate patches.
>>
>> Similarly, the hack for gamma is removed.  `make regen-ulps` behaves
>> as expected and fills the missing entries correctly.  The ULP changes
>> will be included with the enablement patch.
>>
>> Tested on x86-64 and ppc64le.
>>
>> ---8<---
>>
>> This patch creates test-ibm128* tests from the long double function 
>> tests.
>> In order to explicitly test IBM long double functions 
>> -mabi=ibmlongdouble is
>> added to CFLAGS.
>>
>> Likewise, update the test headers to correct choose ULPs when redirects
>> are enabled.
>>
>> Co-Authored-By: Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
>> Co-Authored-By: Paul E. Murphy  <murphyp@linux.vnet.ibm.com>
>> ---
>>   math/Makefile                                 |  7 ++++++-
>>   math/test-ibm128.h                            | 19 +++++++++++++++++++
>>   math/test-ldouble.h                           |  7 +++++++
>>   sysdeps/ieee754/ldbl-128ibm-compat/Makeconfig |  3 +++
>>   4 files changed, 35 insertions(+), 1 deletion(-)
>>   create mode 100644 math/test-ibm128.h
>>   create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/Makeconfig
>>
>> diff --git a/math/Makefile b/math/Makefile
>> index 1d203e7ad5..84a8b94c74 100644
>> --- a/math/Makefile
>> +++ b/math/Makefile
>> @@ -145,10 +145,15 @@ type-float128-yes := float128
>>   # _Float64x may be supported, only as an alias type.
>>   type-float64x-yes := float64x
>>
>> +# IBM long double support in additional to IEEE 128 long double support
>> +type-ibm128-suffix := l
>> +type-ibm128-yes := ibm128
>> +
>>   types = $(types-basic) $(type-float128-$(float128-fcts))
>>   test-types = $(test-types-basic) $(type-float128-$(float128-fcts)) \
>>            float32 float64 $(type-float128-$(float128-alias-fcts)) \
>> -         float32x $(type-float64x-$(float64x-alias-fcts))
>> +         float32x $(type-float64x-$(float64x-alias-fcts)) \
>> +         $(type-ibm128-$(ibm128-fcts))
>>
>>   # Pairs of types for which narrowing functions should be tested (this
>>   # variable has more entries than libm-narrow-types because it includes
>> diff --git a/math/test-ibm128.h b/math/test-ibm128.h
>> new file mode 100644
>> index 0000000000..fce6ef1376
>> --- /dev/null
>> +++ b/math/test-ibm128.h
>> @@ -0,0 +1,19 @@
>> +/* Common definitions for libm tests for ibm long double.
>> +   Copyright (C) 2020 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
>> +   modify it under the terms of the GNU Lesser General Public
>> +   License as published by the Free Software Foundation; either
>> +   version 2.1 of the License, or (at your option) any later version.
>> +
>> +   The GNU C Library is distributed in the hope that it will be useful,
>> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> +   Lesser General Public License for more details.
>> +
>> +   You should have received a copy of the GNU Lesser General Public
>> +   License along with the GNU C Library; if not, see
>> +   <http://www.gnu.org/licenses/>.  */
>> +
>> +#include "test-ldouble.h"
>> diff --git a/math/test-ldouble.h b/math/test-ldouble.h
>> index 17c526bd71..5b72915008 100644
>> --- a/math/test-ldouble.h
>> +++ b/math/test-ldouble.h
>> @@ -27,6 +27,13 @@
>>   # define TYPE_STR "double"
>>   # define ULP_IDX ULP_DBL
>>   # define ULP_I_IDX ULP_I_DBL
>> +/* On architectures which redirect long double to _Float128 ABI, we must
>> +   choose the float128 ulps.  Similarly, on such architectures, the ABI
>> +   used may be dependent on how the compiler was invoked.  */
>> +#elif __LONG_DOUBLE_USES_FLOAT128 == 1
>> +# define TYPE_STR "float128"
>> +# define ULP_IDX ULP_FLT128
>> +# define ULP_I_IDX ULP_I_FLT128
>>   #else
>>   # define TYPE_STR "ldouble"
>>   # define ULP_IDX ULP_LDBL
>> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makeconfig 
>> b/sysdeps/ieee754/ldbl-128ibm-compat/Makeconfig
>> new file mode 100644
>> index 0000000000..997f632319
>> --- /dev/null
>> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makeconfig
>> @@ -0,0 +1,3 @@
>> +# Include this earlier so it can be used earlier in Makefiles,
>> +# and sysdep/ makefiles.
>> +ibm128-fcts = yes
>>



More information about the Libc-alpha mailing list