Commit Graph

50 Commits

Author SHA1 Message Date
pierre 6cdb40a194 JIT: Add support for memory accesses with scaled index register but without base register
This is mostly useful for removing SHLs by constant 1, 2, 3, which this
commit implements in one place.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7652 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-06-29 22:40:01 +00:00
pierre 35026f9de1 Core/Common: Allow LEA(32,...) with M() OpArgs exceeding the 2G range.
Fixes JitIL in debug builds.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7478 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-04-22 15:51:40 +00:00
pierre e57406dbcc Core/Common: Add support for low 8 bit parts of SI,DI,BP on 64 bit in x64Emitter
In addition protect against their use on 32 bit and the use of [ABCD]H
together with a REX prefix on 64 bit.

This assumes that the customOp parameter of WriteREX and operandReg of
OpArg always are registers, and thus needs to give something valid to
WriteREX when that is not the case (WriteShift).

In addition to the patch i sent to the ML, there are a few changes to the
error reporting(mostly whitespace).



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7202 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-02-19 14:20:52 +00:00
pierre a82a61c53a Core/DSPCore: Fix more memory accesses for linux x64
Core/Common: Add more asserts for too large displacements


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6595 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-12-16 22:38:31 +00:00
Soren Jorvang f169def36f First pass at dealing with different size_t/off_t sizes in C90 environments.
Most of the code dealing with the LogTypes namespace was C which lead to a
lot of nonsensical casting, so I have dumbed LOG_TYPE and LOG_LEVEL down to
plain C even though the move of wiiuse into Source means we don't currently
call GenericLog from C.

Set logging threshold to MAX_LOGLEVEL at startup so debug builds will also
p  rint debugging messages before the GUI is running.

For some reason the way we use SetDefaultStyle doesn't play nice with wx 2.9
so we just get the default black text on a black background. Using a gray
background works around that problem, but I found it to also be much easier
on the eyes so I have switched the background color on all versions.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6528 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-12-05 15:59:11 +00:00
pierre bc1e0c24e8 Add an PanicAlert in case we try to do an >32 bit displacement
If you see this alert, dolphin will probably crash in a few moments.

Found in the course of fiddling with DSPLLEs JIT, which puts its data
structures and static code somewhere above 0x7fff00000000 on my machine, making
it unreachable via 32bit displacements from the created code at ~ 0x40000000.

