|
1 | 1 | // DEFINE: %{compile} = mlir-opt %s \
|
2 |
| -// DEFINE: -transform-interpreter -test-transform-dialect-erase-schedule |\ |
| 2 | +// DEFINE: -transform-interpreter -test-transform-dialect-erase-schedule \ |
| 3 | +// DEFINE: --lower-vector-mask |\ |
3 | 4 | // DEFINE: mlir-opt \
|
4 | 5 | // DEFINE: -test-lower-to-llvm -o %t
|
5 | 6 | // DEFINE: %{entry_point} = main
|
@@ -90,14 +91,19 @@ module @transforms attributes { transform.with_named_sequence } {
|
90 | 91 | %func_op = transform.get_parent_op %tiled_pack_op_p {isolated_from_above} : (!transform.any_op) -> !transform.op<"func.func">
|
91 | 92 | transform.apply_patterns to %func_op {
|
92 | 93 | transform.apply_patterns.linalg.decompose_pack_unpack
|
93 |
| - transform.apply_patterns.linalg.decompose_pad |
| 94 | + transform.apply_patterns.canonicalization |
94 | 95 | } : !transform.op<"func.func">
|
95 | 96 |
|
96 |
| - // 3. Bufferize before lowering to LLVM |
| 97 | + // 3. Vectorize tensor.insert_slice |
| 98 | + // Vector sizes match the inner tiles in the payload IR. |
| 99 | + %slice = transform.structured.match ops{["tensor.insert_slice"]} in %func_op : (!transform.op<"func.func">) -> !transform.any_op |
| 100 | + transform.structured.vectorize %slice vector_sizes [8, 1] : !transform.any_op |
| 101 | + |
| 102 | + // 4. Bufferize before lowering to LLVM |
97 | 103 | %bufferize = transform.bufferization.one_shot_bufferize %module
|
98 | 104 | {bufferize_function_boundaries=true} : (!transform.any_op) -> !transform.any_op
|
99 | 105 |
|
100 |
| - // 4. Canonicalize |
| 106 | + // 5. Canonicalize |
101 | 107 | %func_op_bufferized = transform.structured.match ops{["func.func"]} in %bufferize : (!transform.any_op) -> !transform.op<"func.func">
|
102 | 108 | transform.apply_patterns to %func_op_bufferized {
|
103 | 109 | transform.apply_patterns.canonicalization
|
|
0 commit comments