
Make it so that PDL in pattern rewrites can be optionally disabled. PDL is still enabled by default and not optional bazel. So this should be a NOP for most folks, while enabling other to disable. This only works with tests disabled. With tests enabled this still compiles but tests fail as there is no lit config to disable tests that depend on PDL rewrites yet.
215 lines
6.2 KiB
CMake
215 lines
6.2 KiB
CMake
add_subdirectory(CAPI)
|
|
add_subdirectory(lib)
|
|
|
|
if (MLIR_ENABLE_BINDINGS_PYTHON)
|
|
add_subdirectory(python)
|
|
endif()
|
|
|
|
# Provide the MLIR CMake module dir so that the out of tree Standalone
|
|
# dialect and can add it to the module path.
|
|
set(MLIR_CMAKE_DIR
|
|
"${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/mlir")
|
|
|
|
# Passed to lit.site.cfg.py.in to set up the path where to find libraries.
|
|
set(MLIR_LIB_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
|
|
|
if (MLIR_INCLUDE_INTEGRATION_TESTS)
|
|
set(INTEL_SDE_EXECUTABLE "" CACHE STRING
|
|
"If set, arch-specific integration tests are run with Intel SDE.")
|
|
set(ARM_EMULATOR_EXECUTABLE "" CACHE STRING
|
|
"If set, arch-specific Arm integration tests are run with an emulator.")
|
|
set(ARM_EMULATOR_OPTIONS "" CACHE STRING
|
|
"If arch-specific Arm integration tests run emulated, pass these as parameters to the emulator.")
|
|
set(ARM_EMULATOR_MLIR_CPU_RUNNER_EXECUTABLE "" CACHE STRING
|
|
"If arch-specific Arm integration tests run emulated, use this Arm native mlir-cpu-runner.")
|
|
set(ARM_EMULATOR_LLI_EXECUTABLE "" CACHE STRING
|
|
"If arch-specific Arm integration tests run emulated, use this Arm native lli.")
|
|
set(ARM_EMULATOR_UTILS_LIB_DIR "" CACHE STRING
|
|
"If arch-specific Arm integration tests run emulated, find Arm native utility libraries in this directory.")
|
|
set(MLIR_GPU_COMPILATION_TEST_FORMAT "fatbin" CACHE STRING
|
|
"The GPU compilation format used by the tests.")
|
|
set(ARM_SME_ABI_ROUTINES_SHLIB "" CACHE STRING
|
|
"Path to a shared library containing Arm SME ABI routines, required for Arm SME integration tests.")
|
|
option(MLIR_RUN_AMX_TESTS "Run AMX tests.")
|
|
option(MLIR_RUN_X86VECTOR_TESTS "Run X86Vector tests.")
|
|
option(MLIR_RUN_CUDA_TENSOR_CORE_TESTS "Run CUDA Tensor core WMMA tests.")
|
|
option(MLIR_RUN_CUDA_SM80_TESTS "Run CUDA A100 tests.")
|
|
option(MLIR_RUN_CUDA_SM80_LT_TESTS "Run CUDA A100 structured sparsity tests.")
|
|
option(MLIR_RUN_CUDA_SM90_TESTS "Run CUDA H100 tests.")
|
|
option(MLIR_RUN_ARM_SVE_TESTS "Run Arm SVE tests.")
|
|
option(MLIR_RUN_ARM_SME_TESTS "Run Arm SME tests.")
|
|
|
|
|
|
# The native target may not be enabled when cross compiling, raise an error.
|
|
if(NOT MLIR_ENABLE_EXECUTION_ENGINE)
|
|
message(FATAL_ERROR "MLIR_INCLUDE_INTEGRATION_TESTS requires a native target")
|
|
endif()
|
|
|
|
# When the Integration tests are requested via the MLIR_INCLUDE_INTEGRATION_TESTS
|
|
# configuration flag, we automatically include sm80 tests when build for
|
|
# cuSparse when the configuration flag MLIR_ENABLE_CUDA_CUSPARSE is set and
|
|
# include sm80 lt tests when the MLIR_ENABLE_CUDA_CUSPARSELT is set in
|
|
# addition to those.
|
|
if (MLIR_ENABLE_CUDA_CUSPARSE)
|
|
set(MLIR_RUN_CUDA_SM80_TESTS ON)
|
|
if (MLIR_ENABLE_CUDA_CUSPARSELT)
|
|
set(MLIR_RUN_CUDA_SM80_LT_TESTS ON)
|
|
endif()
|
|
endif()
|
|
|
|
endif()
|
|
|
|
llvm_canonicalize_cmake_booleans(
|
|
LLVM_BUILD_EXAMPLES
|
|
MLIR_ENABLE_BINDINGS_PYTHON
|
|
MLIR_ENABLE_CUDA_CONVERSIONS
|
|
MLIR_ENABLE_CUDA_RUNNER
|
|
MLIR_ENABLE_ROCM_CONVERSIONS
|
|
MLIR_ENABLE_ROCM_RUNNER
|
|
MLIR_ENABLE_SPIRV_CPU_RUNNER
|
|
MLIR_ENABLE_VULKAN_RUNNER
|
|
MLIR_INCLUDE_INTEGRATION_TESTS
|
|
MLIR_RUN_AMX_TESTS
|
|
MLIR_RUN_CUDA_TENSOR_CORE_TESTS
|
|
MLIR_RUN_X86VECTOR_TESTS
|
|
MLIR_RUN_ARM_SVE_TESTS
|
|
MLIR_RUN_ARM_SME_TESTS
|
|
MLIR_RUN_CUDA_SM80_TESTS
|
|
MLIR_RUN_CUDA_SM80_LT_TESTS
|
|
MLIR_RUN_CUDA_SM90_TESTS
|
|
)
|
|
|
|
configure_lit_site_cfg(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
|
|
MAIN_CONFIG
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
|
|
)
|
|
configure_lit_site_cfg(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
|
|
MAIN_CONFIG
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
|
|
)
|
|
|
|
set(MLIR_TEST_DEPENDS
|
|
FileCheck count not split-file
|
|
mlir-capi-ir-test
|
|
mlir-capi-llvm-test
|
|
mlir-capi-pass-test
|
|
mlir-capi-quant-test
|
|
mlir-capi-sparse-tensor-test
|
|
mlir-capi-transform-test
|
|
mlir-capi-translation-test
|
|
mlir-linalg-ods-yaml-gen
|
|
mlir-lsp-server
|
|
mlir-opt
|
|
mlir-query
|
|
mlir-reduce
|
|
mlir-tblgen
|
|
mlir-translate
|
|
tblgen-lsp-server
|
|
tblgen-to-irdl
|
|
)
|
|
|
|
set(MLIR_TEST_DEPENDS ${MLIR_TEST_DEPENDS}
|
|
mlir-capi-pdl-test
|
|
mlir-pdll-lsp-server
|
|
mlir-pdll
|
|
)
|
|
|
|
# The native target may not be enabled, in this case we won't
|
|
# run tests that involves executing on the host: do not build
|
|
# useless binaries.
|
|
if(LLVM_ENABLE_PIC AND TARGET ${LLVM_NATIVE_ARCH})
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
mlir-cpu-runner
|
|
llc
|
|
mlir_async_runtime
|
|
mlir-capi-execution-engine-test
|
|
mlir_c_runner_utils
|
|
mlir_runner_utils
|
|
mlir_float16_utils
|
|
)
|
|
endif()
|
|
|
|
if (MLIR_INCLUDE_INTEGRATION_TESTS)
|
|
list(APPEND MLIR_TEST_DEPENDS lli)
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_CUDA_RUNNER)
|
|
list(APPEND MLIR_TEST_DEPENDS mlir_cuda_runtime)
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_ROCM_RUNNER)
|
|
list(APPEND MLIR_TEST_DEPENDS mlir_rocm_runtime)
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_SYCL_RUNNER)
|
|
list(APPEND MLIR_TEST_DEPENDS mlir_sycl_runtime)
|
|
endif()
|
|
|
|
if (MLIR_RUN_ARM_SME_TESTS AND NOT ARM_SME_ABI_ROUTINES_SHLIB)
|
|
list(APPEND MLIR_TEST_DEPENDS mlir_arm_sme_abi_stubs)
|
|
endif()
|
|
|
|
list(APPEND MLIR_TEST_DEPENDS MLIRUnitTests)
|
|
|
|
if(LLVM_BUILD_EXAMPLES)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
toyc-ch1
|
|
toyc-ch2
|
|
toyc-ch3
|
|
toyc-ch4
|
|
toyc-ch5
|
|
)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
transform-opt-ch2
|
|
transform-opt-ch3
|
|
)
|
|
if(MLIR_ENABLE_EXECUTION_ENGINE)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
toyc-ch6
|
|
toyc-ch7
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_SPIRV_CPU_RUNNER)
|
|
add_subdirectory(mlir-spirv-cpu-runner)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
mlir-spirv-cpu-runner
|
|
mlir_test_spirv_cpu_runner_c_wrappers
|
|
)
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_VULKAN_RUNNER)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
mlir-vulkan-runner
|
|
)
|
|
endif()
|
|
|
|
if(MLIR_ENABLE_BINDINGS_PYTHON)
|
|
list(APPEND MLIR_TEST_DEPENDS
|
|
MLIRPythonModules
|
|
)
|
|
endif()
|
|
|
|
# This target can be used to just build the dependencies
|
|
# for the check-mlir target without executing the tests.
|
|
# This is useful for bots when splitting the build step
|
|
# from the testing step.
|
|
add_custom_target(check-mlir-build-only
|
|
DEPENDS ${MLIR_TEST_DEPENDS}
|
|
)
|
|
|
|
add_lit_testsuite(check-mlir "Running the MLIR regression tests"
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
DEPENDS ${MLIR_TEST_DEPENDS}
|
|
)
|
|
set_target_properties(check-mlir PROPERTIES FOLDER "Tests")
|
|
|
|
add_lit_testsuites(MLIR ${CMAKE_CURRENT_SOURCE_DIR}
|
|
DEPENDS ${MLIR_TEST_DEPENDS}
|
|
)
|