Displaying 18 results from an estimated 18 matches for "createlicmpass".
2019 May 13
2
Is it possible to reproduce the result of opt -O3 manually?
...th how the pass manager is populated when we give
-O3 vs when we give particular pass names.
Some passes have multiple createXYZPass() methods that accept arguments
too. These methods call non-default pass constructors, which in turn cause
the passes to behave in a different manner.
eg:
Pass *llvm::createLICMPass() { return new LegacyLICMPass(); }
Pass *llvm::createLICMPass(unsigned LicmMssaOptCap,
unsigned LicmMssaNoAccForPromotionCap) {
return new LegacyLICMPass(LicmMssaOptCap, LicmMssaNoAccForPromotionCap);
}
or
Pass *createLoopVectorizePass() { return new LoopVectorize(); }...
2017 Dec 21
2
Pass ordering - GVN vs. loop optimizations
...he 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
does not run after GVN:
// Rotate Loop - disable header duplication at -Oz
MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1));
MPM.add(createLICMPass()); // Hoist loop invariants
if (EnableSimpleLoopUnswitch)
MPM.add(createSimpleLoopUnswitchLegacyPass());
else
MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3,
DivergentTarget));
MPM.add(createCFGSimplificationPass());
addInstructionCombiningPass(MPM);...
2019 May 09
2
Is it possible to reproduce the result of opt -O3 manually?
Dear developers,
I am trying to reproduce the results of applying opt -O3 to a source file
in the form of LLVM IR. I want to get the same IR by manually ordering the
passes used by O3 and passing them to opt.
To illustrate what I am doing on an example, as an input I use linpack
benchmark from the LLVM test suite[1]:
1. First I produce the intermediate representation using clang:
clang -O3
2013 Nov 01
2
[LLVMdev] loop vectorizer: this loop is not worth vectorizing
...I cannot make the L3 loop larger so that the vectorizer might be happy,
because this will again introduce 'rem' and 'div' in the index calculation.
I am using these passes:
functionPassManager->add(llvm::createBasicAliasAnalysisPass());
functionPassManager->add(llvm::createLICMPass());
functionPassManager->add(llvm::createGVNPass());
functionPassManager->add(llvm::createLoopVectorizePass());
functionPassManager->add(llvm::createInstructionCombiningPass());
functionPassManager->add(llvm::createEarlyCSEPass());
functionPassManager->add(llvm::...
2006 Sep 03
0
[LLVMdev] llvm-gcc4: Enable various optimizations at -O1/-O2
...PerModulePasses->add(createTailCallEliminationPass()); //
Eliminate tail calls
+ PerModulePasses->add(createCFGSimplificationPass()); // Merge
& remove BBs
+ PerModulePasses->add(createReassociatePass()); //
Reassociate expressions
+ PerModulePasses->add(createLICMPass()); // Hoist
loop invariants
+ PerModulePasses->add(createLoopUnswitchPass()); //
Unswitch loops.
+ PerModulePasses->add(createInstructionCombiningPass()); // Clean
up after LICM/reassoc
+ PerModulePasses->add(createIndVarSimplifyPass()); //
C...
2013 Sep 25
0
[LLVMdev] [Polly] Move Polly's execution later
...in Polly
MPM.add(createTailCallEliminationPass()); // also called in Polly
MPM.add(createCFGSimplificationPass()); // also called in Polly
MPM.add(createReassociatePass()); // also called in Polly
MPM.add(createLoopRotatePass()); // also called in Polly
MPM.add(createLICMPass());
MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3));
The initial idea is to move Polly immediately after LoopRotatePass, which will maximum the reuse of canonicalization passes and we need only keep one canonicalization pass "createPromoteMemoryToRegisterPass" in Polly....
2013 Nov 01
0
[LLVMdev] loop vectorizer: this loop is not worth vectorizing
...so that the vectorizer might be
> happy, because this will again introduce 'rem' and 'div' in the index
> calculation.
>
> I am using these passes:
>
> functionPassManager->add(llvm::createBasicAliasAnalysisPass());
> functionPassManager->add(llvm::createLICMPass());
> functionPassManager->add(llvm::createGVNPass());
> functionPassManager->add(llvm::createLoopVectorizePass());
> functionPassManager->add(llvm::createInstructionCombiningPass());
> functionPassManager->add(llvm::createEarlyCSEPass());
> functionPassManage...
2013 Sep 25
3
[LLVMdev] [Polly] Move Polly's execution later
...teTailCallEliminationPass()); // also called in Polly
> MPM.add(createCFGSimplificationPass()); // also called in Polly
> MPM.add(createReassociatePass()); // also called in Polly
> MPM.add(createLoopRotatePass()); // also called in Polly
> MPM.add(createLICMPass());
> MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3));
>
> The initial idea is to move Polly immediately after LoopRotatePass, which will maximum the reuse of canonicalization passes and we need only keep one canonicalization pass "createPromoteMemoryToRegisterPass&qu...
2013 Jul 28
0
[LLVMdev] IR Passes and TargetTransformInfo: Straw Man
...(createCFGSimplificationPass()); // Merge & remove BBs
+ MPM.add(createInstructionCombiningPass()); // Combine silly seq's
+ MPM.add(createReassociatePass()); // Reassociate expressions
+ MPM.add(createLoopRotatePass()); // Rotate Loop
+ MPM.add(createLICMPass()); // Hoist loop invariants
+ MPM.add(createIndVarSimplifyPass()); // Canonicalize indvars
+ MPM.add(createLoopIdiomPass()); // Recognize idioms like memset.
+ MPM.add(createLoopDeletionPass()); // Delete dead loops
+
+ MPM.add(c...
2013 Sep 22
4
[LLVMdev] [Polly] Move Polly's execution later
Hi Tobias,
At 2013-09-19 22:59:25,"Tobias Grosser" <tobias at grosser.es> wrote:
>On 09/19/2013 04:46 PM, Star Tan wrote:
>> Hi Tobias,
>>
>>
>> I am trying to move Polly later.
>>
>>
>> LLVM provides some predefined ExtensionPointTy:
>> EP_EarlyAsPossible,
>> EP_ModuleOptimizerEarly,
>>
2013 Apr 17
1
[LLVMdev] [polly] pass ordering
----- Original Message -----
> From: "Tobias Grosser" <tobias at grosser.es>
> To: "Sebastian Pop" <spop at codeaurora.org>
> Cc: llvmdev at cs.uiuc.edu
> Sent: Wednesday, April 17, 2013 12:45:26 PM
> Subject: Re: [LLVMdev] [polly] pass ordering
>
> On 04/17/2013 05:53 PM, Sebastian Pop wrote:
> > Hi,
> >
> > polly is run very
2013 Jul 18
3
[LLVMdev] IR Passes and TargetTransformInfo: Straw Man
Andy and I briefly discussed this the other day, we have not yet got
chance to list a detailed pass order
for the pre- and post- IPO scalar optimizations.
This is wish-list in our mind:
pre-IPO: based on the ordering he propose, get rid of the inlining (or
just inline tiny func), get rid of
all loop xforms...
post-IPO: get rid of inlining, or maybe we still need it, only
2013 May 10
0
[LLVMdev] Simple Loop Vectorize Question
Hi Josh,
This line works for me:
opt file.ll -loop-vectorize -S -o - -mtriple=x86_64 -mcpu=corei7-avx -debug
You need to specify the triple on the command line if it is not inside the module.
Thanks,
Nadav
On May 9, 2013, at 5:53 PM, Joshua Klontz <josh.klontz at gmail.com> wrote:
> Nadav,
>
> Please forgive my ignorance, but 'opt -mcpu=corei7 -loop-vectorize -S
2013 May 10
2
[LLVMdev] Simple Loop Vectorize Question
Nadav,
Please forgive my ignorance, but 'opt -mcpu=corei7 -loop-vectorize -S
-debug double.ll' doesn't appear to make a difference. In fact it seems to
be ignored as garbage values for -mcpu don't raise an error. Am I
overlooking something else also?
Many Thanks,
Josh
On Thu, May 9, 2013 at 6:06 PM, Nadav Rotem <nrotem at apple.com> wrote:
> Hi Josh,
>
> Your
2013 Jan 02
0
[LLVMdev] [DragonEgg] [Polly] Should we expect DragonEgg to produce identical LLVM IR for identical GIMPLE?
Hi Duncan & Tobi,
Thanks a lot for your interest, and for pointing out differences in GIMPLE
I missed.
Attached is simplified test case. Is it good?
Tobi, regarding runtime alias analysis: in KernelGen we already do it along
with runtime values substitution. For example:
<------------------ __kernelgen_main_loop_17: compile started
--------------------->
Integer args substituted:
2013 Jan 02
2
[LLVMdev] [DragonEgg] [Polly] Should we expect DragonEgg to produce identical LLVM IR for identical GIMPLE?
On 01/01/2013 02:45 PM, Duncan Sands wrote:
> Hi Dmitry,
>
>>
>> In our compiler we use a modified version LLVM Polly, which is very
>> sensitive to
>> proper code generation. Among the number of limitations, the loop region
>> (enclosed by phi node on induction variable and branch) is required to
>> be free
>> of additional memory-dependent
2011 Apr 05
3
[LLVMdev] Building LLVM on Solaris/Sparc
...objects/tools/opt/Debug+Asserts/GraphPrinters.o
llvm::PassRegistry::getPassRegistry()
/n/fs/scratch/tpondich/ParallelAssert/llvm-objects/tools/opt/Debug+Asserts/AnalysisWrappers.o
llvm::createDbgInfoPrinterPass()
/n/fs/scratch/tpondich/ParallelAssert/llvm-objects/tools/opt/Debug+Asserts/opt.o
llvm::createLICMPass()
/n/fs/scratch/tpondich/ParallelAssert/llvm-objects/tools/opt/Debug+Asserts/opt.o
llvm::initializeInstrumentation(llvm::PassRegistry&)
/n/fs/scratch/tpondich/ParallelAssert/llvm-objects/tools/opt/Debug+Asserts/opt.o
llvm::createBitcodeWriterPass(llvm::raw_ostream&)
/n/fs/scratch/tpondic...
2007 Apr 30
1
[LLVMdev] llvm-gcc build broken
...jects/compiler/llvm-gcc/gcc/llvm-backend.cpp:319: error:
`createReassociatePass' was not declared in this scope
/projects/compiler/llvm-gcc/gcc/llvm-backend.cpp:320: error:
`createLoopRotatePass' was not declared in this scope
/projects/compiler/llvm-gcc/gcc/llvm-backend.cpp:321: error:
`createLICMPass' was not declared in this scope
/projects/compiler/llvm-gcc/gcc/llvm-backend.cpp:322: error:
`createLoopUnswitchPass' was not declared in this scope
/projects/compiler/llvm-gcc/gcc/llvm-backend.cpp:324: error:
`createIndVarSimplifyPass' was not declared in this scope
/projects/compile...