Commit Graph

2788 Commits

Author SHA1 Message Date
JosJuice
c5d9514cd9 Interpreter: Fix rounding edge case in frsp
Fixes the Dolphin bug mentioned in
https://github.com/dolphin-emu/hwtests/issues/45.

Because this doesn't fix any observed behavior in games (no, 1080°
Avalanche isn't affected), I haven't implemented this in the JITs,
so as to not cause unnecessary performance degradations.
2022-08-06 18:54:19 +02:00
Mai
27669fc7c8
Merge pull request #10828 from JosJuice/jitarm64-32-bit-exception
JitArm64: Pass 32-bit temp GPR to WriteConditionalExceptionExit
2022-08-03 14:36:19 -04:00
Mai
f93b04dc94
Merge pull request #10935 from Pokechu22/icache-dont-save-lookup-table
PPCCache: Stop storing lookup table in savestates
2022-08-03 14:14:39 -04:00
Minty-Meeo
347dd03c3f Remove Vestigial Preprocessor Block in Jit64/Jit.cpp
"Common/GekkoDisassembler.h" became used by Release builds with commit 77e9aa48bc, but this got left in by mistake.
2022-08-03 12:30:20 -05:00
Pokechu22
134397754e PPCCache: Stop storing lookup table in savestates
These lookup tables total 4 megabytes, and contain data that's entirely redundant to the actual cache state (as part of an optimization, though I'm not sure whether the optimization actually is useful). This change instead recomputes these lookup tables when loading the state (which involves filling the lookup table with a marker (0xff), and then setting the 128 * 8 valid entries (1 kilobyte)).
2022-08-01 16:36:59 -07:00
Tilka
fb45ed3981
Merge pull request #10883 from Pokechu22/pi-fifo-reset-gp-fifo
ProcessorInterface: Reset both GPFifo and Fifo on PI_FIFO_RESET
2022-07-31 17:06:37 +02:00
Pokechu22
1f17a3bb1e PPCSymbolDB: Fix getting symbol for the last function 2022-07-29 18:41:11 -07:00
Admiral H. Curtiss
6b419c7ca3
Merge pull request #10876 from shuffle2/cpudetect
CPUDetect: improve win/arm64 support
2022-07-26 12:52:50 +02:00
Shawn Hoffman
76b4318b88 CPUDetect: improve win/arm64 support
read brand_string on macos/arm64
remove unused flags
report family/model info instead of vendor name
2022-07-25 21:21:11 -07:00
Shawn Hoffman
f92541fbd9 StripSpaces: only strip spaces
StripWhitespace maintains old behavior
2022-07-25 18:40:12 -07:00
Pokechu22
97412553f9 Add a more detailed comment about SPR_WPAR's BNE bit 2022-07-22 22:22:34 -07:00
Pokechu22
c06f203e98 MMU: Clarify masking on gather pipe address 2022-07-22 22:22:34 -07:00
Pokechu22
1c833ddc3c Create constant for GPFifo physical address 2022-07-22 22:22:33 -07:00
Pokechu22
76fd0479b8 JitAsm: Remove old commented-out code
I'm not sure what the XMM0 check was supposed to be, but the 0xCC008000 one is for the fifo and is handled elsewhere now (look for `optimizeGatherPipe`).
2022-07-20 16:38:54 -07:00
JosJuice
0ebc510e6f JitArm64: Pass 32-bit temp GPR to WriteConditionalExceptionExit
If a 64-bit register is passed to WriteConditionalExceptionExit,
the LDR instruction in it will read too much data. This seems
to be harmless right now, but causes problem in one of my PRs.
2022-07-09 21:19:25 +02:00
JosJuice
6f40981ac0 JitArm64: Fix GPR unlocking in psq_stXX
This is what happens when I copypaste things a bit too quickly
2022-07-09 20:10:00 +02:00
JMC47
59e8aacf42
Merge pull request #10745 from JosJuice/softmmu
JitArm64: Implement "soft MMU"
2022-07-08 15:55:49 -04:00
Minty-Meeo
69e32dea52 Resolve GCC Warnings 2022-06-30 15:26:48 -05:00
JosJuice
62ec19c1ba JitArm64: Remove redundant line in the EmitBackpatchRoutine comment
All stores clobber X0, so that stores clobber X0 when emitting_routine
is true is nothing special.
2022-06-12 11:03:38 +02:00
JosJuice
75e897c40e JitArm64: Fix a minor mistake in the EmitBackpatchRoutine comment
X30 is used in fewer situations than the comment was claiming.

