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
This archive was generated by hypermail 2b28 : Thu Nov 01 2001 - 23:42:27 EET