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/IndexToLLVM/IndexToLLVM.h"
22#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
23#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
24#include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"
25#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
26#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
27#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
28#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
29#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
30#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
31#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
32#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
33#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
34#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
35#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
36#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
37#include "mlir/Dialect/Transform/DebugExtension/DebugExtension.h"
38#include "mlir/Dialect/Transform/LoopExtension/LoopExtension.h"
39#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
40#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
41#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
42#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
43#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
44#include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"
45
46#include <cstdlib>
47
48namespace mlir {
49
50/// This function may be called to register all MLIR dialect extensions with the
51/// provided registry.
52/// If you're building a compiler, you generally shouldn't use this: you would
53/// individually register the specific extensions that are useful for the
54/// pipelines and transformations you are using.
55inline void registerAllExtensions(DialectRegistry &registry) {
56 // Register all conversions to LLVM extensions.
57 arith::registerConvertArithToLLVMInterface(registry);
58 registerConvertComplexToLLVMInterface(registry);
59 cf::registerConvertControlFlowToLLVMInterface(registry);
60 func::registerAllExtensions(registry);
61 registerConvertFuncToLLVMInterface(registry);
62 index::registerConvertIndexToLLVMInterface(registry);
63 registerConvertMathToLLVMInterface(registry);
64 registerConvertMemRefToLLVMInterface(registry);
65 registerConvertNVVMToLLVMInterface(registry);
66 ub::registerConvertUBToLLVMInterface(registry);
67
68 // Register all transform dialect extensions.
69 affine::registerTransformDialectExtension(registry);
70 bufferization::registerTransformDialectExtension(registry);
71 func::registerTransformDialectExtension(registry);
72 gpu::registerTransformDialectExtension(registry);
73 linalg::registerTransformDialectExtension(registry);
74 memref::registerTransformDialectExtension(registry);
75 nvgpu::registerTransformDialectExtension(registry);
76 scf::registerTransformDialectExtension(registry);
77 sparse_tensor::registerTransformDialectExtension(registry);
78 tensor::registerTransformDialectExtension(registry);
79 transform::registerDebugExtension(dialectRegistry&: registry);
80 transform::registerLoopExtension(dialectRegistry&: registry);
81 transform::registerPDLExtension(dialectRegistry&: registry);
82 vector::registerTransformDialectExtension(registry);
83
84 // Translation extensions need to be registered by calling
85 // `registerAllToLLVMIRTranslations` (see All.h).
86}
87
88} // namespace mlir
89
90#endif // MLIR_INITALLEXTENSIONS_H_
91

source code of mlir/include/mlir/InitAllExtensions.h