A Nintendo 3DS Emulator
Go to file
Wunk 52f06f757f
shader_jit: Fix/optimize conditional evaluation (#234)
* shader_jit: Add conditional unit-tests

Tests all permutations of X, Y, AND, OR with each possible input value.

* video_core: Fix shader-interpreter conditional-code initialization

Rather than reserving the incoming state of the conditional codes, the
shader-interpreter was setting them both to false. In pretty much all
cases, the initial state of a shaderunit can be zero-initialized
statically. Just running the interpreter shouldn't necessarily reset the
conditional codes though.  The JIT loads incoming conditional codes
while the shader-interpreter resets them to false. This makes the
interpreter match the behavior of the shader-jit.

* shader_jit_a64: Fix/optimize conditional evaluation

Fix some of the regressions introduced by the previous optimization.
EOR does not support a constant of `0` in its immediate. In these cases
the COND{0,1} registers can be utilized immediately.

* shader_jit_x64: Fix conditional evaluation extended-bit hazard

The unit test seems to have identified a bug in the x64 jit too. The x64
jit was doing 32-bit comparisons despite the condition flags being 8-bit
values and is sensitive to garbage being in the upper 24 bits of the
register. This is fixed by using the proper 8-bit register types rather
than the 32-bit ones(`eax,`ebx` -> `al`, `bl`).

* shader_jit_x64: Zero-extend conditional-code bytes

`mov` was doing a partial update of bits within the register, allowing
garbage to be introduced in the upper bits of the register.
2024-08-20 10:19:04 +02:00
.ci bundle qt wayland into appimage by rtiangha (#212) 2024-07-25 13:42:19 +02:00
.github Remove dependencies to old docker containers (#21) 2024-03-06 18:38:51 +01:00
CMakeModules build: Improve support for Windows cross-compilation. (#7389) 2024-02-05 10:09:50 -08:00
dist citra_qt: Restore Web Tab (#103) 2024-05-08 11:30:57 +02:00
externals Update dynarmic to the latest version. (#170) 2024-07-07 15:10:35 +02:00
hooks hook: remove clang-format check 2017-02-17 13:52:23 +02:00
src shader_jit: Fix/optimize conditional evaluation (#234) 2024-08-20 10:19:04 +02:00
tools tools: Add reset submodules script (#7465) 2024-03-03 13:39:55 +02:00
.gitattributes Meta: Add gitattributes file 2018-09-22 14:59:15 -06:00
.gitignore Add Kdevelop files to .gitignore (#6951) 2023-09-07 11:52:40 -07:00
.gitmodules Update .gitmodules 2024-03-05 09:43:31 +01:00
CMakeLists.txt build: Improve support for Windows cross-compilation. (#7389) 2024-02-05 10:09:50 -08:00
CONTRIBUTING.md CONTRIBUTING.md: migrate to the wiki 2018-11-08 00:15:55 -05:00
Doxyfile Remove every trailing whitespace from the project (but externals). 2015-05-29 21:59:29 +01:00
license.txt Replace non-commercial icons with free icons from icons8 (#5093) 2020-03-26 13:40:03 -05:00
README.md Update README.md 2024-03-05 12:39:15 +01:00