public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: Joey Ye <joey.ye.cc@gmail.com>
Cc: gcc-patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH, PR61219]: Fix sNaN handling in ARM float to double conversion
Date: Mon, 19 May 2014 06:48:00 -0000	[thread overview]
Message-ID: <20140519064809.GC31004@hall.aurel32.net> (raw)
In-Reply-To: <CAL0py24WDQ9GkaayCszgJb-MZi4qExZPJm2Fov7p9Ai4zNy74Q@mail.gmail.com>

On Mon, May 19, 2014 at 02:08:06PM +0800, Joey Ye wrote:
> If f2d need fix, then please fix d2f too as current implementation for
> both behave similarly.

I have done some tests with double to float conversion, and the NaN
behaviour is correct. This is due to specific code handling that in
d2f:

3:      @ chech for NAN
        mvns    r3, r2, asr #21
        bne     5f                      @ simple overflow
        orrs    r3, xl, xh, lsl #12
        do_it   ne, tt
        movne   r0, #0x7f000000
        orrne   r0, r0, #0x00c00000
        RETc(ne)                        @ return NAN

Aurelien

> On Mon, May 19, 2014 at 5:23 AM, Aurelien Jarno <aurelien@aurel32.net> wrote:
> > On ARM soft-float, the float to double conversion doesn't convert a sNaN
> > to qNaN as the IEEE Std 754 standard mandates:
> >
> > "Under default exception handling, any operation signaling an invalid
> > operation exception and for which a floating-point result is to be
> > delivered shall deliver a quiet NaN."
> >
> > Given the soft float ARM code ignores exceptions and always provides a
> > result, a float to double conversion of a signaling NaN should return a
> > quiet NaN. Fix this in extendsfdf2.
> >
> >
> > 2014-05-18  Aurelien Jarno  <aurelien@aurel32.net>
> >
> >         PR target/61219
> >         * config/arm/ieee754-df.S (extendsfdf2): Convert sNaN to qNaN.
> >
> >
> > Index: libgcc/config/arm/ieee754-df.S
> > ===================================================================
> > --- libgcc/config/arm/ieee754-df.S      (revision 210588)
> > +++ libgcc/config/arm/ieee754-df.S      (working copy)
> > @@ -473,11 +473,15 @@
> >         eorne   xh, xh, #0x38000000     @ fixup exponent otherwise.
> >         RETc(ne)                        @ and return it.
> >
> > -       teq     r2, #0                  @ if actually 0
> > -       do_it   ne, e
> > -       teqne   r3, #0xff000000         @ or INF or NAN
> > +       bics    r2, r2, #0xff000000     @ isolate mantissa
> > +       do_it   eq                      @ if 0, that is ZERO or INF,
> >         RETc(eq)                        @ we are done already.
> >
> > +       teq     r3, #0xff000000         @ check for NAN
> > +       do_it   eq, t
> > +       orreq   xh, xh, #0x00080000     @ change to quiet NAN
> > +       RETc(eq)                        @ and return it.
> > +
> >         @ value was denormalized.  We can normalize it now.
> >         do_push {r4, r5, lr}
> >         mov     r4, #0x380              @ setup corresponding exponent
> >
> > --
> > Aurelien Jarno                          GPG: 4096R/1DDD8C9B
> > aurelien@aurel32.net                 http://www.aurel32.net
> 

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

  reply	other threads:[~2014-05-19  6:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-18 21:23 Aurelien Jarno
2014-05-19  6:08 ` Joey Ye
2014-05-19  6:48   ` Aurelien Jarno [this message]
2014-06-07 10:54 ` Aurelien Jarno
2014-06-17 22:29 ` Ramana Radhakrishnan
2014-06-20 22:17   ` Aurelien Jarno
2014-06-20 22:58     ` Joseph S. Myers

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=20140519064809.GC31004@hall.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=joey.ye.cc@gmail.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.
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).