fhahn (Florian Hahn)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 18 2016, 4:39 AM (117 w, 6 d)

Recent Activity

Yesterday

fhahn added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

FWIW TransitiveCallSite seems like a slightly better name to me than AbstractCallSite, as the CallSite class is already an abstraction over different kinds of calls. As for the location of the class, if it is tied to an analysis that gathers the transitive call sites, having it in lib/Analysis/ might make sense initially as well.

There are a few things to consider but at the end I will not fight anybody for a certain name or source location. Things that led me to
do this design included:

  • Abstract call sites, as implemented here, are not *only* transitive call sites but can be transitive or direct call sites.
  • The call site abstraction is going away soon [0]. Afterwards, the only abstraction will be this one on top of the new CallBase class.
  • The analysis to identify callback functions doesn't exist yet. When it does, I would probably only annotate the IR and use these annotations in the constructor of AbstractCallSite. This way we can easily pass uses to the constructor and do not need to a dedicated pass that provides both direct and transitive calls (separately or unified through the AbstractCallSite abstraction).
Wed, Nov 21, 1:21 PM
fhahn added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

Thanks for the comments!

I think using this in IPSCCP would be a great showcase too, given that it is more powerful (and enabled in the default pipeline). lib/Transforms/Scalar/SCCP.cpp contains the solver that is used for both per function SCCP and IPSCCP.

SCCP is certainly on my list, but one of the IPOs I haven't looked into yet.

Constant propagation is an obvious use case for this. What other transformations do you envision using this?

I have however a version of argument promotion (which turns out to be really important wrt parallel codes).
I also have extended the attribute deduction pass in various ways with an older version of the abstract/transitive/callback call sites, see here and here.
Initial results from the prototype implementations can be found in the talk and the paper (see commit message). Basically, they are as good as the dedicated transformations we implemented and evaluated here.

Wed, Nov 21, 10:18 AM

Tue, Nov 20

fhahn updated subscribers of D54748: [PartialInliner] Skip PHIs in entry BB of outlined region..
Tue, Nov 20, 3:39 AM
fhahn created D54748: [PartialInliner] Skip PHIs in entry BB of outlined region..
Tue, Nov 20, 3:39 AM

Thu, Nov 15

fhahn added a comment to D51431: [IPSCCP] Add lattice value for != constant .

ping.

Thu, Nov 15, 7:59 AM
fhahn removed a dependency for D51431: [IPSCCP] Add lattice value for != constant : D29011: [IR] Add Freeze instruction.
Thu, Nov 15, 7:58 AM
fhahn removed a dependent revision for D29011: [IR] Add Freeze instruction: D51431: [IPSCCP] Add lattice value for != constant .
Thu, Nov 15, 7:58 AM

Wed, Nov 14

fhahn closed D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

Committed as rL346857, thanks for all the comments! I will create a few tickets for follow up work.

Wed, Nov 14, 8:14 AM
fhahn committed rL346870: [VPlan, SLP] Use SmallPtrSet for Candidates..
[VPlan, SLP] Use SmallPtrSet for Candidates.
Wed, Nov 14, 8:01 AM
fhahn committed rL346860: [VPlan] Remove LLVM_DEBUG from VPlanSlp::dumpBundle..
[VPlan] Remove LLVM_DEBUG from VPlanSlp::dumpBundle.
Wed, Nov 14, 5:36 AM
fhahn committed rL346858: [VPlan] Update ifdef..
[VPlan] Update ifdef.
Wed, Nov 14, 5:24 AM
fhahn committed rL346857: [VPlan, SLP] Add simple SLP analysis on top of VPlan..
[VPlan, SLP] Add simple SLP analysis on top of VPlan.
Wed, Nov 14, 5:14 AM
fhahn committed rL346843: Recommit r346483: [CallSiteSplitting] Only record conditions up to the IDom….
Recommit r346483: [CallSiteSplitting] Only record conditions up to the IDom…
Wed, Nov 14, 2:07 AM
fhahn added a comment to D54498: AbstractCallSite -- A unified interface for (in)direct and callback calls.

I think using this in IPSCCP would be a great showcase too, given that it is more powerful (and enabled in the default pipeline). lib/Transforms/Scalar/SCCP.cpp contains the solver that is used for both per function SCCP and IPSCCP.

