xref: /llvm-project/mlir/test/lib/Dialect/Mesh/TestSimplifications.cpp (revision 09dfc5713d7e2342bea4c8447d1ed76c85eb8225)
14b344677SBoian Petkantchin //===- TestSimplification.cpp - Test simplification -----------------------===//
24b344677SBoian Petkantchin //
34b344677SBoian Petkantchin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44b344677SBoian Petkantchin // See https://llvm.org/LICENSE.txt for license information.
54b344677SBoian Petkantchin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
64b344677SBoian Petkantchin //
74b344677SBoian Petkantchin //===----------------------------------------------------------------------===//
84b344677SBoian Petkantchin 
94b344677SBoian Petkantchin #include "mlir/Dialect/Arith/IR/Arith.h"
1031fc0a12SBoian Petkantchin #include "mlir/Dialect/Mesh/IR/MeshDialect.h"
114b344677SBoian Petkantchin #include "mlir/Dialect/Mesh/Transforms/Simplifications.h"
12ab590377SBoian Petkantchin #include "mlir/IR/SymbolTable.h"
134b344677SBoian Petkantchin #include "mlir/Pass/Pass.h"
144b344677SBoian Petkantchin #include "mlir/Transforms/GreedyPatternRewriteDriver.h"
154b344677SBoian Petkantchin 
164b344677SBoian Petkantchin using namespace mlir;
174b344677SBoian Petkantchin 
184b344677SBoian Petkantchin namespace {
194b344677SBoian Petkantchin struct TestMeshSimplificationsPass
204b344677SBoian Petkantchin     : public PassWrapper<TestMeshSimplificationsPass, OperationPass<>> {
214b344677SBoian Petkantchin   MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestMeshSimplificationsPass)
224b344677SBoian Petkantchin 
234b344677SBoian Petkantchin   void runOnOperation() override;
244b344677SBoian Petkantchin   void getDependentDialects(DialectRegistry &registry) const override {
254b344677SBoian Petkantchin     registry.insert<arith::ArithDialect, mesh::MeshDialect>();
264b344677SBoian Petkantchin   }
274b344677SBoian Petkantchin   StringRef getArgument() const final { return "test-mesh-simplifications"; }
284b344677SBoian Petkantchin   StringRef getDescription() const final { return "Test mesh simplifications"; }
294b344677SBoian Petkantchin };
304b344677SBoian Petkantchin } // namespace
314b344677SBoian Petkantchin 
324b344677SBoian Petkantchin void TestMeshSimplificationsPass::runOnOperation() {
334b344677SBoian Petkantchin   RewritePatternSet patterns(&getContext());
34ab590377SBoian Petkantchin   SymbolTableCollection symbolTableCollection;
35ab590377SBoian Petkantchin   mesh::populateSimplificationPatterns(patterns, symbolTableCollection);
36046dffceSJie Fu   [[maybe_unused]] LogicalResult status =
37*09dfc571SJacques Pienaar       applyPatternsGreedily(getOperation(), std::move(patterns));
38ab590377SBoian Petkantchin   assert(succeeded(status) && "Rewrite patters application did not converge.");
394b344677SBoian Petkantchin }
404b344677SBoian Petkantchin 
414b344677SBoian Petkantchin namespace mlir {
424b344677SBoian Petkantchin namespace test {
434b344677SBoian Petkantchin void registerTestMeshSimplificationsPass() {
444b344677SBoian Petkantchin   PassRegistration<TestMeshSimplificationsPass>();
454b344677SBoian Petkantchin }
464b344677SBoian Petkantchin } // namespace test
474b344677SBoian Petkantchin } // namespace mlir
48