Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-02-03 | finish emit lifting, seems ok now | Quentin Carbonneaux | |
2016-01-29 | compile rega | Quentin Carbonneaux | |
2016-01-05 | enable new spilling pass | Quentin Carbonneaux | |
2015-12-08 | wip on instruction selection | Quentin Carbonneaux | |
2015-11-30 | test liveness | Quentin Carbonneaux | |
2015-11-30 | change the wide bit to a class number | Quentin Carbonneaux | |
2015-11-27 | disable optimizations | Quentin Carbonneaux | |
2015-11-19 | start memopt(), still buggy | Quentin Carbonneaux | |
2015-11-13 | add initial version of copy elimination | Quentin Carbonneaux | |
2015-11-11 | move usage computation in filluse() | Quentin Carbonneaux | |
2015-11-10 | fix some bugs, call ssa() in func() | Quentin Carbonneaux | |
2015-10-31 | make phi-class handling more local | Quentin Carbonneaux | |
The phi classes are no longer in a union-find structure, instead each temporary argument of a phi node gets a pointer to it. The hinting of the phi node is then shared with its the one of its arguments. When liveness proceeds and finds out that two elements with same hinting (a phi node and one of its arguments or two arguments of the same phi node) interfere, one of them has its phi pointer reset, that way, the hinting won't be shared. | |||
2015-10-30 | fillphi() now comes before filllive() | Quentin Carbonneaux | |
2015-10-08 | change end comment for functions | Quentin Carbonneaux | |
2015-10-08 | improve debug output | Quentin Carbonneaux | |
2015-10-08 | allow multiple functions in file | Quentin Carbonneaux | |
2015-10-07 | finish implementing data parsing | Quentin Carbonneaux | |
2015-10-06 | add pool memory management | Quentin Carbonneaux | |
2015-10-05 | clean the command line interface | Quentin Carbonneaux | |
2015-09-25 | add union-find based phi-class computation | Quentin Carbonneaux | |
2015-09-15 | heavy modification of call handling | Quentin Carbonneaux | |
The IR generated by calls was very bulky because two instructions were used for marking the live range of a clobber. This patch attempts to store the information of what registers are use/def/clobber in the call instruction itself, this leads to more compact code (even more when we'll have SSE registers). However, I find that the amount of extra code needed is not really easonable. Fortunately it is not too invasive, thus if the complexity creeps in, it should be easy to revert. | |||
2015-09-15 | start work on aggregate types | Quentin Carbonneaux | |
The parser now has some code to parse the description of structured types. I tried to be even less specific than LLVM "type" by creating just enough abstraction so that I can deal with both AARCH64 and x64. The base types used in the definition of an aggregate are really just syntactic sugar to give a structure a size and an alignment. Only the location of float components matters for the compilation. In particular this means that the front-ends have to know how the ABI works to pass/return small integer types. This also means that the font-end has to be aware of the layout of structures. Chris Lattner has a proposition [1] for LLVM that is still pending and goes in the direction of giving more control of the ABI the front-end. [1]: http://www.nondot.org/sabre/LLVMNotes/ExtendedIntegerResults.txt | |||
2015-09-15 | update emit to the new setting | Quentin Carbonneaux | |
2015-09-15 | more modifications to rega | Quentin Carbonneaux | |
2015-09-15 | add a size to all operations (wip) | Quentin Carbonneaux | |
2015-09-15 | use correct sizes during reg allocation | Quentin Carbonneaux | |
2015-09-15 | use a new Ref type for registers | Quentin Carbonneaux | |
This might not be a good idea, the problem was that many spurious registers would be added to the Bits data-structures during compilation (and would always remain 0). However, doing the above modification de-uniformizes the handling of temps and regs, this makes the code longer and not really nicer. Also, additional Bits structures are required to track the registers independently. Overall this might be a bad idea to revert. | |||
2015-09-15 | start change of representation for registers | Quentin Carbonneaux | |
2015-09-15 | perform isel before code emission | Quentin Carbonneaux | |
2015-09-15 | add a code emitter for at&t syntax | Quentin Carbonneaux | |
2015-09-15 | complete a crude register allocator | Quentin Carbonneaux | |
2015-09-15 | test isel | Quentin Carbonneaux | |
2015-09-15 | move some debug output out of main | Quentin Carbonneaux | |
2015-09-15 | cosmetics | Quentin Carbonneaux | |
2015-09-15 | improve output, add debug array | Quentin Carbonneaux | |
2015-09-15 | show more spilling data | Quentin Carbonneaux | |
2015-09-15 | attempt more correct loop marking | Quentin Carbonneaux | |
2015-09-15 | more testing code | Quentin Carbonneaux | |
2015-09-15 | test code for the spiller | Quentin Carbonneaux | |
2015-09-15 | rework liveness to compute reg pressure | Quentin Carbonneaux | |
2015-09-15 | move main function out of parse.c | Quentin Carbonneaux | |