[Mlir-commits] [mlir] 4c70195 - [mlir][transform] Fix ch2 and additional documentation (#148407)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Jul 18 05:28:46 PDT 2025
Author: lonely eagle
Date: 2025-07-18T20:28:43+08:00
New Revision: 4c701956341ff88f580d240be072461a1ba6d7f5
URL: https://github.com/llvm/llvm-project/commit/4c701956341ff88f580d240be072461a1ba6d7f5
DIFF: https://github.com/llvm/llvm-project/commit/4c701956341ff88f580d240be072461a1ba6d7f5.diff
LOG: [mlir][transform] Fix ch2 and additional documentation (#148407)
Fixed error code in example.In addition to this, the content in the documentation has been improved by adding links to the code repository.
Added:
Modified:
mlir/docs/Tutorials/transform/Ch2.md
Removed:
################################################################################
diff --git a/mlir/docs/Tutorials/transform/Ch2.md b/mlir/docs/Tutorials/transform/Ch2.md
index 0f45f5607bab9..08c4e0f9d859c 100644
--- a/mlir/docs/Tutorials/transform/Ch2.md
+++ b/mlir/docs/Tutorials/transform/Ch2.md
@@ -133,6 +133,8 @@ This will generate two files, `MyExtension.h.inc` and `MyExtension.cpp.inc`, tha
```c++
// In MyExtension.cpp.
+#include "MyExtension.h"
+
#define GET_OP_CLASSES
#include "MyExtension.cpp.inc"
@@ -283,7 +285,7 @@ void registerMyExtension(::mlir::DialectRegistry ®istry) {
}
```
-After registering the extension, it becomes possible to use our new operation in the Transform dialect interpreter. The upstream testing pass can be used as is.
+After registering the extension, it becomes possible to use our new operation in the Transform dialect interpreter. The upstream testing pass can be used as is. It actually exists in `mlir/test/Examples/transform/Ch2/sequence.mlir`, which contains the `microkernel` implementation.
```mlir
module attributes {transform.with_named_sequence} {
@@ -300,7 +302,7 @@ module attributes {transform.with_named_sequence} {
// The actual tiling transformation takes tile sizes as attributes. It
// produces a handle to the loop generated during tiling.
- %loop, %tiled = transform.structured.tile_using_forall %max
+ %tiled, %loop = transform.structured.tile_using_forall %max
tile_sizes [8, 32]
: (!transform.any_op) -> (!transform.any_op, !transform.any_op)
@@ -311,32 +313,32 @@ module attributes {transform.with_named_sequence} {
// a single handle to all operations and give it to
// `fuse_into_containing_op` that would take care of the ordering in this
// case.
- %add_fused = transform.structured.fuse_into_containing_op %add into %loop
- : (!transform.any_op, !transform.any_op) -> !transform.any_op
- %matmul_fused = transform.structured.fuse_into_containing_op %arg1
- into %loop
+ %add_fused, %loop2 = transform.structured.fuse_into_containing_op %add into %loop
+ : (!transform.any_op, !transform.any_op) -> (!transform.any_op, !transform.any_op)
+ %matmul_fused, %loop3 = transform.structured.fuse_into_containing_op %arg1
+ into %loop2
: (!transform.op<"linalg.matmul">, !transform.any_op)
- -> !transform.any_op
+ -> (!transform.any_op, !transform.any_op)
// Tile again to get the desired size. Note that this time this tiles the
// "add" operation and fuses matmul into the loop, but doesn't affect the
// "max" operation. This illustrates the precise targeting with the
// transform dialect. Otherwise, it is
diff icult to
diff erentiate "add" and
// "max", both of which having the same kind.
- %loop_2, %tiled_2 = transform.structured.tile_using_forall %add_fused
+ %tiled_second, %loop_second = transform.structured.tile_using_forall %add_fused
tile_sizes [4, 4]
: (!transform.any_op) -> (!transform.any_op, !transform.any_op)
- %matmul_fused_2 = transform.structured.fuse_into_containing_op %matmul_fused
- into %loop_2
- : (!transform.any_op, !transform.any_op) -> !transform.any_op
+ %matmul_fused_2, %loop_second_2 = transform.structured.fuse_into_containing_op %matmul_fused
+ into %loop_second
+ : (!transform.any_op, !transform.any_op) -> (!transform.any_op, !transform.any_op)
// Since outlining is currently only implemented for region-holding
// operations such as loops, use tiling to size 1 to materialize the outer
// loop that is going to be outlined.
- %outline_target, %_ = transform.structured.tile_using_forall %tiled_2 tile_sizes [1]
+ %_0, %loop_third = transform.structured.tile_using_forall %tiled_second tile_sizes [1]
: (!transform.any_op) -> (!transform.any_op, !transform.any_op)
- transform.structured.fuse_into_containing_op %matmul_fused_2 into %outline_target
- : (!transform.any_op, !transform.any_op) -> !transform.any_op
+ %_1, %outline_target = transform.structured.fuse_into_containing_op %matmul_fused_2 into %loop_third
+ : (!transform.any_op, !transform.any_op) -> (!transform.any_op, !transform.any_op)
%func, %call = transform.loop.outline %outline_target
{func_name = "outlined"}
: (!transform.any_op) -> (!transform.any_op, !transform.any_op)
More information about the Mlir-commits
mailing list