What's Changed
- AVX and AVX2 implemented, along with BMI1, BMI2, ADX, FMA, F16C and RDANDR extension!
- Introduced BOX64_AVX env. var. to enable/disable AVX extension:
=> BOX64_AVX=1 enable AVX, BMI1, F16C and VAES extension
=> BOX64_AVX=2 also enable AVX2, BMI2, FMA, ADX,VPCLMULQDQ and RDRAND - Dynarec: Implemented most AVX/AVX2 and friends in ARM64 Dynarec (using only NEON, so available on all ARM64 CPU)
=> ARM64 Dynarec build have all AVX/AVX2 extensions enabled by default - Improved CPUID opcodes, adding a few leaf, fixing same. Returnning an Haswell type of CPU now (was Pentium IV before)
- Dynarec: Small optim in the emit_pf helper, on all 3 backends
- Dynarec: ARM64 some fixes to a few opcodes
- Dynarec: LA64 many new opcodes added, and fixes.
- Dynarec: RV64 some new opcodes added, many fixes.
- Dynarec: RV64 Adding some infrastructure to use RVV (if available) for SIMD emulation.
- Dynarec: Many small changes and fixes around handling of x87, registers and internal jump.
- WRAPPING: Added a workaround on SDL_GetThreadID to fix a race condition that was happening mostly on LA64 and broke many SDL games
- WRAPPING: More libs and functions wrapped. Some wrapping fixes too (including a nasty error on some rare libGL functions)
- WRAPPING: Wayland is now supported. Wine-wayland at least works now
- Dynarec: LA64 improved LOCK CMPXCHG handling, and better 16Byte LOCK handling too (fixes many Unity3D games)
- Dynarec: RV64 improved LOCK CMPXCHG handling
- COSIM: Many fixes and improvment, to make BOX64_DYNAREC_TEST more usable
- Detect when a Wine program use UnityPlayer.dll to atumaticaly use BOX64_DYNAREC_STRONGMEM=1 (unless it's already set), so more games just work
- ElfLoader: Added a new type of relocation
Contributions
- [DYNAREC] Simplified emit_pf helper by @ksco in #1518
- [LA64_DYNAREC] Fixed LOCK XCHG byte opcode fallback path by @ksco in #1519
- [LA64_DYNAREC] Fixed some non-lbt flags comutation issues by @ksco in #1520
- [LA64_DYNAREC] Fixed more issues here and there by @ksco in #1521
- Wrapped libpsl5 by @zohanzephyr in #1523
- [LA64_DYNAREC] Added more opcodes by @ksco in #1525
- [RV64_DYNAREC] Fixed LOCK XCHG byte opcode by @ksco in #1526
- [LA64_DYNAREC] Added CMPXCHG8B and CMPXCHG16B opcodes by @ksco in #1527
- [LA64_DYNAREC] Added more opcodes and some fixes too by @ksco in #1528
- Redirect pthread_yield to sched_yield by @ksco in #1529
- Workaround on a race condition on SDL_GetThreadID by @ksco in #1530
- Fix unclosed item list by @Coekjan in #1532
- Fix typo on box64 config file by @Coekjan in #1533
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1535
- Added more MMX opcodes and some optimizations too by @xctan in #1537
- Wrapped libssh2 by @zohanzephyr in #1538
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1539
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1542
- [LA64_DYNAREC] Fixed 0F C2 CMPPS opcode by @ksco in #1543
- [RV64_DYNAREC] Fixed LOCK CMPXCHG unaligned version by @ksco in #1544
- [LA64_DYNAREC] Added LOCK CMPXCHG unaligned version by @ksco in #1545
- Detects extensions even if dynarec is disabled at runtime by @ksco in #1546
- [INTERP] Rework on the 16b emulation for LA64 by @ksco in #1547
- [LA64_DYNAREC] Added more opcodes and fixed ADC opcode by @ksco in #1548
- [LA64_DYNAREC] Added more opcodes by @ksco in #1549
- Try to fix mmap64 already defined error in custommem.c by @rtissera in #1552
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1557
- [LA64_DYNAREC] Fixed emit_or16 by @ksco in #1559
- [LA64_DYNAREC] Added more opcodes by @ksco in #1558
- [LA64_DYNAREC] Fixed LOCK DEC opcode by @ksco in #1560
- Wrapped libp11-kit by @zohanzephyr in #1562
- Wrapped libtasn1-6 by @zohanzephyr in #1563
- [RV64_DYNAREC] Fixed some opcodes caught by cosim by @xctan in #1561
- Wrapped libnettle8 by @zohanzephyr in #1567
- [RV64_DYNAREC] Fixed sign extension of 8-bit immediate in 66 opcodes by @xctan in #1568
- Update README.md by @Pro42good in #1572
- Update README.md by @Pro42good in #1573
- Wrapped libunistring2 by @zohanzephyr in #1577
- Wrapped libhogweed6 by @zohanzephyr in #1579
- Added more wrapped function to libunistring2 by @zohanzephyr in #1582
- Fixed some vulkan wrapper functions by @ksco in #1585
- [DYNAREC_RV64] Fixed 16bit LOCK ADD issue by @ksco in #1584
- [LA64_DYNAREC] Added more opcodes by @ksco in #1590
- Fixed some symbols not found error for libc and libresolv wrapping by @ksco in #1591
- Added more wrapped functions by @zohanzephyr in #1593
- [RV64_DYNAREC] Fixed and refined F0 81,83 LOCK prefix opcodes by @ksco in #1595
- [LA64_DYNAREC] Added more opcodes by @ksco in #1597
- [RV64_DYNAREC] Improved 0F AE opcodes by @ksco in #1596
- Added more wrapped functions to gmp and idn2 by @zohanzephyr in #1598
- [RV64_DYNAREC] Fixed potential issue of jump_to_next by @ksco in #1600
- Update arm64_immenc.c by @salt431 in #1602
- switch to maintained Pi-Apps-Coders apt repo by @theofficialgman in #1605
- Add missing wrappings for winewayland.so by @strobo5 in #1599
- [RV64_DYNAREC] Added unaligned support for F0 /5 LOCK SUB opcode by @ksco in #1607
- Wrapped pthread_cond_signal with aligned cond like others by @ksco in #1608
- [RCFILE] Added Goat Simulator profile by @ksco in #1609
- [RV64_DYNAREC] Fixed regression on D9 E5 FXAM opcode by @ksco in #1616
- Compile Dynarec With ARMv8-A ASM Flags without Hardware Profile on Android Builds Too by @KreitinnSoftware in #1617
- small fix for ROR and ROL by @liuli0217 in #1618
- [RV64_DYNAREC] Detect vector extension by @ksco in #1619
- [RV64_DYNAREC] Added vector instructions emitter by @ksco in #1621
- Wrapped more functions by @ksco in #1624
- Wrapped libsqlite3 by @ksco in #1625
- Handle
.relr.dyn
section by @Coekjan in #1626 - Add missing func declaration:
get_first_jump_addr
by @Coekjan in #1627 - Updated box64.box64rc by @Pro42good in #1630
- [RV64_DYNAREC] Added DF default /4 opcode by @zohanzephyr in #1631
- [RV64_DYNAREC] modify DF default /4 opcode by @zohanzephyr in #1633
- [RV64_DYNAREC] Added preliminary RVV infra and PXOR opcode for demonstration by @ksco in #1632
- [LA64_DYNAREC] Fixed F2 0F 70 PSHUFLW opcode by @ksco in #1634
- Wrap some functions for libc by @Coekjan in #1635
- Impl
sys_getpgrp
&sys_getpgid
by @Coekjan in #1637 - [DYNAREC] Fixed IMUL sign extension issue by @ksco in #1639
- [VULKAN] Add Wrapped VK_KHR_android_surface by @KreitinnSoftware in #1643
- Should not follow symlinks on
argv[0]
path resolution by @Coekjan in #1644 - [INTERPRETER] Added 64 66 8D opcode and fix 66 8D opcode by @factfinding in #1648
- Set last_ip to an unclean state at the end of CALL by @ksco in #1650
- Mask
rs2
when usingbext
instruction ifrex.w
is not set by @Coekjan in #1653 - [LA64_DYNAREC] Added more opcodes by @ksco in #1654
- [LA64_DYNAREC] Added more opcodes by @ksco in #1656
- [WRAPPED] Added NSS_Init by @rajdakin in #1657
- [LA64_DYNAREC] Fixed ADC/SBC usage by @ksco in #1658
- Fixes by @rajdakin in #1659
New Contributors
- @Coekjan made their first contribution in #1532
- @rtissera made their first contribution in #1552
- @Pro42good made their first contribution in #1572
- @salt431 made their first contribution in #1602
- @strobo5 made their first contribution in #1599
Full Changelog: v0.2.8...v0.3.0