Commit Graph

  • b20327590f Working on better live ranges that take into account the call-path taken to the current statement and any aliases on that path (due to phi statements) jespergravgaard 2017-11-06 08:20:33 +01:00
  • 9d3c8afdf0 Restructured TODO jespergravgaard 2017-11-05 12:01:30 +01:00
  • f18b40d4ac Removed semicolon after inline asm. jespergravgaard 2017-11-05 11:31:10 +01:00
  • 8ba5a2733f Added inline ASM TODO's jespergravgaard 2017-11-05 11:17:08 +01:00
  • f46aba8c9b Added inline ASM clobber test. jespergravgaard 2017-11-05 09:56:04 +01:00
  • 09dd676363 Added semicolon to do {} while (); jespergravgaard 2017-11-05 09:44:00 +01:00
  • f1512af630 Added failing test for inline asm with variable reference parameters. jespergravgaard 2017-11-05 03:10:10 +01:00
  • 8d68d449c4 Implemented inline asm syntax and code generation. Now need to handle parameters. jespergravgaard 2017-11-05 03:01:32 +01:00
  • 86b1d0db73 Created a single parser for KickC incorporating the ASM parser (for inline ASM - but also for ASM fragment files. ) jespergravgaard 2017-11-05 02:20:29 +01:00
  • 506b891ef3 Added basic upstart jumping to main() jespergravgaard 2017-11-04 19:53:55 +01:00
  • fc45798d75 Separated fragment generation & fragment signature / loading / synthesizing. Jesper Gravgaard 2017-11-04 19:04:39 +01:00
  • 3d607aba7f Working on inline asm jespergravgaard 2017-11-04 14:15:44 +01:00
  • bcef1c3662 Fixed constant propagation problem: (const-identification.kc) Constants are not identified correctly. Some times constant pointers are treated as variables Eg. byte* SCREEN = $0400 is adressed through zero-page even though it can be adressed directly. jespergravgaard 2017-11-03 07:58:02 +01:00
  • 14219443a8 Ensured that assignment to variables with ALU potential does not affect potential registers through clobbering. jespergravgaard 2017-11-01 16:43:13 +01:00
  • 4bcef390f3 Fixed bresenham line to do proper word-based addition. jespergravgaard 2017-11-01 14:10:49 +01:00
  • 0317fc50c3 Improved constant inlining to inline constants with different valued versions jespergravgaard 2017-11-01 13:26:32 +01:00
  • 4de433730f Fixed problems with versioned constant call parameters being mixed up and with missing scope name on constant references across scopes. jespergravgaard 2017-11-01 12:59:29 +01:00
  • 6097d80b91 Added a bunch of test cases highlighting each known error jespergravgaard 2017-10-29 11:43:39 +01:00
  • c4c60a5b36 Added a bunch of test cases highlighting each known error jespergravgaard 2017-10-29 11:41:35 +01:00
  • 00f53c49b6 Added support for lo/hi lvalues. Added more ALU options. Working on bitmap plotter. jespergravgaard 2017-10-29 01:56:53 +02:00
  • f60be66531 Working on bitmap bresenham. Added lo/hi unary operators. jespergravgaard 2017-10-26 12:48:04 +02:00
  • 7def3abf28 Improved TODO jespergravgaard 2017-10-23 01:29:39 +02:00
  • 0d9a0a84f8 Added another known problem jespergravgaard 2017-10-23 01:23:39 +02:00
  • cd2c50b8a8 Fixed NPE jespergravgaard 2017-10-23 01:22:36 +02:00
  • 471117561b Updated TODO. Removed string keyword. jespergravgaard 2017-10-23 01:12:13 +02:00
  • 943775d97d Implemented phi transition assignment clobber checking. jespergravgaard 2017-10-23 00:48:22 +02:00
  • ee5499a313 Added minimal PHI clobber example. jespergravgaard 2017-10-21 13:34:42 +02:00
  • f63a540d15 Removed unnecessary (synthesizeable) fragments. jespergravgaard 2017-10-21 12:58:03 +02:00
  • 774e909a20 Added half-asses halfscii. jespergravgaard 2017-10-21 12:36:37 +02:00
  • c569ce8de9 Improved fragment manager enabling synthesis of more fragments. Added boolean operators (and, or, xor, not) jespergravgaard 2017-10-20 17:25:04 +02:00
  • 1ee63ce40a Added literal char syntax. Added literal test. Improved voronoi by using inmem arrays. jespergravgaard 2017-10-19 10:21:32 +02:00
  • b4abb9394e Fixed ClassCastException when attempting to removing a procedure with an empty start. Added a pointer conter increment test. jespergravgaard 2017-10-19 09:12:46 +02:00
  • 5a4388d6d3 Added KC-based scroller jespergravgaard 2017-10-19 01:29:44 +02:00
  • 7be265f42c Fixed culling problem causing conditional branches into phi-functions to be skipped. jespergravgaard 2017-10-18 14:16:59 +02:00
  • 6fb5372f1b Added support for ASM .string directives through string initializer. jespergravgaard 2017-10-17 22:51:16 +02:00
  • 1a649008b9 Added support for ASM .byte directives through array initializers. jespergravgaard 2017-10-17 13:34:41 +02:00
  • feba0565b4 Cleaned up RValue hierarchy. Removing redundant Constant interface. Moving ConstantVar out of the value-hierarchy. jespergravgaard 2017-10-17 11:35:37 +02:00
  • efc750ce11 Moved type inference into the model. Renamed ICL to model. jespergravgaard 2017-10-17 09:58:00 +02:00
  • 09ed57fb98 Separated ASM fragment system out from ASM base jespergravgaard 2017-10-17 09:47:25 +02:00
  • 1f4efe0a4f Added asm names to symbol table printout. jespergravgaard 2017-10-17 09:39:15 +02:00
  • 5de6bbba13 Added missing fragments (through signature rewriting) Jesper Gravgaard 2017-10-16 13:20:08 +02:00
  • 520361f7b6 Optimized live range effective - vastly improving compile speed. jespergravgaard 2017-10-16 12:47:42 +02:00
  • d551f8c569 Small numbers skip $ jespergravgaard 2017-10-15 23:15:49 +02:00
  • 3c1f4d2901 Minor syntax fixes jespergravgaard 2017-10-15 22:48:04 +02:00
  • 46ffa81633 Added operator precedence to constant printing - avoiding unnecesary perenthesis Jesper Gravgaard 2017-10-15 22:39:50 +02:00
  • 7b9e80aaac Added constant addition consolidation optimization. Jesper Gravgaard 2017-10-15 17:53:18 +02:00
  • 525ac454cc Added a new constant test jespergravgaard 2017-10-14 22:37:30 +02:00
  • a09ca15dbf Inlining constants that are unnamed, single versions of a variable or aliases of other constants jespergravgaard 2017-10-14 22:36:52 +02:00
  • 1a9ae72668 Added unnamed constant inlining jespergravgaard 2017-10-13 08:06:55 +02:00
  • ccfa6bdbf3 added simple asm constants (syntax error still) jespergravgaard 2017-10-04 01:08:36 +02:00
  • 6f2dfdbec3 Initial working implementation of constants in the symbol table and ASM. Still needs to output const definitions (intelligently). Jesper Gravgaard 2017-10-02 21:47:12 +02:00
  • a553cb97c3 Added more fragments Jesper Gravgaard 2017-09-06 21:23:48 +02:00
  • 616311daf8 Finally new live ranges are working correctly - including effective live ranges for statements inside methods. Jesper Gravgaard 2017-09-06 18:59:53 +02:00
  • 99088aef58 Improved uplift test and zp coalesce test to include live ranges from calling statements in overlap testing. The new live range system is still far from perfect. Next step is getEffectiveAlive(stmt) returning alive vars + alive vars from all calling contexts. Jesper Gravgaard 2017-09-04 22:15:18 +02:00
  • eb6cf1188c Working on a new live range analysis and the ability to handle constants symbolically. TODOs remaining: Live range overlap analysis of register combinations inside methods must also look at registers alive at all calls. Examine why temp-vars are used in flipper. Examine why flipper is plotted in a wrong position on the screen. Implement constants into the symbol table and support them in code. Implement new constant consolidation steps. Jesper Gravgaard 2017-09-04 00:49:00 +02:00
  • 61d16b3030 Implemented phi transition reuse when transitions are identical on a register basis jespergravgaard 2017-08-26 02:05:46 +02:00
  • 83edd3e21b Implemented phi transition reuse when transitions are identical jespergravgaard 2017-08-26 01:15:57 +02:00
  • 23d9af8420 Started work on phi transition optimization jespergravgaard 2017-08-23 09:37:16 +02:00
  • f72585e3c0 Fixed clobber issues caused by statement idx of phi statementsin ASM changed to the call-statement instead of the phi. Jesper Gravgaard 2017-08-22 14:57:04 +02:00
  • 64c690f925 Improved ZP register ASM naming further. (issue with allocation not choosing optimal registers in some cases - a few tests left failing) jespergravgaard 2017-08-21 08:27:34 +02:00
  • 029227652e Improved zp register references across scopes. jespergravgaard 2017-08-21 01:19:43 +02:00
  • 5a91902c21 Moved register allocation into symbol table Variable jespergravgaard 2017-08-20 21:41:17 +02:00
  • 1982d01297 renames jespergravgaard 2017-08-20 21:20:07 +02:00
  • ffce3298ef Moved bresenham into main() jespergravgaard 2017-08-20 21:12:40 +02:00
  • 2707bd5861 Working on outputting variable labels in ASM. Moving register allocation & constant values into symbol table. jespergravgaard 2017-08-20 21:09:03 +02:00
  • df631667a0 Changed ranged loop to only accept constants. jespergravgaard 2017-08-18 08:40:15 +02:00
  • 14dfaee552 Implemented for() loops. jespergravgaard 2017-08-18 00:28:39 +02:00
  • 5a075a0ce4 Added for syntax to parser jespergravgaard 2017-08-14 08:34:02 +02:00
  • d5f62dfd11 Improved program flow for if-statements without else by inverting the condition and jumping over the stmts. Improved fragment synthesizing. jespergravgaard 2017-08-13 03:03:56 +02:00
  • 7b30fa4f2c Added ifmin() for optimizing if() block sequence. jespergravgaard 2017-08-13 00:44:48 +02:00
  • 4741a2d22e Improve pass structure jespergravgaard 2017-08-13 00:30:51 +02:00
  • 9c8372b989 Redundant and unused label elimination in ASM. jespergravgaard 2017-08-12 21:27:36 +02:00
  • 5f27eba623 Fixed scope issues in ASM. Added scope to blocks. jespergravgaard 2017-08-12 20:16:07 +02:00
  • 15a9415d63 Improved ASM readability Jesper Gravgaard 2017-08-12 18:30:21 +02:00
  • 1577fe026e Changed ASM numbers to HEX jespergravgaard 2017-08-12 02:55:20 +02:00
  • 7555d45b34 Finally got a hold of live ranges when propagating back over calls. jespergravgaard 2017-08-12 02:30:37 +02:00
  • 9334e435da refactored addpoint to increment its own counter jespergravgaard 2017-08-12 00:31:14 +02:00
  • 7c7e0ec08f Added more minimal test for modifying globals jespergravgaard 2017-08-12 00:23:55 +02:00
  • 450fc1add0 Added more minimal test for modifying globals jespergravgaard 2017-08-12 00:22:46 +02:00
  • fc859e8a03 Implemented ability of procedures to modify globals jespergravgaard 2017-08-12 00:15:59 +02:00
  • 867d78fd31 Implemented ASM voronoi with squared distance function. jespergravgaard 2017-08-07 23:17:56 +02:00
  • 1f4ea4f68c Scrren init moved out of main loop. jespergravgaard 2017-08-07 21:40:32 +02:00
  • 3eaed1c946 Animated voronoi. Added fragments as needed. jespergravgaard 2017-08-07 21:23:35 +02:00
  • 772a2a3761 Removed unnecessary fragments jespergravgaard 2017-08-07 17:53:43 +02:00
  • 9f5efab3ee Less logging during uplift. jespergravgaard 2017-08-07 17:17:14 +02:00
  • d640c53033 Added fragment manager with ability to do fragment synthesis from sub-fragments. Added more fragments. jespergravgaard 2017-08-07 16:35:10 +02:00
  • 2a19c52c1d Implemented Voronoi renderer. Added missing fragments. Added combination limit and an iteration trying to uplift the remains. jespergravgaard 2017-08-07 14:53:25 +02:00
  • ec1838adba Added ALU uplift potential analysis jespergravgaard 2017-08-06 17:00:10 +02:00
  • 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. jespergravgaard 2017-08-06 15:41:06 +02:00
  • 0dae641df0 Optimized ASM instruction lookup by introducing a map. jespergravgaard 2017-08-06 15:01:11 +02:00
  • 0da6c7af6a Optimized fragment generation by caching loaded fragment files. jespergravgaard 2017-08-06 14:14:58 +02:00
  • 439a70e52a Implemented potential register elimination based on clobber analysis of individual statements. jespergravgaard 2017-08-06 13:31:29 +02:00
  • 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. Jesper Gravgaard 2017-08-03 15:05:36 +02:00
  • 3b99b6671c Added ALU to uplift attempts jespergravgaard 2017-08-03 01:08:48 +02:00
  • 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. jespergravgaard 2017-08-02 22:20:00 +02:00
  • 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. jespergravgaard 2017-08-02 00:57:29 +02:00
  • 14c8ec13bf Improved segment generation jespergravgaard 2017-08-01 20:38:55 +02:00
  • 323e10ab37 Introduced Asm Segments which establish relation between ASM code and the generating ICL. jespergravgaard 2017-08-01 13:58:15 +02:00
  • 14c1f7e8eb Now identifying undeclared variables jespergravgaard 2017-08-01 01:33:42 +02:00
  • b56f634b1e Merge remote-tracking branch 'gitlab/master' jespergravgaard 2017-07-31 23:41:25 +02:00