Commit Graph
30 Commits
Author SHA1 Message Date
magumagu9 3669d711a2 Finish generalizing Safe/UnsafeWriteRegToReg, including warning about
unsafe uses.

I was going to use this for stbx, but it appears that JIT'ing it is 
actually visibly slower (!).



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1676 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-26 10:04:42 +00:00
magumagu9 3a51b3c6e3 Generalize SafeWriteRegToReg. The non-32-bit forms aren't yet used,
but could be nice to have.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1673 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-26 08:56:17 +00:00
magumagu9 32402b465d JIT implementations of lwzux and stwux. Unfortunately, not really a
visible performance increase.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1672 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-26 08:53:40 +00:00
magumagu9 ce01268885 Use ABI_CallFunction instead of CALL where appropriate. Hopefully, this
will help with the reported crash problems on OSX. I can't really test 
properly, though, since I'm on Linux; please give me feedback on 
whether this helps.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1664 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 22:18:39 +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
magumagu9 520f7d16e1 I didn't mean to commit this change :)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1656 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 10:55:02 +00:00
magumagu9 61c45b78ef Compile fix for #ifdef OPROFILE_REPORT code; I think I'm the only person
using this at the moment, but it's nice to have it working in case someone 
else wants to try it.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1655 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 10:54:03 +00:00
magumagu9 76108a98d5 Add support for disabling branch JIT. Potentially useful for
debugging and experimenting with the JIT.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1654 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 10:51:42 +00:00
magumagu9 799bb5fc53 Continuation of r1582.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1653 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-25 09:36:56 +00:00
magumagu9 4aa693ea54 Fix a regression exposed by my previous changes to rlwinm. Also, some
minor cleanup.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1643 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-23 22:34:58 +00:00
magumagu9 590adfce53 Generalize constant folding for rlwinm.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1640 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-23 13:16:52 +00:00
magumagu9 6dd9fa75f8 Minor JIT optimization; doesn't trigger often, but the code looks really
stupid when it does.

Note that the regcache tends to be sensitive code; if this change causes 
any regressions, feel free to revert.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1639 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-23 13:09:41 +00:00
magumagu9 a2a8be006a A couple of minor Linux compile fixes.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1599 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-20 07:13:38 +00:00
magumagu9 7ad6b0b5bb Add a missing include; this was causing a crash on 32-bit Linux because
the _M_IX86 define was getting missed when this was included in 
JitAsm.cpp.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1598 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-20 06:41:15 +00:00
magumagu9 af378dd111 Fix/enable JIT for ps_muls0/ps_muls1.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1577 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-18 09:39:05 +00:00
magumagu9 b43725d35f More JIT functions. Specifically, implementations of lfd and stfd for
those of us on 32-bit without SSSE3, and an implementation of stfsx 
(32-bit only at the moment, but should be easy to fix up for 64-bit).



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1576 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-18 07:10:10 +00:00
magumagu9 b3389c593f Implement some more JIT functions. If only all functions were so easy
to implement :)



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1575 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-18 06:58:12 +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
magumagu9 ea2045e536 A couple of compile fixes; standard string screwups.
I'm also running into an error in Source/Core/Core/Src/MemTools.cpp, but 
I'm not sure what the right fix is there.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1562 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-17 09:46:32 +00:00
magumagu9 28ec5031ee A couple of minor corrections to the JIT cleanup commit.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1280 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-23 22:48:03 +00:00
magumagu9 d0388f34a4 A few more JIT functions for loads; I had something somewhat more
aggressive, but it didn't really give a significant improvement over 
this.

This is probably my last checkin for today.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1260 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 23:57:40 +00:00
magumagu9 2742318e36 Enhancements to integer JIT; biggest change is the new function srawx,
but there are also some few more minor changes.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1256 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 21:09:38 +00:00
magumagu9 c3bfd73f40 Enable JIT of paired instructions on Linux, and enable a couple of store
instructions that weren't JIT'ed on 32-bit before.  This is enabling a 
bunch of codepaths that weren't in use before, so it's likely to cause 
regressions, although hopefully it'll just work.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1255 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 21:05:00 +00:00
magumagu9 fcce3240ea Remove code disabling jit of stb on linux; it seems to work fine
here.  Please tell me if there are any issues.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1254 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:59:06 +00:00
magumagu9 9fe8f8b6dd Obvious enhancements to load generation; should be a slight speedup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1253 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:54:41 +00:00
magumagu9 a6d5a7ea9e Fix the dirty bit and make the register cache use it to be a bit more clever:
it skips storing a register back to memory if its value hasn't changed. 
This happens with stuff like compares and fast memory loads.

This is the first in a series of enhancements I have in my tree for the 
jit that I plan to commit over the next few hours.  I'm likely to 
cause some breakage, so if you see regrassions, please report them; if 
you can track them down to a specific revision, that would be very 
helpful.  I'm trying to make the changes small to allow pinpointing 
regressions more easily.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1252 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:49:58 +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
magumagu9 eab369321c Linux build fixes.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1248 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 20:11:26 +00:00
magumagu9 0a47860bcf oprofile integration for jit, as described in issue 323. Disabled for
reasons explained in code, but I suggest turning it on and using oprofile if 
you're looking at performance issues on Linux.

The build system change required is attached to issue 323... I would 
have committed something for that, but I'm not really familiar with the 
build system.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1246 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-11-22 19:38:18 +00:00