public inbox for glibc-bugs@sourceware.org help / color / mirror / Atom feed
From: "wbrana at gmail dot com" <sourceware-bugzilla@sourceware.org> To: glibc-bugs@sourceware.org Subject: [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions Date: Mon, 29 Apr 2013 12:32:00 -0000 [thread overview] Message-ID: <bug-14412-131-jUG7cgUbWm@http.sourceware.org/bugzilla/> (raw) In-Reply-To: <bug-14412-131@http.sourceware.org/bugzilla/> http://sourceware.org/bugzilla/show_bug.cgi?id=14412 --- Comment #28 from wbrana at gmail dot com 2013-04-29 12:32:34 UTC --- according to http://sourceware.org/bugzilla/show_bug.cgi?id=13658#c2 fast functions can be used when source operand is in certain range. Slow functions should be used only outside interval. "The FPTAN, FSIN, FCOS, and FSINCOS instructions set the C2 flag to 1 to indicate that the source operand is beyond the allowable range of ±2^63 and clear the C2 flag if the source operand is within the allowable range." So, outside the interval [-2^63,+2^63] ("allowable range"), these instructions must not be used (or they can be used, but with a fallback if the C2 flag is set to 1). But note that the glibc implementation is more accurate, even with (very probably) correct rounding, so that it is better to use it anyway. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. >From glibc-bugs-return-18506-listarch-glibc-bugs=sources.redhat.com@sourceware.org Mon Apr 29 13:06:43 2013 Return-Path: <glibc-bugs-return-18506-listarch-glibc-bugs=sources.redhat.com@sourceware.org> Delivered-To: listarch-glibc-bugs@sources.redhat.com Received: (qmail 25697 invoked by alias); 29 Apr 2013 13:06:43 -0000 Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <glibc-bugs.sourceware.org> List-Subscribe: <mailto:glibc-bugs-subscribe@sourceware.org> List-Post: <mailto:glibc-bugs@sourceware.org> List-Help: <mailto:glibc-bugs-help@sourceware.org>, <http://sourceware.org/lists.html#faqs> Sender: glibc-bugs-owner@sourceware.org Delivered-To: mailing list glibc-bugs@sourceware.org Received: (qmail 25638 invoked by uid 48); 29 Apr 2013 13:06:40 -0000 From: "siddhesh at redhat dot com" <sourceware-bugzilla@sourceware.org> To: glibc-bugs@sourceware.org Subject: [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions Date: Mon, 29 Apr 2013 13:06:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: math X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: siddhesh at redhat dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: 2.18 X-Bugzilla-Changed-Fields: Message-ID: <bug-14412-131-nxzZNBviPL@http.sourceware.org/bugzilla/> In-Reply-To: <bug-14412-131@http.sourceware.org/bugzilla/> References: <bug-14412-131@http.sourceware.org/bugzilla/> X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-SW-Source: 2013-04/txt/msg00213.txt.bz2 Content-length: 2297 http://sourceware.org/bugzilla/show_bug.cgi?id=14412 --- Comment #29 from Siddhesh Poyarekar <siddhesh at redhat dot com> 2013-04-29 13:06:40 UTC --- (In reply to comment #28) > according to http://sourceware.org/bugzilla/show_bug.cgi?id=13658#c2 > fast functions can be used when source operand is in certain range. > Slow functions should be used only outside interval. > > "The FPTAN, FSIN, FCOS, and FSINCOS instructions set the C2 flag to 1 to > indicate that the source operand is beyond the allowable range of ±2^63 and > clear the C2 flag if the source operand is within the allowable range." > > So, outside the interval [-2^63,+2^63] ("allowable range"), these instructions > must not be used (or they can be used, but with a fallback if the C2 flag is > set to 1). But note that the glibc implementation is more accurate, even with > (very probably) correct rounding, so that it is better to use it anyway. The problem is not just about range reduction. fsincos is not always accurate within the allowable range either. (In reply to comment #27) > With all that said, I still question the cause of the huge performance drop. > The only cost of the correct sin/cos versus the incorrect one should be > argument reduction, which should be a no-op if the argument is already in the > range [-pi,pi] or so and cheap even a good ways outside of that range... I considered the possibility of keeping the assembly default and then falling into the default implementation if the exception flags indicate that the result was not accurate enough, but that doesn't catch all cases. In fact, the limited internal precision of PI (66-bit mantissa) guarantees that there will be cases where fsincos thinks it has hit the target, but it hasn't. So until there's a way to flag inaccurate results reliably, I think the __sincos_finite way is the best option. There is definitely some scope to look at the implementation of __sin and __cos functions, or even figure out some clever way to get results faster in sincos than just calling __sin and __cos, but that will need more work. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. >From glibc-bugs-return-18507-listarch-glibc-bugs=sources.redhat.com@sourceware.org Mon Apr 29 13:15:07 2013 Return-Path: <glibc-bugs-return-18507-listarch-glibc-bugs=sources.redhat.com@sourceware.org> Delivered-To: listarch-glibc-bugs@sources.redhat.com Received: (qmail 1197 invoked by alias); 29 Apr 2013 13:15:06 -0000 Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <glibc-bugs.sourceware.org> List-Subscribe: <mailto:glibc-bugs-subscribe@sourceware.org> List-Post: <mailto:glibc-bugs@sourceware.org> List-Help: <mailto:glibc-bugs-help@sourceware.org>, <http://sourceware.org/lists.html#faqs> Sender: glibc-bugs-owner@sourceware.org Delivered-To: mailing list glibc-bugs@sourceware.org Received: (qmail 1103 invoked by uid 48); 29 Apr 2013 13:15:03 -0000 From: "markus at trippelsdorf dot de" <sourceware-bugzilla@sourceware.org> To: glibc-bugs@sourceware.org Subject: [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions Date: Mon, 29 Apr 2013 13:15:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: math X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: markus at trippelsdorf dot de X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: 2.18 X-Bugzilla-Changed-Fields: Message-ID: <bug-14412-131-qEuXGKJEsJ@http.sourceware.org/bugzilla/> In-Reply-To: <bug-14412-131@http.sourceware.org/bugzilla/> References: <bug-14412-131@http.sourceware.org/bugzilla/> X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 X-SW-Source: 2013-04/txt/msg00214.txt.bz2 Content-length: 1565 http://sourceware.org/bugzilla/show_bug.cgi?id\x14412 --- Comment #30 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2013-04-29 13:15:02 UTC --- (In reply to comment #25) > I've posted a patch to implement __sincos_finite: > > http://sourceware.org/ml/libc-alpha/2013-04/msg00720.html > > This should allow you to compile with -ffast-math or -ffinite-math-only to use > this fast implementation of sincos. Your patch doesn't work for me. I've re-build glibc and then re-compiled poppler with "-ffinite-math-only". But I still only see calls to __sin and __cos with "perf top". The poppler code in question can be found here: http://cgit.freedesktop.org/poppler/poppler/tree/poppler/Gfx.cc#n3112 When I just add the following file to glibc: markus@x4 glibc % cat sysdeps/x86_64/fpu/s_sincos.S #include <machine/asm.h> .text ENTRY (__sincos) movsd %xmm0, -8(%rsp) fldl -8(%rsp) fsincos fnstsw %ax testl $0x400,%eax jnz 1f fstpl (%rsi) fstpl (%rdi) retq 1: fldpi fadd %st(0) fxch %st(1) 2: fprem1 fnstsw %ax testl $0x400,%eax jnz 2b fstp %st(1) fsincos fstpl (%rsi) fstpl (%rdi) retq END (__sincos) weak_alias (__sincos,sincos) poppler gets fast again and uses __sincos. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
next prev parent reply other threads:[~2013-04-29 12:32 UTC|newest] Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-07-26 21:08 [Bug math/14412] New: Removal of sysdeps/x86_64/fpu/s_sincos.S causes pdf rendering time regression markus at trippelsdorf dot de 2012-07-26 21:09 ` [Bug math/14412] " markus at trippelsdorf dot de 2012-07-26 21:14 ` markus at trippelsdorf dot de 2012-07-27 6:44 ` aj at suse dot de 2012-07-27 7:18 ` markus at trippelsdorf dot de 2012-07-27 12:33 ` markus at trippelsdorf dot de 2012-07-28 22:15 ` bugdal at aerifal dot cx 2012-08-03 3:51 ` carlos_odonell at mentor dot com 2012-08-09 10:14 ` markus at trippelsdorf dot de 2012-08-19 9:31 ` markus at trippelsdorf dot de 2012-08-19 9:37 ` [Bug math/14412] Removal of sysdeps/x86_64/fpu/s_sincos.S causes regressions markus at trippelsdorf dot de 2012-12-03 22:13 ` davem at davemloft dot net 2012-12-04 0:00 ` carlos at systemhalted dot org 2013-04-25 21:48 ` wbrana at gmail dot com 2013-04-25 23:35 ` carlos at redhat dot com 2013-04-25 23:58 ` bugdal at aerifal dot cx 2013-04-26 0:14 ` bugdal at aerifal dot cx 2013-04-26 2:55 ` siddhesh at redhat dot com 2013-04-26 3:08 ` bugdal at aerifal dot cx 2013-04-26 3:50 ` siddhesh at redhat dot com 2013-04-26 6:29 ` markus at trippelsdorf dot de 2013-04-26 6:40 ` jakub at redhat dot com 2013-04-26 10:00 ` siddhesh at redhat dot com 2013-04-26 11:31 ` joseph at codesourcery dot com 2013-04-26 11:33 ` joseph at codesourcery dot com 2013-04-26 11:42 ` siddhesh at redhat dot com 2013-04-26 13:52 ` bugdal at aerifal dot cx 2013-04-26 13:55 ` bugdal at aerifal dot cx 2013-04-26 15:07 ` joseph at codesourcery dot com 2013-04-26 15:20 ` wbrana at gmail dot com 2013-04-29 10:29 ` siddhesh at redhat dot com 2013-04-29 10:50 ` wbrana at gmail dot com 2013-04-29 11:55 ` bugdal at aerifal dot cx 2013-04-29 12:32 ` wbrana at gmail dot com [this message] 2013-04-29 13:21 ` Ondřej Bílka 2013-04-29 13:21 ` neleai at seznam dot cz 2013-04-29 13:28 ` bugdal at aerifal dot cx 2013-04-29 14:04 ` Ondřej Bílka 2013-04-29 13:32 ` bugdal at aerifal dot cx 2013-04-29 13:36 ` wbrana at gmail dot com 2013-04-29 13:44 ` siddhesh at redhat dot com 2013-04-29 13:51 ` bugdal at aerifal dot cx 2013-04-29 14:04 ` neleai at seznam dot cz 2013-04-29 14:19 ` siddhesh at redhat dot com 2013-04-29 14:29 ` markus at trippelsdorf dot de 2013-04-29 14:48 ` bugdal at aerifal dot cx 2013-04-29 16:29 ` Ondřej Bílka 2013-04-29 16:29 ` neleai at seznam dot cz 2013-04-29 17:30 ` bugdal at aerifal dot cx 2013-04-29 20:58 ` joseph at codesourcery dot com 2013-04-30 5:41 ` siddhesh at redhat dot com 2013-04-30 21:37 ` bugdal at aerifal dot cx 2013-05-01 22:25 ` bugdal at aerifal dot cx 2013-07-16 20:08 ` nshmyrev at yandex dot ru 2013-09-07 6:55 ` carlos at redhat dot com 2014-02-06 18:31 ` jsm28 at gcc dot gnu.org 2014-06-17 18:55 ` fweimer at redhat dot com
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-14412-131-jUG7cgUbWm@http.sourceware.org/bugzilla/ \ --to=sourceware-bugzilla@sourceware.org \ --cc=glibc-bugs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).