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() if (MLIR_RUN_ARM_SVE_TESTS OR MLIR_RUN_ARM_SME_TESTS) list(APPEND MLIR_TEST_DEPENDS mlir_arm_runner_utils) 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 transform-opt-ch4 mlir-minimal-opt ) 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} )