MLIR
20.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/Arith/Utils/Utils.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.
Classes | |
struct | InputAndOutputIndices |
Namespaces | |
mlir | |
Include the generated interface declarations. | |
Macros | |
#define | GEN_PASS_DEF_CONVERTLINALGTOAFFINELOOPSPASS |
#define | GEN_PASS_DEF_CONVERTLINALGTOLOOPSPASS |
#define | GEN_PASS_DEF_CONVERTLINALGTOPARALLELLOOPSPASS |
Functions | |
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: More... | |
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. More... | |
template<typename LoopTy > | |
static FailureOr< LinalgLoops > | linalgOpToLoopsImpl (RewriterBase &rewriter, LinalgOp linalgOp) |
|
static |
Emits the MLIR for the scalar part of the generic op by:
op.fun()
that takes as arguments the scalars from point 1. above.An example output may resemble:
Definition at line 128 of file Loops.cpp.
References mlir::OpBuilder::create(), and makeCanonicalAffineApplies().
|
static |
Definition at line 87 of file Loops.cpp.
References makeCanonicalAffineApplies().
|
static |
Definition at line 59 of file Loops.cpp.
References mlir::OpBuilder::clone(), mlir::OpBuilder::create(), mlir::Operation::getOpOperands(), mlir::IRMapping::lookupOrDefault(), and mlir::IRMapping::map().
|
static |
Definition at line 209 of file Loops.cpp.
References mlir::linalg::GenerateLoopNest< LoopTy >::doit().
|
static |
Definition at line 39 of file Loops.cpp.
References mlir::affine::canonicalizeMapAndOperands(), mlir::OpBuilder::create(), mlir::AffineMap::get(), mlir::AffineMap::getNumDims(), mlir::AffineMap::getNumInputs(), mlir::AffineMap::getNumResults(), mlir::AffineMap::getNumSymbols(), mlir::AffineMap::getResults(), and mlir::AffineMap::isEmpty().
Referenced by emitScalarImplementation(), and getInputAndOutputIndices().
|
static |