12210 Commits

Author SHA1 Message Date
JosJuice
1df3456267 JitArm64: Remove a comment in dcbz implementation
This implementation is pretty efficient in my opinion. And "As
long as we aren't falling back to interpreter we're winning a lot"
applies to basically every instruction to some degree anyway.
2021-07-21 19:24:41 +02:00
JosJuice
d91d6fcdc5 JitArm64: Fix dcbz backpatch
The dcbz instruction needs to lock W30 so that the slowmem code will
push and pop it when calling into C++. Also, the slowmem code expects
that the address is present in W0, so replace the use of W0 as a scratch
register in the fastmem code with the now locked W30.
2021-07-21 19:19:52 +02:00
JosJuice
302b47f5e6 JitArm64: Add temp reg parameter to Arm64RegCache::Flush
We currently have a bug when calling Arm64GPRCache::Flush with
FlushMode::MaintainState, zero free host registers, and at least
one guest register containing an immediate. We end up grabbing
a temporary register from the register cache in order to be
able to write the immediate to memory, but grabbing a temporary
register when there are zero free registers causes the least
recently used register to be flushed in a way which does not
maintain the state of the register cache.

To get around this, require callers to pass in a temporary
register in the GPR MaintainState case. In other cases,
passing in a temporary register is not required but can help
avoid spilling a register (if the caller already had a
temporary register at hand anyway, which in particular will
be the case in my upcoming memcheck pull request).
2021-07-21 16:28:19 +02:00
CrystalGamma
c991904e04 PowerPC: Add reservation monitor to save state 2021-07-21 12:14:07 +02:00
CrystalGamma
d763d693e8 PowerPC: Move lwarx/stwcxd. reservation into PowerPCState 2021-07-21 12:12:19 +02:00
Léo Lam
9a91b867ab
Merge pull request #9912 from Pokechu22/memory-viewer-physical-mem2
Fix MEM2 in the memory viewer in physical mode
2021-07-21 11:37:15 +02:00
JosJuice
a3c8fb06c5 NetPlayClient: Remove a designated initializer
release-ubu-x64 currently fails with "sorry, unimplemented: non-trivial
designated initializers not supported". pr-ubu-x64 doesn't for some
reason, but we might as well remove the designated initializer.
2021-07-21 09:36:52 +02:00
JosJuice
b2d87c49b6 JitArm64: Implement mtfsb0x
Part 3 of implementing the FPSCR system register instructions.
2021-07-21 09:22:13 +02:00
JMC47
a1e806ed76
Merge pull request #9600 from Bonta0/mgba-pr
Full GBA Controllers Integration with mGBA
2021-07-21 02:36:43 -04:00
Tillmann Karras
4a5c723114 DSPHLE: re-enable low-pass filter
Maybe this got fixed? Sonic Colors probably needs it for underwater audio.
2021-07-21 03:59:25 +01:00
JMC47
b515786c8d
Merge pull request #9927 from OatmealDome/double-usbgecko
GeckoSockServer: Only join connectionThread if it is joinable
2021-07-20 22:18:33 -04:00
OatmealDome
48bcd96526 GeckoSockServer: Only join connectionThread if it is joinable 2021-07-20 14:56:09 -04:00
Pokechu22
2d460b8e31 Fix MEM2 in the memory viewer in physical mode 2021-07-18 13:09:42 -07:00
Shawn Hoffman
8bddd8c675 remove SetRoundMode
we only care about SSE rounding mode, and set
that manually in SetSIMDMode
2021-07-17 19:29:22 -07:00
Tilka
3c90b657f3
Merge pull request #9907 from shuffle2/roundmode-bitfield
make FPSCR.RN an enum
2021-07-18 03:12:28 +01:00
Shawn Hoffman
197075293d make FPSCR.RN an enum 2021-07-17 18:55:06 -07:00
Shawn Hoffman
e1bddd4c18 remove DSP::Profiler*
this is not used anywhere and seems trivial to
ressurect if it's ever needed again.
2021-07-17 18:26:32 -07:00
Shawn Hoffman
c89ae53677 msvc: remove warning disables which no longer fire 2021-07-17 18:24:36 -07:00
Léo Lam
5021a13aa9
DSPHLE: Fix running and is_stream checks in AX HLE
A voice is considered running if and only if `running` equals 1,
not if `running` is not equal to 0.

This fixes https://bugs.dolphin-emu.org/issues/12508 because for some
reason *The Sims 2 - Castaway* sets `running` to 8 when a stream
finishes playing; previously our AX HLE would just loop the voice
and eventually crash after accessing invalid memory addresses.

Thanks to JMC47 and delroth's help, I've verified that this is the
correct check for the following ucodes:

GC:
* 0x3ad3b7ac
* 0x3daf59b9
* 0x4e8a8b21
* 0x07f88145
* 0xe2136399
* 0x3389a79e

Wii:
* 0x347112ba
* 0xfa450138
* 0xadbc06bd

