[MLIR] Refactor handling of dialect libraries
Instead of creating extra libraries we don't really need, collect a list of all dialects and use that instead. Differential Revision: https://reviews.llvm.org/D75221
This commit is contained in:
@@ -8,27 +8,6 @@ set(MLIR_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
||||
|
||||
function(add_mlir_dialect dialect dialect_doc_filename)
|
||||
set(LLVM_TARGET_DEFINITIONS ${dialect}.td)
|
||||
mlir_tablegen(${dialect}.h.inc -gen-op-decls)
|
||||
mlir_tablegen(${dialect}.cpp.inc -gen-op-defs)
|
||||
add_public_tablegen_target(MLIR${dialect}IncGen)
|
||||
add_dependencies(mlir-headers MLIR${dialect}IncGen)
|
||||
|
||||
# Generate Dialect Documentation
|
||||
set(LLVM_TARGET_DEFINITIONS ${dialect_doc_filename}.td)
|
||||
tablegen(MLIR ${dialect_doc_filename}.md -gen-op-doc "-I${MLIR_MAIN_SRC_DIR}" "-I${MLIR_INCLUDE_DIR}")
|
||||
set(GEN_DOC_FILE ${MLIR_BINARY_DIR}/docs/Dialects/${dialect_doc_filename}.md)
|
||||
add_custom_command(
|
||||
OUTPUT ${GEN_DOC_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${dialect_doc_filename}.md
|
||||
${GEN_DOC_FILE}
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${dialect_doc_filename}.md)
|
||||
add_custom_target(${dialect_doc_filename}DocGen DEPENDS ${GEN_DOC_FILE})
|
||||
add_dependencies(mlir-doc ${dialect_doc_filename}DocGen)
|
||||
endfunction()
|
||||
|
||||
include(AddMLIR)
|
||||
|
||||
# Installing the headers and docs needs to depend on generating any public
|
||||
|
||||
@@ -26,3 +26,31 @@ function(whole_archive_link target)
|
||||
endif()
|
||||
set_target_properties(${target} PROPERTIES LINK_FLAGS ${link_flags})
|
||||
endfunction(whole_archive_link)
|
||||
|
||||
# Declare a dialect in the include directory
|
||||
function(add_mlir_dialect dialect dialect_doc_filename)
|
||||
set(LLVM_TARGET_DEFINITIONS ${dialect}.td)
|
||||
mlir_tablegen(${dialect}.h.inc -gen-op-decls)
|
||||
mlir_tablegen(${dialect}.cpp.inc -gen-op-defs)
|
||||
add_public_tablegen_target(MLIR${dialect}IncGen)
|
||||
add_dependencies(mlir-headers MLIR${dialect}IncGen)
|
||||
|
||||
# Generate Dialect Documentation
|
||||
set(LLVM_TARGET_DEFINITIONS ${dialect_doc_filename}.td)
|
||||
tablegen(MLIR ${dialect_doc_filename}.md -gen-op-doc "-I${MLIR_MAIN_SRC_DIR}" "-I${MLIR_INCLUDE_DIR}")
|
||||
set(GEN_DOC_FILE ${MLIR_BINARY_DIR}/docs/Dialects/${dialect_doc_filename}.md)
|
||||
add_custom_command(
|
||||
OUTPUT ${GEN_DOC_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${dialect_doc_filename}.md
|
||||
${GEN_DOC_FILE}
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${dialect_doc_filename}.md)
|
||||
add_custom_target(${dialect_doc_filename}DocGen DEPENDS ${GEN_DOC_FILE})
|
||||
add_dependencies(mlir-doc ${dialect_doc_filename}DocGen)
|
||||
endfunction()
|
||||
|
||||
# Declare the library associated with a dialect.
|
||||
function(add_mlir_dialect_library name)
|
||||
set_property(GLOBAL APPEND PROPERTY MLIR_DIALECT_LIBS ${name})
|
||||
add_llvm_library(${ARGV})
|
||||
endfunction(add_mlir_dialect_library)
|
||||
|
||||
@@ -25,12 +25,12 @@ add_dependencies(toyc-ch5 MLIRCallOpInterfacesIncGen)
|
||||
include_directories(include/)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
target_link_libraries(toyc-ch5
|
||||
PRIVATE
|
||||
MLIRAllDialects
|
||||
${dialect_libs}
|
||||
MLIRAnalysis
|
||||
MLIRIR
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRTransforms)
|
||||
|
||||
|
||||
@@ -27,9 +27,10 @@ add_dependencies(toyc-ch6 MLIRCallOpInterfacesIncGen)
|
||||
include_directories(include/)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
target_link_libraries(toyc-ch6
|
||||
PRIVATE
|
||||
MLIRAllDialects
|
||||
${dialect_libs}
|
||||
MLIRAffineToStandard
|
||||
MLIRAnalysis
|
||||
MLIRExecutionEngine
|
||||
@@ -42,4 +43,3 @@ target_link_libraries(toyc-ch6
|
||||
MLIRTargetLLVMIR
|
||||
MLIRTransforms
|
||||
)
|
||||
|
||||
|
||||
@@ -27,9 +27,10 @@ add_dependencies(toyc-ch7 MLIRCallOpInterfacesIncGen)
|
||||
include_directories(include/)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
target_link_libraries(toyc-ch7
|
||||
PRIVATE
|
||||
MLIRAllDialects
|
||||
${dialect_libs}
|
||||
MLIRAffineToStandard
|
||||
MLIRAnalysis
|
||||
MLIRExecutionEngine
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRAffineOps
|
||||
add_mlir_dialect_library(MLIRAffineOps
|
||||
AffineOps.cpp
|
||||
AffineValueMap.cpp
|
||||
EDSC/Builders.cpp
|
||||
|
||||
@@ -24,29 +24,3 @@ add_llvm_library(MLIRDialect
|
||||
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect
|
||||
)
|
||||
target_link_libraries(MLIRDialect MLIRIR)
|
||||
|
||||
# Create a dummy MLIRAllDialects library for the purpose
|
||||
# of having an easy tracking of all dialects when linking
|
||||
# them in tools.
|
||||
# Empty libraries aren't possible with CMake, create a dummy file.
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/all_dialects.c "typedef int make_iso_compilers_happy;\n")
|
||||
add_llvm_library(MLIRAllDialects
|
||||
${CMAKE_CURRENT_BINARY_DIR}/all_dialects.c
|
||||
)
|
||||
target_link_libraries(MLIRAllDialects
|
||||
MLIRAffineOps
|
||||
MLIRFxpMathOps
|
||||
MLIRGPU
|
||||
MLIRLLVMIR
|
||||
MLIRNVVMIR
|
||||
MLIRROCDLIR
|
||||
MLIRLinalgOps
|
||||
MLIRLoopOps
|
||||
MLIROpenMP
|
||||
MLIRQuantOps
|
||||
MLIRSDBM
|
||||
MLIRShape
|
||||
MLIRSPIRV
|
||||
MLIRStandardOps
|
||||
MLIRVectorOps
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRFxpMathOps
|
||||
add_mlir_dialect_library(MLIRFxpMathOps
|
||||
IR/FxpMathOps.cpp
|
||||
Transforms/LowerUniformRealMath.cpp
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRGPU
|
||||
add_mlir_dialect_library(MLIRGPU
|
||||
IR/GPUDialect.cpp
|
||||
Transforms/AllReduceLowering.cpp
|
||||
Transforms/KernelOutlining.cpp
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRLLVMIR
|
||||
add_mlir_dialect_library(MLIRLLVMIR
|
||||
IR/LLVMDialect.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
@@ -7,7 +7,7 @@ add_llvm_library(MLIRLLVMIR
|
||||
add_dependencies(MLIRLLVMIR MLIRLLVMOpsIncGen MLIRLLVMConversionsIncGen LLVMAsmParser LLVMCore LLVMSupport)
|
||||
target_link_libraries(MLIRLLVMIR LLVMAsmParser LLVMCore LLVMSupport MLIRIR)
|
||||
|
||||
add_llvm_library(MLIRNVVMIR
|
||||
add_mlir_dialect_library(MLIRNVVMIR
|
||||
IR/NVVMDialect.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
@@ -16,7 +16,7 @@ add_llvm_library(MLIRNVVMIR
|
||||
add_dependencies(MLIRNVVMIR MLIRNVVMOpsIncGen MLIRNVVMConversionsIncGen LLVMAsmParser LLVMCore LLVMSupport)
|
||||
target_link_libraries(MLIRNVVMIR LLVMAsmParser MLIRIR MLIRLLVMIR LLVMSupport LLVMCore)
|
||||
|
||||
add_llvm_library(MLIRROCDLIR
|
||||
add_mlir_dialect_library(MLIRROCDLIR
|
||||
IR/ROCDLDialect.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
|
||||
@@ -5,7 +5,7 @@ set(LIBS
|
||||
)
|
||||
|
||||
|
||||
add_llvm_library(MLIRLinalgAnalysis
|
||||
add_mlir_dialect_library(MLIRLinalgAnalysis
|
||||
DependenceAnalysis.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
|
||||
@@ -8,7 +8,7 @@ set(LIBS
|
||||
MLIRStandardOps
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRLinalgEDSC
|
||||
add_mlir_dialect_library(MLIRLinalgEDSC
|
||||
Builders.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
|
||||
@@ -4,7 +4,7 @@ set(LIBS
|
||||
MLIRStandardOps
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRLinalgOps
|
||||
add_mlir_dialect_library(MLIRLinalgOps
|
||||
LinalgOps.cpp
|
||||
LinalgTypes.cpp
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ set(LIBS
|
||||
MLIRVectorOps
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRLinalgTransforms
|
||||
add_mlir_dialect_library(MLIRLinalgTransforms
|
||||
Fusion.cpp
|
||||
LinalgTransforms.cpp
|
||||
LinalgToLoops.cpp
|
||||
|
||||
@@ -9,7 +9,7 @@ set(LIBS
|
||||
MLIRTransformUtils
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRLinalgUtils
|
||||
add_mlir_dialect_library(MLIRLinalgUtils
|
||||
|
||||
Utils.cpp
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
file(GLOB globbed *.c *.cpp)
|
||||
add_llvm_library(MLIRLoopOps
|
||||
add_mlir_dialect_library(MLIRLoopOps
|
||||
${globbed}
|
||||
EDSC/Builders.cpp
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRLoopOpsTransforms
|
||||
add_mlir_dialect_library(MLIRLoopOpsTransforms
|
||||
ParallelLoopFusion.cpp
|
||||
ParallelLoopSpecialization.cpp
|
||||
ParallelLoopTiling.cpp
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIROpenMP
|
||||
add_mlir_dialect_library(MLIROpenMP
|
||||
IR/OpenMPDialect.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRQuantOps
|
||||
add_mlir_dialect_library(MLIRQuantOps
|
||||
IR/QuantOps.cpp
|
||||
IR/QuantTypes.cpp
|
||||
IR/TypeDetail.h
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRSDBM
|
||||
add_mlir_dialect_library(MLIRSDBM
|
||||
SDBM.cpp
|
||||
SDBMExpr.cpp
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ set(LLVM_TARGET_DEFINITIONS SPIRVCanonicalization.td)
|
||||
mlir_tablegen(SPIRVCanonicalization.inc -gen-rewriters)
|
||||
add_public_tablegen_target(MLIRSPIRVCanonicalizationIncGen)
|
||||
|
||||
add_llvm_library(MLIRSPIRV
|
||||
add_mlir_dialect_library(MLIRSPIRV
|
||||
LayoutUtils.cpp
|
||||
SPIRVCanonicalization.cpp
|
||||
SPIRVDialect.cpp
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRSPIRVSerialization
|
||||
add_mlir_dialect_library(MLIRSPIRVSerialization
|
||||
Deserializer.cpp
|
||||
Serializer.cpp
|
||||
SPIRVBinaryUtils.cpp
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRSPIRVTransforms
|
||||
add_mlir_dialect_library(MLIRSPIRVTransforms
|
||||
DecorateSPIRVCompositeTypeLayoutPass.cpp
|
||||
LowerABIAttributesPass.cpp
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
file(GLOB globbed *.c *.cpp)
|
||||
add_llvm_library(MLIRShape
|
||||
add_mlir_dialect_library(MLIRShape
|
||||
${globbed}
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRStandardOps
|
||||
add_mlir_dialect_library(MLIRStandardOps
|
||||
IR/Ops.cpp
|
||||
EDSC/Builders.cpp
|
||||
EDSC/Intrinsics.cpp
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
add_llvm_library(MLIRVectorOps
|
||||
add_mlir_dialect_library(MLIRVectorOps
|
||||
VectorOps.cpp
|
||||
VectorTransforms.cpp
|
||||
VectorUtils.cpp
|
||||
|
||||
@@ -2,8 +2,9 @@ add_llvm_tool(mlir-cpu-runner
|
||||
mlir-cpu-runner.cpp
|
||||
)
|
||||
llvm_update_compile_flags(mlir-cpu-runner)
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
target_link_libraries(mlir-cpu-runner PRIVATE
|
||||
MLIRAllDialects
|
||||
${dialect_libs}
|
||||
MLIRAnalysis
|
||||
MLIREDSC
|
||||
MLIRExecutionEngine
|
||||
|
||||
@@ -35,29 +35,20 @@ if(MLIR_CUDA_RUNNER_ENABLED)
|
||||
${CUDA_RUNTIME_LIBRARY}
|
||||
)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
LLVMCore
|
||||
LLVMSupport
|
||||
MLIRJitRunner
|
||||
MLIRAffineOps
|
||||
MLIRAnalysis
|
||||
MLIREDSC
|
||||
MLIRExecutionEngine
|
||||
MLIRFxpMathOps
|
||||
MLIRGPU
|
||||
MLIRGPUtoCUDATransforms
|
||||
MLIRGPUtoNVVMTransforms
|
||||
MLIRIR
|
||||
MLIRLLVMIR
|
||||
MLIRLinalgOps
|
||||
MLIRLoopToStandard
|
||||
MLIROpenMP
|
||||
MLIRParser
|
||||
MLIRQuantOps
|
||||
MLIRROCDLIR
|
||||
MLIRSPIRV
|
||||
MLIRSPIRV
|
||||
MLIRStandardOps
|
||||
MLIRStandardToLLVM
|
||||
MLIRSupport
|
||||
MLIRTargetLLVMIR
|
||||
|
||||
@@ -18,11 +18,12 @@ target_link_libraries(MLIRMlirOptMain
|
||||
${LIB_LIBS}
|
||||
)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
MLIRLoopOpsTransforms
|
||||
MLIRLoopAnalysis
|
||||
MLIRAnalysis
|
||||
MLIRAffineOps
|
||||
MLIRAffineToStandard
|
||||
MLIRDialect
|
||||
MLIRLoopsToGPU
|
||||
@@ -30,36 +31,22 @@ set(LIBS
|
||||
|
||||
MLIRLoopToStandard
|
||||
MLIREDSC
|
||||
MLIRFxpMathOps
|
||||
MLIRGPU
|
||||
MLIRGPUtoCUDATransforms
|
||||
MLIRGPUtoNVVMTransforms
|
||||
MLIRGPUtoROCDLTransforms
|
||||
MLIRGPUtoSPIRVTransforms
|
||||
MLIRGPUtoVulkanTransforms
|
||||
MLIRLinalgOps
|
||||
MLIRLinalgAnalysis
|
||||
MLIRLinalgEDSC
|
||||
MLIRLinalgTransforms
|
||||
MLIRLinalgUtils
|
||||
MLIRLLVMIR
|
||||
MLIRLoopOps
|
||||
MLIRNVVMIR
|
||||
MLIROpenMP
|
||||
MLIROptLib
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRQuantizerFxpMathConfig
|
||||
MLIRQuantizerSupport
|
||||
MLIRQuantizerTransforms
|
||||
MLIRQuantOps
|
||||
MLIRROCDLIR
|
||||
MLIRSPIRV
|
||||
MLIRLinalgToSPIRVTransforms
|
||||
MLIRStandardToSPIRVTransforms
|
||||
MLIRSPIRVTestPasses
|
||||
MLIRSPIRVTransforms
|
||||
MLIRStandardOps
|
||||
MLIRStandardToLLVM
|
||||
MLIRTransforms
|
||||
MLIRTransformUtils
|
||||
@@ -68,7 +55,6 @@ set(LIBS
|
||||
MLIRTestPass
|
||||
MLIRTestTransforms
|
||||
MLIRSupport
|
||||
MLIRVectorOps
|
||||
MLIRVectorToLLVM
|
||||
MLIRVectorToLoops
|
||||
MLIRIR
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
set(LIBS
|
||||
MLIRAllDialects
|
||||
${dialect_libs}
|
||||
MLIRParser
|
||||
MLIRPass
|
||||
MLIRSPIRV
|
||||
|
||||
@@ -51,31 +51,24 @@ if (MLIR_VULKAN_RUNNER_ENABLED)
|
||||
${Vulkan_LIBRARY}
|
||||
)
|
||||
|
||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
|
||||
set(LIBS
|
||||
${dialect_libs}
|
||||
LLVMCore
|
||||
LLVMSupport
|
||||
MLIRJitRunner
|
||||
MLIRAffineOps
|
||||
MLIRAnalysis
|
||||
MLIREDSC
|
||||
MLIRExecutionEngine
|
||||
MLIRFxpMathOps
|
||||
MLIRGPU
|
||||
MLIRGPUtoCUDATransforms
|
||||
MLIRGPUtoNVVMTransforms
|
||||
MLIRGPUtoSPIRVTransforms
|
||||
MLIRGPUtoVulkanTransforms
|
||||
MLIRIR
|
||||
MLIRLLVMIR
|
||||
MLIRLinalgOps
|
||||
MLIRLoopToStandard
|
||||
MLIROpenMP
|
||||
MLIRParser
|
||||
MLIRQuantOps
|
||||
MLIRROCDLIR
|
||||
MLIRSPIRV
|
||||
MLIRSPIRVTransforms
|
||||
MLIRStandardOps
|
||||
MLIRStandardToLLVM
|
||||
MLIRSupport
|
||||
MLIRTargetLLVMIR
|
||||
|
||||
Reference in New Issue
Block a user