Re : [linux-audio-dev] Float to int conversions

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re : [linux-audio-dev] Float to int conversions
From: Letz Stephane (letz_AT_rd.grame.fr)
Date: Thu Nov 01 2001 - 23:38:59 EET


>
> I'm still trying to get access to PPC. Linux on PPC should have lrint/lrintf
> so thats not a big issue. I'm much more interested in gettig access to
> MacOS.
>
>

I made some tests on a G3 with Code Warrior 5 with optimizations on (Mac OS
8.6). The lrint/lrintf is slower that the standard cast code.

Here are the result of disassembing 2 tests functions :

int test1 (float in){ return lrintf(in); } gives :

...
00000000: 7C0802A6 mflr r0
00000004: 90010008 stw r0,8(SP)
00000008: 9421FFC0 stwu SP,-64(SP)
0000000C: 48000001 bl .rinttol
00000010: 60000000 nop
00000014: 80010048 lwz r0,72(SP)
00000018: 38210040 addi SP,SP,64
0000001C: 7C0803A6 mtlr r0
00000020: 4E800020 blr
...

Is seems that lrint/lrintf are implemented in the MathLib using the rinttol
call.

int test2 (float in){ return in; } gives :

...
00000000: FC00081E fctiwz fp0,fp1
00000004: D801FFF0 stfd fp0,-16(SP)
00000008: 8061FFF4 lwz r3,-12(SP)
0000000C: 4E800020 blr
...

Directly using the fctiwz

Stephane Letz


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu Nov 01 2001 - 23:42:27 EET