search for: createlooprotatepass

Displaying 20 results from an estimated 31 matches for "createlooprotatepass".

2013 Sep 19
2
[LLVMdev] [Polly] Move Polly's execution later
...tly Polly uses "EP_EarlyAsPossible" to run as early as possible. As what you suggested: >Instead of removing canonicalization passes, I believe we may want to >move Polly to a later place in the pass manager. Possibly at the >beginning of the loop optimizer right before PM.add(createLoopRotatePass()); I want to move it to the point immediate after someone Loop optimization pass, e.g. MPM.add(createLoopRotatePass()). However no predefined ExtensionPointTy is available for this purpose. Instead, the "EP_ModuleOptimizerEarly" would move Polly before all loop optimization passes. In...
2013 Sep 18
0
[LLVMdev] [Polly] Compile-time and Execution-time analysis for the SCEV canonicalization
..., but this reduction may in large part being due to Polly not being able to optimise certain pieces of code. Instead of removing canonicalization passes, I believe we may want to move Polly to a later place in the pass manager. Possibly at the beginning of the loop optimizer right before PM.add(createLoopRotatePass()); We would then only need a very low number of canonicalization passes (possibly zero) and instead would put a couple of cleanup passes right after Polly. What do you think? Cheers, Tobias
2013 Sep 17
4
[LLVMdev] [Polly] Compile-time and Execution-time analysis for the SCEV canonicalization
...eInstructionCombiningPass()); //this is the most expensive canonicalization pass for flop benchmark PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createTailCallEliminationPass()); PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createReassociatePass()); PM.add(llvm::createLoopRotatePass()); PM.add(llvm::createInstructionCombiningPass()); PM.add(polly::createCodePreparationPass()); } Results are shown on http://188.40.87.11:8000/db_default/v4/nts/46?baseline=44&compare_to=44. As shown in the results, 13 benchmarks have >5% compile-time performance improvements by simply...
2013 Sep 19
0
[LLVMdev] [Polly] Move Polly's execution later
...s "EP_EarlyAsPossible" to run as early as possible. As what you suggested: >> Instead of removing canonicalization passes, I believe we may want to >> move Polly to a later place in the pass manager. Possibly at the >> beginning of the loop optimizer right before PM.add(createLoopRotatePass()); > I want to move it to the point immediate after someone Loop optimization pass, e.g. MPM.add(createLoopRotatePass()). However no predefined ExtensionPointTy is available for this purpose. Instead, the "EP_ModuleOptimizerEarly" would move Polly before all loop optimization passes....
2013 Sep 22
4
[LLVMdev] [Polly] Move Polly's execution later
...arlyAsPossible" to run as early as possible. As what you suggested: >>> Instead of removing canonicalization passes, I believe we may want to >>> move Polly to a later place in the pass manager. Possibly at the >>> beginning of the loop optimizer right before PM.add(createLoopRotatePass()); >> I want to move it to the point immediate after someone Loop optimization pass, e.g. MPM.add(createLoopRotatePass()). However no predefined ExtensionPointTy is available for this purpose. Instead, the "EP_ModuleOptimizerEarly" would move Polly before all loop optimization pas...
2013 Sep 25
0
[LLVMdev] [Polly] Move Polly's execution later
...:createPromoteMemoryToRegisterPass());     PM.add(llvm::createInstructionCombiningPass());     PM.add(llvm::createCFGSimplificationPass());     PM.add(llvm::createTailCallEliminationPass());     PM.add(llvm::createCFGSimplificationPass());     PM.add(llvm::createReassociatePass());     PM.add(llvm::createLoopRotatePass());     PM.add(llvm::createInstructionCombiningPass()); We can see that some of them are also called in common cases (lib/Transforms/IPO/PassManagerBuilder.cpp:181):   MPM.add(createEarlyCSEPass());   MPM.add(createJumpThreadingPass());   MPM.add(createCorrelatedValuePropagationPass());   MPM.add...
2013 Sep 13
2
[LLVMdev] [Polly] Compile-time and Execution-time analysis for the SCEV canonicalization
...eInstructionCombiningPass()); //this is the most expensive canonicalization pass for flop benchmark PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createTailCallEliminationPass()); PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createReassociatePass()); PM.add(llvm::createLoopRotatePass()); PM.add(llvm::createInstructionCombiningPass()); if (!SCEVCodegen) PM.add(polly::createIndVarSimplifyPass()); PM.add(polly::createCodePreparationPass()); } If we remove the first "InstructionCombining" pass, then the compile-time is reduced by more than 10% . The results repo...
2013 Apr 17
2
[LLVMdev] [polly] pass ordering
Tobias Grosser wrote: > As said before, we could probably add it in between those two passes: > > MPM.add(createReassociatePass()); // Reassociate expressions > + addExtensionsToPM(EP_LoopOptimizerStart, MPM); > MPM.add(createLoopRotatePass()); // Rotate Loop As this is in the middle of other LNO passes, can you please rename s/EP_LoopOptimizerStart/EP_Polly_LNO/ or anything other than LoopOptimizerStart? Thanks, Sebastian -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
2013 Sep 14
0
[LLVMdev] [Polly] Compile-time and Execution-time analysis for the SCEV canonicalization
...eInstructionCombiningPass()); //this is the most expensive canonicalization pass for flop benchmark PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createTailCallEliminationPass()); PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createReassociatePass()); PM.add(llvm::createLoopRotatePass()); PM.add(llvm::createInstructionCombiningPass()); PM.add(polly::createCodePreparationPass()); } Results are shown on http://188.40.87.11:8000/db_default/v4/nts/46?baseline=44&compare_to=44. As shown in the results, 13 benchmarks have >5% compile-time performance improvements by simply...
2012 Aug 06
3
[LLVMdev] How to call some transformation passes (LoopRotate and LoopUnroll) from my own pass
...); } However, I couldn't figure out how to call the LoopRotate and LoopUnroll passes since I cannot use addRequiredID or addRequired for these two transformations. In Scalar.h, I found: > Pass *createLoopUnrollPass(int Threshold = -1, int Count = -1, int AllowPartial = -1); > Pass *createLoopRotatePass(); Is to call these methods the way to go? How?, can somebody show me an excerpt? P.S. I tried hard on Google but I couldn't find anything related. Thanks! Jorge
2013 Apr 17
0
[LLVMdev] [polly] pass ordering
...teInstructionCombiningPass()); >>> PM.add(llvm::createCFGSimplificationPass()); >>> PM.add(llvm::createTailCallEliminationPass()); >>> PM.add(llvm::createCFGSimplificationPass()); >>> PM.add(llvm::createReassociatePass()); >>> PM.add(llvm::createLoopRotatePass()); >>> PM.add(llvm::createInstructionCombiningPass()); >>> >>> if (!SCEVCodegen) >>> PM.add(polly::createIndVarSimplifyPass()); >>> >>> PM.add(polly::createCodePreparationPass()); >>> PM.add(polly::createRegionSimplify...
2013 Apr 17
2
[LLVMdev] [polly] pass ordering
...PM.add(llvm::createInstructionCombiningPass()); > > PM.add(llvm::createCFGSimplificationPass()); > > PM.add(llvm::createTailCallEliminationPass()); > > PM.add(llvm::createCFGSimplificationPass()); > > PM.add(llvm::createReassociatePass()); > > PM.add(llvm::createLoopRotatePass()); > > PM.add(llvm::createInstructionCombiningPass()); > > > > if (!SCEVCodegen) > > PM.add(polly::createIndVarSimplifyPass()); > > > > PM.add(polly::createCodePreparationPass()); > > PM.add(polly::createRegionSimplifyPass()); > > Right....
2013 Sep 26
1
[LLVMdev] [Polly] Compile-time and Execution-time analysis for the SCEV canonicalization
...e > part being due to Polly not being able to optimise certain pieces of > code. > > Instead of removing canonicalization passes, I believe we may want > to move Polly to a later place in the pass manager. Possibly at the > beginning of the loop optimizer right before > PM.add(createLoopRotatePass()); > > We would then only need a very low number of canonicalization passes > (possibly zero) and instead would put a couple of cleanup passes > right > after Polly. What do you think? We experimented with moving Polly down the pass pipeline: when moving Polly past CSE, PRE and ot...
2016 Oct 12
2
Loop Unrolling Fail in Simple Vectorized loop
...e canonicalization routines and redo unrolling again. I have set partial unrolling on + have a huge threshold + allows expensive loop trip counts. Still it didn't unroll by 2. MPM.add(createLoopUnrollPass()); MPM.add(createCFGSimplificationPass()); MPM.add(createLoopSimplifyPass()); MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1)); MPM.add(createLCSSAPass()); MPM.add(createIndVarSimplifyPass()); // Canonicalize indvars MPM.add(createLoopUnrollPass()); Digging deeper I found, that it fails in UnrollRuntimeLoopRemainder function, where it is unable to calculate the BackEdge taken amount....
2013 Apr 17
0
[LLVMdev] [polly] pass ordering
...09:04 PM, Sebastian Pop wrote: > Tobias Grosser wrote: >> As said before, we could probably add it in between those two passes: >> >> MPM.add(createReassociatePass()); // Reassociate expressions >> + addExtensionsToPM(EP_LoopOptimizerStart, MPM); >> MPM.add(createLoopRotatePass()); // Rotate Loop > > As this is in the middle of other LNO passes, can you please rename > s/EP_LoopOptimizerStart/EP_Polly_LNO/ or anything other than LoopOptimizerStart? It is in the middle? The passes executed before are: MPM.add(createJumpThreadingPass()); // Thread jumps. MPM.a...
2013 Apr 17
3
[LLVMdev] [polly] pass ordering
...PM.add(llvm::createPromoteMemoryToRegisterPass()); PM.add(llvm::createInstructionCombiningPass()); PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createTailCallEliminationPass()); PM.add(llvm::createCFGSimplificationPass()); PM.add(llvm::createReassociatePass()); PM.add(llvm::createLoopRotatePass()); PM.add(llvm::createInstructionCombiningPass()); if (!SCEVCodegen) PM.add(polly::createIndVarSimplifyPass()); PM.add(polly::createCodePreparationPass()); PM.add(polly::createRegionSimplifyPass()); Sergei was saying that on some benchmarks PromoteMemoryToRegister was causing perfo...
2013 Sep 25
3
[LLVMdev] [Polly] Move Polly's execution later
...); > PM.add(llvm::createInstructionCombiningPass()); > PM.add(llvm::createCFGSimplificationPass()); > PM.add(llvm::createTailCallEliminationPass()); > PM.add(llvm::createCFGSimplificationPass()); > PM.add(llvm::createReassociatePass()); > PM.add(llvm::createLoopRotatePass()); > PM.add(llvm::createInstructionCombiningPass()); > > We can see that some of them are also called in common cases (lib/Transforms/IPO/PassManagerBuilder.cpp:181): > > MPM.add(createEarlyCSEPass()); > MPM.add(createJumpThreadingPass()); > MPM.add(createCorrela...
2012 Aug 06
0
[LLVMdev] How to call some transformation passes (LoopRotate and LoopUnroll) from my own pass
...figure out how to call the LoopRotate and > LoopUnroll passes since I cannot use addRequiredID or addRequired for > these two transformations. > > In Scalar.h, I found: > >> Pass *createLoopUnrollPass(int Threshold = -1, int Count = -1, int AllowPartial = -1); >> Pass *createLoopRotatePass(); > > > Is to call these methods the way to go? How?, can somebody show me an > excerpt? The create*Pass methods give you a Pass instance that you can add to a pass manager. If you're replacing "opt", you should look at the opt driver, opt.cpp to see how to do this. Yo...
2016 Oct 13
2
Loop Unrolling Fail in Simple Vectorized loop
...again. I have set > partial unrolling on + have a huge threshold + allows expensive loop trip > counts. Still it didn't unroll by 2. > > MPM.add(createLoopUnrollPass()); > > MPM.add(createCFGSimplificationPass()); > > MPM.add(createLoopSimplifyPass()); > > MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1)); > > MPM.add(createLCSSAPass()); > > MPM.add(createIndVarSimplifyPass()); // Canonicalize indvars > > MPM.add(createLoopUnrollPass()); > > > Digging deeper I found, that it fails in UnrollRuntimeLoopRemainder > function, where it is una...
2013 Apr 17
0
[LLVMdev] [polly] pass ordering
...gisterPass()); > PM.add(llvm::createInstructionCombiningPass()); > PM.add(llvm::createCFGSimplificationPass()); > PM.add(llvm::createTailCallEliminationPass()); > PM.add(llvm::createCFGSimplificationPass()); > PM.add(llvm::createReassociatePass()); > PM.add(llvm::createLoopRotatePass()); > PM.add(llvm::createInstructionCombiningPass()); > > if (!SCEVCodegen) > PM.add(polly::createIndVarSimplifyPass()); > > PM.add(polly::createCodePreparationPass()); > PM.add(polly::createRegionSimplifyPass()); Right. > Sergei was saying that on some be...