search for: assumptioncach

Displaying 20 results from an estimated 55 matches for "assumptioncach".

Did you mean: assumptioncache
2016 Apr 27
2
RFC: Generalize AssumptionCache to AxiomCache
Hi all, Guard intrinsics[0] are similar in nature to Assume intrinsics, in that the condition passed to a guard intrinsic call is known to be true at locations dominated (but *not* post-dominated) by the call[1]. I'd like to re-use the AssumptionCache infrastructure that already exists to teach the mid level optimizer to exploit this property. The steps I want to take are (not necessarily in this order or split up this way): - Rename AssumptionCache to AxiomCache (or something similar) - Maintain two lists in AxiomCache, one for assumptio...
2019 Jan 17
2
stale info in the assumption cache
Hi all, We have recently encountered a problem with AssumptionCache that it does not get updated when a block with llvm.assume calls gets outlined by the CodeExtractor. As a result we end up with stale references to the llvm.assume calls that were moved to the outlined function in the parent function's cache. The problem can be reproduced on the attached file...
2019 Jan 17
2
stale info in the assumption cache
Hi Hal, On 1/16/19 6:59 PM, Dmitriev, Serguei N via llvm-dev wrote: Hi all, We have recently encountered a problem with AssumptionCache that it does not get updated when a block with llvm.assume calls gets outlined by the CodeExtractor. As a result we end up with stale references to the llvm.assume calls that were moved to the outlined function in the parent function's cache. The problem can be reproduced on the attached file...
2016 Jul 13
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...anchProbabilityAnalysis: Stores no pointers to other analyses. (uses > LoopInfo to "recalculate" though) > DominatorTreeAnalysis: Stores no pointers to other analyses. > PostDominatorTreeAnalysis: Stores no pointers to other analyses. > DemandedBitsAnalysis: Stores pointers to AssumptionCache and DominatorTree > DominanceFrontierAnalysis: Stores no pointers to other analyses. > (uses DominatorTreeAnalysis for "recalculate" though). > LoopInfo: Uses DominatorTreeAnalysis for "recalculate" but stores no > pointers. > LazyValueAnalysis: Stores pointers t...
2016 Jul 13
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
On Tue, Jul 12, 2016 at 11:34 PM Sean Silva <chisophugis at gmail.com> wrote: > On Tue, Jul 12, 2016 at 11:32 PM, Xinliang David Li <davidxl at google.com> > wrote: > >> >> >> On Tue, Jul 12, 2016 at 10:57 PM, Chandler Carruth <chandlerc at gmail.com> >> wrote: >> >>> Yea, this is a nasty problem. >>> >>> One
2018 Nov 27
2
ScalarEvolution class returns no valid loop exit count
...DominatorTree DT = DominatorTree(); DT.recalculate(*func); DT.updateDFSNumbers(); LoopInfoBase<BasicBlock, Loop> LIB; LIB.releaseMemory(); LIB.analyze(DT); for(auto&bb :*func){ Loop * L = LIB.getLoopFor(&bb); if(L != nullptr){ AssumptionCache AC = AssumptionCache(*bb.getParent()); Triple MT(llvm::sys::getDefaultTargetTriple()); TargetLibraryInfoImpl TLII(MT); TargetLibraryInfoWrapperPass TLI = TargetLibraryInfoWrapperPass(TLII); LoopInfo LI = LoopInfo(DT); LI.analyze(DT);...
2016 Jul 14
4
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...no pointers to other analyses. (uses >>> LoopInfo to "recalculate" though) >>> DominatorTreeAnalysis: Stores no pointers to other analyses. >>> PostDominatorTreeAnalysis: Stores no pointers to other analyses. >>> DemandedBitsAnalysis: Stores pointers to AssumptionCache >>> and DominatorTree >>> DominanceFrontierAnalysis: Stores no pointers to other analyses. >>> (uses DominatorTreeAnalysis for "recalculate" though). >>> LoopInfo: Uses DominatorTreeAnalysis for "recalculate" but stores no >>> pointe...
2016 Jul 15
5
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...analyses. > > > > > > > > > > > > > > > PostDominatorTreeAnalysis: Stores no pointers to other > > > > > analyses. > > > > > > > > > > > > > > > DemandedBitsAnalysis: Stores pointers to AssumptionCache and > > > > > DominatorTree > > > > > > > > > > > > > > > DominanceFrontierAnalysis: Stores no pointers to other > > > > > analyses. > > > > > (uses DominatorTreeAnalysis for "recalculate" thou...
2016 Jul 15
2
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...t; > > PostDominatorTreeAnalysis: Stores no pointers to other > > > > > > > analyses. > > > > > > > > > > > > > > > > > > > > > > > > > > > > DemandedBitsAnalysis: Stores pointers to AssumptionCache > > > > > > > and > > > > > > > DominatorTree > > > > > > > > > > > > > > > > > > > > > > > > > > > > DominanceFrontierAnalysis: Stores no pointers to other > &gt...
2016 Jul 16
3
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...uses >>>>> LoopInfo to "recalculate" though) >>>>> DominatorTreeAnalysis: Stores no pointers to other analyses. >>>>> PostDominatorTreeAnalysis: Stores no pointers to other analyses. >>>>> DemandedBitsAnalysis: Stores pointers to AssumptionCache >>>>> and DominatorTree >>>>> DominanceFrontierAnalysis: Stores no pointers to other analyses. >>>>> (uses DominatorTreeAnalysis for "recalculate" though). >>>>> LoopInfo: Uses DominatorTreeAnalysis for "recalculate" b...
2016 Jul 15
2
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...t; > > PostDominatorTreeAnalysis: Stores no pointers to other > > > > > > > analyses. > > > > > > > > > > > > > > > > > > > > > > > > > > > > DemandedBitsAnalysis: Stores pointers to AssumptionCache > > > > > > > and > > > > > > > DominatorTree > > > > > > > > > > > > > > > > > > > > > > > > > > > > DominanceFrontierAnalysis: Stores no pointers to other > &gt...
2016 Jul 15
4
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...gt;> (uses LoopInfo to "recalculate" though) >>>>>> DominatorTreeAnalysis: Stores no pointers to other analyses. >>>>>> PostDominatorTreeAnalysis: Stores no pointers to other analyses. >>>>>> DemandedBitsAnalysis: Stores pointers to AssumptionCache >>>>>> and DominatorTree >>>>>> DominanceFrontierAnalysis: Stores no pointers to other analyses. >>>>>> (uses DominatorTreeAnalysis for "recalculate" though). >>>>>> LoopInfo: Uses DominatorTreeAnalysis for "rec...
2016 Jul 25
2
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...ential use case for getting an analysis outside of something in, or called by, run()? > One annoying problem is that I think that the dependency links will > need to be bidirectional. To use the example analysis cache from my > other post: > (AssumptionAnalysis, function @bar) -> (AssumptionCache for @bar, > [(SomeModuleAnalysis, module TheModule)]) > (AssumptionAnalysis, function @baz) -> (AssumptionCache for @baz, > [(SomeModuleAnalysis, module TheModule)]) > (SomeModuleAnalysis, module TheModule) -> (SomeModuleAnalysisResult > for TheModule, [(SomeFunctionAnalysis,...
2016 Jul 13
4
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...chProbabilityAnalysis: Stores no pointers to other analyses. > (uses LoopInfo to "recalculate" though) > DominatorTreeAnalysis: Stores no pointers to other analyses. > PostDominatorTreeAnalysis: Stores no pointers to other analyses. > DemandedBitsAnalysis: Stores pointers to AssumptionCache and > DominatorTree > DominanceFrontierAnalysis: Stores no pointers to other analyses. > (uses DominatorTreeAnalysis for "recalculate" though). > LoopInfo: Uses DominatorTreeAnalysis for "recalculate" but stores no > pointers. > LazyValueAnalysis: Stores po...
2016 Aug 08
2
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...s LoopInfo to "recalculate" though) >>>>>>> DominatorTreeAnalysis: Stores no pointers to other analyses. >>>>>>> PostDominatorTreeAnalysis: Stores no pointers to other analyses. >>>>>>> DemandedBitsAnalysis: Stores pointers to AssumptionCache >>>>>>> and DominatorTree >>>>>>> DominanceFrontierAnalysis: Stores no pointers to other analyses. >>>>>>> (uses DominatorTreeAnalysis for "recalculate" though). >>>>>>> LoopInfo: Uses DominatorTreeAnalys...
2019 Mar 26
2
On-the-fly passes
...;F) -> LoopInfo & { return this->getAnalysis<LoopInfoWrapperPass>(F).getLoopInfo(); }; auto SCEVGetter = [this] (Function &F) -> ScalarEvolution & { return this->getAnalysis<ScalarEvolutionWrapperPass>(F).getSE(); }; auto AssumptionCacheGetter = [this] (Function &F) -> AssumptionCache & { return this->getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F); }; auto OREGetter = [this] (Function &F) -> OptimizationRemarkEmitter & { return this->...
2016 Jul 22
4
[PM] I think that the new PM needs to learn about inter-analysis dependencies...
...cked via re-entrance > to get{,Cached}Result); is this a reasonable restriction? > > > One annoying problem is that I think that the dependency links will need > to be bidirectional. To use the example analysis cache from my other post: > (AssumptionAnalysis, function @bar) -> (AssumptionCache for @bar, > [(SomeModuleAnalysis, module TheModule)]) > (AssumptionAnalysis, function @baz) -> (AssumptionCache for @baz, > [(SomeModuleAnalysis, module TheModule)]) > (SomeModuleAnalysis, module TheModule) -> (SomeModuleAnalysisResult for > TheModule, [(SomeFunctionAnalysis,...
2017 Feb 01
2
Strange opt error in Value ("replaceAllUses of value with new value of different type!" assertion failure)
...#9 0x00007fd9397d3b4b llvm::Value::replaceAllUsesWith(llvm::Value*) /llvm/lib/IR/Value.cpp:383:0 #10 0x00007fd9372f7ba1 llvm::UnrollLoop(llvm::Loop*, unsigned int, unsigned int, bool, bool, bool, unsigned int, llvm::LoopInfo*, llvm::ScalarEvolution*, llvm::DominatorTree*, llvm::AssumptionCache*, bool) /llvm/lib/Transforms/Utils #11 0x00007fd937ec812d tryToUnrollLoop(llvm::Loop*, llvm::DominatorTree&, llvm::LoopInfo*, llvm::ScalarEvolution*, llvm::TargetTransformInfo const&, llvm::AssumptionCache&, bool, llvm::Optional<unsigned int>, llvm::Optional<unsigne...
2016 Sep 20
2
Inferring nsw/nuw flags for increment/decrement based on relational comparisons
...n approach for, for the sake of eliminating some bounds checks in Rust that the Go compiler is apparently able to eliminate: https://github.com/rust-lang/rust/issues/35981 I'll quote my questions about the possible implementation below and try to add some more context. > DominatorTree and AssumptionCache do seem to be sufficient and already > present. computeOverflowForSignedAdd and computeOverflowForUnsignedAdd > look like the kind of places to extend with this analysis based on > that info. ValueTracking has access to DominatorTree and AssumptionCache information, and provides the n...
2019 Feb 18
4
RFC: changing variable naming rules in LLVM codebase
...Width, IC, > &LVL, &CM); > > If we imagine that over time it evolves such that 50% of the variables have been renamed to camelBack versions of the type names, then it will look like this: > > InnerLoopVectorizer LB(loop, PSE, loopInfo, DT, targetLibraryInfo, TTI, > assumptionCache, ORE, vectorizationFactor.Width, IC, > &loopVectorizationLegality, &CM); Hold on... The change from UpperCamel to lowerCamel should be separate from going from X to somethingOtherName. It seems like in this example, TLI is changed to targetLibraryInfo for the purpose of having a...