mkazantsev (Max Kazantsev)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 23 2017, 8:11 PM (42 w, 6 d)

Recent Activity

Today

mkazantsev added a comment to D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.

Ping

Mon, Nov 20, 1:07 AM

Yesterday

mkazantsev committed rL318639: [IRCE] Smart range intersection.
[IRCE] Smart range intersection
Sun, Nov 19, 10:08 PM
mkazantsev closed D39954: [IRCE] Smart range intersection by committing rL318639: [IRCE] Smart range intersection.
Sun, Nov 19, 10:08 PM

Fri, Nov 17

mkazantsev updated the diff for D39954: [IRCE] Smart range intersection.

Also renamed the lambda to make it more clear.

Fri, Nov 17, 12:56 AM
mkazantsev added a dependent revision for D39954: [IRCE] Smart range intersection: D40168: [IRCE][NFC] Add no wrap flags to no-wrapping SCEV calculation.
Fri, Nov 17, 12:49 AM
mkazantsev added a dependency for D40168: [IRCE][NFC] Add no wrap flags to no-wrapping SCEV calculation: D39954: [IRCE] Smart range intersection.
Fri, Nov 17, 12:49 AM
mkazantsev created D40168: [IRCE][NFC] Add no wrap flags to no-wrapping SCEV calculation.
Fri, Nov 17, 12:49 AM
mkazantsev added a comment to D39954: [IRCE] Smart range intersection.

Also rebased on top of https://reviews.llvm.org/D39589

Fri, Nov 17, 12:43 AM
mkazantsev updated the diff for D39954: [IRCE] Smart range intersection.

Added a more detailed comment to Lambda, fixed a typo.

Fri, Nov 17, 12:30 AM

Thu, Nov 16

