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 ®istry) { 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