MLIR: lib/CAPI/Transforms/Rewrite.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
MlirContext mlirRewriterBaseGetContext (MlirRewriterBase rewriter)
RewriterBase API inherited from OpBuilder. More...
void mlirRewriterBaseClearInsertionPoint (MlirRewriterBase rewriter)
Insertion points methods. More...
void mlirRewriterBaseSetInsertionPointBefore (MlirRewriterBase rewriter, MlirOperation op)
Sets the insertion point to the specified operation, which will cause subsequent insertions to go right before it. More...
void mlirRewriterBaseSetInsertionPointAfter (MlirRewriterBase rewriter, MlirOperation op)
Sets the insertion point to the node after the specified operation, which will cause subsequent insertions to go right after it. More...
void mlirRewriterBaseSetInsertionPointAfterValue (MlirRewriterBase rewriter, MlirValue value)
Sets the insertion point to the node after the specified value. More...
void mlirRewriterBaseSetInsertionPointToStart (MlirRewriterBase rewriter, MlirBlock block)
Sets the insertion point to the start of the specified block. More...
void mlirRewriterBaseSetInsertionPointToEnd (MlirRewriterBase rewriter, MlirBlock block)
Sets the insertion point to the end of the specified block. More...
MlirBlock mlirRewriterBaseGetInsertionBlock (MlirRewriterBase rewriter)
Return the block the current insertion point belongs to. More...
MlirBlock mlirRewriterBaseGetBlock (MlirRewriterBase rewriter)
Returns the current block of the rewriter. More...
MlirBlock mlirRewriterBaseCreateBlockBefore (MlirRewriterBase rewriter, MlirBlock insertBefore, intptr_t nArgTypes, MlirType const *argTypes, MlirLocation const *locations)
Block and operation creation/insertion/cloning. More...
MlirOperation mlirRewriterBaseInsert (MlirRewriterBase rewriter, MlirOperation op)
Insert the given operation at the current insertion point and return it. More...
MlirOperation mlirRewriterBaseClone (MlirRewriterBase rewriter, MlirOperation op)
Creates a deep copy of the specified operation. More...
MlirOperation mlirRewriterBaseCloneWithoutRegions (MlirRewriterBase rewriter, MlirOperation op)
Creates a deep copy of this operation but keep the operation regions empty. More...
void mlirRewriterBaseCloneRegionBefore (MlirRewriterBase rewriter, MlirRegion region, MlirBlock before)
Clone the blocks that belong to "region" before the given position in another region "parent". More...
void mlirRewriterBaseInlineRegionBefore (MlirRewriterBase rewriter, MlirRegion region, MlirBlock before)
RewriterBase API. More...
void mlirRewriterBaseReplaceOpWithValues (MlirRewriterBase rewriter, MlirOperation op, intptr_t nValues, MlirValue const *values)
Replace the results of the given (original) operation with the specified list of values (replacements). More...
void mlirRewriterBaseReplaceOpWithOperation (MlirRewriterBase rewriter, MlirOperation op, MlirOperation newOp)
Replace the results of the given (original) operation with the specified new op (replacement). More...
void mlirRewriterBaseEraseOp (MlirRewriterBase rewriter, MlirOperation op)
Erases an operation that is known to have no uses. More...
void mlirRewriterBaseEraseBlock (MlirRewriterBase rewriter, MlirBlock block)
Erases a block along with all operations inside it. More...
void mlirRewriterBaseInlineBlockBefore (MlirRewriterBase rewriter, MlirBlock source, MlirOperation op, intptr_t nArgValues, MlirValue const *argValues)
Inline the operations of block 'source' before the operation 'op'. More...
void mlirRewriterBaseMergeBlocks (MlirRewriterBase rewriter, MlirBlock source, MlirBlock dest, intptr_t nArgValues, MlirValue const *argValues)
Inline the operations of block 'source' into the end of block 'dest'. More...
void mlirRewriterBaseMoveOpBefore (MlirRewriterBase rewriter, MlirOperation op, MlirOperation existingOp)
Unlink this operation from its current block and insert it right before existingOp which may be in the same or another block in the same function. More...
void mlirRewriterBaseMoveOpAfter (MlirRewriterBase rewriter, MlirOperation op, MlirOperation existingOp)
Unlink this operation from its current block and insert it right after existingOp which may be in the same or another block in the same function. More...
void mlirRewriterBaseMoveBlockBefore (MlirRewriterBase rewriter, MlirBlock block, MlirBlock existingBlock)
Unlink this block and insert it right before existingBlock. More...
void mlirRewriterBaseStartOpModification (MlirRewriterBase rewriter, MlirOperation op)
This method is used to notify the rewriter that an in-place operation modification is about to happen. More...
void mlirRewriterBaseFinalizeOpModification (MlirRewriterBase rewriter, MlirOperation op)
This method is used to signal the end of an in-place modification of the given operation. More...
void mlirRewriterBaseCancelOpModification (MlirRewriterBase rewriter, MlirOperation op)
This method cancels a pending in-place modification. More...
void mlirRewriterBaseReplaceAllUsesWith (MlirRewriterBase rewriter, MlirValue from, MlirValue to)
Find uses of from and replace them with to. More...
void mlirRewriterBaseReplaceAllValueRangeUsesWith (MlirRewriterBase rewriter, intptr_t nValues, MlirValue const *from, MlirValue const *to)
Find uses of from and replace them with to. More...
void mlirRewriterBaseReplaceAllOpUsesWithValueRange (MlirRewriterBase rewriter, MlirOperation from, intptr_t nTo, MlirValue const *to)
Find uses of from and replace them with to. More...
void mlirRewriterBaseReplaceAllOpUsesWithOperation (MlirRewriterBase rewriter, MlirOperation from, MlirOperation to)
Find uses of from and replace them with to. More...
void mlirRewriterBaseReplaceOpUsesWithinBlock (MlirRewriterBase rewriter, MlirOperation op, intptr_t nNewValues, MlirValue const *newValues, MlirBlock block)
Find uses of from within block and replace them with to. More...
void mlirRewriterBaseReplaceAllUsesExcept (MlirRewriterBase rewriter, MlirValue from, MlirValue to, MlirOperation exceptedUser)
Find uses of from and replace them with to except if the user is exceptedUser. More...
MlirRewriterBase mlirIRRewriterCreate (MlirContext context)
IRRewriter API. More...
MlirRewriterBase mlirIRRewriterCreateFromOp (MlirOperation op)
Create an IRRewriter and transfer ownership to the caller. More...
void mlirIRRewriterDestroy (MlirRewriterBase rewriter)
Takes an IRRewriter owned by the caller and destroys it. More...
mlir::RewritePatternSet & unwrap (MlirRewritePatternSet module)
RewritePatternSet and FrozenRewritePatternSet API. More...
MlirRewritePatternSet wrap (mlir::RewritePatternSet *module)
mlir::FrozenRewritePatternSet * unwrap (MlirFrozenRewritePatternSet module)
MlirFrozenRewritePatternSet wrap (mlir::FrozenRewritePatternSet *module)
MlirFrozenRewritePatternSet mlirFreezeRewritePattern (MlirRewritePatternSet op)
FrozenRewritePatternSet API. More...
void mlirFrozenRewritePatternSetDestroy (MlirFrozenRewritePatternSet op)
MlirLogicalResult mlirApplyPatternsAndFoldGreedily (MlirModule op, MlirFrozenRewritePatternSet patterns, MlirGreedyRewriteDriverConfig)

