arm - correctly handle denormal results during softfp subtraction
authorNicolas Pitre <nico@fluxnic.net>
Thu, 2 Aug 2018 16:50:07 +0000 (16:50 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 2 Aug 2018 16:50:07 +0000 (16:50 +0000)
2018-08-02  Nicolas Pitre <nico@fluxnic.net>

PR libgcc/86512
* config/arm/ieee754-df.S (adddf3): Don't shortcut denormal handling
when exponent goes negative. Update my email address.
* config/arm/ieee754-sf.S (addsf3): Likewise.

From-SVN: r263267

libgcc/ChangeLog
libgcc/config/arm/ieee754-df.S
libgcc/config/arm/ieee754-sf.S

index 4f8ddcef3c62c4ee786704dc6653c5f3576711b5..bfdda6e22830032d5b693031f434fdbd52994ee0 100644 (file)
@@ -1,3 +1,10 @@
+2018-08-02  Nicolas Pitre <nico@fluxnic.net>
+
+       PR libgcc/86512
+       * config/arm/ieee754-df.S: Don't shortcut denormal handling when
+       exponent goes negative. Update my email address.
+       * config/arm/ieee754-sf.S: Likewise.
+
 2018-08-01  Martin Liska  <mliska@suse.cz>
 
        * libgcov-profiler.c (__gcov_indirect_call_profiler_v2): Do not
index 7f2afb284d20154385db203327066d5542094fbe..480e33da31fd1b3f093ea66ea7f2dd54a89a5272 100644 (file)
@@ -1,7 +1,7 @@
 /* ieee754-df.S double-precision floating point support for ARM
 
    Copyright (C) 2003-2018 Free Software Foundation, Inc.
-   Contributed by Nicolas Pitre (nico@cam.org)
+   Contributed by Nicolas Pitre (nico@fluxnic.net)
 
    This file is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
@@ -238,9 +238,10 @@ LSYM(Lad_a):
        movs    ip, ip, lsl #1
        adcs    xl, xl, xl
        adc     xh, xh, xh
-       tst     xh, #0x00100000
-       sub     r4, r4, #1
-       bne     LSYM(Lad_e)
+       subs    r4, r4, #1
+       do_it   hs
+       cmphs   xh, #0x00100000
+       bhs     LSYM(Lad_e)
 
        @ No rounding necessary since ip will always be 0 at this point.
 LSYM(Lad_l):
index e8ee76e31df03eaa0e17514e82ee4aa61cc91ce8..28e0d7932810f299748739109885de3d99d9a6c8 100644 (file)
@@ -1,7 +1,7 @@
 /* ieee754-sf.S single-precision floating point support for ARM
 
    Copyright (C) 2003-2018 Free Software Foundation, Inc.
-   Contributed by Nicolas Pitre (nico@cam.org)
+   Contributed by Nicolas Pitre (nico@fluxnic.net)
 
    This file is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
@@ -168,10 +168,11 @@ LSYM(Lad_e):
 LSYM(Lad_a):
        movs    r1, r1, lsl #1
        adc     r0, r0, r0
-       tst     r0, #0x00800000
-       sub     r2, r2, #1
-       bne     LSYM(Lad_e)
-       
+       subs    r2, r2, #1
+       do_it   hs
+       cmphs   r0, #0x00800000
+       bhs     LSYM(Lad_e)
+
        @ No rounding necessary since r1 will always be 0 at this point.
 LSYM(Lad_l):