mkazantsev committed rL318508: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
[IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH
Thu, Nov 16, 10:49 PM
mkazantsev closed D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH by committing rL318508: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Thu, Nov 16, 10:49 PM
mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 9:03 PM
mkazantsev added a dependency for D39954: [IRCE] Smart range intersection: D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Thu, Nov 16, 8:59 PM
mkazantsev removed a dependency for D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH: D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 8:59 PM
mkazantsev removed a dependent revision for D39954: [IRCE] Smart range intersection: D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Thu, Nov 16, 8:59 PM
mkazantsev added a dependent revision for D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH: D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 8:59 PM
mkazantsev added a dependency for D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH: D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 8:57 PM
mkazantsev added a dependent revision for D39954: [IRCE] Smart range intersection: D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Thu, Nov 16, 8:57 PM
mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 8:52 PM
mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 2:57 AM
mkazantsev updated the diff for D39954: [IRCE] Smart range intersection.

Addressed style comments.

Thu, Nov 16, 2:53 AM
mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Thu, Nov 16, 2:43 AM

Wed, Nov 15

mkazantsev committed rL318381: [IRCE] Fix SCEVExpander's usage in IRCE.
[IRCE] Fix SCEVExpander's usage in IRCE
Wed, Nov 15, 10:08 PM
mkazantsev closed D39234: [IRCE] Fix SCEVExpander's usage in IRCE.

Merged as https://reviews.llvm.org/rL318381

Wed, Nov 15, 10:08 PM
mkazantsev committed rL318377: [SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander.
[SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander
Wed, Nov 15, 9:13 PM
mkazantsev closed D39236: [SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander by committing rL318377: [SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander.
Wed, Nov 15, 9:13 PM
mkazantsev updated the diff for D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.

Changed comments, added test with nephew loop.

Wed, Nov 15, 8:59 PM

Tue, Nov 14

mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Tue, Nov 14, 7:23 PM
mkazantsev added inline comments to D39954: [IRCE] Smart range intersection.
Tue, Nov 14, 7:07 PM

Mon, Nov 13

mkazantsev updated the diff for D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.
Mon, Nov 13, 9:39 PM
mkazantsev created D39954: [IRCE] Smart range intersection.
Mon, Nov 13, 4:11 AM

Sun, Nov 12

mkazantsev abandoned D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.
Sun, Nov 12, 8:39 PM

Fri, Nov 10

mkazantsev updated the diff for D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.

Updated comments in code to make it more clear what is going on.

Fri, Nov 10, 5:26 AM
mkazantsev added a comment to D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.

@reames the problem here is that when we try to simplify sum of i and j in getSCEVAddRecExpr, we falsely assume that j is invariant for i's loop while it should be vice versa: i is invariant for j's loop.

Fri, Nov 10, 5:09 AM
mkazantsev added inline comments to D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.
Fri, Nov 10, 5:09 AM
mkazantsev added a comment to D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.

Max, I don't quite follow your discussion enough to know for sure, but I suspect there's something wrong with your framing here. A induction variable in one loop may be loop invariant with respect to sibling loop. That's normal. Is there maybe a subcase here? Or are you looking at flawed assumption in caller code?

int i;
for (i = 0; i < N; i++) { /* i is variant, j is undefined here */ }
for (int j = 0; j < M; j++) {/* i is invariant, j is varying. */ }

Fri, Nov 10, 5:05 AM

Wed, Nov 8

mkazantsev updated the diff for D39236: [SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander.

Fixed comments.

Wed, Nov 8, 11:20 PM
mkazantsev added inline comments to D39236: [SCEV][NFC] Introduce isSafeToExpandAt function to SCEVExpander.
Wed, Nov 8, 11:17 PM
mkazantsev updated the diff for D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.
  1. Removed over-restrictive check;
  2. Allowed PRE across implicit control flow if it only takes to insert a Phi from existing instructons and not create new instructions.
  3. Added a new test against item 2.
Wed, Nov 8, 10:12 PM
mkazantsev planned changes to D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.
Wed, Nov 8, 9:37 PM
mkazantsev added inline comments to D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.
Wed, Nov 8, 9:31 PM
mkazantsev added inline comments to D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.
Wed, Nov 8, 9:26 PM

Mon, Nov 6

mkazantsev planned changes to D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.

Put under rug until it's needed.

Mon, Nov 6, 8:36 PM

Fri, Nov 3

mkazantsev retitled D39590: [IRCE][NFC] Make range check's End a non-null SCEV from [IRCE][NFC] Make range checl's End a non-null SCEV to [IRCE][NFC] Make range check's End a non-null SCEV.
Fri, Nov 3, 3:42 AM
mkazantsev updated the summary of D39590: [IRCE][NFC] Make range check's End a non-null SCEV.
Fri, Nov 3, 3:30 AM
mkazantsev added a dependency for D39590: [IRCE][NFC] Make range check's End a non-null SCEV: D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Fri, Nov 3, 3:29 AM
mkazantsev added a dependent revision for D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH: D39590: [IRCE][NFC] Make range check's End a non-null SCEV.
Fri, Nov 3, 3:29 AM
mkazantsev created D39590: [IRCE][NFC] Make range check's End a non-null SCEV.
Fri, Nov 3, 3:28 AM
mkazantsev created D39589: [IRCE] Remove folding of two range checks into RANGE_CHECK_BOTH.
Fri, Nov 3, 2:45 AM
mkazantsev added a comment to D38619: [GVN] Prevent ScalarPRE from hoisting across instructions that don't pass control flow to successors.

Ping

Fri, Nov 3, 2:31 AM
mkazantsev added a comment to D39234: [IRCE] Fix SCEVExpander's usage in IRCE.

Ping

Fri, Nov 3, 12:54 AM
mkazantsev committed rL317303: [NFC] Get rid of hard-coded value ID in test.
[NFC] Get rid of hard-coded value ID in test
Fri, Nov 3, 12:31 AM

Wed, Nov 1

mkazantsev committed rL317088: Revert rL311205 "[IRCE] Fix buggy behavior in Clamp".
Revert rL311205 "[IRCE] Fix buggy behavior in Clamp"
Wed, Nov 1, 6:22 AM
mkazantsev added a reverting commit for rL311205: [IRCE] Fix buggy behavior in Clamp: rL317088: Revert rL311205 "[IRCE] Fix buggy behavior in Clamp".
Wed, Nov 1, 6:22 AM

Tue, Oct 31

mkazantsev added inline comments to D39361: [SCEV] A different fix for PR33494.
Tue, Oct 31, 12:09 PM
mkazantsev created D39453: [SCEV] Strengthen variance condition in calculateLoopDisposition.
Tue, Oct 31, 4:33 AM

Mon, Oct 30

mkazantsev added inline comments to rL316976: [IndVarSimplify] Simplify code using preheader assumption.
Mon, Oct 30, 11:28 PM
mkazantsev committed rL316979: [IRCE][NFC] Rename fields of InductiveRangeCheck.
[IRCE][NFC] Rename fields of InductiveRangeCheck
Mon, Oct 30, 11:19 PM
mkazantsev closed D39414: [IRCE][NFC] Rename fields of InductiveRangeCheck by committing rL316979: [IRCE][NFC] Rename fields of InductiveRangeCheck.
Mon, Oct 30, 11:19 PM
mkazantsev committed rL316977: [NFC] Get rid of variables used in assert only.
[NFC] Get rid of variables used in assert only
Mon, Oct 30, 10:34 PM
mkazantsev committed rL316975: Reapply "[GVN] Prevent LoadPRE from hoisting across instructions that don't….
Reapply "[GVN] Prevent LoadPRE from hoisting across instructions that don't…
Mon, Oct 30, 10:08 PM
mkazantsev closed D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors by committing rL316975: Reapply "[GVN] Prevent LoadPRE from hoisting across instructions that don't….
Mon, Oct 30, 10:08 PM
mkazantsev added inline comments to D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.
Mon, Oct 30, 9:13 PM
mkazantsev created D39414: [IRCE][NFC] Rename fields of InductiveRangeCheck.
Mon, Oct 30, 4:30 AM
mkazantsev committed rL316889: [IRCE][NFC] Store Length as SCEV in RangeCheck instead of Value.
[IRCE][NFC] Store Length as SCEV in RangeCheck instead of Value
Mon, Oct 30, 2:35 AM
mkazantsev updated the diff for D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.

Addressed comments.

Mon, Oct 30, 12:53 AM

Sun, Oct 29

mkazantsev added inline comments to D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.
Sun, Oct 29, 11:32 PM
mkazantsev added a comment to D31613: [LoopPeeling] Get rid of Phis that become invariant after N steps.

This is an interesting case, however it has nothing to do with this patch. This patch is only for pattern "some Phi becomes invariant after N steps", and in your situation is "some condition becomes invariant after few steps". It is a completely different situation. In case if your condition was if (x < 60), using peeling here would be complete bizzare.

Sun, Oct 29, 10:00 PM
mkazantsev committed rL316884: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE.
[GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE
Sun, Oct 29, 9:49 PM
mkazantsev closed D39369: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE by committing rL316884: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE.
Sun, Oct 29, 9:49 PM
mkazantsev added inline comments to D39369: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE.
Sun, Oct 29, 8:39 PM

Fri, Oct 27

mkazantsev updated the diff for D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.

Changes from https://reviews.llvm.org/D38944 (fixed version) have been included into this one since they must go together.

Fri, Oct 27, 4:41 AM
mkazantsev added a comment to D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.

The general idea is that I plan to factor out concept of SCEV range (which is basically a tripple Begin, End, Step) into an utility class. The concept of such range is used in IRCE, Loop Predication and some other passes, each of them has its own implementation of basic stuff (such as intersection, contains check etc).

Fri, Oct 27, 4:21 AM
mkazantsev added a dependency for D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors: D39369: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE.
Fri, Oct 27, 4:08 AM
mkazantsev added a dependent revision for D39369: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE: D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.
Fri, Oct 27, 4:08 AM
mkazantsev abandoned D38944: [GVN] Handle removal of first implicit CF instruction correctly.

Given that https://reviews.llvm.org/D37460 and this one should only go together, it makes more sense to merge them into one. I am abandoning this one; the fixed changes from here will be merged into https://reviews.llvm.org/D37460. Abandoning this one.

Fri, Oct 27, 4:08 AM
mkazantsev created D39369: [GVN][NFC] Mark instruction for deletion instead of immediate erasing in LoadPRE.
Fri, Oct 27, 4:00 AM
mkazantsev planned changes to D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.

I am going to abandon https://reviews.llvm.org/D38944 and combine its changes into here with all possible NFC factored out. It would be more logical to keep them together.

Fri, Oct 27, 3:07 AM
mkazantsev committed rL316748: [GVN][NFC] Refactor loop iteration with foreach.
[GVN][NFC] Refactor loop iteration with foreach
Fri, Oct 27, 1:19 AM

Thu, Oct 26

mkazantsev updated the summary of D38944: [GVN] Handle removal of first implicit CF instruction correctly.
Thu, Oct 26, 10:11 PM
mkazantsev updated the summary of D37460: [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors.
Thu, Oct 26, 10:11 PM
mkazantsev added inline comments to D39320: [IRCE] Ensure that expanded exit values are available in loop's preheader.
Thu, Oct 26, 9:54 PM
mkazantsev added a comment to D39228: [SCEV] Enhance SCEVFindUnsafe for division.

Hi Evgeny!

Thu, Oct 26, 9:39 PM
mkazantsev added a comment to D39228: [SCEV] Enhance SCEVFindUnsafe for division.

Reverted as https://reviews.llvm.org/rL316739. I will try to understand what happens.

Thu, Oct 26, 9:19 PM
mkazantsev committed rL316739: Revert rL316568 because of sudden performance drop on ARM.
Revert rL316568 because of sudden performance drop on ARM
Thu, Oct 26, 9:18 PM
mkazantsev added a reverting commit for rL316568: [SCEV] Enhance SCEVFindUnsafe for division: rL316739: Revert rL316568 because of sudden performance drop on ARM.
Thu, Oct 26, 9:18 PM
mkazantsev updated the diff for D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.
Thu, Oct 26, 3:11 AM
mkazantsev abandoned D39233: [SCEV][NFC] Strengthen safety assert in SCEV expander.
Thu, Oct 26, 1:32 AM
mkazantsev abandoned D39230: [IndVarSimplify] Do not expand unsafe expressions in IndVarSimplify.
Thu, Oct 26, 1:31 AM
mkazantsev abandoned D39229: [LoopUnrolling] Do not expand unsafe expressions in loop unrolling.
Thu, Oct 26, 1:30 AM
mkazantsev abandoned D39231: [SCEV][NFC] Assert that we do not expand something unsafe.
Thu, Oct 26, 1:30 AM
mkazantsev planned changes to D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.

Going to add some stuff to make clear distinction between signed and unsigned division.

Thu, Oct 26, 12:04 AM

Wed, Oct 25

mkazantsev added a dependency for D39320: [IRCE] Ensure that expanded exit values are available in loop's preheader: D39234: [IRCE] Fix SCEVExpander's usage in IRCE.
Wed, Oct 25, 10:55 PM
mkazantsev added a dependent revision for D39234: [IRCE] Fix SCEVExpander's usage in IRCE: D39320: [IRCE] Ensure that expanded exit values are available in loop's preheader.
Wed, Oct 25, 10:55 PM
mkazantsev updated the diff for D39320: [IRCE] Ensure that expanded exit values are available in loop's preheader.
Wed, Oct 25, 10:54 PM
mkazantsev created D39320: [IRCE] Ensure that expanded exit values are available in loop's preheader.
Wed, Oct 25, 10:47 PM
mkazantsev created D39286: [SCEV][NFC] Introduce isSignedDivisorOf function in SCEV.
Wed, Oct 25, 6:24 AM
mkazantsev committed rL316568: [SCEV] Enhance SCEVFindUnsafe for division.
[SCEV] Enhance SCEVFindUnsafe for division
Wed, Oct 25, 4:08 AM
mkazantsev closed D39228: [SCEV] Enhance SCEVFindUnsafe for division by committing rL316568: [SCEV] Enhance SCEVFindUnsafe for division.
Wed, Oct 25, 4:08 AM
mkazantsev updated the diff for D39234: [IRCE] Fix SCEVExpander's usage in IRCE.

Fixed typos in debug output message, added more tests for division.

Wed, Oct 25, 3:29 AM