It really blew my mind when "Letz Stephane" <[EMAIL PROTECTED]> said:

> 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.

Hmm, thats very interesting. Maybe we can take this off line and work on
a solution. Interested?

> 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.

On linux, this is an inline function while on Mac its a function call. Maybe we can
do better. I am far from beting a PPC assembler expert (in fact I've never looked
at it) but I understand that PPC has at least two float to int conversion functions;
one for truncation and one for rounding. Is that correct?

If this is the case, then maybe we can use and inline function with assembler in
it.

Erik
-- 
+-----------------------------------------------------------+
  Erik de Castro Lopo  [EMAIL PROTECTED] (Yes it's valid)
+-----------------------------------------------------------+
"It is grossly irresponsible to connect a Windows machine directly to 
the net.  ;-)"  -- John Wiltshire on the Sydney Linux User Group mailing list

Reply via email to