felix86 26.09 is released! Optimizations and a bunch of bug fixes were made this month.
Read the blog post: https://felix86.com/felix86-26-09/
Compatibility list: https://felix86.com/compat/
What's Changed
- Thunks: Open versioned libX11 instead by @OFFTKP in #633
- Tools: Don't mark enter_repl as static by @OFFTKP in #634
- Recompiler: Don't insert flag usage info for passthrough instructions by @OFFTKP in #635
- Recompiler: Don't mark all flags as used on passthrough instructions by @OFFTKP in #636
- Thunks: Implement VK_KHR_fragment_shading_rate by @OFFTKP in #637
- Recompiler: Follow JMP instructions in scan_ahead_multi by @OFFTKP in #638
- Common: Add profile as config source by @OFFTKP in #639
- Common: Add SteamAppId profiles by @OFFTKP in #640
- Linux: Implement x86_64 getdents syscall on top of getdents64 by @zqb-all in #641
- Chore: Simplify get_actual_rip function by @OFFTKP in #642
- Recompiler: Don't compute SUB on CMP when not necessary by @OFFTKP in #643
- Recompiler: Improve scanAhead and shouldEmitFlag performance by @OFFTKP in #644
- Recompiler: Separate flag_access into a struct by @OFFTKP in #646
- Thunks: Fix regression in scanAhead when thunks are enabled by @OFFTKP in #647
- Recompiler: Emit stats for MangoHud's FEX integration by @OFFTKP in #648
- Recompiler: Use riscv_flush_icache instead of fence.i by @OFFTKP in #649
- Recompiler: Miscellaneous x87 fixes by @OFFTKP in #650
- Tools, Common: Improve disassembler by @OFFTKP in #651
- Recompiler: More miscellaneous x87 fixes by @OFFTKP in #652
- Recompiler: Implement word XADD by @OFFTKP in #653
- Recompiler: Optimize MOVSXD by @OFFTKP in #654
- Recompiler: Optimize common AND instructions by @OFFTKP in #655
- Recompiler: Allow unaligned vector reads if Zicclsm is present by @OFFTKP in #656
- Tools: Enable color by default on REPL by @OFFTKP in #657
- Recompiler: Optimize MOVSS and MOVSD for Zicclsm by @OFFTKP in #658
- Recompiler: Omit a MV from LEA instructions by @OFFTKP in #659
- Recompiler: Allow unaligned vector writes if Zicclsm is present by @OFFTKP in #660
- Recompiler: Save an instruction on the address cache by @OFFTKP in #661
- Linux: Fix futex_time32 without timespec by @OFFTKP in #662
- Tools: Fix REPL regression by @OFFTKP in #663
- Recompiler: Fix regression with lock and [mem], imm by @OFFTKP in #664
- Recompiler: Implement ARPL by @OFFTKP in #665
- Chore: Warn on bad log macros by @OFFTKP in #666
- Tools: Add some hot blocks to instruction counter by @OFFTKP in #667
- Common: Allow searching for symbols for libraries outside the rootfs by @OFFTKP in #668
- Recompiler: Merge movzx displacement into load by @OFFTKP in #669
- Recompiler: Save a XORI on CMOVNc by @OFFTKP in #670
- Recompiler: Don't link loop to self by @OFFTKP in #671
- Common: Add print_cpuid logging option by @OFFTKP in #672
- Chore: Minor cleanups by @OFFTKP in #674
- Recompiler: Treat IN/OUT as illegal in scanAhead by @OFFTKP in #675
- Common: Handle relative interpreter paths by @OFFTKP in #677
- Recompiler: Fix shift amount not masked in ROL/ROR by @OFFTKP in #678
- Common: Fix XSAVE/XRSTOR component handling by @OFFTKP in #679
- Recompiler: Fix order of operands in FCOMPP by @OFFTKP in #680
- Common: Minor flag fixes in signal frame and pushfq/popfq by @OFFTKP in #676
- Recompiler: Fix 80-bit FCMOVcc corrupting next register by @OFFTKP in #681
- Recompiler: Clear OF/CF in ANDN by @OFFTKP in #682
- Recompiler: Fix BZHI carry flag generation by @OFFTKP in #683
- Recompiler: Fix flag bugs in RCL and RCR by @OFFTKP in #684
- Recompiler: Don't use flags as scratch regs by @OFFTKP in #687
- Recompiler: Call flushX87 on DIV and IDIV by @OFFTKP in #685
- Recompiler: Mark MMX register as loaded when written by @OFFTKP in #692
- Recompiler: Write low half first in MULX by @OFFTKP in #691
- Recompiler: Compute CF in SHL when OF is needed by @OFFTKP in #688
- Recompiler: Zext on 32-bit ROL/ROR with 0 by @OFFTKP in #690
- Recompiler: Implement REP LODS and mark REP CMPS/SCAS as passthrough by @OFFTKP in #686
- Recompiler: Mask src in byte/word lock or by @OFFTKP in #689
- CI: Make testing CI wait on instruction counter by @OFFTKP in #693
- Recompiler: Fix XADD with base/index equal to src by @OFFTKP in #696
- Recompiler: Fix bad register group on some VGATHERQPS by @OFFTKP in #694
- Linux: Fix SIGSEGV when execve would fail by @OFFTKP in #695
- Recompiler: Implement DAS by @OFFTKP in #698
- Recompiler, Common: Implement RDTSC frequency scaling by @OFFTKP in #697
- Recompiler: Fix ADC/SBB running out of scratch space by @OFFTKP in #699
- Recompiler: Fix rare bug in MULX and CMPXCHG by @OFFTKP in #700
- Recompiler: Use operand size rather than VEX.L for choosing register by @OFFTKP in #701
- Recompiler: Don't mark MMX register as dirty on PALIGNR that is NOP by @OFFTKP in #702
- Recompiler: Fix VADDSUBPS/PD not zeroing top bits when using xmms by @OFFTKP in #703
- Linux: Fix BRK not allocating enough space by @OFFTKP in #704
- Recompiler: Optimize VOR/VAND/VXOR/VANDN by @OFFTKP in #705
- Linux: Various syscall fixes by @OFFTKP in #706
- Common: Don't use log server by default by @OFFTKP in #707
- Recompiler: Fix tag word in MMX mode by @OFFTKP in #709
- Recompiler: Check for indefinites in CVT(T)PS2PI by @OFFTKP in #710
- Linux: Set DOTNET_EnableWriteXorExecute=0 on hacky_envs by @OFFTKP in #711
- Recompiler: Optimize MOVSX by @OFFTKP in #712
- Recompiler: Optimize 32-bit AND with immediate by @OFFTKP in #713
- Recompiler: Optimize TSO emulation by @OFFTKP in #714
- Linux: Passthrough to host xdg-open for URLs by @OFFTKP in #715
- Recompiler: Fix issue with PCMPESTRx and VMPSADBW by @OFFTKP in #716
- Chore: Get rid of abort() calls of libraries by @OFFTKP in #717
- Recompiler: Fix same reg bugs in AESIMC and AVX XMM moves by @OFFTKP in #718
- Chore: Add more instructions to instruction count CI by @OFFTKP in #719
- Linux: Allow rootfs to propagate through vfork and hide protected fds in getdents by @OFFTKP in #720
- Recompiler: Avoid unnecessary mprotect calls by @OFFTKP in #721
- Linux: Fix various signal nits by @OFFTKP in #722
- Recompiler: Optimize IMUL by @OFFTKP in #723
- Tools: Make disassembler use our allocation names by @OFFTKP in #724
- Recompiler: Ensure CMPXCHG16B is aligned by @OFFTKP in #725
- Recompiler: Make FUCOMI clear OF/SF/AF by @OFFTKP in #726
- Recompiler: Optimize COMISS by @OFFTKP in #727
- Linux: Fix some ptrace bugs, handle /proc/self/auxv by @OFFTKP in #728
Full Changelog: 26.08...26.09