1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-26 18:29:54 +00:00
Commit Graph

276 Commits

Author SHA1 Message Date
jespergravgaard
b9831c9445 Implemented register uplift combination search. This yields near optimal register allocation - but at a calculation cost at O(4^N) where N is the number of live range equivalence classes in a scope. 2017-08-02 00:57:29 +02:00
jespergravgaard
14c8ec13bf Improved segment generation 2017-08-01 20:38:55 +02:00
jespergravgaard
323e10ab37 Introduced Asm Segments which establish relation between ASM code and the generating ICL. 2017-08-01 13:58:15 +02:00
jespergravgaard
14c1f7e8eb Now identifying undeclared variables 2017-08-01 01:33:42 +02:00
jespergravgaard
b56f634b1e Merge remote-tracking branch 'gitlab/master' 2017-07-31 23:41:25 +02:00
jespergravgaard
64d9ff3f23 Gathered all pass results in Program. 2017-07-31 23:41:10 +02:00
Jesper Gravgaard
46dd64e46c Fixed test data 2017-07-31 23:39:42 +02:00
Jesper Gravgaard
27084f8667 Merge remote-tracking branch 'gitlab/master' 2017-07-31 23:38:05 +02:00
Jesper Gravgaard
4a9a3d54f5 Fixed test data 2017-07-31 23:37:15 +02:00
jespergravgaard
5d21c6aa97 Added indexes to ASM lines in AsmProgram 2017-07-31 21:53:42 +02:00
jespergravgaard
47e8b6b2b9 More fragments - a start at calculating value for ASM. 2017-07-31 20:00:25 +02:00
Jesper Gravgaard
18bbde8a44 Started implementing register uplift with clobber checks. Added a bunch of missing fragments. Added a few failing tests of errors that should give a nice error message. 2017-07-30 16:31:59 +02:00
jespergravgaard
3a14d2ef5b Cleaned up pointer handling in ASM fragments and binding 2017-07-30 11:28:28 +02:00
jespergravgaard
5f1cf097a4 Added a pointer test 2017-07-30 11:08:44 +02:00
jespergravgaard
120eba90a5 Implemented clobber assertion check for testing potential register allocations. 2017-07-29 23:38:07 +02:00
jespergravgaard
e34e01544b Fixed constant addition elimination. Moved ASM generation for a single statement to separate function - preparing for clobber analysis of register allocation. Added fibmem test. Tested ALU. 2017-07-29 21:04:28 +02:00
jespergravgaard
7f20f2a6ba Implemented variable register weight analysis. 2017-07-29 17:10:32 +02:00
jespergravgaard
0377193ec8 Moved to maven based configuration & build. 2017-07-29 14:59:55 +02:00
jespergravgaard
c12c45b5bd Fixed cross-scope aliasing. Improved assignment ASM for register copies. 2017-07-29 13:41:47 +02:00
jespergravgaard
d159163f21 fixed tests 2017-07-29 11:18:15 +02:00
jespergravgaard
438bdc38b4 Propagating live ranges backwards through calls to avoid coalescing variables in procedures with variables alive outside during the call. 2017-07-29 11:08:24 +02:00
jespergravgaard
9634741d76 Split zero page register allocation into separate phase steps. Added live range information to register allocation phases. 2017-07-29 10:24:37 +02:00
jespergravgaard
b4d5685222 Added a nested loop test. 2017-07-28 03:08:19 +02:00
jespergravgaard
007a5d34b4 Implemented loop depth analysis pass. 2017-07-28 02:55:19 +02:00
jespergravgaard
d1a13402fe Added loop depth analysis pass - not implemented yet. 2017-07-28 01:23:20 +02:00
jespergravgaard
45e64d59f1 A few renames and better doc. 2017-07-28 00:43:55 +02:00
jespergravgaard
d501534561 Implemented call graph analysis. 2017-07-28 00:38:17 +02:00
jespergravgaard
e7ea5fb4ea Implemented control flow graph loop analysis. 2017-07-27 22:20:50 +02:00
jespergravgaard
709cc57a1a Implemented graph dominator analysis. 2017-07-27 15:23:46 +02:00
jespergravgaard
be212f3b38 Implemented live ranged based register allocation - coalescing on phi statements first, copy-assignments second, other assignments third - and finally the remaining vars are added. 2017-07-27 01:33:10 +02:00
jespergravgaard
13c84a1741 Implemented PhiMemCoalesce. 2017-07-26 19:44:51 +02:00
jespergravgaard
16d4ab93f0 Added another block assertion 2017-07-26 17:01:01 +02:00
jespergravgaard
878059da13 Added more asserts 2017-07-26 16:09:47 +02:00
jespergravgaard
d7e0a638f2 Fixed tests 2017-07-26 15:14:56 +02:00
jespergravgaard
bebf020364 Improved phi lifting by introducing new blocks when lifting back to blocks with conditional jumps. Improved sequence planner to ensure blocks in the same scopes are kept together. 2017-07-26 15:09:00 +02:00
jespergravgaard
c43ab3acef Implemented variable live range identification 2017-07-26 00:26:50 +02:00
jespergravgaard
69cbee294d Made room for new pass 3 interval analysis 2017-07-25 00:56:42 +02:00
jespergravgaard
0aa64b3203 Added pass1 optimization removing empty blocks. 2017-07-25 00:21:40 +02:00
jespergravgaard
2819d3c58a Added pass1 optimization removing empty blocks. 2017-07-25 00:17:56 +02:00
jespergravgaard
524252105a Refactored toString to avoid redundant code. 2017-07-24 08:19:44 +02:00
jespergravgaard
300bb644b9 Refactored phi to use blocks instead of individual statements 2017-07-23 23:29:40 +02:00
jespergravgaard
122cef4e30 Better label naming when creating intermediate labels 2017-07-21 12:18:05 +02:00
jespergravgaard
88c7ed453a Better label naming when creating intermediate labels 2017-07-21 11:32:41 +02:00
jespergravgaard
4c0a9cd241 Removed cast calls to getSymbol() 2017-07-21 10:49:28 +02:00
jespergravgaard
6ef3af4fdf ICL Programs are now JSON serializable 2017-07-21 01:53:38 +02:00
jespergravgaard
d38c26eeb5 added a few toString()s 2017-07-20 10:14:22 +02:00
jespergravgaard
00463cd72f Moved all ref creation to getRef() 2017-07-20 10:02:25 +02:00
Jesper Gravgaard
de88808c5f Replaced all program labels with labelrefs ans procedures with procedurerefs. 2017-07-20 09:26:06 +02:00
Jesper Gravgaard
e6d09187e3 Added typed and untyped print functions everywhere. Now getting the same output as the old compilation! 2017-07-19 13:21:16 +02:00
Jesper Gravgaard
6e087e9a1c Now serializing all symbol types 2017-07-18 23:13:24 +02:00