Skip to content

Releases: FEX-Emu/FEX

FEX-2104

06 Apr 06:10
Compare
Choose a tag to compare

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

FEX-2103

03 Mar 11:19
3978097
Compare
Choose a tag to compare

Compatibility

  • Support for unaligned atomic memory ops
  • Thread local mman cache invalidation
  • glib 2.32 support (cpuid fixes, faccessat2)
  • cmpxchg flag fixes
  • fixed cvtt* ops to actually truncate, both for x87 and sse
  • Implemented BTC, BTR and BTS atomic variants
  • Workaround crashes around exit_group for graceful exit
  • Fixed SAR8 & SAR16 sign extension
  • Added support for x87 rounding modes
  • Added support for x87 precision modes
  • Temporary fix for x87's frem
  • Fixed select system calls to update the descriptors
  • Fixed handling of invalid ops when multiblock is enabled
  • Fixed an edge case bug in CreateElementPair
  • Fixed BRK handling
  • Fixed /proc/cpuinfo topology
  • Fixed compilation of superblocks with more than 256 spills
  • Fixed a bug in in the MUL -> SHL optimization

Performance

  • Added ir-cache that halves loading times when enabled (--aotir-capture && --aotir-load)
  • x87 ops no longer force interpreter for the entire superblock

Usability

  • uname now returns the host name
  • Added checks for python in the CMake files

Misc

  • ThunkLibs now generate asm wrappers, so they can be compiled with older GCCs
  • Asserts on unsupported atomic ops
  • Removed erratic asserts in RA

FEX-2102

08 Feb 13:24
0aaed41
Compare
Choose a tag to compare

Compatibility

  • Unaligned cmpxchg & cmpxchg8b on ARMv8.1+
  • Mutliblock now gracefully handles unsupported / invalid instructions. This makes it safe to always enable multi block
  • Several fixes for 32-bit binaries: branch handling, signal return, memory allocation, ioctl32 for x86-64 host
  • Improved BRK handling

Perfomance

  • Much reduced stuttering during JIT compilation. The JIT optimizer is now over 3x as fast.
  • Per-thread IR Caching with cached RA, for faster recovery from code cache resets

Usability

  • Defaults now to jit, multiblock, 5000 instructions.
  • CPUID returns fex version

Misc

  • Cleaned up IR printing, extended asm tests to test IR dumping & IR printing
  • Integrated gcc target tests to our CI
  • Removed many warnings

The detailed change log is available here