Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
| * | | Run register renaming pass after receiving the info which pc's should be | Justus Fasse | 2021-07-30 | 1 | -9/+45 | |
| | | | | | | | | | | | | | | | | | | | | | moved past side exits. Otherwise it is not safe to copy those instructions. Ideally, this approach is just as good as a more fine-grained appraoch, assuming that the register allocation "nops" the non-exploited renames. | |||||
| * | | Remove now unused debug function | Justus Fasse | 2021-07-30 | 1 | -26/+0 | |
| | | | ||||||
| * | | Do not accidentally shadow a previous function | Justus Fasse | 2021-07-30 | 1 | -2/+3 | |
| | | | ||||||
| * | | Formatting | Justus Fasse | 2021-07-30 | 1 | -4/+4 | |
| | | | ||||||
| * | | Adjust "main" function of this pass to the previous changes. | Justus Fasse | 2021-07-29 | 1 | -29/+57 | |
| | | | | | | | | | | | | | | | NB: Currently, the code motion past side exits logic assumes that poor man's SSA is turned on. | |||||
| * | | Update TODO list | Justus Fasse | 2021-07-29 | 1 | -3/+1 | |
| | | | ||||||
| * | | Rename registers until they are defined (again). | Justus Fasse | 2021-07-29 | 1 | -0/+24 | |
| | | | | | | | | | | | | | | | This function is useful in coordination with the aliasing code in restoration_instruction'. | |||||
| * | | Another necessary change to allow code motion past the final Icond of a | Justus Fasse | 2021-07-29 | 1 | -2/+2 | |
| | | | | | | | | | | | | path (if existant and predicted [not None]). | |||||
| * | | Update downschedule_compensation_code function | Justus Fasse | 2021-07-29 | 1 | -38/+33 | |
| | | | | | | | | | | | | | | | | | | | | | | | | Transitively consider the additional dependent instructions. This is necessary since we delete the originals of duplicated-for-code-motion instruction since this is the only way it will [currently] work for memory stores. Before only instructions that directly dependent on a monved/copied for code motion instruction were considered. | |||||
| * | | Do not virtually insert the final restoration code before applying the | Justus Fasse | 2021-07-29 | 1 | -18/+0 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | code motion past side exits heuristic. Now, that code may be moved past the final Icond, it it is movable, the previous (deleted with this commit) approach is no longer correct. The code-to-be-inserted may contain the imaginary final restoration code which does not exist (yet) outside of this function. Instead, the final restoration code should (optionally?) be inserted before calling this function. | |||||
| * | | Turn a tree of deps into a tree of uses | Justus Fasse | 2021-07-29 | 1 | -0/+20 | |
| | | | ||||||
| * | | Return estimated final_time from schedulers | Justus Fasse | 2021-07-29 | 2 | -9/+19 | |
| | | | ||||||
| * | | Early exit for ideal_schedule' | Justus Fasse | 2021-07-29 | 1 | -1/+1 | |
| | | | ||||||
| * | | Disable debug info for `intra_path_dependencies` by default | Justus Fasse | 2021-07-29 | 1 | -2/+1 | |
| | | | ||||||
| * | | Alternative function to calculate restoration instructions. | Justus Fasse | 2021-07-29 | 1 | -0/+35 | |
| | | | | | | | | | | | | | | | | | | | | | Also creates aliases for overwritten registers. These aliases must be applied afterwards. Otherwise, the restoration code may incorrectly overwrite a register that is read afterwards and expects the previous value. | |||||
| * | | Return a mapping from the old pcs to the new values | Justus Fasse | 2021-07-29 | 1 | -3/+8 | |
| | | | | | | | | | | | | | | | This allows to update externally kept information that relies on these pcs across code insertions. | |||||
| * | | Only print instructions (in insert_code) when debug flag is set | Justus Fasse | 2021-07-29 | 1 | -2/+2 | |
| | | | ||||||
| * | | Code may be scheduled past a path-ending Icond if it is predicted | Justus Fasse | 2021-07-29 | 1 | -25/+18 | |
| | | | ||||||
| * | | Add convenience, map-like, function to InsertPosition | Justus Fasse | 2021-07-29 | 1 | -0/+4 | |
| | | | ||||||
| * | | An Icond that sits at the end of a superblock may be a "side" exit | Justus Fasse | 2021-07-29 | 1 | -2/+3 | |
| | | | | | | | | | | | | | | | ... if it has a prediction associated to it. If the prediction is None it cannot be a side exit. | |||||
| * | | Make comment apply to the correct branch | Justus Fasse | 2021-07-27 | 1 | -1/+1 | |
| | | | ||||||
| * | | Rewrite code insertion logic | Justus Fasse | 2021-07-27 | 1 | -71/+137 | |
| | | | | | | | | | | | | Now able to explicitly insert code above or below a certain pc. | |||||
| * | | Remove useless comment (implemented by ideal_schedule') | Justus Fasse | 2021-07-21 | 1 | -3/+0 | |
| | | | ||||||
| * | | Don't attempt to schedule instrcution beyond an Icond if it is the last | Justus Fasse | 2021-07-21 | 1 | -26/+29 | |
| | | | | | | | | | | | | instruction of the superblock. | |||||
| * | | Fix error where side exits where accidentally swapped | Justus Fasse | 2021-07-21 | 1 | -1/+3 | |
| | | | ||||||
| * | | Merge branch 'kvx-work' into weak-software-pipelining | Justus Fasse | 2021-07-19 | 1 | -1/+1 | |
| |\ \ | ||||||
| * | | | Fix compilation error | Justus Fasse | 2021-07-19 | 2 | -2/+4 | |
| | | | | | | | | | | | | | | | | TODO: review changes to scheduling heuristic | |||||
| * | | | Merge branch 'kvx-work' into weak-software-pipelining | Justus Fasse | 2021-07-19 | 29 | -36/+2146 | |
| |\ \ \ | ||||||
| * | | | | Comment out extra-aliasing logic which becomes useless w/ pmSSA + lift-if | Justus Fasse | 2021-07-16 | 1 | -3/+5 | |
| | | | | | | | | | | | | | | | | | | | | Question: Is it useless in general? | |||||
| * | | | | Describe new command line options slightly better | Justus Fasse | 2021-07-16 | 1 | -1/+5 | |
| | | | | | ||||||
| * | | | | Use flag -ftarget-inner-loops | Justus Fasse | 2021-07-16 | 1 | -1/+1 | |
| | | | | | | | | | | | | | | | | | | | | That is, inner loops that are spanned by a superblock | |||||
| * | | | | Add hyphens to flags | Justus Fasse | 2021-07-16 | 1 | -5/+5 | |
| | | | | | ||||||
| * | | | | Fix build via work-around in Compiler.vexpand | Justus Fasse | 2021-07-16 | 2 | -9/+27 | |
| | | | | | ||||||
| * | | | | Use new flags | Justus Fasse | 2021-07-16 | 1 | -2/+15 | |
| | | | | | ||||||
| * | | | | Add additional compiler flags | Justus Fasse | 2021-07-16 | 2 | -1/+11 | |
| | | | | | ||||||
| * | | | | Optimize code layout | Justus Fasse | 2021-07-15 | 1 | -5/+14 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When detecting a superblock that spans a loop, lay out the code in such a way that not looping can be handled via fall-through, thus saving an extra instruction on the suspected hot-path. | |||||
| * | | | | Try to somehwat separate downward scheduling from register renaming | Justus Fasse | 2021-07-13 | 1 | -28/+69 | |
| | | | | | ||||||
| * | | | | Fix error message | Justus Fasse | 2021-07-12 | 1 | -2/+2 | |
| | | | | | ||||||
| * | | | | Make it possible to only rename select registers | Justus Fasse | 2021-07-12 | 1 | -24/+35 | |
| | | | | | | | | | | | | | | | | | | | | Not used yet. | |||||
| * | | | | Fix TODO | Justus Fasse | 2021-07-09 | 1 | -1/+33 | |
| | | | | | | | | | | | | | | | | | | | | Only move memory writes across at most a single Icond | |||||
| * | | | | Refactor finding side-exits | Justus Fasse | 2021-07-09 | 1 | -5/+9 | |
| | | | | | ||||||
| * | | | | Split `transitive_dependencies` into its own function | Justus Fasse | 2021-07-08 | 1 | -17/+31 | |
| | | | | | | | | | | | | | | | | | | | | Might be very slow | |||||
| * | | | | Merge branch 'kvx-work' into weak-software-pipelining | Justus Fasse | 2021-07-08 | 415 | -7966/+14838 | |
| |\ \ \ \ | ||||||
| * | | | | | Update `next_free_reg` correctly | Justus Fasse | 2021-07-07 | 1 | -1/+1 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By incorrectly reusing registers, the schedules of `ideal_schedule'` were over-constrained. | |||||
| * | | | | | Fix weird indentation | Justus Fasse | 2021-07-07 | 1 | -85/+85 | |
| | | | | | | ||||||
| * | | | | | Optionally, only remove redundant conditions when applying CSE3. | Justus Fasse | 2021-07-06 | 7 | -36/+63 | |
| | | | | | | | | | | | | | | | | | | | | | | | | Super hacky way to do it right now. | |||||
| * | | | | | Work-around so that the less-restrictive down-scheduling heuristic can | Justus Fasse | 2021-07-05 | 1 | -14/+72 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | be used The current code is not correct right now, see the inline comments. | |||||
| * | | | | | Actually sort the list... (dumb typo) | Justus Fasse | 2021-07-05 | 1 | -1/+1 | |
| | | | | | | ||||||
| * | | | | | Minor changes to proofs (not complete) | Justus Fasse | 2021-07-04 | 1 | -9/+26 | |
| | | | | | | ||||||
| * | | | | | Minor changes to compiler_expand.ml | Justus Fasse | 2021-07-04 | 1 | -1/+7 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a) Make it possible to trivially discover induction variables on a small example b) Extra-renumbering pass for better printing while debugging |