hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.77k stars 2.12k forks source link

IR: Add some interpreter-only IR instructions for faster interpretation #19262

Closed hrydgard closed 3 weeks ago

hrydgard commented 3 weeks ago

Mainly just experimenting so far. There are some better wins to be had, but these are easy. These Opt* instructions will only be generated in the very last pass, and only for the IR interpreter - the IR Jits can do similar things themselves when generating native code and we don't want to have them handle more instructions.

part of #19143

Additionally, moves Downcount to the start of each block, saving us from one switch-dispatch per block execution.

Also adds a new optimization pass to take out some unnecessary loads after stores, seen in some games (likely some bad compiler..).

Overall, this seems to be a 5-7% speed boost. Possibly mostly due to the Downcount change...