search for: lpm

Displaying 20 results from an estimated 137 matches for "lpm".

Did you mean: lp
2011 Mar 03
0
[LLVMdev] How to write optimizer loop
I've written an optimization loop, with the following form: PassManager lpm; lpm.add(createLoopDeletionPass()); lpm.add(createSCCPPass()); lpm.add(createAggressiveDCEPass()); lpm.add(createGlobalOptimizerPass()); lpm.add(createGlobalDCEPass()); lpm.add(createDeadStoreEliminationPass()); lpm.add(createLoopDeletionPass()); lpm.add(cre...
2011 May 09
2
[LLVMdev] get LPPassManager to use it in llvm::CloneLoop
...loneLoop function. In a LoopPass this is a parameter for the runOnLoop, but how can I obtain it in a FunctionPass? I tried simply by creating a new instance : ValueMap<const Value *, Value* > VMap; LoopInfo *LI = &getAnalysis<LoopInfo>(); LPPassManager *LPM = new llvm::LPPassManager(1); Loop* nL = llvm::CloneLoop(L, LPM, LI, VMap, this); but it segfaults in CloneLoop when trying LPM->insertLoop(..). Does the CloneLoop function include both loops in the CFG and re-create the use map between the clones? Also does it update the phi nod...
2012 Jun 05
0
[LLVMdev] How to unroll loops in opposite loop nest order
...tely I cannot use the UnrollLoop utility function in this case, which crashes, when called with a > NULL LPPassManager object, despite opposite documentation. > > Is there any way how to process loops outside in still using the UnrollLoop function? I noticed another case of referencing LPM without a null check and fixed it here r158007. You'll should be careful to check everything that's currently disabled when LPM is missing: domtree update, ScalarEvolution update, SimplifyIndvar. If you need any of these things I suggest changing the interface. Maybe it would work to pass...
2017 May 07
3
Instruction selection for 'load' based on static vs. dynamic data
...I've found is that all 'load' IR instructions are matched using the 'ld' AVR instruction, including 'load's for lookup tables generated from switches. On the AVR architecture, RAM and the program image are in completely separated namespaces. There's a distinct 'lpm' (Load from Program Memory) instruction that can load data from .text. So the nice way of getting this to work is to select 'lpm' for those switch lookup table 'load's, thereby avoiding the memory footprint and the runtime cost of copying the tables to RAM at startup. However, w...
2011 May 09
0
[LLVMdev] get LPPassManager to use it in llvm::CloneLoop
...LoopPass this is a parameter for the runOnLoop, but how can I obtain it > in a FunctionPass? > I tried simply by creating a new instance : > >         ValueMap<const Value *, Value* > VMap; >         LoopInfo *LI = &getAnalysis<LoopInfo>(); >         LPPassManager *LPM = new llvm::LPPassManager(1); > >         Loop* nL = llvm::CloneLoop(L, LPM, LI, VMap, this); > > but it segfaults in CloneLoop when trying LPM->insertLoop(..). CloneLoop isn't fundamentally dependent on a LPPassManager, but it looks like you have to pass one in at the moment; y...
2012 Jun 05
2
[LLVMdev] How to unroll loops in opposite loop nest order
I am trying to implement loop unrolling in a context, where lots of constant propagation has taken place. Unrolling an outer loop might make an inner loop have constant bounds, therefore I want to process the loops outside in, i.e. from parent loops to nested loops. Unfortunately the standard loop pass manager performs loop passes inside out, i.e. from nested loops to parent loops, thereby missing
2016 Oct 19
10
[PATCH v4 0/5] implement vcpu preempted check
...KBps | 1780614.4 KBps Pipe Throughput | 11872208.7 lps | 11855628.9 lps Pipe-based Context Switching | 1495126.5 lps | 1490533.9 lps Process Creation | 29881.2 lps | 28572.8 lps Shell Scripts (1 concurrent) | 23224.3 lpm | 22607.4 lpm Shell Scripts (8 concurrent) | 3531.4 lpm | 3211.9 lpm System Call Overhead | 10385653.0 lps | 10419979.0 lps Pan Xinhui (5): kernel/sched: introduce vcpu preempted check interface locking/osq: Drop the overload of osq_lock() kernel/...
2016 Oct 19
10
[PATCH v4 0/5] implement vcpu preempted check
...KBps | 1780614.4 KBps Pipe Throughput | 11872208.7 lps | 11855628.9 lps Pipe-based Context Switching | 1495126.5 lps | 1490533.9 lps Process Creation | 29881.2 lps | 28572.8 lps Shell Scripts (1 concurrent) | 23224.3 lpm | 22607.4 lpm Shell Scripts (8 concurrent) | 3531.4 lpm | 3211.9 lpm System Call Overhead | 10385653.0 lps | 10419979.0 lps Pan Xinhui (5): kernel/sched: introduce vcpu preempted check interface locking/osq: Drop the overload of osq_lock() kernel/...
2006 Nov 07
3
[LLVMdev] PassManager
...; handle together and also what order to visit them. For example, the > LoopFusion class may need to inspect loop headers to decide which > subsets of loops to fuse and then fuse them as it goes. LoopPassManager will expose two virtual methods. 1) runOnLoop(Loop &L, LoopPassManger &LPM) Loop transformation can override to process this particular loop. 2) runOnFunctionBody(Function &F, Loop&L, LoopPassManager &LPM) LoopFusion and others can override this to to analyze and process multiple loops. > > I think you could do this just by adding an ite...
2020 Jul 11
2
[RFC] Introducing classes for the codegen driven by new pass manager
(NPM: new pass manager; LPM: legacy pass manager) Hello, community While we're still working towards using NPM for optimizer pipeline by default, we still don't have a machine pass interface and the corresponding machine pass manager using NPM. The potential benefits using NPM aside, this inhibits us from making any...
2020 Jul 22
2
NPM and code-size
(NPM: new pass manager; LPM: legacy pass manager) In a first quick experiment today I compared code-size of the LMP vs. the NMP for the CSiBE benchmark (and some other), and this shows code-size increases with the NPM that would probably be unacceptable for us. So, now I am wondering how/if we need to mitigate this, and have...
2020 Jul 14
3
[RFC] Introducing classes for the codegen driven by new pass manager
...While we're still working towards using NPM for optimizer pipeline by > default, we still don't have a machine pass interface and the corresponding > machine pass manager using NPM. The potential benefits using NPM aside, > this inhibits us from making any progress on deprecating LPM for the > codegen pipeline which blocks removing LPM altogether. The purpose of this > series of patches is to (1) let pass developers write or port machine passes to > a new machine pass interface and be able to test it with `llc`. (2) let a target > have the choice of implementing the...
2016 Oct 19
3
[PATCH v4 5/5] x86, kvm: support vcpu preempted check
...ps > Pipe Throughput | 11872208.7 lps | 11855628.9 lps > Pipe-based Context Switching | 1495126.5 lps | 1490533.9 lps > Process Creation | 29881.2 lps | 28572.8 lps > Shell Scripts (1 concurrent) | 23224.3 lpm | 22607.4 lpm > Shell Scripts (8 concurrent) | 3531.4 lpm | 3211.9 lpm > System Call Overhead | 10385653.0 lps | 10419979.0 lps > > Signed-off-by: Pan Xinhui <xinhui.pan at linux.vnet.ibm.com> > --- > diff --git a/arch/x86/includ...
2016 Oct 19
3
[PATCH v4 5/5] x86, kvm: support vcpu preempted check
...ps > Pipe Throughput | 11872208.7 lps | 11855628.9 lps > Pipe-based Context Switching | 1495126.5 lps | 1490533.9 lps > Process Creation | 29881.2 lps | 28572.8 lps > Shell Scripts (1 concurrent) | 23224.3 lpm | 22607.4 lpm > Shell Scripts (8 concurrent) | 3531.4 lpm | 3211.9 lpm > System Call Overhead | 10385653.0 lps | 10419979.0 lps > > Signed-off-by: Pan Xinhui <xinhui.pan at linux.vnet.ibm.com> > --- > diff --git a/arch/x86/includ...
2006 Nov 07
0
[LLVMdev] PassManager
...what order to visit them. For example, the >> LoopFusion class may need to inspect loop headers to decide which >> subsets of loops to fuse and then fuse them as it goes. > > LoopPassManager will expose two virtual methods. > > 1) runOnLoop(Loop &L, LoopPassManger &LPM) > > Loop transformation can override to process this particular > loop. > > 2) runOnFunctionBody(Function &F, Loop&L, LoopPassManager &LPM) > > LoopFusion and others can override this to to analyze and process > multiple loops. > >> >&gt...
2016 Oct 17
2
LCSSA verification for the top-level loops
...eels a quite hacky, but in theory should work. > We’ll always have to hack around something to pass a loop/list of loops to verify to the function pass. Instead, I think it would be easier to create a loop pass for LCSSAVerification and make all loop passes preserve it. > > This way, when LPM would be verifying preserved analysis, it’ll run the LCSSA verification for the current loop as well (verifyAnalysis from the new pass). We can make it depend on the existing LCSSA pass, so that requiring this one would result in building LCSSA if it’s not built yet. The verification itself will be...
2016 Oct 14
2
LCSSA verification for the top-level loops
...tukhin at apple.com> wrote: > Hi Igor, > > I like the second option more, and I think we can do something like this, or even more general. I'd suggest creating a new loop pass, called e.g. LoopVerification, and manually (at least for now) add it as a last pass to every instance of LPM. The pass will directly call isRecursivelyInLCSSA for the current loop, and later probably can also check other properties like LoopSimplify This way, the verification will be executed when all loop passes have finished working with a loop and before going to another loop. We can also schedule it i...
2016 Oct 19
2
LCSSA verification for the top-level loops
...nally I didn’t like this idea, but the more I think about it the more I like it. Currently all loop passes use (or should use) getLoopAnalysisUsage to record their pass requirements, so all of them should operate on the same set of analyses. What we can do is to add a function verifyLoopAnalyses to LPM and make it call verifiers for all these analyses. So, instead of if (getAnalaysisIfAvaliable<LCSSAVerifier>()) { CurrentLoop->verifyLCSSA(); ) we will have verifyLoopAnalyses(CurrentLoop); which will do: CurrentLoop->verifyLCSSA(); CurrentLoop->verifyLoopSimplify(); // For be...
2016 Oct 20
0
[PATCH v5 6/9] x86, kvm: support vcpu preempted check
....7 KBps | 1780614.4 KBps Pipe Throughput | 11872208.7 lps | 11855628.9 lps Pipe-based Context Switching | 1495126.5 lps | 1490533.9 lps Process Creation | 29881.2 lps | 28572.8 lps Shell Scripts (1 concurrent) | 23224.3 lpm | 22607.4 lpm Shell Scripts (8 concurrent) | 3531.4 lpm | 3211.9 lpm System Call Overhead | 10385653.0 lps | 10419979.0 lps Signed-off-by: Pan Xinhui <xinhui.pan at linux.vnet.ibm.com> --- arch/x86/include/uapi/asm/kvm_para.h | 3 ++- arch/x86/kern...
2020 Jan 02
3
[RFC] Changing LoopUnrollAndJamPass to a function pass.
...v class="socmaildefaultfont" dir="ltr" style="font-family:Arial, Helvetica, sans-serif;font-size:10pt" ><div dir="ltr" ><font face="AppleSystemUIFont" size="3" >LoopUnrollAndJamPass is currently a loop pass. It is added in a LPM with only itself.</font><br><font face="AppleSystemUIFont" size="3" >`OptimizePM.addPass(createFunctionToLoopPassAdaptor(LoopUnrollAndJamPass(Level)));`</font><br><font face="AppleSystemUIFont" size="3" >Notice that loops a...