diff options
author | claziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-29 10:49:26 +0000 |
---|---|---|
committer | claziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-29 10:49:26 +0000 |
commit | 7238c72c69682df668273c33076b90cf197a88b7 (patch) | |
tree | 7dc26e0bbcfd6b12890fbfe4091d2eadaebb7c28 /libgcc | |
parent | bf8ce8ad420038aa4dde7c8262c8878f577b76fb (diff) | |
download | gcc-7238c72c69682df668273c33076b90cf197a88b7.tar.gz |
[ARC] Handle FPX NaN within optimized floating point library.
gcc/
2016-04-29 Claudiu Zissulescu <claziss@synopsys.com>
* testsuite/gcc.target/arc/ieee_eq.c: New test.
libgcc/
2016-04-29 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/ieee-754/eqdf2.S: Handle FPX NaN.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235633 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 4 | ||||
-rw-r--r-- | libgcc/config/arc/ieee-754/eqdf2.S | 15 |
2 files changed, 14 insertions, 5 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 598c1a09a61..df51a6e0d33 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,7 @@ +2016-04-29 Claudiu Zissulescu <claziss@synopsys.com> + + * config/arc/ieee-754/eqdf2.S: Handle FPX NaN. + 2016-04-28 Claudiu Zissulescu <claziss@synopsys.com> Joern Rennecke <joern.rennecke@embecosm.com> diff --git a/libgcc/config/arc/ieee-754/eqdf2.S b/libgcc/config/arc/ieee-754/eqdf2.S index bc7d88e838d..7e80ef52b2a 100644 --- a/libgcc/config/arc/ieee-754/eqdf2.S +++ b/libgcc/config/arc/ieee-754/eqdf2.S @@ -58,11 +58,16 @@ __eqdf2: well predictable (as seen from the branch predictor). */ __eqdf2: brne.d DBL0H,DBL1H,.Lhighdiff - bmsk r12,DBL0H,20 -#ifdef DPFP_COMPAT - or.f 0,DBL0L,DBL1L - bset.ne r12,r12,21 -#endif /* DPFP_COMPAT */ +#ifndef __HS__ + /* The next two instructions are required to recognize the FPX + NaN, which has a pattern like this: 0x7ff0_0000_8000_0000, as + oposite to 0x7ff8_0000_0000_0000. */ + or.f 0,DBL0L,DBL1L + mov_s r12,0x00200000 + bset.ne r12,r12,0 +#else + bmsk r12,DBL0H,20 +#endif /* __HS__ */ add1.f r12,r12,DBL0H /* set c iff NaN; also, clear z if NaN. */ j_s.d [blink] cmp.cc DBL0L,DBL1L |