Commit Graph
3004 Commits
Author SHA1 Message Date
Henrik Rydgard a528921f3c x86 JIT: EBX was free in 32-bit mode, let's use it in the regcache. 2014-11-09 12:55:17 +01:00
Henrik Rydgard db853d8513 Collapse sequences of "int3" (padding after block linking) in x86 disassembly. 2014-11-09 12:10:37 +01:00
Henrik Rydgard 5888b3bdc4 Revert "x86jit: Micro optimize slt* a bit."
This reverts commit ee66596b8d.

Broke a lot of games, probably some small bug.

Conflicts:
	Core/MIPS/x86/CompALU.cpp
2014-11-09 12:07:21 +01:00
Henrik Rydgard 5bcdecc26b unittest: Have the JIT harness print disassembly, to make it easy to inspect results. 2014-11-09 12:03:04 +01:00
Unknown W. Brackets 313d9e95c7 Clarify a comment. 2014-11-09 01:05:03 -08:00
Unknown W. Brackets ee66596b8d x86jit: Micro optimize slt* a bit.
This improves their performance and hopefully latency.  It also avoids
filling registers that are not likely to be used again.
2014-11-08 22:54:03 -08:00
Unknown W. Brackets 27d8108bb2 x86jit: Optimize loads of 0 into fp regs. 2014-11-08 18:41:16 -08:00
Unknown W. Brackets 7d8858687e x86jit: Avoid speculative loads in mtc1/mfc1. 2014-11-08 18:35:15 -08:00
Unknown W. Brackets 57caa95273 x86jit: Implement round.w.s and friends.
They are not terribly fast, though, updating MXCSR.
2014-11-08 17:59:38 -08:00
Unknown W. Brackets 3908e0f445 x86jit: Small optimization for add.s f1, f2, f2.
Doubles the speed of that particular case.  Biggest difference is not
loading fd for no reason.
2014-11-08 17:32:53 -08:00
Unknown W. Brackets f9893c29ce x86jit: Very small optimization to c.nge.s. 2014-11-08 17:01:02 -08:00
Unknown W. Brackets 78dfe43776 x86jit: Optimize neg.s and abs.s a tiny bit.
Same reg is probably a common case, improves micro benchmark.
2014-11-08 16:50:41 -08:00
Unknown W. Brackets bed0d0b059 x86jit: Improve cvt.w.s when fd is loaded or fs.
We have no need to store it.
2014-11-08 16:40:54 -08:00
Unknown W. Brackets 1917d946ea x86jit: Micro optimize cvt.s.w a bit.
This implementation is about 5x faster for micro benchmarks.  Little
impact to overall perf in games I tested, though.
2014-11-08 13:30:38 -08:00
Unknown W. Brackets 671dee85c7 x86jit: Micro optimize vi2f a little bit.
This didn't help overall perf much but micro benchmarks are better.
2014-11-08 13:07:01 -08:00
Unknown W. Brackets c29b126357 x86jit: Oops, can't have an imm here. 2014-11-08 12:41:48 -08:00
Unknown W. Brackets c0be19edb6 x86jit: Simplify vavg a bit. 2014-11-08 12:40:04 -08:00
Unknown W. Brackets 761e269e5f x86jit: Avoid some regcache pollution. 2014-11-08 12:38:08 -08:00
Unknown W. Brackets bc7497857a x86jit: Micro optimize vi2x a bit with ssse3/sse4.
Both are small wins.
2014-11-08 12:13:26 -08:00
Unknown W. Brackets 0e646f748a x86jit: Implement vi2x instructions.
Also, my opcodes were wrong in the test (shifted the pair bit the wrong
way, oops.)

