1 | //===- InitAllDialects.h - MLIR Dialects Registration -----------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // This file defines a helper to trigger the registration of all dialects and |
10 | // passes to the system. |
11 | // |
12 | //===----------------------------------------------------------------------===// |
13 | |
14 | #ifndef MLIR_INITALLDIALECTS_H_ |
15 | #define MLIR_INITALLDIALECTS_H_ |
16 | |
17 | #include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h" |
18 | #include "mlir/Dialect/AMX/AMXDialect.h" |
19 | #include "mlir/Dialect/Affine/IR/AffineOps.h" |
20 | #include "mlir/Dialect/Affine/IR/ValueBoundsOpInterfaceImpl.h" |
21 | #include "mlir/Dialect/Arith/IR/Arith.h" |
22 | #include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h" |
23 | #include "mlir/Dialect/Arith/Transforms/BufferDeallocationOpInterfaceImpl.h" |
24 | #include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h" |
25 | #include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h" |
26 | #include "mlir/Dialect/ArmNeon/ArmNeonDialect.h" |
27 | #include "mlir/Dialect/ArmSME/IR/ArmSME.h" |
28 | #include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h" |
29 | #include "mlir/Dialect/Async/IR/Async.h" |
30 | #include "mlir/Dialect/Bufferization/IR/Bufferization.h" |
31 | #include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h" |
32 | #include "mlir/Dialect/Complex/IR/Complex.h" |
33 | #include "mlir/Dialect/ControlFlow/IR/ControlFlow.h" |
34 | #include "mlir/Dialect/ControlFlow/Transforms/BufferDeallocationOpInterfaceImpl.h" |
35 | #include "mlir/Dialect/ControlFlow/Transforms/BufferizableOpInterfaceImpl.h" |
36 | #include "mlir/Dialect/DLTI/DLTI.h" |
37 | #include "mlir/Dialect/EmitC/IR/EmitC.h" |
38 | #include "mlir/Dialect/Func/IR/FuncOps.h" |
39 | #include "mlir/Dialect/GPU/IR/GPUDialect.h" |
40 | #include "mlir/Dialect/GPU/Transforms/BufferDeallocationOpInterfaceImpl.h" |
41 | #include "mlir/Dialect/IRDL/IR/IRDL.h" |
42 | #include "mlir/Dialect/Index/IR/IndexDialect.h" |
43 | #include "mlir/Dialect/LLVMIR/LLVMDialect.h" |
44 | #include "mlir/Dialect/LLVMIR/NVVMDialect.h" |
45 | #include "mlir/Dialect/LLVMIR/ROCDLDialect.h" |
46 | #include "mlir/Dialect/Linalg/IR/Linalg.h" |
47 | #include "mlir/Dialect/Linalg/Transforms/AllInterfaces.h" |
48 | #include "mlir/Dialect/MLProgram/IR/MLProgram.h" |
49 | #include "mlir/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.h" |
50 | #include "mlir/Dialect/MPI/IR/MPI.h" |
51 | #include "mlir/Dialect/Math/IR/Math.h" |
52 | #include "mlir/Dialect/MemRef/IR/MemRef.h" |
53 | #include "mlir/Dialect/MemRef/IR/MemRefMemorySlot.h" |
54 | #include "mlir/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.h" |
55 | #include "mlir/Dialect/MemRef/Transforms/AllocationOpInterfaceImpl.h" |
56 | #include "mlir/Dialect/MemRef/Transforms/BufferViewFlowOpInterfaceImpl.h" |
57 | #include "mlir/Dialect/MemRef/Transforms/RuntimeOpVerification.h" |
58 | #include "mlir/Dialect/Mesh/IR/MeshDialect.h" |
59 | #include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h" |
60 | #include "mlir/Dialect/OpenACC/OpenACC.h" |
61 | #include "mlir/Dialect/OpenMP/OpenMPDialect.h" |
62 | #include "mlir/Dialect/PDL/IR/PDL.h" |
63 | #include "mlir/Dialect/PDLInterp/IR/PDLInterp.h" |
64 | #include "mlir/Dialect/Polynomial/IR/PolynomialDialect.h" |
65 | #include "mlir/Dialect/Quant/QuantOps.h" |
66 | #include "mlir/Dialect/SCF/IR/SCF.h" |
67 | #include "mlir/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.h" |
68 | #include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h" |
69 | #include "mlir/Dialect/SCF/Transforms/BufferDeallocationOpInterfaceImpl.h" |
70 | #include "mlir/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.h" |
71 | #include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h" |
72 | #include "mlir/Dialect/Shape/IR/Shape.h" |
73 | #include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h" |
74 | #include "mlir/Dialect/SparseTensor/IR/SparseTensor.h" |
75 | #include "mlir/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.h" |
76 | #include "mlir/Dialect/Tensor/IR/Tensor.h" |
77 | #include "mlir/Dialect/Tensor/IR/TensorInferTypeOpInterfaceImpl.h" |
78 | #include "mlir/Dialect/Tensor/IR/TensorTilingInterfaceImpl.h" |
79 | #include "mlir/Dialect/Tensor/IR/ValueBoundsOpInterfaceImpl.h" |
80 | #include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h" |
81 | #include "mlir/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.h" |
82 | #include "mlir/Dialect/Tensor/Transforms/SubsetInsertionOpInterfaceImpl.h" |
83 | #include "mlir/Dialect/Tosa/IR/ShardingInterfaceImpl.h" |
84 | #include "mlir/Dialect/Tosa/IR/TosaOps.h" |
85 | #include "mlir/Dialect/Transform/IR/TransformDialect.h" |
86 | #include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h" |
87 | #include "mlir/Dialect/UB/IR/UBOps.h" |
88 | #include "mlir/Dialect/Vector/IR/ValueBoundsOpInterfaceImpl.h" |
89 | #include "mlir/Dialect/Vector/IR/VectorOps.h" |
90 | #include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h" |
91 | #include "mlir/Dialect/Vector/Transforms/SubsetOpInterfaceImpl.h" |
92 | #include "mlir/Dialect/X86Vector/X86VectorDialect.h" |
93 | #include "mlir/Dialect/XeGPU/IR/XeGPU.h" |
94 | #include "mlir/IR/Dialect.h" |
95 | #include "mlir/Interfaces/CastInterfaces.h" |
96 | #include "mlir/Target/LLVM/NVVM/Target.h" |
97 | #include "mlir/Target/LLVM/ROCDL/Target.h" |
98 | #include "mlir/Target/SPIRV/Target.h" |
99 | |
100 | namespace mlir { |
101 | |
102 | /// Add all the MLIR dialects to the provided registry. |
103 | inline void registerAllDialects(DialectRegistry ®istry) { |
104 | // clang-format off |
105 | registry.insert<acc::OpenACCDialect, |
106 | affine::AffineDialect, |
107 | amdgpu::AMDGPUDialect, |
108 | amx::AMXDialect, |
109 | arith::ArithDialect, |
110 | arm_neon::ArmNeonDialect, |
111 | arm_sme::ArmSMEDialect, |
112 | arm_sve::ArmSVEDialect, |
113 | async::AsyncDialect, |
114 | bufferization::BufferizationDialect, |
115 | cf::ControlFlowDialect, |
116 | complex::ComplexDialect, |
117 | DLTIDialect, |
118 | emitc::EmitCDialect, |
119 | func::FuncDialect, |
120 | gpu::GPUDialect, |
121 | index::IndexDialect, |
122 | irdl::IRDLDialect, |
123 | linalg::LinalgDialect, |
124 | LLVM::LLVMDialect, |
125 | math::MathDialect, |
126 | memref::MemRefDialect, |
127 | mesh::MeshDialect, |
128 | ml_program::MLProgramDialect, |
129 | mpi::MPIDialect, |
130 | nvgpu::NVGPUDialect, |
131 | NVVM::NVVMDialect, |
132 | omp::OpenMPDialect, |
133 | pdl::PDLDialect, |
134 | pdl_interp::PDLInterpDialect, |
135 | polynomial::PolynomialDialect, |
136 | quant::QuantizationDialect, |
137 | ROCDL::ROCDLDialect, |
138 | scf::SCFDialect, |
139 | shape::ShapeDialect, |
140 | sparse_tensor::SparseTensorDialect, |
141 | spirv::SPIRVDialect, |
142 | tensor::TensorDialect, |
143 | tosa::TosaDialect, |
144 | transform::TransformDialect, |
145 | ub::UBDialect, |
146 | vector::VectorDialect, |
147 | x86vector::X86VectorDialect, |
148 | xegpu::XeGPUDialect>(); |
149 | // clang-format on |
150 | |
151 | // Register all external models. |
152 | affine::registerValueBoundsOpInterfaceExternalModels(registry); |
153 | arith::registerBufferDeallocationOpInterfaceExternalModels(registry); |
154 | arith::registerBufferizableOpInterfaceExternalModels(registry); |
155 | arith::registerBufferViewFlowOpInterfaceExternalModels(registry); |
156 | arith::registerValueBoundsOpInterfaceExternalModels(registry); |
157 | bufferization::func_ext::registerBufferizableOpInterfaceExternalModels( |
158 | registry); |
159 | builtin::registerCastOpInterfaceExternalModels(registry); |
160 | cf::registerBufferizableOpInterfaceExternalModels(registry); |
161 | cf::registerBufferDeallocationOpInterfaceExternalModels(registry); |
162 | gpu::registerBufferDeallocationOpInterfaceExternalModels(registry); |
163 | linalg::registerAllDialectInterfaceImplementations(registry); |
164 | memref::registerAllocationOpInterfaceExternalModels(registry); |
165 | memref::registerBufferViewFlowOpInterfaceExternalModels(registry); |
166 | memref::registerRuntimeVerifiableOpInterfaceExternalModels(registry); |
167 | memref::registerValueBoundsOpInterfaceExternalModels(registry); |
168 | memref::registerMemorySlotExternalModels(registry); |
169 | ml_program::registerBufferizableOpInterfaceExternalModels(registry); |
170 | scf::registerBufferDeallocationOpInterfaceExternalModels(registry); |
171 | scf::registerBufferizableOpInterfaceExternalModels(registry); |
172 | scf::registerValueBoundsOpInterfaceExternalModels(registry); |
173 | shape::registerBufferizableOpInterfaceExternalModels(registry); |
174 | sparse_tensor::registerBufferizableOpInterfaceExternalModels(registry); |
175 | tensor::registerBufferizableOpInterfaceExternalModels(registry); |
176 | tensor::registerFindPayloadReplacementOpInterfaceExternalModels(registry); |
177 | tensor::registerInferTypeOpInterfaceExternalModels(registry); |
178 | tensor::registerSubsetOpInterfaceExternalModels(registry); |
179 | tensor::registerTilingInterfaceExternalModels(registry); |
180 | tensor::registerValueBoundsOpInterfaceExternalModels(registry); |
181 | tosa::registerShardingInterfaceExternalModels(registry); |
182 | vector::registerBufferizableOpInterfaceExternalModels(registry); |
183 | vector::registerSubsetOpInterfaceExternalModels(registry); |
184 | vector::registerValueBoundsOpInterfaceExternalModels(registry); |
185 | NVVM::registerNVVMTargetInterfaceExternalModels(registry); |
186 | ROCDL::registerROCDLTargetInterfaceExternalModels(registry); |
187 | spirv::registerSPIRVTargetInterfaceExternalModels(registry); |
188 | } |
189 | |
190 | /// Append all the MLIR dialects to the registry contained in the given context. |
191 | inline void registerAllDialects(MLIRContext &context) { |
192 | DialectRegistry registry; |
193 | registerAllDialects(registry); |
194 | context.appendDialectRegistry(registry); |
195 | } |
196 | |
197 | } // namespace mlir |
198 | |
199 | #endif // MLIR_INITALLDIALECTS_H_ |
200 | |