58 Commits

Author SHA1 Message Date
SternXD
d983b2b066 Copyright: Change year from 2002-2025 to 2002-2026 2026-01-15 00:22:32 +01:00
TellowKrinkle
59125c9b12 Core: Don't create xImpl_G1Logic instances 2025-08-24 20:16:24 -05:00
TheTechnician27
23fd57f641 Copyright: Change year from 2002-2024 to 2002-2025 2025-01-20 05:07:26 +01:00
GovanifY
132431b7c8 headers: relicense to GPL-3.0+
also update to 2024 while i'm at it
2024-07-30 17:17:13 -04:00
Stenzek
d9abe10308 Misc: Remove explicit PCH include, switch to SPDX 2023-12-24 14:03:14 +10:00
Stenzek
47a65ce01e Misc: Slim down PCH 2023-12-24 14:03:14 +10:00
Stenzek
dc859ca0a6 Misc: Simplify assertion macros 2023-12-24 14:03:14 +10:00
Connor McLaughlin
1ccddb92d4 EE Rec/IOP Rec: Rewrite large portions
- Add fastmem
 - Add delay slot swapping
 - Add COP2 sync elision
 - Add block analysis and use analysis
 - Add GPR register caching and renaming
2022-11-19 04:59:10 +00:00
Connor McLaughlin
fd194124a9 x86: Move cycle/writeback fields to CPU structs
[SAVEVERSION+] Potentially better locality, keeps everything we're
accessing from the rec together.
2022-11-19 03:54:02 +00:00
kenshen112
fdabc82342 Remove IopCommon.h added proper includes to files. Removing circle includes in several files that sometimes was several layers deep 2022-04-11 21:25:20 +01:00
TellowKrinkle
5260d63565 Core: Format recompilers 2021-09-04 18:28:24 -04:00
Tyler Wilding
9fa484dbab GameDB/MSVC: renamed _Target_ to _InstrucTarget_ to avoid collisions 2020-12-16 09:31:58 +00:00
Tellow Krinkle
dc57270fb8 EE/IOP/VU: x86-64 recompiler support 2020-08-24 16:20:09 -05:00
Gregory Hainaut
18f677d530 oups miss one minus 2016-11-08 23:11:12 +01:00
Gregory Hainaut
f6c27c2abf pcsx2: use ASCII minus 2016-11-08 23:09:20 +01:00
Gregory Hainaut
774d98991c iop rec: fully enable COP2 support 2016-09-02 21:05:28 +02:00
Gregory Hainaut
b47c50ae5d iop rec: add the missing LWC2/SWC2 (CP2 reg from/to mem) 2016-09-01 21:50:13 +02:00
Gregory Hainaut
1ee0526e41 iop rec: add constant propagation for COP2
Inspirated from COP0
2016-09-01 21:16:43 +02:00
Gregory Hainaut
bdc29dbbbf iop rec: put cop2 comment in the good position... 2016-09-01 20:47:12 +02:00
Gregory Hainaut
d78d515acb iop rec: plug GTE (aka COP2) in the recompiler
Code isn't enabled yet to avoid any breakage

Edit iR3000ATables.cpp line 1446
2016-08-27 17:23:37 +02:00
Gregory Hainaut
cc68776069 pcsx2: manually cast function pointer to void*
Templace is nicer but give a hard time to compiler.

New version compile in both gcc&clang without hack

v2: add an uptr cast too for VS2013 sigh...
v3: use an ugly function pointer cast to please VS2013
2016-08-17 09:53:30 +02:00
Gregory Hainaut
c037686a26 iop: don't load any value in r0
Fix lsu.irx test
2016-01-27 20:08:37 +01:00
Gregory Hainaut
b21ce8c9fb iop: fix division handling based on the EE div operator
Division will now handle properly division by 0 and signed overflow
2016-01-27 19:13:31 +01:00
Gregory Hainaut
135cdfca46 iop: fix division on the interpreter
Recompiler is still completely broken just add tons of FIXME
2016-01-27 18:15:14 +01:00
Gregory Hainaut
ba62ce9e93 iop: fix MTLO instruction
Test hilodelay.irx is now pass ^^ (but test only covers constant path.)
2016-01-27 10:27:34 +01:00
Gregory Hainaut
8485a8c654 iop: fix division overflow
So far only on the const path because it is was easy (and free)
but it ought to be done on the recompiler too.
2016-01-24 21:49:06 +01:00
Gregory Hainaut
e3d5eb5a4e core: convert xCALL to xFastCall
SuperVU wasn't converted (unlikely to be ported to 64 bits)
A couple of calls weren't converted because they require extra work
but there are not mandatory (debug/MTVU/...)
2016-01-11 09:21:45 +01:00
Gregory Hainaut
5c0c9a60e9 core: use ecx directly 2016-01-09 21:26:25 +01:00
Gregory Hainaut
b09295fc7c core: use xRegister32 for _allocX86reg 2016-01-09 21:26:25 +01:00
Gregory Hainaut
4ddc4778e4 ee: use xRegister32 for 1st argument of _psxMoveGPRtoR 2016-01-09 21:26:25 +01:00
Gregory Hainaut
3570467838 core: inline LogicalOp* functions 2016-01-09 21:26:25 +01:00
Gregory Hainaut
9eb73e1ef0 core: rely on register.GetId() instead of define 2016-01-09 21:15:46 +01:00
Gregory Hainaut
fcdbae6806 core: massively sed old emitter syntax to the new one
It misses jump & FPU. Jump need to be handled manually.

