| # Standalone Transform Dialect Interpreter |
| |
| This is an example of using the Transform dialect interpreter functionality standalone, that is, outside of the regular pass pipeline. The example is a |
| binary capable of processing MLIR source files similar to `mlir-opt` and other |
| optimizer drivers, with the entire transformation process driven by a Transform |
| dialect script. This script can be embedded into the source file or provided in |
| a separate MLIR source file. |
| |
| Either the input module or the transform module must contain a top-level symbol |
| named `__transform_main`, which is used as the entry point to the transformation |
| script. |
| |
| ```sh |
| mlir-transform-opt payload_with_embedded_transform.mlir |
| mlir-transform-opt payload.mlir -transform=transform.mlir |
| ``` |
| |
| The name of the entry point can be overridden using command-line options. |
| |
| ```sh |
| mlir-transform-opt payload-mlir -transform-entry-point=another_entry_point |
| ``` |
| |
| Transform scripts can reference symbols defined in other source files, called |
| libraries, which can be supplied to the binary through command-line options. |
| Libraries will be embedded into the main transformation module by the tool and |
| the interpreter will process everything as a single module. A debug option is |
| available to see the contents of the transform module before it goes into the interpreter. |
| |
| ```sh |
| mlir-transform-opt payload.mlir -transform=transform.mlir \ |
| -transform-library=external_definitions_1.mlir \ |
| -transform-library=external_definitions_2.mlir \ |
| -dump-library-module |
| ``` |
| |
| Check out the [Transform dialect |
| tutorial](https://mlir.llvm.org/docs/Tutorials/transform/) as well as |
| [documentation](https://mlir.llvm.org/docs/Dialects/Transform/) to learn more |
| about the dialect. |