Hello everyone,

As part of developing the dynarec further, I've written a quick utility to
test the speed of various instructions. I've tested it on both the most
recent SVN of RPCemu, and VRPC-SE, and thought the results were interesting
enough to share!

The actual results are the number of centiseconds it takes to execute around
a billion (0xFF0000*64) of each instruction. A * means the relevant
instruction isn't recompiled on RPCemu yet, and drops down to an interpreted
routine.

     RPCemu   VRPC
AND    299    406
ANDS   982    329
EOR    291    404
EORS  1137    327
SUB    329    402
SUBS  1149    432
RSB    286    400
RSBS  1344*   431
ADD    289    398
ADDS  1155    431
ADC    481    477
ADCS  1375   1110
SBC    569    480
SBCS  2188*  1102
RSC    662    482
RSCS  1941*  1103
TST   1105    170
TEQ   1083    170
CMP   1169    256
CMN   1451*   257
ORR    313    398
ORRS  1202    328
MOV    304    215
MOVS  1100    246
BIC    340    439
BICS  1165    399
MVN    283    333
MVNS  1189    300

Obviously, flag-setting instructions need some work! I'm confused as to how
flag-setting instructions are faster than non-flag-setting instructions on
VRPC.

VRPC's ADCS/SBCS/RSCS implementations aren't too good are they? I'd guess
they're doing something slow like forcing the ARM carry into the x86 carry.
Either that or falling back to C.

Tom


      __________________________________________________________
Sent from Yahoo! Mail.
A Smarter Email http://uk.docs.yahoo.com/nowyoucan.html

_______________________________________________
Rpcemu mailing list
[email protected]
http://www.riscos.info/cgi-bin/mailman/listinfo/rpcemu

Reply via email to