Commit Graph

177 Commits

Author SHA1 Message Date
magumagu
b5ed27ffa8 Misc cleanup in Interpreter.
Mostly comment changes; also gets rid of an unnecessary call to
CheckExceptions.
2016-06-25 22:52:17 -07:00
Pierre Bourdon
3570c7f03a Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Pierre Bourdon
2115e8a4a6 Add annotations for code sections that need to remain manually formatted. 2016-06-24 10:41:46 +02:00
EmptyChaos
c1922783f8 Core: Threadsafety Synchronization Fixes (Frame Advance / FifoPlayer)
Fix Frame Advance and FifoPlayer pause/unpause/stop.

CPU::EnableStepping is not atomic but is called from multiple threads
which races and leaves the system in a random state; also instruction
stepping was unstable, m_StepEvent had an almost random value because
of the dual purpose it served which could cause races where CPU::Run
would SingleStep when it was supposed to be sleeping.

FifoPlayer never FinishStateMove()d which was causing it to deadlock.
Rather than partially reimplementing CPU::Run, just use CPUCoreBase
and then call CPU::Run(). More DRY and less likely to have weird bugs
specific to the player (i.e the previous freezing on pause/stop).

Refactor PowerPC::state into CPU since it manages the state of the
CPU Thread which is controlled by CPU, not PowerPC. This simplifies
the architecture somewhat and eliminates races that can be caused by
calling PowerPC state functions directly instead of using CPU's
(because they bypassed the EnableStepping lock).
2016-05-13 09:23:44 +10:00
Matthew Parlane
ea82fcc24f Merge pull request #3658 from Tilka/helpers
Interpreter: simplify some helpers
2016-05-03 22:44:27 +12:00
Scott Mansell
eb5819f88a Make exceptions consistant across all JITs/Interpeters.
They all handled it diffrently, so I've just moved it into Advance()

This fixes Pokemon Box booting in JIT/JITIL which shared a bug where
exceptions set in a scheduled event would be ignored untill the next
slice (upto 20,000 cycles).
2016-04-28 17:22:52 +12:00
Scott Mansell
407f86e01a Mark global variables with g_ prefix 2016-03-24 04:32:12 +13:00
Tillmann Karras
3b2e170f0b Interpreter: simplify subtable handling 2016-02-20 02:20:41 +00:00
Tillmann Karras
b291b0a7c2 Interpreter: simplify mask helper 2016-02-20 01:03:46 +00:00
Tillmann Karras
af5ff9941a Interpreter: deduplicate CR0 helper 2016-02-20 01:03:37 +00:00
Lioncash
d9a16f7c9c Interpreter: Remove unnecessary includes from Interpreter.h
Previously the JIT code relied on indirect inclusion from this header,
this gets rid of that.
2016-01-10 18:51:12 -05:00
Tillmann Karras
d3dfdf7767 Interpreter: don't always set FPSCR.FX on NaNs
FPSCR.FX must only be set if an exception bit changes from 0 to 1.
SetFPException() already handles this correctly.
2015-12-16 21:17:36 +01:00
Lioncash
392c1335b7 Interpreter: Get rid of some aliasing casts 2015-12-09 19:14:53 -05:00
Lioncash
3acf165787 Interpreter: Update CR when FRSP's record bit is set 2015-12-09 12:51:53 -05:00
Lioncash
a98bddc352 Interpreter: Remove underscore from frsp's parameter 2015-12-09 12:50:50 -05:00
Lioncash
ef1cc2cec4 CPU: Convert CCPU into a namespace
There's not much point to a class with only static member functions.
2015-10-04 15:15:10 -04:00
Lioncash
19ac565e0d Common: Move asserts to their own header 2015-09-26 18:51:27 -04:00
Lioncash
b9e360df7b MathUtil: Convert Clamp into a constexpr function 2015-09-12 01:18:28 -04:00
Lioncash
19459e827f Partially revert "General: Toss out PRI macro usage" 2015-09-11 09:49:00 -04:00
Scott Mansell
be4caa3dc0 Merge pull request #2961 from lioncash/printf
General: Toss out PRI macro usage
2015-09-06 21:02:22 +12:00
Lioncash
633be0387d General: Remove unimplemented function prototypes 2015-09-05 22:01:07 -04:00
Lioncash
8fdb013d54 General: Toss out PRI macro usage
Now that VS supports more printf specifiers, these aren't necessary
2015-09-05 16:02:35 -04:00
degasus
6f34b27323 Jit64: implement dcbf + dcbi 2015-08-24 18:33:19 +02:00
Lioncash
fdafa5d063 Core: Move includes out of instruction table headers
These aren't necessary (and cause unnecessary indirect inclusions).
2015-08-22 14:15:02 -04:00
Lioncash
c56717e058 Core: Shorten the _interpreterInstruction typedef
The class itself already acts as a namespace trailer, so '_interpreter'
isn't necessary. This also gets rid of a duplicate typedef in the
Interpreter_Tables.
2015-08-22 14:14:49 -04:00
flacs
95d958c03d Merge pull request #2889 from lioncash/interp
Interpreter: Use std::isnan instead of IsNAN
2015-08-21 21:43:08 +02:00
Lioncash
18d658df1f Interpreter_FloatingPoint: Use std::isnan instead of IsNAN
Same thing, except one is part of the stdlib.
2015-08-21 15:04:03 -04:00
Tillmann Karras
415ad94dbe Interpreter: fix undefined bits of mffs
Lioncash tested this on hardware.
2015-08-18 15:07:14 +02:00
Tillmann Karras
a9447a8606 PowerPC: drop instructions not supported by GC/Wii 2015-08-17 06:03:11 +02:00
JosJuice
c49074742c Restore old assert message for unknown instruction
The assert(0) that was introduced in PR #2811 is not user friendly
since it has no explanation at all about what happened. Regular users
probably won't think of looking at the log to get more information.
2015-08-15 10:00:49 +02:00
Rohit Nirmal
703892e845 Fix building with PCH disabled. 2015-08-12 12:01:17 -05:00
Ryan Houdek
0326bf7164 On unknown_instruction dump the full guest GPR state. 2015-08-07 02:45:05 -05:00
Tillmann Karras
bcdafc7e34 Interpreter: fix rounding of FNMA instructions
x86:     round(-a*c +/- b)
PowerPC: -round(a*c +/- b)

