My Project
Public Member Functions | List of all members
mlir::OpConversionPattern< SourceOp > Struct Template Reference

#include <DialectConversion.h>

Inheritance diagram for mlir::OpConversionPattern< SourceOp >:
Inheritance graph
[legend]
Collaboration diagram for mlir::OpConversionPattern< SourceOp >:
Collaboration graph
[legend]

Public Member Functions

 OpConversionPattern (MLIRContext *context, PatternBenefit benefit=1)
 
void rewrite (Operation *op, ArrayRef< Value > operands, ConversionPatternRewriter &rewriter) const final
 
void rewrite (Operation *op, ArrayRef< Value > properOperands, ArrayRef< Block *> destinations, ArrayRef< ArrayRef< Value >> operands, ConversionPatternRewriter &rewriter) const final
 
PatternMatchResult matchAndRewrite (Operation *op, ArrayRef< Value > properOperands, ArrayRef< Block *> destinations, ArrayRef< ArrayRef< Value >> operands, ConversionPatternRewriter &rewriter) const final
 Hook for derived classes to implement combined matching and rewriting. More...
 
PatternMatchResult matchAndRewrite (Operation *op, ArrayRef< Value > operands, ConversionPatternRewriter &rewriter) const final
 Hook for derived classes to implement combined matching and rewriting. More...
 
virtual void rewrite (SourceOp op, ArrayRef< Value > operands, ConversionPatternRewriter &rewriter) const
 
virtual void rewrite (SourceOp op, ArrayRef< Value > properOperands, ArrayRef< Block *> destinations, ArrayRef< ArrayRef< Value >> operands, ConversionPatternRewriter &rewriter) const
 
virtual PatternMatchResult matchAndRewrite (SourceOp op, ArrayRef< Value > properOperands, ArrayRef< Block *> destinations, ArrayRef< ArrayRef< Value >> operands, ConversionPatternRewriter &rewriter) const
 
virtual PatternMatchResult matchAndRewrite (SourceOp op, ArrayRef< Value > operands, ConversionPatternRewriter &rewriter) const
 
- Public Member Functions inherited from mlir::ConversionPattern
 ConversionPattern (StringRef rootName, PatternBenefit benefit, MLIRContext *ctx)
 
PatternMatchResult matchAndRewrite (Operation *op, PatternRewriter &rewriter) const final
 Attempt to match and rewrite the IR root at the specified operation. More...
 
- Public Member Functions inherited from mlir::RewritePattern
virtual void rewrite (Operation *op, std::unique_ptr< PatternState > state, PatternRewriter &rewriter) const
 
virtual void rewrite (Operation *op, PatternRewriter &rewriter) const
 
PatternMatchResult match (Operation *op) const override
 
ArrayRef< OperationNamegetGeneratedOps () const
 
- Public Member Functions inherited from mlir::Pattern
PatternBenefit getBenefit () const
 
OperationName getRootKind () const
 
virtual ~Pattern ()
 
PatternMatchResult matchSuccess (std::unique_ptr< PatternState > state={}) const
 This method indicates that a match was found and has the specified cost. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from mlir::Pattern
static PatternMatchResult matchFailure ()
 This method indicates that no match was found. More...
 
- Protected Member Functions inherited from mlir::RewritePattern
 RewritePattern (StringRef rootName, PatternBenefit benefit, MLIRContext *context)
 
 RewritePattern (StringRef rootName, ArrayRef< StringRef > generatedNames, PatternBenefit benefit, MLIRContext *context)
 
- Protected Member Functions inherited from mlir::Pattern
 Pattern (StringRef rootName, PatternBenefit benefit, MLIRContext *context)
 
- Protected Attributes inherited from mlir::RewritePattern
SmallVector< OperationName, 2 > generatedOps
 

Detailed Description

template<typename SourceOp>
struct mlir::OpConversionPattern< SourceOp >

OpConversionPattern is a wrapper around ConversionPattern that allows for matching and rewriting against an instance of a derived operation class as opposed to a raw Operation.

