LLVM 17.0.0git
|
#include "llvm/ADT/EquivalenceClasses.h"
#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/Pass.h"
#include <optional>
Go to the source code of this file.
Classes | |
struct | llvm::VectorizerParams |
Collection of parameters shared beetween the Loop Vectorizer and the Loop Access Analysis. More... | |
class | llvm::MemoryDepChecker |
Checks memory dependences among accesses to the same underlying object to determine whether there vectorization is legal or not (and at which vectorization factor). More... | |
struct | llvm::MemoryDepChecker::Dependence |
Dependece between memory access instructions. More... | |
struct | llvm::RuntimeCheckingPtrGroup |
A grouping of pointers. More... | |
struct | llvm::PointerDiffInfo |
class | llvm::RuntimePointerChecking |
Holds information about the memory runtime legality checks to verify that a group of pointers do not overlap. More... | |
struct | llvm::RuntimePointerChecking::PointerInfo |
class | llvm::LoopAccessInfo |
Drive the analysis of memory accesses in the loop. More... | |
class | llvm::LoopAccessInfoManager |
class | llvm::LoopAccessLegacyAnalysis |
This analysis provides dependence information for the memory accesses of a loop. More... | |
class | llvm::LoopAccessAnalysis |
This analysis provides dependence information for the memory accesses of a loop. More... | |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Typedefs | |
typedef std::pair< const RuntimeCheckingPtrGroup *, const RuntimeCheckingPtrGroup * > | llvm::RuntimePointerCheck |
A memcheck which made up of a pair of grouped pointers. | |
Functions | |
Value * | llvm::stripIntegerCast (Value *V) |
const SCEV * | llvm::replaceSymbolicStrideSCEV (PredicatedScalarEvolution &PSE, const DenseMap< Value *, const SCEV * > &PtrToStride, Value *Ptr) |
Return the SCEV corresponding to a pointer with the symbolic stride replaced with constant one, assuming the SCEV predicate associated with PSE is true. | |
std::optional< int64_t > | llvm::getPtrStride (PredicatedScalarEvolution &PSE, Type *AccessTy, Value *Ptr, const Loop *Lp, const DenseMap< Value *, const SCEV * > &StridesMap=DenseMap< Value *, const SCEV * >(), bool Assume=false, bool ShouldCheckWrap=true) |
If the pointer has a constant stride return it in units of the access type size. | |
std::optional< int > | llvm::getPointersDiff (Type *ElemTyA, Value *PtrA, Type *ElemTyB, Value *PtrB, const DataLayout &DL, ScalarEvolution &SE, bool StrictCheck=false, bool CheckType=true) |
Returns the distance between the pointers PtrA and PtrB iff they are compatible and it is possible to calculate the distance between them. | |
bool | llvm::sortPtrAccesses (ArrayRef< Value * > VL, Type *ElemTy, const DataLayout &DL, ScalarEvolution &SE, SmallVectorImpl< unsigned > &SortedIndices) |
Attempt to sort the pointers in VL and return the sorted indices in SortedIndices , if reordering is required. | |
bool | llvm::isConsecutiveAccess (Value *A, Value *B, const DataLayout &DL, ScalarEvolution &SE, bool CheckType=true) |
Returns true if the memory operations A and B are consecutive. | |