[llvm] [Offload] Add framework for math conformance tests (PR #149242)

Leandro Lacerda via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 29 09:00:31 PDT 2025


================
@@ -96,27 +96,56 @@ function(add_offload_unittest test_dirname)
 endfunction()
 
 function(add_conformance_test test_name)
-  set(target_name "${test_name}.conformance")
-
-  list(TRANSFORM ARGN PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/" OUTPUT_VARIABLE files)
+  set(options "")
+  set(oneValueArgs "")
+  set(multiValueArgs "SOURCES;PROVIDERS")
+  cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
+  if(NOT ARG_SOURCES)
+    message(WARNING "Conformance test '${test_name}' must specify at least one source file")
+    return()
+  endif()
+  if(NOT ARG_PROVIDERS)
+    message(WARNING "Conformance test '${test_name}' must specify at least one provider")
+    return()
+  endif()
   if(NOT TARGET libc)
     message(WARNING "Cannot run conformance tests without the LLVM C library")
     return()
   endif()
 
-  add_executable(${target_name} ${files})
-  add_dependencies(${target_name} ${PLUGINS_TEST_COMMON} ${test_name}.bin)
-  target_compile_definitions(${target_name} PRIVATE DEVICE_CODE_PATH="${CONFORMANCE_TEST_DEVICE_CODE_PATH}")
-  target_link_libraries(${target_name} PRIVATE ${PLUGINS_TEST_COMMON} libc)
-  target_include_directories(${target_name} PRIVATE ${PLUGINS_TEST_INCLUDE})
-  set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
-
-  add_custom_target(offload.conformance.${test_name}
-    COMMAND $<TARGET_FILE:${target_name}>
-    DEPENDS ${target_name}
-    COMMENT "Running conformance test ${test_name}")
-  add_dependencies(offload.conformance offload.conformance.${test_name})
+  list(TRANSFORM ARG_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/" OUTPUT_VARIABLE files)
+  add_custom_target(offload.conformance.${test_name})
+
+  foreach(provider IN LISTS ARG_PROVIDERS)
----------------
leandrolcampos wrote:

Done, thanks!

https://github.com/llvm/llvm-project/pull/149242


More information about the llvm-commits mailing list