Skip to content

Commit b7d50ba

Browse files
[MLIR] Refactor library initialization of JitRunner.
Previously, lib/Support/JitRunner.cpp was essentially a complete application, performing all library initialization, along with dealing with command line arguments and actually running passes. This differs significantly from mlir-opt and required a dependency on InitAllDialects.h. This dependency is significant, since it requires a dependency on all of the resulting libraries. This patch refactors the code so that tools are responsible for library initialization, including registering all dialects, prior to calling JitRunnerMain. This places the concern about what dialect to support with the end application, enabling more extensibility at the cost of a small amount of code duplication between tools. It also fixes BUILD_SHARED_LIBS=on. Differential Revision: https://reviews.llvm.org/D75272
1 parent c07fb9e commit b7d50ba

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

mlir/lib/Support/JitRunner.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include "mlir/IR/MLIRContext.h"
2323
#include "mlir/IR/Module.h"
2424
#include "mlir/IR/StandardTypes.h"
25-
#include "mlir/InitAllDialects.h"
2625
#include "mlir/Parser.h"
2726
#include "mlir/Support/FileUtilities.h"
2827

@@ -34,10 +33,8 @@
3433
#include "llvm/IR/Module.h"
3534
#include "llvm/Support/CommandLine.h"
3635
#include "llvm/Support/FileUtilities.h"
37-
#include "llvm/Support/InitLLVM.h"
3836
#include "llvm/Support/SourceMgr.h"
3937
#include "llvm/Support/StringSaver.h"
40-
#include "llvm/Support/TargetSelect.h"
4138
#include "llvm/Support/ToolOutputFile.h"
4239
#include <numeric>
4340

@@ -108,12 +105,6 @@ static OwningModuleRef parseMLIRInput(StringRef inputFilename,
108105
return OwningModuleRef(parseSourceFile(sourceMgr, context));
109106
}
110107

111-
// Initialize the relevant subsystems of LLVM.
112-
static void initializeLLVM() {
113-
llvm::InitializeNativeTarget();
114-
llvm::InitializeNativeTargetAsmPrinter();
115-
}
116-
117108
static inline Error make_string_error(const Twine &message) {
118109
return llvm::make_error<llvm::StringError>(message.str(),
119110
llvm::inconvertibleErrorCode());
@@ -210,12 +201,6 @@ static Error compileAndExecuteSingleFloatReturnFunction(
210201
int mlir::JitRunnerMain(
211202
int argc, char **argv,
212203
function_ref<LogicalResult(mlir::ModuleOp)> mlirTransformer) {
213-
registerAllDialects();
214-
llvm::InitLLVM y(argc, argv);
215-
216-
initializeLLVM();
217-
mlir::initializeLLVMPasses();
218-
219204
llvm::cl::ParseCommandLineOptions(argc, argv, "MLIR CPU execution driver\n");
220205

221206
Optional<unsigned> optLevel = getCommandLineOptLevel();

mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,18 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15+
#include "mlir/InitAllDialects.h"
1516
#include "mlir/Support/JitRunner.h"
17+
#include "llvm/Support/InitLLVM.h"
18+
#include "llvm/Support/TargetSelect.h"
19+
#include "mlir/ExecutionEngine/OptUtils.h"
1620

1721
int main(int argc, char **argv) {
22+
mlir::registerAllDialects();
23+
llvm::InitLLVM y(argc, argv);
24+
llvm::InitializeNativeTarget();
25+
llvm::InitializeNativeTargetAsmPrinter();
26+
mlir::initializeLLVMPasses();
27+
1828
return mlir::JitRunnerMain(argc, argv, nullptr);
1929
}

mlir/tools/mlir-cuda-runner/mlir-cuda-runner.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@
2222
#include "mlir/Dialect/GPU/Passes.h"
2323
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
2424
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
25+
#include "mlir/ExecutionEngine/OptUtils.h"
2526
#include "mlir/IR/Function.h"
2627
#include "mlir/IR/Module.h"
28+
#include "mlir/InitAllDialects.h"
2729
#include "mlir/Pass/Pass.h"
2830
#include "mlir/Pass/PassManager.h"
2931
#include "mlir/Support/JitRunner.h"
3032
#include "mlir/Transforms/DialectConversion.h"
3133
#include "mlir/Transforms/Passes.h"
34+
#include "llvm/Support/InitLLVM.h"
35+
#include "llvm/Support/TargetSelect.h"
3236

3337
#include "cuda.h"
3438

@@ -118,5 +122,10 @@ static LogicalResult runMLIRPasses(ModuleOp m) {
118122

119123
int main(int argc, char **argv) {
120124
registerPassManagerCLOptions();
125+
mlir::registerAllDialects();
126+
llvm::InitLLVM y(argc, argv);
127+
llvm::InitializeNativeTarget();
128+
llvm::InitializeNativeTargetAsmPrinter();
129+
mlir::initializeLLVMPasses();
121130
return mlir::JitRunnerMain(argc, argv, &runMLIRPasses);
122131
}

mlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919
#include "mlir/Dialect/GPU/Passes.h"
2020
#include "mlir/Dialect/SPIRV/Passes.h"
2121
#include "mlir/Dialect/SPIRV/SPIRVOps.h"
22+
#include "mlir/ExecutionEngine/OptUtils.h"
23+
#include "mlir/InitAllDialects.h"
2224
#include "mlir/Pass/Pass.h"
2325
#include "mlir/Pass/PassManager.h"
2426
#include "mlir/Support/JitRunner.h"
27+
#include "llvm/Support/InitLLVM.h"
28+
#include "llvm/Support/TargetSelect.h"
2529

2630
using namespace mlir;
2731

@@ -42,5 +46,12 @@ static LogicalResult runMLIRPasses(ModuleOp module) {
4246
int main(int argc, char **argv) {
4347
llvm::llvm_shutdown_obj x;
4448
registerPassManagerCLOptions();
49+
50+
mlir::registerAllDialects();
51+
llvm::InitLLVM y(argc, argv);
52+
llvm::InitializeNativeTarget();
53+
llvm::InitializeNativeTargetAsmPrinter();
54+
mlir::initializeLLVMPasses();
55+
4556
return mlir::JitRunnerMain(argc, argv, &runMLIRPasses);
4657
}

0 commit comments

Comments
 (0)