Page MenuHomePhabricator
Feed Advanced Search

Thu, Aug 1

apilipenko added a comment to D65276: [SCEV] Disable canonical expansion for nested recurrences..

The original patch introduces a function minIterationWidthForEvaluateAtIteration. This way it exposes the limitation of evaluateAtIteration through the API and makes it possible for the user to choose the proper It width (e.g. like I did in the first revision https://reviews.llvm.org/D62563?vs=on&id=201795). What was the reason to remove it?

Thu, Aug 1, 4:00 PM · Restricted Project

Jun 27 2019

apilipenko accepted D63823: [InlineCost] make InlineCost assignable.

Even though it's motivated by downstream code, looks harmless to change upstream.

Jun 27 2019, 1:54 PM · Restricted Project

Jun 11 2019

apilipenko accepted D63112: Generalize icmp matching in IndVars' eliminateTrunc.
Jun 11 2019, 3:07 PM · Restricted Project

Jun 3 2019

apilipenko updated the diff for D62563: Fix incorrect expand of non-linear addrecs.
Jun 3 2019, 11:55 AM · Restricted Project
apilipenko updated the diff for D62563: Fix incorrect expand of non-linear addrecs.

Fall back to non-canonical mode for non-affine addrecs.

Jun 3 2019, 11:41 AM · Restricted Project
apilipenko committed rG786a85dcd20c: Add ScalarEvolutionsTest::SCEVExpandInsertCanonicalIV tests (authored by apilipenko).
Add ScalarEvolutionsTest::SCEVExpandInsertCanonicalIV tests
Jun 3 2019, 11:25 AM
apilipenko committed rL362432: Add ScalarEvolutionsTest::SCEVExpandInsertCanonicalIV tests .
Add ScalarEvolutionsTest::SCEVExpandInsertCanonicalIV tests
Jun 3 2019, 11:25 AM

May 31 2019

apilipenko accepted D62748: [LoopPred] Handle a subset of NE comparison based latches.
May 31 2019, 5:24 PM · Restricted Project

May 30 2019

apilipenko accepted D61843: [DAGCombine] Match a pattern where a wide type scalar value is stored by several narrow stores.

LGTM

May 30 2019, 12:18 PM · Restricted Project

May 29 2019

apilipenko added a comment to D62563: Fix incorrect expand of non-linear addrecs.

Artur, nice find. In terms of staging complexity, have you considered how impactful it would be to simply refuse to generate the value at the given iteration in this case? evaluateAtIteration is allowed to return SCEVCouldNotCompute. I'm tempted to first introduce a bailout for a quick correctness fix - maybe along side your assert to see if we're missing any other cases - and then spend more time considering your full fix.

May 29 2019, 2:22 PM · Restricted Project
apilipenko added a comment to D61843: [DAGCombine] Match a pattern where a wide type scalar value is stored by several narrow stores.

Have you considered reusing calculateByteProvider mechanism from load combining instead of matching an exact pattern?

May 29 2019, 12:53 PM · Restricted Project

May 28 2019

apilipenko updated the summary of D62563: Fix incorrect expand of non-linear addrecs.
May 28 2019, 5:28 PM · Restricted Project
apilipenko created D62563: Fix incorrect expand of non-linear addrecs.
May 28 2019, 5:27 PM · Restricted Project

Apr 29 2019

apilipenko added inline comments to D61236: [NFC] Add a static function to do the endian check.
Apr 29 2019, 9:24 AM · Restricted Project

Apr 28 2019

apilipenko accepted D60740: [InlineCost] cleanup calculations of Cost and Threshold.
Apr 28 2019, 10:54 PM · Restricted Project

Apr 26 2019

apilipenko added inline comments to D60740: [InlineCost] cleanup calculations of Cost and Threshold.
Apr 26 2019, 6:22 PM · Restricted Project
apilipenko accepted D60751: [NFC][InlineCost] cleanup - comments, overflow handling..
Apr 26 2019, 6:14 PM · Restricted Project

Apr 22 2019

apilipenko accepted D60659: [InstCombine] Eliminate stores to constant memory.

LGTM. I agree that we can leave the stronger variant for the future.

Apr 22 2019, 10:48 AM · Restricted Project

Apr 17 2019

apilipenko accepted D60093: [LoopPredication] Allow predication of loop invariant computations.

Looks good overall, a couple of comments inline.

Apr 17 2019, 4:32 AM · Restricted Project

Apr 15 2019

apilipenko accepted D60718: [LoopPred] Stop passing around builders [NFC].
Apr 15 2019, 10:39 AM · Restricted Project

Apr 3 2019

apilipenko added a comment to D60093: [LoopPredication] Allow predication of loop invariant computations.
  1. Since we need to fiddle with the insertion point I think we should stop using single IRBuilder which we pass around. It looks like creating a local IRBuilder is a cheap operation, so we can have local IRBuilders when we need to generate instructions. This way the insertion point will be clear from the local context.
Apr 3 2019, 1:53 PM · Restricted Project

Jan 9 2019

apilipenko added inline comments to D56074: [NFC] Add detector function for explicitly expressed guards.
Jan 9 2019, 4:53 PM

Jan 3 2019

apilipenko committed rL350351: [CaptureTracking] Add a unit test for MaxUsesToExplore.
[CaptureTracking] Add a unit test for MaxUsesToExplore
Jan 3 2019, 12:20 PM

Dec 17 2018

apilipenko committed rL349438: [CaptureTracking] Pass MaxUsesToExplore from wrappers to the actual….
[CaptureTracking] Pass MaxUsesToExplore from wrappers to the actual…
Dec 17 2018, 7:35 PM

Nov 29 2018

apilipenko committed rL347910: Introduce MaxUsesToExplore argument to capture tracking.
Introduce MaxUsesToExplore argument to capture tracking
Nov 29 2018, 12:11 PM
apilipenko closed D55042: Introduce MaxUsesToExplore argument to capture tracking.
Nov 29 2018, 12:11 PM

Nov 28 2018

apilipenko updated the diff for D55042: Introduce MaxUsesToExplore argument to capture tracking.

Add diff with context.

Nov 28 2018, 11:35 PM
apilipenko added a comment to D51207: Introduce llvm.experimental.widenable_condition intrinsic.

One of the alternatives naming schemes which was discussed is to call this intrinsic should_deoptimize. In this case the meaning of the returned value is inverted, so we need to or it with the condition which we want to widen.

Nov 28 2018, 6:44 PM
apilipenko created D55042: Introduce MaxUsesToExplore argument to capture tracking.
Nov 28 2018, 6:34 PM
apilipenko committed rL347826: NFC. Use unsigned type for uses counter in CaptureTracking.
NFC. Use unsigned type for uses counter in CaptureTracking
Nov 28 2018, 6:18 PM

Nov 12 2018

apilipenko added inline comments to D53892: [CodeGen] Support custom format of stack maps.
Nov 12 2018, 3:32 PM

Nov 7 2018

apilipenko accepted D54224: [CodeGen] Expose some data types and accessors from StackMaps.
Nov 7 2018, 2:33 PM
apilipenko added inline comments to D53892: [CodeGen] Support custom format of stack maps.
Nov 7 2018, 12:36 PM
apilipenko added inline comments to D54021: [LoopSimplifyCFG] Teach LoopSimplifyCFG to constant-fold branches and switches.
Nov 7 2018, 12:04 PM

Nov 2 2018

apilipenko accepted D50377: [LICM] Use ICFLoopSafetyInfo in LICM.
Nov 2 2018, 4:22 PM

Nov 1 2018

apilipenko accepted D54011: [NFC][LICM] Factor out instruction erasing logic.

With this change you seem to be invalidating AST for instructions which have not been previously invalidated. I would hesitate to call this NFC.

Nov 1 2018, 5:13 PM

Oct 29 2018

apilipenko added a comment to D50377: [LICM] Use ICFLoopSafetyInfo in LICM.

Current patch seems to have comments like "this block doesn't need invalidation". Maybe sink this decision down to the SafetyInfo implementation? It should reduce the complexity of the user: just call invalidate every time you delete/insert instructions and you would be fine.

Oct 29 2018, 4:03 PM

Sep 8 2018

apilipenko added inline comments to D51207: Introduce llvm.experimental.widenable_condition intrinsic.
Sep 8 2018, 6:42 PM

Sep 4 2018

apilipenko added inline comments to D51207: Introduce llvm.experimental.widenable_condition intrinsic.
Sep 4 2018, 2:56 PM

Jun 26 2018

apilipenko added a comment to D40425: Extending CFGPrinter and CallPrinter with Heat Colors.

@rcorcs this has been accepted for quite a while, is there anything preventing integration? I'm looking forward to using colored graphs out of the box.

Jun 26 2018, 8:40 AM

Jun 25 2018

apilipenko committed rL335473: SafepointIRVerifier should ignore dead blocks and dead edges.
SafepointIRVerifier should ignore dead blocks and dead edges
Jun 25 2018, 6:56 AM
apilipenko closed D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Jun 25 2018, 6:55 AM
apilipenko committed rL335462: Revert change 335077 "[InlineSpiller] Fix a crash due to lack of forward….
Revert change 335077 "[InlineSpiller] Fix a crash due to lack of forward…
Jun 25 2018, 6:03 AM
apilipenko added a reverting change for rL335077: [InlineSpiller] Fix a crash due to lack of forward progress from remat…: rL335462: Revert change 335077 "[InlineSpiller] Fix a crash due to lack of forward….
Jun 25 2018, 6:03 AM
apilipenko added a reverting change for rL335091: Add more test cases for deopt-operands via regalloc: rL335461: Revert change 335091. .
Jun 25 2018, 6:00 AM
apilipenko committed rL335461: Revert change 335091. .
Revert change 335091.
Jun 25 2018, 6:00 AM

Jun 18 2018

apilipenko accepted D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Jun 18 2018, 3:05 AM

Jun 14 2018

apilipenko added inline comments to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.
Jun 14 2018, 3:07 AM

Jun 9 2018

apilipenko added a comment to D47441: SafepointIRVerifier should ignore dead blocks and dead edges.

Can you describe what is the difference you observe in the verifier behavior with and without simplifications before? There will always be cases when some simplifications before the verifier change the CFG. You won't be able to handle everything in this analysis.

Jun 9 2018, 2:30 AM

Jun 8 2018

apilipenko committed rL334285: [BPI] Apply invoke heuristic before loop branch heuristic.
[BPI] Apply invoke heuristic before loop branch heuristic
Jun 8 2018, 6:09 AM
apilipenko closed D47371: [BPI] Apply invoke heuristic before loop branch heuristic.
Jun 8 2018, 6:09 AM

Jun 4 2018

apilipenko updated the diff for D47371: [BPI] Apply invoke heuristic before loop branch heuristic.

The suggestion to apply calcInvokeHeuristics before calcUnreachableHeuristics and calcColdCallHeuristics makes sense.

Jun 4 2018, 8:49 AM

May 25 2018

apilipenko created D47371: [BPI] Apply invoke heuristic before loop branch heuristic.
May 25 2018, 6:21 AM

Mar 27 2018

apilipenko committed rL328642: Fix a reoccuring typo in load-combine tests.
Fix a reoccuring typo in load-combine tests
Mar 27 2018, 10:36 AM

Feb 19 2018

apilipenko added a comment to D43375: [SCEV] Prove predicates in loops via monotonicity.

This is very similar to what we had as an initial implementation of loop predication. Later we found that this approach is problematic. See https://reviews.llvm.org/D37569 description for the details. This patch likely suffers from a similar problem.

Feb 19 2018, 8:10 AM

Feb 12 2018

apilipenko accepted D42364: [IR] Fix creating mutable versions of TBAA access tags.

Thanks for adding the test case!

Feb 12 2018, 6:48 AM

Jan 19 2018

apilipenko added inline comments to D41565: [Transforms] Support making mutable versions of new-format TBAA access tags.
Jan 19 2018, 7:49 AM

Nov 2 2017

apilipenko accepted D39500: [LoopPredication] Enable predication when latchCheckIV is wider than rangeCheck.
Nov 2 2017, 7:49 AM

Oct 27 2017

apilipenko added a comment to D38085: Use the basic cost if a GEP is not used as addressing mode.

We also observed regressions caused by this change. In our case the change increases the perceived cost of a loop which in turn reduced the unrolling factor. Let me know if you need further details about the regressions.

Oct 27 2017, 9:45 AM
apilipenko committed rL316768: [LoopPredication] Handle the case when the guard and the latch IV have….
[LoopPredication] Handle the case when the guard and the latch IV have…
Oct 27 2017, 7:46 AM
apilipenko closed D39097: [LoopPredication] Handle the case when the guard and the latch IV have different offsets by committing rL316768: [LoopPredication] Handle the case when the guard and the latch IV have….
Oct 27 2017, 7:46 AM

Oct 26 2017

apilipenko added a comment to D39097: [LoopPredication] Handle the case when the guard and the latch IV have different offsets.
In D39097#905174, @anna wrote:

Artur, before this patch, we were checking whether RangeCheckIV's postIncExpr is latchCheckIV.

Now, the header comments and proof seems to point to the fact that the guard and latch are using the same offset (lines 103 - 110), but the code does not have any check that we are using the same offset. Or, is it that the offset is the same, but the difference in the latchCheckIV versus rangeCheckIV is caught in their respective start values, and the offset for both latch and guard remains the same?

I changed the loop in the description so it doesn't use Start. Instead the offsets are sunk into predicates G and B.

Oct 26 2017, 9:42 AM
apilipenko updated the diff for D39097: [LoopPredication] Handle the case when the guard and the latch IV have different offsets.

Clarified the description, added the requested test case.

Oct 26 2017, 9:38 AM

Oct 20 2017

apilipenko updated the diff for D39097: [LoopPredication] Handle the case when the guard and the latch IV have different offsets.

Upload diff with context. Minor fix in the header comment.

Oct 20 2017, 6:23 AM

Oct 19 2017

apilipenko created D39097: [LoopPredication] Handle the case when the guard and the latch IV have different offsets.
Oct 19 2017, 9:29 AM

Oct 12 2017

apilipenko committed rL315623: [LoopPredication] Check whether the loop is already guarded by the first….
[LoopPredication] Check whether the loop is already guarded by the first…
Oct 12 2017, 2:21 PM
apilipenko committed rL315616: [LoopPredication] Support ule, sle latch predicates.
[LoopPredication] Support ule, sle latch predicates
Oct 12 2017, 1:40 PM
apilipenko closed D38177: [LoopPredication] Support ule, sle latch predicates by committing rL315616: [LoopPredication] Support ule, sle latch predicates.
Oct 12 2017, 1:40 PM
apilipenko accepted D38766: [CVP] Process binary operations even when def is local.

Did you measure the compile time impact somehow?

Oct 12 2017, 6:45 AM

Oct 6 2017

apilipenko added inline comments to D38177: [LoopPredication] Support ule, sle latch predicates.
Oct 6 2017, 9:02 AM

Oct 5 2017

apilipenko committed rL314988: [X86] Fix chains update when lowering BUILD_VECTOR to a vector load.
[X86] Fix chains update when lowering BUILD_VECTOR to a vector load
Oct 5 2017, 9:30 AM
apilipenko closed D38547: [X86] Fix chains update when lowering BUILD_VECTOR to a vector load by committing rL314988: [X86] Fix chains update when lowering BUILD_VECTOR to a vector load.
Oct 5 2017, 9:30 AM

Oct 4 2017

apilipenko added a comment to D38547: [X86] Fix chains update when lowering BUILD_VECTOR to a vector load.

Is this PR10114 ?

Oct 4 2017, 10:27 AM
apilipenko created D38547: [X86] Fix chains update when lowering BUILD_VECTOR to a vector load.
Oct 4 2017, 9:44 AM

Sep 22 2017

apilipenko created D38177: [LoopPredication] Support ule, sle latch predicates.
Sep 22 2017, 6:20 AM
apilipenko committed rL313981: Rework loop predication pass.
Rework loop predication pass
Sep 22 2017, 6:15 AM
apilipenko closed D37569: Rework loop predication pass by committing rL313981: Rework loop predication pass.
Sep 22 2017, 6:15 AM

Sep 7 2017

apilipenko updated the summary of D37569: Rework loop predication pass.
Sep 7 2017, 7:20 AM
apilipenko updated the summary of D37569: Rework loop predication pass.
Sep 7 2017, 7:19 AM
apilipenko created D37569: Rework loop predication pass.
Sep 7 2017, 7:18 AM

May 25 2017

apilipenko committed rL303870: [InstCombine] Teach isAllocSiteRemovable to look through addrspacecasts.
[InstCombine] Teach isAllocSiteRemovable to look through addrspacecasts
May 25 2017, 8:15 AM
apilipenko closed D28565: [InstCombine] Teach isAllocSiteRemovable to look through addrspacecasts by committing rL303870: [InstCombine] Teach isAllocSiteRemovable to look through addrspacecasts.
May 25 2017, 8:15 AM

May 22 2017

apilipenko committed rL303544: [LoopPredication] NFC. Add extra debug output in case we fail to parse the….
[LoopPredication] NFC. Add extra debug output in case we fail to parse the…
May 22 2017, 5:07 AM
apilipenko committed rL303543: [LoopPredication] NFC. Move a nested struct declaration before the fields….
[LoopPredication] NFC. Move a nested struct declaration before the fields…
May 22 2017, 5:01 AM

May 19 2017

apilipenko committed rL303427: [LoopPredication] NFC. Extract LoopICmp struct and parseLoopICmp helper.
[LoopPredication] NFC. Extract LoopICmp struct and parseLoopICmp helper
May 19 2017, 7:16 AM
apilipenko committed rL303426: [LoopPredication] NFC. Extract LoopPredication::expandCheck helper.
[LoopPredication] NFC. Extract LoopPredication::expandCheck helper
May 19 2017, 7:14 AM
apilipenko committed rL303425: [LoopPredication] NFC. Extract CanExpand helper lambda.
[LoopPredication] NFC. Extract CanExpand helper lambda
May 19 2017, 7:13 AM
apilipenko committed rL303424: [LoopPredication] NFC. Add an early exit if there is no guards in the loop.
[LoopPredication] NFC. Add an early exit if there is no guards in the loop
May 19 2017, 7:13 AM

Apr 22 2017

apilipenko committed rL301070: Fix for PR32740 - Invalid floating type, unreachable between r300969 and r301029.
Fix for PR32740 - Invalid floating type, unreachable between r300969 and r301029
Apr 22 2017, 12:37 AM

Apr 21 2017

apilipenko committed rL301018: [InstCombine] fadd double (sitofp x), y check that the promotion is valid.
[InstCombine] fadd double (sitofp x), y check that the promotion is valid
Apr 21 2017, 11:58 AM
apilipenko closed D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid by committing rL301018: [InstCombine] fadd double (sitofp x), y check that the promotion is valid.
Apr 21 2017, 11:58 AM
apilipenko added a comment to D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .

@andrew.w.kaylor - ping, do you have any comments about the latest revision?

Apr 21 2017, 3:50 AM

Apr 13 2017

apilipenko updated the diff for D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .

Add the comment about overly conservative legality check, add the test demonstrating it.

Apr 13 2017, 6:06 AM

Mar 30 2017

apilipenko added a comment to D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .

Update, I didn't see that there was a request to add a comment. Will do and update the patch,

Mar 30 2017, 2:46 AM

Mar 23 2017

apilipenko added inline comments to D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .
Mar 23 2017, 12:12 PM
apilipenko updated the diff for D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .

Address review comments.

Mar 23 2017, 12:12 PM

Mar 22 2017

apilipenko added a comment to D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .

Before getting to any details about the patch, we need to address the question raised in PR27036: why are we doing this transform in InstCombine at all? The assumption is that an integer add is more canonical and/or cheaper than an FP add. Is that universally true?

It's difficult to tell. Even if FP addition is cheaper the second combine also saves us one sitofp conversion. It should be also taken into account.

Mar 22 2017, 9:10 AM

Mar 21 2017

apilipenko created D31182: [InstCombine] fadd double (sitofp x), y check that the promotion is valid .
Mar 21 2017, 5:00 AM
apilipenko committed rL298359: NFC. InstCombiner::visitFAdd extract LHSIntVal/RHSIntVal local variables.
NFC. InstCombiner::visitFAdd extract LHSIntVal/RHSIntVal local variables
Mar 21 2017, 4:44 AM

Mar 10 2017

apilipenko accepted D30790: [LVI] Add an LVI printer pass to capture test LVI cache after transformations.
Mar 10 2017, 9:55 AM