Syntax isn't perfect yet because of various casts. But it will allow to have a
single emitter syntax and rely on type safety on the future.

Conflicts:
	pcsx2/x86/iR3000Atables.cpp
	pcsx2/x86/ix86-32/iR5900-32.cpp
2016-01-09 20:56:07 +01:00
Kingcom
4c36c12fb1 Fix IOP bltzal and bgezal opcodes 2015-12-28 10:05:26 +01:00
Jake.Stine
36d1503581 Converted IOP to use a static/global hardware register allocation. (same as I did for the EE a few weeks ago).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3826 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-09-23 19:44:55 +00:00
sudonim1
d7a09fa4d7 IOP: Deleted micro-optimisation in what's already not a speed critical recompiler which was corrupting code in experimental modifications.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3620 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-08-07 13:47:02 +00:00
Jake.Stine
a7bb875e18 x86emitter: removed implicit pointer dereferencing on 'indirect' operand types, and implicit uptr addressing on ptr[]; avoids some obscure pitfalls and might speed up release mode builds (LTCG).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3158 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-06-04 22:27:06 +00:00
Jake.Stine
70d47bf240 Copyright 2010 : PCSX2 and plugins! (notable exception: didn't update copyright info in any Gabest plugins)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2937 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-05-03 14:08:02 +00:00
sudonim1
4457fe40fc Removed all trailing whitespace in *.c *.cpp *.h because it irritates me.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2897 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-04-25 00:31:27 +00:00
Jake.Stine
a6d716b351 Replace assert() with pxAssert() in pcsx2 core and recompilers.
Rationale: assert() is not thread safe on win32 (the modal popup can block user input or hang the program), and is neigh useless on Linux (just does a DebugBreak/Trap).  Furthermore, pxAssert() registers stack traces and supports more detailed textual descriptions.  I considered just #undef/#define on the assert macro, but MSVC's assert.h also does #undef/#define so it'd be too prone to accidentally calling MSVC's problematic version if some nested header included <assert.h> (which many do).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2077 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-25 15:07:43 +00:00
Jake.Stine
3e1c1f939c aligned_stack: Finished conversion of all CALLFunc and _callFunctionArg1 functions to aligned-stack safe __fastcall invocations; only IOP's psxExecute and dispatchers remain to be done. (rev is fully functional in this state tho, on win32 at least)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/aligned_stack@2045 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-20 20:02:07 +00:00
Jake.Stine
653d09e821 Lots of new code maintenance stuffs:
* Completely new assertion macros: pxAssert, pxAssertMsg, and pxFail, pxAssertDev (both which default to using a message).  These replace *all* wxASSERT, DevAssert, and jASSUME varieties of macros.  New macros borrow the best of all assertion worlds: MSVCRT, wxASSERT, and AtlAssume. :)
 * Rewrote the Console namespace as a structure called IConsoleWriter, and created several varieties of ConsoleWriters for handling different states of log and console availability (should help reduce overhead of console logging nicely).
 * More improvements to the PersistentThread model, using safely interlocked "Do*" style callbacks for starting and cleaning up threads.
 * Fixed console logs so that they're readable in Win32 notepad again (the log writer adds CRs to naked LFs).
 * Added AppInit.cpp -- contains constructor, destructor, OnInit, and command line parsing mess.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1950 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-04 08:27:27 +00:00
Jake.Stine
4efb1ed9ca Added some DebugBreak generation (INT3 / 0xcc) to the PsxRec, for catching null pxsRegs.pc assignments from the recompiler (enabled in DEBUG builds only). These are usually more context-useful breakpoints than the assert() check in psxRecompile.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1948 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-03 13:36:19 +00:00
Jake.Stine
d2fbb22076 Upgraded PCSX2 core and utilities to GPLv3.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1783 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-08 12:08:10 +00:00
Jake.Stine
3b10771c36 Got rid of that old 'params' mess on console logs. Not needed anymore since wxwidgets has nicer built in formatting options (never liked it anyway)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1782 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-08 05:37:40 +00:00
arcum42
e330c57556 Minor bug fixes. Reformat iVUzerorec.cpp & get rid of all occurrances of the FORIT macro.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1153 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 04:44:32 +00:00
Jake.Stine
bf3d124e23 Switched the emitter over to using Thread-Local storage (TLS), which removes all the templates and brings us back to a more traditional-looking, macro-free, and intellisense-friendly implementation. Plus it's a lot less prone to errors and will make debugging easier down the road. (next commit will rename the files back to .cpp and get them out of the header includes)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@919 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-04-07 16:54:02 +00:00
arcum42
4ea9d9292f Replaced more SysPrintf's with Console:: functions then I want to think about. A few minor changes in passing, mainly format-related.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@843 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-27 01:42:51 +00:00
arcum42
e0347fd285 Some header work, get rid of some dead code, and rename PsxCommon.h.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@762 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 04:49:23 +00:00
Jake.Stine
3821425442 Minor fixes to the IOP Interpeter and const prop regarding the SLTIU instruction.
Removed the rest of the references to the UseGui global boolean since it wasn't used anymore.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@761 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 04:21:50 +00:00