search for: basevalu

Displaying 19 results from an estimated 19 matches for "basevalu".

Did you mean: basevalue
2011 Nov 14
1
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...000000000 +0100 > +++ ../llvm2/tools/polly/./include/polly/ScopDetection.h 2011-11-13 01:11:17.000000000 +0100 > @@ -145,6 +145,8 @@ > /// @return True if the call instruction is valid, false otherwise. > static bool isValidCallInst(CallInst&CI); > > + const Value *GetBaseValue(const SCEV *S) const; Why is this function needed? For me it looks like it implements the same as SCEVValue *Operand = dyn_cast<SCEVValue>(getPointerOperand()) if (!Operand) return invalid Value; return Operand->getValue(); > /// @brief Check if a memory access can be part...
2011 Nov 19
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...// Statistics. > > @@ -236,7 +241,9 @@ > BasePointer = dyn_cast<SCEVUnknown>(SE->getPointerBase(AccessFunction)); > > if (!BasePointer) > + { > INVALID(AffFunc, "No base pointer"); > + } This change is unneeded and unrelated. > > BaseValue = BasePointer->getValue(); > > @@ -245,8 +252,9 @@ > > AccessFunction = SE->getMinusSCEV(AccessFunction, BasePointer); > > - if (!isAffineExpr(&Context.CurRegion, AccessFunction, *SE, BaseValue)) > + if (!isAffineExpr(&Context.CurRegion, AccessFunction, *SE...
2011 Nov 14
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...tools/polly/./include/polly/ScopDetection.h        2011-11-13 >> 01:11:17.000000000 +0100 >> @@ -145,6 +145,8 @@ >>    /// @return True if the call instruction is valid, false otherwise. >>    static bool isValidCallInst(CallInst&CI); >> >> +  const Value *GetBaseValue(const SCEV *S)  const; > > Why is this function needed? For me it looks like it implements > the same as > > SCEVValue *Operand = dyn_cast<SCEVValue>(getPointerOperand()) > > if (!Operand) >  return invalid Value; > > return Operand->getValue(); Mmm, about t...
2011 Nov 02
5
[LLVMdev] How to make Polly ignore some non-affine memory accesses
Mmm I found out a very strange behavior (to me) of the SCEV analysis of the loop bound of the external loop I posted. When in ScopDetection it gets the SCEV of the external loop bound in the "isValidLoop()" function with: const SCEV *LoopCount = SE->getBackedgeTakenCount(L); It returns a SCEVCouldNotCompute, but if I change the "if" block inside the loop from: if
2013 Jul 31
1
[LLVMdev] [Polly] Analysis of the expensive compile-time overhead of Polly Dependence pass
...W and WAW dependence. Of course, this patch file makes the compiling very faster, i.e., compile-time is reduced from several minutes to less then 1 second. @Tobias: >This is obviously a hack. The base is not always a constant. >You can probably just call use something like, >isl_pw_aff *BaseValue = visit(AR->getOperand(0)) >Affine = isl_pw_aff_sum(Affine, BaseValue); Currently, I only handle constant base values because I have not found a good way to handle general base values. isl_pw_aff_add requires two isl_pw_aff parameters, but Affine is actually of isl_aff type. Perhaps we could...
2011 Nov 11
2
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...Value *Pointer = Load->getPointer(); > const SCEV *PointerSCEV = SE->getSCEV(Pointer); > const SCEVUnknown *PointerBase = > dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); > > if (!PointerBase) > return 'Analysis failed' > > const Value *BaseValue = PointerBase->getValue(); > > You get the offset between two load addresses with SE->getMinusSCEV(). > The size of an element is SE->getSizeOfExpr(). > The AliasAnalysis class has a set of interfaces that can be used to preserve the analysis even when some things are chan...
2011 Nov 11
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...ointer(); >> const SCEV *PointerSCEV = SE->getSCEV(Pointer); >> const SCEVUnknown *PointerBase = >> dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); >> >> if (!PointerBase) >> return 'Analysis failed' >> >> const Value *BaseValue = PointerBase->getValue(); >> >> You get the offset between two load addresses with SE->getMinusSCEV(). >> The size of an element is SE->getSizeOfExpr(). >> > > The AliasAnalysis class has a set of interfaces that can be used to > preserve the analysis eve...
2011 Nov 18
5
[LLVMdev] How to make Polly ignore some non-affine memory accesses
2011/11/15 Marcello Maggioni <hayarms at gmail.com>: > 2011/11/14 Tobias Grosser <tobias at grosser.es>: >> On 11/14/2011 02:45 PM, Marcello Maggioni wrote: >>> >>> 2011/11/14 Tobias Grosser<tobias at grosser.es>: >>>> >>>> On 11/14/2011 01:24 AM, Marcello Maggioni wrote: >>>>> >>>>> Hi Tobias.
2011 Nov 20
2
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...t;    BasePointer = >> dyn_cast<SCEVUnknown>(SE->getPointerBase(AccessFunction)); >> >>    if (!BasePointer) >> +  { >>      INVALID(AffFunc, "No base pointer"); >> +  } > > This change is unneeded and unrelated. > >> >>    BaseValue = BasePointer->getValue(); >> >> @@ -245,8 +252,9 @@ >> >>    AccessFunction = SE->getMinusSCEV(AccessFunction, BasePointer); >> >> -  if (!isAffineExpr(&Context.CurRegion, AccessFunction, *SE, BaseValue)) >> +  if (!isAffineExpr(&Context.Cur...
2011 Nov 10
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...oad, you would do: LoadInst *Load = ... Value *Pointer = Load->getPointer(); const SCEV *PointerSCEV = SE->getSCEV(Pointer); const SCEVUnknown *PointerBase = dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); if (!PointerBase) return 'Analysis failed' const Value *BaseValue = PointerBase->getValue(); You get the offset between two load addresses with SE->getMinusSCEV(). The size of an element is SE->getSizeOfExpr(). Hope that helps Tobi -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: simple_vec.ll URL...
2011 Nov 11
2
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...terSCEV = SE->getSCEV(Pointer); > >> const SCEVUnknown *PointerBase = > >> dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); > >> > >> if (!PointerBase) > >> return 'Analysis failed' > >> > >> const Value *BaseValue = PointerBase->getValue(); > >> > >> You get the offset between two load addresses with SE->getMinusSCEV(). > >> The size of an element is SE->getSizeOfExpr(). > >> > > > > The AliasAnalysis class has a set of interfaces that can be used to...
2011 Nov 11
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...nterSCEV = SE->getSCEV(Pointer); const SCEVUnknown >>>> *PointerBase = >>>> dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); >>>> >>>> if (!PointerBase) return 'Analysis failed' >>>> >>>> const Value *BaseValue = PointerBase->getValue(); >>>> >>>> You get the offset between two load addresses with >>>> SE->getMinusSCEV(). The size of an element is >>>> SE->getSizeOfExpr(). >>>> >>> >>> The AliasAnalysis class has a set...
2013 Jul 28
0
[LLVMdev] [Polly] Analysis of the expensive compile-time overhead of Polly Dependence pass
...al pattern for this is: if (SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Scev)) { > + const SCEVConstant *c = cast<SCEVConstant>(AR->getOperand(0)); This is obviously a hack. The base is not always a constant. You can probably just call use something like, isl_pw_aff *BaseValue = visit(AR->getOperand(0)) Affine = isl_pw_aff_sum(Affine, BaseValue); > + isl_int t; > + isl_int_init(t); > + isl_int_set_si(t, c->getValue()->getSExtValue()); We now use isl_val instead of isl_int. > return isl_pw_aff_alloc(Domain, Affine); &g...
2013 Jul 29
0
[LLVMdev] [Polly] Analysis of the expensive compile-time overhead of Polly Dependence pass
On 07/29/2013 09:15 AM, Sven Verdoolaege wrote: > On Mon, Jul 29, 2013 at 07:37:14AM -0700, Tobias Grosser wrote: >> On 07/29/2013 03:18 AM, Sven Verdoolaege wrote: >>> On Sun, Jul 28, 2013 at 04:42:25PM -0700, Tobias Grosser wrote: >>>> Sven: In terms of making the behaviour of isl easier to understand, >>>> it may make sense to fail/assert in case
2013 Jul 26
6
[LLVMdev] [Polly] Analysis of the expensive compile-time overhead of Polly Dependence pass
Hi Sebastian, Recently, I found the "Polly - Calculate dependences" pass would lead to significant compile-time overhead when compiling some loop-intensive source code. Tobias told me you found similar problem as follows: http://llvm.org/bugs/show_bug.cgi?id=14240 My evaluation shows that "Polly - Calculate dependences" pass consumes 96.4% of total compile-time overhead
2011 Nov 08
3
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
On Tue, 2011-11-08 at 20:24 +0100, Tobias Grosser wrote: > On 11/08/2011 03:36 PM, Hal Finkel wrote: > > On Tue, 2011-11-08 at 12:12 +0100, Tobias Grosser wrote: > >> On 11/08/2011 11:45 AM, Hal Finkel wrote: > >>> I've attached the latest version of my autovectorization patch. > >>> > >>> Working through the test suite has proved to be a
2011 Nov 21
0
[LLVMdev] How to get ELF section virtual starting address from MCSymbolRefExpr?
...t; ? ?BasePointer = >> dyn_cast<SCEVUnknown>(SE->getPointerBase(AccessFunction)); >> >> ? ?if (!BasePointer) >> + ?{ >> ? ? ?INVALID(AffFunc, "No base pointer"); >> + ?} > > This change is unneeded and unrelated. > >> >> ? ?BaseValue = BasePointer->getValue(); >> >> @@ -245,8 +252,9 @@ >> >> ? ?AccessFunction = SE->getMinusSCEV(AccessFunction, BasePointer); >> >> - ?if (!isAffineExpr(&Context.CurRegion, AccessFunction, *SE, BaseValue)) >> + ?if (!isAffineExpr(&Context.Cur...
2011 Nov 15
3
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...ter); const SCEVUnknown > >>>> *PointerBase = > >>>> dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); > >>>> > >>>> if (!PointerBase) return 'Analysis failed' > >>>> > >>>> const Value *BaseValue = PointerBase->getValue(); > >>>> > >>>> You get the offset between two load addresses with > >>>> SE->getMinusSCEV(). The size of an element is > >>>> SE->getSizeOfExpr(). > >>>> > >>> > >>&gt...
2011 Nov 16
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...gt; >>>> *PointerBase = > > >>>> dyn_cast<SCEVUnknown>(SE->getPointerBase(PointerSCEV)); > > >>>> > > >>>> if (!PointerBase) return 'Analysis failed' > > >>>> > > >>>> const Value *BaseValue = PointerBase->getValue(); > > >>>> > > >>>> You get the offset between two load addresses with > > >>>> SE->getMinusSCEV(). The size of an element is > > >>>> SE->getSizeOfExpr(). > > >>>> > >...