FEX 2112 Tagged!
A lot of changed things this month.
- New instructions & fixes (BZHI, MULX, RORX, SARX/SHLX/SHRX)
- steamwebhelper now works
- Linux emulation updated to 5.16, sched_getaffinity, MAP_32BIT, 32-bit DRM emulation improvements
- Several other bug fixes and optimizations
Arm64
- Reduce the chance of hanging on reentrant allocations (8ab6830f)
- Adds an inline syscall optimization (f7468703)
- COND_FGT should map to gt, not hi, as it is not FGTU (b45603d1)
- Fixes steamwebhelper burning all CPU cores!
FEXCore
- Fixes CompileService race condition on thread creation (5345f7fa)
- Centralize alignment utility functions in one header (966272ce)
- Fixes ERROR_AND_DIE (fbd14b65)
- Supports guest SIGILL (6e1ea92c)
- CPUID
- Call handler functions directly (ffee22d3)
- OpcodeDispatcher
- Remove debug message (d883b4bf)
- Implement BZHI (50c8d9ed)
- Amend return types of BitSize helpers (c63c5fb6)
- Implement MULX (498a845c)
- Resolve sign mismatches in loops (ad864e0e)
- Add helper for getting bit sizes (3a3cbf2b)
- Handle RORX (51d21d86)
- Implement BMI2 SARX/SHLX/SHRX (e37a0bbd)
- Removes usage of SignalFrame stack on JITs (d81d5e21)
- Use std::vector as the underlying container for std::stack (61ccec37)
- Partial support for RIP adjust in signal handler (77093a7f)
- Resolve unused variable warnings (a04cc4dc)
- OpcodeDecoder
- Shorten up GPR and MM base offset retrieval (59ed91c5)
- Convert enums into enum classes where applicable (d1fa8bcf)
- Add support for ADX (d3cd354c)
- Frontend
- Handle VEX RXB bits (d47182b6)
- Mark modrm function LUT as static (c6662a46)
- GDBStub
- Fixes a few hangs and crashes (e027b83a)
- Interpreter
- Build op handler table at compile-time (63f9e0b4)
- Mark F80CMP array as static constexpr (13ad5b66)
- JIT
- Eliminate redundant jump target map lookups (8ef02783)
- Ensures signals in compileservice JIT space is handled (97e3a364)
- JitSymbols
- Make use of fmt (db0740be)
- IR
- Make some interface functions accept pointers to const (8c38f936)
- Convert NodeID into a strong type (b93871ff)
- Add type alias for Node IDs (1f306d66)
- RegisterAllocationPass
- Resolve sign comparison mismatch in CalculateNodeInterference() (597e4e1d)
- Reduce usages of NodeIDs where applicable (19a06519)
Linux
- Updates syscalls to 5.16 syscalls (c4d05fb8)
- Fixes sched_getaffinity (d5bf6414)
- Fixes MAP_32BIT error case (92ae6ae2)
- Fixes sigprocmask with new and old set being the same address (7bb78912)
- Passthrough 32-bit syscalls that can be (3dc938b8)
- Emulate MAP_32BIT on mmap (081d0169)
- SignalDelegator update signal mask on return from sigsuspend (90511ddd)
- Updates 32-bit DRM emulation (a92233c7)
Thunks
- Fail loudly if thunking is enabled for a library that isn’t installed (b1b61608)
- ThunksDB
- Updates file to include local libs (e0d40dd4)
Tests
- Enables 32-bit host runner (cabb58ad)
- Minor cleanup (2a894bc1)
- Various thunk library cleanups (3730a428)
Misc
- BucketList
- Minor API touchups (baadf0b9)
- CMake
- Adds option to enable time-trace compile option (919e2bc3)
- CompileService
- Store WorkItem instances as unique_ptr (ef772c3e)
- ELFCodeLoader
- Fixes BRK allocation on some ELF loading (b327daf5)
- EnumUtils
- Remove shift operators from helper macro (977d92b7)
- General
- Migrate logging over to fmt where possible (513b02fd)
- RootFS
- Keep rootfs around while in container (16f1ad46)
- IR.json/json_ir_generator: Minor touchups to generated IR utilities (9b43f94f)
- Various packaging improvements (23e583e1)
Frontend
- Adds Socket logger and tool (6c93b6f7)
- FEXLoader
- Change 32-bit memory check error to warning (82ebdf52)
- Print memory map when 32-bit intersect happens (e6d285a7)
- Syscalls
- Move construction of syscall name map into GetSyscallName() (0560e9be)
See the 2112 Release Notes or the detailed change log in Github.
Written on December 5, 2021