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().
> >>>>
> >>>
> >>>...
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().
> > >>>>
> >...