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

Reply via email to