Commit Graph
27588 Commits
Author SHA1 Message Date
Unknown W. Brackets fbeedd333b irjit: Swap moves when it may allow clobbering.
Example:
addiu a0, a1, a2
mov s0, a0
addiu a0, a2, a3

By swapping the mov, we can eliminate it.

Only going one back because it's common and didn't want to track reads.
2018-01-07 21:06:02 -08:00
Unknown W. Brackets d27e428659 irjit: Convert lwr and friends to easier code.
This makes it easier to write a (working) jit backend from IR, since these
ops are always annoying to get right.
2018-01-07 21:06:00 -08:00
Unknown W. Brackets b11f00cead irjit: Combine lwl/lwr and swl/swr, like before.
Still want to inline the operation, because the backend shouldn't have to
redo it every time, and we want the temps cleaned up if possible.
2018-01-07 21:05:58 -08:00
Unknown W. Brackets c6d690e9b8 irjit: Handle Left/Right ops in passes. 2018-01-07 21:05:57 -08:00
Unknown W. Brackets 6dda053365 irjit: Add dedicated ops for lwl/swl and friends.
Temporarily removes optimizations.
2018-01-07 21:05:57 -08:00
Unknown W. Brackets cd3f4881a5 irjit: Optimize out temp lhs copies.
Common example:
li v0, 1
beq s2, v0, somewhere
li v0, 2

Which was copying s2 before.  This pattern generally doesn't happen in
MIPS code, though, so really only catches that (very common) case.
2018-01-07 12:11:16 -08:00
Unknown W. Brackets 97674b80bd irjit: Skip preloading blocks with jump to 0.
These will be changed before executing anyway.
2018-01-06 17:23:53 -08:00
Unknown W. Brackets cc8e9a93c3 irjit: For debug, return the best block at addr.
Invalidation may result in multiple matching blocks, prefer any that is
currently valid.
2018-01-06 17:08:54 -08:00
Unknown W. Brackets 463b2a90c7 irjit: Allow precompiling funcs at start.
This can take a second, but cuts down on jitc spikes throughout runtime.
Note: bits of the game will still be recompiled as games change code.

This is basically the same operation as loading from cache, without the
cache yet.
2018-01-06 17:06:53 -08:00
Unknown W. Brackets 6149ac584f jit: Add interface to precompile functions.
This doesn't actually do any preloading yet, it just adds an API.
2018-01-06 16:43:38 -08:00
Henrik Rydgård a989b4a933 Merge pull request #10507 from KentuckyCompass/ios-resolution-fix
Require iOS 8 and up, add a launch screen, use full resolution
2018-01-05 09:15:28 +01:00
Henrik Rydgård 94e73bcb5e Merge pull request #10508 from unknownbrackets/irjit
Improve IR debug output
2018-01-05 09:14:02 +01:00
Unknown W. Brackets ccd562d934 irjit: Add a safety check for block num overflow.
In case a game is very frequently modifying some block.
2018-01-04 23:24:15 -08:00
Unknown W. Brackets 5b9b6daea8 irjit: Enable more debug UI for block selection. 2018-01-04 23:10:49 -08:00
Unknown W. Brackets 0bfab27b46 irjit: Calculate bloat statistics.
At least based on IR for now.  Can do something else later.

