NFC: Rename DialectConversionPattern to ConversionPattern.

--

PiperOrigin-RevId: 249857277
This commit is contained in:
River Riddle 2019-05-24 10:36:16 -07:00 committed by Mehdi Amini
parent fe2716aee3
commit ae1651368f
11 changed files with 52 additions and 62 deletions

View File

@ -24,8 +24,8 @@
#include <memory>
namespace mlir {
class ConversionPattern;
class DialectConversion;
class DialectConversionPattern;
class MLIRContext;
class Module;
class RewritePattern;

View File

@ -131,11 +131,10 @@ static ArrayAttr makePositionAttr(FuncBuilder &builder,
}
// RangeOp creates a new range descriptor.
class RangeOpConversion : public DialectConversionPattern {
class RangeOpConversion : public ConversionPattern {
public:
explicit RangeOpConversion(MLIRContext *context)
: DialectConversionPattern(linalg::RangeOp::getOperationName(), 1,
context) {}
: ConversionPattern(linalg::RangeOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -158,11 +157,10 @@ public:
}
};
class ViewOpConversion : public DialectConversionPattern {
class ViewOpConversion : public ConversionPattern {
public:
explicit ViewOpConversion(MLIRContext *context)
: DialectConversionPattern(linalg::ViewOp::getOperationName(), 1,
context) {}
: ConversionPattern(linalg::ViewOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -283,11 +281,10 @@ public:
}
};
class SliceOpConversion : public DialectConversionPattern {
class SliceOpConversion : public ConversionPattern {
public:
explicit SliceOpConversion(MLIRContext *context)
: DialectConversionPattern(linalg::SliceOp::getOperationName(), 1,
context) {}
: ConversionPattern(linalg::SliceOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -375,10 +372,10 @@ public:
// When converting the "some_consumer" operation, don't emit anything and
// effectively drop it.
class DropConsumer : public DialectConversionPattern {
class DropConsumer : public ConversionPattern {
public:
explicit DropConsumer(MLIRContext *context)
: DialectConversionPattern("some_consumer", 1, context) {}
: ConversionPattern("some_consumer", 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {

View File

@ -51,11 +51,10 @@ static ArrayAttr makePositionAttr(FuncBuilder &builder,
namespace {
// Common functionality for Linalg LoadOp and StoreOp conversion to the
// LLVM IR Dialect.
template <typename Op>
class LoadStoreOpConversion : public DialectConversionPattern {
template <typename Op> class LoadStoreOpConversion : public ConversionPattern {
public:
explicit LoadStoreOpConversion(MLIRContext *context)
: DialectConversionPattern(Op::getOperationName(), 1, context) {}
: ConversionPattern(Op::getOperationName(), 1, context) {}
using Base = LoadStoreOpConversion<Op>;
// Compute the pointer to an element of the buffer underlying the view given

View File

@ -77,14 +77,14 @@ Value *memRefTypeCast(FuncBuilder &builder, Value *val) {
/// Lower toy.mul to Linalg `matmul`.
///
/// This class inherit from `DialectConversionPattern` and override `rewrite`,
/// This class inherit from `ConversionPattern` and override `rewrite`,
/// similarly to the PatternRewriter introduced in the previous chapter.
/// It will be called by the DialectConversion framework (see `LateLowering`
/// class below).
class MulOpConversion : public DialectConversionPattern {
class MulOpConversion : public ConversionPattern {
public:
explicit MulOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::MulOp::getOperationName(), 1, context) {}
: ConversionPattern(toy::MulOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {

View File

@ -77,14 +77,14 @@ Value *memRefTypeCast(FuncBuilder &builder, Value *val) {
/// Lower a toy.add to an affine loop nest.
///
/// This class inherit from `DialectConversionPattern` and override `rewrite`,
/// This class inherit from `ConversionPattern` and override `rewrite`,
/// similarly to the PatternRewriter introduced in the previous chapter.
/// It will be called by the DialectConversion framework (see `LateLowering`
/// class below).
class AddOpConversion : public DialectConversionPattern {
class AddOpConversion : public ConversionPattern {
public:
explicit AddOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::AddOp::getOperationName(), 1, context) {}
: ConversionPattern(toy::AddOp::getOperationName(), 1, context) {}
/// Lower the `op` by generating IR using the `rewriter` builder. The builder
/// is setup with a new function, the `operands` array has been populated with
@ -126,11 +126,10 @@ public:
/// Lowers `toy.print` to a loop nest calling `printf` on every individual
/// elements of the array.
class PrintOpConversion : public DialectConversionPattern {
class PrintOpConversion : public ConversionPattern {
public:
explicit PrintOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::PrintOp::getOperationName(), 1, context) {
}
: ConversionPattern(toy::PrintOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -225,11 +224,10 @@ private:
};
/// Lowers constant to a sequence of store in a buffer.
class ConstantOpConversion : public DialectConversionPattern {
class ConstantOpConversion : public ConversionPattern {
public:
explicit ConstantOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::ConstantOp::getOperationName(), 1,
context) {}
: ConversionPattern(toy::ConstantOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -269,11 +267,10 @@ public:
};
/// Lower transpose operation to an affine loop nest.
class TransposeOpConversion : public DialectConversionPattern {
class TransposeOpConversion : public ConversionPattern {
public:
explicit TransposeOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::TransposeOp::getOperationName(), 1,
context) {}
: ConversionPattern(toy::TransposeOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {
@ -302,11 +299,10 @@ public:
};
// Lower toy.return to standard return operation.
class ReturnOpConversion : public DialectConversionPattern {
class ReturnOpConversion : public ConversionPattern {
public:
explicit ReturnOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::ReturnOp::getOperationName(), 1,
context) {}
: ConversionPattern(toy::ReturnOp::getOperationName(), 1, context) {}
void rewrite(Operation *op, ArrayRef<Value *> operands,
PatternRewriter &rewriter) const override {

View File

@ -212,11 +212,11 @@ offset, the min/max values or the strides. Their static (constant) dimensions
are available directly in the type signature.
An operation conversion is defined as special pattern by inheriting from
`mlir::DialectConversionPattern` and by reimplementing the matching and the
rewriting functions:
`mlir::ConversionPattern` and by reimplementing the matching and the rewriting
functions:
```c++
class ViewOpConversion : public DialectConversionPattern {
class ViewOpConversion : public ConversionPattern {
public:
// A conversion constructor, may take arbtirary operands but must be able
// to obtain an MLIRContext from them to call the parent constructor.
@ -237,15 +237,14 @@ public:
}
```
The `DialectConversionPattern` constructor takes, in addition to the context,
the name of the main operation to be matched and the "benefit" of a match. These
operands are intended to be useful for defining an optimization problem across
multiple possible conversions but are currently ignored by the conversion
framework.
The `ConversionPattern` constructor takes, in addition to the context, the name
of the main operation to be matched and the "benefit" of a match. These operands
are intended to be useful for defining an optimization problem across multiple
possible conversions but are currently ignored by the conversion framework.
```c++
ViewOpConversion::ViewOpConversion(MLIRContext *context)
: DialectConversionPattern(linalg::ViewOp::getOperationName(), 1, context) {}
: ConversionPattern(linalg::ViewOp::getOperationName(), 1, context) {}
```
The matching function can be used, for example, to apply different conversions
@ -621,7 +620,7 @@ class Lowering : public DialectConversion {
protected:
// Produce a set of operation conversion patterns. This is called once per
// conversion.
llvm::DenseSet<DialectConversionPattern *>
llvm::DenseSet<ConversionPattern *>
initConverter(MLIRContext *context) override {
allocator.Reset();
// Call a helper function provided by MLIR to build a set of operation

View File

@ -49,7 +49,7 @@ public:
SmallVectorImpl<NamedAttributeList> &convertedArgAttrs) { /*...*/ }
// This gets called once to set up operation converters.
llvm::DenseSet<DialectConversionPattern *>
llvm::DenseSet<ConversionPattern *>
initConverters(MLIRContext *context) override {
RewriteListBuilder<MulOpConversion, PrintOpConversion,
TransposeOpConversion>::build(allocator, context);
@ -65,14 +65,14 @@ Individual operation converters are following this pattern:
```c++
/// Lower a toy.add to an affine loop nest.
///
/// This class inherit from `DialectConversionPattern` and override `rewrite`,
/// This class inherit from `ConversionPattern` and override `rewrite`,
/// similarly to the PatternRewriter introduced in the previous chapter.
/// It will be called by the DialectConversion framework (see `LateLowering`
/// class below).
class AddOpConversion : public DialectConversionPattern {
class AddOpConversion : public ConversionPattern {
public:
explicit AddOpConversion(MLIRContext *context)
: DialectConversionPattern(toy::AddOp::getOperationName(), 1, context) {}
: ConversionPattern(toy::AddOp::getOperationName(), 1, context) {}
/// Lower the `op` by generating IR using the `rewriter` builder. The builder
/// is setup with a new function, the `operands` array has been populated with

View File

@ -135,7 +135,7 @@ private:
/// Base class for operation conversions targeting the LLVM IR dialect. Provides
/// conversion patterns with an access to the containing LLVMLowering for the
/// purpose of type conversions.
class LLVMOpLowering : public DialectConversionPattern {
class LLVMOpLowering : public ConversionPattern {
public:
LLVMOpLowering(StringRef rootOpName, MLIRContext *context,
LLVMLowering &lowering);

View File

@ -36,17 +36,16 @@ class Operation;
class Type;
class Value;
/// Base class for the dialect conversion patterns that require type changes.
/// Specific conversions must derive this class and implement least one
/// `rewrite` method.
/// Base class for the conversion patterns that require type changes. Specific
/// conversions must derive this class and implement least one `rewrite` method.
/// NOTE: These conversion patterns can only be used with the 'apply*' methods
/// below.
class DialectConversionPattern : public RewritePattern {
class ConversionPattern : public RewritePattern {
public:
/// Construct an DialectConversionPattern. `rootName` must correspond to the
/// Construct an ConversionPattern. `rootName` must correspond to the
/// canonical name of the first operation matched by the pattern.
DialectConversionPattern(StringRef rootName, PatternBenefit benefit,
MLIRContext *ctx)
ConversionPattern(StringRef rootName, PatternBenefit benefit,
MLIRContext *ctx)
: RewritePattern(rootName, benefit, ctx) {}
/// Hook for derived classes to implement matching. Dialect conversion
@ -60,7 +59,7 @@ public:
/// operation matched by the pattern, `operands` is a list of rewritten values
/// that are passed to this operation, `rewriter` can be used to emit the new
/// operations. This function must be reimplemented if the
/// DialectConversionPattern ever needs to replace an operation that does not
/// ConversionPattern ever needs to replace an operation that does not
/// have successors. This function should not fail. If some specific cases of
/// the operation are not supported, these cases should not be matched.
virtual void rewrite(Operation *op, ArrayRef<Value *> operands,
@ -74,7 +73,7 @@ public:
/// 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 DialectConversionPattern ever needs to replace a
/// 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.

View File

@ -185,7 +185,7 @@ static Type getMemRefElementPtrType(MemRefType t, LLVMLowering &lowering) {
LLVMOpLowering::LLVMOpLowering(StringRef rootOpName, MLIRContext *context,
LLVMLowering &lowering_)
: DialectConversionPattern(rootOpName, /*benefit=*/1, context),
: ConversionPattern(rootOpName, /*benefit=*/1, context),
lowering(lowering_) {}
namespace {

View File

@ -90,7 +90,7 @@ constexpr StringLiteral ArgConverter::kCastName;
// DialectConversionRewriter
//===----------------------------------------------------------------------===//
/// This class implements a pattern rewriter for DialectConversionPattern
/// This class implements a pattern rewriter for ConversionPattern
/// patterns. It automatically performs remapping of replaced operation values.
struct DialectConversionRewriter final : public PatternRewriter {
/// This class represents one requested operation replacement via 'replaceOp'.
@ -182,15 +182,15 @@ struct DialectConversionRewriter final : public PatternRewriter {
} // end anonymous namespace
//===----------------------------------------------------------------------===//
// DialectConversionPattern
// ConversionPattern
//===----------------------------------------------------------------------===//
/// Rewrite the IR rooted at the specified operation with the result of this
/// pattern. If an unexpected error is encountered (an internal compiler
/// error), it is emitted through the normal MLIR diagnostic hooks and the IR is
/// left in a valid state.
void DialectConversionPattern::rewrite(Operation *op,
PatternRewriter &rewriter) const {
void ConversionPattern::rewrite(Operation *op,
PatternRewriter &rewriter) const {
SmallVector<Value *, 4> operands;
auto &dialectRewriter = static_cast<DialectConversionRewriter &>(rewriter);
dialectRewriter.remapValues(op->getOperands(), operands);