sanjoy (Sanjoy Das)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 6 2014, 4:30 PM (194 w, 20 h)

Recent Activity

Wed, Feb 21

sanjoy added inline comments to D43375: [SCEV] Prove predicates in loops via monotonicity.
Wed, Feb 21, 11:41 PM
sanjoy added inline comments to D43610: [SCEV][NFC] Introduce utility functions that measure number of iterations before overflow.
Wed, Feb 21, 11:38 PM
sanjoy added inline comments to D40375: Use MemorySSA in LICM to do sinking and hoisting..
Wed, Feb 21, 1:14 PM

Tue, Feb 20

sanjoy committed rL325641: [DSE] Don't DSE stores that subsequent memmove calls read from.
[DSE] Don't DSE stores that subsequent memmove calls read from
Tue, Feb 20, 3:22 PM
sanjoy closed D43425: [DSE] Don't DSE stores that subsequent memmove calls read from.
Tue, Feb 20, 3:22 PM
sanjoy added a comment to D43425: [DSE] Don't DSE stores that subsequent memmove calls read from.

Reverted back to a more conservative memcpy handling.

Tue, Feb 20, 1:34 PM
sanjoy updated the diff for D43425: [DSE] Don't DSE stores that subsequent memmove calls read from.
  • Relax memcpy handling
Tue, Feb 20, 1:34 PM

Mon, Feb 19

sanjoy requested changes to D43499: [SCEV] Introduce SCEVPostIncRewriter.

Same comment at https://reviews.llvm.org/D43498#1012884

Mon, Feb 19, 10:55 PM
sanjoy requested changes to D43498: [SCEV] Extends the SCEVInitRewriter.
Mon, Feb 19, 10:54 PM
sanjoy accepted D43373: [SCEV][NFC] Factor out common logic into a separate method.
Mon, Feb 19, 4:42 PM

Fri, Feb 16

sanjoy created D43425: [DSE] Don't DSE stores that subsequent memmove calls read from.
Fri, Feb 16, 5:15 PM

Tue, Feb 13

sanjoy accepted D43175: [SCEV] Favor isKnownViaSimpleReasoning over constant ranges check.

You may want to indicate the range of inc in the commit message; otherwise it looks like we're introducing a miscompile. :)

Tue, Feb 13, 10:31 PM

Sun, Feb 11

sanjoy accepted D36130: [SLP] Vectorize jumbled memory loads..

I don't have any more coding style comments. I've not reviewed the actual semantic changes.

Sun, Feb 11, 12:18 PM

Fri, Feb 9

sanjoy added inline comments to rL324453: [SCEV] Make isLoopEntryGuardedByCond a bit smarter.
Fri, Feb 9, 5:23 PM
sanjoy accepted D42953: [SCEV] Make getPostIncExpr guaranteed to return AddRec.

lgtm

Fri, Feb 9, 4:54 PM

Tue, Feb 6

sanjoy added a comment to D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage.

I agree in general, just few notions.

It only look at the outermost operation of LHS and RHS. It should instead by checking if the LHS and RHS are *functions* of add recurrences.

Even more, I think it's useful to have a helper function that returns the set of loops on which the current SCEV may depend. These are loops on which its SCEVAddRecs depend on.

Tue, Feb 6, 1:50 PM
sanjoy added inline comments to D42835: [SCEV] Make isLoopEntryGuardedByCond a bit smarter.
Tue, Feb 6, 1:25 PM
sanjoy requested changes to D42953: [SCEV] Make getPostIncExpr guaranteed to return AddRec.
Tue, Feb 6, 1:12 PM
sanjoy added inline comments to D42123: Derive GEP index type from Data Layout.
Tue, Feb 6, 1:08 PM
sanjoy accepted D42835: [SCEV] Make isLoopEntryGuardedByCond a bit smarter.

LGTM with the comment addressed.

Tue, Feb 6, 12:03 AM

Mon, Feb 5

sanjoy added a comment to D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage.

Sorry, I incorrectly assumed that this was fixing a failed assert so I was looking for a crash. I am able to reproduce the crash after reverting this change but adding back the isAvailableAtLoopEntry assert only. Moreover, I think the assert is sound.

Mon, Feb 5, 2:35 PM

Sun, Feb 4

sanjoy added inline comments to D42835: [SCEV] Make isLoopEntryGuardedByCond a bit smarter.
Sun, Feb 4, 11:00 PM
sanjoy added inline comments to D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage.
Sun, Feb 4, 10:52 PM

Tue, Jan 30

sanjoy added inline comments to D42123: Derive GEP index type from Data Layout.
Tue, Jan 30, 10:27 AM
sanjoy edited reviewers for D42689: [SCEV] Fix threshold limit check, added: mkazantsev; removed: sanjoy.
Tue, Jan 30, 10:19 AM

Thu, Jan 25

sanjoy added inline comments to rL323309: [NFC] Remove overconfident assert from IRCE.
Thu, Jan 25, 8:57 PM

Jan 24 2018

sanjoy added inline comments to D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage.
Jan 24 2018, 9:30 AM
sanjoy added inline comments to D42290: [SCEV] Clear poison flags during expansion of SCEV.
Jan 24 2018, 9:26 AM

Jan 23 2018

sanjoy updated subscribers of D42290: [SCEV] Clear poison flags during expansion of SCEV.
Jan 23 2018, 10:35 PM
sanjoy added inline comments to D42417: Re-apply [SCEV] Fix isLoopEntryGuardedByCond usage.
Jan 23 2018, 10:26 PM

Jan 22 2018

sanjoy added a comment to D42211: [ModRefInfo] Set ModRefInfo::Must for calls..

The code itself lgtm (and sorry for the earlier braino), but it seems suspect to have MustAlias+NoAlias == MustAlias. For loads and stores I thought the rule was that "Ptr <MustAlias> Store" means "Store does not touch any location other than Ptr". However, this interpretation fails to justify what you're doing here -- if we have a call C = @f_argmemonly(p0, p1) and p1 mustlias p1 and noalias p0, we still can't return mustalias for the p0/C pair since @f_argmemonly(p0, p1) does touch a location other than p1 (i.e. p0). It could be that I'm missing something basic here, like last time.

Jan 22 2018, 11:53 PM

Jan 19 2018

sanjoy added inline comments to D42211: [ModRefInfo] Set ModRefInfo::Must for calls..
Jan 19 2018, 10:26 AM
sanjoy accepted D42209: [ModRefInfo] Return NoModRef for Must and NoModRef..
Jan 19 2018, 1:00 AM

Jan 18 2018

sanjoy requested changes to D42209: [ModRefInfo] Return NoModRef for Must and NoModRef..
Jan 18 2018, 11:04 AM

Jan 15 2018

sanjoy added inline comments to D36130: [SLP] Vectorize jumbled memory loads..
Jan 15 2018, 10:54 PM

Jan 13 2018

sanjoy accepted D36130: [SLP] Vectorize jumbled memory loads..
Jan 13 2018, 2:40 PM

Jan 11 2018

sanjoy added a comment to D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.

Hi Sanjoy, I guess this piece of code is common one and will be executed SCEV is created each time whenever it is a LSR or earlier passes. Do you propose to introduce some flag and use it in LSR?
This seems to me very intrusive fix.

Jan 11 2018, 10:25 PM
sanjoy added a comment to D41944: [LLVM][IR][LIT] support of 'no-overflow' flag for sdiv\udiv instructions.

This looks like something that will be better served by an intrinsic (llvm.safe_(s|u)div or something like that), at least to begin with. Experimental intrinsics are a low-cost preferred way of trying out ideas like this without changing fundamental IR semantics.

Jan 11 2018, 6:16 PM
sanjoy added a comment to D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.

What I see can be done here (any of):

  1. Try to analyze why SCEV lost nuw/nsw information and possible fix/extend that place to preserve nuw/nsw in SCEV. In this case matching will still in place and new mul instruction will not be generated.
  2. Potentially "%mul86.i = mul nuw nsw i32 %phitmp280.i, %phitmp.i" can be replaced with "%16 = mul i32 %phitmp280.i, %phitmp.i". It can be done by some other pass but I'm not sure who should be responsible for that. I guess GVN can do this but not sure that it works after LSR in your pipeline.
  3. We can update this code to clean poison flags from instruction if built SCEV lost information about these flags. To my understanding cleaning of poison flags is a safe operation from correctness point of view but it can prohibit some optimization opportunities because we loose some valuable information.

    To be honest I'm not sure what approach is a best here. I'd like to get a feedback from Sanjoy and others...
Jan 11 2018, 12:37 PM

Jan 4 2018

sanjoy added inline comments to D41723: Introduce the "retpoline" x86 mitigation technique for variant #2 of the speculative execution vulnerabilities disclosed today, specifically identified by CVE-2017-5715, "Branch Target Injection", and is one of the two halves to Spectre...
Jan 4 2018, 2:38 PM
sanjoy added inline comments to D41723: Introduce the "retpoline" x86 mitigation technique for variant #2 of the speculative execution vulnerabilities disclosed today, specifically identified by CVE-2017-5715, "Branch Target Injection", and is one of the two halves to Spectre...
Jan 4 2018, 11:51 AM

Dec 26 2017

sanjoy added a comment to D40718: [LSR] Complexity tradeoff in GenerateReassociationsImpl.

The other way is limiting SCEV transformation not by depth only, but also by the size of operands list, if it makes sense.

Dec 26 2017, 10:48 PM
sanjoy added a comment to D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.

Hi Sanjoy, I wonder whether SCEV has some equivalent of exact flag?

Dec 26 2017, 10:42 PM
sanjoy added a comment to D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.

NAS is better?

Dec 26 2017, 10:05 PM
sanjoy accepted D41576: [SCEV] Be careful with nuw/nsw/exact in InsertBinop.

lgtm!

Dec 26 2017, 10:03 PM
sanjoy accepted D41380: [SCEV] Do not insert if it is already in cache.

LGTM!

Dec 26 2017, 10:01 PM
sanjoy added inline comments to D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.
Dec 26 2017, 9:44 PM
sanjoy accepted D41578: [SCEV] Do not cache S -> V if S is not equivalent of V.

lgtm!

Dec 26 2017, 1:37 PM
sanjoy requested changes to D41576: [SCEV] Be careful with nuw/nsw/exact in InsertBinop.
Dec 26 2017, 1:23 PM
sanjoy requested changes to D40718: [LSR] Complexity tradeoff in GenerateReassociationsImpl.
Dec 26 2017, 1:16 PM

Dec 22 2017

sanjoy committed rL321375: (Re-landing) Expose a TargetMachine::getTargetTransformInfo function.
(Re-landing) Expose a TargetMachine::getTargetTransformInfo function
Dec 22 2017, 10:23 AM

Dec 21 2017

sanjoy accepted D38862: Add must alias info to ModRefInfo..

lgtm!

Dec 21 2017, 11:15 AM

Dec 20 2017

sanjoy added a comment to D41464: Expose a TargetMachine::getTargetTransformInfo function.

Reverted in r321243.

Dec 20 2017, 6:36 PM
sanjoy committed rL321243: Revert "Expose a TargetMachine::getTargetTransformInfo function".
Revert "Expose a TargetMachine::getTargetTransformInfo function"
Dec 20 2017, 6:35 PM
sanjoy added a comment to D41464: Expose a TargetMachine::getTargetTransformInfo function.

Did this change somehow break the -DBUILD_SHARED_LIBS=ON build?

Dec 20 2017, 6:28 PM
sanjoy committed rL321234: Expose a TargetMachine::getTargetTransformInfo function.
Expose a TargetMachine::getTargetTransformInfo function
Dec 20 2017, 5:08 PM
sanjoy closed D41464: Expose a TargetMachine::getTargetTransformInfo function.
Dec 20 2017, 5:08 PM
sanjoy requested changes to D40375: Use MemorySSA in LICM to do sinking and hoisting..

