MLIR
20.0.0git
|
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Arith/Utils/Utils.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/SCF/Transforms/Patterns.h"
#include "mlir/Dialect/SCF/Transforms/Transforms.h"
#include "mlir/Dialect/SCF/Utils/Utils.h"
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
#include "mlir/Dialect/Transform/IR/TransformOps.h"
#include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
#include "mlir/Dialect/Utils/StaticValueUtils.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/Dominance.h"
#include "mlir/IR/OpDefinition.h"
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.cpp.inc"
Go to the source code of this file.
Macros | |
#define | GET_OP_LIST |
#define | GET_OP_CLASSES |
Functions | |
static scf::ExecuteRegionOp | wrapInExecuteRegion (RewriterBase &b, Operation *op) |
Wraps the given operation op into an scf.execute_region operation. More... | |
static void | loopScheduling (scf::ForOp forOp, std::vector< std::pair< Operation *, unsigned >> &schedule, unsigned iterationInterval, unsigned readLatency) |
Callback for PipeliningOption. More... | |
static void | replaceOpWithRegion (RewriterBase &rewriter, Operation *op, Region ®ion) |
Replaces the given op with the contents of the given single-block region, using the operands of the block terminator to replace operation results. More... | |
static DiagnosedSilenceableFailure | isOpSibling (Operation *target, Operation *source) |
Check if target and source are siblings, in the context that target is being fused into source . More... | |
static bool | isForallWithIdenticalConfiguration (Operation *target, Operation *source) |
Check if target scf.forall can be fused into source scf.forall. More... | |
static bool | isForWithIdenticalConfiguration (Operation *target, Operation *source) |
Check if target scf.for can be fused into source scf.for. More... | |
#define GET_OP_CLASSES |
Definition at line 632 of file SCFTransformOps.cpp.
#define GET_OP_LIST |
Check if target
scf.forall can be fused into source
scf.forall.
This simply checks if both loops have the same bounds, steps and mapping. No attempt is made at checking that the side effects of target
and source
are independent of each other.
Definition at line 536 of file SCFTransformOps.cpp.
Check if target
scf.for can be fused into source
scf.for.
This simply checks if both loops have the same bounds and steps. No attempt is made at checking that the side effects of target
and source
are independent of each other.
Definition at line 554 of file SCFTransformOps.cpp.
|
static |
Check if target
and source
are siblings, in the context that target
is being fused into source
.
This is a simple check that just checks if both operations are in the same block and some checks to ensure that the fused IR does not violate dominance.
Definition at line 465 of file SCFTransformOps.cpp.
References mlir::emitSilenceableFailure(), mlir::Operation::getBlock(), mlir::Operation::getOperands(), mlir::Operation::getRegions(), mlir::Operation::getUsers(), mlir::Operation::isBeforeInBlock(), mlir::DominanceInfo::properlyDominates(), and mlir::visitUsedValuesDefinedAbove().
|
static |
Callback for PipeliningOption.
Populates schedule
with the mapping from an operation to its logical time position given the iteration interval and the read latency. The latter is only relevant for vector transfers.
Definition at line 262 of file SCFTransformOps.cpp.
References mlir::getConstantIntValue(), max(), and min().
|
static |
Replaces the given op with the contents of the given single-block region, using the operands of the block terminator to replace operation results.
Definition at line 422 of file SCFTransformOps.cpp.
References mlir::RewriterBase::eraseOp(), mlir::Region::front(), mlir::Operation::getOperands(), mlir::Block::getTerminator(), mlir::RewriterBase::inlineBlockBefore(), and mlir::RewriterBase::replaceOp().
|
static |
Wraps the given operation op
into an scf.execute_region
operation.
Uses the provided rewriter for all operations to remain compatible with the rewriting infra, as opposed to just splicing the op in place.
Definition at line 159 of file SCFTransformOps.cpp.
References mlir::OpBuilder::cloneWithoutRegions(), mlir::OpBuilder::create(), mlir::Region::empty(), mlir::Region::end(), mlir::Operation::getLoc(), mlir::Operation::getNumRegions(), mlir::Operation::getRegions(), mlir::Operation::getResults(), mlir::Operation::getResultTypes(), mlir::RewriterBase::inlineRegionBefore(), mlir::RewriterBase::replaceOp(), mlir::OpBuilder::setInsertionPoint(), and mlir::OpBuilder::setInsertionPointToStart().