search for: loadstorevectorizer

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