Some of the comments inline may be naive since I'm not very familiar with MemorySSA.

Dec 20 2017, 4:32 PM
sanjoy added a reviewer for D41464: Expose a TargetMachine::getTargetTransformInfo function: hfinkel.
Dec 20 2017, 3:29 PM
sanjoy created D41464: Expose a TargetMachine::getTargetTransformInfo function.
Dec 20 2017, 2:05 PM

Dec 19 2017

sanjoy added inline comments to D36130: [SLP] Vectorize jumbled memory loads..
Dec 19 2017, 4:03 PM

Dec 18 2017

sanjoy requested changes to D38862: Add must alias info to ModRefInfo..

Mostly minor stuff. The main non-nit comment I have is that the various places we're handling calls don't seem consistent with each other.

Dec 18 2017, 1:33 PM

Dec 14 2017

sanjoy requested changes to D40375: Use MemorySSA in LICM to do sinking and hoisting..

Initial round of comments.

Dec 14 2017, 11:55 PM
sanjoy created D41268: (Not intended for submission).
Dec 14 2017, 5:41 PM
sanjoy requested changes to D38862: Add must alias info to ModRefInfo..

I think we can break this patch up further -- how about this breakdown:

Dec 14 2017, 12:56 AM

Dec 12 2017

sanjoy committed rL320512: Reapply "[X86] Flag BroadWell scheduler model as complete".
Reapply "[X86] Flag BroadWell scheduler model as complete"
Dec 12 2017, 11:12 AM
sanjoy committed rL320508: Revert "[X86] Flag BroadWell scheduler model as complete".
Revert "[X86] Flag BroadWell scheduler model as complete"
Dec 12 2017, 10:41 AM

Dec 11 2017

sanjoy requested changes to D38862: Add must alias info to ModRefInfo..

Unless you have a specific reason not to, I think we should merge https://reviews.llvm.org/D41091 into this one -- that'll make the patch easier to review (usually these kinds of things go the other way -- splitting the patch makes it easier to review :) ).

Dec 11 2017, 10:56 PM

Dec 8 2017

sanjoy accepted D41026: [InstComineLoadStoreAlloca] Optimize stores to GEP off null base.

lgtm

Dec 8 2017, 11:25 AM

Dec 7 2017

sanjoy added a reviewer for D40945: [ScalarEvolution] Improve high cost heuristic in SCEVExpander.: mzolotukhin.
Dec 7 2017, 11:19 PM
sanjoy updated subscribers of D40945: [ScalarEvolution] Improve high cost heuristic in SCEVExpander..

lgtm to me, but I want Michael to take a look at the test update, as mentioned inline.

Dec 7 2017, 11:19 PM
sanjoy accepted D40946: [ScalarEvolution] Fix base condition in isNormalAddRecPHI..

lgtm

Dec 7 2017, 11:14 PM
sanjoy accepted D40641: [SCEV] Fix wrong Equal predicate created in getAddRecForPhiWithCasts.

lgtm with stylistic nits.

Dec 7 2017, 10:38 PM
sanjoy accepted D40953: [SCEV] Fix predicate usage in computeExitLimitFromICmp.

lgtm!

Dec 7 2017, 10:34 PM
sanjoy accepted D40933: [ModRefInfo] Make enum ModRefInfo an enum class [NFC]..

Do you think it will be useful to add some migration instructions to the commit message for folks with out of tree changes to LLVM?

Dec 7 2017, 2:07 PM

Dec 6 2017

sanjoy added a comment to D40933: [ModRefInfo] Make enum ModRefInfo an enum class [NFC]..

This is just a find-replace right? I didn't look at the textual changes carefully assuming that but please let me know if there are pieces of this CL that are *not* find-replace and I'll review those more carefully.

Dec 6 2017, 5:26 PM

Dec 5 2017

sanjoy requested changes to D38862: Add must alias info to ModRefInfo..

Some minor nits inline, but I thought we were going with making bitwise MRI_Must be 0 (and MRI_NoModRef be 4) so that & works as expected?

