Files
clang-p2996/mlir/test/Dialect/SCF/transform-ops-invalid.mlir
Alex Zinenko 9813c184f7 [mlir] NFC: use !transform.any_op in relevant tests
Update various tests using Transform dialect extensions to pervasively
use `!transform.any_op` instead of `!pdl.operation`. Tests are sometimes
used as source of knowledge for best practices and these were doing the
opposite of what is considered best practices per
https://discourse.llvm.org/t/rfc-type-system-for-the-transform-dialect/65702.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D150785
2023-05-22 08:19:46 +00:00

62 lines
1.9 KiB
MLIR

// RUN: mlir-opt %s -test-transform-dialect-interpreter --split-input-file --verify-diagnostics
#map0 = affine_map<(d0) -> (d0 * 110)>
#map1 = affine_map<(d0) -> (696, d0 * 110 + 110)>
func.func @test_loops_do_not_get_coalesced() {
affine.for %i = 0 to 7 {
affine.for %j = #map0(%i) to min #map1(%i) {
}
} {coalesce}
return
}
transform.sequence failures(propagate) {
^bb1(%arg1: !transform.any_op):
%0 = transform.structured.match ops{["affine.for"]} attributes {coalesce} in %arg1 : (!transform.any_op) -> !transform.any_op
%1 = transform.cast %0 : !transform.any_op to !transform.op<"affine.for">
// expected-error @below {{failed to coalesce}}
%2 = transform.loop.coalesce %1: (!transform.op<"affine.for">) -> (!transform.op<"affine.for">)
}
// -----
func.func @test_loops_do_not_get_unrolled() {
affine.for %i = 0 to 7 {
arith.addi %i, %i : index
}
return
}
transform.sequence failures(propagate) {
^bb1(%arg1: !transform.any_op):
%0 = transform.structured.match ops{["arith.addi"]} in %arg1 : (!transform.any_op) -> !transform.any_op
%1 = transform.loop.get_parent_for %0 { affine = true } : (!transform.any_op) -> !transform.op<"affine.for">
// expected-error @below {{failed to unroll}}
transform.loop.unroll %1 { factor = 8 } : !transform.op<"affine.for">
}
// -----
func.func private @cond() -> i1
func.func private @body()
func.func @loop_outline_op_multi_region() {
// expected-note @below {{target op}}
scf.while : () -> () {
%0 = func.call @cond() : () -> i1
scf.condition(%0)
} do {
^bb0:
func.call @body() : () -> ()
scf.yield
}
return
}
transform.sequence failures(propagate) {
^bb1(%arg1: !transform.any_op):
%0 = transform.structured.match ops{["scf.while"]} in %arg1 : (!transform.any_op) -> !transform.any_op
// expected-error @below {{failed to outline}}
transform.loop.outline %0 {func_name = "foo"} : (!transform.any_op) -> (!transform.any_op, !transform.any_op)
}