llvm/mlir/test/Dialect/Linalg/match-ops.mlir

// RUN: mlir-opt %s | mlir-opt | FileCheck %s

transform.sequence failures(propagate) {
^bb0(%arg0: !transform.any_op):
  transform.match.structured %arg0 : !transform.any_op {
  ^bb1(%arg1: !transform.any_op):
    // Checking the syntax of positional specifications.
    // CHECK: dim %{{.*}}[all]
    transform.match.structured.dim %arg1[all] : !transform.any_op
    // CHECK: dim %{{.*}}[0]
    transform.match.structured.dim %arg1[0] : !transform.any_op
    // CHECK: dim %{{.*}}[0, 1, -2]
    transform.match.structured.dim %arg1[0, 1, -2] : !transform.any_op
    // CHECK: dim %{{.*}}[except(0)]
    transform.match.structured.dim %arg1[except(0)] : !transform.any_op
    // CHECK: dim %{{.*}}[except(0, -1, 2)]
    transform.match.structured.dim %arg1[except(0, -1, 2)] : !transform.any_op

    transform.match.structured.yield
  }

  // Checking the syntax of trailing types.
  // CHECK: structured %{{.*}} : !transform.any_op
  transform.match.structured %arg0 : !transform.any_op {
  ^bb1(%arg1: !transform.any_op):
    transform.match.structured.yield
  }
  // CHECK: structured %{{.*}} : (!transform.any_op) -> !transform.any_op
  transform.match.structured %arg0 : (!transform.any_op) -> !transform.any_op {
  ^bb1(%arg1: !transform.any_op):
    transform.match.structured.yield %arg1 : !transform.any_op
  }
  // CHECK: structured %{{.*}} : (!transform.any_op) -> (!transform.any_op, !transform.any_op)
  transform.match.structured %arg0 : (!transform.any_op) -> (!transform.any_op, !transform.any_op) {
  ^bb1(%arg1: !transform.any_op):
    transform.match.structured.yield %arg1, %arg1 : !transform.any_op, !transform.any_op
  }

  transform.yield
}