brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 4312100 Raw
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 &registry) {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