[Bug target/29845] sh floating point emulation is inefficient
amylaar at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Thu Feb 1 03:42:00 GMT 2007
------- Comment #7 from amylaar at gcc dot gnu dot org 2007-02-01 03:41 -------
(In reply to comment #4)
> Hereattached a patch to fix a few problems:
>
> 1) Rounding to nearest must be infinity if the "infinitely precise result has a
> magniture at least 2 exp Emax (2-2exp-p)" (ansi 754/1985 sect 4.1). The
> implementation for addsf3 and adddf3 returned a NaN.
Not always a NaN, but it's a bug regardless. Good catch.
However, this:
LOCAL(inf):
+ mov #0,DBLRL
negatively impacts sh3 MA unit scheduling.
It might be an idea to align LOCAL(pos_difference_0) for sh3.
- tst r7,r0
+ tst r7,r0
You have to be careful with the whitespace.
> 2) Infinity in divsf3.S was not set (case of 1.0/0.0).
> * config/sh/IEEE-754/m3/divsf3.S: Intialize xff000000 label.
>
This was supposed to be:
LOCAL(m1): .word -1
.balign 4
LOCAL(xff000000):
#ifdef __LITTLE_ENDIAN__
.word 0
LOCAL(xff00): .word 0xff00
#else
LOCAL(xff00): .word 0xff00
.word 0
#endif
saving four bytes over using unshared constants.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29845
More information about the Gcc-bugs
mailing list