Lioncash
007f9e5309
Jit_Integer: Handle NOP case for oris as well
...
Like ori, this can also be used as a NOP under the same conditions.
2018-03-22 22:49:02 -04:00
Lioncash
42fce74f39
Jit_Integer: Handle NOP case where RA == RS for ori
...
ori can be used as a NOP if the two register operands are the same, and
the immediate is zero, not only if the two register operands are r0.
Also removes the check for !inst.Rc, as ori only has one encoding, and
said encoding doesn't even have a record bit in it.
2018-03-22 22:47:19 -04:00
Markus Wick
59c5bc964f
Merge pull request #6486 from lioncash/add-oe
...
Interpreter_Integer: Handle overflow flag when OE bit is set in add, addc, adde, addme, and addze
2018-03-22 14:15:58 +01:00
Lioncash
9d21425449
Interpreter_Integer: Handle overflow flag when OE bit is set in add, addc, adde, addme, and addze
2018-03-22 09:09:31 -04:00
Lioncash
e53fffeb90
PowerPC: Properly unset the overflow bit
...
The OV bit is non-sticky. Therefore, after an overflow-enabled
instruction executes, if an overflow does *not* occur, then OV is
cleared. SO is sticky however, so it staying set in this case is
correct.
2018-03-21 23:59:15 -04:00
Lioncash
355509653e
Interpreter_Integer: Handle the overflow flag when the OE bit is set for mullw
2018-03-21 20:28:37 -04:00
Markus Wick
8308d6b464
Merge pull request #6476 from lioncash/dispatch
...
JitAsm: Eliminate use of the JIT global variable
2018-03-21 09:55:04 +01:00
Lioncash
7a2d98b948
JitAsm: Remove use of the JIT global in Generate()
...
With this, JitAsm code doesn't have any reliance on the JIT global
variable. This means the core JIT64 code no longer relies on said
global at all. The Jit64 common code, however, still has some offenders.
Notably, EmuCodeBlock and Jit64AsmCommon are the remaining places in the
common code that make use of the global variable.
2018-03-21 04:41:37 -04:00
Lioncash
e0165a62da
JitBase: Remove use of the JIT global in Dispatch() and JitTrampoline()
...
Trims down a few more uses of the global variable by just passing the
JIT instance we're dispatching or trampolining with as a parameter.
2018-03-21 04:41:30 -04:00
Markus Wick
35bfa64dfc
Merge pull request #6470 from lioncash/ov-flag
...
Interpreter: Handle setting the overflow flag when the OE bit is set in divw, divwu, and neg
2018-03-20 11:08:12 +01:00
Anthony
50588034ba
Merge pull request #6472 from lioncash/jit-init
...
JitBase: Ensure JitOptions and JitState instances are consistently initialized
2018-03-19 13:20:40 -07:00
Lioncash
51cfeb8c7d
JitBase: Ensure JitOptions and JitState instances are consistently initialized
...
Ensures that upon construction of a JitBase instance, that all
underlying members within the option and state structs are guaranteed
to be initialized.
This prevents potentially using a member uninitialized in some form.
2018-03-19 15:58:32 -04:00
Léo Lam
16f74cee70
Merge pull request #6467 from lioncash/breakpoint
...
Breakpoints: Remove direct usages of the JIT global
2018-03-19 18:42:10 +01:00
Lioncash
2fa0cb91a1
Interpreter_Integer: Set the overflow flag if the OE bit is set for neg
...
Also amends the condition that was being checked. Previously it was
checking if the destination register value was 0x80000000, however it's
actually the source register that should be checked.
2018-03-19 13:27:36 -04:00
Lioncash
675d2fb774
Interpreter_Integer: Set the overflow flag if the OE bit is set for divw and divwu
...
divw and divwu won't panic now if the OE bit is set for these instructions.
2018-03-19 11:51:10 -04:00
Lioncash
f129c936e7
PowerPC: Add functions for getting and setting the XER OV bit
...
While we're at it, change GetXER_SO's return value to u32
to prevent potential sign bit wonkyness given we're performing bit arithmetic.
2018-03-19 11:51:04 -04:00
Markus Wick
8c1be29cef
Merge pull request #6466 from lioncash/mffs
...
Interpreter_SystemRegisters: Handle mffs, mtfsb0, mtfsb1, mtfsf and mtfsfi with the record bit set
2018-03-19 09:37:01 +01:00
Markus Wick
0c0a342483
Merge pull request #6464 from lioncash/using
...
JitArm64_RegCache: Remove using namespace declaration from header
2018-03-19 09:11:45 +01:00
Markus Wick
22aba8c56d
Merge pull request #6468 from lioncash/downcast
...
JitInterface: Remove a downcast within InitJitCore
2018-03-19 09:00:56 +01:00
Lioncash
14b204a9bb
JitInterface: Remove a downcast within InitJitCore
...
This isn't necessary as JitBase is already within the type hierarchy that
CPUCoreBase is.
2018-03-19 03:13:16 -04:00
Lioncash
a0164e14bc
BreakPoints: Avoid direct use of the JIT global
...
Trims the direct usages of the global by making the code go through the
JIT interface (where it should have been going in the first place).
This also removes direct JIT header dependencies from the breakpoints as
well. Now, no code uses the JIT global other than JIT code itself, and
the unit tests.
2018-03-19 03:08:57 -04:00
Lioncash
b4cd11c7c9
BreakPoints: Invert if statements where reasonable
...
Puts the early-exit condition first, unindenting code that doesn't need
to be.
2018-03-19 03:08:53 -04:00
Lioncash
3137d4f75f
BreakPoints: Use std algorithms where applicable
2018-03-19 03:08:17 -04:00
Lioncash
eea99de118
Interpreter_SystemRegisters: Handle mffs, mtfsb0, mtfsb1, mtfsf, and mtfsfi with the record bit set
...
All of these with the record bit set update condition register 1 with the
contents of the FPSCR's FX, FEX, VX and OX bits.
Helper_UpdateCR1() does exactly that, so we use it here to perform this
for us.
2018-03-19 00:05:00 -04:00
Lioncash
6ae8a2b5f8
JitArm64_RegCache: Remove using namespace declaration from header
...
Dumping a namespace in a header file should be avoided since it can
cause random name and type clashing in unexpected ways.
2018-03-18 19:39:58 -04:00
Lioncash
6428cee939
PPCTables: Make the op type enum an enum class
...
Reduces the amount of identifiers dropped into the global namespace when
the PPCTables header is included.
2018-03-18 18:53:58 -04:00
Lioncash
75f5fcdfee
Assert: Remove unused parameter from DEBUG_ASSERT
...
This brings the macro in line with the regular ASSERT macro, which only has one
macro parameter.
2018-03-16 13:01:11 -04:00
Lioncash
50a476c371
Assert: Uppercase assertion macros
...
Macros should be all upper-cased. This is also kind of a wart that's
been sticking out for quite a while now (we avoid prefixing
underscores).
2018-03-14 22:03:12 -04:00
Jeff Linahan
caf721fb3f
Jit64: fixed some signed to unsigned integer warnings
2018-02-16 17:41:16 -05:00
Markus Wick
e7d0aae5be
Merge pull request #6335 from stenzek/membp
...
Jit64: Fix incorrect PC in PPC state during fastmem trampoline
2018-02-15 11:13:52 +01:00
Léo Lam
3deb8ce074
HLE: Use enum classes for HookType and HookFlag
2018-02-04 14:50:55 +01:00
Stenzek
15efd42eba
Jit64: Don't flush PC in exception block
...
These blocks can only be executed as a result of a DSI exception from a
loadstore, where we now flush the PC register prior to the loadstore.
2018-01-27 22:32:57 +10:00
Stenzek
8933fe599c
Jit64: Update PC before slowmem reads as well as writes
2018-01-27 22:29:39 +10:00
Stenzek
7f3c31d78d
Jit64: Set correct PC when emitting slowmem trampoline
2018-01-27 18:19:42 +10:00
Sepalani
df9611255a
PPCSymbolDB: two columns symbol map support added
2018-01-24 12:43:23 +01:00
degasus
6ea3f538b4
JitArm64: Inline GP check in Cleanup.
...
We're calling this function up to 2M times per second. Let's inline the pre-check.
2017-11-18 17:43:38 +01:00
degasus
6c9bb67ca0
JitArm64: Optimize gather pipe writes.
2017-11-18 17:43:38 +01:00
degasus
6ad63c1b35
Jit64: Inline GP fast check in Cleanup.
2017-11-18 17:43:38 +01:00
degasus
36ad887a19
Jit64: Inline GP writes.
...
As we're down to 4 instructions now, it is always worth to inline those writes.
2017-11-18 14:45:09 +01:00
degasus
4feddd7748
PowerPC: Include the gather pipe pointer in the ppc state.
2017-11-18 14:14:45 +01:00
Sepalani
0a301c0eec
PPCSymbolDB: Save data symbols properly
...
Data symbols were previously saved as function symbols.
2017-10-05 19:55:34 +02:00
Sepalani
aed0ac0543
PPCSymbolDB: Load more SymbolMap symbols
...
Allows to load data symbols from symbol map files.
Symbols from all sections are loaded.
The data/function symbol type is set accordingly.
2017-10-05 19:55:33 +02:00
gamemasterplc
4908d79a71
Remove Function Address Symbol Mask
...
The upper 4 bits were masked out of function addresses prior when generating symbols.
2017-09-11 15:39:22 -05:00
Léo Lam
cc40931d64
PPCSymbolDB: Optimise symbol lookups
2017-09-10 11:42:12 +02:00
Léo Lam
8cd8e9d905
JIT: Don't always look up symbols for blocks
...
With tons of symbols, this results in noticeable stuttering, so
skip lookups if the perf dir option isn't set anyway.
2017-09-10 11:42:12 +02:00
degasus
992893ba41
Jit64: Use ImmPtr.
2017-09-02 14:33:07 +02:00
degasus
da79ddbde7
JitArm64: Rewrite Exit functions.
...
The gpr must not be touched in the Exit functions as they are maybe conditional.
So just allocate everything here manually.
2017-09-02 13:45:24 +02:00
degasus
304e601ad3
JitArm64: Reimplement aarch64 cycle counters.
...
CNTVCT_EL0 is force-enabled on all linux plattforms.
Windows is untested, but as this is the best way to get *any* low
overhead performance counters, they likely use it as well.
2017-09-02 13:24:37 +02:00
degasus
9080192a65
Jit64: Move profiler to the end of th block.
...
Within Cleanup(), it is called at *every* end of the block. This generates bigger code,
but it is the only way to handle blocks with multiple exit nodes.
2017-09-02 13:05:58 +02:00
degasus
958b75b707
JitCommon: Restructure the profiler calls.
2017-09-02 13:05:58 +02:00