diff --git a/CMakeLists.txt b/CMakeLists.txt index f2ab3828bb..a7ff9199a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -461,10 +461,8 @@ else() endif() message(STATUS "i915 includes dir: ${I915_INCLUDES_DIR}") -if(NOT NEO_DISABLE_BUILTINS_COMPILATION) - # Enable/Disable BuiltIns compilation during build - set(COMPILE_BUILT_INS TRUE CACHE BOOL "Enable built-in kernels compilation") -endif() +# Enable/Disable BuiltIns compilation during build +set(COMPILE_BUILT_INS TRUE CACHE BOOL "Enable built-in kernels compilation") # Changing the default executable and library output directories set(IGDRCL_OUTPUT_DIR "${IGDRCL_OPTION__OUTPUT_DIR}") diff --git a/level_zero/core/test/common/gen_kernel.cmake b/level_zero/core/test/common/gen_kernel.cmake index d1af78248a..59211b09ee 100644 --- a/level_zero/core/test/common/gen_kernel.cmake +++ b/level_zero/core/test/common/gen_kernel.cmake @@ -6,20 +6,18 @@ function(level_zero_gen_kernels target_list platform_name suffix options) - if(NOT NEO_DISABLE_BUILTINS_COMPILATION) - if(NOT DEFINED cloc_cmd_prefix) - if(WIN32) - set(cloc_cmd_prefix ocloc) + if(NOT DEFINED cloc_cmd_prefix) + if(WIN32) + set(cloc_cmd_prefix ocloc) + else() + if(DEFINED NEO__IGC_LIBRARY_PATH) + set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) else() - if(DEFINED NEO__IGC_LIBRARY_PATH) - set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) - else() - set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) - endif() + set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) endif() endif() - list(APPEND results copy_compiler_files) endif() + list(APPEND results copy_compiler_files) set(outputdir "${TargetDir}/level_zero/${suffix}/test_files/${NEO_ARCH}/") @@ -33,6 +31,8 @@ function(level_zero_gen_kernels target_list platform_name suffix options) set(output_files ${outputpath_base}.bin ${outputpath_base}.gen + ${outputpath_base}.spv + ${outputpath_base}.dbg ) add_custom_command( @@ -45,7 +45,7 @@ function(level_zero_gen_kernels target_list platform_name suffix options) list(APPEND ${target_list} ${output_files}) else() - foreach(_file_name "bin" "gen") + foreach(_file_name "bin" "gen" "spv" "dbg") set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/level_zero/${suffix}/test_files/${NEO_ARCH}/${basename}_${suffix}.${_file_name}") add_custom_command( OUTPUT ${outputpath_base}.${_file_name} diff --git a/opencl/source/built_ins/kernels/CMakeLists.txt b/opencl/source/built_ins/kernels/CMakeLists.txt index 2ae85a3ff6..5399d68c18 100644 --- a/opencl/source/built_ins/kernels/CMakeLists.txt +++ b/opencl/source/built_ins/kernels/CMakeLists.txt @@ -4,52 +4,52 @@ # SPDX-License-Identifier: MIT # -if(NOT NEO_DISABLE_BUILTINS_COMPILATION) - add_custom_target(builtins_vme_sources) - set_target_properties(builtins_vme_sources PROPERTIES FOLDER "${OPENCL_RUNTIME_PROJECTS_FOLDER}/${OPENCL_BUILTINS_PROJECTS_FOLDER}") - set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}") - add_dependencies(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} builtins_vme_sources) - add_subdirectories() - set(GENERATED_BUILTINS ${GENERATED_BUILTINS} PARENT_SCOPE) - set(GENERATED_BUILTINS_STATELESS ${GENERATED_BUILTINS_STATELESS} PARENT_SCOPE) +add_custom_target(builtins_vme_sources) +set_target_properties(builtins_vme_sources PROPERTIES FOLDER "${OPENCL_RUNTIME_PROJECTS_FOLDER}/${OPENCL_BUILTINS_PROJECTS_FOLDER}") +set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}") +add_dependencies(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} builtins_vme_sources) +add_subdirectories() +set(GENERATED_BUILTINS ${GENERATED_BUILTINS} PARENT_SCOPE) +set(GENERATED_BUILTINS_STATELESS ${GENERATED_BUILTINS_STATELESS} PARENT_SCOPE) - if("${NEO_ARCH}" STREQUAL "x32") - set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required") +if("${NEO_ARCH}" STREQUAL "x32") + set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required") +else() + set(BUILTIN_OPTIONS "") +endif() + +set(BUILTIN_OPTIONS_STATELESS + "-cl-intel-greater-than-4GB-buffer-required" +) + +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + list(APPEND __cloc__options__ "-D DEBUG") +endif() + +set(BUILTINS_INCLUDE_DIR ${TargetDir} PARENT_SCOPE) +set(BUILTIN_CPP "") + +function(get_bits_for_stateless gen_type platform_type) + # Force 32bits compiling on gen9lp for stateless builtins + if((${GEN_TYPE} STREQUAL "GEN9") AND (${PLATFORM_TYPE} STREQUAL "LP")) + set(BITS "32" PARENT_SCOPE) else() - set(BUILTIN_OPTIONS "") + set(BITS ${NEO_BITS} PARENT_SCOPE) endif() +endfunction() - set(BUILTIN_OPTIONS_STATELESS - "-cl-intel-greater-than-4GB-buffer-required" - ) +# Define function for compiling built-ins (with ocloc) +function(compile_builtin gen_type platform_type builtin bits builtin_options) + string(TOLOWER ${gen_type} gen_type_lower) + get_family_name_with_type(${gen_type} ${platform_type}) + set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}") + # get filename + set(FILENAME ${builtin}) + # get name of the file w/o extension + get_filename_component(BASENAME ${builtin} NAME_WE) - if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - list(APPEND __cloc__options__ "-D DEBUG") - endif() - - set(BUILTINS_INCLUDE_DIR ${TargetDir} PARENT_SCOPE) - set(BUILTIN_CPP "") - - function(get_bits_for_stateless gen_type platform_type) - # Force 32bits compiling on gen9lp for stateless builtins - if((${GEN_TYPE} STREQUAL "GEN9") AND (${PLATFORM_TYPE} STREQUAL "LP")) - set(BITS "32" PARENT_SCOPE) - else() - set(BITS ${NEO_BITS} PARENT_SCOPE) - endif() - endfunction() - - # Define function for compiling built-ins (with ocloc) - function(compile_builtin gen_type platform_type builtin bits builtin_options) - string(TOLOWER ${gen_type} gen_type_lower) - get_family_name_with_type(${gen_type} ${platform_type}) - set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}") - # get filename - set(FILENAME ${builtin}) - # get name of the file w/o extension - get_filename_component(BASENAME ${builtin} NAME_WE) - - set(OUTPUTPATH_BASE "${OUTPUTDIR}/${BASENAME}_${family_name_with_type}") + set(OUTPUTPATH_BASE "${OUTPUTDIR}/${BASENAME}_${family_name_with_type}") + if(NOT NEO_DISABLE_BUILTINS_COMPILATION) set(OUTPUT_FILES ${OUTPUTPATH_BASE}.spv ${OUTPUTPATH_BASE}.bin @@ -80,30 +80,39 @@ if(NOT NEO_DISABLE_BUILTINS_COMPILATION) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${builtin} ocloc copy_compiler_files ) - endfunction() - - macro(macro_for_each_gen) - foreach(PLATFORM_TYPE ${PLATFORM_TYPES}) - if(${GEN_TYPE}_HAS_${PLATFORM_TYPE}) - get_family_name_with_type(${GEN_TYPE} ${PLATFORM_TYPE}) - string(TOLOWER ${PLATFORM_TYPE} PLATFORM_TYPE_LOWER) - unset(BUILTINS_COMMANDS) - foreach(GENERATED_BUILTIN ${GENERATED_BUILTINS}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}") - list(APPEND BUILTINS_COMMANDS ${TargetDir}/${BUILTIN_CPP}) - endforeach() - get_bits_for_stateless(${GEN_TYPE} ${PLATFORM_TYPE}) - foreach(GENERATED_BUILTIN_STATELESS ${GENERATED_BUILTINS_STATELESS}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}") - list(APPEND BUILTINS_COMMANDS ${TargetDir}/${BUILTIN_CPP}) - endforeach() - set(target_name builtins_${family_name_with_type}_vme) - add_custom_target(${target_name} DEPENDS ${BUILTINS_COMMANDS}) - add_dependencies(builtins ${target_name}) - set_target_properties(${target_name} PROPERTIES FOLDER "${OPENCL_RUNTIME_PROJECTS_FOLDER}/built_ins/${family_name_with_type}") - endif() + else() + foreach(_file_name "spv" "bin" "cpp" "gen") + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/built_ins/${NEO_ARCH}/${gen_type_lower}/${BASENAME}_${family_name_with_type}.${_file_name}") + add_custom_command( + OUTPUT ${OUTPUTPATH_BASE}.${_file_name} + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) endforeach() - endmacro() + endif() +endfunction() - apply_macro_for_each_gen("SUPPORTED") -endif() +macro(macro_for_each_gen) + foreach(PLATFORM_TYPE ${PLATFORM_TYPES}) + if(${GEN_TYPE}_HAS_${PLATFORM_TYPE}) + get_family_name_with_type(${GEN_TYPE} ${PLATFORM_TYPE}) + string(TOLOWER ${PLATFORM_TYPE} PLATFORM_TYPE_LOWER) + unset(BUILTINS_COMMANDS) + foreach(GENERATED_BUILTIN ${GENERATED_BUILTINS}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}") + list(APPEND BUILTINS_COMMANDS ${TargetDir}/${BUILTIN_CPP}) + endforeach() + get_bits_for_stateless(${GEN_TYPE} ${PLATFORM_TYPE}) + foreach(GENERATED_BUILTIN_STATELESS ${GENERATED_BUILTINS_STATELESS}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}") + list(APPEND BUILTINS_COMMANDS ${TargetDir}/${BUILTIN_CPP}) + endforeach() + set(target_name builtins_${family_name_with_type}_vme) + add_custom_target(${target_name} DEPENDS ${BUILTINS_COMMANDS}) + add_dependencies(builtins ${target_name}) + set_target_properties(${target_name} PROPERTIES FOLDER "${OPENCL_RUNTIME_PROJECTS_FOLDER}/built_ins/${family_name_with_type}") + endif() + endforeach() +endmacro() + +apply_macro_for_each_gen("SUPPORTED") diff --git a/opencl/source/scheduler/scheduler_binary.cmake b/opencl/source/scheduler/scheduler_binary.cmake index 262810fc9b..eda4e369af 100644 --- a/opencl/source/scheduler/scheduler_binary.cmake +++ b/opencl/source/scheduler/scheduler_binary.cmake @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2020 Intel Corporation +# Copyright (C) 2018-2021 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -33,26 +33,37 @@ function(compile_kernel target gen_type platform_type kernel) set(SCHEDULER_CPP "${OUTPUTDIR}/${BASENAME}_${family_name_with_type}.cpp") - if(NOT DEFINED cloc_cmd_prefix) - if(WIN32) - set(cloc_cmd_prefix ocloc) - else() - if(DEFINED NEO__IGC_LIBRARY_PATH) - set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) + if(NOT NEO_DISABLE_BUILTINS_COMPILATION) + if(NOT DEFINED cloc_cmd_prefix) + if(WIN32) + set(cloc_cmd_prefix ocloc) else() - set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) + if(DEFINED NEO__IGC_LIBRARY_PATH) + set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) + else() + set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) + endif() endif() endif() + list(APPEND __cloc__options__ "-cl-kernel-arg-info") + list(APPEND __cloc__options__ "-cl-std=CL2.0") + list(APPEND __cloc__options__ "-cl-intel-disable-a64WA") + add_custom_command( + OUTPUT ${OUTPUTPATH} + COMMAND ${cloc_cmd_prefix} -q -file ${kernel} -device ${DEFAULT_SUPPORTED_${gen_type}_${platform_type}_PLATFORM} -cl-intel-greater-than-4GB-buffer-required -${NEO_BITS} -out_dir ${OUTPUTDIR} -cpp_file -options "$" -internal_options "-cl-intel-no-spill" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${kernel} ocloc copy_compiler_files + ) + else() + foreach(_file_name "cpp" "bin") + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/scheduler/${NEO_ARCH}/${gen_type_lower}/${BASENAME}_${family_name_with_type}.${_file_name}") + add_custom_command( + OUTPUT "${OUTPUTDIR}/${BASENAME}_${family_name_with_type}.${_file_name}" + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) + endforeach() endif() - list(APPEND __cloc__options__ "-cl-kernel-arg-info") - list(APPEND __cloc__options__ "-cl-std=CL2.0") - list(APPEND __cloc__options__ "-cl-intel-disable-a64WA") - add_custom_command( - OUTPUT ${OUTPUTPATH} - COMMAND ${cloc_cmd_prefix} -q -file ${kernel} -device ${DEFAULT_SUPPORTED_${gen_type}_${platform_type}_PLATFORM} -cl-intel-greater-than-4GB-buffer-required -${NEO_BITS} -out_dir ${OUTPUTDIR} -cpp_file -options "$" -internal_options "-cl-intel-no-spill" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${kernel} ocloc copy_compiler_files - ) set(SCHEDULER_CPP ${SCHEDULER_CPP} PARENT_SCOPE) add_custom_target(${target} DEPENDS ${OUTPUTPATH}) diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt index d7f923187c..def015f9dd 100644 --- a/shared/source/built_ins/kernels/CMakeLists.txt +++ b/shared/source/built_ins/kernels/CMakeLists.txt @@ -4,90 +4,90 @@ # SPDX-License-Identifier: MIT # -if(NOT NEO_DISABLE_BUILTINS_COMPILATION) - add_custom_target(builtins) - set_target_properties(builtins PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}") - set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}") - add_dependencies(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} builtins) - add_dependencies(${BUILTINS_BINARIES_BINDLESS_LIB_NAME} builtins) - add_subdirectories() - set(GENERATED_BUILTINS ${GENERATED_BUILTINS} PARENT_SCOPE) - set(GENERATED_BUILTINS_AUX_TRANSLATION ${GENERATED_BUILTINS_AUX_TRANSLATION} PARENT_SCOPE) - set(GENERATED_BUILTINS_IMAGES ${GENERATED_BUILTINS_IMAGES} PARENT_SCOPE) - set(GENERATED_BUILTINS_STATELESS ${GENERATED_BUILTINS_STATELESS} PARENT_SCOPE) +add_custom_target(builtins) +set_target_properties(builtins PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}") +set(BUILTINS_OUTDIR_WITH_ARCH "${TargetDir}/built_ins/${NEO_ARCH}") +add_dependencies(${BUILTINS_BINARIES_BINDFUL_LIB_NAME} builtins) +add_dependencies(${BUILTINS_BINARIES_BINDLESS_LIB_NAME} builtins) +add_subdirectories() +set(GENERATED_BUILTINS ${GENERATED_BUILTINS} PARENT_SCOPE) +set(GENERATED_BUILTINS_AUX_TRANSLATION ${GENERATED_BUILTINS_AUX_TRANSLATION} PARENT_SCOPE) +set(GENERATED_BUILTINS_IMAGES ${GENERATED_BUILTINS_IMAGES} PARENT_SCOPE) +set(GENERATED_BUILTINS_STATELESS ${GENERATED_BUILTINS_STATELESS} PARENT_SCOPE) - if("${NEO_ARCH}" STREQUAL "x32") - set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required") +if("${NEO_ARCH}" STREQUAL "x32") + set(BUILTIN_OPTIONS "-cl-intel-greater-than-4GB-buffer-required") +else() + set(BUILTIN_OPTIONS "") +endif() + +set(BUILTIN_OPTIONS_STATELESS + "-cl-intel-greater-than-4GB-buffer-required" +) + +set(bindless_OPTIONS + -internal_options "-cl-intel-use-bindless-mode" +) + +set(bindful_OPTIONS + "" +) + +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + list(APPEND __cloc__options__ "-D DEBUG") +endif() + +set(BUILTINS_INCLUDE_DIR ${TargetDir} PARENT_SCOPE) +set(BUILTIN_CPP "") + +function(get_bits_for_stateless gen_type platform_type) + # Force 32bits compiling on gen9lp for stateless builtins + if((${gen_type} STREQUAL "GEN9") AND (${platform_type} STREQUAL "LP")) + set(BITS "32" PARENT_SCOPE) else() - set(BUILTIN_OPTIONS "") + set(BITS ${NEO_BITS} PARENT_SCOPE) endif() +endfunction() - set(BUILTIN_OPTIONS_STATELESS - "-cl-intel-greater-than-4GB-buffer-required" +# Define function for compiling built-ins (with ocloc) +function(compile_builtin gen_type platform_type builtin bits builtin_options mode) + string(TOLOWER ${gen_type} gen_type_lower) + get_family_name_with_type(${gen_type} ${platform_type}) + set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}") + # get filename + set(FILENAME ${builtin}) + # get name of the file w/o extension + get_filename_component(BASENAME ${builtin} NAME_WE) + + set(OUTPUT_FILE_SPV + ${OUTPUTDIR}/${mode}_${BASENAME}_${family_name_with_type}.spv ) - set(bindless_OPTIONS - -internal_options "-cl-intel-use-bindless-mode" - ) - - set(bindful_OPTIONS - "" - ) - - if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") - list(APPEND __cloc__options__ "-D DEBUG") - endif() - - set(BUILTINS_INCLUDE_DIR ${TargetDir} PARENT_SCOPE) - set(BUILTIN_CPP "") - - function(get_bits_for_stateless gen_type platform_type) - # Force 32bits compiling on gen9lp for stateless builtins - if((${gen_type} STREQUAL "GEN9") AND (${platform_type} STREQUAL "LP")) - set(BITS "32" PARENT_SCOPE) + if(NOT DEFINED cloc_cmd_prefix) + if(WIN32) + set(cloc_cmd_prefix ocloc) else() - set(BITS ${NEO_BITS} PARENT_SCOPE) - endif() - endfunction() - - # Define function for compiling built-ins (with ocloc) - function(compile_builtin gen_type platform_type builtin bits builtin_options mode) - string(TOLOWER ${gen_type} gen_type_lower) - get_family_name_with_type(${gen_type} ${platform_type}) - set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/${gen_type_lower}") - # get filename - set(FILENAME ${builtin}) - # get name of the file w/o extension - get_filename_component(BASENAME ${builtin} NAME_WE) - - set(OUTPUT_FILE_SPV - ${OUTPUTDIR}/${mode}_${BASENAME}_${family_name_with_type}.spv - ) - - if(NOT DEFINED cloc_cmd_prefix) - if(WIN32) - set(cloc_cmd_prefix ocloc) + if(DEFINED NEO__IGC_LIBRARY_PATH) + set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) else() - if(DEFINED NEO__IGC_LIBRARY_PATH) - set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) - else() - set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) - endif() + set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) endif() endif() - list(APPEND __cloc__options__ "-cl-kernel-arg-info") - set(INTERNAL_OPTIONS "${${mode}_OPTIONS}") - add_custom_command( - OUTPUT ${OUTPUT_FILE_SPV} - COMMAND ${cloc_cmd_prefix} -q -file ${FILENAME} -spv_only -device ${DEFAULT_SUPPORTED_${gen_type}_${platform_type}_PLATFORM} ${builtin_options} -${bits} -output ${mode}_${BASENAME} -out_dir ${OUTPUTDIR} ${INTERNAL_OPTIONS} -options "$" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${builtin} ocloc copy_compiler_files + endif() + list(APPEND __cloc__options__ "-cl-kernel-arg-info") + set(INTERNAL_OPTIONS "${${mode}_OPTIONS}") + add_custom_command( + OUTPUT ${OUTPUT_FILE_SPV} + COMMAND ${cloc_cmd_prefix} -q -file ${FILENAME} -spv_only -device ${DEFAULT_SUPPORTED_${gen_type}_${platform_type}_PLATFORM} ${builtin_options} -${bits} -output ${mode}_${BASENAME} -out_dir ${OUTPUTDIR} ${INTERNAL_OPTIONS} -options "$" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${builtin} ocloc copy_compiler_files + ) + foreach(REVISION_ID ${${platform_type}_${gen_type}_REVISIONS}) + set(OUTPUT_FILE_CPP + ${OUTPUTDIR}/${mode}_${BASENAME}_${family_name_with_type}_${REVISION_ID}.cpp ) - foreach(REVISION_ID ${${platform_type}_${gen_type}_REVISIONS}) - set(OUTPUT_FILE_CPP - ${OUTPUTDIR}/${mode}_${BASENAME}_${family_name_with_type}_${REVISION_ID}.cpp - ) - set(BINARY_OUTPUT "${OUTPUTDIR}/${mode}_${BASENAME}_${REVISION_ID}_${family_name_with_type}") + set(BINARY_OUTPUT "${OUTPUTDIR}/${mode}_${BASENAME}_${REVISION_ID}_${family_name_with_type}") + if(NOT NEO_DISABLE_BUILTINS_COMPILATION) set(OUTPUT_FILES_BINARIES ${BINARY_OUTPUT}.gen ${BINARY_OUTPUT}.bin @@ -105,38 +105,53 @@ if(NOT NEO_DISABLE_BUILTINS_COMPILATION) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${OUTPUT_FILES_BINARIES} $ ) - endforeach() - set(BUILTINS_COMMANDS ${BUILTINS_COMMANDS} PARENT_SCOPE) - endfunction() + else() + foreach(_file_name "gen" "bin") + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/built_ins/${NEO_ARCH}/${gen_type_lower}/${mode}_${BASENAME}_${REVISION_ID}_${family_name_with_type}.${_file_name}") + add_custom_command( + OUTPUT ${BINARY_OUTPUT}.${_file_name} + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) + endforeach() + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/built_ins/${NEO_ARCH}/${gen_type_lower}/${mode}_${BASENAME}_${family_name_with_type}_${REVISION_ID}.cpp") + add_custom_command( + OUTPUT ${OUTPUT_FILE_CPP} + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) + list(APPEND BUILTINS_COMMANDS "${OUTPUT_FILE_CPP}") + endif() + endforeach() + set(BUILTINS_COMMANDS ${BUILTINS_COMMANDS} PARENT_SCOPE) +endfunction() - function(generate_cpp_spirv builtin) - if(NOT DEFINED cloc_cmd_prefix) - if(WIN32) - set(cloc_cmd_prefix $) +function(generate_cpp_spirv builtin) + if(NOT DEFINED cloc_cmd_prefix) + if(WIN32) + set(cloc_cmd_prefix $) + else() + if(DEFINED NEO__IGC_LIBRARY_PATH) + set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) else() - if(DEFINED NEO__IGC_LIBRARY_PATH) - set(cloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$ $) - else() - set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) - endif() + set(cloc_cmd_prefix LD_LIBRARY_PATH=$ $) endif() endif() + endif() - get_filename_component(BASENAME ${builtin} NAME_WE) - get_filename_component(DIR ${builtin} DIRECTORY) + get_filename_component(BASENAME ${builtin} NAME_WE) + get_filename_component(DIR ${builtin} DIRECTORY) - set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/spirv/${DIR}") - string(REPLACE "//" "/" OUTPUTDIR ${OUTPUTDIR}) + set(OUTPUTDIR "${BUILTINS_OUTDIR_WITH_ARCH}/spirv/${DIR}") + string(REPLACE "//" "/" OUTPUTDIR ${OUTPUTDIR}) - set(INPUT_FILENAME ${builtin}.builtin_kernel) + set(INPUT_FILENAME ${builtin}.builtin_kernel) - set(GENERATED_SPV_INPUT ${OUTPUTDIR}/${BASENAME}.spv) - set(OUTPUT_FILE_CPP - ${OUTPUTDIR}/${BASENAME}.cpp - ) - - set(OUTPUT_LIST_SPV_FILES ${OUTPUT_LIST_SPV_FILES} ${OUTPUT_FILES_FOR_SPV} PARENT_SCOPE) - set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE) + set(GENERATED_SPV_INPUT ${OUTPUTDIR}/${BASENAME}.spv) + set(OUTPUT_FILE_CPP + ${OUTPUTDIR}/${BASENAME}.cpp + ) + if(NOT NEO_DISABLE_BUILTINS_COMPILATION) add_custom_command( OUTPUT ${GENERATED_SPV_INPUT} COMMAND ${cloc_cmd_prefix} -q -spv_only -file ${INPUT_FILENAME} -out_dir ${OUTPUTDIR} -output_no_suffix -options "-cl-kernel-arg-info" @@ -149,77 +164,91 @@ if(NOT NEO_DISABLE_BUILTINS_COMPILATION) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${GENERATED_SPV_INPUT} $ ) - endfunction() + else() + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/built_ins/${NEO_ARCH}/spirv/${DIR}/${BASENAME}.spv") + add_custom_command( + OUTPUT ${GENERATED_SPV_INPUT} + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) + set(_file_prebuilt "${NEO_SOURCE_DIR}/../neo_test_kernels/built_ins/${NEO_ARCH}/spirv/${DIR}/${BASENAME}.cpp") + add_custom_command( + OUTPUT ${OUTPUT_FILE_CPP} + COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUTDIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${OUTPUTDIR} + ) + endif() + set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE) +endfunction() - macro(macro_for_each_gen) - foreach(PLATFORM_TYPE ${PLATFORM_TYPES}) - if(${GEN_TYPE}_HAS_${PLATFORM_TYPE}) - unset(IMAGE_SUPPORT) - unset(AUX_TRANSLATION_SUPPORT) - GEN_CONTAINS_PLATFORMS("SUPPORTED_IMAGES" ${GEN_TYPE} IMAGE_SUPPORT) - GEN_CONTAINS_PLATFORMS("SUPPORTED_AUX_TRANSLATION" ${GEN_TYPE} AUX_TRANSLATION_SUPPORT) - get_family_name_with_type(${GEN_TYPE} ${PLATFORM_TYPE}) - string(TOLOWER ${PLATFORM_TYPE} PLATFORM_TYPE_LOWER) - get_bits_for_stateless(${GEN_TYPE} ${PLATFORM_TYPE}) - set(target_name builtins_${family_name_with_type}) - add_custom_target(${target_name}) - add_dependencies(builtins ${target_name}) - set_target_properties(${target_name} PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}/${family_name_with_type}") - foreach(MODE ${BIND_MODES}) - unset(BUILTINS_COMMANDS) - foreach(GENERATED_BUILTIN ${GENERATED_BUILTINS}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) - endforeach() - foreach(GENERATED_BUILTIN_STATELESS ${GENERATED_BUILTINS_STATELESS}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}" ${MODE}) - endforeach() - if(${IMAGE_SUPPORT}) - foreach(GENERATED_BUILTINS_IMAGES ${GENERATED_BUILTINS_IMAGES}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTINS_IMAGES}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) - endforeach() - foreach(GENERATED_BUILTIN_IMAGES_STATELESS ${GENERATED_BUILTINS_IMAGES_STATELESS}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_IMAGES_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}" ${MODE}) - endforeach() - endif() - if(${AUX_TRANSLATION_SUPPORT}) - foreach(GENERATED_BUILTIN_AUX_TRANSLATION ${GENERATED_BUILTINS_AUX_TRANSLATION}) - compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_AUX_TRANSLATION}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) - endforeach() - endif() - get_property(GENERATED_BUILTINS_CPPS_${MODE} GLOBAL PROPERTY GENERATED_BUILTINS_CPPS_${MODE}) - foreach(BUILTIN ${BUILTINS_COMMANDS}) - list(APPEND GENERATED_BUILTINS_CPPS_${MODE} ${BUILTIN}) - endforeach() - set_property(GLOBAL PROPERTY GENERATED_BUILTINS_CPPS_${MODE} ${GENERATED_BUILTINS_CPPS_${MODE}}) - add_custom_target(${target_name}_${MODE} DEPENDS ${BUILTINS_COMMANDS}) - add_dependencies(${target_name} ${target_name}_${MODE}) - set_target_properties(${target_name}_${MODE} PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}/${family_name_with_type}") +macro(macro_for_each_gen) + foreach(PLATFORM_TYPE ${PLATFORM_TYPES}) + if(${GEN_TYPE}_HAS_${PLATFORM_TYPE}) + unset(IMAGE_SUPPORT) + unset(AUX_TRANSLATION_SUPPORT) + GEN_CONTAINS_PLATFORMS("SUPPORTED_IMAGES" ${GEN_TYPE} IMAGE_SUPPORT) + GEN_CONTAINS_PLATFORMS("SUPPORTED_AUX_TRANSLATION" ${GEN_TYPE} AUX_TRANSLATION_SUPPORT) + get_family_name_with_type(${GEN_TYPE} ${PLATFORM_TYPE}) + string(TOLOWER ${PLATFORM_TYPE} PLATFORM_TYPE_LOWER) + get_bits_for_stateless(${GEN_TYPE} ${PLATFORM_TYPE}) + set(target_name builtins_${family_name_with_type}) + add_custom_target(${target_name}) + add_dependencies(builtins ${target_name}) + set_target_properties(${target_name} PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}/${family_name_with_type}") + foreach(MODE ${BIND_MODES}) + unset(BUILTINS_COMMANDS) + foreach(GENERATED_BUILTIN ${GENERATED_BUILTINS}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) endforeach() - endif() - endforeach() - endmacro() + foreach(GENERATED_BUILTIN_STATELESS ${GENERATED_BUILTINS_STATELESS}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}" ${MODE}) + endforeach() + if(${IMAGE_SUPPORT}) + foreach(GENERATED_BUILTINS_IMAGES ${GENERATED_BUILTINS_IMAGES}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTINS_IMAGES}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) + endforeach() + foreach(GENERATED_BUILTIN_IMAGES_STATELESS ${GENERATED_BUILTINS_IMAGES_STATELESS}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_IMAGES_STATELESS}.builtin_kernel ${BITS} "${BUILTIN_OPTIONS_STATELESS}" ${MODE}) + endforeach() + endif() + if(${AUX_TRANSLATION_SUPPORT}) + foreach(GENERATED_BUILTIN_AUX_TRANSLATION ${GENERATED_BUILTINS_AUX_TRANSLATION}) + compile_builtin(${GEN_TYPE} ${PLATFORM_TYPE} ${GENERATED_BUILTIN_AUX_TRANSLATION}.builtin_kernel ${NEO_BITS} "${BUILTIN_OPTIONS}" ${MODE}) + endforeach() + endif() + get_property(GENERATED_BUILTINS_CPPS_${MODE} GLOBAL PROPERTY GENERATED_BUILTINS_CPPS_${MODE}) + foreach(BUILTIN ${BUILTINS_COMMANDS}) + list(APPEND GENERATED_BUILTINS_CPPS_${MODE} ${BUILTIN}) + endforeach() + set_property(GLOBAL PROPERTY GENERATED_BUILTINS_CPPS_${MODE} ${GENERATED_BUILTINS_CPPS_${MODE}}) + add_custom_target(${target_name}_${MODE} DEPENDS ${BUILTINS_COMMANDS}) + add_dependencies(${target_name} ${target_name}_${MODE}) + set_target_properties(${target_name}_${MODE} PROPERTIES FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}/${family_name_with_type}") + endforeach() + endif() + endforeach() +endmacro() - file(MAKE_DIRECTORY "${BUILTINS_OUTDIR_WITH_ARCH}/spirv") - foreach(builtin ${GENERATED_BUILTINS}) - generate_cpp_spirv(${builtin}) - endforeach() - foreach(builtin_images ${GENERATED_BUILTINS_IMAGES}) - generate_cpp_spirv(${builtin_images}) - endforeach() - foreach(builtin_aux_translation ${GENERATED_BUILTINS_AUX_TRANSLATION}) - generate_cpp_spirv(${builtin_aux_translation}) - endforeach() - foreach(builtin_stateless ${GENERATED_BUILTINS_STATELESS}) - generate_cpp_spirv(${builtin_stateless}) - endforeach() - foreach(builtin_images_stateless ${GENERATED_BUILTINS_IMAGES_STATELESS}) - generate_cpp_spirv(${builtin_images_stateless}) - endforeach() - add_library(${BUILTINS_SPIRV_LIB_NAME} OBJECT ${OUTPUT_LIST_CPP_FILES}) - set_target_properties(${BUILTINS_SPIRV_LIB_NAME} PROPERTIES - POSITION_INDEPENDENT_CODE ON - FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}" - ) +file(MAKE_DIRECTORY "${BUILTINS_OUTDIR_WITH_ARCH}/spirv") +foreach(builtin ${GENERATED_BUILTINS}) + generate_cpp_spirv(${builtin}) +endforeach() +foreach(builtin_images ${GENERATED_BUILTINS_IMAGES}) + generate_cpp_spirv(${builtin_images}) +endforeach() +foreach(builtin_aux_translation ${GENERATED_BUILTINS_AUX_TRANSLATION}) + generate_cpp_spirv(${builtin_aux_translation}) +endforeach() +foreach(builtin_stateless ${GENERATED_BUILTINS_STATELESS}) + generate_cpp_spirv(${builtin_stateless}) +endforeach() +foreach(builtin_images_stateless ${GENERATED_BUILTINS_IMAGES_STATELESS}) + generate_cpp_spirv(${builtin_images_stateless}) +endforeach() +add_library(${BUILTINS_SPIRV_LIB_NAME} OBJECT ${OUTPUT_LIST_CPP_FILES}) +set_target_properties(${BUILTINS_SPIRV_LIB_NAME} PROPERTIES + POSITION_INDEPENDENT_CODE ON + FOLDER "${SHARED_SOURCE_PROJECTS_FOLDER}/${SHARED_BUILTINS_PROJECTS_FOLDER}" +) - apply_macro_for_each_gen("SUPPORTED") -endif() +apply_macro_for_each_gen("SUPPORTED") diff --git a/shared/test/common/test_files/CMakeLists.txt b/shared/test/common/test_files/CMakeLists.txt index bd26771475..f4caad880c 100644 --- a/shared/test/common/test_files/CMakeLists.txt +++ b/shared/test/common/test_files/CMakeLists.txt @@ -82,9 +82,7 @@ file(GLOB_RECURSE TEST_KERNELS_IMAGES *_images.cl) add_custom_target(prepare_test_kernels_for_shared) add_dependencies(prepare_test_kernels_for_shared ${BUILTINS_BINARIES_BINDFUL_LIB_NAME}) add_dependencies(prepare_test_kernels_for_shared ${BUILTINS_BINARIES_BINDLESS_LIB_NAME}) -if(TARGET ${BUILTINS_SPIRV_LIB_NAME}) - add_dependencies(prepare_test_kernels_for_shared ${BUILTINS_SPIRV_LIB_NAME}) -endif() +add_dependencies(prepare_test_kernels_for_shared ${BUILTINS_SPIRV_LIB_NAME}) set_target_properties(prepare_test_kernels_for_shared PROPERTIES FOLDER "${SHARED_TEST_PROJECTS_FOLDER}/${SHARED_TEST_PROJECTS_SUB_FOLDER}") macro(macro_for_each_platform)