similar to: [LLVMdev] How to call some transformation passes (LoopRotate and LoopUnroll) from my own pass

Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] How to call some transformation passes (LoopRotate and LoopUnroll) from my own pass"

2012 Aug 06
0
[LLVMdev] How to call some transformation passes (LoopRotate and LoopUnroll) from my own pass
On Aug 6, 2012, at 6:04 AM, Jorge Navas <navas at comp.nus.edu.sg> wrote: > > Hello, > > I wrote my own pass which needs to do some loop unrolling. > > I can perform loop unrolling via opt: > > opt -mem2reg -loops -loop-simplify -loop-rotate -lcssa -loop-unroll > -unroll-count=50 mytest.bc -o mytest.bc > > This command works perfectly. > >
2013 Apr 03
1
[LLVMdev] YSU_Student
Hello, I wrote my own pass which needs to do some loop unrolling. I can perform loop unrolling via opt: opt -mem2reg -loops -loop-simplify -loop-rotate -lcssa -loop-unroll -unroll-count=50 mytest.bc -o mytest.bc This command works perfectly. However, what I really want is to produce the **same behavior** but from my own pass (i.e., I don't want to use opt). I wrote a Module pass which
2012 Mar 23
3
[LLVMdev] Function Pass Manager
Hi, I'm writing a function pass which is dynamically loaded by opt and I need some analysis and passes to be run before my pass: virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<LoopInfo>(); AU.addPreserved<LoopInfo>(); AU.addRequiredID(LoopSimplifyID); AU.addPreservedID(LoopSimplifyID);
2012 Apr 12
0
[LLVMdev] Function Pass Manager
Hi again, I come back to this issue with an example. It's a pass which does nothing but throw the 'Unable to schedule' error. namespace { struct MyPass : public FunctionPass { static char ID; // Pass identification, replacement for typeid MyPass() : FunctionPass(ID) { initializeMyPassPass(*PassRegistry::getPassRegistry()); } virtual void
2008 Jul 12
3
[LLVMdev] Little bug in LoopInfo after Rotate?
Hello, I have two for loops (one inside the other), that after indvars, looprotate, etc. (the important here is the loop rotate), is similar to this (I've stripped the real operations): define i32 @f() nounwind { entry: br label %bb1 bb1: ; preds = %bb3, %bb1, %entry %i.0.reg2mem.0.ph = phi i32 [ 0, %entry ], [ %i.0.reg2mem.0.ph, %bb1 ], [ %indvar.next9, %bb3 ] ;
2012 Jun 05
2
[LLVMdev] Function Pass Manager
On 4/12/12 3:32 AM, Ivan Llopard wrote: > Hi again, > > I come back to this issue with an example. It's a pass which does > nothing but throw the 'Unable to schedule' error. > > namespace { > struct MyPass : public FunctionPass { > static char ID; // Pass identification, replacement for typeid > MyPass() : FunctionPass(ID) { >
2012 Jul 13
4
[LLVMdev] adding new data types to llvm
Hello . I would like to add new custom data type to llvm C parser, I use LLVM/Clang version 3.1. Adding new type instructions from llvm.org site are out of date (http://llvm.org/docs/ExtendingLLVM.html#type). Could you please provide me with guidance? Thanks in advance, Edvard  -------------- next part -------------- An HTML attachment was scrubbed... URL:
2012 Jun 05
2
[LLVMdev] Function Pass Manager
On 6/5/12 10:39 AM, Ralf Karrenberg wrote: > Hi John, > > On 6/5/12 4:31 PM, John Criswell wrote: >> On 4/12/12 3:32 AM, Ivan Llopard wrote: >>> Hi again, >>> >>> I come back to this issue with an example. It's a pass which does >>> nothing but throw the 'Unable to schedule' error. >>> >>> namespace { >>>
2008 Jul 12
0
[LLVMdev] Little bug in LoopInfo after Rotate?
On Sat, Jul 12, 2008 at 3:45 PM, Julio <julio.martin.hidalgo at gmail.com> wrote: > I would need to operate in the two loops in rotated form. It can be > considered a bug or I have to introduce manually the header (or modify > myself the ConsiderForLoop to my particular problem)? Try adding "AU.addRequiredID(LoopSimplifyID);AU.addPreservedID(LoopSimplifyID);" to your
2012 Jul 23
0
[LLVMdev] llvm::LoopPass
Hello . I'm trying to implement LoopPass. Here is simple code :    class LoopParser: public llvm::LoopPass   {     public:       static char ID;     public:       virtual void getAnalysisUsage(llvm::AnalysisUsage &AU) const       {         AU.addRequiredID(llvm::LoopSimplifyID);         AU.addPreservedID(llvm::LoopSimplifyID);         AU.addRequired<llvm::LoopInfo>();       }    
2012 Jul 23
1
[LLVMdev] llvm::LoopPass
Hi Edvard, _ZTIN4llvm8LoopPassE is "typeinfo for llvm::LoopPass". LLVM is built without typeinfo, so you will need to build your pass with -fno-rtti. Ciao, Duncan. > I'm trying to implement LoopPass. > Here is simple code : > > class LoopParser: public llvm::LoopPass > { > public: > static char ID; > > public: > virtual
2012 Jun 05
0
[LLVMdev] Function Pass Manager
Hi John, On 6/5/12 4:31 PM, John Criswell wrote: > On 4/12/12 3:32 AM, Ivan Llopard wrote: >> Hi again, >> >> I come back to this issue with an example. It's a pass which does >> nothing but throw the 'Unable to schedule' error. >> >> namespace { >> struct MyPass : public FunctionPass { >> static char ID; // Pass
2011 Aug 22
1
[LLVMdev] Infinite loop when adding a new analysis pass
I am trying to add an analysis pass as a FunctionPass, and let LICM (LoopPass) depends upon it. So in LICM.cpp, I have the following: virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesCFG(); AU.addRequired<DominatorTree>(); AU.addRequired<LoopInfo>(); AU.addRequiredID(LoopSimplifyID); AU.addRequired<AliasAnalysis>();
2011 Dec 14
2
[LLVMdev] Adding dependency on MemoryDependenceAnalysis pass to LICM causes opt to get stuck in addPass
I'm attempting to add some support for hoisting/sinking of memory-using intrinsics in loops, and so I want to use MemoryDependenceAnalysis in LICM, but when I modify getAnalysisUsge to include this : virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesCFG(); AU.addRequired<DominatorTree>(); AU.addRequired<LoopInfo>();
2010 Nov 17
0
[LLVMdev] L->isLoopInvariant giving wrong results?
i am getting seg fault on functions like I->eraseFromParent also. I'm assuming that the problem comes when i change the loop structure. On Thu, Nov 18, 2010 at 4:05 AM, Sreeraj a <writetosrj at gmail.com> wrote: > The funny thing is that i am manually able to hoist the Loop invariant > instruction to the basicBlock terminator, by editing the human readable form > and then
2010 Nov 17
2
[LLVMdev] L->isLoopInvariant giving wrong results?
The funny thing is that i am manually able to hoist the Loop invariant instruction to the basicBlock terminator, by editing the human readable form and then using llvm-as to convert it into bytecode. On Thu, Nov 18, 2010 at 4:01 AM, Chris Lattner <clattner at apple.com> wrote: > > On Nov 17, 2010, at 1:38 PM, Sreeraj a wrote: > > > Thanks Chris, > > > > I was
2015 Oct 12
2
question about llvm partial unrolling/runtime unrolling
Hi, I am trying to do loop unrolling with loops that don't have constant loop counter. It is highly appreciated if anyone can help me on this. What I want to do is to turn loop (n) { <loop body> } into loop (n/4) { <loop body> <loop body> <loop body> <loop body> } loop (n%4) { <loop
2011 May 16
2
[LLVMdev] InstructionCombining.cpp inconsistency in whether it modifies the CFG?
InstCombine says in its getAnalysisUsage that it preserves the CFG, but for the 4th argument in its INITIALIZE_PASS call, it says false, which I believe corresponds to whether it preserves the CFG. Is this a mistake, or is there deeper meaning here? InstructionCombining.cpp:73-82 char InstCombiner::ID = 0; INITIALIZE_PASS(InstCombiner, "instcombine", "Combine
2014 Sep 29
2
[LLVMdev] questions about getAnalysisUsage
Hi, I notice that there are several different methods called inside getAnalysisUsage(). The parameters of addRequiredID and addPreservedID are passID. What is the difference between Required and Preserved? There are also function named addRequired<PassName>() called. What is the difference between addRequired<PassName>() and addRequiredID(PassID)? Thanks a lot! Best,
2005 Apr 29
2
[LLVMdev] about AnalysisUsage
Just noticed that quite a few passes like LoopSimplify are implemented in a single .cpp file ... this makes it impossible to specify LoopSimplify using the "addRequired" method. Was there any particular reason to do it this way? I wouldn't mind doing the splitting myself, though I am not using the CVS versions right now. Also, it would be nice to have support for some sort of a