[02/28] powerpc: fma using builtins
Commit Message
This patch just refactor the assembly implementation to use compiler
builtins instead.
Checked on powerpc-linux-gnu (built without --with-cpu, with
--with-cpu=power4 and with --with-cpu=power5+ and --disable-multi-arch),
powerpc64-linux-gnu (built without --with-cp and with --with-cpu=power5+
and --disable-multi-arch).
* sysdeps/powerpc/fpu/s_fma.S: Remove file.
* sysdeps/powerpc/fpu/s_fmaf.S: Likewise.
* sysdeps/powerpc/fpu/s_fma.c: New file.
* sysdeps/powerpc/fpu/s_fmaf.c: Likewise.
---
sysdeps/powerpc/fpu/{s_fma.S => s_fma.c} | 12 +++++-------
sysdeps/powerpc/fpu/{s_fmaf.S => s_fmaf.c} | 12 +++++-------
2 files changed, 10 insertions(+), 14 deletions(-)
rename sysdeps/powerpc/fpu/{s_fma.S => s_fma.c} (82%)
rename sysdeps/powerpc/fpu/{s_fmaf.S => s_fmaf.c} (82%)
Comments
On Fri, 29 Mar 2019, Adhemerval Zanella wrote:
> +double __fma (double x, double y, double z)
This is not a correctly formatted function definition (return type should
be on its own line).
> +float __fmaf (float x, float y, float z)
Likewise.
On 02/04/2019 03:05, Joseph Myers wrote:
> On Fri, 29 Mar 2019, Adhemerval Zanella wrote:
>
>> +double __fma (double x, double y, double z)
>
> This is not a correctly formatted function definition (return type should
> be on its own line).
Fixed locally.
>
>> +float __fmaf (float x, float y, float z)
>
> Likewise.
>
Ditto.
On Wed, Apr 03 2019, Adhemerval Zanella wrote:
>
> On 02/04/2019 03:05, Joseph Myers wrote:
> > On Fri, 29 Mar 2019, Adhemerval Zanella wrote:
> >
> >> +double __fma (double x, double y, double z)
> >
> > This is not a correctly formatted function definition (return type should
> > be on its own line).
>
> Fixed locally.
>
> >
> >> +float __fmaf (float x, float y, float z)
> >
> > Likewise.
> >
>
> Ditto.
Looks good to me.
On Wed, 3 Apr 2019, Adhemerval Zanella wrote:
> On 02/04/2019 03:05, Joseph Myers wrote:
> > On Fri, 29 Mar 2019, Adhemerval Zanella wrote:
> >
> >> +double __fma (double x, double y, double z)
> >
> > This is not a correctly formatted function definition (return type should
> > be on its own line).
>
> Fixed locally.
>
> >
> >> +float __fmaf (float x, float y, float z)
> >
> > Likewise.
> >
>
> Ditto.
The committed changes appear to be the wrong version, as they still have
the incorrect formatting.
On 17/04/2019 18:10, Joseph Myers wrote:
> On Wed, 3 Apr 2019, Adhemerval Zanella wrote:
>
>> On 02/04/2019 03:05, Joseph Myers wrote:
>>> On Fri, 29 Mar 2019, Adhemerval Zanella wrote:
>>>
>>>> +double __fma (double x, double y, double z)
>>>
>>> This is not a correctly formatted function definition (return type should
>>> be on its own line).
>>
>> Fixed locally.
>>
>>>
>>>> +float __fmaf (float x, float y, float z)
>>>
>>> Likewise.
>>>
>>
>> Ditto.
>
> The committed changes appear to be the wrong version, as they still have
> the incorrect formatting.
>
Sorry about that, I will fix.
similarity index 82%
rename from sysdeps/powerpc/fpu/s_fma.S
rename to sysdeps/powerpc/fpu/s_fma.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation. PowerPC version.
- Copyright (C) 2010-2019 Free Software Foundation, Inc.
+ Copyright (C) 2019 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
@@ -19,10 +19,8 @@
#include <sysdep.h>
#include <libm-alias-double.h>
-ENTRY_TOCLESS(__fma)
-/* double [f1] fma (double [f1] x, double [f2] y, double [f3] z); */
- fmadd fp1,fp1,fp2,fp3
- blr
-END(__fma)
-
+double __fma (double x, double y, double z)
+{
+ return __builtin_fma (x, y, z);
+}
libm_alias_double (__fma, fma)
similarity index 82%
rename from sysdeps/powerpc/fpu/s_fmaf.S
rename to sysdeps/powerpc/fpu/s_fmaf.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation. PowerPC version.
- Copyright (C) 2010-2019 Free Software Foundation, Inc.
+ Copyright (C) 2019 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
@@ -19,10 +19,8 @@
#include <sysdep.h>
#include <libm-alias-float.h>
-ENTRY_TOCLESS(__fmaf)
-/* float [f1] fmaf (float [f1] x, float [f2] y, float [f3] z); */
- fmadds fp1,fp1,fp2,fp3
- blr
-END(__fmaf)
-
+float __fmaf (float x, float y, float z)
+{
+ return __builtin_fmaf (x, y, z);
+}
libm_alias_float (__fma, fma)