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

304 Commits

Author SHA1 Message Date
jespergravgaard
5a075a0ce4 Added for syntax to parser 2017-08-14 08:34:02 +02:00
jespergravgaard
d5f62dfd11 Improved program flow for if-statements without else by inverting the condition and jumping over the stmts. Improved fragment synthesizing. 2017-08-13 03:03:56 +02:00
jespergravgaard
7b30fa4f2c Added ifmin() for optimizing if() block sequence. 2017-08-13 00:44:48 +02:00
jespergravgaard
4741a2d22e Improve pass structure 2017-08-13 00:30:51 +02:00
jespergravgaard
9c8372b989 Redundant and unused label elimination in ASM. 2017-08-12 21:27:36 +02:00
jespergravgaard
5f27eba623 Fixed scope issues in ASM. Added scope to blocks. 2017-08-12 20:16:07 +02:00
Jesper Gravgaard
15a9415d63 Improved ASM readability 2017-08-12 18:30:21 +02:00
jespergravgaard
1577fe026e Changed ASM numbers to HEX 2017-08-12 02:55:20 +02:00
jespergravgaard
7555d45b34 Finally got a hold of live ranges when propagating back over calls. 2017-08-12 02:30:37 +02:00
jespergravgaard
9334e435da refactored addpoint to increment its own counter 2017-08-12 00:31:14 +02:00
jespergravgaard
7c7e0ec08f Added more minimal test for modifying globals 2017-08-12 00:23:55 +02:00
jespergravgaard
450fc1add0 Added more minimal test for modifying globals 2017-08-12 00:22:46 +02:00
jespergravgaard
fc859e8a03 Implemented ability of procedures to modify globals 2017-08-12 00:15:59 +02:00
jespergravgaard
867d78fd31 Implemented ASM voronoi with squared distance function. 2017-08-07 23:17:56 +02:00
jespergravgaard
1f4ea4f68c Scrren init moved out of main loop. 2017-08-07 21:40:32 +02:00
jespergravgaard
3eaed1c946 Animated voronoi. Added fragments as needed. 2017-08-07 21:23:35 +02:00
jespergravgaard
772a2a3761 Removed unnecessary fragments 2017-08-07 17:53:43 +02:00
jespergravgaard
9f5efab3ee Less logging during uplift. 2017-08-07 17:17:14 +02:00
jespergravgaard
d640c53033 Added fragment manager with ability to do fragment synthesis from sub-fragments. Added more fragments. 2017-08-07 16:35:10 +02:00
jespergravgaard
2a19c52c1d Implemented Voronoi renderer. Added missing fragments. Added combination limit and an iteration trying to uplift the remains. 2017-08-07 14:53:25 +02:00
jespergravgaard
ec1838adba Added ALU uplift potential analysis 2017-08-06 17:00:10 +02:00
jespergravgaard
3624e3ec27 Fixed two register allocation issues. 1. disallow two variables in the same phi-block to be allocated to the same register. 2. When analyzing potential registers call parameter phi statements are no longer examined. 2017-08-06 15:41:06 +02:00
jespergravgaard
0dae641df0 Optimized ASM instruction lookup by introducing a map. 2017-08-06 15:01:11 +02:00
jespergravgaard
0da6c7af6a Optimized fragment generation by caching loaded fragment files. 2017-08-06 14:14:58 +02:00
jespergravgaard
439a70e52a Implemented potential register elimination based on clobber analysis of individual statements. 2017-08-06 13:31:29 +02:00
Jesper Gravgaard
0e5bd97e21 Moved uplift combination testing to separate pass. Made interface for limiting the relevant registers for each equivalence class - improving speed of the combination testing. 2017-08-03 15:05:36 +02:00
jespergravgaard
3b99b6671c Added ALU to uplift attempts 2017-08-03 01:08:48 +02:00
jespergravgaard
59d33faf92 Implemented new uplift score function sum(cycles*10^loopdepth). Added a lot of missing fragments. Sorted scopes so max weight scopes are allocated first. 2017-08-02 22:20:00 +02:00
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