mlirApplyPatternsAndFoldGreedily()

MlirLogicalResult mlirApplyPatternsAndFoldGreedily ( MlirModule op,
MlirFrozenRewritePatternSet patterns,
MlirGreedyRewriteDriverConfig
)

mlirFreezeRewritePattern()

MlirFrozenRewritePatternSet mlirFreezeRewritePattern ( MlirRewritePatternSet op )

FrozenRewritePatternSet API.

Definition at line 279 of file Rewrite.cpp.

mlirFrozenRewritePatternSetDestroy()

void mlirFrozenRewritePatternSetDestroy ( MlirFrozenRewritePatternSet op )

mlirIRRewriterCreate()

MlirRewriterBase mlirIRRewriterCreate ( MlirContext context )

IRRewriter API.

Create an IRRewriter and transfer ownership to the caller.

Definition at line 244 of file Rewrite.cpp.

References unwrap(), and wrap().

mlirIRRewriterCreateFromOp()

MlirRewriterBase mlirIRRewriterCreateFromOp ( MlirOperation op )

Create an IRRewriter and transfer ownership to the caller.

Additionally set the insertion point before the operation.

Definition at line 248 of file Rewrite.cpp.

References unwrap(), and wrap().

mlirIRRewriterDestroy()

void mlirIRRewriterDestroy ( MlirRewriterBase rewriter )

