#pragma once

#include "mlir/Pass/Pass.h"

#include <memory>
#include <string>

namespace onnx_mlir {

std::unique_ptr<mlir::Pass> createONNXToSpatialPass();

std::unique_ptr<mlir::Pass> createSpatialToGraphvizPass();

std::unique_ptr<mlir::Pass> createSpatialToPimPass();

std::unique_ptr<mlir::Pass> createPimBufferizationPass();

std::unique_ptr<mlir::Pass> createPimConstantFoldingPass();

std::unique_ptr<mlir::Pass> createPimMaterializeConstantsPass();

std::unique_ptr<mlir::Pass> createPimVerificationPass();

std::unique_ptr<mlir::Pass> createEmitPimJsonPass();

std::unique_ptr<mlir::Pass> createMessagePass(std::string message);

std::unique_ptr<mlir::Pass> createCountInstructionPass();

} // namespace onnx_mlir