Dec 5 2017, 9:18 PM
sanjoy accepted D40597: [SCEV][NFC] Share value cache between SCEVs in GroupByComplexity.

lgtm

Dec 5 2017, 8:44 PM
sanjoy accepted D40645: [SCEV][NFC] Check NoWrap flags before lexicographical comparison of SCEVs.

lgtm

Dec 5 2017, 8:43 PM
sanjoy requested changes to D40802: [MemDep] Don't use cached results from a previous larger query.
Dec 5 2017, 1:38 PM

Dec 4 2017

sanjoy accepted D40749: Modify ModRefInfo values using static inline method abstractions [NFC]..

lgtm with some comments inline

Dec 4 2017, 5:38 PM
sanjoy requested changes to D40749: Modify ModRefInfo values using static inline method abstractions [NFC]..

I have some minor comments inline.

Dec 4 2017, 1:55 PM
sanjoy committed rL319678: [SCEV] A different fix for PR33494.
[SCEV] A different fix for PR33494
Dec 4 2017, 11:22 AM
sanjoy committed rL319679: [SCEV] Use a "Discovered" set instead of a "Visited" set; NFC.
[SCEV] Use a "Discovered" set instead of a "Visited" set; NFC
Dec 4 2017, 11:22 AM
sanjoy closed D39361: [SCEV] A different fix for PR33494 by committing rL319678: [SCEV] A different fix for PR33494.
Dec 4 2017, 11:22 AM
sanjoy committed rL319677: [BypassSlowDivision] Improve our handling of divisions by constants.
[BypassSlowDivision] Improve our handling of divisions by constants
Dec 4 2017, 11:22 AM
sanjoy accepted D40039: [CVP] Remove some {s|u}sub.with.overflow checks..

lgtm

Dec 4 2017, 11:03 AM
sanjoy accepted D40036: [ConstantRange] Support subtraction in makeGuaranteedNoWrapRegion..

lgtm

Dec 4 2017, 10:58 AM

Nov 29 2017

sanjoy accepted D38374: [memcpyopt] Memcpy-memcpy dependence isn't detected across basic blocks.
Nov 29 2017, 6:11 PM

Nov 28 2017

sanjoy requested changes to D38374: [memcpyopt] Memcpy-memcpy dependence isn't detected across basic blocks.
Nov 28 2017, 11:50 PM

Nov 26 2017

sanjoy added inline comments to D40460: [SCEV] Adding a check on outgoing branches of a terminator instr for SCEVBackedgeConditionFolder, NFC..
Nov 26 2017, 12:03 AM

Nov 25 2017

sanjoy added inline comments to D40460: [SCEV] Adding a check on outgoing branches of a terminator instr for SCEVBackedgeConditionFolder, NFC..
Nov 25 2017, 7:53 PM

Nov 24 2017

sanjoy added inline comments to D40427: [ADT] Introduce Disjoint Set Union structure.
Nov 24 2017, 1:39 PM
sanjoy accepted D40429: [SCEV][NFC] More efficient caching in CompareValueComplexity.
Nov 24 2017, 1:32 PM
sanjoy accepted D40428: [SCEV][NFC] More efficient caching in CompareSCEVComplexity.
Nov 24 2017, 1:30 PM
sanjoy added inline comments to D39361: [SCEV] A different fix for PR33494.
Nov 24 2017, 1:16 PM

Nov 23 2017

sanjoy added a comment to D38862: Add must alias info to ModRefInfo..

(We've discussed the meat of this patch offline, but I had some stray comments from earlier)

Nov 23 2017, 12:37 PM
sanjoy added inline comments to D38494: [SCEV] Handling for ICmp occuring in the evolution chain..
Nov 23 2017, 12:33 PM

Nov 21 2017

sanjoy accepted D40246: IR printing improvement for loop passes.

lgtm

Nov 21 2017, 8:52 PM
sanjoy accepted D40247: IR printing improvement for loop passes - handle -print-module-scope.
Nov 21 2017, 8:51 PM