Jean-Philip Desjardins
09e179cba0
Make block invalidation a bit faster.
2024-01-08 09:14:10 -05:00
Jean-Philip Desjardins
638ac5797b
Allow blocks not to have a branch link.
2022-12-01 11:14:30 -05:00
Jean-Philip Desjardins
930e90a9a2
Stay inside block when it's branch target is itself.
2022-12-01 09:03:40 -05:00
Mahmood - Zer0xFF
e524296ecd
Fix Build: pack AOT_BLOCK_KEY structure
2022-10-25 17:27:52 -04:00
Mahmood - Zer0xFF
53efd4f52d
update AOT block references to use new hash
2022-10-25 17:27:52 -04:00
Mahmood - Zer0xFF
29bd2522e6
swap from crc32 to xxHash3 (128bit)
2022-10-25 17:27:52 -04:00
Jean-Philip Desjardins
340e04dd8a
Fix block linking support.
2022-10-25 17:27:52 -04:00
Mahmood - Zer0xFF
eb057660d5
Add CBasicBlock::CopyFunction(...)
2022-10-25 17:27:51 -04:00
Jean-Philip Desjardins
91c4989dfe
Fix PsfPlayer build.
2022-10-17 16:15:05 -04:00
Jean-Philip Desjardins
4a7b10cad1
Add block category concept.
2022-10-17 14:27:13 -04:00
Jean-Philip Desjardins
dd90e7b7ae
Move idle loop detection logic.
...
This is an EE only thing, no point in having this in the generic code.
2022-01-21 20:09:08 -05:00
Jean-Philip Desjardins
7e51fc99c4
Add analysis to detect blocks that just loop waiting for a flag to change.
...
If we find such a case, the block will stop executing its quota and report idle time.
This first version improves Castlevania: Curse of Darkness and Contra: Shattered Soldier.
2022-01-21 20:09:07 -05:00
Jean-Philip Desjardins
e5e9a6cb76
Add padding in AOT_BLOCK_KEY to align pointers on 8 bytes.
2021-01-14 12:58:45 -05:00
Jean-Philip Desjardins
b99ac3e3d8
Greatly improve block link bookkeeping algorithm.
...
Improves performance on code generating games/homebrew.
2020-08-06 16:57:12 -04:00
Jean-Philip Desjardins
95584611ca
Add a no link threshold for recycled blocks.
...
Significatively improves speed of Jak series games.
2019-12-20 21:25:33 -05:00
Jean-Philip Desjardins
55d435e9a9
Make CompileRange public.
2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
9f4eda3d3d
Make block link related functions externally linkable.
2019-05-09 13:00:34 -04:00
Jean-Philip Desjardins
e584f5d639
Update for CodeGen's new external symbol ref handler.
2018-09-28 13:31:24 -04:00
Jean-Philip Desjardins
a68cf01d09
Fix build.
2018-07-26 21:38:17 -04:00
Jean-Philip Desjardins
3210ffecfa
Breakpoints now work again.
2018-07-26 21:38:17 -04:00
Jean-Philip Desjardins
f2f0b9e6ca
Prolog is actually the epilog.
2018-07-26 21:38:16 -04:00
Jean-Philip Desjardins
ab5aebc3a7
Make sure everything is coherent when deleting blocks.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
3952e74d32
Simplify block link code.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
1f4ba149a1
Block link WIP.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
dc597e34ce
Add empty block concept.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
b30658ba1a
Move cycle quota update to block prolog.
2018-07-26 21:38:15 -04:00
Jean-Philip Desjardins
5e6058b530
Move PC changing piece of code in compiled block.
...
Makes basic blocks more generic.
2018-07-26 21:38:14 -04:00
Clang-Format
acf75535ec
Clang format
2018-04-30 21:01:23 +01:00
Jean-Philip Desjardins
f97d0a1c47
Remove self loop counter.
2017-08-09 23:05:30 -04:00
Jean-Philip Desjardins
3098487d33
Cleanup.
2017-08-09 23:05:30 -04:00
Jean-Philip Desjardins
3d8c672313
Made sure memory layout on AOT_BLOCK is independent of the architecture.
2015-10-19 13:10:16 -04:00
jpd002
3d4bbb9260
Removed unused piece of code.
...
git-svn-id: http://svn.purei.org/purei/trunk@1605 b36208d7-6611-0410-8bec-b1987f11c4a2
2014-12-31 23:22:00 -05:00
jpd002
e72d42db22
Allow PSP blocks to be AOT compiled properly and to live alongside IOP blocks (a bit hackish though).
...
git-svn-id: http://svn.purei.org/purei/trunk@1604 b36208d7-6611-0410-8bec-b1987f11c4a2
2014-12-31 23:21:59 -05:00
Jean-Philip Desjardins
f7778de2c2
Revert "Added prediction for next block to be executed in BasicBlock and MipsExecutor."
...
This reverts commit b0e3693195
.
2014-10-18 18:32:26 -04:00
Jean-Philip Desjardins
b0e3693195
Added prediction for next block to be executed in BasicBlock and MipsExecutor.
2014-10-15 02:37:57 -04:00
jpd002
0f75cf8538
Added AOT compiled block support in BasicBlock and fixed some compilation problems in VuExecutor.
...
git-svn-id: http://svn.purei.org/purei/trunk@1098 b36208d7-6611-0410-8bec-b1987f11c4a2
2013-04-14 06:35:40 +00:00
jpd002
372740688f
Removed intrusive_ptr stuff from BasicBlock and use move operator = instead of allocating a new CMemoryFunction.
...
MipsExecutor now manages its blocks with unique_ptrs.
git-svn-id: http://svn.purei.org/purei/trunk@1096 b36208d7-6611-0410-8bec-b1987f11c4a2
2013-04-12 02:35:55 +00:00
jpd002
7109682836
Cleanup.
...
git-svn-id: http://svn.purei.org/purei/trunk@907 b36208d7-6611-0410-8bec-b1987f11c4a2
2012-04-15 22:00:47 +00:00
jpd002
f910661c47
First pass of cleanup for C++11.
...
git-svn-id: http://svn.purei.org/purei/trunk@851 b36208d7-6611-0410-8bec-b1987f11c4a2
2012-03-11 20:06:14 +00:00
jpd002
808846c617
Iphone compilation fix.
...
git-svn-id: http://svn.purei.org/purei/trunk@723 b36208d7-6611-0410-8bec-b1987f11c4a2
2010-11-27 07:15:47 +00:00
jpd002
75cb0db8f4
Changed basic block memory management to use intrusive_ptr and added a block caching mechanism in VuExecutor to speed things up.
...
git-svn-id: http://svn.purei.org/purei/trunk@719 b36208d7-6611-0410-8bec-b1987f11c4a2
2010-11-17 03:59:29 +00:00
jpd002
4574b116f7
Integrated new JIT compilation engine in the trunk.
...
- Removed the old CodeGen classes.
- Fixed everything to make PsfPlayer work at a decent level.
- Added 64-bits configs to PsfPlayer.
git-svn-id: http://svn.purei.org/purei/trunk@692 b36208d7-6611-0410-8bec-b1987f11c4a2
2010-08-11 03:47:19 +00:00
jpd002
1b07b4716d
Changes for Half-Life.
...
git-svn-id: http://svn.purei.org/purei/trunk@527 b36208d7-6611-0410-8bec-b1987f11c4a2
2009-06-06 15:38:03 +00:00
jpd002
ccdfb49d56
More ARM stuff
...
git-svn-id: http://svn.purei.org/purei/trunk@519 b36208d7-6611-0410-8bec-b1987f11c4a2
2009-05-09 16:17:21 +00:00
jpd002
2ab17d0778
Added block linking to the executor.
...
git-svn-id: http://svn.purei.org/purei/trunk@350 b36208d7-6611-0410-8bec-b1987f11c4a2
2008-06-30 18:58:04 +00:00
jpd002
93fac4df68
Removed some unused/old stuff.
...
Added a basic idle loop skipper.
git-svn-id: http://svn.purei.org/purei/trunk@272 b36208d7-6611-0410-8bec-b1987f11c4a2
2008-03-19 11:30:45 +00:00
jpd002
6835a6da83
Completed enough opcodes to be able to run the "Final Heaven" demo.
...
git-svn-id: http://svn.purei.org/purei/trunk@181 b36208d7-6611-0410-8bec-b1987f11c4a2
2007-12-06 21:36:12 +00:00
jpd002
38e1632c11
Project heavily modified from previous revision.
...
git-svn-id: http://svn.purei.org/purei/trunk@180 b36208d7-6611-0410-8bec-b1987f11c4a2
2007-12-01 04:08:34 +00:00