- User Since
- Jan 28 2016, 4:01 PM (201 w, 6 d)
Oct 21 2016
Oct 20 2016
Oct 19 2016
Okay, I will re-create a revision.
Oct 18 2016
Oct 15 2016
Sep 30 2016
Hi Sanjoy and Artur,
Rebase this patch to latest source.
Sep 28 2016
Sep 26 2016
Sep 23 2016
Add another test case where zext should not be removed.
Address Sanjoy's comments.
Sep 16 2016
Do you think this is the right direction?
Sep 10 2016
Canonicalize on zext when IV is known non-negative. Then, for each def-use pair of IV users, choose the kind of extension based on the following strategy:
Sep 7 2016
InstCombine canonicalizes on zexts when the value is non-negative. I will try canonicalizing on zext and teach getWideRecurrence to return a valid AddRec when the non-negative value is zero-extended.
Hi Philip, Sanjoy,
Sep 6 2016
Sorry, didn't generate a full diff.
Sep 2 2016
Aug 24 2016
Aug 23 2016
Aug 22 2016
Should clear KnownZero and KnownOne bits when there is conflicts to allow propagation of undef. Changed the code in computeKnownBitsFromShiftOperator to have the same logic as that at the end of this function.
Aug 18 2016
The problem is in indvarsimplify, this patch results in redundant trunc/sext that should be eliminated by indvarsimplify but not, causing the loop in TSVC/s174 not vectorizable. I will submit a fix for review.
Aug 17 2016
Aug 16 2016
I will look into the regressions on public benchmarks.
reopen this review because the committed change has been reverted
Aug 15 2016
Abandon this patch as r278172 has been reverted.
Sorry, the related PR number is 28946
Aug 12 2016
Aug 10 2016
This review was not closed automatically. Committed as r278172
Aug 9 2016
Use APInt::setBit, fix the indentation
Use APInt::setBit, add comment
Aug 8 2016
The non-negative shift part goes to patch D23296.
Separate the non-negative shift changes to another patch. Address Sanjoy's comments.
Aug 5 2016
Aug 4 2016
Another Ping for this patch :).
Aug 3 2016
Jul 29 2016
Jul 27 2016
Jul 14 2016
Actually, adding -loop-rotate just happens to work for this case, it doesn't solve the fundamental problem. For example, adding -loop-rotate or other loop pass sequences doesn't help with the case in D21773
Jun 29 2016
You are right. A regression test could be:
Jun 28 2016
Jun 27 2016
Rebase the same patch on the latest source.
Removed the isKnownNonNegative part, created a new file for the 2 tests. As Sanjoy pointed out, isKnownPredicate didn't work with these cases because the loops are not in canonical form. Using loop-rotate before indvars solves the issue.
Jun 20 2016
Using -loop-rotate works for these cases, as the "%add = add nsw i32 %i.0, 2" is brought to loop header and "nsw" is propagated. Thank you Sanjoy!
Jun 15 2016
I looked at the threads on llvm-dev discussing the no-wrap flag propagation issues. It seems like this has been a problem for a while and there is not a clear agreement on when and how to propagate no-wrap flags from instructions to corresponding SCEVs.
Apr 27 2016
Hi Sanjoy and Philip,
Apr 21 2016
Sorry for the late reply, took sick days.
Address Mitch's comments.
Apr 15 2016
Apr 14 2016
Add a test to this change.
Apr 13 2016
Ping :), any suggestions/comments on this change?