mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-08 21:00:19 +02:00
This is taking steps to start fixing RCLSE which was started by #2700. Same situation as that PR, since #2170 when we converted {Load,Store}Context in to {Load,Store}Register we broke this pass entirely. It hasn't been doing anything for redundant GPRs and FPRs since at least November of last year. Technically it was potentially still optimizing redundant MMX accesses, but it is so broken that it doesn't matter. Instead of going all in like #2700 did, tear down the pass and start again. We are now /only/ optimizing redundant context/register loads. This fixes an issue that comes up commonly where the same register used as sources was getting loaded twice, causing redundant moves. `packsswb xmm0, xmm0` for example was generating a four instruction sequence instead of three instructions because we weren't eliminating the redundant load. Going to take reimplementing all the optimizations that this pass does in steps. This way we can track any regression in the independent steps unlike what happened in #2700. Confirmed that Proton/Sonic Mania still works after this.