| //===- TestDialect.h - MLIR Dialect for testing -----------------*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file defines a fake 'test' dialect that can be used for testing things | |
| // that do not have a respective counterpart in the main source directories. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef MLIR_TESTDIALECT_H | |
| #define MLIR_TESTDIALECT_H | |
| #include "TestAttributes.h" | |
| #include "TestInterfaces.h" | |
| #include "TestTypes.h" | |
| #include "mlir/Bytecode/BytecodeImplementation.h" | |
| #include "mlir/Dialect/Bufferization/IR/Bufferization.h" | |
| #include "mlir/Dialect/DLTI/DLTI.h" | |
| #include "mlir/Dialect/DLTI/Traits.h" | |
| #include "mlir/Dialect/Func/IR/FuncOps.h" | |
| #include "mlir/Dialect/Linalg/IR/Linalg.h" | |
| #include "mlir/Dialect/Traits.h" | |
| #include "mlir/IR/AsmState.h" | |
| #include "mlir/IR/BuiltinOps.h" | |
| #include "mlir/IR/BuiltinTypes.h" | |
| #include "mlir/IR/Dialect.h" | |
| #include "mlir/IR/DialectResourceBlobManager.h" | |
| #include "mlir/IR/ExtensibleDialect.h" | |
| #include "mlir/IR/OpDefinition.h" | |
| #include "mlir/IR/OpImplementation.h" | |
| #include "mlir/IR/RegionKindInterface.h" | |
| #include "mlir/IR/SymbolTable.h" | |
| #include "mlir/Interfaces/CallInterfaces.h" | |
| #include "mlir/Interfaces/ControlFlowInterfaces.h" | |
| #include "mlir/Interfaces/DerivedAttributeOpInterface.h" | |
| #include "mlir/Interfaces/InferIntRangeInterface.h" | |
| #include "mlir/Interfaces/InferTypeOpInterface.h" | |
| #include "mlir/Interfaces/LoopLikeInterface.h" | |
| #include "mlir/Interfaces/SideEffectInterfaces.h" | |
| #include "mlir/Interfaces/ValueBoundsOpInterface.h" | |
| #include "mlir/Interfaces/ViewLikeInterface.h" | |
| #include "llvm/ADT/SetVector.h" | |
| #include <memory> | |
| namespace mlir { | |
| class RewritePatternSet; | |
| } // end namespace mlir | |
| //===----------------------------------------------------------------------===// | |
| // TestDialect | |
| //===----------------------------------------------------------------------===// | |
| #include "TestOpsDialect.h.inc" | |
| namespace test { | |
| //===----------------------------------------------------------------------===// | |
| // TestDialect version utilities | |
| //===----------------------------------------------------------------------===// | |
| struct TestDialectVersion : public mlir::DialectVersion { | |
| TestDialectVersion() = default; | |
| TestDialectVersion(uint32_t majorVersion, uint32_t minorVersion) | |
| : major_(majorVersion), minor_(minorVersion){}; | |
| // We cannot use 'major' and 'minor' here because these identifiers may | |
| // already be used by <sys/types.h> on many POSIX systems including Linux and | |
| // FreeBSD. | |
| uint32_t major_ = 2; | |
| uint32_t minor_ = 0; | |
| }; | |
| } // namespace test | |
| namespace test { | |
| // Op deliberately defined in C++ code rather than ODS to test that C++ | |
| // Ops can still use the old `fold` method. | |
| class ManualCppOpWithFold | |
| : public mlir::Op<ManualCppOpWithFold, mlir::OpTrait::OneResult> { | |
| public: | |
| using Op::Op; | |
| static llvm::StringRef getOperationName() { | |
| return "test.manual_cpp_op_with_fold"; | |
| } | |
| static llvm::ArrayRef<llvm::StringRef> getAttributeNames() { return {}; } | |
| mlir::OpFoldResult fold(llvm::ArrayRef<mlir::Attribute> attributes); | |
| }; | |
| void registerTestDialect(::mlir::DialectRegistry ®istry); | |
| void populateTestReductionPatterns(::mlir::RewritePatternSet &patterns); | |
| void testSideEffectOpGetEffect( | |
| mlir::Operation *op, | |
| llvm::SmallVectorImpl< | |
| mlir::SideEffects::EffectInstance<mlir::TestEffects::Effect>> &effects); | |
| } // namespace test | |
| #endif // MLIR_TESTDIALECT_H |