Fixed all the offending places in DSPLLEs JIT to emit register indirect accesses,
only to find out that the generated code is slower than the interpreter and does
work just as good(or bad). Oh well, back to DSPHLE it is then.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6229 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-09-26 19:37:30 +00:00
nodchip 58ac6e541f Added PSRLD/PSRLQ/PSLLD/PSLLQ support to x64Emitter
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6180 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-09-06 03:03:33 +00:00
j4ck.fr0st 89c4068663 Fix a bug in DSP Jit where branches had a blockSize of zero.
Add some useful checking to J_CC/SetJumpTarget.
Refactor increment/decrement and reuse code with increase/decrease.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5816 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-30 16:17:20 +00:00
j4ck.fr0st 800595980e Fixed a small bug in J_CC when emitting jumps that exceed 0x80 in range (only used by DSP NR yet).
Add back a CMP nakee missed in his last commit

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5328 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-04-11 12:27:27 +00:00
j4ck.fr0st 57a3c87815 DSPJit: disabled NR again until we fix DSPEmitter::increase_addr_reg.
And to help test things like that: DSPJitTester (use with caution on x64, most likely fails there; r5250 might be why)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5306 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-04-09 19:18:50 +00:00
hrydgard 53408a695f Fix EFB reads in fastmem mode by removing the EFB mapping (forces it to go through the right handlers). Enable fastmem mode in x64. 1-2% speed boost overall maybe :p
Disable the Redundant MOV warning in release mode, it's only enabled in debug builds now.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4870 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-17 21:28:39 +00:00
hrydgard b84a1823b2 Hopefully fix all remaining quantizer issues in Mario Kart Wii:
* must use a truncating float-to-int conversion, for example.
  * introduce optimized variants of the single value psq_st operation (JIT only).
  * fix bug in SafeWriteRegToReg when swap = false

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4861 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-16 22:44:49 +00:00
hrydgard 901316e61b (assorted cleanup and reindent that didn't belong in the quantizer change)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4855 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-16 19:01:00 +00:00
XTra.KrazzY c86d2e5129 Now ALL copyright dates are fixed to the legally correct year: The year in which the project began. Now we don't have to change it every year :)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3898 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-28 21:32:10 +00:00
magumagu9 c52e4d281e Remove instructions which don't actually exist.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3670 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-04 00:09:12 +00:00
magumagu9 7f27cfc9d2 Misc warning fixes.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3583 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-28 20:53:26 +00:00
hrydgard 10442c8faa PowerPC: Fixed moronic bug in mcrfs - together with correctly computing FPRF (which is a new option, slows down slightly) in a few ops this fixes most remaining math errors in Super Monkey Ball and eliminates the need for the HLE hacks. Make sure to have up-to-date gameconfigs. Unfortunately, F-Zero still doesn't work. Misc other small changes. Indent some code.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3426 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-06-13 14:10:10 +00:00
omegadox eb0cab140f Some code cleanup
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2768 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-03-28 08:57:34 +00:00
hrydgard 41ce35deb3 fix crazy codegen bug and unban R12 from register allocators
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2295 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-17 22:18:21 +00:00
magumagu9 412626c327 Add CVTPS2DQ implementation.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1759 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-04 08:29:47 +00:00
magumagu9 dbd9d5fb2d Fix assembly of 16-bit immediates.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1732 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-02 04:34:23 +00:00
magumagu9 2e58a5bef0 Slightly shorter version of 16-bit BSWAP.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1726 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-31 20:46:55 +00:00
hrydgard fa9f5c44fb More code movin' .. split Vertex/Pixelshadermngr into xxCache and xxManager.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1677 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-26 10:43:18 +00:00
hrydgard 104acd5bc1 Turn the X86 emitter into a class, so the code pointer is no longer a global, yay! Created XCodeBlock that derives from XEmitter, and the Jit now derives from XCodeBlock so it can call all ADD SUB JNZ etc without having to prefix them with "emit.". I think someone's gonna like this.
There's some cleanup still to be done, but hey, it works. There shouldn't be a noticable speed difference.

I hope GCC doesn't have a problem with the "member function pointers" I used.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1594 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-19 21:24:52 +00:00
magumagu9 97e01e31d0 Some small emitter enhancements; I was originally planning on actually
using these, but I changed my mind.  They could potentially be 
useful in the future, though.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1574 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-18 06:46:32 +00:00
bushing 49cfded60b set svn:eol-style=native for **.cpp
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1442 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-08 05:30:24 +00:00
hrydgard 5c58227702 Optimize vertex loader with a mini JIT (only first step, more optimizations may follow). Some various error message and warning fixes.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1276 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-23 17:46:14 +00:00
magumagu9 05058b9684 Another Linux build fix.
Also, some trivial changes I'm too lazy to separate out.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1249 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:20:14 +00:00
XTra.KrazzY 159e3f5b49 Fixed saving/loading states in OGL plugin.
Turns out the BPReload function is written plain wrong. Also, most chances are that the state will load correctly when not reloading the BP (not now though).

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1247 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:06:20 +00:00
XTra.KrazzY 145f80fc00 Committing magumagu9's work on IMUL JIT
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1241 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 12:10:35 +00:00
masken 09ba0a3a11 Fixed a couple of unused variable warnings.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@486 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-09-08 20:14:07 +00:00
nakeee 43634d53df fixed warnings
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@458 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-09-07 13:58:56 +00:00
Maarten ter Huurne 722ea233a1 Align stack to 16-byte boundary when compiling in 32-bit mode with GCC. This is required to run anything on OS X and to support SSE instructions on Linux.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@439 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-09-05 00:02:53 +00:00
Maarten ter Huurne 541a86de26 Removed unused function x86SetJ8().
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@365 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-27 13:42:32 +00:00
Maarten ter Huurne ad748bfc05 Fixed CALL range check.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@364 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-27 13:29:35 +00:00
Maarten ter Huurne 0f3e8ddced On platforms where the OpenGL library uses the CDECL calling convention, the stack should be increased after making a call.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@334 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-27 01:04:54 +00:00
hrydgard af7e0404ca fix crash bug in movddup-on-sse2-emulation
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@241 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-17 22:58:12 +00:00
NunoRamiro 8c132bdae5 - Fixed: Crash when loading a rom with an unknown file extension.
- Fixed: Crash when stopping a game.
- Improved: DirectX Plugin.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@237 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-17 19:28:24 +00:00
hrydgard 575bdd9166 Lots of various changes. CPU detect fix. Maybe a minor speed increase. CPU bugs remain.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@180 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-12 20:05:45 +00:00
hrydgard 29102ecbc6 For unknown reasons, this patch fixes Beyond Good and Evil and Metroid intro in 32-bit mode only. Yeah, I have some work to do on the JIT.
Also adds some minor stuff like memory card write notification, plus some minor SSSE3 optimizations.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@179 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-11 19:35:38 +00:00
hrydgard efd15dc2c3 maybe fix some crashes some people are seeing (used wrong instruction to load 64 bits)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@174 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-10 20:38:15 +00:00
hrydgard f9019d0ad3 Assorted debugger upgrades and fixes + changed DolphinWX project not to depend on its plugins
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@169 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-10 18:21:16 +00:00
hrydgard c305371725 More 32-bit speed
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@164 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-09 20:18:50 +00:00
hrydgard ac366022f4 Fix linux build and a crash. hrm, how did it work before...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@146 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-07 19:20:51 +00:00
hrydgard 94a5ab087a Silence stupid messagebox in windows, and simultaneously fix a future linux problem :P
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@138 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-05 23:39:58 +00:00
hrydgard 494c1f3187 JIT works in linux with ALL OPTIMIZATION OFF - well, at least it's faster than pure interpreter :P
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@128 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-03 16:56:31 +00:00
hrydgard f895edc10d add simple PC logging facility for debugging. not enabled by default.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@125 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-01 20:36:14 +00:00
hrydgard 9a4c66e066 More linux...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@122 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-01 13:59:37 +00:00
hrydgard 27a141ecca Just submitting some boring minor cleanup and improved error msgs, to isolate my next change.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@92 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-07-27 20:51:02 +00:00
hrydgard 775dc8a9c0 Initial megacommit.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-07-12 17:40:22 +00:00