FEX 2104 Released!

This is our fourth tagged release, and it comes with loads of compatibility fixes, usability and documentation improvements.

Compatibility & Bug Fixes

  • Disables RCPC on ARM64 JIT
  • Implements CPUID 0x8000’0005 for L1 cacheline information
  • Implements CPUID 0x8000’0006 for cacheline information
  • Implements MOVNTDQA
  • Restrict imm code motion around selects to matching sizes, fixes dav1d
  • Validate LOCK handling, add missing segment offsets
  • Add atomic logic for SecondaryALUOp
  • Adds support for locked NOT
  • Adds support for locked ADC and SBB
  • Adds a couple new 32bit syscalls
  • Fixes an edge case of 32bit cmpxchg <reg>, <reg>
  • Lock around FDToNameMap accesses (Fixes Geekbench 4 stability issues)
  • Flush context around OP_SYSCALLs, Syscalls might read it
  • SA_NOCLDSTOP only blocks CLD_CONTINUED/STOPPED/TRAPPED
  • Add missing break for UD2 in INTOp
  • Init on X87FNSAVE, fix FNINIT
  • Switches FEXCore over to pthreads implementation

Usability

  • Support for global application profiles
  • Thunks can be configured with json as an overlay
  • FEXConfig improvements
  • Adds support for Named RootFS folders in FEXConfig
  • Cleanup threads when they exit
  • Default to no logging
  • Allows installing of FEXThunks in our data directory

Documentation

  • New Readme.md & auto generated SourceOutline.md to help newcomers to the codebase
  • Man Pages

Internal restructuring

  • Unify all four dispatchers
  • Separate thread and state
  • Allow both ARM64 and X86_64 jits to be compiled at the same time

The detailed change log is available on Github

Written on April 2, 2021