mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-15 07:20:31 +02:00
Comp_Vmfvc read vfpuCtrl[] straight from the context in all four backends, while the mfvc path in Comp_Mftv flushes first, with the comment "In case we have a saved prefix" - so "vpfxs X" followed by "vmfvc sN, $128" returned the stale value in memory. The IR frontend flushes only for the three prefix registers, which is the tighter form, so vmfvc does the same there. On ARM and ARM64 the fix alone wouldn't have been observable: those two map the destination with no flags, leaving isDirty false, so the flush dropped the loaded value without storing it. x86 already passes MAP_DIRTY | MAP_NOINIT. That part is a fix of its own, but the two are inseparable in this function - a vmfvc that reads the right value and then throws it away is no better. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>