Commit Graph
53 Commits
Author SHA1 Message Date
magumagu9 27fb636451 Flip the hashtable accesses back to always indexing based on the
address; there's no particular benefit to indexing based on the hash, 
and doing so breaks copy EFB to texture mode.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1872 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-15 03:28:57 +00:00
magumagu9 b5367bea46 Unconditionally activate SSE code for texture conversion; this should
only affect 32-bit non-Windows platforms, and I've tested 32-bit Linux, 
so I think it's pretty safe.  It's a slight performance improvement when 
it kicks in.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1865 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-14 07:31:24 +00:00
magumagu9 018cb993e3 A tiny bit more JIT WIP work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1847 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-11 01:26:58 +00:00
magumagu9 4acda0096b A bit more progress on JIT WIP.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1846 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-11 00:26:41 +00:00
magumagu9 e4f8419be4 A little bit more WIP JIT work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1809 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-06 08:39:32 +00:00
magumagu9 ce2b4bead9 And a bit more WIP JIT work, mostly floating-point improvements. It
should be getting to the point where the performance is reasonably
comparable to the current JIT on most workloads. I'm not sure of the 
exact comparisons because I haven't done much in terms of checking the 
performance versus the current JIT on floating-point heavy stuff. The 
floating point stuff is still relatively unoptimized, and there are still a
few relatively common functions that aren't being compiled yet, but the most 
critical work is done.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1807 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-06 07:35:06 +00:00
magumagu9 fdd06da500 Small JIT WIP fix: I figured out how subfic and subfcx work. It was a
bit surprising to me that the carry flag works differently between PPC 
and x86...



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1789 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-05 04:18:10 +00:00
magumagu9 96bab6bdd8 Small WIP JIT improvement: implement stfs.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1782 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-05 00:32:51 +00:00
magumagu9 6ad44fd470 A bunch more WIP JIT work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1779 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-04 23:08:39 +00:00
magumagu9 4eed9912ad Some minor tweaks for WIP JIT.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1761 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-04 09:14:02 +00:00
magumagu9 94a51a7817 Allow testing WIP JIT by using "scons jittest=1". Done by the request
of nakeee.  Hopefully this works the way I think it does.

And of course, use at your own risk...



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1760 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-04 09:12:12 +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 b4d78829c3 A bit more WIP JIT work; primary change is psq_st implementation.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1758 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-04 08:28:45 +00:00
magumagu9 29a033e1dd A bit more progress on my JIT WIP: biggest changes are some substantial
work on floating-point.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1743 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-03 07:51:27 +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 4286b210a5 A couple of fixes for the current JIT.
One is generalizing the stwux implementation to all of stXx; not a
particularly significant improvement, but I had it in my tree, and it
makes my WIP JIT a drop-in replacement for the current JIT. (Not that
you'd really want to at the moment... The WIP JIT still has at
least one significant bug I haven't tracked down, and it's a lot slower
for anything using a significant amount of floating-point, which is 
basically anything except FMVs.  That said, it should basically work as
long as you're making a 32-bit build.)

The other fix is a minor (but probably visible) performance improvement 
for 64-bit Linux: fixing the store JIT to work properly.  I proposed 
the patch a couple days ago, but apparently nobody tested it... this 
way, I can force everyone on 64-bit Linux to test it :)  Please add the
"NOTE: stb and stbu are broken under 64bit Linux" bit back in if this
breaks anything.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1730 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-01 13:23:08 +00:00
magumagu9 0367e7ee4d And a bit more JIT WIP work: improved code generation for integer
load/store, and outlining the start of FP support.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1729 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-01-01 12:50:23 +00:00
magumagu9 f419223908 More JIT WIP work.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1727 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-31 21:06:00 +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
magumagu9 05df5c8f3f Minor fix to rotation helpers so they don't do undefined shifts.
Probably not a big deal realistically, but better to be safe than sorry.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1725 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-31 20:42:23 +00:00
magumagu9 68c451f008 Some WIP work on the JIT... only marginally usable at the moment, but I
wanted to back this up somewhere, and the people familiar with the JIT 
might have comments.  There's a big comment in Jit64IL/IR.cpp with a 
high-level overview of what this is.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1724 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-31 01:39:35 +00:00
magumagu9 e8949267f0 I think I figured out why stb and stbu JIT is broken on Linux 64-bit. I
don't want to actually attempt to fix it because I can't really test...



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1720 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-30 03:45:16 +00:00
magumagu9 5f1f968e21 This is an ugly hack, but increase the size of the buffer... I managed
to overflow it while experimenting with the JIT.



git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1709 8ced0084-cf51-0410-be5f-012b33b47a6e
2008-12-29 02:02:35 +00:00
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