|
MLIR
22.0.0git
|
#include "mlir/Dialect/Linalg/Transforms/Hoisting.h"#include "mlir/Analysis/SliceAnalysis.h"#include "mlir/Dialect/Affine/Analysis/AffineStructures.h"#include "mlir/Dialect/Affine/IR/AffineOps.h"#include "mlir/Dialect/Affine/Utils.h"#include "mlir/Dialect/Linalg/Transforms/Transforms.h"#include "mlir/Dialect/SCF/IR/SCF.h"#include "mlir/Dialect/SCF/Utils/Utils.h"#include "mlir/Dialect/Vector/IR/VectorOps.h"#include "mlir/Dialect/Vector/Utils/VectorUtils.h"#include "mlir/IR/Dominance.h"#include "mlir/Transforms/LoopInvariantCodeMotionUtils.h"#include "llvm/Support/Debug.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "linalg-hoisting" |
| #define | DBGS() (dbgs() << '[' << DEBUG_TYPE << "] ") |
Functions | |
| static scf::ForOp | replaceWithDifferentYield (RewriterBase &rewriter, scf::ForOp loop, Value newInitOperand, unsigned index, Value newYieldValue) |
Replace loop with a new loop that has a different init operand at position index. More... | |
| static bool | noAliasingUseInLoop (vector::TransferReadOp transferRead, LoopLikeOpInterface loop) |
| #define DBGS | ( | ) | (dbgs() << '[' << DEBUG_TYPE << "] ") |
Definition at line 32 of file Hoisting.cpp.
| #define DEBUG_TYPE "linalg-hoisting" |
Definition at line 30 of file Hoisting.cpp.
|
static |
Definition at line 164 of file Hoisting.cpp.
References mlir::Value::getDefiningOp(), mlir::Value::getUsers(), and mlir::isMemoryEffectFree().
Referenced by mlir::linalg::hoistRedundantVectorTransfers().
|
static |
Replace loop with a new loop that has a different init operand at position index.
The body of this loop is moved over to the new loop.
newInitOperands specifies the replacement "init" operands. newYieldValue is the replacement yield value of the loop at position index.
Definition at line 43 of file Hoisting.cpp.
References mlir::RewriterBase::mergeBlocks(), mlir::RewriterBase::replaceOp(), and mlir::OpBuilder::setInsertionPoint().
Referenced by mlir::linalg::hoistRedundantVectorBroadcasts().