[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:
Stephen Neuendorffer
2020-02-26 11:50:03 -08:00
parent 4dc39ae752
commit 5869552821
31 changed files with 66 additions and 112 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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
)

View File

@@ -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

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRAffineOps
add_mlir_dialect_library(MLIRAffineOps
AffineOps.cpp
AffineValueMap.cpp
EDSC/Builders.cpp

View File

@@ -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
)

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRFxpMathOps
add_mlir_dialect_library(MLIRFxpMathOps
IR/FxpMathOps.cpp
Transforms/LowerUniformRealMath.cpp

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRGPU
add_mlir_dialect_library(MLIRGPU
IR/GPUDialect.cpp
Transforms/AllReduceLowering.cpp
Transforms/KernelOutlining.cpp

View File

@@ -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

View File

@@ -5,7 +5,7 @@ set(LIBS
)
add_llvm_library(MLIRLinalgAnalysis
add_mlir_dialect_library(MLIRLinalgAnalysis
DependenceAnalysis.cpp
ADDITIONAL_HEADER_DIRS

View File

@@ -8,7 +8,7 @@ set(LIBS
MLIRStandardOps
)
add_llvm_library(MLIRLinalgEDSC
add_mlir_dialect_library(MLIRLinalgEDSC
Builders.cpp
ADDITIONAL_HEADER_DIRS

View File

@@ -4,7 +4,7 @@ set(LIBS
MLIRStandardOps
)
add_llvm_library(MLIRLinalgOps
add_mlir_dialect_library(MLIRLinalgOps
LinalgOps.cpp
LinalgTypes.cpp

View File

@@ -16,7 +16,7 @@ set(LIBS
MLIRVectorOps
)
add_llvm_library(MLIRLinalgTransforms
add_mlir_dialect_library(MLIRLinalgTransforms
Fusion.cpp
LinalgTransforms.cpp
LinalgToLoops.cpp

View File

@@ -9,7 +9,7 @@ set(LIBS
MLIRTransformUtils
)
add_llvm_library(MLIRLinalgUtils
add_mlir_dialect_library(MLIRLinalgUtils
Utils.cpp

View File

@@ -1,5 +1,5 @@
file(GLOB globbed *.c *.cpp)
add_llvm_library(MLIRLoopOps
add_mlir_dialect_library(MLIRLoopOps
${globbed}
EDSC/Builders.cpp

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRLoopOpsTransforms
add_mlir_dialect_library(MLIRLoopOpsTransforms
ParallelLoopFusion.cpp
ParallelLoopSpecialization.cpp
ParallelLoopTiling.cpp

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIROpenMP
add_mlir_dialect_library(MLIROpenMP
IR/OpenMPDialect.cpp
ADDITIONAL_HEADER_DIRS

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRQuantOps
add_mlir_dialect_library(MLIRQuantOps
IR/QuantOps.cpp
IR/QuantTypes.cpp
IR/TypeDetail.h

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRSDBM
add_mlir_dialect_library(MLIRSDBM
SDBM.cpp
SDBMExpr.cpp

View File

@@ -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

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRSPIRVSerialization
add_mlir_dialect_library(MLIRSPIRVSerialization
Deserializer.cpp
Serializer.cpp
SPIRVBinaryUtils.cpp

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRSPIRVTransforms
add_mlir_dialect_library(MLIRSPIRVTransforms
DecorateSPIRVCompositeTypeLayoutPass.cpp
LowerABIAttributesPass.cpp

View File

@@ -1,5 +1,5 @@
file(GLOB globbed *.c *.cpp)
add_llvm_library(MLIRShape
add_mlir_dialect_library(MLIRShape
${globbed}
ADDITIONAL_HEADER_DIRS

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRStandardOps
add_mlir_dialect_library(MLIRStandardOps
IR/Ops.cpp
EDSC/Builders.cpp
EDSC/Intrinsics.cpp

View File

@@ -1,4 +1,4 @@
add_llvm_library(MLIRVectorOps
add_mlir_dialect_library(MLIRVectorOps
VectorOps.cpp
VectorTransforms.cpp
VectorUtils.cpp

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
set(LIBS
MLIRAllDialects
${dialect_libs}
MLIRParser
MLIRPass
MLIRSPIRV

View File

@@ -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