Displaying 4 results from an estimated 4 matches for "pointerone".
Did you mean:
interone
2011 Nov 11
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...hen that would be more straightforward.
I assume you want to know if two load addresses are either identical,
have stride one (have a offset of +1) or some other more complicated stuff.
What might work is the following (entirely untested):
LoadInst *LoadOne = ...
LoadInst *LoadTwo = ...
Value *PointerOne = LoadOne->getPointer();
Value *PointerTwo = LoadTwo->getPointer();
const SCEV *PointerOneSCEV = SE->getSCEV(PointerOne);
const SCEV *PointerTwoSCEV = SE->getSCEV(PointerTwo);
// If this is a trivial offset we get something like 1*sizeof(long)
const SCEV *Offset = SE->getMinusSCEV(...
2011 Nov 11
2
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
On Fri, 2011-11-11 at 23:55 +0100, Tobias Grosser wrote:
> On 11/11/2011 11:36 PM, Hal Finkel wrote:
> > On Thu, 2011-11-10 at 23:07 +0100, Tobias Grosser wrote:
> >> On 11/08/2011 11:29 PM, Hal Finkel wrote:
> >> Talking about this I looked again into ScalarEvolution.
> >>
> >> To analyze a load, you would do:
> >>
> >> LoadInst *Load
2011 Nov 15
3
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...I assume you want to know if two load addresses are either identical,
> have stride one (have a offset of +1) or some other more complicated stuff.
>
> What might work is the following (entirely untested):
>
> LoadInst *LoadOne = ...
> LoadInst *LoadTwo = ...
>
> Value *PointerOne = LoadOne->getPointer();
> Value *PointerTwo = LoadTwo->getPointer();
>
> const SCEV *PointerOneSCEV = SE->getSCEV(PointerOne);
> const SCEV *PointerTwoSCEV = SE->getSCEV(PointerTwo);
>
> // If this is a trivial offset we get something like 1*sizeof(long)
> const...
2011 Nov 16
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...ddresses are either identical,
> > have stride one (have a offset of +1) or some other more complicated stuff.
> >
> > What might work is the following (entirely untested):
> >
> > LoadInst *LoadOne = ...
> > LoadInst *LoadTwo = ...
> >
> > Value *PointerOne = LoadOne->getPointer();
> > Value *PointerTwo = LoadTwo->getPointer();
> >
> > const SCEV *PointerOneSCEV = SE->getSCEV(PointerOne);
> > const SCEV *PointerTwoSCEV = SE->getSCEV(PointerTwo);
> >
> > // If this is a trivial offset we get something l...