Takes an IRRewriter owned by the caller and destroys it.

It is the responsibility of the user to only pass an IRRewriter class.

Definition at line 252 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseCancelOpModification()

void mlirRewriterBaseCancelOpModification ( MlirRewriterBase rewriter,
MlirOperation op
)

This method cancels a pending in-place modification.

This can only be called on operations that were provided to a call to startOpModification.

Definition at line 186 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseClearInsertionPoint()

void mlirRewriterBaseClearInsertionPoint ( MlirRewriterBase rewriter )

Insertion points methods.

Reset the insertion point to no location. Creating an operation without a set insertion point is an error, but this can still be useful when the current insertion point a builder refers to is being removed.

Definition at line 34 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseClone()

MlirOperation mlirRewriterBaseClone ( MlirRewriterBase rewriter,
MlirOperation op
)

mlirRewriterBaseCloneRegionBefore()

void mlirRewriterBaseCloneRegionBefore ( MlirRewriterBase rewriter,
MlirRegion region,
MlirBlock before
)

Clone the blocks that belong to "region" before the given position in another region "parent".

Definition at line 105 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseCloneWithoutRegions()

MlirOperation mlirRewriterBaseCloneWithoutRegions ( MlirRewriterBase rewriter,
MlirOperation op
)

mlirRewriterBaseCreateBlockBefore()

MlirBlock mlirRewriterBaseCreateBlockBefore ( MlirRewriterBase rewriter,
MlirBlock insertBefore,
intptr_t nArgTypes,
MlirType const * argTypes,
MlirLocation const * locations
)

Block and operation creation/insertion/cloning.

Add new block with 'argTypes' arguments and set the insertion point to the end of it. The block is placed before 'insertBefore'. locs contains the locations of the inserted arguments, and should match the size of argTypes.

Definition at line 75 of file Rewrite.cpp.

References createBlock(), unwrap(), unwrapList(), and wrap().

mlirRewriterBaseEraseBlock()

void mlirRewriterBaseEraseBlock ( MlirRewriterBase rewriter,
MlirBlock block
)

Erases a block along with all operations inside it.

Definition at line 138 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseEraseOp()

void mlirRewriterBaseEraseOp ( MlirRewriterBase rewriter,
MlirOperation op
)

Erases an operation that is known to have no uses.

Definition at line 134 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseFinalizeOpModification()

void mlirRewriterBaseFinalizeOpModification ( MlirRewriterBase rewriter,
MlirOperation op
)

This method is used to signal the end of an in-place modification of the given operation.

This can only be called on operations that were provided to a call to startOpModification.

Definition at line 181 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseGetBlock()

MlirBlock mlirRewriterBaseGetBlock ( MlirRewriterBase rewriter )

mlirRewriterBaseGetContext()

MlirContext mlirRewriterBaseGetContext ( MlirRewriterBase rewriter )

mlirRewriterBaseGetInsertionBlock()

MlirBlock mlirRewriterBaseGetInsertionBlock ( MlirRewriterBase rewriter )

Return the block the current insertion point belongs to.

Note that the insertion point is not necessarily the end of the block.

Definition at line 63 of file Rewrite.cpp.

References unwrap(), and wrap().

mlirRewriterBaseInlineBlockBefore()

void mlirRewriterBaseInlineBlockBefore ( MlirRewriterBase rewriter,
MlirBlock source,
MlirOperation op,
intptr_t nArgValues,
MlirValue const * argValues
)

Inline the operations of block 'source' before the operation 'op'.

The source block will be deleted and must have no uses. 'argValues' is used to replace the block arguments of 'source'

The source block must have no successors. Otherwise, the resulting IR would have unreachable operations.

Definition at line 142 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseInlineRegionBefore()

void mlirRewriterBaseInlineRegionBefore ( MlirRewriterBase rewriter,
MlirRegion region,
MlirBlock before
)

RewriterBase API.

Move the blocks that belong to "region" before the given position in another region "parent". The two regions must be different. The caller is responsible for creating or updating the operation transferring flow of control to the region and passing it the correct block arguments.

Definition at line 115 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseInsert()