memset() was causing a crash on the std::map.
2018-01-04 23:09:03 -08:00
Henrik Rydgård 2709472abd Merge pull request #10506 from hrydgard/ir-interpreter-simd
More IR interpreter SIMD
2018-01-05 01:21:32 +01:00
Henrik Rydgård 8c3a50d089 Merge pull request #10505 from hrydgard/ir-disasm-jit-compare
Show IR disassembly in JIT Compare screen
2018-01-05 01:20:49 +01:00
Henrik Rydgård d1d01bfdcb Cleanup GetBlockNumberFromStartAddress 2018-01-05 01:20:10 +01:00
Henrik Rydgård 331a8f91e8 Fix that weird unordered compare mode, hopefully 2018-01-04 20:06:26 +01:00
Henrik Rydgård 18be23eccc IR: More fixes. Still something wrong with VFPU compares (not caused by this PR). 2018-01-04 19:38:36 +01:00
Kentucky Compass 6ea4924ee9 require iOS 8, add a launch screen 2018-01-04 09:56:49 -08:00
Henrik Rydgård ca9050b84c On Linux, can't even include nmmintrin without explicitly enabling SSE 4.2 support. 2018-01-04 18:27:19 +01:00
Henrik Rydgård fe88d12055 IR interpreter: Add some braces to allow variable declaration in the switch cases. 2018-01-04 18:27:19 +01:00
Henrik Rydgård e0cc126d09 Add some more SIMD support to IR interpreter. Mostly just because, but also serves as implementation reference for later code generation backends. 2018-01-04 18:27:19 +01:00
Henrik Rydgård a128624f98 IRInterpreter: Fix bugs in floating point truncation functions 2018-01-04 18:25:54 +01:00
Henrik Rydgård 1a97f62dc9 Fix running the CPU test from the UI. 2018-01-04 18:10:41 +01:00
Henrik Rydgård 468b830bec Show IR disassembly in JIT Compare screen 2018-01-04 12:23:23 +01:00
Henrik Rydgård 604b3c3e97 IR Interpreter: Add missing break; to switch case IROp::FSign. 2018-01-04 11:08:56 +01:00
Henrik Rydgård c3f271c715 Merge pull request #10503 from unknownbrackets/irjit
irjit: Embed constant inside IRInst (now 64-bit)
2018-01-04 09:58:55 +01:00
Unknown W. Brackets bc541bd020 irjit: Encode downcount directly as a constant.
Simpler this way, now.
2018-01-03 23:32:31 -08:00
Unknown W. Brackets cffb2d61a7 irjit: Embed constant inside IRInst.
This simplifies a bunch of code and improves compile performance by about
30%, at the cost of a bit more memory.
2018-01-03 23:24:04 -08:00
Henrik Rydgård 5c50c007b7 Minor fix for previous commit. 2018-01-03 18:21:50 +01:00
Henrik Rydgård b59503957b Merge pull request #10502 from unknownbrackets/irjit
irjit: Fix swr typo
2018-01-03 17:16:59 +01:00
Unknown W. Brackets 64b57a0329 irjit: Fix swr typo.
Shifting the wrong direction - oops.
2018-01-03 08:14:25 -08:00
Henrik Rydgård e7893001e9 VertexDecoderCommon: A few more cases. 2018-01-03 17:02:07 +01:00
Henrik Rydgård 3ac2350ad6 IR Interpreter: Add a comment, minor cleanup, minor SSE stuff. 2018-01-03 16:31:55 +01:00
Henrik Rydgård e472947488 VertexDecoderCommon: Avoid reading the destination during vertex decode, might be some kind of memory that's not good to read from... 2018-01-03 16:31:01 +01:00
Henrik Rydgård 2e2d76e109 Merge pull request #10501 from unknownbrackets/analyst
Scan the correct sections of modules for code
2018-01-03 12:20:05 +01:00
Unknown W. Brackets 29ed48c32a Module: Avoid scanning stubs if possible.
In this case, we often scan some garbage, but let's reduce it at least.
2018-01-02 22:21:08 -08:00
Unknown W. Brackets 00a05e97ac Module: Scan modules with no sections at all.
Also, fix some off-by-one issues with end addresses.
2018-01-02 22:20:09 -08:00
Unknown W. Brackets 30b2d05bac Module: Correct detection of executable sections. 2018-01-02 21:53:13 -08:00
Henrik Rydgård 690a409dac Merge pull request #10496 from unknownbrackets/cpu-bgstart
Core: Asynchronously load the main ELF
2018-01-02 11:31:58 +01:00
Henrik Rydgård 3b9d0015a3 Merge pull request #10498 from unknownbrackets/irjit
irjit: Properly account for delay slots in size
2018-01-02 11:31:00 +01:00
Unknown W. Brackets 9952d4bac5 UI: Fade in loading much slower to avoid flicker.
On Android, it often takes 0.3s or longer to load a game.  Avoid fading it
all the way in for just a short moment, if it's gonna be quick.
2018-01-01 23:07:48 -08:00
Unknown W. Brackets d4400b358a UI: Actually offset text shadow.
It wasn't actually visible before, since it was strictly underneath text
that was usually white.
2018-01-01 22:58:07 -08:00
Unknown W. Brackets c793da500a UI: Show PIC1 while loading.
In case it takes a second, less ugly than a black screen.
2018-01-01 22:58:07 -08:00
Unknown W. Brackets b41413b8a5 Core: Asynchronously load the main ELF.
Sometimes it takes a little time.  More importantly, this allows us to
load caches or do other things at start that might be a tad slow.

Not doing anything like that yet, though.
2018-01-01 22:58:06 -08:00
Unknown W. Brackets b11858d9a0 irjit: Properly account for delay slots in size.
Otherwise we think blocks are 4 bytes too short, which can affect
invalidation.
2018-01-01 22:54:40 -08:00
Unknown W. Brackets 307efe7ecb Merge pull request #10495 from KentuckyCompass/ios-profiler
iOS: Fix crash with USE_PROFILER, pass command line args to NativeInit, misc cleanups
2018-01-01 19:51:46 -08:00
Kentucky Compass e3af9f401f iOS: ViewController cleanups - delete unused code and properties 2018-01-01 19:12:52 -08:00