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