Wed, Nov 14, 1:27 AM

Tue, Nov 13

fhahn closed D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..

submitted as rL346769

Tue, Nov 13, 9:58 AM
fhahn committed rL346769: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..
[CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater.
Tue, Nov 13, 9:57 AM
fhahn added a comment to D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..

Thanks, I'll update the comments before I commit this.

Tue, Nov 13, 8:54 AM
fhahn abandoned D51505: [WIP][IPSCCP] Use PredInfo to propagate nonnull and hook it up to IPSCCP..

I am abandoning this for now, as I updated D51431 to avoid adding nonnull, because even with freeze it would be too restrictive.

Tue, Nov 13, 8:51 AM
fhahn committed rL346759: [VectorUtils] Use namespace for InterleaveGroup template specialization..
[VectorUtils] Use namespace for InterleaveGroup template specialization.
Tue, Nov 13, 8:29 AM
fhahn committed rL346758: [VPlan] VPlan version of InterleavedAccessInfo..
[VPlan] VPlan version of InterleavedAccessInfo.
Tue, Nov 13, 8:01 AM
fhahn closed D49489: [VPlan] VPlan version of InterleavedAccessInfo..
Tue, Nov 13, 8:00 AM
fhahn abandoned D52312: [DenseMapInfo] Add implementation for SmallVector of pointers..

Thanks for the comments. For now, I added a custom DenseMapInfo to D49491, but I hope I can revisit this once I have more time!

Tue, Nov 13, 7:30 AM
fhahn added inline comments to D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..
Tue, Nov 13, 7:05 AM
fhahn updated the diff for D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..

Address comments: renamed CSP functions, add assertion ensuring there is a single edge between PredBB and BB. I hope this addresses all comments

Tue, Nov 13, 7:05 AM
fhahn added a comment to D49489: [VPlan] VPlan version of InterleavedAccessInfo..

So, IIUC, the way you only get the interleave info on instructions and map to VPlan is because we don't yet have scalar evolution in VPlan, so we need to do that in Instruction and then map to VPInstruction.

In the future, once we can (perhaps using the same template technique) have SCEV on VPlan, we won't need the Old2New map anymore, and then the analysis will be independent of the underlying type.

Di I get that right?

Tue, Nov 13, 6:35 AM
fhahn updated the diff for D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

Thanks for all the review!

Tue, Nov 13, 3:45 AM
fhahn updated the diff for D49489: [VPlan] VPlan version of InterleavedAccessInfo..

Updated to traverse regions.

Tue, Nov 13, 3:37 AM
fhahn updated the diff for D49489: [VPlan] VPlan version of InterleavedAccessInfo..

Rebased, updated the use auto * for cast<>.

Tue, Nov 13, 2:34 AM

Sun, Nov 11

fhahn accepted D54398: [IPSCCP] Delete two forward declarations.

Thanks for adding the include, I just saw the commit after I submitted the forward declaration.

Sun, Nov 11, 2:36 PM
fhahn committed rL346620: [IPSCCP] Use forward declaration..
[IPSCCP] Use forward declaration.
Sun, Nov 11, 12:59 PM
fhahn committed rL346618: [IPSCCP,PM] Preserve PDT in the new pass manager..
[IPSCCP,PM] Preserve PDT in the new pass manager.
Sun, Nov 11, 12:25 PM
fhahn closed D54317: [IPSCCP,PM] Preserve PDT in the new pass manager..
Sun, Nov 11, 12:25 PM

Fri, Nov 9

fhahn added a comment to D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..

Thanks, I'll address the comments on Monday.

Fri, Nov 9, 10:48 AM
fhahn added a comment to D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..

updated to use DTU.getDomTree(), thanks!

Fri, Nov 9, 8:07 AM
fhahn added a comment to D54317: [IPSCCP,PM] Preserve PDT in the new pass manager..

I've updated the test to explicitly use function(require<domtree>,require<postdomtree> before and after ipsccp to make sure the analyses are preserved. I couldn't find a flag to verify the PDT unfortunately.

Fri, Nov 9, 8:07 AM
fhahn updated the diff for D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..
Fri, Nov 9, 8:07 AM
fhahn created D54317: [IPSCCP,PM] Preserve PDT in the new pass manager..
Fri, Nov 9, 7:31 AM
fhahn added a comment to D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

I have no more comments.

Fri, Nov 9, 6:58 AM
fhahn created D54312: [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater..
Fri, Nov 9, 6:53 AM
fhahn added a comment to rL346483: [CallSiteSplitting] Only record conditions up to the IDom(call site)..

Thanks, reverted in rL346492. Looks like this exposed a bug in preserving the DT in CallSiteSplitting. I'll have a look and recommit with a fix.

Fri, Nov 9, 5:38 AM
fhahn committed rL346492: Revert r346483: [CallSiteSplitting] Only record conditions up to the IDom(call….
Revert r346483: [CallSiteSplitting] Only record conditions up to the IDom(call…
Fri, Nov 9, 5:32 AM
fhahn added a comment to D50094: Introduce DebugCounter into ConstProp pass.

Do you need someone to commit this?

Fri, Nov 9, 3:59 AM
fhahn committed rL346486: [IPSCCP,PM] Preserve DT in the new pass manager..
[IPSCCP,PM] Preserve DT in the new pass manager.
Fri, Nov 9, 3:55 AM
fhahn closed D47259: [IPSCCP,PM] Preserve DT in the new pass manager..
Fri, Nov 9, 3:55 AM
fhahn committed rL346483: [CallSiteSplitting] Only record conditions up to the IDom(call site)..
[CallSiteSplitting] Only record conditions up to the IDom(call site).
Fri, Nov 9, 2:26 AM
fhahn closed D44627: [CallSiteSplitting] Only record conditions up to the IDom(call site)..
Fri, Nov 9, 2:26 AM

Thu, Nov 8

fhahn added a comment to D47259: [IPSCCP,PM] Preserve DT in the new pass manager..

FWIW, still LGTM and I think you can go ahead and submit.

Thu, Nov 8, 1:56 PM
fhahn added a comment to D43245: [LoopInterchange] Support reductions across inner and outer loop..

Thank you very much for all the reviews, Eli!

Thu, Nov 8, 1:51 PM
fhahn committed rL346438: [LoopInterchange] Support reductions across inner and outer loop..
[LoopInterchange] Support reductions across inner and outer loop.
Thu, Nov 8, 12:49 PM
fhahn closed D43245: [LoopInterchange] Support reductions across inner and outer loop..
Thu, Nov 8, 12:49 PM
fhahn added inline comments to D47259: [IPSCCP,PM] Preserve DT in the new pass manager..
Thu, Nov 8, 11:50 AM
fhahn added inline comments to D47259: [IPSCCP,PM] Preserve DT in the new pass manager..
Thu, Nov 8, 11:47 AM
fhahn updated the diff for D47259: [IPSCCP,PM] Preserve DT in the new pass manager..

Thank you very much for having a look! I updated the patch to use deleteBB, added a comment in lib/Transform/IPO/SCCP.cpp on why nullptr is passed in as DT for the legacy pass manager and renamed AnalysisForFn to AnalysisResultsForFn.

Thu, Nov 8, 11:47 AM
fhahn updated the diff for D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

Just one more question: how do you estimate that the vectorized code is more effective than the scalar one? What's the criterion?

Thu, Nov 8, 9:04 AM
fhahn added inline comments to D47259: [IPSCCP,PM] Preserve DT in the new pass manager..
Thu, Nov 8, 8:54 AM
fhahn updated the diff for D47259: [IPSCCP,PM] Preserve DT in the new pass manager..

Fixed test case (new pm needs -passes='ipsccp,function(verify<domtree>) to verify the DTs afterwards), also pass DTU to other changeToUnreachable and ConstantFoldTerminator calls.

Thu, Nov 8, 8:52 AM
fhahn updated the diff for D47259: [IPSCCP,PM] Preserve DT in the new pass manager..

Rebased after DTUpdater changes landed.

Thu, Nov 8, 7:13 AM
fhahn added a reviewer for D47259: [IPSCCP,PM] Preserve DT in the new pass manager.: kuhar.
Thu, Nov 8, 7:13 AM
fhahn added a comment to D47949: [callsitesplit] Limit the # of predecessors walk when recording condition.

@trentxintong I just updated D44627, which stops backtracking once we hit IDom(call site), because conditions further up won't be impacted by splitting. Any chance you could try this patch to see if it improves things on your test case?

Thu, Nov 8, 6:39 AM
fhahn updated the diff for D44627: [CallSiteSplitting] Only record conditions up to the IDom(call site)..

Resurrecting the patch. The cases we loose (propagating %a == null in test_cond_no_effect) is now handled by ipsccp, which is a better place IMO. @junbuml what do you think?

Thu, Nov 8, 6:36 AM
fhahn updated the diff for D51431: [IPSCCP] Add lattice value for != constant .

I stripped adding nonnull for now. Even with freeze, we have to be far too conservative about the merging rules. This patch is now more an enabler to make it easier to use ValueLAtticeElement, with range support. What do you think?

Thu, Nov 8, 6:03 AM
fhahn updated the diff for D43245: [LoopInterchange] Support reductions across inner and outer loop..

Turned check into assertion, added a comment explaining the if (!InnerLoop) {} block and another comment to findInductionAndReductions.

Thu, Nov 8, 4:20 AM
fhahn added inline comments to D43245: [LoopInterchange] Support reductions across inner and outer loop..
Thu, Nov 8, 4:20 AM
fhahn requested changes to D45659: [CallSiteSplitting] Add missing pass dependency.

Is this still an issue? If so, please add a test case. Requesting changes for now, to clear up my queue.

Thu, Nov 8, 4:12 AM
fhahn resigned from D41782: [CallSiteSplitting]use constrained argument from single predecessors.

instcombine now propagates nonnull in the cases mentioned here. I'll resign to clear up my pipeline.

Thu, Nov 8, 4:09 AM

Wed, Nov 7

fhahn added a comment to D51168: [NewGVN] Make sure we do not add a user to itself..

Thank you very much Davide :) In case you are interested in reviewing another small NewGVN patch, there would be D51595.

Wed, Nov 7, 10:17 AM
fhahn updated the diff for D51595: [NewGVN] Update use counts for SSA copies when replacing them by their operands..

use unsigned instead of auto

Wed, Nov 7, 10:16 AM
fhahn updated the diff for D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

Address comments and add checks for simple loads/stores in areVectorizable().

Wed, Nov 7, 9:54 AM
fhahn committed rL346335: [NewGVN] Make sure we do not add a user to itself..
[NewGVN] Make sure we do not add a user to itself.
Wed, Nov 7, 9:22 AM
fhahn closed D51168: [NewGVN] Make sure we do not add a user to itself..
Wed, Nov 7, 9:22 AM
fhahn added a comment to D43245: [LoopInterchange] Support reductions across inner and outer loop..

ping. Eli it would be great if you could have another look now that the patch removing support for inner loop only reductions is committed and this patch is simpler.

Wed, Nov 7, 9:11 AM
fhahn accepted D52930: [SCEV][NFC] Verify IR in isLoop[Entry,Backedge]GuardedByCond.

Added notion of this option being slow. It can be later be turned on in EXPENSIVE_CHECKS mode along with the other two. I tried turning it on now and currently all three turned on fail 2 tests. Apparently a bug in there.

Wed, Nov 7, 4:28 AM
fhahn abandoned D39743: [ValueLattice] Add CompactValueLatticeElement..

Abandoning for now

Wed, Nov 7, 3:19 AM

Thu, Nov 1

fhahn added a comment to D54000: [libFuzzer] Disable LoopVectorize pass while fuzzing.

If interleaving in LoopVectorize is the problem, maybe setting ForceTargetMaxInterleaveFactor to 1 would be worth a try to just disable interleaving in LV.

Thu, Nov 1, 3:02 PM
fhahn added inline comments to D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..
Thu, Nov 1, 1:29 PM
fhahn updated the diff for D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

Address comments, thanks!

Thu, Nov 1, 1:26 PM
fhahn committed rL345881: [LoopInterchange] Fix unused variables in release build.
[LoopInterchange] Fix unused variables in release build
Thu, Nov 1, 12:53 PM
fhahn committed rL345877: [LoopInterchange] Remove support for inner-only reductions..
[LoopInterchange] Remove support for inner-only reductions.
Thu, Nov 1, 12:28 PM
fhahn closed D53027: [LoopInterchange] Remove support for inner-only reductions..
Thu, Nov 1, 12:28 PM
fhahn added a comment to D51168: [NewGVN] Make sure we do not add a user to itself..

I don't really know the relevant code well enough, and I don't think I'll have time to study it in the near future.

You might want to ask on llvmdev to see if there's anyone interested in reviewing NewGVN patches.

Thu, Nov 1, 9:17 AM

Wed, Oct 31

fhahn added a comment to D53027: [LoopInterchange] Remove support for inner-only reductions..

Thanks Eli!

Wed, Oct 31, 2:25 PM
fhahn added inline comments to D43245: [LoopInterchange] Support reductions across inner and outer loop..
Wed, Oct 31, 10:41 AM
fhahn updated the diff for D43245: [LoopInterchange] Support reductions across inner and outer loop..

Updated after removing support for inner loop only reductions in D53027. The code is now slightly simpler. What do you think?

Wed, Oct 31, 10:40 AM
fhahn updated the diff for D53027: [LoopInterchange] Remove support for inner-only reductions..

If you aren't finding real loops where this matters, simply rejecting loops with a reduction like this seems fine.

Wed, Oct 31, 10:37 AM
fhahn added a comment to D49491: [RFC][VPlan, SLP] Add simple SLP analysis on top of VPlan..

ping

Wed, Oct 31, 8:08 AM
fhahn added a comment to D53793: [ADT] Remove illegal comparison of singular iterators from SmallSetTest.

Committed, thank you very much for the patch!

Wed, Oct 31, 5:19 AM
fhahn committed rL345712: [ADT] Remove illegal comparison of singular iterators from SmallSetTest.
[ADT] Remove illegal comparison of singular iterators from SmallSetTest
Wed, Oct 31, 4:03 AM
fhahn closed D53793: [ADT] Remove illegal comparison of singular iterators from SmallSetTest.
Wed, Oct 31, 4:03 AM

Tue, Oct 30

fhahn added a comment to D53793: [ADT] Remove illegal comparison of singular iterators from SmallSetTest.

I can commit it tomorrow.

Tue, Oct 30, 11:58 AM
fhahn added a comment to D51168: [NewGVN] Make sure we do not add a user to itself..

ping

Tue, Oct 30, 11:33 AM
fhahn added a reviewer for D53816: [TableGen:AsmWriter] Cope with consecutive tied operands.: sdesmalen.
Tue, Oct 30, 2:55 AM

Sat, Oct 27

fhahn added a comment to D51629: [Local] Keep K's range if K does not move when combining metadata..

Thank you very much Eli! I'll take a look at the other metadata kinds as well.

Sat, Oct 27, 12:03 PM
fhahn accepted D53793: [ADT] Remove illegal comparison of singular iterators from SmallSetTest.

Thanks!

Sat, Oct 27, 12:03 PM
fhahn committed rL345456: [Local] Keep K's range if K does not move when combining metadata..
[Local] Keep K's range if K does not move when combining metadata.
Sat, Oct 27, 9:56 AM
fhahn closed D51629: [Local] Keep K's range if K does not move when combining metadata..
Sat, Oct 27, 9:56 AM

Fri, Oct 26

fhahn added a comment to D51629: [Local] Keep K's range if K does not move when combining metadata..

ping

Fri, Oct 26, 5:42 AM

Wed, Oct 24

fhahn added a comment to D53562: [ARM] Use the Cortex-A57 sched model for Cortex-A72.

Hey Florian,

It was brought to my attention that the scheduler still wasn't enabled because of the missing feature. I've now added this and the geomean improvement is 2.23%. I will shortly add a couple of tests too.

Wed, Oct 24, 4:57 AM

Tue, Oct 23

fhahn added a comment to D53027: [LoopInterchange] Remove support for inner-only reductions..

This analysis seems very fragile.

Tue, Oct 23, 10:30 AM
fhahn accepted D53562: [ARM] Use the Cortex-A57 sched model for Cortex-A72.

LGTM. AFAIK cortex-a57 and cortex-a72 are close enough for this to be beneficial. AArch64 re-uses the A57 model for A72 too.

Tue, Oct 23, 7:27 AM
fhahn added a comment to D53030: [MicroBenchmark] Add initial LoopInterchange test/benchmark..

Thanks! I'll submit it in a few days, with DoNotOptimize.

Tue, Oct 23, 3:39 AM