MLIR
18.0.0git
|
This class implements a pattern rewriter for use with ConversionPatterns. More...
#include "mlir/Transforms/DialectConversion.h"
Public Member Functions | |
ConversionPatternRewriter (MLIRContext *ctx) | |
~ConversionPatternRewriter () override | |
Block * | applySignatureConversion (Region *region, TypeConverter::SignatureConversion &conversion, const TypeConverter *converter=nullptr) |
Apply a signature conversion to the entry block of the given region. More... | |
FailureOr< Block * > | convertRegionTypes (Region *region, const TypeConverter &converter, TypeConverter::SignatureConversion *entryConversion=nullptr) |
Convert the types of block arguments within the given region. More... | |
LogicalResult | convertNonEntryRegionTypes (Region *region, const TypeConverter &converter, ArrayRef< TypeConverter::SignatureConversion > blockConversions) |
Convert the types of block arguments within the given region except for the entry region. More... | |
void | replaceUsesOfBlockArgument (BlockArgument from, Value to) |
Replace all the uses of the block argument from with value to . More... | |
Value | getRemappedValue (Value key) |
Return the converted value of 'key' with a type defined by the type converter of the currently executing pattern. More... | |
LogicalResult | getRemappedValues (ValueRange keys, SmallVectorImpl< Value > &results) |
Return the converted values that replace 'keys' with types defined by the type converter of the currently executing pattern. More... | |
bool | canRecoverFromRewriteFailure () const override |
Indicate that the conversion rewriter can recover from rewrite failure. More... | |
void | replaceOpWithIf (Operation *op, ValueRange newValues, bool *allUsesReplaced, llvm::unique_function< bool(OpOperand &) const > functor) override |
PatternRewriter hook for replacing an operation when the given functor returns "true". More... | |
void | replaceOp (Operation *op, ValueRange newValues) override |
PatternRewriter hook for replacing an operation. More... | |
void | replaceOp (Operation *op, Operation *newOp) override |
PatternRewriter hook for replacing an operation. More... | |
void | eraseOp (Operation *op) override |
PatternRewriter hook for erasing a dead operation. More... | |
void | eraseBlock (Block *block) override |
PatternRewriter hook for erase all operations in a block. More... | |
void | notifyBlockCreated (Block *block) override |
PatternRewriter hook creating a new block. More... | |
Block * | splitBlock (Block *block, Block::iterator before) override |
PatternRewriter hook for splitting a block into two parts. More... | |
void | inlineBlockBefore (Block *source, Block *dest, Block::iterator before, ValueRange argValues=std::nullopt) override |
PatternRewriter hook for inlining the ops of a block into another block. More... | |
void | inlineRegionBefore (Region ®ion, Region &parent, Region::iterator before) override |
PatternRewriter hook for moving blocks out of a region. More... | |
void | cloneRegionBefore (Region ®ion, Region &parent, Region::iterator before, IRMapping &mapping) override |
PatternRewriter hook for cloning blocks of one region into another. More... | |
void | notifyOperationInserted (Operation *op) override |
PatternRewriter hook for inserting a new operation. More... | |
void | startRootUpdate (Operation *op) override |
PatternRewriter hook for updating the root operation in-place. More... | |
void | finalizeRootUpdate (Operation *op) override |
PatternRewriter hook for updating the root operation in-place. More... | |
void | cancelRootUpdate (Operation *op) override |
PatternRewriter hook for updating the root operation in-place. More... | |
LogicalResult | notifyMatchFailure (Location loc, function_ref< void(Diagnostic &)> reasonCallback) override |
PatternRewriter hook for notifying match failure reasons. More... | |
detail::ConversionPatternRewriterImpl & | getImpl () |
Return a reference to the internal implementation. More... | |
![]() | |
RewriterBase (MLIRContext *ctx, OpBuilder::Listener *listener=nullptr) | |
Initialize the builder. More... | |
RewriterBase (const OpBuilder &otherBuilder) | |
![]() | |
void | inlineRegionBefore (Region ®ion, Block *before) |
void | cloneRegionBefore (Region ®ion, Region &parent, Region::iterator before) |
void | cloneRegionBefore (Region ®ion, Block *before) |
void | replaceOpWithIf (Operation *op, ValueRange newValues, llvm::unique_function< bool(OpOperand &) const > functor) |
void | replaceOpWithinBlock (Operation *op, ValueRange newValues, Block *block, bool *allUsesReplaced=nullptr) |
This method replaces the uses of the results of op with the values in newValues when a use is nested within the given block . More... | |
template<typename OpTy , typename... Args> | |
OpTy | replaceOpWithNewOp (Operation *op, Args &&...args) |
Replaces the result op with a new op that is created without verification. More... | |
void | inlineBlockBefore (Block *source, Operation *op, ValueRange argValues=std::nullopt) |
Inline the operations of block 'source' before the operation 'op'. More... | |
void | mergeBlocks (Block *source, Block *dest, ValueRange argValues=std::nullopt) |
Inline the operations of block 'source' into the end of block 'dest'. More... | |
template<typename CallableT > | |
void | updateRootInPlace (Operation *root, CallableT &&callable) |
This method is a utility wrapper around a root update of an operation. More... | |
void | replaceAllUsesWith (Value from, Value to) |
Find uses of from and replace them with to . More... | |
template<typename OperandType , typename ValueT > | |
void | replaceAllUsesWith (IRObjectWithUseList< OperandType > *from, ValueT &&to) |
void | replaceAllUsesWith (ValueRange from, ValueRange to) |
void | replaceUsesWithIf (Value from, Value to, function_ref< bool(OpOperand &)> functor) |
Find uses of from and replace them with to if the functor returns true. More... | |
void | replaceUsesWithIf (ValueRange from, ValueRange to, function_ref< bool(OpOperand &)> functor) |
void | replaceAllUsesExcept (Value from, Value to, Operation *exceptedUser) |
Find uses of from and replace them with to except if the user is exceptedUser . More... | |
template<typename CallbackT > | |
std::enable_if_t<!std::is_convertible< CallbackT, Twine >::value, LogicalResult > | notifyMatchFailure (Location loc, CallbackT &&reasonCallback) |
Used to notify the rewriter that the IR failed to be rewritten because of a match failure, and provide a callback to populate a diagnostic with the reason why the failure occurred. More... | |
template<typename CallbackT > | |
std::enable_if_t<!std::is_convertible< CallbackT, Twine >::value, LogicalResult > | notifyMatchFailure (Operation *op, CallbackT &&reasonCallback) |
template<typename ArgT > | |
LogicalResult | notifyMatchFailure (ArgT &&arg, const Twine &msg) |
template<typename ArgT > | |
LogicalResult | notifyMatchFailure (ArgT &&arg, const char *msg) |
![]() | |
OpBuilder (MLIRContext *ctx, Listener *listener=nullptr) | |
Create a builder with the given context. More... | |
OpBuilder (Region *region, Listener *listener=nullptr) | |
Create a builder and set the insertion point to the start of the region. More... | |
OpBuilder (Region ®ion, Listener *listener=nullptr) | |
OpBuilder (Operation *op, Listener *listener=nullptr) | |
Create a builder and set insertion point to the given operation, which will cause subsequent insertions to go right before it. More... | |
OpBuilder (Block *block, Block::iterator insertPoint, Listener *listener=nullptr) | |
void | setListener (Listener *newListener) |
Sets the listener of this builder to the one provided. More... | |
Listener * | getListener () const |
Returns the current listener of this builder, or nullptr if this builder doesn't have a listener. More... | |
void | clearInsertionPoint () |
Reset the insertion point to no location. More... | |
InsertPoint | saveInsertionPoint () const |
Return a saved insertion point. More... | |
void | restoreInsertionPoint (InsertPoint ip) |
Restore the insert point to a previously saved point. More... | |
void | setInsertionPoint (Block *block, Block::iterator insertPoint) |
Set the insertion point to the specified location. More... | |
void | setInsertionPoint (Operation *op) |
Sets the insertion point to the specified operation, which will cause subsequent insertions to go right before it. More... | |
void | setInsertionPointAfter (Operation *op) |
Sets the insertion point to the node after the specified operation, which will cause subsequent insertions to go right after it. More... | |
void | setInsertionPointAfterValue (Value val) |
Sets the insertion point to the node after the specified value. More... | |
void | setInsertionPointToStart (Block *block) |
Sets the insertion point to the start of the specified block. More... | |
void | setInsertionPointToEnd (Block *block) |
Sets the insertion point to the end of the specified block. More... | |
Block * | getInsertionBlock () const |
Return the block the current insertion point belongs to. More... | |
Block::iterator | getInsertionPoint () const |
Returns the current insertion point of the builder. More... | |
Block * | getBlock () const |
Returns the current block of the builder. More... | |
Block * | createBlock (Region *parent, Region::iterator insertPt={}, TypeRange argTypes=std::nullopt, ArrayRef< Location > locs=std::nullopt) |
Add new block with 'argTypes' arguments and set the insertion point to the end of it. More... | |
Block * | createBlock (Block *insertBefore, TypeRange argTypes=std::nullopt, ArrayRef< Location > locs=std::nullopt) |
Add new block with 'argTypes' arguments and set the insertion point to the end of it. More... | |
Operation * | insert (Operation *op) |
Insert the given operation at the current insertion point and return it. More... | |
Operation * | create (const OperationState &state) |
Creates an operation given the fields represented as an OperationState. More... | |
Operation * | create (Location loc, StringAttr opName, ValueRange operands, TypeRange types={}, ArrayRef< NamedAttribute > attributes={}, BlockRange successors={}, MutableArrayRef< std::unique_ptr< Region >> regions={}) |
Creates an operation with the given fields. More... | |
template<typename OpTy , typename... Args> | |
OpTy | create (Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point. More... | |
template<typename OpTy , typename... Args> | |
void | createOrFold (SmallVectorImpl< Value > &results, Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point, and immediately try to fold it. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::OneResult >), Value > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a single result operation. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::ZeroResults >), OpTy > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a zero result operation. More... | |
LogicalResult | tryFold (Operation *op, SmallVectorImpl< Value > &results) |
Attempts to fold the given operation and places new results within 'results'. More... | |
Operation * | clone (Operation &op, IRMapping &mapper) |
Creates a deep copy of the specified operation, remapping any operands that use values outside of the operation using the map that is provided ( leaving them alone if no entry is present). More... | |
Operation * | clone (Operation &op) |
Operation * | cloneWithoutRegions (Operation &op, IRMapping &mapper) |
Creates a deep copy of this operation but keep the operation regions empty. More... | |
Operation * | cloneWithoutRegions (Operation &op) |
template<typename OpT > | |
OpT | cloneWithoutRegions (OpT op) |
![]() | |
Builder (MLIRContext *context) | |
Builder (Operation *op) | |
MLIRContext * | getContext () const |
Location | getUnknownLoc () |
Location | getFusedLoc (ArrayRef< Location > locs, Attribute metadata=Attribute()) |
FloatType | getFloat8E5M2Type () |
FloatType | getFloat8E4M3FNType () |
FloatType | getFloat8E5M2FNUZType () |
FloatType | getFloat8E4M3FNUZType () |
FloatType | getFloat8E4M3B11FNUZType () |
FloatType | getBF16Type () |
FloatType | getF16Type () |
FloatType | getTF32Type () |
FloatType | getF32Type () |
FloatType | getF64Type () |
FloatType | getF80Type () |
FloatType | getF128Type () |
IndexType | getIndexType () |
IntegerType | getI1Type () |
IntegerType | getI2Type () |
IntegerType | getI4Type () |
IntegerType | getI8Type () |
IntegerType | getI16Type () |
IntegerType | getI32Type () |
IntegerType | getI64Type () |
IntegerType | getIntegerType (unsigned width) |
IntegerType | getIntegerType (unsigned width, bool isSigned) |
FunctionType | getFunctionType (TypeRange inputs, TypeRange results) |
TupleType | getTupleType (TypeRange elementTypes) |
NoneType | getNoneType () |
template<typename Ty , typename... Args> | |
Ty | getType (Args &&...args) |
Get or construct an instance of the type Ty with provided arguments. More... | |
template<typename Attr , typename... Args> | |
Attr | getAttr (Args &&...args) |
Get or construct an instance of the attribute Attr with provided arguments. More... | |
NamedAttribute | getNamedAttr (StringRef name, Attribute val) |
UnitAttr | getUnitAttr () |
BoolAttr | getBoolAttr (bool value) |
DictionaryAttr | getDictionaryAttr (ArrayRef< NamedAttribute > value) |
IntegerAttr | getIntegerAttr (Type type, int64_t value) |
IntegerAttr | getIntegerAttr (Type type, const APInt &value) |
FloatAttr | getFloatAttr (Type type, double value) |
FloatAttr | getFloatAttr (Type type, const APFloat &value) |
StringAttr | getStringAttr (const Twine &bytes) |
ArrayAttr | getArrayAttr (ArrayRef< Attribute > value) |
TypedAttr | getZeroAttr (Type type) |
FloatAttr | getF16FloatAttr (float value) |
FloatAttr | getF32FloatAttr (float value) |
FloatAttr | getF64FloatAttr (double value) |
IntegerAttr | getI8IntegerAttr (int8_t value) |
IntegerAttr | getI16IntegerAttr (int16_t value) |
IntegerAttr | getI32IntegerAttr (int32_t value) |
IntegerAttr | getI64IntegerAttr (int64_t value) |
IntegerAttr | getIndexAttr (int64_t value) |
IntegerAttr | getSI32IntegerAttr (int32_t value) |
Signed and unsigned integer attribute getters. More... | |
IntegerAttr | getUI32IntegerAttr (uint32_t value) |
DenseIntElementsAttr | getBoolVectorAttr (ArrayRef< bool > values) |
Vector-typed DenseIntElementsAttr getters. values must not be empty. More... | |
DenseIntElementsAttr | getI32VectorAttr (ArrayRef< int32_t > values) |
DenseIntElementsAttr | getI64VectorAttr (ArrayRef< int64_t > values) |
DenseIntElementsAttr | getIndexVectorAttr (ArrayRef< int64_t > values) |
DenseFPElementsAttr | getF32VectorAttr (ArrayRef< float > values) |
DenseFPElementsAttr | getF64VectorAttr (ArrayRef< double > values) |
DenseIntElementsAttr | getI32TensorAttr (ArrayRef< int32_t > values) |
Tensor-typed DenseIntElementsAttr getters. More... | |
DenseIntElementsAttr | getI64TensorAttr (ArrayRef< int64_t > values) |
DenseIntElementsAttr | getIndexTensorAttr (ArrayRef< int64_t > values) |
DenseBoolArrayAttr | getDenseBoolArrayAttr (ArrayRef< bool > values) |
Tensor-typed DenseArrayAttr getters. More... | |
DenseI8ArrayAttr | getDenseI8ArrayAttr (ArrayRef< int8_t > values) |
DenseI16ArrayAttr | getDenseI16ArrayAttr (ArrayRef< int16_t > values) |
DenseI32ArrayAttr | getDenseI32ArrayAttr (ArrayRef< int32_t > values) |
DenseI64ArrayAttr | getDenseI64ArrayAttr (ArrayRef< int64_t > values) |
DenseF32ArrayAttr | getDenseF32ArrayAttr (ArrayRef< float > values) |
DenseF64ArrayAttr | getDenseF64ArrayAttr (ArrayRef< double > values) |
ArrayAttr | getAffineMapArrayAttr (ArrayRef< AffineMap > values) |
ArrayAttr | getBoolArrayAttr (ArrayRef< bool > values) |
ArrayAttr | getI32ArrayAttr (ArrayRef< int32_t > values) |
ArrayAttr | getI64ArrayAttr (ArrayRef< int64_t > values) |
ArrayAttr | getIndexArrayAttr (ArrayRef< int64_t > values) |
ArrayAttr | getF32ArrayAttr (ArrayRef< float > values) |
ArrayAttr | getF64ArrayAttr (ArrayRef< double > values) |
ArrayAttr | getStrArrayAttr (ArrayRef< StringRef > values) |
ArrayAttr | getTypeArrayAttr (TypeRange values) |
AffineExpr | getAffineDimExpr (unsigned position) |
AffineExpr | getAffineSymbolExpr (unsigned position) |
AffineExpr | getAffineConstantExpr (int64_t constant) |
AffineMap | getEmptyAffineMap () |
Returns a zero result affine map with no dimensions or symbols: () -> (). More... | |
AffineMap | getConstantAffineMap (int64_t val) |
Returns a single constant result affine map with 0 dimensions and 0 symbols. More... | |
AffineMap | getDimIdentityMap () |
AffineMap | getMultiDimIdentityMap (unsigned rank) |
AffineMap | getSymbolIdentityMap () |
AffineMap | getSingleDimShiftAffineMap (int64_t shift) |
Returns a map that shifts its (single) input dimension by 'shift'. More... | |
AffineMap | getShiftedAffineMap (AffineMap map, int64_t shift) |
Returns an affine map that is a translation (shift) of all result expressions in 'map' by 'shift'. More... | |
![]() | |
Listener () | |
virtual void | notifyOperationModified (Operation *op) |
Notify the listener that the specified operation was modified in-place. More... | |
virtual void | notifyOperationReplaced (Operation *op, Operation *replacement) |
Notify the listener that the specified operation is about to be replaced with another operation. More... | |
virtual void | notifyOperationReplaced (Operation *op, ValueRange replacement) |
Notify the listener that the specified operation is about to be replaced with the a range of values, potentially produced by other operations. More... | |
virtual void | notifyOperationRemoved (Operation *op) |
Notify the listener that the specified operation is about to be erased. More... | |
![]() | |
Listener () | |
virtual | ~Listener ()=default |
![]() | |
Kind | getKind () const |
Additional Inherited Members | |
![]() | |
enum class | Kind { OpBuilderListener = 0 , RewriterBaseListener = 1 } |
The kind of listener. More... | |
![]() | |
static OpBuilder | atBlockBegin (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the first operation in the block but still inside the block. More... | |
static OpBuilder | atBlockEnd (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to after the last operation in the block but still inside the block. More... | |
static OpBuilder | atBlockTerminator (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the block terminator. More... | |
![]() | |
static bool | classof (const OpBuilder::Listener *base) |
![]() | |
RewriterBase (MLIRContext *ctx, OpBuilder::Listener *listener=nullptr) | |
Initialize the builder. More... | |
RewriterBase (const OpBuilder &otherBuilder) | |
virtual | ~RewriterBase () |
![]() | |
Listener (Kind kind) | |
![]() | |
ListenerBase (Kind kind) | |
![]() | |
Listener * | listener |
The optional listener for events of this builder. More... | |
![]() | |
MLIRContext * | context |
This class implements a pattern rewriter for use with ConversionPatterns.
It extends the base PatternRewriter and provides special conversion specific hooks.
Definition at line 634 of file DialectConversion.h.
|
explicit |
Definition at line 1447 of file DialectConversion.cpp.
|
overridedefault |
Block * ConversionPatternRewriter::applySignatureConversion | ( | Region * | region, |
TypeConverter::SignatureConversion & | conversion, | ||
const TypeConverter * | converter = nullptr |
||
) |
Apply a signature conversion to the entry block of the given region.
This replaces the entry block with a new block containing the updated signature. The new entry block to the region is returned for convenience.
If provided, converter
will be used for any materializations.
Definition at line 1506 of file DialectConversion.cpp.
|
overridevirtual |
PatternRewriter hook for updating the root operation in-place.
Reimplemented from mlir::RewriterBase.
Definition at line 1633 of file DialectConversion.cpp.
|
inlineoverridevirtual |
Indicate that the conversion rewriter can recover from rewrite failure.
Recovery is supported via rollback, allowing for continued processing of patterns even if a failure is encountered during the rewrite step.
Reimplemented from mlir::PatternRewriter.
Definition at line 691 of file DialectConversion.h.
|
overridevirtual |
PatternRewriter hook for cloning blocks of one region into another.
The given region to clone must not have been modified as part of conversion yet, i.e. it must be within an operation that is either in the process of conversion, or has not yet been converted.
Reimplemented from mlir::RewriterBase.
Definition at line 1591 of file DialectConversion.cpp.
References mlir::RewriterBase::cloneRegionBefore(), mlir::Region::empty(), mlir::IRMapping::lookup(), mlir::PreOrder, and mlir::Block::walk().
LogicalResult ConversionPatternRewriter::convertNonEntryRegionTypes | ( | Region * | region, |
const TypeConverter & | converter, | ||
ArrayRef< TypeConverter::SignatureConversion > | blockConversions | ||
) |
Convert the types of block arguments within the given region except for the entry region.
This replaces each non-entry block with a new block containing the updated signature.
If special conversion behavior is needed for the non-entry blocks (for example, we need to convert only a subset of a BB arguments), such behavior can be specified in blockConversions.
Definition at line 1518 of file DialectConversion.cpp.
FailureOr< Block * > ConversionPatternRewriter::convertRegionTypes | ( | Region * | region, |
const TypeConverter & | converter, | ||
TypeConverter::SignatureConversion * | entryConversion = nullptr |
||
) |
Convert the types of block arguments within the given region.
This replaces each block with a new block containing the updated signature. The entry block may have a special conversion if entryConversion
is provided. On success, the new entry block to the region is returned for convenience. Otherwise, failure is returned.
Definition at line 1512 of file DialectConversion.cpp.
Referenced by mlir::convertFuncOpToLLVMFuncOp(), convertFuncOpTypes(), lowerAsEntryFunction(), and mlir::GPUFuncOpLowering::matchAndRewrite().
|
overridevirtual |
PatternRewriter hook for erase all operations in a block.
This is not yet implemented for dialect conversion.
Reimplemented from mlir::RewriterBase.
Definition at line 1492 of file DialectConversion.cpp.
|
overridevirtual |
PatternRewriter hook for erasing a dead operation.
The uses of this operation must be made dead by the end of the conversion process, otherwise an assert will be issued.
Reimplemented from mlir::RewriterBase.
Definition at line 1483 of file DialectConversion.cpp.
Referenced by lowerAsEntryFunction(), mlir::GPUFuncOpLowering::matchAndRewrite(), mlir::GPUPrintfOpToHIPLowering::matchAndRewrite(), mlir::GPUPrintfOpToLLVMCallLowering::matchAndRewrite(), mlir::GPUPrintfOpToVPrintfLowering::matchAndRewrite(), and ConvertVariable::matchAndRewrite().
|
overridevirtual |
PatternRewriter hook for updating the root operation in-place.
Reimplemented from mlir::RewriterBase.
Definition at line 1623 of file DialectConversion.cpp.
detail::ConversionPatternRewriterImpl & ConversionPatternRewriter::getImpl | ( | ) |
Return a reference to the internal implementation.
Definition at line 1653 of file DialectConversion.cpp.
Return the converted value of 'key' with a type defined by the type converter of the currently executing pattern.
Return nullptr in the case of failure, the remapped value otherwise.
Definition at line 1536 of file DialectConversion.cpp.
References mlir::failed().
LogicalResult ConversionPatternRewriter::getRemappedValues | ( | ValueRange | keys, |
SmallVectorImpl< Value > & | results | ||
) |
Return the converted values that replace 'keys' with types defined by the type converter of the currently executing pattern.
Returns failure if the remap failed, success otherwise.
Definition at line 1545 of file DialectConversion.cpp.
References mlir::success().
Referenced by pdllConvertValues().
|
overridevirtual |
PatternRewriter hook for inlining the ops of a block into another block.
Reimplemented from mlir::RewriterBase.
Definition at line 1564 of file DialectConversion.cpp.
References mlir::Block::getNumArguments().
|
overridevirtual |
PatternRewriter hook for moving blocks out of a region.
Reimplemented from mlir::RewriterBase.
Definition at line 1584 of file DialectConversion.cpp.
References mlir::RewriterBase::inlineRegionBefore().
Referenced by mlir::convertFuncOpToLLVMFuncOp(), lowerAsEntryFunction(), and mlir::GPUFuncOpLowering::matchAndRewrite().
|
overridevirtual |
PatternRewriter hook creating a new block.
Reimplemented from mlir::OpBuilder::Listener.
Definition at line 1553 of file DialectConversion.cpp.
|
overridevirtual |
PatternRewriter hook for notifying match failure reasons.
Reimplemented from mlir::RewriterBase::Listener.
Definition at line 1648 of file DialectConversion.cpp.
Referenced by checkSourceOpTypes(), mlir::convertFuncOpToLLVMFuncOp(), mlir::GPUFuncOpLowering::matchAndRewrite(), ConvertAccessChain::matchAndRewrite(), ConvertLoad::matchAndRewrite(), and ConvertStore::matchAndRewrite().
|
overridevirtual |
PatternRewriter hook for inserting a new operation.
Reimplemented from mlir::OpBuilder::Listener.
Definition at line 1608 of file DialectConversion.cpp.
PatternRewriter hook for replacing an operation.
Reimplemented from mlir::RewriterBase.
Definition at line 1468 of file DialectConversion.cpp.
|
overridevirtual |
PatternRewriter hook for replacing an operation.
Reimplemented from mlir::RewriterBase.
Definition at line 1473 of file DialectConversion.cpp.
Referenced by mlir::GPUFuncOpLowering::matchAndRewrite(), ConvertLoad::matchAndRewrite(), and modifyFuncOpToUseBarePtrCallingConv().
|
overridevirtual |
PatternRewriter hook for replacing an operation when the given functor returns "true".
Reimplemented from mlir::RewriterBase.
Definition at line 1455 of file DialectConversion.cpp.
void ConversionPatternRewriter::replaceUsesOfBlockArgument | ( | BlockArgument | from, |
Value | to | ||
) |
Replace all the uses of the block argument from
with value to
.
Definition at line 1524 of file DialectConversion.cpp.
References mlir::Operation::getName(), mlir::BlockArgument::getOwner(), and mlir::Block::getParentOp().
Referenced by mlir::GPUFuncOpLowering::matchAndRewrite(), and modifyFuncOpToUseBarePtrCallingConv().
|
overridevirtual |
PatternRewriter hook for splitting a block into two parts.
Reimplemented from mlir::RewriterBase.
Definition at line 1557 of file DialectConversion.cpp.
References mlir::RewriterBase::splitBlock().
|
overridevirtual |
PatternRewriter hook for updating the root operation in-place.
Note: These methods only track updates to the top-level operation itself, and not nested regions. Updates to regions will still require notification through other more specific hooks above.
Reimplemented from mlir::RewriterBase.
Definition at line 1616 of file DialectConversion.cpp.