MLIR  20.0.0git
Classes | Namespaces | Typedefs | Functions
TileUsingInterface.h File Reference
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/Tensor/Transforms/Transforms.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/Interfaces/LoopLikeInterface.h"
#include "mlir/Interfaces/TilingInterface.h"
#include "mlir/Interfaces/ViewLikeInterface.h"
#include "mlir/Rewrite/FrozenRewritePatternSet.h"
#include <deque>

Go to the source code of this file.

Classes

struct  mlir::scf::SCFTilingOptions
 Options to use to control tiling. More...
 
struct  mlir::scf::SCFTilingResult
 Transformation information returned after tiling. More...
 
struct  mlir::scf::SCFTileAndFuseOptions
 Options used to control tile + fuse. More...
 
struct  mlir::scf::SCFTileAndFuseOptions::ControlFnResult
 Control function to check if a slice needs to be fused or not, The control function receives 1) the slice along which fusion is to be done, 2) the producer value that is to be fused 3) a boolean value set to true if the fusion is from a destination operand. More...
 
struct  mlir::scf::SCFFuseProducerOfSliceResult
 Fuse the producer of the source of candidateSliceOp by computing the required slice of the producer in-place. More...
 
struct  mlir::scf::SCFTileAndFuseResult
 Transformation information returned after tile and fuse. More...
 
struct  mlir::scf::SCFFuseConsumerOfSliceResult
 Fuse the consumer of the source of candidateSliceOp by computing the required slice of the consumer in-place. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::scf
 

Typedefs

using mlir::scf::SCFTileSizeComputationFunction = std::function< SmallVector< OpFoldResult >(OpBuilder &, Operation *)>
 

Functions

FailureOr< SCFTilingResult > mlir::scf::tileUsingSCF (RewriterBase &rewriter, TilingInterface op, const SCFTilingOptions &options)
 Method to tile an op that implements the TilingInterface using scf.for for iterating over the tiles. More...
 
std::optional< SCFFuseProducerOfSliceResult > mlir::scf::tileAndFuseProducerOfSlice (RewriterBase &rewriter, tensor::ExtractSliceOp candidateSliceOp, MutableArrayRef< LoopLikeOpInterface > loops)
 Implementation of fusing producer of a single slice by computing the slice of the producer in-place. More...
 
FailureOr< SmallVector< Operation * > > mlir::scf::yieldReplacementForFusedProducer (RewriterBase &rewriter, tensor::ExtractSliceOp sliceOp, scf::SCFFuseProducerOfSliceResult fusedProducerInfo, MutableArrayRef< LoopLikeOpInterface > loops, ArrayRef< unsigned > yieldResultNumber=ArrayRef< unsigned >{})
 Reconstruct the fused producer from within the tiled-and-fused code. More...
 
FailureOr< SCFTileAndFuseResult > mlir::scf::tileConsumerAndFuseProducersUsingSCF (RewriterBase &rewriter, TilingInterface consumer, const SCFTileAndFuseOptions &options)
 Method to tile and fuse a sequence of operations, by tiling the consumer and fusing its producers. More...
 
FailureOr< scf::SCFFuseConsumerOfSliceResultmlir::scf::tileAndFuseConsumerOfSlice (RewriterBase &rewriter, Operation *candidateSliceOp)
 Implementation of fusing consumer of a single slice by computing the slice of the consumer in-place for scf loop. More...
 
FailureOr< SmallVector< scf::ForOp > > mlir::scf::lowerToLoopsUsingSCFForOp (RewriterBase &rewriter, TilingInterface op)
 Method to lower an op that implements the TilingInterface to loops/scalars. More...
 
FailureOr< scf::SCFTilingResultmlir::scf::tileReductionUsingScf (RewriterBase &b, PartialReductionOpInterface op, ArrayRef< OpFoldResult > tileSize)
 Method to tile a reduction and generate a parallel op within a serial loop. More...