And while I was fixing the running check, I noticed that the is_stream
field was also being handled incorrectly, so I've fixed that as well.
2021-07-14 19:21:35 +02:00
Léo Lam
887fcfc99a
DSPHLE: Remove redundant accelerator end check for AX Wii 2021-07-14 19:20:25 +02:00
Bonta
b8f0e97c02 Movie: GBA Support 2021-07-13 16:44:04 +02:00
Bonta
45f2461a53 NetPlay: GBA Support 2021-07-13 16:43:59 +02:00
Bonta
b73d16a71a Qt/Core: Implement GBA Hotkeys 2021-07-13 16:43:42 +02:00
Bonta
d0f0b4c0e0 SI: Implement GBAEmu device 2021-07-13 16:42:57 +02:00
Bonta
9a22ff653f Core: Implement GBA Core using libmgba 2021-07-13 16:42:52 +02:00
Bonta
2d744da68c Core: Add GBA host interface 2021-07-13 16:42:49 +02:00
Bonta
d849d56695 SI/DeviceGBA: Expose GetTransferTime 2021-07-13 16:42:44 +02:00
Bonta
fdcee30a3d SI: Expose Commands constants and switch to enum class 2021-07-13 16:42:40 +02:00
Bonta
8ee21acf34 Pad: GBA config 2021-07-13 16:42:35 +02:00
Bonta
27eab609dc GCController: Make HandleMoviePadStatus static 2021-07-13 16:42:27 +02:00
Bonta
110887435c Config: GBA settings 2021-07-13 16:41:18 +02:00
Bonta
1b27f22cbc SI: Allow devices to schedule events 2021-07-13 16:40:01 +02:00
Bonta
44aaf108d1 Externals: Integrate mGBA as a submodule 2021-07-13 16:39:29 +02:00
Léo Lam
de54856fbb
Merge pull request #9846 from jordan-woyak/report-dup-setting
Config: Add an ini setting to control real Wii Remote report duplication.
2021-07-13 03:32:49 +02:00
Tilka
8fcda4c315
Merge pull request #9889 from leoetlino/ax-symbols
DSPHLE: Prevent AX GC and AX Wii symbol mixups
2021-07-13 01:41:44 +01:00
JosJuice
3af21d3d22 JitArm64: Optimize FloatCompare's CR value emitting
Setting bit 32 is only needed in the case where EQ and GT are set
but SO and LT are not, which is not a possible outcome of a compare.
2021-07-12 22:54:37 +02:00
JosJuice
8af5095ff4 JitArm64: Stop using hand-encoded logical immediates 2021-07-12 22:25:49 +02:00
Léo Lam
474adcc601
DSPHLE: Prevent AX GC and AX Wii symbol mixups
Putting AX functions from AXVoice.h in an anonymous namespace does
successfully prevent compilers from merging those functions and
allows us to avoid ODR violations.

However, tools such as gdb still mix up AX GC and AX Wii functions
and variables because those have the exact same symbol names.

This can be fixed by using inline namespaces which are transparent
at the source code level but forces AX GC and AX Wii symbols to be
different.
2021-07-12 16:30:15 +02:00
JosJuice
6fe96d12c6 Jits: Don't use fast double-to-single when input is double precision
The fast path of using CVTSD2SS/FCVTN rounds the significand if it
can't be exactly represented as a single, whereas the accurate path
instead truncates the significand. So we should only use the fast
path if we know that the lower bits of the significand are not set.

This is not known to affect any games.
2021-07-11 13:04:02 +02:00
Markus Wick
88fd9fd577
Merge pull request #9869 from JosJuice/jitarm64-constexpr-isimmlogical
JitArm64: Encode logical immediates at compile-time where possible
2021-07-11 12:55:48 +02:00
JosJuice
f903853cf7 JitArm64: Fix ps_cmpXX
Passing a width of 64 and registers encoded as double to
DUP resulted in an invalid instruction. The registers should
be encoded as quads in this situation.

Fixes https://bugs.dolphin-emu.org/issues/12575.
2021-07-11 11:43:19 +02:00
JosJuice
0f3b9a8874 JitArm64: Minor mcrfs optimization 2021-07-10 20:44:22 +02:00
JosJuice
9e80db123f JitArm64: Encode logical immediates at compile-time where possible
Manually encoding and decoding logical immediates is error-prone.
Using ORRI2R and friends lets us avoid doing the work manually,
but in exchange, there is a runtime performance penalty. It's
probably rather small, but still, it would be nice if we could
let the compiler do the work at compile-time. And that's exactly
what this commit does, so now I have no excuse for trying to
manually write logical immediates anymore.
2021-07-10 20:43:59 +02:00
Markus Wick
f6ca70d094
Merge pull request #9822 from JosJuice/jitarm64-ps-cmpxx
JitArm64: Implement ps_cmpXX
2021-07-10 19:20:48 +02:00
JosJuice
adbf6d55da JitArm64: Implement ps_cmpXX 2021-07-10 19:08:55 +02:00
Markus Wick
4ba4d7cc7d
Merge pull request #9878 from JosJuice/jitarm64-addmex
JitArm64: Implement addmex/subfmex
2021-07-10 10:11:20 +02:00
JosJuice
fc60e62622 JitArm64: Implement addmex/subfmex 2021-07-09 16:44:33 +02:00
Admiral H. Curtiss
c9e4489e17 Core/MMU: Fix inverted condition in HostIsInstructionRAMAddress(). 2021-07-09 05:48:17 +02:00
Markus Wick
cfcc994f6c
Merge pull request #9840 from JosJuice/jitarm64-mffsx
JitArm64: Implement mffsx
2021-07-08 14:15:24 +02:00
Markus Wick
a390d3f327
Merge pull request #9820 from JosJuice/jitarm64-simplify-addex
JitArm64: Simplify addex/subfex
2021-07-08 13:46:48 +02:00