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

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