Current SH4 -> ARMv7 jit has several limitations and can be much improved. It is the typical armv7 jit from the nullDCe/reicast lineage.
- No constant propagation
- No constant folding of page locked memory reads
- No block dependency graph for selective invalidation / graceful page unlocking
- No multi block support
- No read/write pointer merging
- No read/write pointer ofsetting
- Bad djump/T bit handling
- No static register allocation (can only be done for fprs, experimental impl in https://github.com/skmp/minicast/tree/static-fpr-alloc but it didn't help)
- Semi-broken SQ write optimization path (aka "Unstable SH4 Optimizations"
- No block relocation metadata/support
- No block precompilation
These and many more could be quickly iterated on now with Fable I think. Maybe it's time we move on from the 2009-era design.
Current SH4 -> ARMv7 jit has several limitations and can be much improved. It is the typical armv7 jit from the nullDCe/reicast lineage.
These and many more could be quickly iterated on now with Fable I think. Maybe it's time we move on from the 2009-era design.