1*ba8424a2SMathieu Fehr //===- TestDynDialect.cpp -------------------------------------------------===// 2*ba8424a2SMathieu Fehr // 3*ba8424a2SMathieu Fehr // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*ba8424a2SMathieu Fehr // See https://llvm.org/LICENSE.txt for license information. 5*ba8424a2SMathieu Fehr // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*ba8424a2SMathieu Fehr // 7*ba8424a2SMathieu Fehr //===----------------------------------------------------------------------===// 8*ba8424a2SMathieu Fehr // 9*ba8424a2SMathieu Fehr // This file defines a fake 'test_dyn' dynamic dialect that is used to test the 10*ba8424a2SMathieu Fehr // registration of dynamic dialects. 11*ba8424a2SMathieu Fehr // 12*ba8424a2SMathieu Fehr //===----------------------------------------------------------------------===// 13*ba8424a2SMathieu Fehr 14*ba8424a2SMathieu Fehr #include "mlir/IR/ExtensibleDialect.h" 15*ba8424a2SMathieu Fehr 16*ba8424a2SMathieu Fehr using namespace mlir; 17*ba8424a2SMathieu Fehr 18*ba8424a2SMathieu Fehr namespace test { registerTestDynDialect(DialectRegistry & registry)19*ba8424a2SMathieu Fehrvoid registerTestDynDialect(DialectRegistry ®istry) { 20*ba8424a2SMathieu Fehr registry.insertDynamic( 21*ba8424a2SMathieu Fehr "test_dyn", [](MLIRContext *ctx, DynamicDialect *testDyn) { 22*ba8424a2SMathieu Fehr auto opVerifier = [](Operation *op) -> LogicalResult { 23*ba8424a2SMathieu Fehr if (op->getNumOperands() == 0 && op->getNumResults() == 1 && 24*ba8424a2SMathieu Fehr op->getNumRegions() == 0) 25*ba8424a2SMathieu Fehr return success(); 26*ba8424a2SMathieu Fehr return op->emitError( 27*ba8424a2SMathieu Fehr "expected a single result, no operands and no regions"); 28*ba8424a2SMathieu Fehr }; 29*ba8424a2SMathieu Fehr 30*ba8424a2SMathieu Fehr auto opRegionVerifier = [](Operation *op) { return success(); }; 31*ba8424a2SMathieu Fehr 32*ba8424a2SMathieu Fehr testDyn->registerDynamicOp(DynamicOpDefinition::get( 33*ba8424a2SMathieu Fehr "one_result", testDyn, opVerifier, opRegionVerifier)); 34*ba8424a2SMathieu Fehr }); 35*ba8424a2SMathieu Fehr } 36*ba8424a2SMathieu Fehr } // namespace test 37