Open Gaming & Graphics

FEX-Emu 2611 improves ARM64 Windows gaming with TPIDRRO_EL0 and JIT optimizations

Key Takeaway

FEX-Emu introduces ARM64 register emulation for Windows ABI compliance and significant JIT performance boosts for SHA256 and 128-bit division.

Summary

FEX-Emu has released version 2611, bringing critical updates for running x86/x64 applications on ARM64 Linux systems. A major focus of this release is improving compatibility with Windows on ARM requirements, specifically regarding the TPIDRRO_EL0 system register used to identify CPU core indices.

Beyond ABI compliance, the update includes several Just-In-Time (JIT) compiler optimizations. These improvements target specific instruction patterns to reduce the performance overhead inherent in translating x86 instructions to ARM64, particularly for cryptographic workloads and complex mathematical operations.

Technical improvements in FEX-Emu 2611

  • ARM64 ABI Compliance: Implements support for the TPIDRRO_EL0 register, allowing ARM64 Windows applications running via WINE to correctly identify the current CPU core index, which is necessary for emulating RDPID, RDTSCP, and CPUID instructions.
  • Cryptographic Optimization: Introduces a SHA256 peephole optimization that addresses the difference in instruction rounds between x86 and ARM64, resulting in a 1.9x performance increase for heavy SHA256 workloads.
  • Arithmetic Performance: Inlines 128-bit division code generation directly into the JIT, replacing a slower C handler and providing up to a 5x speedup for mandatory 128-bit division operations.
  • Instruction Set Extensions: Adds support for the x86 SERIALIZE instruction as a memory barrier and implements AVX-NE-Convert for mapping FP16/BF16 float conversions between architectures.
  • Debug and Anti-Tamper Support: Adds partial debug register emulation on wow64 under WINE for instruction breakpoints and introduces X87 FIP support to assist with certain anti-tamper mechanisms like SecuROM.

Why it matters

These updates are vital for the growth of ARM64-based Linux gaming, particularly on devices like the Raspberry Pi or ARM-based laptops. By improving ABI compliance and JIT efficiency, FEX-Emu enables more Windows games to run correctly and performantly through WINE without crashing due to missing CPU instructions.

What to do

  • Update to FEX-Emu version 2611.
  • Set the environment variable FEX_JITFEATURES=enablex87fip to enable X87 FIP support for certain anti-tamper mechanisms.

Original reference: github.com →