MLIR  19.0.0git
Typedefs | Functions
LoopAnalysis.cpp File Reference
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Analysis/SliceAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/AffineAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/AffineStructures.h"
#include "mlir/Dialect/Affine/Analysis/NestedMatcher.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/IR/AffineValueMap.h"
#include "mlir/Support/MathExtras.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include <numeric>
#include <optional>
#include <type_traits>

Go to the source code of this file.

Typedefs

using VectorizableOpFun = std::function< bool(AffineForOp, Operation &)>
 

Functions

static bool isAccessIndexInvariant (Value iv, Value index)
 Given an affine.for iv and an access index of type index, returns true if index is independent of iv and false otherwise. More...
 
template<typename LoadOrStoreOp >
static bool isVectorElement (LoadOrStoreOp memoryOp)
 
static bool isVectorizableLoopBodyWithOpCond (AffineForOp loop, const VectorizableOpFun &isVectorizableOp, NestedPattern &vectorTransferMatcher)
 

Typedef Documentation

◆ VectorizableOpFun

using VectorizableOpFun = std::function<bool(AffineForOp, Operation &)>

Definition at line 248 of file LoopAnalysis.cpp.

Function Documentation

◆ isAccessIndexInvariant()

static bool isAccessIndexInvariant ( Value  iv,
Value  index 
)
static

Given an affine.for iv and an access index of type index, returns true if index is independent of iv and false otherwise.

Prerequisites: iv and index of the proper type;

Definition at line 152 of file LoopAnalysis.cpp.

References mlir::affine::AffineValueMap::composeSimplifyAndCanonicalize(), mlir::Value::getContext(), mlir::AffineMap::getMultiDimIdentityMap(), mlir::Value::getType(), mlir::affine::isAffineForInductionVar(), and mlir::affine::AffineValueMap::isFunctionOf().

Referenced by mlir::affine::getInvariantAccesses(), and mlir::affine::isContiguousAccess().

◆ isVectorElement()

template<typename LoadOrStoreOp >
static bool isVectorElement ( LoadOrStoreOp  memoryOp)
static

Definition at line 243 of file LoopAnalysis.cpp.

◆ isVectorizableLoopBodyWithOpCond()

static bool isVectorizableLoopBodyWithOpCond ( AffineForOp  loop,
const VectorizableOpFun isVectorizableOp,
NestedPattern vectorTransferMatcher 
)
static