[mlir][core] Move InitAll***
implementation into static library. (#150805)
`InitAll***` functions are used by `opt`-style tools to init all MLIR dialects/passes/extensions. Currently they are implemeted as inline functions and include essentially the entire MLIR header tree. Each file which includes this header (~10 currently) takes 10+ sec and multiple GB of ram to compile (tested with clang-19), which limits amount of parallel compiler jobs which can be run. Also, flang just includes this file into one of its headers. Move the actual registration code to the static library, so it's compiled only once. Discourse thread https://discourse.llvm.org/t/rfc-moving-initall-implementation-into-static-library/87559
This commit is contained in:
parent
76bebb5be9
commit
ace42cf063
@ -1,26 +1,23 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
|
||||
include_directories(${LLVM_MAIN_SRC_DIR}/../mlir/include)
|
||||
include_directories(${CMAKE_BINARY_DIR}/tools/mlir/include)
|
||||
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
${test_libs}
|
||||
clangCIR
|
||||
clangCIRLoweringDirectToLLVM
|
||||
MLIRCIR
|
||||
MLIRAffineAnalysis
|
||||
MLIRAnalysis
|
||||
MLIRCIR
|
||||
MLIRDialect
|
||||
MLIRIR
|
||||
MLIRLspServerLib
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllPasses
|
||||
MLIRSupport
|
||||
MLIRIR
|
||||
MLIRTransformUtils
|
||||
MLIRTransforms
|
||||
)
|
||||
|
||||
add_mlir_tool(cir-lsp-server
|
||||
|
@ -17,11 +17,12 @@
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRef.h"
|
||||
#include "mlir/InitAllPasses.h"
|
||||
#include "mlir/IR/BuiltinDialect.h"
|
||||
#include "mlir/Pass/PassManager.h"
|
||||
#include "mlir/Pass/PassOptions.h"
|
||||
#include "mlir/Pass/PassRegistry.h"
|
||||
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
||||
#include "mlir/Transforms/Passes.h"
|
||||
#include "clang/CIR/Dialect/IR/CIRDialect.h"
|
||||
#include "clang/CIR/Dialect/Passes.h"
|
||||
#include "clang/CIR/Passes.h"
|
||||
|
@ -20,12 +20,20 @@
|
||||
#include "flang/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.h"
|
||||
#include "flang/Optimizer/OpenMP/Support/RegisterOpenMPExtensions.h"
|
||||
#include "mlir/Conversion/Passes.h"
|
||||
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||
#include "mlir/Dialect/Affine/Passes.h"
|
||||
#include "mlir/Dialect/Complex/IR/Complex.h"
|
||||
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
|
||||
#include "mlir/Dialect/DLTI/DLTI.h"
|
||||
#include "mlir/Dialect/Func/Extensions/InlinerExtension.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/Index/IR/IndexDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Math/IR/Math.h"
|
||||
#include "mlir/Dialect/OpenACC/OpenACC.h"
|
||||
#include "mlir/Dialect/OpenACC/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/Passes.h"
|
||||
#include "mlir/InitAllDialects.h"
|
||||
#include "mlir/Pass/Pass.h"
|
||||
|
@ -1,6 +1,3 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
|
||||
add_flang_library(FIRSupport
|
||||
DataLayout.cpp
|
||||
InitFIR.cpp
|
||||
@ -23,12 +20,12 @@ add_flang_library(FIRSupport
|
||||
${extension_libs}
|
||||
|
||||
MLIR_LIBS
|
||||
${dialect_libs}
|
||||
${extension_libs}
|
||||
MLIRBuiltinToLLVMIRTranslation
|
||||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIROpenACCToLLVMIRTranslation
|
||||
MLIROpenMPToLLVMIRTranslation
|
||||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRTargetLLVMIRExport
|
||||
MLIRTargetLLVMIRImport
|
||||
)
|
||||
|
@ -1,12 +1,10 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
MLIRArithDialect
|
||||
MLIROptLib
|
||||
MLIRStandalone
|
||||
)
|
||||
MLIRArithDialect
|
||||
MLIROptLib
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllPasses
|
||||
MLIRStandalone
|
||||
)
|
||||
add_llvm_executable(standalone-opt standalone-opt.cpp)
|
||||
|
||||
llvm_update_compile_flags(standalone-opt)
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Arith/IR/Arith.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/IR/MLIRContext.h"
|
||||
#include "mlir/InitAllDialects.h"
|
||||
#include "mlir/InitAllPasses.h"
|
||||
|
@ -27,12 +27,8 @@ add_toy_chapter(toyc-ch5
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
target_link_libraries(toyc-ch5
|
||||
PRIVATE
|
||||
${dialect_libs}
|
||||
${extension_libs}
|
||||
MLIRAnalysis
|
||||
MLIRCallInterfaces
|
||||
MLIRCastInterfaces
|
||||
@ -40,6 +36,9 @@ target_link_libraries(toyc-ch5
|
||||
MLIRIR
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRSideEffectInterfaces
|
||||
MLIRSupport
|
||||
MLIRTransforms)
|
||||
MLIRTransforms
|
||||
)
|
||||
|
@ -11,6 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/IR/Diagnostics.h"
|
||||
#include "toy/AST.h"
|
||||
#include "toy/Dialect.h"
|
||||
|
@ -37,14 +37,8 @@ add_toy_chapter(toyc-ch6
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
target_link_libraries(toyc-ch6
|
||||
PRIVATE
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
${extension_libs}
|
||||
MLIRAnalysis
|
||||
MLIRBuiltinToLLVMIRTranslation
|
||||
MLIRCallInterfaces
|
||||
@ -58,8 +52,11 @@ target_link_libraries(toyc-ch6
|
||||
MLIRMemRefDialect
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
MLIRSideEffectInterfaces
|
||||
MLIRSupport
|
||||
MLIRTargetLLVMIRExport
|
||||
MLIRTransforms
|
||||
)
|
||||
)
|
||||
|
@ -11,6 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||
#include "toy/AST.h"
|
||||
|
@ -36,14 +36,8 @@ add_toy_chapter(toyc-ch7
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
target_link_libraries(toyc-ch7
|
||||
PRIVATE
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
${extension_libs}
|
||||
MLIRAnalysis
|
||||
MLIRBuiltinToLLVMIRTranslation
|
||||
MLIRCallInterfaces
|
||||
@ -56,7 +50,10 @@ target_link_libraries(toyc-ch7
|
||||
MLIRMemRefDialect
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
MLIRSideEffectInterfaces
|
||||
MLIRTargetLLVMIRExport
|
||||
MLIRTransforms
|
||||
)
|
||||
)
|
||||
|
@ -11,6 +11,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||
#include "toy/AST.h"
|
||||
|
@ -1,18 +1,14 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
|
||||
set(LIBS
|
||||
MLIRAnalysis
|
||||
MLIRIR
|
||||
MLIRParser
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
MLIRSupport
|
||||
MLIRTransformDialect
|
||||
MLIRTransformDialectTransforms
|
||||
MLIRTransforms
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
${extension_libs}
|
||||
)
|
||||
|
||||
add_mlir_tool(mlir-transform-opt
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/InitLLVM.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/ToolOutputFile.h"
|
||||
#include <cstdlib>
|
||||
|
@ -14,200 +14,15 @@
|
||||
#ifndef MLIR_INITALLDIALECTS_H_
|
||||
#define MLIR_INITALLDIALECTS_H_
|
||||
|
||||
#include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h"
|
||||
#include "mlir/Dialect/AMX/AMXDialect.h"
|
||||
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||
#include "mlir/Dialect/Affine/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/IR/Arith.h"
|
||||
#include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/ShardingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/ArmNeon/ArmNeonDialect.h"
|
||||
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/Async/IR/Async.h"
|
||||
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
|
||||
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Complex/IR/Complex.h"
|
||||
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
|
||||
#include "mlir/Dialect/ControlFlow/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/ControlFlow/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/DLTI/DLTI.h"
|
||||
#include "mlir/Dialect/EmitC/IR/EmitC.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
|
||||
#include "mlir/Dialect/GPU/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/GPU/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/IRDL/IR/IRDL.h"
|
||||
#include "mlir/Dialect/Index/IR/IndexDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||
#include "mlir/Dialect/LLVMIR/XeVMDialect.h"
|
||||
#include "mlir/Dialect/Linalg/IR/Linalg.h"
|
||||
#include "mlir/Dialect/Linalg/Transforms/AllInterfaces.h"
|
||||
#include "mlir/Dialect/Linalg/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/MLProgram/IR/MLProgram.h"
|
||||
#include "mlir/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MPI/IR/MPI.h"
|
||||
#include "mlir/Dialect/Math/IR/Math.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRef.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRefMemorySlot.h"
|
||||
#include "mlir/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/AllocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/BufferViewFlowOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h"
|
||||
#include "mlir/Dialect/OpenACC/OpenACC.h"
|
||||
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
|
||||
#include "mlir/Dialect/PDL/IR/PDL.h"
|
||||
#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"
|
||||
#include "mlir/Dialect/Ptr/IR/PtrDialect.h"
|
||||
#include "mlir/Dialect/Quant/IR/Quant.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SMT/IR/SMTDialect.h"
|
||||
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
|
||||
#include "mlir/Dialect/Shape/IR/Shape.h"
|
||||
#include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Shard/IR/ShardDialect.h"
|
||||
#include "mlir/Dialect/SparseTensor/IR/SparseTensor.h"
|
||||
#include "mlir/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/Tensor.h"
|
||||
#include "mlir/Dialect/Tensor/IR/TensorInferTypeOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/TensorTilingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/SubsetInsertionOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tosa/IR/ShardingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tosa/IR/TosaOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
|
||||
#include "mlir/Dialect/UB/IR/UBOps.h"
|
||||
#include "mlir/Dialect/Vector/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/SubsetOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/X86Vector/X86VectorDialect.h"
|
||||
#include "mlir/Dialect/XeGPU/IR/XeGPU.h"
|
||||
#include "mlir/IR/Dialect.h"
|
||||
#include "mlir/Interfaces/CastInterfaces.h"
|
||||
#include "mlir/Target/LLVM/NVVM/Target.h"
|
||||
#include "mlir/Target/LLVM/ROCDL/Target.h"
|
||||
#include "mlir/Target/SPIRV/Target.h"
|
||||
|
||||
namespace mlir {
|
||||
class DialectRegistry;
|
||||
class MLIRContext;
|
||||
|
||||
/// Add all the MLIR dialects to the provided registry.
|
||||
inline void registerAllDialects(DialectRegistry ®istry) {
|
||||
// clang-format off
|
||||
registry.insert<acc::OpenACCDialect,
|
||||
affine::AffineDialect,
|
||||
amdgpu::AMDGPUDialect,
|
||||
amx::AMXDialect,
|
||||
arith::ArithDialect,
|
||||
arm_neon::ArmNeonDialect,
|
||||
arm_sme::ArmSMEDialect,
|
||||
arm_sve::ArmSVEDialect,
|
||||
async::AsyncDialect,
|
||||
bufferization::BufferizationDialect,
|
||||
cf::ControlFlowDialect,
|
||||
complex::ComplexDialect,
|
||||
DLTIDialect,
|
||||
emitc::EmitCDialect,
|
||||
func::FuncDialect,
|
||||
gpu::GPUDialect,
|
||||
index::IndexDialect,
|
||||
irdl::IRDLDialect,
|
||||
linalg::LinalgDialect,
|
||||
LLVM::LLVMDialect,
|
||||
math::MathDialect,
|
||||
memref::MemRefDialect,
|
||||
shard::ShardDialect,
|
||||
ml_program::MLProgramDialect,
|
||||
mpi::MPIDialect,
|
||||
nvgpu::NVGPUDialect,
|
||||
NVVM::NVVMDialect,
|
||||
omp::OpenMPDialect,
|
||||
pdl::PDLDialect,
|
||||
pdl_interp::PDLInterpDialect,
|
||||
ptr::PtrDialect,
|
||||
quant::QuantDialect,
|
||||
ROCDL::ROCDLDialect,
|
||||
scf::SCFDialect,
|
||||
shape::ShapeDialect,
|
||||
smt::SMTDialect,
|
||||
sparse_tensor::SparseTensorDialect,
|
||||
spirv::SPIRVDialect,
|
||||
tensor::TensorDialect,
|
||||
tosa::TosaDialect,
|
||||
transform::TransformDialect,
|
||||
ub::UBDialect,
|
||||
vector::VectorDialect,
|
||||
x86vector::X86VectorDialect,
|
||||
xegpu::XeGPUDialect,
|
||||
xevm::XeVMDialect>();
|
||||
// clang-format on
|
||||
|
||||
// Register all external models.
|
||||
affine::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferViewFlowOpInterfaceExternalModels(registry);
|
||||
arith::registerShardingInterfaceExternalModels(registry);
|
||||
arith::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(
|
||||
registry);
|
||||
builtin::registerCastOpInterfaceExternalModels(registry);
|
||||
cf::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
cf::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
gpu::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
gpu::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
LLVM::registerInlinerInterface(registry);
|
||||
NVVM::registerInlinerInterface(registry);
|
||||
linalg::registerAllDialectInterfaceImplementations(registry);
|
||||
linalg::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
memref::registerAllocationOpInterfaceExternalModels(registry);
|
||||
memref::registerBufferViewFlowOpInterfaceExternalModels(registry);
|
||||
memref::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
memref::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
memref::registerMemorySlotExternalModels(registry);
|
||||
ml_program::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
scf::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
scf::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
scf::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
shape::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
sparse_tensor::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
tensor::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
tensor::registerFindPayloadReplacementOpInterfaceExternalModels(registry);
|
||||
tensor::registerInferTypeOpInterfaceExternalModels(registry);
|
||||
tensor::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
tensor::registerSubsetOpInterfaceExternalModels(registry);
|
||||
tensor::registerTilingInterfaceExternalModels(registry);
|
||||
tensor::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
tosa::registerShardingInterfaceExternalModels(registry);
|
||||
vector::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
vector::registerSubsetOpInterfaceExternalModels(registry);
|
||||
vector::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
NVVM::registerNVVMTargetInterfaceExternalModels(registry);
|
||||
ROCDL::registerROCDLTargetInterfaceExternalModels(registry);
|
||||
spirv::registerSPIRVTargetInterfaceExternalModels(registry);
|
||||
}
|
||||
void registerAllDialects(DialectRegistry ®istry);
|
||||
|
||||
/// Append all the MLIR dialects to the registry contained in the given context.
|
||||
inline void registerAllDialects(MLIRContext &context) {
|
||||
DialectRegistry registry;
|
||||
registerAllDialects(registry);
|
||||
context.appendDialectRegistry(registry);
|
||||
}
|
||||
void registerAllDialects(MLIRContext &context);
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
|
@ -14,110 +14,15 @@
|
||||
#ifndef MLIR_INITALLEXTENSIONS_H_
|
||||
#define MLIR_INITALLEXTENSIONS_H_
|
||||
|
||||
#include "mlir/Conversion/ArithToEmitC/ArithToEmitC.h"
|
||||
#include "mlir/Conversion/ArithToLLVM/ArithToLLVM.h"
|
||||
#include "mlir/Conversion/ComplexToLLVM/ComplexToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToEmitC/FuncToEmitC.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/GPUCommon/GPUToLLVM.h"
|
||||
#include "mlir/Conversion/GPUToNVVM/GPUToNVVM.h"
|
||||
#include "mlir/Conversion/IndexToLLVM/IndexToLLVM.h"
|
||||
#include "mlir/Conversion/MPIToLLVM/MPIToLLVM.h"
|
||||
#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
|
||||
#include "mlir/Conversion/MemRefToEmitC/MemRefToEmitC.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"
|
||||
#include "mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h"
|
||||
#include "mlir/Conversion/SCFToEmitC/SCFToEmitC.h"
|
||||
#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
|
||||
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
||||
#include "mlir/Conversion/XeVMToLLVM/XeVMToLLVM.h"
|
||||
#include "mlir/Dialect/AMX/Transforms.h"
|
||||
#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
|
||||
#include "mlir/Dialect/ArmNeon/TransformOps/ArmNeonVectorTransformOps.h"
|
||||
#include "mlir/Dialect/ArmSVE/TransformOps/ArmSVEVectorTransformOps.h"
|
||||
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
|
||||
#include "mlir/Dialect/DLTI/TransformOps/DLTITransformOps.h"
|
||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
|
||||
#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
|
||||
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
|
||||
#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
|
||||
#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
|
||||
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
|
||||
#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
|
||||
#include "mlir/Dialect/Tensor/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
|
||||
#include "mlir/Dialect/Transform/DebugExtension/DebugExtension.h"
|
||||
#include "mlir/Dialect/Transform/IRDLExtension/IRDLExtension.h"
|
||||
#include "mlir/Dialect/Transform/LoopExtension/LoopExtension.h"
|
||||
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
|
||||
#include "mlir/Dialect/Transform/TuneExtension/TuneExtension.h"
|
||||
#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace mlir {
|
||||
class DialectRegistry;
|
||||
|
||||
/// This function may be called to register all MLIR dialect extensions with the
|
||||
/// provided registry.
|
||||
/// If you're building a compiler, you generally shouldn't use this: you would
|
||||
/// individually register the specific extensions that are useful for the
|
||||
/// pipelines and transformations you are using.
|
||||
inline void registerAllExtensions(DialectRegistry ®istry) {
|
||||
// Register all conversions to LLVM extensions.
|
||||
registerConvertArithToEmitCInterface(registry);
|
||||
arith::registerConvertArithToLLVMInterface(registry);
|
||||
registerConvertComplexToLLVMInterface(registry);
|
||||
cf::registerConvertControlFlowToLLVMInterface(registry);
|
||||
func::registerAllExtensions(registry);
|
||||
tensor::registerAllExtensions(registry);
|
||||
registerConvertFuncToEmitCInterface(registry);
|
||||
registerConvertFuncToLLVMInterface(registry);
|
||||
index::registerConvertIndexToLLVMInterface(registry);
|
||||
registerConvertMathToLLVMInterface(registry);
|
||||
mpi::registerConvertMPIToLLVMInterface(registry);
|
||||
registerConvertMemRefToEmitCInterface(registry);
|
||||
registerConvertMemRefToLLVMInterface(registry);
|
||||
registerConvertNVVMToLLVMInterface(registry);
|
||||
registerConvertOpenMPToLLVMInterface(registry);
|
||||
registerConvertSCFToEmitCInterface(registry);
|
||||
ub::registerConvertUBToLLVMInterface(registry);
|
||||
registerConvertAMXToLLVMInterface(registry);
|
||||
gpu::registerConvertGpuToLLVMInterface(registry);
|
||||
NVVM::registerConvertGpuToNVVMInterface(registry);
|
||||
vector::registerConvertVectorToLLVMInterface(registry);
|
||||
registerConvertXeVMToLLVMInterface(registry);
|
||||
|
||||
// Register all transform dialect extensions.
|
||||
affine::registerTransformDialectExtension(registry);
|
||||
bufferization::registerTransformDialectExtension(registry);
|
||||
dlti::registerTransformDialectExtension(registry);
|
||||
func::registerTransformDialectExtension(registry);
|
||||
gpu::registerTransformDialectExtension(registry);
|
||||
linalg::registerTransformDialectExtension(registry);
|
||||
memref::registerTransformDialectExtension(registry);
|
||||
nvgpu::registerTransformDialectExtension(registry);
|
||||
scf::registerTransformDialectExtension(registry);
|
||||
sparse_tensor::registerTransformDialectExtension(registry);
|
||||
tensor::registerTransformDialectExtension(registry);
|
||||
transform::registerDebugExtension(registry);
|
||||
transform::registerIRDLExtension(registry);
|
||||
transform::registerLoopExtension(registry);
|
||||
transform::registerPDLExtension(registry);
|
||||
transform::registerTuneExtension(registry);
|
||||
vector::registerTransformDialectExtension(registry);
|
||||
arm_neon::registerTransformDialectExtension(registry);
|
||||
arm_sve::registerTransformDialectExtension(registry);
|
||||
|
||||
// Translation extensions need to be registered by calling
|
||||
// `registerAllToLLVMIRTranslations` (see All.h).
|
||||
}
|
||||
void registerAllExtensions(DialectRegistry ®istry);
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
//===- LinkAllPassesAndDialects.h - MLIR Registration -----------*- C++ -*-===//
|
||||
//===- InitAllPasses.h - MLIR Registration ----------------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
@ -6,50 +6,14 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines a helper to trigger the registration of all dialects and
|
||||
// passes to the system.
|
||||
// This file defines a helper to trigger the registration of all passes to the
|
||||
// system.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MLIR_INITALLPASSES_H_
|
||||
#define MLIR_INITALLPASSES_H_
|
||||
|
||||
#include "mlir/Conversion/Passes.h"
|
||||
#include "mlir/Dialect/AMDGPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Affine/Passes.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/ArmSME/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Async/Passes.h"
|
||||
#include "mlir/Dialect/Bufferization/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/Bufferization/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/EmitC/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Func/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/GPU/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/GPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Linalg/Passes.h"
|
||||
#include "mlir/Dialect/MLProgram/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Math/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/NVGPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/OpenACC/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Quant/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SPIRV/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Shape/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Shard/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SparseTensor/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/SparseTensor/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Tosa/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/XeGPU/Transforms/Passes.h"
|
||||
#include "mlir/Transforms/Passes.h"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
namespace mlir {
|
||||
|
||||
// This function may be called to register the MLIR passes with the
|
||||
@ -59,49 +23,7 @@ namespace mlir {
|
||||
// registry, since it would already be calling the creation routine of the
|
||||
// individual passes.
|
||||
// The global registry is interesting to interact with the command-line tools.
|
||||
inline void registerAllPasses() {
|
||||
// General passes
|
||||
registerTransformsPasses();
|
||||
|
||||
// Conversion passes
|
||||
registerConversionPasses();
|
||||
|
||||
// Dialect passes
|
||||
acc::registerOpenACCPasses();
|
||||
affine::registerAffinePasses();
|
||||
amdgpu::registerAMDGPUPasses();
|
||||
registerAsyncPasses();
|
||||
arith::registerArithPasses();
|
||||
bufferization::registerBufferizationPasses();
|
||||
func::registerFuncPasses();
|
||||
registerGPUPasses();
|
||||
registerLinalgPasses();
|
||||
registerNVGPUPasses();
|
||||
registerSparseTensorPasses();
|
||||
LLVM::registerLLVMPasses();
|
||||
math::registerMathPasses();
|
||||
memref::registerMemRefPasses();
|
||||
shard::registerShardPasses();
|
||||
ml_program::registerMLProgramPasses();
|
||||
quant::registerQuantPasses();
|
||||
registerSCFPasses();
|
||||
registerShapePasses();
|
||||
spirv::registerSPIRVPasses();
|
||||
tensor::registerTensorPasses();
|
||||
tosa::registerTosaOptPasses();
|
||||
transform::registerTransformPasses();
|
||||
vector::registerVectorPasses();
|
||||
arm_sme::registerArmSMEPasses();
|
||||
arm_sve::registerArmSVEPasses();
|
||||
emitc::registerEmitCPasses();
|
||||
xegpu::registerXeGPUPasses();
|
||||
|
||||
// Dialect pipelines
|
||||
bufferization::registerBufferizationPipelines();
|
||||
sparse_tensor::registerSparseTensorPipelines();
|
||||
tosa::registerTosaToLinalgPipelines();
|
||||
gpu::registerGPUToNVVMPipeline();
|
||||
}
|
||||
void registerAllPasses();
|
||||
|
||||
} // namespace mlir
|
||||
|
||||
|
@ -1,19 +1,16 @@
|
||||
# Dialect registration.
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(translation_libs GLOBAL PROPERTY MLIR_TRANSLATION_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
add_mlir_upstream_c_api_library(MLIRCAPIRegisterEverything
|
||||
RegisterEverything.cpp
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
${dialect_libs}
|
||||
${translation_libs}
|
||||
${conversion_libs}
|
||||
${extension_libs}
|
||||
|
||||
MLIRBuiltinToLLVMIRTranslation
|
||||
MLIRCAPIIR
|
||||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIRCAPITransforms
|
||||
MLIRLLVMToLLVMIRTranslation
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
)
|
||||
|
@ -20,3 +20,35 @@ add_subdirectory(Target)
|
||||
add_subdirectory(Tools)
|
||||
add_subdirectory(Transforms)
|
||||
add_subdirectory(ExecutionEngine)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
|
||||
add_mlir_library(MLIRRegisterAllDialects
|
||||
RegisterAllDialects.cpp
|
||||
|
||||
PARTIAL_SOURCES_INTENDED
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
${dialect_libs}
|
||||
)
|
||||
|
||||
add_mlir_library(MLIRRegisterAllPasses
|
||||
RegisterAllPasses.cpp
|
||||
|
||||
PARTIAL_SOURCES_INTENDED
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
${dialect_libs} # Some passes are part of the dialect libs
|
||||
${conversion_libs}
|
||||
)
|
||||
|
||||
add_mlir_library(MLIRRegisterAllExtensions
|
||||
RegisterAllExtensions.cpp
|
||||
|
||||
PARTIAL_SOURCES_INTENDED
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
${extension_libs}
|
||||
)
|
||||
|
207
mlir/lib/RegisterAllDialects.cpp
Normal file
207
mlir/lib/RegisterAllDialects.cpp
Normal file
@ -0,0 +1,207 @@
|
||||
//===- RegisterAllDialects.cpp - MLIR Dialects Registration -----*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines a helper to trigger the registration of all dialects and
|
||||
// passes to the system.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/InitAllDialects.h"
|
||||
|
||||
#include "mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h"
|
||||
#include "mlir/Dialect/AMX/AMXDialect.h"
|
||||
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||
#include "mlir/Dialect/Affine/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/IR/Arith.h"
|
||||
#include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/ShardingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/ArmNeon/ArmNeonDialect.h"
|
||||
#include "mlir/Dialect/ArmSME/IR/ArmSME.h"
|
||||
#include "mlir/Dialect/ArmSVE/IR/ArmSVEDialect.h"
|
||||
#include "mlir/Dialect/Async/IR/Async.h"
|
||||
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
|
||||
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Complex/IR/Complex.h"
|
||||
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
|
||||
#include "mlir/Dialect/ControlFlow/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/ControlFlow/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/DLTI/DLTI.h"
|
||||
#include "mlir/Dialect/EmitC/IR/EmitC.h"
|
||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
|
||||
#include "mlir/Dialect/GPU/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/GPU/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/IRDL/IR/IRDL.h"
|
||||
#include "mlir/Dialect/Index/IR/IndexDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||
#include "mlir/Dialect/LLVMIR/XeVMDialect.h"
|
||||
#include "mlir/Dialect/Linalg/IR/Linalg.h"
|
||||
#include "mlir/Dialect/Linalg/Transforms/AllInterfaces.h"
|
||||
#include "mlir/Dialect/Linalg/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/MLProgram/IR/MLProgram.h"
|
||||
#include "mlir/Dialect/MLProgram/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MPI/IR/MPI.h"
|
||||
#include "mlir/Dialect/Math/IR/Math.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRef.h"
|
||||
#include "mlir/Dialect/MemRef/IR/MemRefMemorySlot.h"
|
||||
#include "mlir/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/AllocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/BufferViewFlowOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h"
|
||||
#include "mlir/Dialect/OpenACC/OpenACC.h"
|
||||
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
|
||||
#include "mlir/Dialect/PDL/IR/PDL.h"
|
||||
#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"
|
||||
#include "mlir/Dialect/Ptr/IR/PtrDialect.h"
|
||||
#include "mlir/Dialect/Quant/IR/Quant.h"
|
||||
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||
#include "mlir/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/BufferDeallocationOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/SMT/IR/SMTDialect.h"
|
||||
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
|
||||
#include "mlir/Dialect/Shape/IR/Shape.h"
|
||||
#include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Shard/IR/ShardDialect.h"
|
||||
#include "mlir/Dialect/SparseTensor/IR/SparseTensor.h"
|
||||
#include "mlir/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/Tensor.h"
|
||||
#include "mlir/Dialect/Tensor/IR/TensorInferTypeOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/TensorTilingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/RuntimeOpVerification.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/SubsetInsertionOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tosa/IR/ShardingInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Tosa/IR/TosaOps.h"
|
||||
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
|
||||
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
|
||||
#include "mlir/Dialect/UB/IR/UBOps.h"
|
||||
#include "mlir/Dialect/Vector/IR/ValueBoundsOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Vector/IR/VectorOps.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/SubsetOpInterfaceImpl.h"
|
||||
#include "mlir/Dialect/X86Vector/X86VectorDialect.h"
|
||||
#include "mlir/Dialect/XeGPU/IR/XeGPU.h"
|
||||
#include "mlir/IR/Dialect.h"
|
||||
#include "mlir/Interfaces/CastInterfaces.h"
|
||||
#include "mlir/Target/LLVM/NVVM/Target.h"
|
||||
#include "mlir/Target/LLVM/ROCDL/Target.h"
|
||||
#include "mlir/Target/SPIRV/Target.h"
|
||||
|
||||
/// Add all the MLIR dialects to the provided registry.
|
||||
void mlir::registerAllDialects(DialectRegistry ®istry) {
|
||||
// clang-format off
|
||||
registry.insert<acc::OpenACCDialect,
|
||||
affine::AffineDialect,
|
||||
amdgpu::AMDGPUDialect,
|
||||
amx::AMXDialect,
|
||||
arith::ArithDialect,
|
||||
arm_neon::ArmNeonDialect,
|
||||
arm_sme::ArmSMEDialect,
|
||||
arm_sve::ArmSVEDialect,
|
||||
async::AsyncDialect,
|
||||
bufferization::BufferizationDialect,
|
||||
cf::ControlFlowDialect,
|
||||
complex::ComplexDialect,
|
||||
DLTIDialect,
|
||||
emitc::EmitCDialect,
|
||||
func::FuncDialect,
|
||||
gpu::GPUDialect,
|
||||
index::IndexDialect,
|
||||
irdl::IRDLDialect,
|
||||
linalg::LinalgDialect,
|
||||
LLVM::LLVMDialect,
|
||||
math::MathDialect,
|
||||
memref::MemRefDialect,
|
||||
shard::ShardDialect,
|
||||
ml_program::MLProgramDialect,
|
||||
mpi::MPIDialect,
|
||||
nvgpu::NVGPUDialect,
|
||||
NVVM::NVVMDialect,
|
||||
omp::OpenMPDialect,
|
||||
pdl::PDLDialect,
|
||||
pdl_interp::PDLInterpDialect,
|
||||
ptr::PtrDialect,
|
||||
quant::QuantDialect,
|
||||
ROCDL::ROCDLDialect,
|
||||
scf::SCFDialect,
|
||||
shape::ShapeDialect,
|
||||
smt::SMTDialect,
|
||||
sparse_tensor::SparseTensorDialect,
|
||||
spirv::SPIRVDialect,
|
||||
tensor::TensorDialect,
|
||||
tosa::TosaDialect,
|
||||
transform::TransformDialect,
|
||||
ub::UBDialect,
|
||||
vector::VectorDialect,
|
||||
x86vector::X86VectorDialect,
|
||||
xegpu::XeGPUDialect,
|
||||
xevm::XeVMDialect>();
|
||||
// clang-format on
|
||||
|
||||
// Register all external models.
|
||||
affine::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
arith::registerBufferViewFlowOpInterfaceExternalModels(registry);
|
||||
arith::registerShardingInterfaceExternalModels(registry);
|
||||
arith::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(
|
||||
registry);
|
||||
builtin::registerCastOpInterfaceExternalModels(registry);
|
||||
cf::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
cf::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
gpu::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
gpu::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
LLVM::registerInlinerInterface(registry);
|
||||
NVVM::registerInlinerInterface(registry);
|
||||
linalg::registerAllDialectInterfaceImplementations(registry);
|
||||
linalg::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
memref::registerAllocationOpInterfaceExternalModels(registry);
|
||||
memref::registerBufferViewFlowOpInterfaceExternalModels(registry);
|
||||
memref::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
memref::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
memref::registerMemorySlotExternalModels(registry);
|
||||
ml_program::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
scf::registerBufferDeallocationOpInterfaceExternalModels(registry);
|
||||
scf::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
scf::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
shape::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
sparse_tensor::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
tensor::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
tensor::registerFindPayloadReplacementOpInterfaceExternalModels(registry);
|
||||
tensor::registerInferTypeOpInterfaceExternalModels(registry);
|
||||
tensor::registerRuntimeVerifiableOpInterfaceExternalModels(registry);
|
||||
tensor::registerSubsetOpInterfaceExternalModels(registry);
|
||||
tensor::registerTilingInterfaceExternalModels(registry);
|
||||
tensor::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
tosa::registerShardingInterfaceExternalModels(registry);
|
||||
vector::registerBufferizableOpInterfaceExternalModels(registry);
|
||||
vector::registerSubsetOpInterfaceExternalModels(registry);
|
||||
vector::registerValueBoundsOpInterfaceExternalModels(registry);
|
||||
NVVM::registerNVVMTargetInterfaceExternalModels(registry);
|
||||
ROCDL::registerROCDLTargetInterfaceExternalModels(registry);
|
||||
spirv::registerSPIRVTargetInterfaceExternalModels(registry);
|
||||
}
|
||||
|
||||
/// Append all the MLIR dialects to the registry contained in the given context.
|
||||
void mlir::registerAllDialects(MLIRContext &context) {
|
||||
DialectRegistry registry;
|
||||
registerAllDialects(registry);
|
||||
context.appendDialectRegistry(registry);
|
||||
}
|
115
mlir/lib/RegisterAllExtensions.cpp
Normal file
115
mlir/lib/RegisterAllExtensions.cpp
Normal file
@ -0,0 +1,115 @@
|
||||
//===- RegisterAllExtensions.cpp - MLIR Extension Registration --*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines a helper to trigger the registration of all dialect
|
||||
// extensions to the system.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/InitAllExtensions.h"
|
||||
|
||||
#include "mlir/Conversion/ArithToEmitC/ArithToEmitC.h"
|
||||
#include "mlir/Conversion/ArithToLLVM/ArithToLLVM.h"
|
||||
#include "mlir/Conversion/ComplexToLLVM/ComplexToLLVM.h"
|
||||
#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
|
||||
#include "mlir/Conversion/FuncToEmitC/FuncToEmitC.h"
|
||||
#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
|
||||
#include "mlir/Conversion/GPUCommon/GPUToLLVM.h"
|
||||
#include "mlir/Conversion/GPUToNVVM/GPUToNVVM.h"
|
||||
#include "mlir/Conversion/IndexToLLVM/IndexToLLVM.h"
|
||||
#include "mlir/Conversion/MPIToLLVM/MPIToLLVM.h"
|
||||
#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
|
||||
#include "mlir/Conversion/MemRefToEmitC/MemRefToEmitC.h"
|
||||
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
|
||||
#include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"
|
||||
#include "mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h"
|
||||
#include "mlir/Conversion/SCFToEmitC/SCFToEmitC.h"
|
||||
#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
|
||||
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
||||
#include "mlir/Conversion/XeVMToLLVM/XeVMToLLVM.h"
|
||||
#include "mlir/Dialect/AMX/Transforms.h"
|
||||
#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
|
||||
#include "mlir/Dialect/ArmNeon/TransformOps/ArmNeonVectorTransformOps.h"
|
||||
#include "mlir/Dialect/ArmSVE/TransformOps/ArmSVEVectorTransformOps.h"
|
||||
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
|
||||
#include "mlir/Dialect/DLTI/TransformOps/DLTITransformOps.h"
|
||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
|
||||
#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
|
||||
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
|
||||
#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
|
||||
#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
|
||||
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
|
||||
#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
|
||||
#include "mlir/Dialect/Tensor/Extensions/AllExtensions.h"
|
||||
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
|
||||
#include "mlir/Dialect/Transform/DebugExtension/DebugExtension.h"
|
||||
#include "mlir/Dialect/Transform/IRDLExtension/IRDLExtension.h"
|
||||
#include "mlir/Dialect/Transform/LoopExtension/LoopExtension.h"
|
||||
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
|
||||
#include "mlir/Dialect/Transform/TuneExtension/TuneExtension.h"
|
||||
#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
|
||||
#include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"
|
||||
|
||||
/// This function may be called to register all MLIR dialect extensions with the
|
||||
/// provided registry.
|
||||
/// If you're building a compiler, you generally shouldn't use this: you would
|
||||
/// individually register the specific extensions that are useful for the
|
||||
/// pipelines and transformations you are using.
|
||||
void mlir::registerAllExtensions(DialectRegistry ®istry) {
|
||||
// Register all conversions to LLVM extensions.
|
||||
registerConvertArithToEmitCInterface(registry);
|
||||
arith::registerConvertArithToLLVMInterface(registry);
|
||||
registerConvertComplexToLLVMInterface(registry);
|
||||
cf::registerConvertControlFlowToLLVMInterface(registry);
|
||||
func::registerAllExtensions(registry);
|
||||
tensor::registerAllExtensions(registry);
|
||||
registerConvertFuncToEmitCInterface(registry);
|
||||
registerConvertFuncToLLVMInterface(registry);
|
||||
index::registerConvertIndexToLLVMInterface(registry);
|
||||
registerConvertMathToLLVMInterface(registry);
|
||||
mpi::registerConvertMPIToLLVMInterface(registry);
|
||||
registerConvertMemRefToEmitCInterface(registry);
|
||||
registerConvertMemRefToLLVMInterface(registry);
|
||||
registerConvertNVVMToLLVMInterface(registry);
|
||||
registerConvertOpenMPToLLVMInterface(registry);
|
||||
registerConvertSCFToEmitCInterface(registry);
|
||||
ub::registerConvertUBToLLVMInterface(registry);
|
||||
registerConvertAMXToLLVMInterface(registry);
|
||||
gpu::registerConvertGpuToLLVMInterface(registry);
|
||||
NVVM::registerConvertGpuToNVVMInterface(registry);
|
||||
vector::registerConvertVectorToLLVMInterface(registry);
|
||||
registerConvertXeVMToLLVMInterface(registry);
|
||||
|
||||
// Register all transform dialect extensions.
|
||||
affine::registerTransformDialectExtension(registry);
|
||||
bufferization::registerTransformDialectExtension(registry);
|
||||
dlti::registerTransformDialectExtension(registry);
|
||||
func::registerTransformDialectExtension(registry);
|
||||
gpu::registerTransformDialectExtension(registry);
|
||||
linalg::registerTransformDialectExtension(registry);
|
||||
memref::registerTransformDialectExtension(registry);
|
||||
nvgpu::registerTransformDialectExtension(registry);
|
||||
scf::registerTransformDialectExtension(registry);
|
||||
sparse_tensor::registerTransformDialectExtension(registry);
|
||||
tensor::registerTransformDialectExtension(registry);
|
||||
transform::registerDebugExtension(registry);
|
||||
transform::registerIRDLExtension(registry);
|
||||
transform::registerLoopExtension(registry);
|
||||
transform::registerPDLExtension(registry);
|
||||
transform::registerTuneExtension(registry);
|
||||
vector::registerTransformDialectExtension(registry);
|
||||
arm_neon::registerTransformDialectExtension(registry);
|
||||
arm_sve::registerTransformDialectExtension(registry);
|
||||
|
||||
// Translation extensions need to be registered by calling
|
||||
// `registerAllToLLVMIRTranslations` (see All.h).
|
||||
}
|
99
mlir/lib/RegisterAllPasses.cpp
Normal file
99
mlir/lib/RegisterAllPasses.cpp
Normal file
@ -0,0 +1,99 @@
|
||||
//===- RegisterAllPasses.cpp - MLIR Registration ----------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines a helper to trigger the registration of all passes to the
|
||||
// system.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/InitAllPasses.h"
|
||||
|
||||
#include "mlir/Conversion/Passes.h"
|
||||
#include "mlir/Dialect/AMDGPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Affine/Passes.h"
|
||||
#include "mlir/Dialect/Arith/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/ArmSME/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/ArmSVE/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Async/Passes.h"
|
||||
#include "mlir/Dialect/Bufferization/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/Bufferization/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/EmitC/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Func/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/GPU/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/GPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/LLVMIR/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Linalg/Passes.h"
|
||||
#include "mlir/Dialect/MLProgram/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Math/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/MemRef/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/NVGPU/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/OpenACC/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Quant/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SCF/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SPIRV/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Shape/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Shard/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/SparseTensor/Pipelines/Passes.h"
|
||||
#include "mlir/Dialect/SparseTensor/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Tensor/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Tosa/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Transform/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/Vector/Transforms/Passes.h"
|
||||
#include "mlir/Dialect/XeGPU/Transforms/Passes.h"
|
||||
#include "mlir/Transforms/Passes.h"
|
||||
|
||||
// This function may be called to register the MLIR passes with the
|
||||
// global registry.
|
||||
// If you're building a compiler, you likely don't need this: you would build a
|
||||
// pipeline programmatically without the need to register with the global
|
||||
// registry, since it would already be calling the creation routine of the
|
||||
// individual passes.
|
||||
// The global registry is interesting to interact with the command-line tools.
|
||||
void mlir::registerAllPasses() {
|
||||
// General passes
|
||||
registerTransformsPasses();
|
||||
|
||||
// Conversion passes
|
||||
registerConversionPasses();
|
||||
|
||||
// Dialect passes
|
||||
acc::registerOpenACCPasses();
|
||||
affine::registerAffinePasses();
|
||||
amdgpu::registerAMDGPUPasses();
|
||||
registerAsyncPasses();
|
||||
arith::registerArithPasses();
|
||||
bufferization::registerBufferizationPasses();
|
||||
func::registerFuncPasses();
|
||||
registerGPUPasses();
|
||||
registerLinalgPasses();
|
||||
registerNVGPUPasses();
|
||||
registerSparseTensorPasses();
|
||||
LLVM::registerLLVMPasses();
|
||||
math::registerMathPasses();
|
||||
memref::registerMemRefPasses();
|
||||
shard::registerShardPasses();
|
||||
ml_program::registerMLProgramPasses();
|
||||
quant::registerQuantPasses();
|
||||
registerSCFPasses();
|
||||
registerShapePasses();
|
||||
spirv::registerSPIRVPasses();
|
||||
tensor::registerTensorPasses();
|
||||
tosa::registerTosaOptPasses();
|
||||
transform::registerTransformPasses();
|
||||
vector::registerVectorPasses();
|
||||
arm_sme::registerArmSMEPasses();
|
||||
arm_sve::registerArmSVEPasses();
|
||||
emitc::registerEmitCPasses();
|
||||
xegpu::registerXeGPUPasses();
|
||||
|
||||
// Dialect pipelines
|
||||
bufferization::registerBufferizationPipelines();
|
||||
sparse_tensor::registerSparseTensorPipelines();
|
||||
tosa::registerTosaToLinalgPipelines();
|
||||
gpu::registerGPUToNVVMPipeline();
|
||||
}
|
@ -2,8 +2,6 @@ set(LLVM_OPTIONAL_SOURCES
|
||||
null.cpp
|
||||
)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
set(LLVM_LINK_COMPONENTS
|
||||
Core
|
||||
Support
|
||||
@ -35,22 +33,11 @@ if(MLIR_INCLUDE_TESTS)
|
||||
endif()
|
||||
|
||||
set(LIBS
|
||||
${conversion_libs}
|
||||
${dialect_libs}
|
||||
${extension_libs}
|
||||
|
||||
MLIRAffineAnalysis
|
||||
MLIRAnalysis
|
||||
MLIRDialect
|
||||
MLIRFuncAllExtensions
|
||||
MLIRLspServerLib
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRTensorAllExtensions
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
MLIRSupport
|
||||
MLIRIR
|
||||
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
)
|
||||
|
||||
add_mlir_tool(mlir-lsp-server
|
||||
|
@ -6,6 +6,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/IR/DialectRegistry.h"
|
||||
#include "mlir/IR/MLIRContext.h"
|
||||
#include "mlir/InitAllDialects.h"
|
||||
#include "mlir/InitAllExtensions.h"
|
||||
|
@ -2,9 +2,6 @@ set(LLVM_OPTIONAL_SOURCES
|
||||
null.cpp
|
||||
)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
|
||||
set(LLVM_LINK_COMPONENTS
|
||||
Core
|
||||
Support
|
||||
@ -65,21 +62,11 @@ if(MLIR_INCLUDE_TESTS)
|
||||
endif()
|
||||
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
${conversion_libs}
|
||||
${extension_libs}
|
||||
|
||||
MLIRAffineAnalysis
|
||||
MLIRAnalysis
|
||||
MLIRCastInterfaces
|
||||
MLIRDialect
|
||||
MLIROptLib
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
MLIRSupport
|
||||
MLIRIR
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllExtensions
|
||||
MLIRRegisterAllPasses
|
||||
|
||||
# TODO: Remove when registerAllGPUToLLVMIRTranslations is no longer
|
||||
# registered directly in mlir-opt.cpp.
|
||||
|
@ -1,5 +1,3 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
|
||||
if(MLIR_INCLUDE_TESTS)
|
||||
set(test_libs
|
||||
MLIRTestDialect
|
||||
@ -12,8 +10,8 @@ add_mlir_tool(mlir-query
|
||||
llvm_update_compile_flags(mlir-query)
|
||||
mlir_target_link_libraries(mlir-query
|
||||
PRIVATE
|
||||
${dialect_libs}
|
||||
MLIRQueryLib
|
||||
MLIRRegisterAllDialects
|
||||
)
|
||||
target_link_libraries(mlir-query PRIVATE ${test_libs})
|
||||
|
||||
|
@ -1,6 +1,3 @@
|
||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
|
||||
if(MLIR_INCLUDE_TESTS)
|
||||
set(test_libs
|
||||
MLIRTestDialect
|
||||
@ -8,12 +5,9 @@ if(MLIR_INCLUDE_TESTS)
|
||||
endif()
|
||||
|
||||
set(LIBS
|
||||
${conversion_libs}
|
||||
${dialect_libs}
|
||||
MLIRDialect
|
||||
MLIRIR
|
||||
MLIRPass
|
||||
MLIRReduceLib
|
||||
MLIRRegisterAllDialects
|
||||
MLIRRegisterAllPasses
|
||||
)
|
||||
|
||||
add_mlir_tool(mlir-reduce
|
||||
|
@ -1,21 +1,19 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
set(LLVM_LINK_COMPONENTS
|
||||
Support
|
||||
)
|
||||
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
|
||||
MLIRAffineAnalysis
|
||||
MLIRAnalysis
|
||||
MLIRCastInterfaces
|
||||
MLIRDialect
|
||||
MLIRIR
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
MLIRRegisterAllDialects
|
||||
MLIRSupport
|
||||
MLIRIR
|
||||
MLIRTransformUtils
|
||||
MLIRTransforms
|
||||
)
|
||||
|
||||
include_directories(../../../clang/include)
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/InitLLVM.h"
|
||||
#include "llvm/Support/LineIterator.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/Regex.h"
|
||||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/ToolOutputFile.h"
|
||||
|
@ -10,14 +10,13 @@ add_mlir_unittest(MLIRExecutionEngineTests
|
||||
StridedMemRef.cpp
|
||||
Invoke.cpp
|
||||
)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
|
||||
mlir_target_link_libraries(MLIRExecutionEngineTests
|
||||
PRIVATE
|
||||
MLIRArithToLLVM
|
||||
MLIRMemRefToLLVM
|
||||
MLIRReconcileUnrealizedCasts
|
||||
${dialect_libs}
|
||||
MLIRRegisterAllDialects
|
||||
)
|
||||
target_link_libraries(MLIRExecutionEngineTests
|
||||
PRIVATE
|
||||
|
@ -1,13 +1,11 @@
|
||||
set(LLVM_LINK_COMPONENTS nativecodegen BitReader)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
|
||||
add_mlir_unittest(MLIRTargetLLVMTests
|
||||
SerializeNVVMTarget.cpp
|
||||
SerializeROCDLTarget.cpp
|
||||
SerializeToLLVMBitcode.cpp
|
||||
DEPENDS
|
||||
${dialect_libs}
|
||||
MLIRRegisterAllDialects
|
||||
)
|
||||
|
||||
mlir_target_link_libraries(MLIRTargetLLVMTests
|
||||
|
Loading…
x
Reference in New Issue
Block a user