MlirOperation mlirRewriterBaseInsert ( MlirRewriterBase rewriter,
MlirOperation op
)

Insert the given operation at the current insertion point and return it.

Definition at line 88 of file Rewrite.cpp.

References unwrap(), and wrap().

mlirRewriterBaseMergeBlocks()

void mlirRewriterBaseMergeBlocks ( MlirRewriterBase rewriter,
MlirBlock source,
MlirBlock dest,
intptr_t nArgValues,
MlirValue const * argValues
)

Inline the operations of block 'source' into the end of block 'dest'.

The source block will be deleted and must have no uses. 'argValues' is used to replace the block arguments of 'source'

The dest block must have no successors. Otherwise, the resulting IR would have unreachable operation.

Definition at line 153 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseMoveBlockBefore()

void mlirRewriterBaseMoveBlockBefore ( MlirRewriterBase rewriter,
MlirBlock block,
MlirBlock existingBlock
)

Unlink this block and insert it right before existingBlock.

Definition at line 171 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseMoveOpAfter()

void mlirRewriterBaseMoveOpAfter ( MlirRewriterBase rewriter,
MlirOperation op,
MlirOperation existingOp
)

Unlink this operation from its current block and insert it right after existingOp which may be in the same or another block in the same function.

Definition at line 166 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseMoveOpBefore()

void mlirRewriterBaseMoveOpBefore ( MlirRewriterBase rewriter,
MlirOperation op,
MlirOperation existingOp
)

Unlink this operation from its current block and insert it right before existingOp which may be in the same or another block in the same function.

Definition at line 161 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseReplaceAllOpUsesWithOperation()

void mlirRewriterBaseReplaceAllOpUsesWithOperation ( MlirRewriterBase rewriter,
MlirOperation from,
MlirOperation to
)

Find uses of from and replace them with to.

Also notify the listener about every in-place op modification (for every use that was replaced) and that the from operation is about to be replaced.

Definition at line 216 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseReplaceAllOpUsesWithValueRange()

void mlirRewriterBaseReplaceAllOpUsesWithValueRange ( MlirRewriterBase rewriter,
MlirOperation from,
intptr_t nTo,
MlirValue const * to
)

Find uses of from and replace them with to.

Also notify the listener about every in-place op modification (for every use that was replaced) and that the from operation is about to be replaced.

Definition at line 207 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseReplaceAllUsesExcept()

void mlirRewriterBaseReplaceAllUsesExcept ( MlirRewriterBase rewriter,
MlirValue from,
MlirValue to,
MlirOperation exceptedUser
)

Find uses of from and replace them with to except if the user is exceptedUser.

Also notify the listener about every in-place op modification (for every use that was replaced).

Definition at line 233 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseReplaceAllUsesWith()

void mlirRewriterBaseReplaceAllUsesWith ( MlirRewriterBase rewriter,
MlirValue from,
MlirValue to
)

Find uses of from and replace them with to.

Also notify the listener about every in-place op modification (for every use that was replaced).

Definition at line 191 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseReplaceAllValueRangeUsesWith()

void mlirRewriterBaseReplaceAllValueRangeUsesWith ( MlirRewriterBase rewriter,
intptr_t nValues,
MlirValue const * from,
MlirValue const * to
)

Find uses of from and replace them with to.

Also notify the listener about every in-place op modification (for every use that was replaced).

Definition at line 196 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseReplaceOpUsesWithinBlock()

void mlirRewriterBaseReplaceOpUsesWithinBlock ( MlirRewriterBase rewriter,
MlirOperation op,
intptr_t nNewValues,
MlirValue const * newValues,
MlirBlock block
)

Find uses of from within block and replace them with to.

Also notify the listener about every in-place op modification (for every use that was replaced). The optional allUsesReplaced flag is set to "true" if all uses were replaced.

Definition at line 222 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseReplaceOpWithOperation()

void mlirRewriterBaseReplaceOpWithOperation ( MlirRewriterBase rewriter,
MlirOperation op,
MlirOperation newOp
)

Replace the results of the given (original) operation with the specified new op (replacement).

The result types of the two ops must match. The original op is erased.

Definition at line 128 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseReplaceOpWithValues()

void mlirRewriterBaseReplaceOpWithValues ( MlirRewriterBase rewriter,
MlirOperation op,
intptr_t nValues,
MlirValue const * values
)

Replace the results of the given (original) operation with the specified list of values (replacements).

