125 lines · cpp
1//===- RegisterAllExtensions.cpp - 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines a helper to trigger the registration of all dialect10// extensions to the system.11//12//===----------------------------------------------------------------------===//13 14#include "mlir/InitAllExtensions.h"15 16#include "mlir/Conversion/ArithToEmitC/ArithToEmitC.h"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/FuncToEmitC/FuncToEmitC.h"21#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"22#include "mlir/Conversion/GPUCommon/GPUToLLVM.h"23#include "mlir/Conversion/GPUToNVVM/GPUToNVVM.h"24#include "mlir/Conversion/IndexToLLVM/IndexToLLVM.h"25#include "mlir/Conversion/MPIToLLVM/MPIToLLVM.h"26#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"27#include "mlir/Conversion/MemRefToEmitC/MemRefToEmitC.h"28#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"29#include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"30#include "mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h"31#include "mlir/Conversion/PtrToLLVM/PtrToLLVM.h"32#include "mlir/Conversion/SCFToEmitC/SCFToEmitC.h"33#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"34#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"35#include "mlir/Conversion/XeVMToLLVM/XeVMToLLVM.h"36#include "mlir/Dialect/AMX/Transforms.h"37#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"38#include "mlir/Dialect/ArmNeon/TransformOps/ArmNeonVectorTransformOps.h"39#include "mlir/Dialect/ArmSVE/TransformOps/ArmSVEVectorTransformOps.h"40#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"41#include "mlir/Dialect/DLTI/TransformOps/DLTITransformOps.h"42#include "mlir/Dialect/Func/Extensions/AllExtensions.h"43#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"44#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"45#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"46#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"47#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"48#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"49#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"50#include "mlir/Dialect/Tensor/Extensions/AllExtensions.h"51#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"52#include "mlir/Dialect/Transform/DebugExtension/DebugExtension.h"53#include "mlir/Dialect/Transform/IRDLExtension/IRDLExtension.h"54#include "mlir/Dialect/Transform/LoopExtension/LoopExtension.h"55#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"56#include "mlir/Dialect/Transform/SMTExtension/SMTExtension.h"57#include "mlir/Dialect/Transform/TuneExtension/TuneExtension.h"58#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"59#include "mlir/Dialect/X86Vector/TransformOps/X86VectorTransformOps.h"60#include "mlir/Dialect/XeGPU/TransformOps/XeGPUTransformOps.h"61#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"62#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"63#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"64#include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"65#include "mlir/Target/LLVMIR/Dialect/XeVM/XeVMToLLVMIRTranslation.h"66 67/// This function may be called to register all MLIR dialect extensions with the68/// provided registry.69/// If you're building a compiler, you generally shouldn't use this: you would70/// individually register the specific extensions that are useful for the71/// pipelines and transformations you are using.72void mlir::registerAllExtensions(DialectRegistry ®istry) {73 // Register all conversions to LLVM extensions.74 registerConvertArithToEmitCInterface(registry);75 arith::registerConvertArithToLLVMInterface(registry);76 registerConvertComplexToLLVMInterface(registry);77 cf::registerConvertControlFlowToLLVMInterface(registry);78 func::registerAllExtensions(registry);79 tensor::registerAllExtensions(registry);80 registerConvertFuncToEmitCInterface(registry);81 registerConvertFuncToLLVMInterface(registry);82 index::registerConvertIndexToLLVMInterface(registry);83 registerConvertMathToLLVMInterface(registry);84 mpi::registerConvertMPIToLLVMInterface(registry);85 registerConvertMemRefToEmitCInterface(registry);86 registerConvertMemRefToLLVMInterface(registry);87 registerConvertNVVMToLLVMInterface(registry);88 ptr::registerConvertPtrToLLVMInterface(registry);89 registerConvertOpenMPToLLVMInterface(registry);90 registerConvertSCFToEmitCInterface(registry);91 ub::registerConvertUBToLLVMInterface(registry);92 registerConvertAMXToLLVMInterface(registry);93 gpu::registerConvertGpuToLLVMInterface(registry);94 NVVM::registerConvertGpuToNVVMInterface(registry);95 vector::registerConvertVectorToLLVMInterface(registry);96 registerConvertXeVMToLLVMInterface(registry);97 98 // Register all transform dialect extensions.99 affine::registerTransformDialectExtension(registry);100 bufferization::registerTransformDialectExtension(registry);101 dlti::registerTransformDialectExtension(registry);102 func::registerTransformDialectExtension(registry);103 gpu::registerTransformDialectExtension(registry);104 linalg::registerTransformDialectExtension(registry);105 memref::registerTransformDialectExtension(registry);106 nvgpu::registerTransformDialectExtension(registry);107 scf::registerTransformDialectExtension(registry);108 sparse_tensor::registerTransformDialectExtension(registry);109 tensor::registerTransformDialectExtension(registry);110 transform::registerDebugExtension(registry);111 transform::registerIRDLExtension(registry);112 transform::registerLoopExtension(registry);113 transform::registerPDLExtension(registry);114 transform::registerSMTExtension(registry);115 transform::registerTuneExtension(registry);116 vector::registerTransformDialectExtension(registry);117 x86vector::registerTransformDialectExtension(registry);118 xegpu::registerTransformDialectExtension(registry);119 arm_neon::registerTransformDialectExtension(registry);120 arm_sve::registerTransformDialectExtension(registry);121 122 // Translation extensions need to be registered by calling123 // `registerAllToLLVMIRTranslations` (see All.h).124}125