summaryrefslogtreecommitdiffhomepage
path: root/ir/opt
Commit message (Collapse)AuthorAge
* Fix loop inversion where the header contains a data flow loop.Andreas Fried2020-07-30
|
* Extend loop unrolling: can now unroll nested loopJohannes Bucher2020-02-07
|
* remove debug graph dumps from LCSSA transformationJohannes Bucher2020-02-06
|
* Extend a + b == a + c → b == c to reference modesriscvSebastian Buchwald2019-08-09
|
* Place fewer Phis when constructing LCSSA form.better-lcssaAndreas Fried2019-06-19
| | | | | | | | This implementation probably places the minimal amount of Phis for reducible control flow, but will miss SCCs. It uses the following rules: - If the block has one predecessor, pass along the predecessor's Phi. - If all predecessors are the same Phi or a self-loop, use the predecessor.
* Only construct LCSSA Phis if control flow leaves a loop.Andreas Fried2019-06-19
| | | | Otherwise, there is no place where an LCSSA Phi needs to go.
* Add debugging output to LCSSA construction.Andreas Fried2019-06-19
|
* loop unrolling: fix calculation of #iterationsJohannes Bucher2019-03-15
| | | | | | | Includes the following changes: - bug fix in calculation - completely use tarvals for loop count calculation - fixed compiler warnings
* loop unrolling: fix couning loop analysis and full unrollingimprove-loop-unrollingJohannes Bucher2019-02-26
| | | | | | - correctly handle different relations in loop condition - correctly handle decreasing counters - fully unroll loops which are taken exactly one time
* loop unrolling: fully unroll loopsJohannes Bucher2019-02-25
| | | | | | | If number of loop iterations is smaller than allowed unroll factor, completely unroll the loop and rewire the control flow to get rid of the loop. all loop iterations are executed without jumping back into a loop header.
* only unroll loops if number of loop passes is known at compile timeJohannes Bucher2019-02-25
| | | | | | | Only use powers of 2 as unroll factor; the unroll-factor configuration option specifies a maximum unroll factor. The largest power of 2 which is smaller than or equal to the specified maximum factor is used.
* only optimize confirm nodes in case of no overflowElias Aebi2019-01-31
|
* Proof-of-concept local optimizationSebastian Buchwald2019-01-31
|
* add copyright headersElias Aebi2019-01-24
|
* clean upElias Aebi2019-01-24
|
* make the factor and the max size configurableElias Aebi2019-01-24
|
* test some more aggressive settingsElias Aebi2019-01-24
|
* debug print the number of loops unrolledElias Aebi2019-01-24
|
* implement a simple heuristic to determine the unroll factorElias Aebi2019-01-24
|
* use unsigned integers for the unroll factorElias Aebi2019-01-24
|
* fix a typoElias Aebi2019-01-24
|
* let the unroll factor be determined by a functionElias Aebi2019-01-24
|
* clean upElias Aebi2019-01-24
|
* unroll by a given factorElias Aebi2019-01-24
|
* simplifyElias Aebi2019-01-24
|
* LCSSA: insert phis in every blockElias Aebi2019-01-24
|
* clean upElias Aebi2019-01-24
|
* rewire keepalivesElias Aebi2019-01-24
|
* duplicate all innermost loopsElias Aebi2019-01-24
|
* use the link to detect backedgesElias Aebi2019-01-24
|
* correctly rewire phis inside successor blocksElias Aebi2019-01-24
|
* only visit each successor onceElias Aebi2019-01-24
|
* fix the rewire logicElias Aebi2019-01-24
|
* use the debug macroElias Aebi2019-01-24
|
* ignore outermost loopsElias Aebi2019-01-24
|
* LCSSA: add phi nodes for mode_M predecessorsElias Aebi2019-01-24
|
* LCSSA: ignore keep-alive edgesElias Aebi2019-01-24
|
* improve the rewire logicElias Aebi2019-01-24
|
* pass the loop header to the rewire functionsElias Aebi2019-01-24
|
* implement get_loop_headerElias Aebi2019-01-24
|
* link the new block to the original blockElias Aebi2019-01-24
|
* correctly rewire phi nodes inside the loop headerElias Aebi2019-01-24
|
* clean upElias Aebi2019-01-24
|
* rewire the successors outside the loopElias Aebi2019-01-24
|
* WIPElias Aebi2019-01-24
|
* fix a segfaultElias Aebi2019-01-24
|
* WIP loop unrollingElias Aebi2019-01-24
|
* coding styleElias Aebi2019-01-24
|
* separate the LCSSA functions into their own fileElias Aebi2019-01-24
|
* implement assure_loop_lcssaElias Aebi2019-01-24
|