Hello,
Recently I looked at the floating point performance of one of our
applications and decided to give the ieeelib software floating point
implementation from torbjorn a try. I integrated ieeelib [1] together
with the patches [2] and [3] found on the list into an gcc-3.4.6
toolchain for an m68k cpu32 target. The performance increased for
floating point in about 25% percent and basic functionality looks okay
(for example multiply and add tested in a debugger).
In the next step I tried to use the newlib library which includes a
small libc and libm implementation and tried to use some math functions
like pow, powf, ... All of them give wrong results. If I change back to
the fp-bit implementation things work okay. I already posted this issue
on the newlib list with the message attached to this mail.
[1] ieeelib: http://gcc.gnu.org/ml/gcc/1999-07n/msg00553.html
[2] fix float comparison problem:
http://gcc.gnu.org/ml/gcc/2003-06/msg02495.html
[3] updates for new gcc:
http://gcc.gnu.org/ml/gcc/2005-11/msg01373.html
Are there any known issues with ieeelib and recent gcc compilers? Is
anyone using this combination and if yes on what target platforms? What
is the recommend way to debug this problem?
I also found on the list that Joseph S. Myers is working on
optimizations for software floating point but recent developments don't
show support for 68k targets (see
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00689.html). Is anyone
working on this patches for 68k platforms?
Regards,
Christian Walter
-------- Original Message --------
Subject: Re: [newlib] libm with ieeelib.c from torbjorn
Date: Tue, 18 Apr 2006 13:53:19 -0400
From: Jeff Johnston <[EMAIL PROTECTED]>
To: Christian Walter <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED]
References: <[EMAIL PROTECTED]>
Christian Walter wrote:
Hello,
I am currently using newlib 1.14 with gcc-3.4.6 on an m68k-elf target
with code compiled for mcpu32. I tried to integrate the ieeelib patches
from torbjorn which give me a speedup of about 25% in a simple test
using some multiply and divide operations.
The basic results look okay and the results from the floating point
executions are correct when using only operations like *,/,+,-,... If I
use the newlib functions from libm targeted for my cpu I get wrong
results. For example with pow, powf, ... If I switch back to the
floating point implementation fp-bit from gcc the functions work as
expected. Are there any more dependencies except beeing IEEE compliant?
The patch I used is based on the initial message from Torbjorn Granlund
(http://gcc.gnu.org/ml/gcc/1999-07n/msg00553.html) with two patches
applied from [1] and [2].
[1] fix float comparision problem:
http://gcc.gnu.org/ml/gcc/2003-06/msg02495.html
[2] updates for new gcc:
http://gcc.gnu.org/ml/gcc/2005-11/msg01373.html
I would really be grateful for any hints to point me into the right
direction. Or should I better redirect my question on the gcc list?
Regards,
Christian Walter
--
I would suggest the gcc list would be the best place to start this. It
appears likely that the patch you have applied has some bugs that are
exposed by the libm code. An example of one such bug needs to be traced
through the pow/powf functions to see where it goes wrong.
-- Jeff J.
--
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\ \\ \
Christian Walter Bakk. techn.\ Friends don't let friends drink and su(1)
email: [EMAIL PROTECTED] \ -- Kevin Harris