mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@aerifal.cx>
To: musl@lists.openwall.com
Subject: Re: Using float_t and double_t in math functions
Date: Thu, 9 May 2013 10:57:14 -0400	[thread overview]
Message-ID: <20130509145714.GL20323@brightrain.aerifal.cx> (raw)
In-Reply-To: <20130509132157.GF12689@port70.net>

On Thu, May 09, 2013 at 03:21:57PM +0200, Szabolcs Nagy wrote:
> * Rich Felker <dalias@aerifal.cx> [2013-05-08 21:43:27 -0400]:
> > As far as I can tell, in most of the affected code, keeping excess
> > precision does not hurt the accuracy of the result, and it might even
> > improve the results. Thus, nsz and I discussed (on IRC) the
> > possibility of changing intermediate variables in functions that can
> > accept excess precision from float and double to float_t and double_t.
> > This would not affect the generated code at all on machines without
> > excess precision, but on x86 (without SSE) it eliminates all the
> > costly store/load pairs. As an example (on my test machine), it
> 
> ie. it is only for i386 (without sse)
> (which is not a trendy platform nowadays)

Most distros are still using either i486 or original i686 (no SSE1,
much less SSE2) as their x86 target. Of course musl users can opt not
to (and compile musl with -mfpmath=sse -msse2) but for universal
static binaries a more baseline target may be preferable.

> but there it improves performance and
> code size a bit so it is worth doing

Do you want to do it, or do you want me to? I don't mind but you're
more familiar with the code and probably better aware of where it's
okay to change. (BTW, it's probably not safe to change arg-reduction
code, right?)

> at the same time all the STRICT_ASSIGN macros
> can be removed (already a noop) which were
> there to enforce store with the right precision
> on i386 when musl is compiled without -ffloat-store,
> but i dont think that should be supported

Agreed. I was only vaguely aware they were still around.

> btw the other ugly macro that remains is
> FORCE_EVAL to force evaluation of floating-point
> expressions for their side-effect, which should
> be eventually
> 
> #define FORCE_EVAL(expr) do{ \
> _Pragma("STDC FENV_ACCESS ON") \
> expr; \
> } while(0)
> 
> but no compiler supports this that i know of
> so now we have volatile hacks with unnecessary
> stores

I wonder if there's a way to use the result without storing it...
Probably not anything sane. Passing to a function would be more
costly, I think, and would still be a store on stack-based archs
anyway.

Rich


  reply	other threads:[~2013-05-09 14:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-09  1:43 Rich Felker
2013-05-09 13:21 ` Szabolcs Nagy
2013-05-09 14:57   ` Rich Felker [this message]
2013-05-09 19:14     ` Szabolcs Nagy
2013-05-09 16:02   ` Rich Felker

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=20130509145714.GL20323@brightrain.aerifal.cx \
    --to=dalias@aerifal.cx \
    --cc=musl@lists.openwall.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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 NNTP newsgroup(s).