search for: loopsimplifycfg

Displaying 18 results from an estimated 18 matches for "loopsimplifycfg".

2020 Mar 26
5
canonical form loops
...o, Quick question to see if I haven't missed anything: I would like convert counting down loops, i.e. loops with a constant -1 step value, to counting up loops, because the vectoriser is able to better deal with these loops (see e.g. D76838 that I was discussing today with Ayal). It looks like LoopSimplifyCFG and IndVarSimplify don't do this. So was just curious if I haven't missed anything here or in another pass I haven't yet considered. I was perhaps also expecting this to be the canonical form of loops, but couldn't find any evidence of that in [1] or in source-code. The obvious foll...
2017 Nov 29
1
CFG normalization: avoiding `br i1 false`
On Wed, Nov 29, 2017 at 9:48 AM, Philip Reames <listmail at philipreames.com> wrote: > There's already a LoopSimplifyCFG which is a loop-pass (and thus can iterate > with other loop passes) and eliminates trivial branches. Having a simple > pass which just strips unreachable blocks and converts conditional branches > to unconditional ones while updating appropriate analyzes (LoopInfo, > DomTree, LCSSA, e...
2018 Feb 13
1
CFG normalization: avoiding `br i1 false`
...On Nov 29, 2017, at 1:08 PM, Davide Italiano via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: On Wed, Nov 29, 2017 at 9:48 AM, Philip Reames <listmail at philipreames.com<mailto:listmail at philipreames.com>> wrote: There's already a LoopSimplifyCFG which is a loop-pass (and thus can iterate with other loop passes) and eliminates trivial branches. Having a simple pass which just strips unreachable blocks and converts conditional branches to unconditional ones while updating appropriate analyzes (LoopInfo, DomTree, LCSSA, etc..) seems very rea...
2017 Dec 05
0
CFG normalization: avoiding `br i1 false`
Hi Davide, > On Nov 29, 2017, at 1:08 PM, Davide Italiano via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > On Wed, Nov 29, 2017 at 9:48 AM, Philip Reames > <listmail at philipreames.com> wrote: >> There's already a LoopSimplifyCFG which is a loop-pass (and thus can iterate >> with other loop passes) and eliminates trivial branches. Having a simple >> pass which just strips unreachable blocks and converts conditional branches >> to unconditional ones while updating appropriate analyzes (LoopInfo, >> D...
2017 Nov 29
3
CFG normalization: avoiding `br i1 false`
There's already a LoopSimplifyCFG which is a loop-pass (and thus can iterate with other loop passes) and eliminates trivial branches.  Having a simple pass which just strips unreachable blocks and converts conditional branches to unconditional ones while updating appropriate analyzes (LoopInfo, DomTree, LCSSA, etc..) seems very...
2020 Apr 01
2
canonical form loops
...ion to see if I haven't missed anything: I would like convert > counting down loops, i.e. loops with a constant -1 step value, to counting up > loops, because the vectoriser is able to better deal with these loops (see e.g. > D76838 that I was discussing today with Ayal). It looks like LoopSimplifyCFG > and IndVarSimplify don't do this. So was just curious if I haven't missed > anything here or in another pass I haven't yet considered. I was perhaps also > expecting this to be the canonical form of loops, but couldn't find any > evidence of that in [1] or in source-co...
2017 Jan 18
10
llvm is getting slower, January edition
...engthenNoWrapFlags` after `GroupByComplexity`; NFCI. +4% 9. r250157: [GlobalsAA] Turn GlobalsAA on again by default. +1% 10. r251049: [SCEV] Mark AddExprs as nsw or nuw if legal. +23% 11. No data 12. r259252: AttributeSetImpl: Summarize existing function attributes in a bitset. -1% r259256: Add LoopSimplifyCFG pass. -2% 13. r262250: Enable LoopLoadElimination by default. +3% 14. r262839: Revert "Enable LoopLoadElimination by default". -3% 15. r263393: Remove PreserveNames template parameter from IRBuilder. -3% 16. r263595: Turn LoopLoadElimination on again. +3% 17. r267672: [LoopDist] Add llvm....
2017 Jan 18
2
llvm is getting slower, January edition
...; NFCI. +4% >> 9. r250157: [GlobalsAA] Turn GlobalsAA on again by default. +1% >> 10. r251049: [SCEV] Mark AddExprs as nsw or nuw if legal. +23% >> 11. No data >> 12. r259252: AttributeSetImpl: Summarize existing function attributes in a bitset. -1% >> r259256: Add LoopSimplifyCFG pass. -2% >> 13. r262250: Enable LoopLoadElimination by default. +3% >> 14. r262839: Revert "Enable LoopLoadElimination by default". -3% >> 15. r263393: Remove PreserveNames template parameter from IRBuilder. -3% >> 16. r263595: Turn LoopLoadElimination on again. +...
2017 Jan 20
2
llvm is getting slower, January edition
...4% > > 9. r250157: [GlobalsAA] Turn GlobalsAA on again by default. +1% > > 10. r251049: [SCEV] Mark AddExprs as nsw or nuw if legal. +23% > > 11. No data > > 12. r259252: AttributeSetImpl: Summarize existing function attributes in > a bitset. -1% > > r259256: Add LoopSimplifyCFG pass. -2% > > 13. r262250: Enable LoopLoadElimination by default. +3% > > 14. r262839: Revert "Enable LoopLoadElimination by default". -3% > > 15. r263393: Remove PreserveNames template parameter from IRBuilder. -3% > > 16. r263595: Turn LoopLoadElimination on agai...
2017 Jun 13
9
RFC: Dynamic dominators
...ode provides the basic functionality and tries be ‘API-equivalent’ with the current DomTree implementation. The NewDomTree is also able to convert itself to the current one for testing and verification purposes. Dynamic dominators are hacked into 3 existing passes (DomTreeWrapperPass, LoopDeletion, LoopSimplifyCFG) to test correctness and experiment with the use of the new API. The prototype also comes with a bunch of testing utilities and a simple benchmarking tool. *4. Performance* The real life performance of full dynamic DBS-based DomTree recalculation is between 20% and 2% better on a machine with tw...
2019 Mar 04
2
RFC: Getting ProfileSummaryInfo and BlockFrequencyInfo from various types of passes under the new pass manager
...r "LoopStandard" analyses. >> > > Is this implemented - do the loop passes preserve BPI? > > Nope, not implemented right now. > One of the problems is that even loop canonicalization passes run at the > start of loop pass manager dont preserve it > (and at least LoopSimplifyCFG does change control flow). > > > In buildFunctionSimplificationPipeline (where LoopFullUnrollPass is added > as in the sketch), LateLoopOptimizationsEPCallbacks > and LoopOptimizerEndEPCallbacks seem to allow some arbitrary loop passes to > be inserted into the pipelines (via flag...
2019 Mar 04
2
RFC: Getting ProfileSummaryInfo and BlockFrequencyInfo from various types of passes under the new pass manager
...t; >> >> Is this implemented - do the loop passes preserve BPI? > Nope, not implemented right now. > One of the problems is that even loop canonicalization passes > run at the start of loop pass manager dont preserve it > (and at least LoopSimplifyCFG does change control flow). >> >> In buildFunctionSimplificationPipeline >> (where LoopFullUnrollPass is added as in the sketch), >> LateLoopOptimizationsEPCallbacks >> and LoopOptimizerEndEPCallbacks seem to allow some arbitrary >>...
2017 Jun 13
2
RFC: Dynamic dominators
...tries be ‘API-equivalent’ > > with the current DomTree implementation. The NewDomTree is also able to > > convert itself to the current one for testing and verification purposes. > > Dynamic dominators are hacked into 3 existing passes (DomTreeWrapperPass, > > LoopDeletion, LoopSimplifyCFG) to test correctness and experiment with > > the > > use of the new API. > > > > The prototype also comes with a bunch of testing utilities and a simple > > benchmarking tool. > > > > *4. Performance* > > > > The real life performance of full dy...
2017 Nov 15
2
CFG normalization: avoiding `br i1 false`
> I'm not necessarily sympathetic to the idea of adding another canonicalization pass only for this purpose. The problem is that as you said, SimplifyCfg does all sorts of stuff, and I suspect is not the fastest pass in the world. Also, in the case that annoys me, there is an LCSSA pass in the middle, and I suspect it would be a better idea to only do the LCSSA etc. transform again if no
2019 Mar 13
2
RFC: Getting ProfileSummaryInfo and BlockFrequencyInfo from various types of passes under the new pass manager
...this implemented - do the loop passes preserve BPI? >> Nope, not implemented right now. >> One of the problems is that even loop canonicalization >> passes run at the start of loop pass manager dont preserve it >> (and at least LoopSimplifyCFG does change control flow). >>> >>> In buildFunctionSimplificationPipeline >>> (where LoopFullUnrollPass is added as in the sketch), >>> LateLoopOptimizationsEPCallbacks >>> and LoopOptimizerEndEPCallbacks s...
2019 Mar 13
1
RFC: Getting ProfileSummaryInfo and BlockFrequencyInfo from various types of passes under the new pass manager
...gt; Nope, not implemented right now. >>> One of the problems is that even loop >>> canonicalization passes run at the start of loop >>> pass manager dont preserve it >>> (and at least LoopSimplifyCFG does change control flow). >>>> >>>> In buildFunctionSimplificationPipeline >>>> (where LoopFullUnrollPass is added as in the >>>> sketch), LateLoopOptimizationsEPCallbacks >>>>...
2019 Mar 01
4
RFC: Getting ProfileSummaryInfo and BlockFrequencyInfo from various types of passes under the new pass manager
Here's a sketch of the proposed approach for just one pass (but imagine more) https://reviews.llvm.org/D58845 On Fri, Mar 1, 2019 at 12:54 PM Fedor Sergeev via llvm-dev < llvm-dev at lists.llvm.org> wrote: > On 2/28/19 12:47 AM, Hiroshi Yamauchi via llvm-dev wrote: > > Hi all, > > To implement more profile-guided optimizations, we’d like to use > ProfileSummaryInfo
2017 Dec 21
2
Pass ordering - GVN vs. loop optimizations
Hi, This is Ariel from the Rust team again. I am having another pass ordering issue. Looking at the pass manager at https://github.com/llvm-mirror/llvm/blob/7034870f30320d6fbc74effff539d946018cd00a/lib/Transforms/IPO/PassManagerBuilder.cpp (the early SimplifyCfg now doesn't sink stores anymore! I can't wait until I can get to use that in rustc!) I find that the loop optimization group