xref: /llvm-project/mlir/include/mlir/InitAllExtensions.h (revision 7498eaa9abf2e4ac0c10fa9a02576d708cc1b624)
1 //===- InitAllExtensions.h - MLIR Extension 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 dialect
10 // extensions to the system.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef MLIR_INITALLEXTENSIONS_H_
15 #define MLIR_INITALLEXTENSIONS_H_
16 
17 #include "mlir/Conversion/ArithToLLVM/ArithToLLVM.h"
18 #include "mlir/Conversion/ComplexToLLVM/ComplexToLLVM.h"
19 #include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
20 #include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
21 #include "mlir/Conversion/GPUCommon/GPUToLLVM.h"
22 #include "mlir/Conversion/GPUToNVVM/GPUToNVVM.h"
23 #include "mlir/Conversion/IndexToLLVM/IndexToLLVM.h"
24 #include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
25 #include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
26 #include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"
27 #include "mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h"
28 #include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
29 #include "mlir/Dialect/AMX/Transforms.h"
30 #include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
31 #include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
32 #include "mlir/Dialect/DLTI/TransformOps/DLTITransformOps.h"
33 #include "mlir/Dialect/Func/Extensions/AllExtensions.h"
34 #include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
35 #include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
36 #include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
37 #include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
38 #include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
39 #include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
40 #include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
41 #include "mlir/Dialect/Tensor/Extensions/AllExtensions.h"
42 #include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
43 #include "mlir/Dialect/Transform/DebugExtension/DebugExtension.h"
44 #include "mlir/Dialect/Transform/IRDLExtension/IRDLExtension.h"
45 #include "mlir/Dialect/Transform/LoopExtension/LoopExtension.h"
46 #include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
47 #include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
48 #include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
49 #include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
50 #include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
51 #include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"
52 
53 #include <cstdlib>
54 
55 namespace mlir {
56 
57 /// This function may be called to register all MLIR dialect extensions with the
58 /// provided registry.
59 /// If you're building a compiler, you generally shouldn't use this: you would
60 /// individually register the specific extensions that are useful for the
61 /// pipelines and transformations you are using.
62 inline void registerAllExtensions(DialectRegistry &registry) {
63   // Register all conversions to LLVM extensions.
64   arith::registerConvertArithToLLVMInterface(registry);
65   registerConvertComplexToLLVMInterface(registry);
66   cf::registerConvertControlFlowToLLVMInterface(registry);
67   func::registerAllExtensions(registry);
68   tensor::registerAllExtensions(registry);
69   registerConvertFuncToLLVMInterface(registry);
70   index::registerConvertIndexToLLVMInterface(registry);
71   registerConvertMathToLLVMInterface(registry);
72   registerConvertMemRefToLLVMInterface(registry);
73   registerConvertNVVMToLLVMInterface(registry);
74   registerConvertOpenMPToLLVMInterface(registry);
75   ub::registerConvertUBToLLVMInterface(registry);
76   registerConvertAMXToLLVMInterface(registry);
77   gpu::registerConvertGpuToLLVMInterface(registry);
78   NVVM::registerConvertGpuToNVVMInterface(registry);
79 
80   // Register all transform dialect extensions.
81   affine::registerTransformDialectExtension(registry);
82   bufferization::registerTransformDialectExtension(registry);
83   dlti::registerTransformDialectExtension(registry);
84   func::registerTransformDialectExtension(registry);
85   gpu::registerTransformDialectExtension(registry);
86   linalg::registerTransformDialectExtension(registry);
87   memref::registerTransformDialectExtension(registry);
88   nvgpu::registerTransformDialectExtension(registry);
89   scf::registerTransformDialectExtension(registry);
90   sparse_tensor::registerTransformDialectExtension(registry);
91   tensor::registerTransformDialectExtension(registry);
92   transform::registerDebugExtension(registry);
93   transform::registerIRDLExtension(registry);
94   transform::registerLoopExtension(registry);
95   transform::registerPDLExtension(registry);
96   vector::registerTransformDialectExtension(registry);
97 
98   // Translation extensions need to be registered by calling
99   // `registerAllToLLVMIRTranslations` (see All.h).
100 }
101 
102 } // namespace mlir
103 
104 #endif // MLIR_INITALLEXTENSIONS_H_
105