AFAICT, there's no reason PSRAD/etc. were not encoding REX...
2014-11-08 12:13:26 -08:00
Unknown W. Brackets ddc90ee550 x86jit: Implement vfad and vavg. 2014-11-08 12:13:25 -08:00
Unknown W. Brackets 5ae43defd9 Oops, these should be signed. 2014-11-08 09:39:17 -08:00
Unknown W. Brackets 316e923b40 x86jit: Implement other forms of vx2i.
Gains 3.2% performance in Grand Knights History.
2014-11-08 00:39:40 -08:00
Unknown W. Brackets 097a483d77 x86jit: Micro optimize vs2i a bit. 2014-11-06 22:45:54 -08:00
Unknown W. Brackets 7819b97c9a iOS buildfix. 2014-11-04 08:32:43 -08:00
TwistedUmbrella 6797044476 Correct a namespace typo 2014-11-04 05:10:22 -05:00
Unknown W. Brackets 3061e89250 Fix copy/paste mistake. 2014-11-04 01:41:17 -08:00
Unknown W. Brackets 0d36d4e082 Add a helper to reduce duplicate code.
This is not performance critical.  I wonder if compilers can inline
closures?
2014-11-03 23:50:23 -08:00
Unknown W. Brackets 16ca2b0155 x86jit: Fix trig vv2ops on 32-bit, arg. 2014-11-03 23:43:18 -08:00
Unknown W. Brackets 3e95763a3f x86jit: Implement other rounding modes in vf2i.
3% improvement in Grand Knights History.  I know other games use these
too.
2014-11-03 23:27:05 -08:00
Unknown W. Brackets 717cf25f0d x86jit: Use our sincos funcs for VV2Op as well.
Small (0.7%) speedup in Gods Eater Burst.  There's probably SSE
approximations we could use instead, but those will also need at least xmm
reg flushing/thunking.

At least this avoids flushing gprs, etc.  The sin and cos ops are fairly
common.
2014-11-03 22:13:38 -08:00
Unknown W. Brackets 014445655d Actually clear the hash->func map on forget.
Better not to have dangling pointers.
2014-11-03 13:49:45 -08:00
Unknown W. Brackets ad6b176e11 Naturally, modern C++ would not build on Symbian. 2014-11-03 08:56:45 -08:00
Unknown W. Brackets 61c21340fb Warning fixes. 2014-11-03 08:34:34 -08:00
Unknown W. Brackets 9d86d3ca9b Use std::unordered_multimaps in a few places. 2014-11-03 08:31:52 -08:00
Unknown W. Brackets 67a7205bdd Switch to a multimap for the hash->function map. 2014-11-03 07:59:56 -08:00
Unknown W. Brackets 56322bdad4 Improve performance of ForgetFunctions().
Mostly matters during shutdown, but also module unload.
2014-11-02 17:32:04 -08:00
Unknown W. Brackets 258b7c9a7c jit: Use the end just to be safe.
In case clearing near the end of a block.
2014-10-27 19:05:52 -07:00
Unknown W. Brackets 5bb9d32eaa jit: Fix partial invalidation of larger blocks.
Fixes #7031.
2014-10-27 19:04:19 -07:00
Unknown W. Brackets 100afc07a2 x86jit: Fix andLink cases of imm blezl, etc. 2014-10-24 08:57:56 -07:00
Unknown W. Brackets 0c1dcfeacf Avoid comparing invalidated iterators. 2014-10-22 00:50:39 -07:00
Unknown W. Brackets 65ecc9a464 jit: Use an exclusive end in the block map.
Simpler, was not consistent before, oops.
2014-10-21 11:52:19 -07:00
BlackDog f7e8ca486c add lwc1 lwc2 swc1 swc2 opcodes 2014-10-19 20:42:12 +02:00
Unknown W. Brackets ef6d583542 x86jit: Oops, don't pad INT3s in prelinked blocks.
Fixes #7007.
2014-10-15 22:07:56 -07:00
Unknown W. Brackets b53f13480a x86jit: Centralize continuing logic. 2014-10-12 19:01:04 -07:00
Unknown W. Brackets 040a6d1745 jit: Improve performance of clearing jit. 2014-10-12 19:00:03 -07:00
Unknown W. Brackets e6373aaed9 jit: Remove from the block map more carefully. 2014-10-12 17:47:07 -07:00
Unknown W. Brackets 2e81a38892 jit: Fix a possible infinite loop in invalidation. 2014-10-12 17:46:54 -07:00
Unknown W. Brackets 4853a1b7a0 jit: Optimize proxy block lookup from address.
It was really slow before with enough proxy blocks.
2014-10-12 17:35:23 -07:00
Unknown W. Brackets 1064f580e4 armjit: Add proxy blocks for continuing. 2014-10-12 17:20:26 -07:00