Implement Pass and Dialect plugins for mlir-opt
authorFabian Mora <fmorac@udel.edu>
Fri, 7 Apr 2023 00:01:00 +0000 (17:01 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Fri, 7 Apr 2023 01:28:50 +0000 (18:28 -0700)
commit5e2afe5c665ab3ea344a9c3fb34c6b9930a9094d
treedd040473b0f196f080f8426c89b693aebe30e1e5
parent713e815f96eab97cd792418688cadf6150dc2b52
Implement Pass and Dialect plugins for mlir-opt

Implementation of Pass and Dialect Plugins that mirrors LLVM Pass Plugin
implementation from the new pass manager.

Currently the implementation only supports using the pass-pipeline option
for adding passes. This restriction is imposed by the `PassPipelineCLParser`
variable in mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:114 that loads the
parse options statically before parsing the cmd line args.

```
mlir-opt stanalone-plugin.mlir --load-dialect-plugin=lib/libStandalonePlugin.so --pass-pipeline="builtin.module(standalone-switch-bar-foo)"
```

Reviewed By: rriddle, mehdi_amini

Differential Revision: https://reviews.llvm.org/D147053
22 files changed:
mlir/examples/standalone/CMakeLists.txt
mlir/examples/standalone/include/Standalone/CMakeLists.txt
mlir/examples/standalone/include/Standalone/StandalonePasses.h [new file with mode: 0644]
mlir/examples/standalone/include/Standalone/StandalonePasses.td [new file with mode: 0644]
mlir/examples/standalone/lib/Standalone/CMakeLists.txt
mlir/examples/standalone/lib/Standalone/StandalonePasses.cpp [new file with mode: 0644]
mlir/examples/standalone/standalone-opt/standalone-opt.cpp
mlir/examples/standalone/standalone-plugin/CMakeLists.txt [new file with mode: 0644]
mlir/examples/standalone/standalone-plugin/standalone-plugin.cpp [new file with mode: 0644]
mlir/examples/standalone/test/Standalone/standalone-pass-plugin.mlir [new file with mode: 0644]
mlir/examples/standalone/test/Standalone/standalone-plugin.mlir [new file with mode: 0644]
mlir/examples/standalone/test/lit.cfg.py
mlir/include/mlir/Tools/Plugins/DialectPlugin.h [new file with mode: 0644]
mlir/include/mlir/Tools/Plugins/PassPlugin.h [new file with mode: 0644]
mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h
mlir/lib/Tools/CMakeLists.txt
mlir/lib/Tools/Plugins/CMakeLists.txt [new file with mode: 0644]
mlir/lib/Tools/Plugins/DialectPlugin.cpp [new file with mode: 0644]
mlir/lib/Tools/Plugins/PassPlugin.cpp [new file with mode: 0644]
mlir/lib/Tools/mlir-opt/CMakeLists.txt
mlir/lib/Tools/mlir-opt/MlirOptMain.cpp
mlir/tools/mlir-opt/CMakeLists.txt