#include "mlir/Dialect/Tensor/IR/Tensor.h" #include "mlir/IR/PatternMatch.h" #include "src/Accelerators/PIM/Conversion/ONNXToSpatial/ONNXToSpatialCommon.hpp" #include "src/Accelerators/PIM/Dialect/Spatial/SpatialOps.hpp" #include "src/Dialect/ONNX/ONNXOps.hpp" using namespace mlir; namespace onnx_mlir { template struct RemoveUnusedHelperOps : OpRewritePattern { RemoveUnusedHelperOps(MLIRContext* ctx) : OpRewritePattern(ctx) {} void initialize() { this->setHasBoundedRewriteRecursion(); } LogicalResult matchAndRewrite(OpTy op, PatternRewriter& rewriter) const final { if (op.getResult().use_empty()) { rewriter.eraseOp(op); return success(); } return failure(); } }; void populateRemoveUnusedHelperOpsPatterns(RewritePatternSet& patterns, MLIRContext* ctx) { patterns.insert>(ctx); patterns.insert>(ctx); patterns.insert>(ctx); } } // namespace onnx_mlir