Commit Graph

19562 Commits

Author SHA1 Message Date
Walter
09d602fd5a [SPU LLVM] Refactor SHUFB
Refactored `SHUFB` by moving the byteswap optimization prior to the target specific path. Also separated the shuffle and special index constants calculation into separate steps in order to reduce code duplication.

Added a number of TODOs as this refactor revealed some of optimizations opportunities. None of which has been added as this refactor intends to minimize new behavior.
2026-06-24 21:06:13 +03:00
Malcolm
87608865b6 SPU LLVM: Use SVE2 XAR for constant rotates 2026-06-24 09:04:24 +03:00
Christopher Hotchkiss
42242b3c43 SPU Analyzer: fix wrong divisor in Giga const-prop re-decode
The "Fill more block info" re-decode indexed result.data[(ia - lsa) / 41] instead of / 4 (its companion decode uses / 4), so it read the wrong word and corrupted the per-block reg_const / reg_val32 constant propagation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 02:00:35 +03:00
Christopher Hotchkiss
064365d6fb SPU Analyzer: prune dead in-range targets from m_targets (Giga)
Giga cleanup clears m_block_info for removed blocks but left their in-range edges in m_targets, so the register-state walk dereferenced a stale target and aborted ("Range check failed") - e.g. a brsl whose return is a stop-trap, hit in Skylanders Giants. Prune those edges at the m_targets cleanup; export out_target_list after the prune so callers see the cleaned map; keep the initiate_patterns and cond_next-walk guards as defense in depth.

