Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-11-11 | move usage computation in filluse() | Quentin Carbonneaux | |
2015-11-11 | add new ssa fixing example | Quentin Carbonneaux | |
2015-11-10 | add new test for ssa construction | Quentin Carbonneaux | |
2015-11-10 | change debug formatting | Quentin Carbonneaux | |
2015-11-10 | add a few safeguards | Quentin Carbonneaux | |
2015-11-10 | fix some bugs, call ssa() in func() | Quentin Carbonneaux | |
2015-11-10 | now, cross fingers and test | Quentin Carbonneaux | |
2015-11-09 | do not insert dead phis | Quentin Carbonneaux | |
2015-11-09 | provide BZERO macro for bitsets | Quentin Carbonneaux | |
2015-11-09 | recognize locals in phiins() | Quentin Carbonneaux | |
2015-11-09 | precise OCall test in liveness | Quentin Carbonneaux | |
2015-11-09 | modify data-structures for new ssa.c | Quentin Carbonneaux | |
2015-11-09 | fix bug in frontier discovery | Quentin Carbonneaux | |
2015-11-09 | start conventional ssa construction | Quentin Carbonneaux | |
2015-11-08 | add new test in minic | Quentin Carbonneaux | |
2015-11-08 | uniformize temporary names in minic | Quentin Carbonneaux | |
2015-11-08 | another return fix in minic | Quentin Carbonneaux | |
2015-11-06 | use the new && in test/prime.c | Quentin Carbonneaux | |
2015-11-06 | maybe fix small return bug in stmt() | Quentin Carbonneaux | |
2015-11-06 | experiment with && and || in minic | Quentin Carbonneaux | |
2015-11-05 | support lighter syntax for arrays | Quentin Carbonneaux | |
2015-11-04 | update align to use loadw | Quentin Carbonneaux | |
2015-11-03 | update minic to the new IR | Quentin Carbonneaux | |
2015-11-03 | add interference hints | Quentin Carbonneaux | |
2015-11-01 | break Tmp.phi chains at phi nodes | Quentin Carbonneaux | |
This makes sure the Tmp.phi "chain" is at most two elements long. Something smarted could be possible, but union-find with path compression is still not exactly what I want. | |||
2015-11-01 | support dots in idents for k0ga | Quentin Carbonneaux | |
2015-11-01 | this emit was an emiti | 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 | add simple dce into isel | Quentin Carbonneaux | |
This looks simple, but it's unclear that the use counts are correct or at least sound after all the instruction massaging that happens for calls/jumps. | |||
2015-10-30 | fix two bugs in spiller | Quentin Carbonneaux | |
1. In limit(), there can be machine registers that are live, thus we need to iterate from 0 (not Tmp0) to ntmp in the for loop building the array. 2. When an instruction can have a memory argument, we must not reload arguments that got spilled and were not live. Instead, the must be replaced by SLOT() arguments. | |||
2015-10-30 | use loadw in cprime.ssa | Quentin Carbonneaux | |
2015-10-30 | finish isel adressing modes and clear the code | Quentin Carbonneaux | |
2015-10-30 | fix several bugs on Blk.gen in liveness | Quentin Carbonneaux | |
2015-10-30 | fillphi() now comes before filllive() | Quentin Carbonneaux | |
2015-10-30 | break phi-classes following interferences | Quentin Carbonneaux | |
2015-10-30 | remove liveness heuristic in fillphi() | Quentin Carbonneaux | |
2015-10-30 | new regalloc heuristic for phis | Quentin Carbonneaux | |
At the beginning of each block look at the phi nodes that have some arguments already allocated. If the some arguments from blocks with high execution frequency are all assigned 'r', reset the the hint for the phi node to this 'r'. Combined with the following heuristic, this can save some copies at the end of the destination blocks. | |||
2015-10-30 | wip on regalloc new heuristics | Quentin Carbonneaux | |
I thought that many parallel copies generated can be avoided if temporaries are in their hint register at the beginning of blocks with multiple predecessors. To get more benefit, I suspect that we could use a copy-propagating peephole pass. | |||
2015-10-30 | setup hints for function arguments | Quentin Carbonneaux | |
2015-10-30 | prioritize reg. allocation of some temporaries | Quentin Carbonneaux | |
2015-10-30 | this test optimization is sometimes incorrect | Quentin Carbonneaux | |
2015-10-30 | change extension in sum example | Quentin Carbonneaux | |
2015-10-30 | simplify constant handling in amatch() | Quentin Carbonneaux | |
2015-10-30 | fix bug in constants addition | Quentin Carbonneaux | |
2015-10-30 | small fix in memory refs emission | Quentin Carbonneaux | |
2015-10-30 | store constant addresses in Mem.offset | Quentin Carbonneaux | |
2015-10-30 | print memory references in IR dumps | Quentin Carbonneaux | |
2015-10-30 | don't share mems containing temporaries | Quentin Carbonneaux | |
This can cause trouble in register allocation when these temporaries get replaced by registers. On the other hand, offsetted slots and constants can safely be shared. | |||
2015-10-30 | turn sum.ssa more C style | Quentin Carbonneaux | |
2015-10-30 | port rega.c to work with RAMem | Quentin Carbonneaux | |