The result types of the given op and the replacements must match. The original op is erased.

Definition at line 120 of file Rewrite.cpp.

References unwrap(), and unwrapList().

mlirRewriterBaseSetInsertionPointAfter()

void mlirRewriterBaseSetInsertionPointAfter ( MlirRewriterBase rewriter,
MlirOperation op
)

Sets the insertion point to the node after the specified operation, which will cause subsequent insertions to go right after it.

Definition at line 43 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseSetInsertionPointAfterValue()

void mlirRewriterBaseSetInsertionPointAfterValue ( MlirRewriterBase rewriter,
MlirValue value
)

Sets the insertion point to the node after the specified value.

If value has a defining operation, sets the insertion point to the node after such defining operation. This will cause subsequent insertions to go right after it. Otherwise, value is a BlockArgument. Sets the insertion point to the start of its block.

Definition at line 48 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseSetInsertionPointBefore()

void mlirRewriterBaseSetInsertionPointBefore ( MlirRewriterBase rewriter,
MlirOperation op
)

Sets the insertion point to the specified operation, which will cause subsequent insertions to go right before it.

Definition at line 38 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseSetInsertionPointToEnd()

void mlirRewriterBaseSetInsertionPointToEnd ( MlirRewriterBase rewriter,
MlirBlock block
)

Sets the insertion point to the end of the specified block.

Definition at line 58 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseSetInsertionPointToStart()

void mlirRewriterBaseSetInsertionPointToStart ( MlirRewriterBase rewriter,
MlirBlock block
)

Sets the insertion point to the start of the specified block.

Definition at line 53 of file Rewrite.cpp.

References unwrap().

mlirRewriterBaseStartOpModification()

void mlirRewriterBaseStartOpModification ( MlirRewriterBase rewriter,
MlirOperation op
)

This method is used to notify the rewriter that an in-place operation modification is about to happen.

A call to this function must be followed by a call to either finalizeOpModification or cancelOpModification. This is a minor efficiency win (it avoids creating a new operation and removing the old one) but also often allows simpler code in the client.

Definition at line 176 of file Rewrite.cpp.

References unwrap().

unwrap() [1/2]

unwrap() [2/2]

RewritePatternSet and FrozenRewritePatternSet API.

Definition at line 260 of file Rewrite.cpp.

Referenced by mlirApplyPatternsAndFoldGreedily(), mlirFrozenRewritePatternSetDestroy(), mlirIRRewriterCreate(), mlirIRRewriterCreateFromOp(), mlirIRRewriterDestroy(), mlirRewriterBaseCancelOpModification(), mlirRewriterBaseClearInsertionPoint(), mlirRewriterBaseClone(), mlirRewriterBaseCloneRegionBefore(), mlirRewriterBaseCloneWithoutRegions(), mlirRewriterBaseCreateBlockBefore(), mlirRewriterBaseEraseBlock(), mlirRewriterBaseEraseOp(), mlirRewriterBaseFinalizeOpModification(), mlirRewriterBaseGetBlock(), mlirRewriterBaseGetContext(), mlirRewriterBaseGetInsertionBlock(), mlirRewriterBaseInlineBlockBefore(), mlirRewriterBaseInlineRegionBefore(), mlirRewriterBaseInsert(), mlirRewriterBaseMergeBlocks(), mlirRewriterBaseMoveBlockBefore(), mlirRewriterBaseMoveOpAfter(), mlirRewriterBaseMoveOpBefore(), mlirRewriterBaseReplaceAllOpUsesWithOperation(), mlirRewriterBaseReplaceAllOpUsesWithValueRange(), mlirRewriterBaseReplaceAllUsesExcept(), mlirRewriterBaseReplaceAllUsesWith(), mlirRewriterBaseReplaceAllValueRangeUsesWith(), mlirRewriterBaseReplaceOpUsesWithinBlock(), mlirRewriterBaseReplaceOpWithOperation(), mlirRewriterBaseReplaceOpWithValues(), mlirRewriterBaseSetInsertionPointAfter(), mlirRewriterBaseSetInsertionPointAfterValue(), mlirRewriterBaseSetInsertionPointBefore(), mlirRewriterBaseSetInsertionPointToEnd(), mlirRewriterBaseSetInsertionPointToStart(), and mlirRewriterBaseStartOpModification().

wrap() [1/2]

wrap() [2/2]