summaryrefslogtreecommitdiffstats
path: root/mlir/include/mlir/Interfaces/MemorySlotInterfaces.td
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/include/mlir/Interfaces/MemorySlotInterfaces.td')
-rw-r--r--mlir/include/mlir/Interfaces/MemorySlotInterfaces.td30
1 files changed, 30 insertions, 0 deletions
diff --git a/mlir/include/mlir/Interfaces/MemorySlotInterfaces.td b/mlir/include/mlir/Interfaces/MemorySlotInterfaces.td
index e10e2d4e104c..9db89361c780 100644
--- a/mlir/include/mlir/Interfaces/MemorySlotInterfaces.td
+++ b/mlir/include/mlir/Interfaces/MemorySlotInterfaces.td
@@ -229,6 +229,36 @@ def PromotableOpInterface : OpInterface<"PromotableOpInterface"> {
(ins "const ::llvm::SmallPtrSetImpl<mlir::OpOperand *> &":$blockingUses,
"::mlir::RewriterBase &":$rewriter)
>,
+ InterfaceMethod<[{
+ This method allows the promoted operation to visit the SSA values used
+ in place of the memory slot once the promotion process of the memory
+ slot is complete.
+
+ If this method returns true, the `visitReplacedValues` method on this
+ operation will be called after the main mutation stage finishes
+ (i.e., after all ops have been processed with `removeBlockingUses`).
+
+ Operations should only the replaced values if the intended
+ transformation applies to all the replaced values. Furthermore, replaced
+ values must not be deleted.
+ }], "bool", "requiresReplacedValues", (ins), [{}],
+ [{ return false; }]
+ >,
+ InterfaceMethod<[{
+ Transforms the IR using the SSA values that replaced the memory slot.
+
+ This method will only be called after all blocking uses have been
+ scheduled for removal and if `requiresReplacedValues` returned
+ true.
+
+ The rewriter is located after the promotable operation on call. All IR
+ mutations must happen through the rewriter. During the transformation,
+ *no operation should be deleted*.
+ }],
+ "void", "visitReplacedValues",
+ (ins "::llvm::ArrayRef<std::pair<::mlir::Operation*, ::mlir::Value>>":$mutatedDefs,
+ "::mlir::RewriterBase &":$rewriter), [{}], [{ return; }]
+ >,
];
}