Constructor & Destructor Documentation

◆ OpConversionPattern()

template<typename SourceOp >
mlir::OpConversionPattern< SourceOp >::OpConversionPattern ( MLIRContext context,
PatternBenefit  benefit = 1 
)
inline

Member Function Documentation

◆ matchAndRewrite() [1/4]

template<typename SourceOp >
PatternMatchResult mlir::OpConversionPattern< SourceOp >::matchAndRewrite ( Operation op,
ArrayRef< Value properOperands,
ArrayRef< Block *>  destinations,
ArrayRef< ArrayRef< Value >>  operands,
ConversionPatternRewriter rewriter 
) const
inlinefinalvirtual

Hook for derived classes to implement combined matching and rewriting.

Reimplemented from mlir::ConversionPattern.

◆ matchAndRewrite() [2/4]

template<typename SourceOp >
PatternMatchResult mlir::OpConversionPattern< SourceOp >::matchAndRewrite ( Operation op,
ArrayRef< Value operands,
ConversionPatternRewriter rewriter 
) const
inlinefinalvirtual

Hook for derived classes to implement combined matching and rewriting.

Reimplemented from mlir::ConversionPattern.

◆ matchAndRewrite() [3/4]

template<typename SourceOp >
virtual PatternMatchResult mlir::OpConversionPattern< SourceOp >::matchAndRewrite ( SourceOp  op,
ArrayRef< Value properOperands,
ArrayRef< Block *>  destinations,
ArrayRef< ArrayRef< Value >>  operands,
ConversionPatternRewriter rewriter 
) const
inlinevirtual

◆ matchAndRewrite() [4/4]

template<typename SourceOp >
virtual PatternMatchResult mlir::OpConversionPattern< SourceOp >::matchAndRewrite ( SourceOp  op,
ArrayRef< Value operands,
ConversionPatternRewriter rewriter 
) const
inlinevirtual

◆ rewrite() [1/4]

template<typename SourceOp >
void mlir::OpConversionPattern< SourceOp >::rewrite ( Operation op,
ArrayRef< Value operands,
ConversionPatternRewriter rewriter 
) const
inlinefinalvirtual

Wrappers around the ConversionPattern methods that pass the derived op type.

Reimplemented from mlir::ConversionPattern.

◆ rewrite() [2/4]

template<typename SourceOp >
void mlir::OpConversionPattern< SourceOp >::rewrite ( Operation op,
ArrayRef< Value properOperands,
ArrayRef< Block *>  destinations,
ArrayRef< ArrayRef< Value >>  operands,
ConversionPatternRewriter rewriter 
) const
inlinefinalvirtual

Hook for derived classes to implement rewriting. op is the (first) operation matched by the pattern, properOperands is a list of rewritten values that are passed to the operation itself, destinations is a list of (potentially rewritten) successor blocks, operands is a list of lists of rewritten values passed to each of the successors, co-indexed with destinations, rewriter can be used to emit the new operations. It must be reimplemented if the ConversionPattern ever needs to replace a terminator operation that has successors. This function should not fail the pass. If some specific cases of the operation are not supported, these cases should not be matched.

Reimplemented from mlir::ConversionPattern.

◆ rewrite() [3/4]

template<typename SourceOp >
virtual void mlir::OpConversionPattern< SourceOp >::rewrite ( SourceOp  op,
ArrayRef< Value operands,
ConversionPatternRewriter rewriter 
) const
inlinevirtual

Rewrite and Match methods that operate on the SourceOp type. These must be overridden by the derived pattern class.

◆ rewrite() [4/4]

template<typename SourceOp >
virtual void mlir::OpConversionPattern< SourceOp >::rewrite ( SourceOp  op,
ArrayRef< Value properOperands,
ArrayRef< Block *>  destinations,
ArrayRef< ArrayRef< Value >>  operands,
ConversionPatternRewriter rewriter 
) const
inlinevirtual

The documentation for this struct was generated from the following file: