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