- User Since
- Mar 9 2015, 7:37 AM (278 w, 4 d)
Jan 31 2018
Jan 29 2018
Jan 22 2018
I've addressed the comments in this review and done the commit based on the LGTM in https://reviews.llvm.org/D40333, which is the "end version" of all these refactoring changes after more refactoring and clang-format.
Jan 7 2018
Matthias, did you get a chance to look at these changes (and at the changes in https://reviews.llvm.org/D40330) ? Are you OK with them?
Dec 26 2017
Dec 20 2017
Dec 13 2017
Changes based on comments in https://reviews.llvm.org/D40333
I've uploaded a new review here and in https://reviews.llvm.org/D40330.
Dec 5 2017
Added .addreg(Reg, RegState::ImplicitDefine)
Dec 3 2017
Dec 1 2017
Nov 29 2017
Added subtarget features.
Adding the rr versions of the instructions to hasPartialRegUpdate affected folding of memory operands for these instructions (if an instruction has partial reg update, then it folds only if optimizing for size) - Made a small adjustment the test to recreate the problematic scenario after this change.
Thanks for the comments!
My changes are mostly refactoring of the old ExecutionDepsDix pass in a way that is (almost*) NFC.
This pass combined the logic of both breaking false dependencies and execution domain adjustments in one single pass that traversed the basic blocks in a very special way (optimizing traversal of loops).
I think the first review (https://reviews.llvm.org/D40330) in this bunch would make everything clearer for you.
Nov 23 2017
Fixed vector intialization.
Also incorporated comments from https://reviews.llvm.org/D40333 in this patch, which seems to be more appropriate than the later one.
Nov 22 2017
Nov 21 2017
Oct 22 2017
Oct 16 2017
As compile time was a concern, I've added a flag to control weather we do cost calculations for local intervals we expect to be created (it's on by default for X86 target, off for the rest).
I've fixed the tests and some comments.
Sep 25 2017
Aug 23 2017
Have you had a chance to look at it yet?
Aug 15 2017
As far as I read (http://www.eecs.umich.edu/~mahlke/papers/1993/hwu_jsuper93.pdf), in order to create superblocks, we need to identify traces using execution profile information, and then do tail duplication to avoid multiple entrances.
According the authors of this technique, this transformation as itself takes significant amount of code and compile time.
I don’t think this transformation is something we should do only for the sake of machine copy propagation pass, as it adds significant complexity.
The decision of supporting this transformation and the possible optimizations that can benefit from it seems like an orthogonal discussion that is not directly related to this bad eviction chains I’m trying to solve.
Aug 14 2017
Jul 27 2017
Jul 24 2017
Jul 23 2017
Jun 26 2017
Jun 25 2017
Apr 4 2017
Do you have any update on this change?
Mar 28 2017
Mar 27 2017
Mar 23 2017
Mar 19 2017
Mar 15 2017
Do you have a new revision for this change?
Feb 27 2017
Feb 22 2017
I've seen some places that do SmallVector<std::unique_ptr<type>, size>. This might be a bit better as it states explicitly that there is no duplication in this data structure.
Feb 17 2017
I'm sorry, I'm getting too lost in this review with the interaction between all the changes and especially trying to check if all the corner cases were tested sufficiently.
I want to make sure we implement each of your changes the best possible way.
Feb 15 2017
Feb 9 2017
The existent tests you've changes seem to be affect by other changes as well.
Can you please upload only the changed tests' logic that is affected by this patch alone?
I would not like to see the affects of "xor fusion" or the other things here, just the support for call instructions in clearance calculation
First, I'm sorry for the late review :)
Feb 1 2017
Jan 24 2017
Added a few minor comments.
Jan 19 2017
Jan 18 2017
Jan 17 2017
Can you see the tests? I've added comments next to them.
Do this tests capture what you meant?
Jan 16 2017
I've added the test that check for errors.
Jan 12 2017
Added relevant data16/data32+lgdt tests.