Page 1 of 2

16.16 multiplies and __int64

PostPosted: Feb 9, 2005 @ 5:10am
by jmX

PostPosted: Feb 9, 2005 @ 6:57am
by refractor
Both the XScale and StrongARM have both signed and unsigned native 64-bit multiplies (i.e. two 32-bit operands and a 64-bit result).

I never actually looked at GPP much, but if it's calling it a function then that's why it's slower.

PostPosted: Feb 9, 2005 @ 7:19am
by jmX

PostPosted: Feb 9, 2005 @ 4:30pm
by Structure

PostPosted: Feb 10, 2005 @ 2:00am
by Tala

PostPosted: Feb 10, 2005 @ 2:25am
by Kzinti

PostPosted: Feb 10, 2005 @ 5:09am
by Dan East

PostPosted: Feb 10, 2005 @ 7:42am
by jmX

PostPosted: Feb 10, 2005 @ 8:13am
by Dan East

PostPosted: Feb 10, 2005 @ 10:00am
by Kzinti

PostPosted: Feb 10, 2005 @ 10:45am
by jmX

PostPosted: Feb 10, 2005 @ 3:06pm
by Dan East

PostPosted: Feb 10, 2005 @ 5:12pm
by Kzinti

PostPosted: Feb 10, 2005 @ 11:12pm
by jmX
The reason I wrote them as macros first was to make sure they were inlining. I also wrote everything as inline functions and I have an ifdef to swap back and forth between the two so that I can verify at any point in time the compiler is doing as it should (since I'll be using a few compilers on this code).

If one compiler ends up not acting like it should I can always set it up to use the macro versions rather than the inline function versions.

My fixedpoint test function that tests to make sure all the code works also times it so its easy to make sure the performance stays the same (and at least with eVC, the timer seems to be nearly exactly the same between the two versions, give or take a small margin of error).

Ive not tried it with GCC yet, that'll be next week when I try and move all this code over to the phone platform.

PostPosted: Feb 11, 2005 @ 12:18am
by Andy
see: __forceinline