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 ®istry) 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