5822 Commits

Author SHA1 Message Date
Ryan Houdek
d8cb976bba Merge pull request #1639 from Sonicadvance1/aarch64_improvements
Aarch64 improvements
2014-12-03 19:15:55 -06:00
Lioncash
c715a4f8ef Jit: Remove unnecessary include 2014-12-03 17:30:57 -05:00
magumagu
6b34b1b0d0 JIT: remove unnecessary uses of MMU flag. 2014-12-03 14:06:06 -08:00
magumagu
c3b36de51e HLE code replacement: remove unused code. 2014-12-03 14:05:05 -08:00
Lioncash
241c94d337 Merge pull request #1645 from magumagu/jit-unused-flag
JIT: remove unused flag.
2014-12-03 16:13:31 -05:00
Fiora
a4c6cf85e9 TLB: fix backwards exception check 2014-12-03 06:00:23 -08:00
skidau
b9b3277fb5 Merge pull request #1618 from JosJuice/dvd-low-open-partition
Fix Wii disc partitions
2014-12-03 21:24:56 +11:00
Ryan Houdek
71e4e67ae1 [AArch64] Only flush registers that are needed with interpreter fallback.
We try to keep as many registers as possible in callee saved registers, so if we have guest registers in the correct registers and the interpreter
call we are falling back to doesn't need the registers then we can dump just those ones. Which means we don't have to dump 100% of our register state
when falling to the interpreter.
2014-12-02 21:08:38 -06:00
Ryan Houdek
71b77f3173 [AArch64] Makes some integer instructions more clear what they're doing.
ComputeRC was a bit unclear by using 64bit registers for setting the immediate and then calling SXTW on a 6b4it register which is just a bit obscure.
When the source register is an immediate in cntlzwx, just use the built in GCC function instead of our own implementing for counting leading zeros.
2014-12-02 21:08:38 -06:00
Ryan Houdek
8dfb8d8ad5 [AArch64] Implements HLE function injection 2014-12-02 21:08:38 -06:00
Ryan Houdek
51ad798105 [AArch64] Implements block linking.
Before block linking was enabled but it wasn't ever implemented.
Implements link blocks and destroy block functions and moves the downcount check in the WriteExit function so it doesn't get overwritten when linking.
2014-12-02 21:08:38 -06:00
Ryan Houdek
ca04601b14 [AArch64] Fixes the dispatcher
Changes the dispatcher to make sure to we are saving the LR(X30) to the stack. Also makes sure to keep the stack aligned.
AArch64's AAPCS64 mandates the stack to be quad-word aligned.

Fixes the dispatcher from infinite looping due to a downcount check jumping to the dispatcher. This was because checking exceptions and the state
pointer wouldn't reset the global conditional flags. So it would leave the timing/exception, jump to the start of the dispatcher and then jump back
again due to the conditional branch.
2014-12-02 21:08:38 -06:00
Ryan Houdek
c3c80e9440 [AArch64] Improves the register cache.
Removes the REG_AWAY nonsense I was doing. I've got to get the JIT more up to speed before thinking of insane register cache things.
Also fixes a bug in immediate setting where if the register being set to an immediate already had a host register tied to it then it wouldn't free the
register it had. Resulting in register exhaustion.
2014-12-02 21:08:38 -06:00
Ryan Houdek
08660c89ad Fix register usage detection in PPCAnalyst.
lmw/stmw weren't properly setting input and output registers since they use multiple registers.
dcbz was just missing a flag in the instruction tables.
2014-12-02 16:12:33 -06:00
Fiora
863fb91cad JIT: fix profiler call
Sometimes this seems to require a 64-bit offset, so use CallFunction instead
2014-12-02 10:17:58 -08:00
JosJuice
bbd7370d82 DVDInterface: Tweak speeds 2014-12-02 12:27:03 +01:00
Lioncash
54f1e3a3c1 Merge pull request #1630 from lioncash/unused
WII_IPC_HLE_Device_fs: Remove unused macro constant
2014-12-01 21:49:07 -05:00
skidau
b34c80d138 Merge pull request #1626 from kamiyo/fix-wiimote-volume-divisor
Fix Wiimote speaker divisor for format 0x00
2014-12-02 12:51:15 +11:00
Lioncash
11e6d75ea6 WII_IPC_HLE_Device_fs: Remove unused macro constant 2014-12-01 19:33:53 -05:00
Lioncash
af5b1063bf Merge pull request #1619 from FioraAeterna/removepxor
JIT: remove unnecessary pxor in paired stores
2014-12-01 15:50:31 -05:00
kamiyo
e8c393b00f Fix wiimote speaker divisor.
Playing with the wiimote volume in the Wii menu in-game, I found that the range for m_reg_speaker.volume is 0 -127, not 0 - 64.
2014-12-01 13:06:53 -05:00
Ryan Houdek
4946c6876d Merge pull request #1607 from Sonicadvance1/armv7-optimizations
A whole bunch of ARMv7 optimizations and minor fixes.
2014-11-30 15:48:27 -06:00
Fiora
644a661bf1 JIT: remove unnecessary pxor in paired stores
I don't think this is necessary anymore?
2014-11-30 08:11:45 -08:00
magumagu
4bb48d09dd DiskIO: Clean up GetTMD() API. 2014-11-30 16:38:13 +01:00
magumagu
b1df4e5986 Make DVDLowOpenPartition actually change partitions. 2014-11-30 16:01:05 +01:00
Ryan Houdek
cd13d2d66f [ARM32] Fix a couple bugs in the paired loadstore routines.
This code was obviously wrong, we were sign extending 8 bit unsigned values and loading from the wrong offset as well.
This fixes a bug in Muramasa where some colours were going insane.
2014-11-30 04:10:17 +00:00
Ryan Houdek
b848365f78 [ARM32] Minor optimization in paired loadstores.
When the offset can fit in the instruction encoding make sure to do so.
2014-11-30 04:10:16 +00:00
Ryan Houdek
52c6fb180b [ARM32] Moves loadstore extend flag to backpatch code. 2014-11-30 04:10:16 +00:00
Ryan Houdek
32dc105aa3 [ARM32] Eat a register to store our memory base.
This saves at least two instructions per fastmem operation.
2014-11-30 04:10:16 +00:00
Ryan Houdek
e2f8286415 [ARM32] Adds unsigned compares.
Superscedes PR #1131.
Optimizes cmpi a bit.
2014-11-30 04:10:16 +00:00
Ryan Houdek
581ab9edec [ARM32] cntlzwx optimization if source is immediate 2014-11-30 04:10:16 +00:00
Ryan Houdek
9c82adb14f [ARM32] negx optimization if source is immediate 2014-11-30 04:10:15 +00:00
Ryan Houdek
1dbb39f791 [ARM32] srawix optimization when source is an immediate. 2014-11-30 04:10:15 +00:00
Ryan Houdek
fca0fd9dd5 [ARM32] rlwimix and rlwnmx optimizations. 2014-11-30 04:10:15 +00:00
magumagu
c693cf46e9 JIT: remove unused flag. 2014-11-29 12:41:36 -08:00
Fiora
72c96c20d3 JIT: more optimizing of float ops based on known input characteristics
If the inputs are both float singles, and the top half is known to be identical
to the bottom half, we can use packed arithmetic instead of scalar to skip
the movddup.

