[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(${LLVM_MAIN_SRC_DIR}/../mlir/include)
|
||||||
include_directories(${CMAKE_BINARY_DIR}/tools/mlir/include)
|
include_directories(${CMAKE_BINARY_DIR}/tools/mlir/include)
|
||||||
|
|
||||||
set(LIBS
|
set(LIBS
|
||||||
${dialect_libs}
|
|
||||||
${conversion_libs}
|
|
||||||
${test_libs}
|
${test_libs}
|
||||||
clangCIR
|
clangCIR
|
||||||
clangCIRLoweringDirectToLLVM
|
clangCIRLoweringDirectToLLVM
|
||||||
MLIRCIR
|
|
||||||
MLIRAffineAnalysis
|
MLIRAffineAnalysis
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
|
MLIRCIR
|
||||||
MLIRDialect
|
MLIRDialect
|
||||||
|
MLIRIR
|
||||||
MLIRLspServerLib
|
MLIRLspServerLib
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRPass
|
MLIRPass
|
||||||
MLIRTransforms
|
MLIRRegisterAllDialects
|
||||||
MLIRTransformUtils
|
MLIRRegisterAllPasses
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
MLIRIR
|
MLIRTransformUtils
|
||||||
|
MLIRTransforms
|
||||||
)
|
)
|
||||||
|
|
||||||
add_mlir_tool(cir-lsp-server
|
add_mlir_tool(cir-lsp-server
|
||||||
|
@ -17,11 +17,12 @@
|
|||||||
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||||
#include "mlir/Dialect/MemRef/IR/MemRef.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/PassManager.h"
|
||||||
#include "mlir/Pass/PassOptions.h"
|
#include "mlir/Pass/PassOptions.h"
|
||||||
#include "mlir/Pass/PassRegistry.h"
|
#include "mlir/Pass/PassRegistry.h"
|
||||||
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
||||||
|
#include "mlir/Transforms/Passes.h"
|
||||||
#include "clang/CIR/Dialect/IR/CIRDialect.h"
|
#include "clang/CIR/Dialect/IR/CIRDialect.h"
|
||||||
#include "clang/CIR/Dialect/Passes.h"
|
#include "clang/CIR/Dialect/Passes.h"
|
||||||
#include "clang/CIR/Passes.h"
|
#include "clang/CIR/Passes.h"
|
||||||
|
@ -20,12 +20,20 @@
|
|||||||
#include "flang/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.h"
|
#include "flang/Optimizer/OpenACC/Support/RegisterOpenACCExtensions.h"
|
||||||
#include "flang/Optimizer/OpenMP/Support/RegisterOpenMPExtensions.h"
|
#include "flang/Optimizer/OpenMP/Support/RegisterOpenMPExtensions.h"
|
||||||
#include "mlir/Conversion/Passes.h"
|
#include "mlir/Conversion/Passes.h"
|
||||||
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/Affine/Passes.h"
|
#include "mlir/Dialect/Affine/Passes.h"
|
||||||
#include "mlir/Dialect/Complex/IR/Complex.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/Extensions/InlinerExtension.h"
|
||||||
|
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||||
#include "mlir/Dialect/Index/IR/IndexDialect.h"
|
#include "mlir/Dialect/Index/IR/IndexDialect.h"
|
||||||
#include "mlir/Dialect/LLVMIR/NVVMDialect.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/OpenACC/Transforms/Passes.h"
|
||||||
|
#include "mlir/Dialect/SCF/IR/SCF.h"
|
||||||
#include "mlir/Dialect/SCF/Transforms/Passes.h"
|
#include "mlir/Dialect/SCF/Transforms/Passes.h"
|
||||||
#include "mlir/InitAllDialects.h"
|
#include "mlir/InitAllDialects.h"
|
||||||
#include "mlir/Pass/Pass.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
|
add_flang_library(FIRSupport
|
||||||
DataLayout.cpp
|
DataLayout.cpp
|
||||||
InitFIR.cpp
|
InitFIR.cpp
|
||||||
@ -23,12 +20,12 @@ add_flang_library(FIRSupport
|
|||||||
${extension_libs}
|
${extension_libs}
|
||||||
|
|
||||||
MLIR_LIBS
|
MLIR_LIBS
|
||||||
${dialect_libs}
|
|
||||||
${extension_libs}
|
|
||||||
MLIRBuiltinToLLVMIRTranslation
|
MLIRBuiltinToLLVMIRTranslation
|
||||||
|
MLIRLLVMToLLVMIRTranslation
|
||||||
MLIROpenACCToLLVMIRTranslation
|
MLIROpenACCToLLVMIRTranslation
|
||||||
MLIROpenMPToLLVMIRTranslation
|
MLIROpenMPToLLVMIRTranslation
|
||||||
MLIRLLVMToLLVMIRTranslation
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
MLIRTargetLLVMIRExport
|
MLIRTargetLLVMIRExport
|
||||||
MLIRTargetLLVMIRImport
|
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
|
set(LIBS
|
||||||
${dialect_libs}
|
MLIRArithDialect
|
||||||
${conversion_libs}
|
MLIROptLib
|
||||||
MLIRArithDialect
|
MLIRRegisterAllDialects
|
||||||
MLIROptLib
|
MLIRRegisterAllPasses
|
||||||
MLIRStandalone
|
MLIRStandalone
|
||||||
)
|
)
|
||||||
add_llvm_executable(standalone-opt standalone-opt.cpp)
|
add_llvm_executable(standalone-opt standalone-opt.cpp)
|
||||||
|
|
||||||
llvm_update_compile_flags(standalone-opt)
|
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/IR/MLIRContext.h"
|
||||||
#include "mlir/InitAllDialects.h"
|
#include "mlir/InitAllDialects.h"
|
||||||
#include "mlir/InitAllPasses.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_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
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
|
target_link_libraries(toyc-ch5
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${dialect_libs}
|
|
||||||
${extension_libs}
|
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
MLIRCallInterfaces
|
MLIRCallInterfaces
|
||||||
MLIRCastInterfaces
|
MLIRCastInterfaces
|
||||||
@ -40,6 +36,9 @@ target_link_libraries(toyc-ch5
|
|||||||
MLIRIR
|
MLIRIR
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRPass
|
MLIRPass
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
MLIRSideEffectInterfaces
|
MLIRSideEffectInterfaces
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
MLIRTransforms)
|
MLIRTransforms
|
||||||
|
)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||||
|
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||||
#include "mlir/IR/Diagnostics.h"
|
#include "mlir/IR/Diagnostics.h"
|
||||||
#include "toy/AST.h"
|
#include "toy/AST.h"
|
||||||
#include "toy/Dialect.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_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
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
|
target_link_libraries(toyc-ch6
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${dialect_libs}
|
|
||||||
${conversion_libs}
|
|
||||||
${extension_libs}
|
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
MLIRBuiltinToLLVMIRTranslation
|
MLIRBuiltinToLLVMIRTranslation
|
||||||
MLIRCallInterfaces
|
MLIRCallInterfaces
|
||||||
@ -58,8 +52,11 @@ target_link_libraries(toyc-ch6
|
|||||||
MLIRMemRefDialect
|
MLIRMemRefDialect
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRPass
|
MLIRPass
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
|
MLIRRegisterAllPasses
|
||||||
MLIRSideEffectInterfaces
|
MLIRSideEffectInterfaces
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
MLIRTargetLLVMIRExport
|
MLIRTargetLLVMIRExport
|
||||||
MLIRTransforms
|
MLIRTransforms
|
||||||
)
|
)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||||
|
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||||
#include "toy/AST.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_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
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
|
target_link_libraries(toyc-ch7
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${dialect_libs}
|
|
||||||
${conversion_libs}
|
|
||||||
${extension_libs}
|
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
MLIRBuiltinToLLVMIRTranslation
|
MLIRBuiltinToLLVMIRTranslation
|
||||||
MLIRCallInterfaces
|
MLIRCallInterfaces
|
||||||
@ -56,7 +50,10 @@ target_link_libraries(toyc-ch7
|
|||||||
MLIRMemRefDialect
|
MLIRMemRefDialect
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRPass
|
MLIRPass
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
|
MLIRRegisterAllPasses
|
||||||
MLIRSideEffectInterfaces
|
MLIRSideEffectInterfaces
|
||||||
MLIRTargetLLVMIRExport
|
MLIRTargetLLVMIRExport
|
||||||
MLIRTransforms
|
MLIRTransforms
|
||||||
)
|
)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
|
||||||
|
#include "mlir/Dialect/Func/IR/FuncOps.h"
|
||||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||||
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
|
||||||
#include "toy/AST.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
|
set(LIBS
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
MLIRIR
|
MLIRIR
|
||||||
MLIRParser
|
MLIRParser
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
|
MLIRRegisterAllPasses
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
MLIRTransformDialect
|
MLIRTransformDialect
|
||||||
MLIRTransformDialectTransforms
|
MLIRTransformDialectTransforms
|
||||||
MLIRTransforms
|
MLIRTransforms
|
||||||
${dialect_libs}
|
|
||||||
${conversion_libs}
|
|
||||||
${extension_libs}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_mlir_tool(mlir-transform-opt
|
add_mlir_tool(mlir-transform-opt
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
|
||||||
#include "llvm/Support/CommandLine.h"
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include "llvm/Support/InitLLVM.h"
|
#include "llvm/Support/InitLLVM.h"
|
||||||
|
#include "llvm/Support/ManagedStatic.h"
|
||||||
#include "llvm/Support/SourceMgr.h"
|
#include "llvm/Support/SourceMgr.h"
|
||||||
#include "llvm/Support/ToolOutputFile.h"
|
#include "llvm/Support/ToolOutputFile.h"
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
@ -14,200 +14,15 @@
|
|||||||
#ifndef MLIR_INITALLDIALECTS_H_
|
#ifndef MLIR_INITALLDIALECTS_H_
|
||||||
#define 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 {
|
namespace mlir {
|
||||||
|
class DialectRegistry;
|
||||||
|
class MLIRContext;
|
||||||
|
|
||||||
/// Add all the MLIR dialects to the provided registry.
|
/// Add all the MLIR dialects to the provided registry.
|
||||||
inline void registerAllDialects(DialectRegistry ®istry) {
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Append all the MLIR dialects to the registry contained in the given context.
|
/// Append all the MLIR dialects to the registry contained in the given context.
|
||||||
inline void registerAllDialects(MLIRContext &context) {
|
void registerAllDialects(MLIRContext &context);
|
||||||
DialectRegistry registry;
|
|
||||||
registerAllDialects(registry);
|
|
||||||
context.appendDialectRegistry(registry);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace mlir
|
} // namespace mlir
|
||||||
|
|
||||||
|
@ -14,110 +14,15 @@
|
|||||||
#ifndef MLIR_INITALLEXTENSIONS_H_
|
#ifndef MLIR_INITALLEXTENSIONS_H_
|
||||||
#define 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 {
|
namespace mlir {
|
||||||
|
class DialectRegistry;
|
||||||
|
|
||||||
/// This function may be called to register all MLIR dialect extensions with the
|
/// This function may be called to register all MLIR dialect extensions with the
|
||||||
/// provided registry.
|
/// provided registry.
|
||||||
/// If you're building a compiler, you generally shouldn't use this: you would
|
/// If you're building a compiler, you generally shouldn't use this: you would
|
||||||
/// individually register the specific extensions that are useful for the
|
/// individually register the specific extensions that are useful for the
|
||||||
/// pipelines and transformations you are using.
|
/// pipelines and transformations you are using.
|
||||||
inline void registerAllExtensions(DialectRegistry ®istry) {
|
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).
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace mlir
|
} // 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.
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||||
// See https://llvm.org/LICENSE.txt for license information.
|
// 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
|
// This file defines a helper to trigger the registration of all passes to the
|
||||||
// passes to the system.
|
// system.
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#ifndef MLIR_INITALLPASSES_H_
|
#ifndef MLIR_INITALLPASSES_H_
|
||||||
#define 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 {
|
namespace mlir {
|
||||||
|
|
||||||
// This function may be called to register the MLIR passes with the
|
// 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
|
// registry, since it would already be calling the creation routine of the
|
||||||
// individual passes.
|
// individual passes.
|
||||||
// The global registry is interesting to interact with the command-line tools.
|
// The global registry is interesting to interact with the command-line tools.
|
||||||
inline void registerAllPasses() {
|
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace mlir
|
} // namespace mlir
|
||||||
|
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
# Dialect registration.
|
# Dialect registration.
|
||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
get_property(translation_libs GLOBAL PROPERTY MLIR_TRANSLATION_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
|
add_mlir_upstream_c_api_library(MLIRCAPIRegisterEverything
|
||||||
RegisterEverything.cpp
|
RegisterEverything.cpp
|
||||||
|
|
||||||
LINK_LIBS PUBLIC
|
LINK_LIBS PUBLIC
|
||||||
${dialect_libs}
|
|
||||||
${translation_libs}
|
${translation_libs}
|
||||||
${conversion_libs}
|
|
||||||
${extension_libs}
|
|
||||||
|
|
||||||
MLIRBuiltinToLLVMIRTranslation
|
MLIRBuiltinToLLVMIRTranslation
|
||||||
MLIRCAPIIR
|
MLIRCAPIIR
|
||||||
MLIRLLVMToLLVMIRTranslation
|
|
||||||
MLIRCAPITransforms
|
MLIRCAPITransforms
|
||||||
|
MLIRLLVMToLLVMIRTranslation
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllExtensions
|
||||||
|
MLIRRegisterAllPasses
|
||||||
)
|
)
|
||||||
|
@ -20,3 +20,35 @@ add_subdirectory(Target)
|
|||||||
add_subdirectory(Tools)
|
add_subdirectory(Tools)
|
||||||
add_subdirectory(Transforms)
|
add_subdirectory(Transforms)
|
||||||
add_subdirectory(ExecutionEngine)
|
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
|
null.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
|
|
||||||
set(LLVM_LINK_COMPONENTS
|
set(LLVM_LINK_COMPONENTS
|
||||||
Core
|
Core
|
||||||
Support
|
Support
|
||||||
@ -35,22 +33,11 @@ if(MLIR_INCLUDE_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LIBS
|
set(LIBS
|
||||||
${conversion_libs}
|
|
||||||
${dialect_libs}
|
|
||||||
${extension_libs}
|
|
||||||
|
|
||||||
MLIRAffineAnalysis
|
|
||||||
MLIRAnalysis
|
|
||||||
MLIRDialect
|
|
||||||
MLIRFuncAllExtensions
|
|
||||||
MLIRLspServerLib
|
MLIRLspServerLib
|
||||||
MLIRParser
|
|
||||||
MLIRPass
|
MLIRRegisterAllDialects
|
||||||
MLIRTensorAllExtensions
|
MLIRRegisterAllExtensions
|
||||||
MLIRTransforms
|
MLIRRegisterAllPasses
|
||||||
MLIRTransformUtils
|
|
||||||
MLIRSupport
|
|
||||||
MLIRIR
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_mlir_tool(mlir-lsp-server
|
add_mlir_tool(mlir-lsp-server
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "mlir/IR/DialectRegistry.h"
|
||||||
#include "mlir/IR/MLIRContext.h"
|
#include "mlir/IR/MLIRContext.h"
|
||||||
#include "mlir/InitAllDialects.h"
|
#include "mlir/InitAllDialects.h"
|
||||||
#include "mlir/InitAllExtensions.h"
|
#include "mlir/InitAllExtensions.h"
|
||||||
|
@ -2,9 +2,6 @@ set(LLVM_OPTIONAL_SOURCES
|
|||||||
null.cpp
|
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
|
set(LLVM_LINK_COMPONENTS
|
||||||
Core
|
Core
|
||||||
Support
|
Support
|
||||||
@ -65,21 +62,11 @@ if(MLIR_INCLUDE_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LIBS
|
set(LIBS
|
||||||
${dialect_libs}
|
|
||||||
${conversion_libs}
|
|
||||||
${extension_libs}
|
|
||||||
|
|
||||||
MLIRAffineAnalysis
|
|
||||||
MLIRAnalysis
|
|
||||||
MLIRCastInterfaces
|
|
||||||
MLIRDialect
|
|
||||||
MLIROptLib
|
MLIROptLib
|
||||||
MLIRParser
|
MLIRRegisterAllDialects
|
||||||
MLIRPass
|
MLIRRegisterAllExtensions
|
||||||
MLIRTransforms
|
MLIRRegisterAllPasses
|
||||||
MLIRTransformUtils
|
|
||||||
MLIRSupport
|
|
||||||
MLIRIR
|
|
||||||
|
|
||||||
# TODO: Remove when registerAllGPUToLLVMIRTranslations is no longer
|
# TODO: Remove when registerAllGPUToLLVMIRTranslations is no longer
|
||||||
# registered directly in mlir-opt.cpp.
|
# registered directly in mlir-opt.cpp.
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
|
|
||||||
if(MLIR_INCLUDE_TESTS)
|
if(MLIR_INCLUDE_TESTS)
|
||||||
set(test_libs
|
set(test_libs
|
||||||
MLIRTestDialect
|
MLIRTestDialect
|
||||||
@ -12,8 +10,8 @@ add_mlir_tool(mlir-query
|
|||||||
llvm_update_compile_flags(mlir-query)
|
llvm_update_compile_flags(mlir-query)
|
||||||
mlir_target_link_libraries(mlir-query
|
mlir_target_link_libraries(mlir-query
|
||||||
PRIVATE
|
PRIVATE
|
||||||
${dialect_libs}
|
|
||||||
MLIRQueryLib
|
MLIRQueryLib
|
||||||
|
MLIRRegisterAllDialects
|
||||||
)
|
)
|
||||||
target_link_libraries(mlir-query PRIVATE ${test_libs})
|
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)
|
if(MLIR_INCLUDE_TESTS)
|
||||||
set(test_libs
|
set(test_libs
|
||||||
MLIRTestDialect
|
MLIRTestDialect
|
||||||
@ -8,12 +5,9 @@ if(MLIR_INCLUDE_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LIBS
|
set(LIBS
|
||||||
${conversion_libs}
|
|
||||||
${dialect_libs}
|
|
||||||
MLIRDialect
|
|
||||||
MLIRIR
|
|
||||||
MLIRPass
|
|
||||||
MLIRReduceLib
|
MLIRReduceLib
|
||||||
|
MLIRRegisterAllDialects
|
||||||
|
MLIRRegisterAllPasses
|
||||||
)
|
)
|
||||||
|
|
||||||
add_mlir_tool(mlir-reduce
|
add_mlir_tool(mlir-reduce
|
||||||
|
@ -1,21 +1,19 @@
|
|||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
set(LLVM_LINK_COMPONENTS
|
set(LLVM_LINK_COMPONENTS
|
||||||
Support
|
Support
|
||||||
)
|
)
|
||||||
|
|
||||||
set(LIBS
|
set(LIBS
|
||||||
${dialect_libs}
|
|
||||||
|
|
||||||
MLIRAffineAnalysis
|
MLIRAffineAnalysis
|
||||||
MLIRAnalysis
|
MLIRAnalysis
|
||||||
MLIRCastInterfaces
|
MLIRCastInterfaces
|
||||||
MLIRDialect
|
MLIRDialect
|
||||||
|
MLIRIR
|
||||||
MLIRParser
|
MLIRParser
|
||||||
MLIRPass
|
MLIRPass
|
||||||
MLIRTransforms
|
MLIRRegisterAllDialects
|
||||||
MLIRTransformUtils
|
|
||||||
MLIRSupport
|
MLIRSupport
|
||||||
MLIRIR
|
MLIRTransformUtils
|
||||||
|
MLIRTransforms
|
||||||
)
|
)
|
||||||
|
|
||||||
include_directories(../../../clang/include)
|
include_directories(../../../clang/include)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "llvm/Support/CommandLine.h"
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include "llvm/Support/InitLLVM.h"
|
#include "llvm/Support/InitLLVM.h"
|
||||||
#include "llvm/Support/LineIterator.h"
|
#include "llvm/Support/LineIterator.h"
|
||||||
|
#include "llvm/Support/ManagedStatic.h"
|
||||||
#include "llvm/Support/Regex.h"
|
#include "llvm/Support/Regex.h"
|
||||||
#include "llvm/Support/SourceMgr.h"
|
#include "llvm/Support/SourceMgr.h"
|
||||||
#include "llvm/Support/ToolOutputFile.h"
|
#include "llvm/Support/ToolOutputFile.h"
|
||||||
|
@ -10,14 +10,13 @@ add_mlir_unittest(MLIRExecutionEngineTests
|
|||||||
StridedMemRef.cpp
|
StridedMemRef.cpp
|
||||||
Invoke.cpp
|
Invoke.cpp
|
||||||
)
|
)
|
||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
|
|
||||||
mlir_target_link_libraries(MLIRExecutionEngineTests
|
mlir_target_link_libraries(MLIRExecutionEngineTests
|
||||||
PRIVATE
|
PRIVATE
|
||||||
MLIRArithToLLVM
|
MLIRArithToLLVM
|
||||||
MLIRMemRefToLLVM
|
MLIRMemRefToLLVM
|
||||||
MLIRReconcileUnrealizedCasts
|
MLIRReconcileUnrealizedCasts
|
||||||
${dialect_libs}
|
MLIRRegisterAllDialects
|
||||||
)
|
)
|
||||||
target_link_libraries(MLIRExecutionEngineTests
|
target_link_libraries(MLIRExecutionEngineTests
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
set(LLVM_LINK_COMPONENTS nativecodegen BitReader)
|
set(LLVM_LINK_COMPONENTS nativecodegen BitReader)
|
||||||
|
|
||||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
|
||||||
|
|
||||||
add_mlir_unittest(MLIRTargetLLVMTests
|
add_mlir_unittest(MLIRTargetLLVMTests
|
||||||
SerializeNVVMTarget.cpp
|
SerializeNVVMTarget.cpp
|
||||||
SerializeROCDLTarget.cpp
|
SerializeROCDLTarget.cpp
|
||||||
SerializeToLLVMBitcode.cpp
|
SerializeToLLVMBitcode.cpp
|
||||||
DEPENDS
|
DEPENDS
|
||||||
${dialect_libs}
|
MLIRRegisterAllDialects
|
||||||
)
|
)
|
||||||
|
|
||||||
mlir_target_link_libraries(MLIRTargetLLVMTests
|
mlir_target_link_libraries(MLIRTargetLLVMTests
|
||||||
|
Loading…
x
Reference in New Issue
Block a user