search for: evaluateatiteration

Displaying 13 results from an estimated 13 matches for "evaluateatiteration".

2009 Feb 26
2
[LLVMdev] SCEVCouldNotCompute
...ed form, using the // folders, then expandCodeFor the closed form. This allows the folders to // simplify the expression without having to build a bunch of special code // into this folder. SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV. SCEVHandle V = S->evaluateAtIteration(IH, SE); //cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; return expand(V); SCEVAddRecExpr::evaluateAtIteration trips up because a binomial coefficient requires 65 bits to calculate. There's a big FIXME there:...
2009 Feb 27
0
[LLVMdev] SCEVCouldNotCompute
...olders, then expandCodeFor the closed form. This allows the folders to > // simplify the expression without having to build a bunch of special code > // into this folder. > SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV. > > SCEVHandle V = S->evaluateAtIteration(IH, SE); > //cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; > > return expand(V); > > SCEVAddRecExpr::evaluateAtIteration trips up because a binomial coefficient > requires 65 bits to calculate. T...
2009 Feb 28
1
[LLVMdev] SCEVCouldNotCompute
...odeFor the closed form. This allows the > > folders to // simplify the expression without having to build a bunch of > > special code // into this folder. > > SCEVHandle IH = SE.getUnknown(I); // Get I as a "symbolic" SCEV. > > > > SCEVHandle V = S->evaluateAtIteration(IH, SE); > > //cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; > > > > return expand(V); > > > > SCEVAddRecExpr::evaluateAtIteration trips up because a binomial > > coefficient require...
2010 Jun 29
2
[LLVMdev] Confuse on getSCEVAtScope
...t try to get the operands in the current scope like the function do with SCEVCommutativeExpr, like: if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(V)) { if (!L || !AddRec->getLoop()->contains(L)) { ... // Then, evaluate the AddRec. AddRec = AddRec->evaluateAtIteration(BackedgeTakenCount, *this); } try to evalue every operand of AddRec; return AddRec; } thanks very much. -- best regards ether
2012 Dec 03
1
[LLVMdev] [polly] scev codegen (first step to remove the dependence on ivcanon pass)
Tobias Grosser wrote: > You create a map from the old_loop to a symbolic expression. What type would > this symbolic expression have? Would it be a SCEVExpr? evaluateAtIteration takes a scev, so apply will take a scev, or a map (loop->scev). You can always build a ScevUnknown from an SSA name and use that in the apply. > At the moment, we calculate at the beginning of each > polly statement (a basic block) a value for each virtual induction > variable of the...
2011 May 01
0
[LLVMdev] ScalarEvolution::getSVECAtScope
...AddRec 04720       // loop iterates.  Compute this now. 04721       const SCEV *BackedgeTakenCount = getBackedgeTakenCount(AddRec->getLoop()); 04722       if (BackedgeTakenCount == getCouldNotCompute()) return AddRec; 04723 04724       // Then, evaluate the AddRec. 04725       return AddRec->evaluateAtIteration(BackedgeTakenCount, *this); 04726     } The guard checks that !AddRec->getLoop()->contains(L), but not !L->contains(AddRec->getLoop()). Consequently, if getSCEVAtScope is called with GetElementPtrInst and a Loop that contains it indirectly, the SCEV will be evaluated with respect to t...
2011 May 01
0
[LLVMdev] ScalarEvolution::getSVECAtScope
...erates.  Compute this now. > 04721       const SCEV *BackedgeTakenCount = > getBackedgeTakenCount(AddRec->getLoop()); > 04722       if (BackedgeTakenCount == getCouldNotCompute()) return AddRec; > 04723 > 04724       // Then, evaluate the AddRec. > 04725       return AddRec->evaluateAtIteration(BackedgeTakenCount, *this); > 04726     } > > The guard checks that !AddRec->getLoop()->contains(L), but not > !L->contains(AddRec->getLoop()). > > Consequently, if getSCEVAtScope is called with GetElementPtrInst and a > Loop that contains it indirectly, the SCEV wi...
2010 Jun 29
0
[LLVMdev] Confuse on getSCEVAtScope
...e current > scope like the function do with SCEVCommutativeExpr, like: > > if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(V)) { > if (!L || !AddRec->getLoop()->contains(L)) { > ... > // Then, evaluate the AddRec. > AddRec = AddRec->evaluateAtIteration(BackedgeTakenCount, *this); > } > > try to evalue every operand of AddRec; > > return AddRec; > } That looks reasonable to me. Do you have a testcase which exhibits this? Dan
2012 Nov 02
0
[LLVMdev] DependenceAnalysis and PR14241
Here's the current code (abstracted a bit) const Instruction *Src, const Instruction *Dst, // make sure they are loads and stores, then const Value *SrcPtr = getPointerOperand(Src); // hides a little casting, then Src->getPointerOperand const Value *DstPtr = getPointerOperand(Dst); // ditto // see how underlying objects alias, then const GEPOperator *SrcGEP =
2009 Oct 13
3
[LLVMdev] 65bit integer math
On Mon, Oct 12, 2009 at 8:22 PM, Eli Friedman <eli.friedman at gmail.com> wrote: > On Mon, Oct 12, 2009 at 6:15 PM, Villmow, Micah <Micah.Villmow at amd.com> wrote: >> I have a test case(attached as fc_long.ll) that when run through the >> optimizer produces 65bit integer math(fc_long-opt.ll). >> >> >> >> Now I understand that llvm can have any
2012 Nov 02
2
[LLVMdev] DependenceAnalysis and PR14241
On 11/02/2012 11:02 AM, Hal Finkel wrote: > ----- Original Message ----- >> From: "Tobias Grosser" <tobias at grosser.es> >> To: "preston briggs" <preston.briggs at gmail.com> >> Cc: "Benjamin Kramer" <benny.kra at gmail.com>, "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu> >> Sent: Friday, November
2012 Dec 01
0
[LLVMdev] [polly] scev codegen (first step to remove the dependence on ivcanon pass)
On Fri, Nov 30, 2012, at 08:46 PM, Sebastian Pop wrote: > Hi Tobi, > > I would like to remove the SCEVRewriter code and replace it with a call > to > SCEVAddRec::apply (see attached a patch that adds just this function). > More > precisely I want to add another function called apply_map that applies a > map > (loop -> expr) on a given scev. This is the apply
2012 Nov 30
2
[LLVMdev] [polly] scev codegen (first step to remove the dependence on ivcanon pass)
Hi Tobi, I would like to remove the SCEVRewriter code and replace it with a call to SCEVAddRec::apply (see attached a patch that adds just this function). More precisely I want to add another function called apply_map that applies a map (loop -> expr) on a given scev. This is the apply function on a multi-variate polynomial. So here is an overview of how I would like the scev code generator