1135d29c3SAlex Zinenko //===- DialectExtension.cpp - Linalg transform dialect extension ----------===// 2135d29c3SAlex Zinenko // 3135d29c3SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4135d29c3SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information. 5135d29c3SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6135d29c3SAlex Zinenko // 7135d29c3SAlex Zinenko //===----------------------------------------------------------------------===// 8135d29c3SAlex Zinenko 9135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h" 10135d29c3SAlex Zinenko #include "mlir/Dialect/Affine/IR/AffineOps.h" 11135d29c3SAlex Zinenko #include "mlir/Dialect/Arith/IR/Arith.h" 12135d29c3SAlex Zinenko #include "mlir/Dialect/GPU/IR/GPUDialect.h" 1362e90db2SNicolas Vasilache #include "mlir/Dialect/Index/IR/IndexDialect.h" 14135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/IR/Linalg.h" 15135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/TransformOps/LinalgMatchOps.h" 16135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.h" 17584f4017SMatthias Springer #include "mlir/Dialect/Linalg/Transforms/Transforms.h" 18135d29c3SAlex Zinenko #include "mlir/Dialect/SCF/IR/SCF.h" 19135d29c3SAlex Zinenko #include "mlir/Dialect/Tensor/IR/Tensor.h" 20135d29c3SAlex Zinenko #include "mlir/Dialect/Transform/IR/TransformDialect.h" 21584f4017SMatthias Springer #include "mlir/Dialect/Transform/IR/TransformOps.h" 22135d29c3SAlex Zinenko #include "mlir/Dialect/Vector/IR/VectorOps.h" 23135d29c3SAlex Zinenko 24135d29c3SAlex Zinenko using namespace mlir; 25135d29c3SAlex Zinenko 26135d29c3SAlex Zinenko namespace { 27135d29c3SAlex Zinenko /// Registers new ops and declares PDL as dependent dialect since the 28135d29c3SAlex Zinenko /// additional ops are using PDL types for operands and results. 29135d29c3SAlex Zinenko class LinalgTransformDialectExtension 30135d29c3SAlex Zinenko : public transform::TransformDialectExtension< 31135d29c3SAlex Zinenko LinalgTransformDialectExtension> { 32135d29c3SAlex Zinenko public: 33*84cc1865SNikhil Kalra MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(LinalgTransformDialectExtension) 34*84cc1865SNikhil Kalra 35135d29c3SAlex Zinenko using Base::Base; 36135d29c3SAlex Zinenko 37135d29c3SAlex Zinenko void init() { 38135d29c3SAlex Zinenko declareDependentDialect<linalg::LinalgDialect>(); 39135d29c3SAlex Zinenko 40135d29c3SAlex Zinenko declareGeneratedDialect<affine::AffineDialect>(); 41135d29c3SAlex Zinenko declareGeneratedDialect<arith::ArithDialect>(); 4262e90db2SNicolas Vasilache declareGeneratedDialect<index::IndexDialect>(); 43135d29c3SAlex Zinenko declareGeneratedDialect<scf::SCFDialect>(); 44135d29c3SAlex Zinenko declareGeneratedDialect<vector::VectorDialect>(); 45135d29c3SAlex Zinenko declareGeneratedDialect<gpu::GPUDialect>(); 46135d29c3SAlex Zinenko declareGeneratedDialect<tensor::TensorDialect>(); 47135d29c3SAlex Zinenko 48135d29c3SAlex Zinenko registerTransformOps< 49135d29c3SAlex Zinenko #define GET_OP_LIST 50135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp.inc" 51135d29c3SAlex Zinenko >(); 52135d29c3SAlex Zinenko registerTransformOps< 53135d29c3SAlex Zinenko #define GET_OP_LIST 54135d29c3SAlex Zinenko #include "mlir/Dialect/Linalg/TransformOps/LinalgMatchOps.cpp.inc" 55135d29c3SAlex Zinenko >(); 56135d29c3SAlex Zinenko } 57135d29c3SAlex Zinenko }; 58135d29c3SAlex Zinenko } // namespace 59135d29c3SAlex Zinenko 60135d29c3SAlex Zinenko void mlir::linalg::registerTransformDialectExtension( 61135d29c3SAlex Zinenko DialectRegistry ®istry) { 62135d29c3SAlex Zinenko registry.addExtensions<LinalgTransformDialectExtension>(); 63135d29c3SAlex Zinenko } 64