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