This is slower on a few rather old CPUs, plus the Atom+Silvermont, so detect
Atom and disable it in that case.

Also avoid PPC_FP on stores if we know that the output came from a float op.
2014-11-29 11:33:11 -08:00
Fiora
4e0591cdf1 JIT: float instruction attribute fixes, fix binding mistakes
These instructions modify only the bottom halves of the output register,
so the output register needs to be treated as an input too.
2014-11-29 11:30:52 -08:00
Fiora
8d039a77af JIT: minor cleanup, avoid MOVSD where MOVAPD will do
Avoids false dependencies.
2014-11-29 11:30:51 -08:00
Fiora
7df50b0710 JIT: skip weird fmul rounding if the input is known to be single precision 2014-11-29 11:30:51 -08:00
Ryan Houdek
f588a82b9a Merge pull request #1294 from FioraAeterna/noaccuratefcmp
JIT: remove "accurate fcmp" option
2014-11-28 22:48:11 -06:00
Ryan Houdek
1aed2542c7 Merge pull request #1602 from FioraAeterna/fixforce25bitimprecise
JIT: fix Force25BitPrecision with accurate single precision mode off
2014-11-28 22:42:44 -06:00
Ryan Houdek
5003618587 Merge pull request #1605 from FioraAeterna/fixcrormerge
JIT: fix fcmp+cror merging bug
2014-11-28 22:39:13 -06:00
Ryan Houdek
1a85df0459 Merge pull request #1603 from FioraAeterna/nofastinterrupts
JIT: remove "fast interrupts" option set and then used nowhere
2014-11-28 22:37:52 -06:00
Ryan Houdek
ec3d6da7b5 [ARM32] Remove conditional execution from store instructions. 2014-11-29 02:44:17 +00:00
Ryan Houdek
6c399ce9ae [ARM32] Removes a block of conditional execution in the dispatcher. 2014-11-29 02:42:30 +00:00
Ryan Houdek
e358696d46 [ARM32] Removes conditional execution from ARMv7's Jit function. 2014-11-29 02:42:22 +00:00
Fiora
d42305aba0 JIT: fix fcmp+cror merging bug
Destination CR bit needs to be cleared if it's not one of the sources.
2014-11-28 16:11:04 -08:00
Jasper St. Pierre
854f6b8688 HW: Poll system input from system timers
Rather than playing terrible hacks to determine the start of input
frames, just update system input periodically. Specifically, every
60th of a second.
2014-11-28 10:56:11 -08:00
Jasper St. Pierre
f3b739341e HW: Remove UpdateOutput
All of the rumble interfaces are now immediate mode.
2014-11-28 10:54:04 -08:00
Jasper St. Pierre
1cee3b8cc6 WiimoteEmu: Hardcode acceleration calibration values
Now we don't have any runtime calibration at all.
2014-11-28 10:51:30 -08:00