hrydgard/ppsspp — pull request #4506 by unknownbrackets (2013-11-11 07:01:43+00:00)
Title: Further attempts at continuing jit blocks (disabled)

Scaffolding:
* The armjit not detects free space when compiling (in case of long blocks), could fix things actually.
* Invalid jumps are now skipped, instead of causing crashes (hit these while predicting in some games...)
* Matches GetImm/etc. func names in x86jit.

I tried out the branch prediction approach. It didn't really give great results. I got a few extra percent in one game, and only by predicting forwards. Most games are the same with it, and are worse if I predict backwards.

Only tried it on x86. It might go a lot better on arm, not really sure. If someone wants to try it, it's mostly a matter of copying the relevant sections from the x86 code, the regcache state should be roughly the same too.

I did copy over the loop unrolling to arm, and also tried function inlining (jump continuing) on both. I didn't test heavily but didn't really see much benefit from it either. It may be that it just needs to be optimized or only follow certain branches/jumps. It does at least bring imm values all the way to syscalls often.

-[Unknown]