9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: cinap_lenrek@felloff.net
To: 9fans@9fans.net
Subject: Re: [9fans] store NaN() to memory traps on 386 (387)
Date: Tue,  3 May 2016 03:13:39 +0200	[thread overview]
Message-ID: <099ad3269e0c5d9db72f7b3bb1711ca3@felloff.net> (raw)
In-Reply-To: <e193798e9c0ed9fdf3e9f125af2a934e@lilly.quanstro.net>

> to cinap's point, either nan -> float doesn't trap, and there is no protection
> against bad fp math, or it does trap, and one has protection against producing
> inadvertant nans.

> by the way, the same issue exists with sse.

with SSE, i can assign SNaN's to variables and test for them with isNaN(). and only
have the cpu trap when doing arithmetic on them, which i think is reasonable.

but on 387, loading/storing the SNaN causes touble before i can even test for it.

if NaN() produces a QNaN instead of a SNaN, then arithmetic will silently produce
QNaN results, and we loose the protection for SSE. This is the behaviour when
one clears FPINVAL from the FCR.

for awk, i'm forced to one of these options with the current behaviour:
- test the string before calling strtol() to make sure its proper decimal real number
- clear FPINVAL in the FCR and loose the protection and test strtol() result with isNaN()

both suck. if i'm going to have to parse the real number string myself to make
sure its not nan, then what use is strtod()? and clearing FPINVAL just so i can
test for isNaN() makes no sense. the program wasnt prepared to handle nan in the
first place.

maybe strtod() should not even parse "nan" when the FPINVAL bits are clear in
the FCR an return 0.0 (similar to strtol) instead? So we interpret the FPINVAL
bits in the FCR as "we dont want NaN's" and hence never produce them ourselfs?

not sure whats worse...

--
cinap



  reply	other threads:[~2016-05-03  1:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-30 12:40 cinap_lenrek
2016-04-30 23:47 ` cinap_lenrek
2016-05-02 10:16 ` erik quanstrom
2016-05-02 16:36   ` cinap_lenrek
2016-05-02 16:45     ` erik quanstrom
2016-05-02 19:05       ` cinap_lenrek
2016-05-02 19:17         ` erik quanstrom
2016-05-02 19:27           ` Ryan Gonzalez
2016-05-02 23:23             ` erik quanstrom
2016-05-03  1:13               ` cinap_lenrek [this message]
2016-05-02 19:49           ` cinap_lenrek

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=099ad3269e0c5d9db72f7b3bb1711ca3@felloff.net \
    --to=cinap_lenrek@felloff.net \
    --cc=9fans@9fans.net \
    /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.
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).