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 |
|
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 |
|
Jesper Gravgaard
|
819c904419
|
Implementing JSON serialization of ICL
|
2017-07-18 22:49:25 +02:00 |
|
Jesper Gravgaard
|
1b0b81baf2
|
Restructured code in new packages
|
2017-07-18 18:12:11 +02:00 |
|
Jesper Gravgaard
|
92747454c7
|
Restructured code in new packages
|
2017-07-18 18:10:12 +02:00 |
|
Jesper Gravgaard
|
32a2c9eb2b
|
Optimized registers for fibmem.
|
2017-07-18 16:46:52 +02:00 |
|
Jesper Gravgaard
|
a7e0e2b1d0
|
Added main method to flipper. Fixed a few bugs in compiler.
|
2017-07-16 11:09:32 +02:00 |
|
Jesper Gravgaard
|
f6eeb5ff83
|
Removed comments from ASM output
|
2017-07-16 09:41:27 +02:00 |
|
Jesper Gravgaard
|
67b4257ad9
|
Added a second test
|
2017-07-15 23:32:25 +02:00 |
|
Jesper Gravgaard
|
0116c9e21d
|
Added full compile log to test
|
2017-07-15 23:26:45 +02:00 |
|
Jesper Gravgaard
|
8e59603418
|
made map linked for predictability
|
2017-07-15 22:21:07 +02:00 |
|
Jesper Gravgaard
|
81ba13c9c3
|
Implemented test comparing reference output to actual compilation output
|
2017-07-15 22:00:02 +02:00 |
|
Jesper Gravgaard
|
a908e4f1ca
|
Proper implementation of pre-modifiers (++/--)
|
2017-07-14 12:13:16 +02:00 |
|
Jesper Gravgaard
|
1743e4f9d0
|
Proper handling of post modifiers
|
2017-07-14 01:59:04 +02:00 |
|
Jesper Gravgaard
|
1dfbcd1ca4
|
Working on predictability in output
|
2017-07-14 00:25:25 +02:00 |
|
Jesper Gravgaard
|
5c1aa7a2e7
|
Working on predictability in output
|
2017-07-14 00:15:33 +02:00 |
|
Jesper Gravgaard
|
20cb48b07d
|
Working on predictability in output
|
2017-07-14 00:11:57 +02:00 |
|
Jesper Gravgaard
|
e271abb8a0
|
Using ++/-- post increment/decrement operators.
|
2017-07-13 23:48:25 +02:00 |
|
Jesper Gravgaard
|
ed7a4dded9
|
Added ++/-- post increment/decrement operators.
|
2017-07-13 23:40:17 +02:00 |
|
Jesper Gravgaard
|
de8e5139cc
|
Added a phase 2 block assertion checking that the program always contains all referenced blocks.
|
2017-07-13 22:03:52 +02:00 |
|
Jesper Gravgaard
|
56cf4c80ef
|
Added a phase 2 symbol assertion checking that the program always matches the symbol table.
|
2017-07-13 21:35:43 +02:00 |
|
Jesper Gravgaard
|
2e90516f34
|
Fixed problem with nested do loops being mixed up during empty block culling. Improved flipper implementation.
|
2017-07-13 20:41:16 +02:00 |
|
Jesper Gravgaard
|
d41f762a8b
|
Completed KickC implementation of flipper
|
2017-07-13 00:50:53 +02:00 |
|
Jesper Gravgaard
|
8d7dfa8a8d
|
Implemented most of flipper in KickC
|
2017-07-13 00:13:26 +02:00 |
|
Jesper Gravgaard
|
b25be31ba1
|
Implemented Control flow Graph Sequence Planner. Implemented working flipper.
|
2017-07-11 01:06:13 +02:00 |
|
jespergravgaard
|
01a26b4710
|
Implemented usage counting in sub-constant elimination. Added some more fragments
|
2017-06-17 11:09:59 +02:00 |
|
jespergravgaard
|
e5f1f7f387
|
Added support for multiple procs
|
2017-06-14 21:54:28 +02:00 |
|
jespergravgaard
|
5254d7d3a6
|
Fixed for callsum
|
2017-06-13 23:11:56 +02:00 |
|
jespergravgaard
|
790feb1dcc
|
New alias elimination implementation. Optimized register allocation for test.
|
2017-06-13 22:48:03 +02:00 |
|
jespergravgaard
|
a5204acf79
|
Merge remote-tracking branch 'gitlab/master'
|
2017-06-13 19:48:14 +02:00 |
|
jespergravgaard
|
872c4cfc28
|
aliasing works on return statements
|
2017-06-13 19:48:09 +02:00 |
|
Jesper Gravgaard
|
fb3b083938
|
Working on parameter passing & return values
|
2017-06-13 07:18:07 +02:00 |
|
jespergravgaard
|
3b2cc5cde1
|
Refactoring control flow graph to enable proc calls. Still need to handle return values properly.
|
2017-06-11 23:36:05 +02:00 |
|
jespergravgaard
|
12bff79433
|
Control Flow Graph now handles procs & sub sprocs
|
2017-06-11 19:15:09 +02:00 |
|
jespergravgaard
|
40d44da2fc
|
Added proc/endproc statements
|
2017-06-05 16:17:08 +02:00 |
|
jespergravgaard
|
03ee43c3b7
|
Looking at function calls
|
2017-06-05 16:01:50 +02:00 |
|
jespergravgaard
|
2dedf8263b
|
Looking at function calls
|
2017-06-05 00:38:50 +02:00 |
|
jespergravgaard
|
4aa00d4536
|
Added special ALU register support
|
2017-06-04 00:45:40 +02:00 |
|
jespergravgaard
|
357bbecade
|
Added *idx operator for array indexing.
|
2017-06-03 23:49:06 +02:00 |
|
jespergravgaard
|
65f41f874f
|
Added constant addition optimization and improved alias-optimization
|
2017-06-03 22:37:12 +02:00 |
|
jespergravgaard
|
0f3da0ea3e
|
Fixed bresenham array again
|
2017-05-31 01:12:23 +02:00 |
|
jespergravgaard
|
0bdd9d2f2e
|
Implemented A register - and achieved optimal asm in sprite tabel generation.
|
2017-05-31 00:59:30 +02:00 |
|
jespergravgaard
|
aac15e64dd
|
Added rol/ror and a table generation example
|
2017-05-30 23:55:02 +02:00 |
|
jespergravgaard
|
2a2d873e62
|
Added static register value analysis - eliminating uncecasary loads.
|
2017-05-30 11:09:39 +02:00 |
|
jespergravgaard
|
b7fd96c4ee
|
Added clobber info on instruction set
|
2017-05-30 09:51:07 +02:00 |
|
jespergravgaard
|
cc3158e387
|
Added array-based bresenham
|
2017-05-29 22:54:36 +02:00 |
|
jespergravgaard
|
1540439d36
|
Added array-based bresenham
|
2017-05-29 22:43:05 +02:00 |
|
jespergravgaard
|
38408825cd
|
Implemented simple bresenhm
|
2017-05-28 21:47:50 +02:00 |
|
jespergravgaard
|
5367a41bcf
|
Asm Fragment binding using registers instead of variables.
|
2017-05-28 18:22:57 +02:00 |
|
jespergravgaard
|
5c907162f3
|
Added more general pointer support
|
2017-05-28 17:58:02 +02:00 |
|
jespergravgaard
|
b3dfb503f5
|
Now supporting fibonacci array generation
|
2017-05-28 12:46:14 +02:00 |
|
jespergravgaard
|
6f56b1bcfa
|
added pointers/arrays
|
2017-05-28 08:58:22 +02:00 |
|
jespergravgaard
|
6376029dbf
|
Now parsing array declarations
|
2017-05-25 02:24:18 +02:00 |
|
jespergravgaard
|
15b1dc60fe
|
Added syntax for functions & arrays.
|
2017-05-23 08:51:39 +02:00 |
|
jespergravgaard
|
a565a0bea7
|
Added ASM optimization removing jumps / branches to next instruction.
|
2017-05-21 13:40:56 +02:00 |
|
jespergravgaard
|
39e5b5a894
|
Added do {} while(). Fixed relative jump labels. Added fib2 & y-usage.
|
2017-05-21 12:56:11 +02:00 |
|
jespergravgaard
|
0ba8ac742e
|
Retired old ASM sequence for new ASM program
|
2017-05-21 10:56:26 +02:00 |
|
jespergravgaard
|
651f02e153
|
better syntax parser
|
2017-05-20 22:08:06 +02:00 |
|
jespergravgaard
|
da8ff513e6
|
Allowing last asm line without newline
|
2017-05-20 22:05:01 +02:00 |
|
jespergravgaard
|
8f9f042144
|
Created ASM parser & representation
|
2017-05-20 21:49:11 +02:00 |
|
jespergravgaard
|
91b455e042
|
Renamed fragment files to match windows
|
2017-05-20 11:48:01 +02:00 |
|
jespergravgaard
|
f8aa837eda
|
initial attempts at register optimization
|
2017-05-18 00:06:31 +02:00 |
|
jespergravgaard
|
d5ff6e3ea2
|
Implemented conditional simplification optimization
|
2017-05-17 23:21:02 +02:00 |
|
jespergravgaard
|
84c0b01354
|
updated fib
|
2017-05-15 23:33:19 +02:00 |
|
jespergravgaard
|
7e043de594
|
Implemented fib - and fixed alias elimination issue
|
2017-05-15 21:54:32 +02:00 |
|
jespergravgaard
|
62533afc6a
|
Refactored fragment handling
|
2017-05-15 18:30:43 +02:00 |
|
jespergravgaard
|
968f51343a
|
Implemented the last asm fragments
|
2017-05-15 18:15:56 +02:00 |
|
jespergravgaard
|
4e4fee9035
|
Implmented asm fragment generator
|
2017-05-15 17:01:11 +02:00 |
|
jespergravgaard
|
4ca3fe0787
|
Added naive register allocation
|
2017-05-15 08:40:47 +02:00 |
|
Jesper Gravgaard
|
c58a999a42
|
Added repeating pass 2 optimizations
|
2017-05-14 13:25:31 +02:00 |
|
Jesper Gravgaard
|
b3fd0eb28c
|
Added more simple optimizing passes
|
2017-05-14 11:30:46 +02:00 |
|
Jesper Gravgaard
|
73fa2839e0
|
Typified all Symbols
|
2017-05-13 16:20:58 +02:00 |
|
Jesper Gravgaard
|
3b8580498b
|
Implemented phi function completion loop.
|
2017-05-12 10:26:56 +02:00 |
|
jespergravgaard
|
807198113b
|
SSA with phi function almost complete
|
2017-05-08 18:08:07 +02:00 |
|
jespergravgaard
|
4eb905b15c
|
Constructing Control Flow Graph.
|
2017-05-07 20:32:30 +02:00 |
|
jespergravgaard
|
a06fe6e989
|
Parsing, 3 Address Code, Type Inference
|
2017-05-07 11:58:54 +02:00 |
|
jespergravgaard
|
7a24cc0b62
|
SSA form generation for expressions started
|
2017-05-05 09:55:15 +02:00 |
|
jespergravgaard
|
04d4f32ad9
|
A bit more subpix work. Some font-work and a KickC parser start.
|
2017-05-01 00:11:51 +02:00 |
|