Commit graph

350 commits

Author SHA1 Message Date
Nekotekina
12eee6a19e SPU ASMJIT: Implement Mega block mode (experimental)
Disable extra modes for SPU LLVM for now.
In Mega mode, SPU Analyser tries to determine complete functions.
Recompiler tries to speed up returns via 'stack mirror'.
2018-06-05 12:35:26 +03:00
Nekotekina
ec6d1fb1ba SPU: optimize GETLLAR (TSX)
Add an option "Accurate GETLLAR"
2018-06-05 12:35:26 +03:00
Nekotekina
a5f4e6ecef SPU: fix PUTLLUC accuracy 2018-06-04 16:01:17 +03:00
Nekotekina
759370ea1b SPU: rewrite FSM/FSMH/FSMB instructions
Remove lookup tables
2018-05-30 20:35:35 +03:00
Nekotekina
55e9d437a9 Fix warning (ignored attributes) 2018-05-30 20:35:35 +03:00
Nekotekina
bdf6545571 SPU: rewrite spu_interpreter::SHUFB
Use ASMJIT to generate SSSE3+ code at runtime
Remove static SSSE3 code from spu_interpreter
2018-05-30 20:35:35 +03:00
kd-11
d48f391b41 lv2: Ease the pain of lower end CPUs
- Avoid busy waiting in usleep code as much as possible, instead yield
- Also avoid busy_wait for SPU concurrency choker
2018-05-29 13:54:30 +03:00
Nekotekina
3e580afe21 SPU: remove passive lock (fixup) 2018-05-23 15:36:29 +03:00
Nekotekina
72574b11ff SPU: use reservation spinlocks on writes (non-TSX)
This should decrease contention by avoiding global lock
2018-05-21 21:56:14 +03:00
Nekotekina
6fd402bcf8 Transactions: drop RDTSC usage
Use simple increment (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
7a6db3dd7e spu_getll_tx: diagnose loop count 2018-05-21 00:18:37 +03:00
Nekotekina
295f782b30 spu_putlluc_tx: diagnose loop count 2018-05-21 00:18:37 +03:00
Nekotekina
a33f297315 Replace notifier::lock_shared() with try_lock_shared()
Also add notify_one(), try_lock() and unlock()
Move some code in cond.cpp
2018-05-21 00:18:37 +03:00
Nekotekina
8d5bbfb850 Update SPU dump: print current MFC cmd 2018-05-21 00:18:37 +03:00
Nekotekina
33a1c743a4 Transactions: move loops inside
Rewrite loops in assembler (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
67391322f4 Transactions: touch memory only after a failure
Minor optimization
2018-05-17 22:19:26 +03:00
Nekotekina
39088e5005 SPU: Allow waiting on LR+TM events (fixup) 2018-05-17 21:21:15 +03:00
Nekotekina
7afda26c69 spu_putllc_tx: preload a little more (WIN32) 2018-05-17 18:58:08 +03:00
Nekotekina
58e4d49bb5 Fixup (endless loop) 2018-05-17 18:33:44 +03:00
Nekotekina
367f039523 Build transactions at runtime
Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
2018-05-16 17:31:58 +03:00
Nekotekina
4c7afb6952 Opt-in set DAZ and FTZ 2018-05-13 00:03:08 +03:00
Nekotekina
737db90058 Set DAZ and FTZ 2018-05-09 23:38:26 +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
767dfa271e SPU ASMJIT: internal jumptable
Allow indirect calls within current function using a jumptable
This restores some functionality removed in SPU ASMJIT 2.0
Change SPUThread::get_ch_value prototype
2018-05-08 13:05:29 +03:00
Nekotekina
4d60d85db5 SPU: fix MFC_PUTQLLUC_CMD fence trait 2018-05-08 13:05:29 +03:00
Nekotekina
9516250bec SPU: fix MFC_WrTagUpdate 2018-04-22 00:06:49 +03:00
Nekotekina
9ad5fc8a08 SPU: rewrite spu_channel_t 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
ea82b732a3 SPU: fix non-TSX path 2018-04-08 23:30:50 +03:00
Nekotekina
0797164fac SPU: fix possible livelock
The bug affects TSX path
2018-04-07 20:51:21 +03:00
Nekotekina
3681507136 Rewrite vm::reservation
Use flat virtual memory area
2018-04-07 20:51:21 +03:00
Nekotekina
2b5cf2455f SPU: improve TSX usage
Reduce transaction failure amount
Remove vm::try_to_lock
2018-04-06 21:47:54 +03:00
Nekotekina
d392379c7a Use vm::passive_lock for SPU threads 2018-04-06 15:47:00 +03:00
Nekotekina
e88508b679 SPU: cache barrier/fence masks 2018-04-06 15:47:00 +03:00
Nekotekina
0e74f2e340 Fix MMIO on SPU
Thanks Digitaldude555 for reporting the bug and @elad335 for pinging me
2018-04-01 22:39:48 +03:00
Nekotekina
d871675b3b Process RawSPU MMIO in do_dma_transfer 2018-04-01 22:39:48 +03:00
Nekotekina
bb0cfe383d Fix MFC_SYNC_CMD 2018-04-01 20:52:54 +03:00
Nekotekina
898637f830 Remove mfc_thread
Clear mfc_queue on reset
Improve MFC Proxy a bit
2018-03-31 21:13:12 +03:00
eladash
d27a375363 RawSPU/MFC: fix get start type proxy commands 2018-03-24 19:48:14 +04:00
eladash
3426531e38 qt/spu: remove max dma write size setting
This wasn't really used for anything tbh
2018-03-20 02:49:53 +04:00
Nekotekina
445b7c0758 Optimize SPU interpreter
Made SPU decoder similar to PPU decoder
2018-03-01 16:13:35 +03:00
elad
b61a69c877 fix spu interpreter single stepping 2018-02-25 20:30:44 +04:00
Nekotekina
cce0ad0c35 Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
elad
956ae17876 spu: add a missing STOP code
should fix #2456
for whatever reason, this call accepts only an empty ouput mailbox, otherwise break
2018-02-06 04:09:07 +04:00
kd-11
ab17b49e15 scheduler stuff
- more threads for rsx
- better 1600
2018-01-22 11:43:35 +03:00
kd-11
cbc8bf01a1 cell/scheduler: Manage thread placement depending on cpu hardware 2018-01-19 12:03:57 +03:00
elad
24e97b9e03 SPU: Allow writing to the WrSRR0 channel 2018-01-16 04:34:15 +04:00
elad
5848864f55 SPU: Allow reading of the RdSRR0 channel
stupid bug
2018-01-16 04:34:15 +04:00
Nekotekina
4aee4ed6d7 SPU: remove SSSE3 dependency 2017-12-20 00:04:08 +03:00