add automatic patches to onnx-mlir with CMakeLists.txt

This commit is contained in:
NiccoloN
2026-02-25 13:00:55 +01:00
parent 77f815a7a2
commit 5ca8916f4f
10 changed files with 169 additions and 63 deletions

View 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

View File

@@ -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();