* [CPU] Emulate the SHA extensions when the host raises #UD The PS5 CPU supports SHA1RNDS4/SHA1NEXTE/SHA1MSG1/SHA1MSG2 and SHA256RNDS2/SHA256MSG1/SHA256MSG2, and titles use them without a CPUID check. Rosetta 2 does not translate them, so Poppy Playtime (UE4) aborted with SIGILL on sha1msg1 on Apple Silicon. Decode the faulting instruction and compute it from the saved XMM registers, like the SSE4a fallback. * [Loader] Rewrite SHA extension instructions at load time on hosts without SHA A #UD trap per SHA instruction is far too slow for titles that hash large files: Poppy Playtime took 300k traps and the stall watchdog stopped it. The red-zone patcher now replaces each SHA instruction with general-register code in its trampoline, keeping all other registers and the flags. The trap handler stays as the fallback for sites that cannot be patched. |
||
|---|---|---|
| .. | ||
| SharpEmu.Libs.Tests | ||
| SharpEmu.ShaderCompiler.Metal.Tests | ||
| SharpEmu.ShaderCompiler.Tests | ||
| SharpEmu.SourceGenerators.Tests | ||