Commit Graph

37 Commits

Author SHA1 Message Date
nitsuja 9ab69febe5 fix for stack corruption caused by certain DSP LLE JIT ABI calls.
if you were getting crashes or freezes as a result of using the "DSP LLE on Thread" option, this might fix that.
2012-01-07 20:46:41 -08:00
Rodolfo Osvaldo Bogado eef715b1cf added the possibility to allocate aligned memory, an use it to allocate the buffer utilized in texture decoding, this will make a little easy to use aligned writes when possible in sse2/3 optimized algorithms.
some code additions for future use ;).
please gcc user test this as i don't have opportunity to test it myself i only use reference code to.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7247 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-02-25 20:35:05 +00:00
skidau 77a36cf9cb ABI fix for Linux x64. ABI_CallFunctionCC16 was not calculating the jump distance on far calls.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6600 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-12-17 05:16:51 +00:00
skidau f67afb4fca LLE JIT:
* Optimised the updating of g_dsp.pc in the compile loop (code by kiesel-stein)
* Added JIT version of LRI (code by kiesel-stein)
* Added JIT versions of the branch instructions (code by Jack Frost)
* DSP_SendAIBuffer fix (code by Mylek)
* Marked instructions that update g_dsp.pc in the DSP table and updated PC based on the table (speed up)
* Fixed the signed bits not being set properly in the addr instruction
* Created a MainOpFallback function to use interpreted versions of the instructions if necessary (code by kiesel-stein)
* Disabled the jit versions of subarn and addarn as they are slowing down NSMBW

The above work in both x86 and x64 modes.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6582 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-12-15 01:42:32 +00:00
pierre aaeb21fe3b Core/Common: Automatically emit a MOV in ABI_CallFunction* when the function
pointer cannot be reached by 32bit displacement.

RAX is caller save and non-parameter in all 64 bit ABIs, so it should be safe
to clobber it on function call.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6248 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-02 20:04:03 +00:00
Rodolfo Osvaldo Bogado 3e7dafbbd7 fully implemented display list cache with vertex data included and added in all the plugins.
still experimental, not totally optimized but must bring a nice speed up
please test for regressions an error. an please Linux people fix scons :)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6149 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-29 23:08:56 +00:00
dok.slade cf5088c37e JIT compiler:
* Improved constants folding in load/store instructions
* Merged load instructions

This is almost the same commit as r6076/r6077 but x64 build has been fixed.
Thanks a lot to skidau and BHaaL!!


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6120 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-23 22:26:00 +00:00
dok.slade 55d7f93e0c Revert r6076 and r6077 since they broke x64 builds
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6080 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-09 19:00:24 +00:00
dok.slade 244191f18f Fixed some mistakes from r6076:
* Fixed missing UnlockAllX
* Fixed 64-bits compilation

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6077 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-08 18:53:00 +00:00
dok.slade 5a248b46a1 JIT compiler:
* Improved constants folding in load instructions
* Merged load instructions
* Fixed the register allocator so that it can restore the registers state after jumping to the dispatcher (in case of a conditional jump)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6076 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-08 18:12:58 +00:00
skidau 122d5e7b4e Fixed the crash in DSP LLE JIT on x64 by aligning the stack.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5357 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-04-13 10:18:05 +00:00
XTra.KrazzY a8865d21b3 DSPLLE: Opcode LUT Cleanup
ABI: Far Call --> Call (thanks to correct vcproj settings)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5250 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-03-29 01:18:05 +00:00
skidau 5ff07aace6 Cleared out the top 16 bits in PARAM1 of the ABI_CallFunctionC16 JIT command.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5232 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-03-24 20:27:09 +00:00
nakeee 47239ce0f4 XK patch for adding jit config to audiocommon/c16 function to x64emitter
and Skidu's fix for 64bit


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5230 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-03-24 11:22:33 +00:00
hrydgard 1848e93790 RIP "Optimize Quantizers" option. Now using the safe quantizer code from JITIL in all builds.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4854 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-16 19:00:09 +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
hrydgard ccebd7512e Fix a DSP disasm problem, misc minor stuff .. not much to see here
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3745 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-07-11 10:18:25 +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 4bdb4aa0d1 Merge large parts of nakeee's "Soap" branch into trunk, after fixing a few crash bugs in FileUtil.cpp.
Not really anything interesting, just some better comments, some slightly more portable/cleaner code in places.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2459 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-28 01:26:56 +00:00
hrydgard 1c1425a406 Assorted jit64-related bugfixes. Discovered and papered over nasty codegen bug. No, IL64 still doesn't work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2281 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-02-16 22:06:11 +00:00
magumagu9 be4c7e1399 Add a helper to make zero-argument calls from an aligned stack
correctly.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1663 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 22:10:36 +00:00
magumagu9 b92c831857 Reverting r1650. I don't think this change is the right approach: it
actually ends up *misaligning* the stack for the normal ABI_CallFunctionC
and friends.  I'll try to help come up with the correct fix; look for
another commit in a bit.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1662 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 22:05:22 +00:00
bushing 84711122ee Linux may not care, but Darwin will barf if we don't actually
align the stack on the code we generate.  Fix some existing code
to do what the comments claim it already does, and then actually
use that code. :)


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1650 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 02:24:46 +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
hrydgard 0412d0811a Fastmem for linux. Not yet activated, Cg goes nuts, for some reason.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1534 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-14 18:25:33 +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
Maarten ter Huurne cf36d4ba58 Fixed ProtectFunction(): it should copy parameters using the padded size. Actually, I am not sure this function is correct, but at least its implementation is now equivalent to the original (before rev 439).
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@441 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-09-05 01:48:16 +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
hrydgard e3d21c0b11 32-bit speedup (videos mostly affected). Lots of various cleanup and future proofing. A small debugger feature.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@162 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-09 16:56:24 +00:00
hrydgard 84b3522c24 Fix build on linux (grr), minor ABI fix.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@142 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-06 20:23:53 +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 814af6c7b9 More linux prep
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@121 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-01 09:30:04 +00:00
hrydgard 53ee26711e More linux work. Getting a bit closer, but JIT does still not work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@119 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-08-01 08:37:19 +00:00
hrydgard 3b4a9e06c2 fix typo in unused function, try to fix linux 32-bit opengl
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@117 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-07-31 21:23:30 +00:00
hrydgard 0c21d95606 bugfix, more...
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@116 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-07-31 21:02:19 +00:00
hrydgard d8fa3113ea Cleanup, preparations for Linux/Mac JIT (not yet working)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@114 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-07-31 20:22:35 +00:00