(I think that when I wrote the comment I was counting the use of X30
as a temp variable in the slowmem code as clobbering X30, but that
happens after pushing X30, so it doesn't actually get clobbered.)
2022-06-12 11:03:37 +02:00
JosJuice
3de49dee78 JitArm64: Properly reserve scratch register for soft MMU
Cleans up a hack from the previous commit.
2022-06-12 11:03:35 +02:00
JosJuice
3dce1df00e JitArm64: Implement "soft MMU"
This is used when fastmem isn't available. Instead of always falling
back to the C++ code in MMU.cpp, the JIT translates addresses on its
own by looking them up in a table that Dolphin constructs. This is
slower than fastmem, but faster than the old non-fastmem code.

This is primarily useful for iOS, since that's the only major platform
nowadays where you can't reliably get fastmem. I think it would make
sense to merge this feature to master despite this, since there's
nothing actually iOS-specific about the feature. It would be of use
for me when I have to disable fastmem to stop Android Studio from
constantly breaking on segfaults, for instance.

Co-authored-by: OatmealDome <julian@oatmealdome.me>
2022-06-12 11:03:25 +02:00
JosJuice
63283dcc72 JitArm64: Refactor EmitBackpatchRoutine parameters, part 2 2022-06-09 19:51:36 +02:00
JosJuice
27ed2a99a0 JitArm64: Refactor EmitBackpatchRoutine parameters, part 1 2022-06-09 19:51:36 +02:00
Dentomologist
c8e20c569b Convert PointerWrap::Mode to enum class 2022-05-25 13:16:46 -07:00
Dentomologist
f6b9acccfc Common: Refactor PointerWrap 2022-05-25 13:06:41 -07:00
Pokechu22
2f5e69a94e JitArm64: Replace WARN_LOG with WARN_LOG_FMT 2022-05-19 12:41:57 -07:00
Tilka
5ef17e60d0
Merge pull request #10633 from Minty-Meeo/generate-from-address-fix
Index SymbolDB when generated from address
2022-05-09 19:38:25 +01:00
Mai M
997754bf3b
Merge pull request #10642 from JosJuice/refactor-mmu-read
PowerPC: Refactor ReadFromHardware
2022-05-07 17:18:17 -04:00
JosJuice
b6b7030482 PowerPC: Add HW_PAGE_MASK constant 2022-05-07 19:37:44 +02:00
JosJuice
ed40b43960 PowerPC: Reorder code in ReadFromHardware
This refactorization is done just to match the order that I made
WriteToHardware use in 543ed8a. For WriteToHardware, it's important that
things like MMIO and gather pipe are handled before we reach a special
piece of code that only should get triggered for writes that hit memory
directly, but for ReadFromHardware we don't have any code like that.
2022-05-07 15:52:35 +02:00
JosJuice
3b3c60dc4c PowerPC: Check page crossing for non-translated reads
This fixes a problem where Dolphin could crash if a non-translated
read crossed the end of a physical memory region.

The same change was applied to WriteToHardware in ecbce0a.
2022-05-07 15:41:21 +02:00
JosJuice
16eb188f1d JitArm64: Implement low DCBZ hack
JitArm64 port of 76228fa.
2022-05-07 15:37:50 +02:00
Minty-Meeo
8fec3224fc Index SymbolDB when generated from address
Otherwise every function will be the same color in the code view widget.
2022-05-03 21:20:00 -05:00
JosJuice
14f9ffeb02 JitArm64: Add documentation comment for EmitBackpatchRoutine 2022-04-23 11:37:52 +02:00
JosJuice
2ef2d4778d JitArm64: Always lock Q0 in psq_stXX
Q0 is used as a scratch register by EmitBackpatchRoutine.

Fixes a vertex explosion in Spider-Man 2 that was uncovered by 20b2300.
2022-04-16 13:22:36 +02:00
JosJuice
905e86d754
Merge pull request #10451 from JosJuice/skip-redundant-flushes
Jit: Skip redundant flushes
2022-03-12 12:32:02 +01:00
JosJuice
7a3c719739
Merge pull request #10453 from JosJuice/output-in-use
PPCAnalyst: Count outputs as being in use
2022-03-12 12:31:42 +01:00
JosJuice
35b436bd6b
Merge pull request #10377 from Pokechu22/warning-fixes-jan-2022
Fix several compile warnings on GCC
2022-02-18 21:05:42 +01:00
Merry
be81fe86e1 JitRegister: Use fmt
Prefer fmt to printf-style formatting.
2022-02-16 20:09:38 +00:00
JosJuice
20b2300ce1 PPCAnalyst: Count outputs as being in use
In a code block where a guest register is accessed at least twice and the
last access is a write and the register is not discardable immediately
after the second-to-last instruction (perhaps there is an instruction
in between that can cause an exception), currently Dolphin's JITs will
flush the register after the second-to-last instruction.

It would be better if we replaced the flush after the second-to-last
instruction with a flush that only happens if the exception path is
taken. This change accomplishes that by marking guest registers as
"in use" not just when they are used as inputs but also when they are
used as outputs, preventing the loop in DoJit from flushing the
register until after the last access.
2022-02-14 22:09:21 +01:00
JosJuice
fd511a689f Jit: Skip redundant flushes
This makes codegen faster (by perhaps 10-20% in the case of Jit64,
I didn't measure too closely), which helps speed up NBA Live 2005
a little. But the game still has serious performance issues.
2022-02-14 19:17:59 +01:00
Pokechu22
d2ebbfb91a GDB Stub: Make s_socket_context static 2022-02-13 14:38:59 -08:00
Pokechu22
a720596771 GDB Stub: Fix typo mixing ppcState.spr and ppcState.sr
This resulted in an out-of-bounds array access, since sr is only 16 entries long and SPR_IBAT0U evaluates to 528.
2022-02-13 14:38:59 -08:00
Pokechu22
ce52ea35ec Jit: Replace magic 32 with GPFifo::GATHER_PIPE_SIZE 2022-02-12 16:14:05 -08:00
shuffle2
4ce9944cc5
remove redundant Unlock 2022-01-22 05:58:32 -08:00
Shawn Hoffman
acf6e24586 msvc/arm64: fix shadowed variable warning 2022-01-22 03:31:50 -08:00
Pokechu22
1a92699455 Cast to int for enums that are not formattable 2022-01-13 11:11:08 -08:00
JMC47
c18abfaecc
Merge pull request #10356 from AdmiralCurtiss/config-port-core-4
Config: Port remaining Core settings to new config system (the rest).
2022-01-11 16:08:19 -05:00
Pokechu22
558de04cfc Common/Assert: Actually use the ASSERT_MSG's log type parameter
Since it was unused, nonexistent values were used in a few places.  I've replaced them.
2022-01-09 12:44:14 -08:00