brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.3 KiB · 258fed1 Raw
212 lines · cpp
1//===- RegisterAllDialects.cpp - MLIR Dialects 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 dialects and10// passes to the system.11//12//===----------------------------------------------------------------------===//13 14#include "mlir/InitAllDialects.h"15 16#include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h"17#include "mlir/Dialect/AMX/AMXDialect.h"18#include "mlir/Dialect/Affine/IR/AffineOps.h"19#include "mlir/Dialect/Affine/IR/ValueBoundsOpInterfaceImpl.h"20#include "mlir/Dialect/Arith/IR/Arith.h"21#include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h"22#include "mlir/Dialect/Arith/Transforms/BufferDeallocationOpInterfaceImpl.h"23#include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h"24#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"25#include "mlir/Dialect/Arith/Transforms/ShardingInterfaceImpl.h"26#include "mlir/Dialect/ArmNeon/ArmNeonDialect.h"27#include "mlir/Dialect/ArmSME/IR/ArmSME.h"28#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"29#include "mlir/Dialect/Async/IR/Async.h"30#include "mlir/Dialect/Bufferization/IR/Bufferization.h"31#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"32#include "mlir/Dialect/Complex/IR/Complex.h"33#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"34#include "mlir/Dialect/ControlFlow/Transforms/BufferDeallocationOpInterfaceImpl.h"35#include "mlir/Dialect/ControlFlow/Transforms/BufferizableOpInterfaceImpl.h"36#include "mlir/Dialect/DLTI/DLTI.h"37#include "mlir/Dialect/EmitC/IR/EmitC.h"38#include "mlir/Dialect/Func/IR/FuncOps.h"39#include "mlir/Dialect/GPU/IR/GPUDialect.h"40#include "mlir/Dialect/GPU/IR/ValueBoundsOpInterfaceImpl.h"41#include "mlir/Dialect/GPU/Transforms/BufferDeallocationOpInterfaceImpl.h"42#include "mlir/Dialect/IRDL/IR/IRDL.h"43#include "mlir/Dialect/Index/IR/IndexDialect.h"44#include "mlir/Dialect/LLVMIR/LLVMDialect.h"45#include "mlir/Dialect/LLVMIR/NVVMDialect.h"46#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"47#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"48#include "mlir/Dialect/LLVMIR/XeVMDialect.h"49#include "mlir/Dialect/Linalg/IR/Linalg.h"50#include "mlir/Dialect/Linalg/Transforms/AllInterfaces.h"51#include "mlir/Dialect/Linalg/Transforms/RuntimeOpVerification.h"52#include "mlir/Dialect/MLProgram/IR/MLProgram.h"53#include "mlir/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.h"54#include "mlir/Dialect/MPI/IR/MPI.h"55#include "mlir/Dialect/Math/IR/Math.h"56#include "mlir/Dialect/MemRef/IR/MemRef.h"57#include "mlir/Dialect/MemRef/IR/MemRefMemorySlot.h"58#include "mlir/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.h"59#include "mlir/Dialect/MemRef/Transforms/AllocationOpInterfaceImpl.h"60#include "mlir/Dialect/MemRef/Transforms/BufferViewFlowOpInterfaceImpl.h"61#include "mlir/Dialect/MemRef/Transforms/RuntimeOpVerification.h"62#include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h"63#include "mlir/Dialect/OpenACC/OpenACC.h"64#include "mlir/Dialect/OpenMP/OpenMPDialect.h"65#include "mlir/Dialect/PDL/IR/PDL.h"66#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"67#include "mlir/Dialect/Ptr/IR/PtrDialect.h"68#include "mlir/Dialect/Quant/IR/Quant.h"69#include "mlir/Dialect/SCF/IR/SCF.h"70#include "mlir/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.h"71#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"72#include "mlir/Dialect/SCF/Transforms/BufferDeallocationOpInterfaceImpl.h"73#include "mlir/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.h"74#include "mlir/Dialect/SMT/IR/SMTDialect.h"75#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"76#include "mlir/Dialect/Shape/IR/Shape.h"77#include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h"78#include "mlir/Dialect/Shard/IR/ShardDialect.h"79#include "mlir/Dialect/SparseTensor/IR/SparseTensor.h"80#include "mlir/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.h"81#include "mlir/Dialect/Tensor/IR/Tensor.h"82#include "mlir/Dialect/Tensor/IR/TensorInferTypeOpInterfaceImpl.h"83#include "mlir/Dialect/Tensor/IR/TensorTilingInterfaceImpl.h"84#include "mlir/Dialect/Tensor/IR/ValueBoundsOpInterfaceImpl.h"85#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"86#include "mlir/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.h"87#include "mlir/Dialect/Tensor/Transforms/RuntimeOpVerification.h"88#include "mlir/Dialect/Tensor/Transforms/SubsetInsertionOpInterfaceImpl.h"89#include "mlir/Dialect/Tosa/IR/ShardingInterfaceImpl.h"90#include "mlir/Dialect/Tosa/IR/TosaOps.h"91#include "mlir/Dialect/Transform/IR/TransformDialect.h"92#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"93#include "mlir/Dialect/UB/IR/UBOps.h"94#include "mlir/Dialect/Vector/IR/ValueBoundsOpInterfaceImpl.h"95#include "mlir/Dialect/Vector/IR/VectorOps.h"96#include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h"97#include "mlir/Dialect/Vector/Transforms/SubsetOpInterfaceImpl.h"98#include "mlir/Dialect/WasmSSA/IR/WasmSSA.h"99#include "mlir/Dialect/X86Vector/X86VectorDialect.h"100#include "mlir/Dialect/XeGPU/IR/XeGPU.h"101#include "mlir/IR/Dialect.h"102#include "mlir/Interfaces/CastInterfaces.h"103#include "mlir/Target/LLVM/NVVM/Target.h"104#include "mlir/Target/LLVM/ROCDL/Target.h"105#include "mlir/Target/LLVM/XeVM/Target.h"106#include "mlir/Target/SPIRV/Target.h"107 108/// Add all the MLIR dialects to the provided registry.109void mlir::registerAllDialects(DialectRegistry &registry) {110  // clang-format off111  registry.insert<acc::OpenACCDialect,112                  affine::AffineDialect,113                  amdgpu::AMDGPUDialect,114                  amx::AMXDialect,115                  arith::ArithDialect,116                  arm_neon::ArmNeonDialect,117                  arm_sme::ArmSMEDialect,118                  arm_sve::ArmSVEDialect,119                  async::AsyncDialect,120                  bufferization::BufferizationDialect,121                  cf::ControlFlowDialect,122                  complex::ComplexDialect,123                  DLTIDialect,124                  emitc::EmitCDialect,125                  func::FuncDialect,126                  gpu::GPUDialect,127                  index::IndexDialect,128                  irdl::IRDLDialect,129                  linalg::LinalgDialect,130                  LLVM::LLVMDialect,131                  math::MathDialect,132                  memref::MemRefDialect,133                  shard::ShardDialect,134                  ml_program::MLProgramDialect,135                  mpi::MPIDialect,136                  nvgpu::NVGPUDialect,137                  NVVM::NVVMDialect,138                  omp::OpenMPDialect,139                  pdl::PDLDialect,140                  pdl_interp::PDLInterpDialect,141                  ptr::PtrDialect,142                  quant::QuantDialect,143                  ROCDL::ROCDLDialect,144                  scf::SCFDialect,145                  shape::ShapeDialect,146                  smt::SMTDialect,147                  sparse_tensor::SparseTensorDialect,148                  spirv::SPIRVDialect,149                  tensor::TensorDialect,150                  tosa::TosaDialect,151                  transform::TransformDialect,152                  ub::UBDialect,153                  vector::VectorDialect,154                  wasmssa::WasmSSADialect,155                  x86vector::X86VectorDialect,156                  xegpu::XeGPUDialect,157                  xevm::XeVMDialect>();158  // clang-format on159 160  // Register all external models.161  affine::registerValueBoundsOpInterfaceExternalModels(registry);162  arith::registerBufferDeallocationOpInterfaceExternalModels(registry);163  arith::registerBufferizableOpInterfaceExternalModels(registry);164  arith::registerBufferViewFlowOpInterfaceExternalModels(registry);165  arith::registerShardingInterfaceExternalModels(registry);166  arith::registerValueBoundsOpInterfaceExternalModels(registry);167  bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(168      registry);169  builtin::registerCastOpInterfaceExternalModels(registry);170  cf::registerBufferizableOpInterfaceExternalModels(registry);171  cf::registerBufferDeallocationOpInterfaceExternalModels(registry);172  gpu::registerBufferDeallocationOpInterfaceExternalModels(registry);173  gpu::registerValueBoundsOpInterfaceExternalModels(registry);174  LLVM::registerInlinerInterface(registry);175  NVVM::registerInlinerInterface(registry);176  linalg::registerAllDialectInterfaceImplementations(registry);177  linalg::registerRuntimeVerifiableOpInterfaceExternalModels(registry);178  memref::registerAllocationOpInterfaceExternalModels(registry);179  memref::registerBufferViewFlowOpInterfaceExternalModels(registry);180  memref::registerRuntimeVerifiableOpInterfaceExternalModels(registry);181  memref::registerValueBoundsOpInterfaceExternalModels(registry);182  memref::registerMemorySlotExternalModels(registry);183  ml_program::registerBufferizableOpInterfaceExternalModels(registry);184  scf::registerBufferDeallocationOpInterfaceExternalModels(registry);185  scf::registerBufferizableOpInterfaceExternalModels(registry);186  scf::registerValueBoundsOpInterfaceExternalModels(registry);187  shape::registerBufferizableOpInterfaceExternalModels(registry);188  sparse_tensor::registerBufferizableOpInterfaceExternalModels(registry);189  tensor::registerBufferizableOpInterfaceExternalModels(registry);190  tensor::registerFindPayloadReplacementOpInterfaceExternalModels(registry);191  tensor::registerInferTypeOpInterfaceExternalModels(registry);192  tensor::registerRuntimeVerifiableOpInterfaceExternalModels(registry);193  tensor::registerSubsetOpInterfaceExternalModels(registry);194  tensor::registerTilingInterfaceExternalModels(registry);195  tensor::registerValueBoundsOpInterfaceExternalModels(registry);196  tosa::registerShardingInterfaceExternalModels(registry);197  vector::registerBufferizableOpInterfaceExternalModels(registry);198  vector::registerSubsetOpInterfaceExternalModels(registry);199  vector::registerValueBoundsOpInterfaceExternalModels(registry);200  NVVM::registerNVVMTargetInterfaceExternalModels(registry);201  ROCDL::registerROCDLTargetInterfaceExternalModels(registry);202  spirv::registerSPIRVTargetInterfaceExternalModels(registry);203  xevm::registerXeVMTargetInterfaceExternalModels(registry);204}205 206/// Append all the MLIR dialects to the registry contained in the given context.207void mlir::registerAllDialects(MLIRContext &context) {208  DialectRegistry registry;209  registerAllDialects(registry);210  context.appendDialectRegistry(registry);211}212