picceler
Loading...
Searching...
No Matches
pass_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
5#include "spdlog/spdlog.h"
6
7#include "mlir/Pass/PassManager.h"
8#include "llvm/Support/raw_ostream.h"
9#include "llvm/Support/FileSystem.h"
10#include "mlir/Pass/PassInstrumentation.h"
11
12#include "passes.h"
13
14namespace picceler {
15
20struct PassLogger : public mlir::PassInstrumentation {
21 void runBeforePass(mlir::Pass *pass, mlir::Operation *op) override {
22 spdlog::info("Started pass: {}", pass->getName().str());
23 }
24 void runAfterPass(mlir::Pass *pass, mlir::Operation *op) override {
25 spdlog::info("Finished pass: {}", pass->getName().str());
26 }
27 void runAfterPassFailed(mlir::Pass *pass, mlir::Operation *op) override {
28 spdlog::error("Failed pass: {}", pass->getName().str());
29 }
30};
31
36public:
42 IRPassManager(mlir::MLIRContext *context);
43
48 void run(mlir::ModuleOp module);
49
50private:
54 void addPasses();
55
61
66 void addHighLevelOptimizationPasses();
67
71 void addAffineLoweringPasses();
72
76 void addRuntimeLoweringPasses();
77
81 void addBackendLoweringPasses();
82
84
85private:
86 std::unique_ptr<llvm::raw_fd_ostream> _outStream;
87 mlir::PassManager _passManager;
88};
89
90} // namespace picceler
void run(mlir::ModuleOp module)
Runs the pass manager on the given MLIR module.
Definition pass_manager.cpp:39
IRPassManager(mlir::MLIRContext *context)
Constructs an IRPassManager with the given MLIR context. Also sets up the output stream and configure...
Definition pass_manager.cpp:23
Definition ast.h:11
Custom struct to log pass execution using spdlog. This struct implements the PassInstrumentation inte...
Definition pass_manager.h:20
void runAfterPass(mlir::Pass *pass, mlir::Operation *op) override
Definition pass_manager.h:24
void runBeforePass(mlir::Pass *pass, mlir::Operation *op) override
Definition pass_manager.h:21
void runAfterPassFailed(mlir::Pass *pass, mlir::Operation *op) override
Definition pass_manager.h:27