2009/6/19 Michael Buesch <m...@bu3sch.de>:
> On Friday 19 June 2009 18:20:53 Florian Fainelli wrote:
>> Le Tuesday 09 June 2009 16:00:47 Michael Buesch, vous avez écrit :
>> > On Monday 08 June 2009 21:35:05 matthieu castet wrote:
>> > > Michael Buesch wrote:
>> > > > On Sunday 07 June 2009 11:28:50 matthieu castet wrote:
>> > > >> Hi,
>> > > >>
>> > > >> I wonder with openwrt for bcm47xx is not build with "-msoft-float".
>> > > >> The cpu doesn't have fpu and the current floating code get emulated by
>> > > >> the kernel emulator instead of using the gcc emulation support (that
>> > > >> is cheaper because there is no kernel trap).
>> > > >
>> > > > Well, I guess on a typical bcm47xx setup there's hardly any application
>> > > > that uses floating point math.
>> > >
>> > > note that dropbear seems to use some, but that not critical.
>> > >
>> > > > Does -msoft-float increase the binary/image size? If so, I'd
>> > > > vote for _not_ adding -msoft-float. If it doesn't make a size
>> > > > difference, we should probably add it.
>> > >
>> > > That shouldn't increase size of application that don't use float.
>> > > I did a quick test with dropbear that contain very few float.
>> > > Here are the results (sfloat means -msoft-float, sgcc mean
>> > > -shared-libgcc)
>> > >
>> > >
>> > > $size /tmp/dropbear*
>> > >     text    data     bss     dec     hex filename
>> > >   226924    4252    1744  232920   38dd8 /tmp/dropbear
>> > >   234719    4328    1744  240791   3ac97 /tmp/dropbear_sfloat
>> > >   220781    4192    1744  226717   3759d /tmp/dropbear_sfloat_sgcc
>> > >   219956    4152    1744  225852   3723c /tmp/dropbear_sgcc
>> > >
>> > > As you can see with a static libgcc the size of the softfloat binary
>> > > increase (8k) because all float emulation code is duplicated in the
>> > > binary. With a shared libgcc the softfloat binary is smaller, the
>> > > increase size is less than 1k.
>> > >
>> > > I don't know the impact for whole binary. I should try to build a
>> > > typical bcm47xx setup and see the impact.
>> >
>> > Ok. It still smells like we're trying to solve a problem that does not
>> > exist. Is the performance of any app increased in real life?
>>
>> We can still allow soft-float to be used in the toolchain, and keep the
>> in-kernel FPU emulator for compatibility, but then we will loose some space.
>
> Yeah well. That's my question.
> Do we actually gain performance or do we only loose some space?
>
> If we do _not_ gain performance, it certainly is not a good idea to waste 
> space.

I would be very surprised if we wouldn't. Every kernel emulated
floating point operation results in an exception and the appropriate
handling (fpu emulation is ugly), while soft-float should stay
completely in user space.

Also, the mips fpu emulator itself suggests that.
Quoting linux/arch/mips/math-emu/cp1emu.c:
> * Note if you know that you won't have an fpu, then you'll get much
> * better performance by compiling with -msoft-float!

To get some numbers: Perhaps could somebody test with 'sample' from
libmpcdec the difference in speed between in-kernel emulation and
soft-float? https://dev.openwrt.org/ticket/4715 suggests that the
library depends heavily on floating point when not using fixed point
math.

Regards,
Jonas Gorski
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to