The transform dialect infrastructure does not provide a default interpreter pass and instead expects users to create their own to ensure all relevant extensions and dependent dialects are loaded. Provide a base class for implementing such passes that includes the additional facilities for debugging and is aware of the multithreaded nature of pass execution. Reviewed By: pifon2a, nicolasvasilache Differential Revision: https://reviews.llvm.org/D142729
69 lines
2.1 KiB
MLIR
69 lines
2.1 KiB
MLIR
// RUN: mlir-opt %s --pass-pipeline="builtin.module(test-transform-dialect-interpreter{debug-payload-root-tag=payload debug-transform-root-tag=transform})" \
|
|
// RUN: --allow-unregistered-dialect --split-input-file --verify-diagnostics
|
|
|
|
// expected-error @below {{could not find the operation with transform.target_tag="payload" attribute}}
|
|
module {
|
|
transform.sequence failures(suppress) {
|
|
^bb0(%arg0: !transform.any_op):
|
|
}
|
|
}
|
|
|
|
// -----
|
|
|
|
// expected-error @below {{could not find the operation with transform.target_tag="transform" attribute}}
|
|
module {
|
|
transform.sequence failures(suppress) {
|
|
^bb0(%arg0: !transform.any_op):
|
|
}
|
|
|
|
module attributes {transform.target_tag="payload"} {}
|
|
}
|
|
|
|
// -----
|
|
|
|
// expected-error @below {{more than one operation with transform.target_tag="transform" attribute}}
|
|
module {
|
|
// expected-note @below {{first operation}}
|
|
transform.sequence failures(propagate) attributes {transform.target_tag="transform"} {
|
|
^bb0(%arg0: !transform.any_op):
|
|
}
|
|
|
|
// expected-note @below {{other operation}}
|
|
transform.sequence failures(propagate) attributes {transform.target_tag="transform"} {
|
|
^bb0(%arg0: !transform.any_op):
|
|
}
|
|
|
|
module attributes {transform.target_tag="payload"} {}
|
|
}
|
|
|
|
// -----
|
|
|
|
module {
|
|
// expected-error @below {{expected the transform entry point to be a top-level transform op}}
|
|
func.func private @foo() attributes {transform.target_tag="transform"}
|
|
|
|
module attributes {transform.target_tag="payload"} {}
|
|
}
|
|
|
|
// -----
|
|
|
|
module {
|
|
transform.sequence failures(suppress) attributes {transform.target_tag="transform"} {
|
|
^bb0(%arg0: !transform.any_op):
|
|
transform.test_print_remark_at_operand %arg0, "payload" : !transform.any_op
|
|
}
|
|
|
|
// This will not be executed because it's not tagged.
|
|
transform.sequence failures(suppress) {
|
|
^bb0(%arg0: !transform.any_op):
|
|
transform.test_print_remark_at_operand %arg0, "some other text that is not printed" : !transform.any_op
|
|
}
|
|
|
|
module {
|
|
module {}
|
|
// expected-remark @below {{payload}}
|
|
module attributes {transform.target_tag="payload"} {}
|
|
module {}
|
|
}
|
|
}
|