Displaying 8 results from an estimated 8 matches for "loadstorevectorizer".
2019 Apr 28
2
[GSoC] Supporting Efficiently the Shift-vector Instructions of the Connex Vector Processor
...ant thing proposed in the project is
that we plan to perform efficient realignment for this Connex vector processor.
I looked a bit in LLVM and I see that support for realignment of misaligned vector
memory accesses is not implemented in the LoopVectorize pass (see
lib/Transforms/Vectorize/LoadStoreVectorizer.cpp) nor in any back end (folder lib/Target).
Please correct me if I'm wrong.
But realignment is an interesting technique useful for many SIMD and (wide) vector
processors - there are still SIMD processors today that either have performance issues or
simply can't perform misaligned...
2018 Feb 06
2
6 separate instances of static getPointerOperand(). Time to consolidate?
...rn Info.PtrVal;
if (LoadInst *LI = dyn_cast<LoadInst>(Inst)) {
return LI->getPointerOperand();
} else if (StoreInst *SI = dyn_cast<StoreInst>(Inst)) {
return SI->getPointerOperand();
}
return nullptr;
}
------------ Transforms/Vectorize/LoadStoreVectorizer.cpp class Vectorizer
Value *Vectorizer::getPointerOperand(Value *I) const {
if (LoadInst *LI = dyn_cast<LoadInst>(I))
return LI->getPointerOperand();
if (StoreInst *SI = dyn_cast<StoreInst>(I))
return SI->getPointerOperand();
return nullptr;
}
---------- Transf...
2018 Feb 06
0
6 separate instances of static getPointerOperand(). Time to consolidate?
...= dyn_cast<LoadInst>(Inst)) {
> return LI->getPointerOperand();
> } else if (StoreInst *SI = dyn_cast<StoreInst>(Inst)) {
> return SI->getPointerOperand();
> }
> return nullptr;
> }
>
> ------------ Transforms/Vectorize/LoadStoreVectorizer.cpp class Vectorizer
>
> Value *Vectorizer::getPointerOperand(Value *I) const {
> if (LoadInst *LI = dyn_cast<LoadInst>(I))
> return LI->getPointerOperand();
> if (StoreInst *SI = dyn_cast<StoreInst>(I))
> return SI->getPointerOperand();
> re...
2018 Apr 12
0
Loop vectorizer doesn't try to align vectors on preferred vector alignment
..., or would it
>> require a code change ?
>>
>>
>>
>> It’s the latter… there’s indeed room to make LV (and SLP) vectorizers
>> optimize for larger more efficient alignment, using static analysis and/or
>> dynamic peeling/versioning etc.
>>
>> Cf. LoadStoreVectorizer’s use of getOrEnforceKnownAlignment().
>>
>>
>>
>> Ayal.
>>
>>
>>
>>
>>
>> *From:* llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] *On Behalf Of *Mehdi
>> AMINI via llvm-dev
>> *Sent:* Thursday, April 12, 2018 01:39
>&g...
2018 Feb 06
1
6 separate instances of static getPointerOperand(). Time to consolidate?
...= dyn_cast<LoadInst>(Inst)) {
> return LI->getPointerOperand();
> } else if (StoreInst *SI = dyn_cast<StoreInst>(Inst)) {
> return SI->getPointerOperand();
> }
> return nullptr;
> }
>
> ------------ Transforms/Vectorize/LoadStoreVectorizer.cpp class Vectorizer
>
> Value *Vectorizer::getPointerOperand(Value *I) const {
> if (LoadInst *LI = dyn_cast<LoadInst>(I))
> return LI->getPointerOperand();
> if (StoreInst *SI = dyn_cast<StoreInst>(I))
> return SI->getPointerOperand();
> re...
2019 Apr 08
2
[GSoC] Supporting Efficiently the Shift-vector Instructions of the Connex Vector Processor
Hello,
I am applying for Google Summer of Code with a project related to LLVM and Connex SIMD processor and I would appreciate some feedback on the proposal.
The proposal can be found here:
https://docs.google.com/document/d/1pBRbW8pU9GV8zWCJQrILhynNEBpGXJKtev1j7ekXfqs/edit?usp=sharing
Thank you,
Andrei Popa
2018 Apr 11
2
Loop vectorizer doesn't try to align vectors on preferred vector alignment
Hello,
I'm playing around with vectorization in LLVM 6.0.0, and I noticed that
when creating a vector load out of a scalar load, the alignment for the
vector load is defined to be the one of the scalar load. For instance,
16-bit vectors get aligned on 2 bytes. This does not correspond to the
preferred alignment for vectors that I specified in the data layout (which
is bigger).
Inspecting
2018 Jun 21
2
NVPTX - Reordering load instructions
We already have a pass that vectorizes loads and stores in nvptx and
amdgpu. Not at my laptop, I forget the exact filename, but it's called
load-store vectorizer.
I think the question is, why is LSV not vectorizing this code?
I think the answer is, llvm can't tell that the loads are aligned. Ptxas
can, but only because it's (apparently) doing vectorization *after* it
reesolves the