Commit graph

48 commits

Author SHA1 Message Date
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