diff --git a/mlir/cmake/modules/MLIRCheckHardwareFeatures.cmake b/mlir/cmake/modules/MLIRCheckHardwareFeatures.cmake deleted file mode 100644 index fff0424593fb..000000000000 --- a/mlir/cmake/modules/MLIRCheckHardwareFeatures.cmake +++ /dev/null @@ -1,101 +0,0 @@ -# A collection of helper CMake functions to detect hardware capabilities. At -# the moment these are used when configuring MLIR integration tests. - -# Checks whether the specified hardware capability is supported by the host -# Linux system. This is implemented by checking auxiliary vector feature -# provided by the Linux kernel. -# -# check_hwcap( -# hwcap_spec -# output_var -# ) -# -# hwcap_spec - HWCAP value to check - these are defined in hwcap.h in the Linux -# kernel. -# -# output_var - Output variable to use to save the results (TRUE for supported, -# FALSE for not supported). -# -# EXAMPLES: -# -# check_hwcap("HWCAP2_SME" SME_EMULATOR_REQUIRED) -# -function(check_hwcap hwcap_spec output) - set(hwcap_test_src - [====[ - #include - #include - - int main(void) - { - long hwcaps = getauxval(AT_); - return (hwcaps & ) != 0; - } - ]====] - ) - - # Extract from $hwcap_spec whether this is AT_HWCAP or AT_HWCAP2 - string(FIND ${hwcap_spec} "_" wsloc) - string(SUBSTRING ${hwcap_spec} 0 ${wsloc} hwcap_vec) - - string(REPLACE "" ${hwcap_vec} hwcap_test_src "${hwcap_test_src}") - string(REPLACE "" ${hwcap_spec} hwcap_test_src "${hwcap_test_src}") - - set(hwcap_test_file ${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/hwcap_check.c) - file(WRITE ${hwcap_test_file} "${hwcap_test_src}") - - # Compile _and_ run - try_run( - test_run_result test_compile_result - ${CMAKE_BINARY_DIR} - ${hwcap_test_file} - ) - # Compilation will fail if hwcap_spec is not defined - this usually means - # that your Linux kernel is too old. - if(${test_compile_result} AND (DEFINED test_run_result)) - message(${test_run_result}) - message(STATUS "Checking whether ${hwcap_spec} is supported by the host system: ${test_run_result}") - set(${output} ${test_run_result} PARENT_SCOPE) - else() - message(STATUS "Checking whether ${hwcap_spec} is supported by the host system: FALSE") - endif() -endfunction(check_hwcap) - -# For the given group of e2e tests (defined by the `mlir_e2e_tests` flag), -# checks whether an emulator is required. If yes, verifies that the -# corresponding CMake var pointing to an emulator (`emulator_exec`) has been -# set. -# -# check_emulator( -# mlir_e2e_tests -# hwcap_spec -# emulator_exec -# ) -# -# mlir_e2e_tests - MLIR CMake variables corresponding to the group of e2e tests -# to check -# hwcap_spec - HWCAP value to check. This should correspond to the hardware -# capabilities required by the tests to be checked. Possible -# values are defined in hwcap.h in the Linux kernel. -# emulator_exec - variable the defines the emulator (ought to be set if -# required, can be empty otherwise). -# -# EXAMPLES: -# -# check_emulator(MLIR_RUN_ARM_SVE_TESTS "HWCAP_SVE" ARM_EMULATOR_EXECUTABLE) -# -function(check_emulator mlir_e2e_tests hwcap_spec emulator_exec) - if (NOT ${mlir_e2e_tests}) - return() - endif() - - check_hwcap(${hwcap_spec} emulator_not_required) - if (${emulator_not_required}) - return() - endif() - - if (${emulator_exec} STREQUAL "") - message(FATAL_ERROR "${mlir_e2e_tests} requires an emulator, but ${emulator_exec} is not set") - endif() - -endfunction() diff --git a/mlir/docs/Dialects/ArmSME.md b/mlir/docs/Dialects/ArmSME.md index ce0a76ed60f1..7326150bcd11 100644 --- a/mlir/docs/Dialects/ArmSME.md +++ b/mlir/docs/Dialects/ArmSME.md @@ -6,7 +6,7 @@ This dialect defines custom and LLVM IR intrinsic operations that are used to target Arm Scalable Matrix Extension. Through the available conversion and ArmSME passes you can, for example, lower a [linalg.matmul](https://mlir.llvm.org/docs/Dialects/Linalg/#linalgmatmul-linalgmatmulop) -operation to Arm SME +opereation to Arm SME [FMOPA](https://developer.arm.com/documentation/ddi0602/2023-03/SME-Instructions/FMOPA--widening---Half-precision-floating-point-sum-of-outer-products-and-accumulate-) (floating-point outer product) operations. See one of the in-tree end-to-end integration tests for reference: @@ -14,14 +14,6 @@ integration tests for reference: * [Linalg/CPU/ArmSME/matmul.mlir](https://github.com/llvm/llvm-project/blob/main/mlir/test/Integration/Dialect/Linalg/CPU/ArmSME/matmul.mlir) * [Vector/CPU/ArmSME/test-outerproduct-f64.mlir](https://github.com/llvm/llvm-project/blob/main/mlir/test/Integration/Dialect/Vector/CPU/ArmSME/test-outerproduct-f64.mlir) -In order to run ArmSME integration tests, include these flags in the CMake -invocation when configuring LLVM and MLIR: -```bash - -DMLIR_INCLUDE_INTEGRATION_TESTS=On - -DMLIR_RUN_ARM_SME_TESTS=On - -DARM_EMULATOR_EXECUTABLE= -``` - These tests are run "post-commit" by the [clang-aarch64-sve-vla](https://lab.llvm.org/buildbot/#/builders/197) LLVM BuildBot worker. diff --git a/mlir/test/CMakeLists.txt b/mlir/test/CMakeLists.txt index 5319a9cb33e0..baf07ea1f010 100644 --- a/mlir/test/CMakeLists.txt +++ b/mlir/test/CMakeLists.txt @@ -1,5 +1,3 @@ -include(MLIRCheckHardwareFeatures) - add_subdirectory(CAPI) add_subdirectory(lib) @@ -41,10 +39,6 @@ if (MLIR_INCLUDE_INTEGRATION_TESTS) option(MLIR_RUN_ARM_SVE_TESTS "Run Arm SVE tests.") option(MLIR_RUN_ARM_SME_TESTS "Run Arm SME tests.") - # Check whether an emulator is required - if yes then make sure that it's - # been set. - check_emulator(MLIR_RUN_ARM_SVE_TESTS "HWCAP_SVE" ARM_EMULATOR_EXECUTABLE) - check_emulator(MLIR_RUN_ARM_SME_TESTS "HWCAP2_SME" ARM_EMULATOR_EXECUTABLE) # The native target may not be enabled when cross compiling, raise an error. if(NOT MLIR_ENABLE_EXECUTION_ENGINE)