|
MLIR 22.0.0git
|
#include "mlir/Dialect/Linalg/Passes.h"#include "mlir/Dialect/Affine/IR/AffineOps.h"#include "mlir/Dialect/Arith/IR/Arith.h"#include "mlir/Dialect/Func/IR/FuncOps.h"#include "mlir/Dialect/Linalg/IR/Linalg.h"#include "mlir/Dialect/Linalg/Transforms/Transforms.h"#include "mlir/Dialect/Linalg/Utils/Utils.h"#include "mlir/Dialect/SCF/Transforms/Transforms.h"#include "mlir/Dialect/SCF/Utils/AffineCanonicalizationUtils.h"#include "mlir/IR/AffineExpr.h"#include "mlir/IR/AffineMap.h"#include "mlir/IR/IRMapping.h"#include "mlir/Support/LLVM.h"#include "mlir/Transforms/DialectConversion.h"#include "mlir/Transforms/FoldUtils.h"#include "mlir/Transforms/GreedyPatternRewriteDriver.h"#include "llvm/ADT/TypeSwitch.h"#include "mlir/Dialect/Linalg/Passes.h.inc"Go to the source code of this file.
Namespaces | |
| namespace | mlir |
| Include the generated interface declarations. | |
| namespace | mlir::impl |
| Attribute collections provide a dictionary-like interface. | |
Macros | |
| #define | GEN_PASS_DEF_CONVERTLINALGTOAFFINELOOPSPASS |
| #define | GEN_PASS_DEF_CONVERTLINALGTOLOOPSPASS |
| #define | GEN_PASS_DEF_CONVERTLINALGTOPARALLELLOOPSPASS |
Functions | |
| std::unique_ptr<::mlir::Pass > | mlir::impl::createConvertLinalgToAffineLoopsPass () |
| std::unique_ptr<::mlir::Pass > | mlir::createConvertLinalgToAffineLoopsPass () |
| std::unique_ptr<::mlir::Pass > | mlir::impl::createConvertLinalgToLoopsPass () |
| std::unique_ptr<::mlir::Pass > | mlir::createConvertLinalgToLoopsPass () |
| std::unique_ptr<::mlir::Pass > | mlir::impl::createConvertLinalgToParallelLoopsPass () |
| std::unique_ptr<::mlir::Pass > | mlir::createConvertLinalgToParallelLoopsPass () |
| static SmallVector< Value > | makeCanonicalAffineApplies (OpBuilder &b, Location loc, AffineMap map, ArrayRef< Value > vals) |
| template<typename LoadOpTy, typename StoreOpTy, typename OpType> | |
| static void | inlineRegionAndEmitStore (OpBuilder &b, Location loc, OpType op, ArrayRef< Value > indexedValues, ArrayRef< SmallVector< Value > > indexing, ArrayRef< Value > outputBuffers) |
| template<typename SingleInputPoolingOp> | |
| static InputAndOutputIndices | getInputAndOutputIndices (OpBuilder &b, Location loc, ArrayRef< Value > allIvs, SingleInputPoolingOp op) |
| template<typename LoadOpTy, typename StoreOpTy> | |
| static void | emitScalarImplementation (OpBuilder &b, Location loc, ArrayRef< Value > allIvs, LinalgOp linalgOp) |
| Emits the MLIR for the scalar part of the generic op by: | |
| static void | replaceIndexOpsByInductionVariables (RewriterBase &rewriter, LinalgOp linalgOp, ArrayRef< Operation * > loopOps) |
| Replace the index operations in the body of the loop nest by the matching induction variables. | |
| template<typename LoopTy> | |
| static FailureOr< LinalgLoops > | linalgOpToLoopsImpl (RewriterBase &rewriter, LinalgOp linalgOp) |
|
static |
Emits the MLIR for the scalar part of the generic op by:
An example output may resemble:
Definition at line 128 of file Loops.cpp.
References b.
|
static |
Definition at line 87 of file Loops.cpp.
References b, and makeCanonicalAffineApplies().
|
static |
Definition at line 58 of file Loops.cpp.
References b, mlir::Operation::getOpOperands(), mlir::IRMapping::lookupOrDefault(), and mlir::IRMapping::map().
|
static |
Definition at line 209 of file Loops.cpp.
Referenced by mlir::linalg::linalgOpToAffineLoops(), mlir::linalg::linalgOpToLoops(), and mlir::linalg::linalgOpToParallelLoops().
|
static |
Definition at line 38 of file Loops.cpp.
References b, mlir::affine::canonicalizeMapAndOperands(), mlir::AffineMap::get(), mlir::AffineMap::getNumDims(), mlir::AffineMap::getNumInputs(), mlir::AffineMap::getNumResults(), mlir::AffineMap::getNumSymbols(), mlir::AffineMap::getResults(), and mlir::AffineMap::isEmpty().
Referenced by mlir::impl::ConvertLinalgToAffineLoopsPassBase< DerivedT >::createConvertLinalgToAffineLoopsPass, and getInputAndOutputIndices().