Adds made-up-data regression tests (the exported-map test fails without the prune) and the rpcs3_test.vcxproj entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 02:00:35 +03:00
Walter
927e2492ef
SPU LLVM: Calculate FREST fraction LUT using vperm2dlculate FREST fraction using vperm2d for AVX512 (#18931)
The `FREST` instruction uses a scalar lookup-table loop to calculate the
mantissa. Given that it's only 32 elements, we can load it into two
512-bit vectors and treat them as the sources to the `vperm2d` shuffle
instruction. This allows it to be calculated in parallel, improving its
performance.
2026-06-22 15:27:37 +03:00
Megamouse
c7478d6dcc Use more std::string_view 2026-06-21 21:01:39 +02:00
Megamouse
ed6a2f862e Use std::string_view in rpcn code 2026-06-21 21:01:39 +02:00
Megamouse
7b5f3e6921 Fix unused midi_deleter variable warning 2026-06-21 21:01:39 +02:00
Megamouse
f95a225d63 Use std::string_view in rsx code 2026-06-21 21:01:39 +02:00
Megamouse
f8c88c3a7a Use std::string_view in cell modules 2026-06-21 21:01:39 +02:00
Antonino Di Guardo
2af7b58ce4
fix double path delimiter (#18923)
A cosmetic fix. It removes a double delimiter at the end of a path in
`games.yml` when using `VFS games` path.
2026-06-21 19:38:03 +02:00
Megamouse
efc9a1a668 NP: Use std::string_view in clans 2026-06-21 16:37:09 +02:00
Megamouse
8da8c267c6 Update pugixml to 1.16 2026-06-21 16:37:09 +02:00
Megamouse
e32d19ffac Add missing sanity check in savedata_op 2026-06-19 18:26:44 +02:00
Walter
33123bff04
[SPU] Calculate FRSQEST exponent using arithmetic (#18905)
The `FRSQEST` instruction uses a lookup-table to calculate both the
exponent and mantissa. The exponent follows a simple linear pattern and
thus can be calculated using integer arithmetic: `(exponent==0)? 0xFF :
190 - (exponent + 1) / 2`. This patch replaces the LUT with this method,
vectorizing its calculating and saving on 1kB.

The mantissa still relies on a LUT, which bottlenecks this instruction's
emulation despite the improvement.
2026-06-19 18:02:20 +03:00
Megamouse
c0598f61e7 Handle curl_easy_setopt errors in clans_client 2026-06-18 21:16:12 +02:00
Megamouse
0735c55bfd Add user agent to curl requests 2026-06-18 21:16:12 +02:00
Megamouse
5ee92d2e6c Allow to add architecture to game window title 2026-06-18 21:16:12 +02:00
Megamouse
8be3a398dc Log architecture 2026-06-18 21:16:12 +02:00
schm1dtmac
860e2a82b1 [Mac OS] Update runners to OS 15 2026-06-18 17:51:58 +02:00
Megamouse
6a15f9dc8e Qt: use readable strings for windowState and visibility in gui settings 2026-06-17 18:09:27 +02:00
Megamouse
a8559a526a tar: fix save_header regression 2026-06-17 13:13:38 +02:00
Megamouse
5758ab11f7 arm64: fix exclusion_callback type 2026-06-17 13:13:38 +02:00
Elad
c1263eeb79 sys_rsx: Fix IOMAP syscalls argument types 2026-06-17 13:25:59 +03:00
Walter
e429f8cf05 SPU LLVM + zero with saturation subtract
- Added a LLVM SPU recompiler implementation as LLVM can't take advantage of the rounding mode.
- Further optimized the method by replacing MSB check with saturation subtraction. Negative values are saturated to zero due to the float's sign bit.
2026-06-16 14:55:04 +03:00
Walter
4d38e69fd9 Make SSE2 compatible
Removed the SSE4.1 instruction to make it compatible with the baseline instruction set. Increased dependency chain by one instruction and caused constant generation to be slightly more expensive.
2026-06-16 14:55:04 +03:00
Walter
465b845bdf Avoid unused XmmGet on SSE2 path
Avoids creating a redundant `XmmGet` allocation on targets without SSE4.1, by duplicating the declaration across both target specific blocks.
2026-06-16 14:55:04 +03:00
Walter
6593caff67 [SPU ASMJIT] Add SSE4.1 CLZ method
Added a SSE4.1 vectorized CLZ method to the SPU ASMJT.
2026-06-16 14:55:04 +03:00
Megamouse
e5cdae8c5a Use std::string_view in cpu code 2026-06-16 12:07:57 +02:00
Megamouse
54b8b5399b Use std::string_view in pine_server 2026-06-16 12:07:57 +02:00
Megamouse
7a4ec42362 Use std::string_view in loader code 2026-06-16 12:07:57 +02:00
Megamouse
b8ca6d953f Use std::string_view in crypto code 2026-06-16 12:07:57 +02:00
Megamouse
5c4be5dd3b Qt: stop movies when the main window gets inactive 2026-06-16 08:50:48 +02:00
Megamouse
5e745ac661 Qt: prevent playing movies directly after a refresh 2026-06-16 08:50:48 +02:00
Megamouse
79616a376f Qt: don't play movie unless the parent window is active 2026-06-16 08:50:48 +02:00
Megamouse
fbe9ad0f45 Use more fmt::split_sv 2026-06-16 01:28:35 +02:00
Megamouse
a4649475b6 Use opengl renderer in game window title 2026-06-15 16:15:04 +02:00
kd-11
c38e8229ed gl: Finalize the merge of bind_texture_env and bind_interpreter_env 2026-06-15 02:31:47 +03:00
kd-11
00c57be1ed gl: Fix linux build 2026-06-15 02:31:47 +03:00
kd-11
ff68a1ea09 gl: Do not use SSBOs on devices that do not support the extension 2026-06-15 02:31:47 +03:00
kd-11
048b1c3f05 gl/interpreter: Do not emit bindless texture usage unless the textures are used 2026-06-15 02:31:47 +03:00
kd-11
06c8a87534 gl: Drop use of the retired glNamedBufferStorageEXT function
- The DSA_EXT fallback is now GLES-only.
- We introduce a wrapper to act as a fallback for older GPUs - NamedBufferStorageEX.
2026-06-15 02:31:47 +03:00
Megamouse
41a7cd29f8 Use std::string_view in input code 2026-06-14 17:41:33 +02:00
Megamouse
5bc128e085 Use std::string_view in midi handlers 2026-06-14 17:41:33 +02:00
Megamouse
74f3349b19 Use std::string_view in overlays 2026-06-14 17:41:33 +02:00
Jakub Marcowski
0fda2dd60f Optimise PNGs across the repo 2026-06-14 16:05:41 +02:00
Megamouse
4f321eb319 Do not throw on hex_to_bytes error in iso get_key
Just treat it as a regular key processing error
2026-06-14 12:06:54 +02:00
Megamouse
4fed5e7b88 Fix iso integrity log message 2026-06-14 09:04:03 +02:00
Megamouse
f1a1f5616c Fix VS project 2026-06-14 09:04:03 +02:00
Megamouse
9373461d09 patch_manager: tiny optimizations 2026-06-14 09:04:03 +02:00