add automatic patches to onnx-mlir with CMakeLists.txt
This commit is contained in:
45
src/PIM/Pass/EmitPimJsonPass.cpp
Normal file
45
src/PIM/Pass/EmitPimJsonPass.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "mlir/Pass/Pass.h"
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include "Compiler/PimCompilerOptions.hpp"
|
||||
#include "Compiler/PimCompilerUtils.hpp"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
namespace onnx_mlir {
|
||||
|
||||
namespace {
|
||||
|
||||
struct EmitPimJsonPass : PassWrapper<EmitPimJsonPass, OperationPass<ModuleOp>> {
|
||||
MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(EmitPimJsonPass);
|
||||
StringRef getArgument() const override { return "emit-pim-json-pass"; }
|
||||
StringRef getDescription() const override { return "Emit json code for the pim simulators"; }
|
||||
|
||||
EmitPimJsonPass() {}
|
||||
EmitPimJsonPass(const EmitPimJsonPass& pass) {}
|
||||
|
||||
void runOnOperation() final {
|
||||
ModuleOp moduleOp = getOperation();
|
||||
|
||||
std::filesystem::path pimDir(pimOutputDir.data());
|
||||
|
||||
std::error_code error_code;
|
||||
std::filesystem::create_directories(pimDir, error_code);
|
||||
if (error_code) {
|
||||
moduleOp.emitError("Failed to create PIM output directory: " + error_code.message());
|
||||
signalPassFailure();
|
||||
return;
|
||||
}
|
||||
|
||||
int compiler_error_code = compileModuleToPIMJSON(moduleOp, pimOutputDir);
|
||||
if (compiler_error_code != CompilerSuccess)
|
||||
signalPassFailure();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<Pass> createEmitPimJsonPass() { return std::make_unique<EmitPimJsonPass>(); }
|
||||
|
||||
} // namespace onnx_mlir
|
||||
@@ -15,6 +15,8 @@ std::unique_ptr<Pass> createSpatialToPIMPass();
|
||||
|
||||
std::unique_ptr<Pass> createBufferizePimPass();
|
||||
|
||||
std::unique_ptr<Pass> createEmitPimJsonPass();
|
||||
|
||||
std::unique_ptr<Pass> createMessagePass(std::string message);
|
||||
|
||||
std::unique_ptr<Pass> createCountInstructionPass();
|
||||
|
||||
Reference in New Issue
Block a user