697 lines
20 KiB
Text
697 lines
20 KiB
Text
|
include(AddMLIRPython)
|
||
|
|
||
|
################################################################################
|
||
|
# Structural groupings.
|
||
|
################################################################################
|
||
|
|
||
|
declare_mlir_python_sources(MLIRPythonSources)
|
||
|
declare_mlir_python_sources(MLIRPythonSources.Dialects
|
||
|
ADD_TO_PARENT MLIRPythonSources)
|
||
|
declare_mlir_python_sources(MLIRPythonSources.Core
|
||
|
ADD_TO_PARENT MLIRPythonSources)
|
||
|
|
||
|
################################################################################
|
||
|
# Pure python sources and generated code
|
||
|
################################################################################
|
||
|
|
||
|
declare_mlir_python_sources(MLIRPythonSources.Core.Python
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
ADD_TO_PARENT MLIRPythonSources.Core
|
||
|
SOURCES
|
||
|
_mlir_libs/__init__.py
|
||
|
ir.py
|
||
|
passmanager.py
|
||
|
dialects/_ods_common.py
|
||
|
|
||
|
# The main _mlir module has submodules: include stubs from each.
|
||
|
_mlir_libs/_mlir/__init__.pyi
|
||
|
_mlir_libs/_mlir/ir.pyi
|
||
|
_mlir_libs/_mlir/passmanager.pyi
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_sources(MLIRPythonSources.Core.Python.Extras
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
ADD_TO_PARENT MLIRPythonSources.Core.Python
|
||
|
SOURCES
|
||
|
extras/types.py
|
||
|
extras/meta.py
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_sources(MLIRPythonSources.ExecutionEngine
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
ADD_TO_PARENT MLIRPythonSources
|
||
|
SOURCES
|
||
|
execution_engine.py
|
||
|
_mlir_libs/_mlirExecutionEngine.pyi
|
||
|
SOURCES_GLOB
|
||
|
runtime/*.py
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_sources(MLIRPythonCAPI.HeaderSources
|
||
|
ROOT_DIR "${MLIR_SOURCE_DIR}/include"
|
||
|
SOURCES_GLOB "mlir-c/*.h"
|
||
|
)
|
||
|
|
||
|
################################################################################
|
||
|
# Dialect bindings
|
||
|
################################################################################
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/AffineOps.td
|
||
|
SOURCES
|
||
|
dialects/affine.py
|
||
|
DIALECT_NAME affine
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/AMDGPUOps.td
|
||
|
SOURCES
|
||
|
dialects/amdgpu.py
|
||
|
DIALECT_NAME amdgpu
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/AsyncOps.td
|
||
|
SOURCES_GLOB dialects/async_dialect/*.py
|
||
|
DIALECT_NAME async_dialect)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/BufferizationOps.td
|
||
|
SOURCES
|
||
|
dialects/bufferization.py
|
||
|
DIALECT_NAME bufferization
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"../../include/mlir/Dialect/Bufferization/IR/BufferizationEnums.td"
|
||
|
)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/BuiltinOps.td
|
||
|
SOURCES
|
||
|
dialects/builtin.py
|
||
|
DIALECT_NAME builtin)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/ComplexOps.td
|
||
|
SOURCES
|
||
|
dialects/complex.py
|
||
|
DIALECT_NAME complex)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/ControlFlowOps.td
|
||
|
SOURCES
|
||
|
dialects/cf.py
|
||
|
DIALECT_NAME cf)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/FuncOps.td
|
||
|
SOURCES
|
||
|
dialects/func.py
|
||
|
DIALECT_NAME func)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/GPUOps.td
|
||
|
SOURCES_GLOB dialects/gpu/*.py
|
||
|
DIALECT_NAME gpu
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/LinalgOps.td
|
||
|
SOURCES
|
||
|
SOURCES_GLOB
|
||
|
dialects/linalg/*.py
|
||
|
DIALECT_NAME linalg
|
||
|
DEPENDS LinalgOdsGen
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/LLVMOps.td
|
||
|
SOURCES
|
||
|
dialects/llvm.py
|
||
|
DIALECT_NAME llvm
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/TransformPDLExtensionOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/pdl.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME transform_pdl_extension)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/TransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/__init__.py
|
||
|
_mlir_libs/_mlir/dialects/transform/__init__.pyi
|
||
|
DIALECT_NAME transform
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"../../include/mlir/Dialect/Transform/IR/TransformAttrs.td"
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_sources(
|
||
|
MLIRPythonSources.Dialects.transform.extras
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
GEN_ENUM_BINDINGS
|
||
|
SOURCES
|
||
|
dialects/transform/extras/__init__.py)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/BufferizationTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/bufferization.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME bufferization_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/GPUTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/gpu.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME gpu_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/SCFLoopTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/loop.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME loop_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/MemRefTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/memref.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME memref_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/NVGPUTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/nvgpu.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME nvgpu_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/LinalgStructuredTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/structured.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME structured_transform
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"../../include/mlir/Dialect/Linalg/TransformOps/LinalgTransformEnums.td"
|
||
|
)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/SparseTensorTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/sparse_tensor.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME sparse_tensor_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/TensorTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/tensor.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME tensor_transform)
|
||
|
|
||
|
declare_mlir_dialect_extension_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/VectorTransformOps.td
|
||
|
SOURCES
|
||
|
dialects/transform/vector.py
|
||
|
DIALECT_NAME transform
|
||
|
EXTENSION_NAME vector_transform
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"../../include/mlir/Dialect/Vector/Transforms/VectorTransformsBase.td"
|
||
|
)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/MathOps.td
|
||
|
SOURCES dialects/math.py
|
||
|
DIALECT_NAME math)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/ArithOps.td
|
||
|
SOURCES
|
||
|
dialects/arith.py
|
||
|
DIALECT_NAME arith
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/MemRefOps.td
|
||
|
SOURCES
|
||
|
dialects/memref.py
|
||
|
DIALECT_NAME memref)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/MLProgramOps.td
|
||
|
SOURCES
|
||
|
dialects/ml_program.py
|
||
|
DIALECT_NAME ml_program)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/NVGPUOps.td
|
||
|
SOURCES
|
||
|
dialects/nvgpu.py
|
||
|
DIALECT_NAME nvgpu
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/NVVMOps.td
|
||
|
SOURCES
|
||
|
dialects/nvvm.py
|
||
|
DIALECT_NAME nvvm
|
||
|
GEN_ENUM_BINDINGS)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/ROCDLOps.td
|
||
|
SOURCES
|
||
|
dialects/rocdl.py
|
||
|
DIALECT_NAME rocdl)
|
||
|
|
||
|
declare_mlir_python_sources(
|
||
|
MLIRPythonSources.Dialects.quant
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
GEN_ENUM_BINDINGS
|
||
|
SOURCES
|
||
|
dialects/quant.py
|
||
|
_mlir_libs/_mlir/dialects/quant.pyi)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/PDLOps.td
|
||
|
SOURCES
|
||
|
dialects/pdl.py
|
||
|
_mlir_libs/_mlir/dialects/pdl.pyi
|
||
|
DIALECT_NAME pdl)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/OpenMPOps.td
|
||
|
SOURCES
|
||
|
dialects/openmp.py
|
||
|
DIALECT_NAME omp
|
||
|
DEPENDS omp_common_td)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/SCFOps.td
|
||
|
SOURCES
|
||
|
dialects/scf.py
|
||
|
DIALECT_NAME scf)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/ShapeOps.td
|
||
|
SOURCES dialects/shape.py
|
||
|
DIALECT_NAME shape)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/SparseTensorOps.td
|
||
|
SOURCES dialects/sparse_tensor.py
|
||
|
DIALECT_NAME sparse_tensor
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"../../include/mlir/Dialect/SparseTensor/IR/SparseTensorAttrDefs.td"
|
||
|
)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/SPIRVOps.td
|
||
|
SOURCES dialects/spirv.py
|
||
|
DIALECT_NAME spirv)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/TensorOps.td
|
||
|
SOURCES
|
||
|
dialects/tensor.py
|
||
|
DIALECT_NAME tensor)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/TosaOps.td
|
||
|
SOURCES dialects/tosa.py
|
||
|
DIALECT_NAME tosa
|
||
|
)
|
||
|
|
||
|
declare_mlir_dialect_python_bindings(
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
TD_FILE dialects/VectorOps.td
|
||
|
SOURCES dialects/vector.py
|
||
|
DIALECT_NAME vector
|
||
|
GEN_ENUM_BINDINGS_TD_FILE
|
||
|
"dialects/VectorAttributes.td")
|
||
|
|
||
|
################################################################################
|
||
|
# Python extensions.
|
||
|
# The sources for these are all in lib/Bindings/Python, but since they have to
|
||
|
# be rebuilt for each package and integrate with the source setup here, we
|
||
|
# just reference them here instead of having ordered, cross package target
|
||
|
# dependencies.
|
||
|
################################################################################
|
||
|
|
||
|
set(PYTHON_SOURCE_DIR "${MLIR_SOURCE_DIR}/lib/Bindings/Python")
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Core
|
||
|
MODULE_NAME _mlir
|
||
|
ADD_TO_PARENT MLIRPythonSources.Core
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
MainModule.cpp
|
||
|
IRAffine.cpp
|
||
|
IRAttributes.cpp
|
||
|
IRCore.cpp
|
||
|
IRInterfaces.cpp
|
||
|
IRModule.cpp
|
||
|
IRTypes.cpp
|
||
|
Pass.cpp
|
||
|
|
||
|
# Headers must be included explicitly so they are installed.
|
||
|
Globals.h
|
||
|
IRModule.h
|
||
|
Pass.h
|
||
|
PybindUtils.h
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIDebug
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPIInterfaces
|
||
|
|
||
|
# Dialects
|
||
|
MLIRCAPIFunc
|
||
|
)
|
||
|
|
||
|
# This extension exposes an API to register all dialects, extensions, and passes
|
||
|
# packaged in upstream MLIR and it is used for the upstream "mlir" Python
|
||
|
# package. Downstreams will likely want to provide their own and not depend
|
||
|
# on this one, since it links in the world.
|
||
|
# Note that this is not added to any top-level source target for transitive
|
||
|
# inclusion: It must be included explicitly by downstreams if desired. Note that
|
||
|
# this has a very large impact on what gets built/packaged.
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.RegisterEverything
|
||
|
MODULE_NAME _mlirRegisterEverything
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
RegisterEverything.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIConversion
|
||
|
MLIRCAPITransforms
|
||
|
MLIRCAPIRegisterEverything
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Linalg.Pybind
|
||
|
MODULE_NAME _mlirDialectsLinalg
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.linalg
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
DialectLinalg.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPILinalg
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Quant.Pybind
|
||
|
MODULE_NAME _mlirDialectsQuant
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.quant
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
DialectQuant.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPIQuant
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Dialects.PDL.Pybind
|
||
|
MODULE_NAME _mlirDialectsPDL
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.pdl
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
DialectPDL.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPIPDL
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Dialects.SparseTensor.Pybind
|
||
|
MODULE_NAME _mlirDialectsSparseTensor
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.sparse_tensor
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
DialectSparseTensor.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPISparseTensor
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Transform.Pybind
|
||
|
MODULE_NAME _mlirDialectsTransform
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.transform
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
DialectTransform.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIIR
|
||
|
MLIRCAPITransformDialect
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.AsyncDialectPasses
|
||
|
MODULE_NAME _mlirAsyncPasses
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.async_dialect
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
AsyncPasses.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIAsync
|
||
|
)
|
||
|
|
||
|
if(MLIR_ENABLE_EXECUTION_ENGINE)
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.ExecutionEngine
|
||
|
MODULE_NAME _mlirExecutionEngine
|
||
|
ADD_TO_PARENT MLIRPythonSources.ExecutionEngine
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
ExecutionEngineModule.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIExecutionEngine
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.GPUDialectPasses
|
||
|
MODULE_NAME _mlirGPUPasses
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.gpu
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
GPUPasses.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIGPU
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.LinalgPasses
|
||
|
MODULE_NAME _mlirLinalgPasses
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.linalg
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
LinalgPasses.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPILinalg
|
||
|
)
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonExtension.SparseTensorDialectPasses
|
||
|
MODULE_NAME _mlirSparseTensorPasses
|
||
|
ADD_TO_PARENT MLIRPythonSources.Dialects.sparse_tensor
|
||
|
ROOT_DIR "${PYTHON_SOURCE_DIR}"
|
||
|
SOURCES
|
||
|
SparseTensorPasses.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPISparseTensor
|
||
|
)
|
||
|
|
||
|
# TODO: Figure out how to put this in the test tree.
|
||
|
# This should not be included in the main Python extension. However,
|
||
|
# putting it into MLIRPythonTestSources along with the dialect declaration
|
||
|
# above confuses Python module loader when running under lit.
|
||
|
set(_ADDL_TEST_SOURCES)
|
||
|
if(MLIR_INCLUDE_TESTS)
|
||
|
set(_ADDL_TEST_SOURCES MLIRPythonTestSources)
|
||
|
declare_mlir_python_sources(MLIRPythonTestSources)
|
||
|
declare_mlir_python_sources(MLIRPythonTestSources.Dialects
|
||
|
ADD_TO_PARENT MLIRPythonTestSources)
|
||
|
|
||
|
# TODO: this uses a tablegen file from the test directory and should be
|
||
|
# decoupled from here.
|
||
|
declare_mlir_python_sources(
|
||
|
MLIRPythonTestSources.Dialects.PythonTest
|
||
|
ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/mlir"
|
||
|
ADD_TO_PARENT MLIRPythonTestSources.Dialects
|
||
|
SOURCES dialects/python_test.py)
|
||
|
set(LLVM_TARGET_DEFINITIONS
|
||
|
"${MLIR_MAIN_SRC_DIR}/test/python/python_test_ops.td")
|
||
|
mlir_tablegen(
|
||
|
"dialects/_python_test_ops_gen.py"
|
||
|
-gen-python-op-bindings
|
||
|
-bind-dialect=python_test)
|
||
|
add_public_tablegen_target(PythonTestDialectPyIncGen)
|
||
|
declare_mlir_python_sources(
|
||
|
MLIRPythonTestSources.Dialects.PythonTest.ops_gen
|
||
|
ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}"
|
||
|
ADD_TO_PARENT MLIRPythonTestSources.Dialects.PythonTest
|
||
|
SOURCES "dialects/_python_test_ops_gen.py")
|
||
|
|
||
|
declare_mlir_python_extension(MLIRPythonTestSources.PythonTestExtension
|
||
|
MODULE_NAME _mlirPythonTest
|
||
|
ADD_TO_PARENT MLIRPythonTestSources.Dialects
|
||
|
ROOT_DIR "${MLIR_SOURCE_DIR}/test/python/lib"
|
||
|
SOURCES
|
||
|
PythonTestModule.cpp
|
||
|
PRIVATE_LINK_LIBS
|
||
|
LLVMSupport
|
||
|
EMBED_CAPI_LINK_LIBS
|
||
|
MLIRCAPIPythonTestDialect
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
################################################################################
|
||
|
# Common CAPI dependency DSO.
|
||
|
# All python extensions must link through one DSO which exports the CAPI, and
|
||
|
# this must have a globally unique name amongst all embeddors of the python
|
||
|
# library since it will effectively have global scope.
|
||
|
#
|
||
|
# The presence of this aggregate library is part of the long term plan, but its
|
||
|
# use needs to be made more flexible.
|
||
|
#
|
||
|
# TODO: Upgrade to the aggregate utility in https://reviews.llvm.org/D106419
|
||
|
# once ready.
|
||
|
################################################################################
|
||
|
|
||
|
add_mlir_python_common_capi_library(MLIRPythonCAPI
|
||
|
INSTALL_COMPONENT MLIRPythonModules
|
||
|
INSTALL_DESTINATION python_packages/mlir_core/mlir/_mlir_libs
|
||
|
OUTPUT_DIRECTORY "${MLIR_BINARY_DIR}/python_packages/mlir_core/mlir/_mlir_libs"
|
||
|
RELATIVE_INSTALL_ROOT "../../../.."
|
||
|
DECLARED_HEADERS
|
||
|
MLIRPythonCAPI.HeaderSources
|
||
|
DECLARED_SOURCES
|
||
|
MLIRPythonSources
|
||
|
MLIRPythonExtension.RegisterEverything
|
||
|
${_ADDL_TEST_SOURCES}
|
||
|
)
|
||
|
|
||
|
################################################################################
|
||
|
# Custom targets.
|
||
|
################################################################################
|
||
|
|
||
|
_flatten_mlir_python_targets(mlir_python_sources_deps MLIRPythonSources)
|
||
|
add_custom_target("mlir-python-sources" DEPENDS ${mlir_python_sources_deps})
|
||
|
if(NOT LLVM_ENABLE_IDE)
|
||
|
add_llvm_install_targets(install-mlir-python-sources
|
||
|
DEPENDS mlir-python-sources
|
||
|
COMPONENT mlir-python-sources
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
################################################################################
|
||
|
# The fully assembled package of modules.
|
||
|
# This must come last.
|
||
|
################################################################################
|
||
|
|
||
|
add_mlir_python_modules(MLIRPythonModules
|
||
|
ROOT_PREFIX "${MLIR_BINARY_DIR}/python_packages/mlir_core/mlir"
|
||
|
INSTALL_PREFIX "python_packages/mlir_core/mlir"
|
||
|
DECLARED_SOURCES
|
||
|
MLIRPythonSources
|
||
|
MLIRPythonExtension.RegisterEverything
|
||
|
${_ADDL_TEST_SOURCES}
|
||
|
COMMON_CAPI_LINK_LIBS
|
||
|
MLIRPythonCAPI
|
||
|
)
|