[PATCH v2 2/4] iee754: provide gcc builtins based generic fma functions
Stefan Liebler
stli@linux.ibm.com
Wed Jun 3 06:29:02 GMT 2020
On 6/2/20 7:13 PM, Vineet Gupta wrote:
> On 6/2/20 5:51 AM, Stefan Liebler via Libc-alpha wrote:
>> #endif /* math-use-builtins.h */
>> Please also update the current architecture specific math-use-builtins.h
>> file: sysdeps/s390/fpu/math-use-builtins.h
>> Otherwise it will break build on s390x.
>
> Done.
>
>>> diff --git a/sysdeps/ieee754/dbl-64/s_fma.c b/sysdeps/ieee754/dbl-64/s_fma.c
>>> index 876df6e78bdc..9dc5b132b9ee 100644
>>> --- a/sysdeps/ieee754/dbl-64/s_fma.c
>>> +++ b/sysdeps/ieee754/dbl-64/s_fma.c
>>> @@ -25,6 +25,7 @@
>>> #include <fenv_private.h>
>>> #include <libm-alias-double.h>
>>> #include <tininess.h>
>>> +#include <math-use-builtins.h>
>>>
>>> /* This implementation uses rounding to odd to avoid problems with
>>> double rounding. See a paper by Boldo and Melquiond:
>>> @@ -33,6 +34,10 @@
>>> double
>>> __fma (double x, double y, double z)
>>> {
>>> +#if USE_FMA_BUILTIN
>>> + return __builtin_fma (x, y, z);
>>
>> Architectures which have support for ldbl-128 will use the file
>> sysdeps/ieee754/ldbl-128/s_fma.c instead of
>> sysdeps/ieee754/dbl-64/s_fma.c. Should this file also be adjusted in
>> order to use the builtin if USE_FMA_BUILTIN is set to one?
>
> Right.
>
> I used commit f82996f815 "Use GCC builtins for round functions if desired" as
> starting point for my change. And seems it was not an ideal reference :-) as round
> has far fewer instances than fma. Indeed fma is present in ldbl-128 and dbl-64 so
> needs updating in both.
>
> But just to be sure s390 is currently not using the newly introduced builtins so
> I'll keep them as follows.
>
> #define USE_SQRT_BUILTIN 0
> #define USE_SQRTF_BUILTIN 0
>
> #define USE_FMA_BUILTIN 0
> #define USE_FMAF_BUILTIN 0
> #define USE_FMAL_BUILTIN 0
> #define USE_FMAF128_BUILTIN 0
>
Yes. Those should be disabled for now in order to not break anything. As
soon as you've committed your patches, I'll have a look if I can
activate some of them and remove s390 specific implementations. But I
first have to check with the gcc guys, if the builtins are always
expanded correctly in various gcc versions.
Thanks.
Stefan
> -Vineet
>
More information about the Libc-alpha
mailing list