* [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
@ 2022-06-01 16:23 Wilco Dijkstra
0 siblings, 0 replies; 7+ messages in thread
From: Wilco Dijkstra @ 2022-06-01 16:23 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: 'GNU C Library', Noah Goldstein
Hi,
Note there is no ULP change here really - sinf/cosf were never exact in any
implementation and so have always been 1ULP. The testsuite likely focusses
more on round to nearest rather than other rounding modes, so it simply didn't
report the correct ULP for the SSE implementation.
Cheers,
Wilco
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
@ 2022-05-31 21:34 Adhemerval Zanella
2022-05-31 21:48 ` Noah Goldstein
0 siblings, 1 reply; 7+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 21:34 UTC (permalink / raw)
To: libc-alpha, H . J . Lu
Performance seems to be similar, with generic implementation showing
slight better performance for sinf large inputs and for sincosf.
Although generic implementation shows slight lower precision (the
ulp data required some adjustments), the code size shows a good
improvement:
i686-linux-gnu-master$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
math/s_sincosf-sse2.os
text data bss dec hex filename
1555 0 0 1555 613 math/s_sinf-sse2.os
1551 0 0 1551 60f math/s_cosf-sse2.os
1754 0 0 1754 6da math/s_sincosf-sse2.os
i686-linux-gnu-patched$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
math/s_sincosf-sse2.os
text data bss dec hex filename
1059 0 0 1059 423 math/s_sinf-sse2.os
1067 0 0 1067 42b math/s_cosf-sse2.os
993 0 0 993 3e1 math/s_sincosf-sse2.os
And it also simplifies the code base a lot with less assembly
implementations.
Adhemerval Zanella (5):
benchtests: Add workload name for cosf
i686: Use generic cosf implementation for SSE2 version
i686: Use generic sinf implementation for SSE2 version
benchtests: Add workload name for sincosf
math: Use generic sinf implementation for SSE2 version
benchtests/cosf-inputs | 2 +-
benchtests/sincosf-inputs | 1 +
sysdeps/i386/i686/fpu/multiarch/Makefile | 3 +
.../i386/i686/fpu/multiarch/libm-test-ulps | 11 +
sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S | 552 -----------------
sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c | 3 +
.../i386/i686/fpu/multiarch/s_sincosf-sse2.S | 585 ------------------
.../i386/i686/fpu/multiarch/s_sincosf-sse2.c | 3 +
sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S | 565 -----------------
sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c | 3 +
sysdeps/ieee754/flt-32/s_cosf.c | 5 +
sysdeps/ieee754/flt-32/s_sinf.c | 5 +
12 files changed, 35 insertions(+), 1703 deletions(-)
delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c
delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.c
delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
2022-05-31 21:34 Adhemerval Zanella
@ 2022-05-31 21:48 ` Noah Goldstein
2022-05-31 21:49 ` H.J. Lu
0 siblings, 1 reply; 7+ messages in thread
From: Noah Goldstein @ 2022-05-31 21:48 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: GNU C Library, H . J . Lu
On Tue, May 31, 2022 at 4:35 PM Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> Performance seems to be similar, with generic implementation showing
> slight better performance for sinf large inputs and for sincosf.
>
> Although generic implementation shows slight lower precision (the
> ulp data required some adjustments), the code size shows a good
> improvement:
>
How much loss of precision?
> i686-linux-gnu-master$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> math/s_sincosf-sse2.os
> text data bss dec hex filename
> 1555 0 0 1555 613 math/s_sinf-sse2.os
> 1551 0 0 1551 60f math/s_cosf-sse2.os
> 1754 0 0 1754 6da math/s_sincosf-sse2.os
>
> i686-linux-gnu-patched$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> math/s_sincosf-sse2.os
> text data bss dec hex filename
> 1059 0 0 1059 423 math/s_sinf-sse2.os
> 1067 0 0 1067 42b math/s_cosf-sse2.os
> 993 0 0 993 3e1 math/s_sincosf-sse2.os
>
> And it also simplifies the code base a lot with less assembly
> implementations.
>
> Adhemerval Zanella (5):
> benchtests: Add workload name for cosf
> i686: Use generic cosf implementation for SSE2 version
> i686: Use generic sinf implementation for SSE2 version
> benchtests: Add workload name for sincosf
> math: Use generic sinf implementation for SSE2 version
>
> benchtests/cosf-inputs | 2 +-
> benchtests/sincosf-inputs | 1 +
> sysdeps/i386/i686/fpu/multiarch/Makefile | 3 +
> .../i386/i686/fpu/multiarch/libm-test-ulps | 11 +
> sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S | 552 -----------------
> sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c | 3 +
> .../i386/i686/fpu/multiarch/s_sincosf-sse2.S | 585 ------------------
> .../i386/i686/fpu/multiarch/s_sincosf-sse2.c | 3 +
> sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S | 565 -----------------
> sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c | 3 +
> sysdeps/ieee754/flt-32/s_cosf.c | 5 +
> sysdeps/ieee754/flt-32/s_sinf.c | 5 +
> 12 files changed, 35 insertions(+), 1703 deletions(-)
> delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
> create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c
> delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
> create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.c
> delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
> create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
2022-05-31 21:48 ` Noah Goldstein
@ 2022-05-31 21:49 ` H.J. Lu
2022-05-31 21:53 ` Noah Goldstein
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2022-05-31 21:49 UTC (permalink / raw)
To: Noah Goldstein; +Cc: Adhemerval Zanella, GNU C Library
On Tue, May 31, 2022 at 2:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> On Tue, May 31, 2022 at 4:35 PM Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> >
> > Performance seems to be similar, with generic implementation showing
> > slight better performance for sinf large inputs and for sincosf.
> >
> > Although generic implementation shows slight lower precision (the
> > ulp data required some adjustments), the code size shows a good
> > improvement:
> >
>
> How much loss of precision?
About 1ULP.
> > i686-linux-gnu-master$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> > math/s_sincosf-sse2.os
> > text data bss dec hex filename
> > 1555 0 0 1555 613 math/s_sinf-sse2.os
> > 1551 0 0 1551 60f math/s_cosf-sse2.os
> > 1754 0 0 1754 6da math/s_sincosf-sse2.os
> >
> > i686-linux-gnu-patched$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> > math/s_sincosf-sse2.os
> > text data bss dec hex filename
> > 1059 0 0 1059 423 math/s_sinf-sse2.os
> > 1067 0 0 1067 42b math/s_cosf-sse2.os
> > 993 0 0 993 3e1 math/s_sincosf-sse2.os
> >
> > And it also simplifies the code base a lot with less assembly
> > implementations.
> >
> > Adhemerval Zanella (5):
> > benchtests: Add workload name for cosf
> > i686: Use generic cosf implementation for SSE2 version
> > i686: Use generic sinf implementation for SSE2 version
> > benchtests: Add workload name for sincosf
> > math: Use generic sinf implementation for SSE2 version
> >
> > benchtests/cosf-inputs | 2 +-
> > benchtests/sincosf-inputs | 1 +
> > sysdeps/i386/i686/fpu/multiarch/Makefile | 3 +
> > .../i386/i686/fpu/multiarch/libm-test-ulps | 11 +
> > sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S | 552 -----------------
> > sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c | 3 +
> > .../i386/i686/fpu/multiarch/s_sincosf-sse2.S | 585 ------------------
> > .../i386/i686/fpu/multiarch/s_sincosf-sse2.c | 3 +
> > sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S | 565 -----------------
> > sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c | 3 +
> > sysdeps/ieee754/flt-32/s_cosf.c | 5 +
> > sysdeps/ieee754/flt-32/s_sinf.c | 5 +
> > 12 files changed, 35 insertions(+), 1703 deletions(-)
> > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
> > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c
> > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
> > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.c
> > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
> > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c
> >
> > --
> > 2.34.1
> >
--
H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
2022-05-31 21:49 ` H.J. Lu
@ 2022-05-31 21:53 ` Noah Goldstein
2022-06-01 12:36 ` Adhemerval Zanella
0 siblings, 1 reply; 7+ messages in thread
From: Noah Goldstein @ 2022-05-31 21:53 UTC (permalink / raw)
To: H.J. Lu; +Cc: Adhemerval Zanella, GNU C Library
On Tue, May 31, 2022 at 4:50 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Tue, May 31, 2022 at 2:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
> >
> > On Tue, May 31, 2022 at 4:35 PM Adhemerval Zanella via Libc-alpha
> > <libc-alpha@sourceware.org> wrote:
> > >
> > > Performance seems to be similar, with generic implementation showing
> > > slight better performance for sinf large inputs and for sincosf.
> > >
> > > Although generic implementation shows slight lower precision (the
> > > ulp data required some adjustments), the code size shows a good
> > > improvement:
> > >
> >
> > How much loss of precision?
>
> About 1ULP.
Should be okay then. Does:
https://www.gnu.org/software/libc/manual/html_node/Errors-in-Math-Functions.html
need to be updated?
>
> > > i686-linux-gnu-master$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> > > math/s_sincosf-sse2.os
> > > text data bss dec hex filename
> > > 1555 0 0 1555 613 math/s_sinf-sse2.os
> > > 1551 0 0 1551 60f math/s_cosf-sse2.os
> > > 1754 0 0 1754 6da math/s_sincosf-sse2.os
> > >
> > > i686-linux-gnu-patched$ size math/s_sinf-sse2.os math/s_cosf-sse2.os
> > > math/s_sincosf-sse2.os
> > > text data bss dec hex filename
> > > 1059 0 0 1059 423 math/s_sinf-sse2.os
> > > 1067 0 0 1067 42b math/s_cosf-sse2.os
> > > 993 0 0 993 3e1 math/s_sincosf-sse2.os
> > >
> > > And it also simplifies the code base a lot with less assembly
> > > implementations.
> > >
> > > Adhemerval Zanella (5):
> > > benchtests: Add workload name for cosf
> > > i686: Use generic cosf implementation for SSE2 version
> > > i686: Use generic sinf implementation for SSE2 version
> > > benchtests: Add workload name for sincosf
> > > math: Use generic sinf implementation for SSE2 version
> > >
> > > benchtests/cosf-inputs | 2 +-
> > > benchtests/sincosf-inputs | 1 +
> > > sysdeps/i386/i686/fpu/multiarch/Makefile | 3 +
> > > .../i386/i686/fpu/multiarch/libm-test-ulps | 11 +
> > > sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S | 552 -----------------
> > > sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c | 3 +
> > > .../i386/i686/fpu/multiarch/s_sincosf-sse2.S | 585 ------------------
> > > .../i386/i686/fpu/multiarch/s_sincosf-sse2.c | 3 +
> > > sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S | 565 -----------------
> > > sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c | 3 +
> > > sysdeps/ieee754/flt-32/s_cosf.c | 5 +
> > > sysdeps/ieee754/flt-32/s_sinf.c | 5 +
> > > 12 files changed, 35 insertions(+), 1703 deletions(-)
> > > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.S
> > > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_cosf-sse2.c
> > > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.S
> > > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sincosf-sse2.c
> > > delete mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.S
> > > create mode 100644 sysdeps/i386/i686/fpu/multiarch/s_sinf-sse2.c
> > >
> > > --
> > > 2.34.1
> > >
>
>
>
> --
> H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
2022-05-31 21:53 ` Noah Goldstein
@ 2022-06-01 12:36 ` Adhemerval Zanella
2022-06-01 13:12 ` Adhemerval Zanella
0 siblings, 1 reply; 7+ messages in thread
From: Adhemerval Zanella @ 2022-06-01 12:36 UTC (permalink / raw)
To: Noah Goldstein, H.J. Lu; +Cc: GNU C Library
On 31/05/2022 18:53, Noah Goldstein wrote:
> On Tue, May 31, 2022 at 4:50 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>>
>> On Tue, May 31, 2022 at 2:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>>>
>>> On Tue, May 31, 2022 at 4:35 PM Adhemerval Zanella via Libc-alpha
>>> <libc-alpha@sourceware.org> wrote:
>>>>
>>>> Performance seems to be similar, with generic implementation showing
>>>> slight better performance for sinf large inputs and for sincosf.
>>>>
>>>> Although generic implementation shows slight lower precision (the
>>>> ulp data required some adjustments), the code size shows a good
>>>> improvement:
>>>>
>>>
>>> How much loss of precision?
>>
>> About 1ULP.
>
> Should be okay then. Does:
> https://www.gnu.org/software/libc/manual/html_node/Errors-in-Math-Functions.html
> need to be updated?
Good call, I will send a patch to update the documentation.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686
2022-06-01 12:36 ` Adhemerval Zanella
@ 2022-06-01 13:12 ` Adhemerval Zanella
0 siblings, 0 replies; 7+ messages in thread
From: Adhemerval Zanella @ 2022-06-01 13:12 UTC (permalink / raw)
To: Noah Goldstein, H.J. Lu; +Cc: GNU C Library
On 01/06/2022 09:36, Adhemerval Zanella wrote:
>
>
> On 31/05/2022 18:53, Noah Goldstein wrote:
>> On Tue, May 31, 2022 at 4:50 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>>>
>>> On Tue, May 31, 2022 at 2:48 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>>>>
>>>> On Tue, May 31, 2022 at 4:35 PM Adhemerval Zanella via Libc-alpha
>>>> <libc-alpha@sourceware.org> wrote:
>>>>>
>>>>> Performance seems to be similar, with generic implementation showing
>>>>> slight better performance for sinf large inputs and for sincosf.
>>>>>
>>>>> Although generic implementation shows slight lower precision (the
>>>>> ulp data required some adjustments), the code size shows a good
>>>>> improvement:
>>>>>
>>>>
>>>> How much loss of precision?
>>>
>>> About 1ULP.
>>
>> Should be okay then. Does:
>> https://www.gnu.org/software/libc/manual/html_node/Errors-in-Math-Functions.html
>> need to be updated?
>
> Good call, I will send a patch to update the documentation.
>
In fact the table is already auto-generated from libm-ulps files, so there is
no need to change anything.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-06-01 16:23 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-01 16:23 [PATCH 0/5] Use generic sinf, cosf, and sincosf for i686 Wilco Dijkstra
-- strict thread matches above, loose matches on Subject: below --
2022-05-31 21:34 Adhemerval Zanella
2022-05-31 21:48 ` Noah Goldstein
2022-05-31 21:49 ` H.J. Lu
2022-05-31 21:53 ` Noah Goldstein
2022-06-01 12:36 ` Adhemerval Zanella
2022-06-01 13:12 ` Adhemerval Zanella
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).