MLIR
17.0.0git
|
#include "mlir/Dialect/Affine/Passes.h"
#include "mlir/Dialect/Affine/Analysis/AffineAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/AffineStructures.h"
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Dialect/Affine/Analysis/Utils.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/IR/AffineValueMap.h"
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Affine/Utils.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/IRMapping.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include <optional>
#include "mlir/Dialect/Affine/Passes.h.inc"
Go to the source code of this file.
Namespaces | |
mlir | |
This header declares functions that assit transformations in the MemRef dialect. | |
mlir::affine | |
Macros | |
#define | GEN_PASS_DEF_AFFINELOOPTILING |
#define | DEBUG_TYPE "affine-loop-tile" |
Functions | |
static void | adjustToDivisorsOfTripCounts (ArrayRef< AffineForOp > band, SmallVectorImpl< unsigned > *tileSizes) |
Reduces each tile size to the largest divisor of the corresponding trip count (if the trip count is known). More... | |
static bool | checkTilingLegality (MutableArrayRef< AffineForOp > origLoops) |
Checks whether hyper-rectangular loop tiling of the nest represented by origLoops is valid. More... | |
#define DEBUG_TYPE "affine-loop-tile" |
Definition at line 40 of file LoopTiling.cpp.
#define GEN_PASS_DEF_AFFINELOOPTILING |
Definition at line 32 of file LoopTiling.cpp.
|
static |
Reduces each tile size to the largest divisor of the corresponding trip count (if the trip count is known).
Definition at line 78 of file LoopTiling.cpp.
References mlir::affine::getConstantTripCount().
|
static |
Checks whether hyper-rectangular loop tiling of the nest represented by origLoops
is valid.
The validity condition is from Irigoin and Triolet, which states that two tiles cannot depend on each other. We simplify such condition to just checking whether there is any negative dependence direction, since we have the prior knowledge that the tiling results will be hyper-rectangles, which are scheduled in the lexicographically increasing order on the vector of loop indices. This function will return failure when any dependence component is negative along any of origLoops
.
Definition at line 104 of file LoopTiling.cpp.