If the rounding mode is set to +/- infinity, the order of round/negate
matters.
2015-07-18 22:54:15 +02:00
Tillmann Karras
afea72edfe Revert "Interpreter: assign directly instead via variables"
This reverts commit 174ada3a62.
2015-07-03 21:10:18 +02:00
Markus Wick
3fc070c4fc Merge pull request #2680 from degasus/idle
Interpreter: Idle skipping support
2015-07-03 19:52:05 +02:00
degasus
717d4bfbcc Interpreter: Idle skipping support 2015-06-30 20:11:23 +02:00
Tillmann Karras
2711d5201b Interpreter: turn SNaNs into QNaNs 2015-06-26 09:29:18 +02:00
Tillmann Karras
174ada3a62 Interpreter: assign directly instead via variables 2015-06-26 08:16:34 +02:00
Tillmann Karras
b2c21e800a Interpreter: drop unused macros 2015-06-26 08:16:34 +02:00
Tillmann Karras
ca36ff0551 Interpreter: consolidate fdiv/fdivs/ps_div 2015-06-26 08:07:46 +02:00
degasus
c375111076 Options: merge SCoreStartupParameter into SConfig 2015-06-12 19:07:45 +02:00
Tillmann Karras
d329147871 Interpreter: use std::isnan(x) instead of x != x 2015-06-10 14:31:08 +02:00
Tillmann Karras
c7544719e2 Interpreter: optimize NaN checks
NaNs always propagate, so we can get away with only checking for NaN
inputs in the rare case that the result is NaN (as already done in
Jit64::HandleNaNs()).
2015-06-10 14:23:43 +02:00
Lioncash
bc0e61cb7c Interpreter: Remove unused function prototype 2015-06-04 13:53:53 -04:00
Tillmann Karras
088668606d Interpreter: use the VERY_ACCURATE_FP code 2015-06-03 22:08:24 +02:00
Tillmann Karras
68eb83ea83 Interpreter: fix NaN handling in FMA 2015-06-03 22:08:24 +02:00
Ryan Houdek
7c04c76a26 Merge pull request #2421 from Tilka/jit_stuff
Jit64: fixes + less code
2015-05-25 23:08:24 -04:00
Ryan Houdek
95f9096068 Merge pull request #2396 from Sonicadvance1/fix_racing_cpu_core
Fix a race condition when pausing the CPU core.
2015-05-25 23:06:18 -04:00
Tillmann Karras
30ebb2459e Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Tillmann Karras
cefcb0ace9 Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00