Implement Pass and Dialect plugins for mlir-opt
authorFabian Mora <fmorac@udel.edu>
Thu, 6 Apr 2023 16:09:00 +0000 (09:09 -0700)
committerJacques Pienaar <jpienaar@google.com>
Thu, 6 Apr 2023 16:33:21 +0000 (09:33 -0700)
commitd4c873b044aeebaa43e6989fb1f9606530ec60cf
treee5d76e9e35d91f611ce19c69762fb946623e8cd9
parent77313ddfb211ba854ecc2bb042d4847e82925604
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

Differential Revision: https://reviews.llvm.org/D147053
21 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/IR/DialectPlugin.h [new file with mode: 0644]
mlir/include/mlir/Pass/PassPlugin.h [new file with mode: 0644]
mlir/include/mlir/Tools/mlir-opt/MlirOptMain.h
mlir/lib/IR/CMakeLists.txt
mlir/lib/IR/DialectPlugin.cpp [new file with mode: 0644]
mlir/lib/Pass/CMakeLists.txt
mlir/lib/Pass/PassPlugin.cpp [new file with mode: 0644]
mlir/lib/Tools/mlir-opt/MlirOptMain.cpp
mlir/tools/mlir-opt/CMakeLists.txt