Nekotekina
71b88cdc82
New SPU interpreter (SPU fast)
...
Use LLVM to build SPU interpreter.
Simplify interpreter loop.
2019-03-27 20:33:44 +03:00
Nekotekina
7ea04d5d76
Minor optimization in SPU analyser
...
Reduce vector copy/allocation
2019-03-23 02:43:41 +03:00
Nekotekina
4b381fbbb1
Implement spu_runtime::reset
...
To handle JIT: Out Of Memory error.
2019-03-23 02:43:41 +03:00
Nekotekina
1880a17f79
SPU recs: implement spu_runtime::find
...
Use this function to link to existing functions from branch patchpoints.
Don't compile from branch patchpoints.
2019-03-23 02:43:41 +03:00
Nekotekina
31304f4234
SPU rec: refactor some trampoline generation
...
Move branch/dispatch trampoline generation at startup.
2019-03-23 02:43:41 +03:00
Nekotekina
3794f65bb6
Add cpu_flag::jit_return
2019-03-23 02:43:41 +03:00
Nekotekina
fb64b28886
SPU LLVM: reintroduce branch patchpoints
...
Previously only used on SPU ASMJIT, may improve perf in some cases.
Now refactored to spu_runtime::make_branch_patchpoint.
2019-03-01 00:08:20 +03:00
Nekotekina
765d15f23f
Optimize SPU trampolines
...
Load values in EAX and reuse it if possible
2019-03-01 00:08:19 +03:00
Nekotekina
58358e85dd
spu_runtime::add minor optimization
...
Use preallocated vectors in trampoline generation subroutine
2019-01-29 03:32:16 +03:00
Nekotekina
50922faac9
Remove SPUThread::jit_dispatcher
...
Use global array - save memory
Move the array to JIT memory
2019-01-29 03:32:16 +03:00
Nekotekina
4292997a01
Added jit_runtime class
...
Is a memory manager for ASMJIT, replaces asmjit::JitRuntime
Unified memory manager for ASMJIT and LLVM
Unified SPU trampoline generation
Remove previous workarounds
2019-01-29 03:32:16 +03:00
Nekotekina
4f152ad126
SPU: multithread compilation
...
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Nekotekina
1b37e775be
Migration to named_thread<>
...
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina
14e6577700
SPU LLVM: improve debugging RPCS3
...
Build cache in reverse order
Catch exceptions in instruction loop: print IR
2018-08-12 02:42:32 +03:00
Nekotekina
711e0f75ee
SPU LLVM: inline WRCH (preview)
...
With lööps for TSX bróþers
2018-08-12 02:42:32 +03:00
Nekotekina
e4da284176
SPU: analyser v4 and fixes
...
Build SPU cache after PPU, fix mixing progress
SPU ASMJIT: add support for Giga mode
SPU ASMJIT: use the same spu.log location as SPU LLVM
SPU: improve spu.log disasm
SPU: improve trampolines, unify with SPU ASMJIT
SPU: decode interrupt handler address from BR/BRA at 0x0
SPU LLVM: support Mega/Giga modes
SPU LLVM: implement function chunks
SPU LLVM: use PHI nodes, value visibility across basic blocks
SPU LLVM: implement function chunk table
New simple memory manager for LLVM (bugfix)
2018-06-21 22:29:34 +03:00
Nekotekina
1e107487da
SPU: improve analyser (v3)
2018-06-04 16:01:17 +03:00
Nekotekina
3c70645f0b
Update SPU cache (v2)
...
Improve SPU analyser: filter unreachable fragments
More strict NOP/LNOP analysis
Fill block predecessors info
ASMJIT: fix assertion and improve indirect branch
2018-05-13 20:40:23 +03:00
Nekotekina
be5c18cc85
SPU Re: more precise jt generation
...
Improve analyser, set v1
Fix branch indirect conditional
2018-05-12 23:50:49 +03:00
Nekotekina
fe4c3c4d84
Implement SPU recompiler cache
...
Shared between ASMJIT/LLVM recompilers, compiled at startup
2018-05-09 23:35:18 +03:00
Nekotekina
8f91917e8c
SPU ASMJIT: simplify patchpoints
...
Remove SPU thread reference from spu_recompiler_base
Disable support for far jumps in pathpoints (they were rare and unsafe)
2018-05-09 22:19:55 +03:00
Nekotekina
1ca51a023c
SPU LLVM Recompiler (preview)
2018-05-09 22:19:55 +03:00
Nekotekina
16f5167aed
SPU Analyser improved
...
This restores some functionality removed in SPU ASMJIT v2.0
Also implements new experimental features
2018-05-08 13:05:29 +03:00
Nekotekina
3ffafb741c
SPU ASMJIT: übertrampolines and spu_runtime
...
Use opt-out shared spu_runtime to save memory (Option: SPU Shared Runtime)
Implement "übertrampolines" for dispatching compiled blocks
Patch fixed branch points to use trampolines after check failure
2018-04-22 00:06:49 +03:00
Nekotekina
8ca33bcb94
SPU ASMJIT v2.0
...
Use X86Assembler and blocks
2018-04-22 00:06:48 +03:00
Nekotekina
9232ddf0ab
Minor changes
2017-01-25 04:43:12 +03:00
Nekotekina
e2d82394f6
Cell
2016-05-23 16:22:23 +03:00
Nekotekina
c4e99dbdb2
Partial commit: Cell
2016-04-15 19:22:34 +03:00
Nekotekina
7e01c81154
SPU Recompiler fixed
2015-09-07 00:36:32 +03:00
Nekotekina
817fec9684
SPU Cleanup
...
SPURecompiler improved
Old SPU decoder removed
SPU Interpreters merged
2015-09-02 00:38:44 +03:00
Nekotekina
6f3c50eba2
u128 renamed to v128
...
Since it's vector union type
2015-08-24 21:22:23 +03:00
Nekotekina
32d3d1fbe5
EXCEPTION() macro usage, sceNpTrophy improved
2015-07-10 04:31:20 +03:00
Nekotekina
39f836b495
re32/se32/... macro eliminated, some fixes
2015-07-10 04:31:09 +03:00
Nekotekina
22b78fec71
IdManager improved, atomic_t improved
...
Various changes
2015-05-27 06:11:59 +03:00
Nekotekina
d1fbccc9ce
SPURecompiler improved
2015-04-05 21:01:15 +03:00
Nekotekina
d2883fc554
SPURecompiler cleanup
2015-04-04 21:21:49 +03:00
Nekotekina
ef563f038d
SPU: some instructions updated
2015-03-21 02:36:05 +03:00
Nekotekina
5f8cf18a5a
SPU refactoring
2015-03-03 00:09:20 +03:00
Nekotekina
79d03ece66
ARMv7 decoder improved
2015-01-22 00:09:37 +03:00
Nekotekina
9fc7197c4f
cellGameContentPermit: extremely DANGEROUS bug fixed
...
And few tiny changes.
2014-11-29 20:41:18 +03:00
Nekotekina
0f602e0e13
Bugfix
2014-10-28 19:46:14 +03:00
Nekotekina
973e3f8f7e
Few instructions simplified
2014-10-24 02:06:15 +04:00
Nekotekina
7777be6fc1
Some things simplified
2014-10-23 02:53:44 +04:00
Nekotekina
b7d0bfa972
SPU branch D/E flags workaround
2014-10-10 01:38:02 +04:00
Nekotekina
237ab974dd
SPURS kernel v1
2014-10-07 17:35:44 +04:00
Nekotekina
74007d5e5d
Small changes in memory and RSXIOMem
...
Some bugs fixed, some other changes.
2014-10-04 18:43:46 +04:00
Nekotekina
e5a485e50b
More changes
2014-09-23 03:07:40 +04:00
Nekotekina
0044141631
sys_process_is_spu_lock_line_reservation_address
...
Formatting changed a bit
2014-09-17 17:15:17 +04:00
Nekotekina
597d07bf24
Small refactoring
2014-09-15 02:17:24 +04:00
Nekotekina
8cde1c18c4
Cb fix
2014-09-12 00:46:11 +04:00