diff --git a/clang/lib/CodeGen/CMakeLists.txt b/clang/lib/CodeGen/CMakeLists.txt index f17ca4bd9ab53..6ffcb6598ad5c 100644 --- a/clang/lib/CodeGen/CMakeLists.txt +++ b/clang/lib/CodeGen/CMakeLists.txt @@ -29,6 +29,7 @@ set(LLVM_LINK_COMPONENTS ScalarOpts Support SYCLLowerIR + SYCLNativeCPUUtils Target TargetParser TransformUtils diff --git a/llvm/lib/CMakeLists.txt b/llvm/lib/CMakeLists.txt index 7d0a02c843a44..d80f251469765 100644 --- a/llvm/lib/CMakeLists.txt +++ b/llvm/lib/CMakeLists.txt @@ -38,6 +38,7 @@ add_subdirectory(LineEditor) add_subdirectory(ProfileData) add_subdirectory(Passes) add_subdirectory(SYCLLowerIR) +add_subdirectory(SYCLNativeCPUUtils) add_subdirectory(TargetParser) add_subdirectory(TextAPI) add_subdirectory(ToolDrivers) diff --git a/llvm/lib/SYCLLowerIR/CMakeLists.txt b/llvm/lib/SYCLLowerIR/CMakeLists.txt index 6bd5e9eb719b7..64a2254f15f5e 100644 --- a/llvm/lib/SYCLLowerIR/CMakeLists.txt +++ b/llvm/lib/SYCLLowerIR/CMakeLists.txt @@ -70,10 +70,6 @@ add_llvm_component_library(LLVMSYCLLowerIR LocalAccessorToSharedMemory.cpp GlobalOffset.cpp TargetHelpers.cpp - PrepareSYCLNativeCPU.cpp - RenameKernelSYCLNativeCPU.cpp - ConvertToMuxBuiltinsSYCLNativeCPU.cpp - PipelineSYCLNativeCPU.cpp ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/SYCLLowerIR diff --git a/llvm/lib/SYCLNativeCPUUtils/CMakeLists.txt b/llvm/lib/SYCLNativeCPUUtils/CMakeLists.txt new file mode 100644 index 0000000000000..a16ddc83e7443 --- /dev/null +++ b/llvm/lib/SYCLNativeCPUUtils/CMakeLists.txt @@ -0,0 +1,98 @@ +add_llvm_component_library(LLVMSYCLNativeCPUUtils + PipelineSYCLNativeCPU.cpp + PrepareSYCLNativeCPU.cpp + RenameKernelSYCLNativeCPU.cpp + ConvertToMuxBuiltinsSYCLNativeCPU.cpp + + + ADDITIONAL_HEADER_DIRS + ${LLVM_MAIN_INCLUDE_DIR}/llvm/SYCLLowerIR + + LINK_COMPONENTS + Analysis + Core + Support + Passes + Target + TargetParser + TransformUtils + ipo + ) + +set(OCK_SOURCE_DIR "" CACHE PATH "Root of the local checkout of the oneAPI Construction Kit") +set(OCK_GIT_REPO "" CACHE STRING "Git repository for the oneAPI Construction Kit FetchContent") +set(OCK_GIT_TAG "" CACHE STRING "Git tag for the oneAPI Construction Kit FetchContent") +option(NATIVECPU_OCK_USE_FETCHCONTENT "Use FetchContent to acquire oneAPI Construction Kit source code" On) +option(NATIVECPU_USE_OCK "Use the oneAPI Construction Kit for Native CPU" ON) + +# Don't fetch OCK if Native CPU is not enabled. +if(NOT "native_cpu" IN_LIST SYCL_ENABLE_PLUGINS) + set(NATIVECPU_USE_OCK Off CACHE BOOL "Use the oneAPI Construction Kit for Native CPU" FORCE) +endif() + +if(NATIVECPU_USE_OCK) + if(NATIVECPU_OCK_USE_FETCHCONTENT) + set(OCK_GIT_INTERNAL_REPO "https://github.com/codeplaysoftware/oneapi-construction-kit.git") + # commit 05e6e1b211704224fbdc6394d85d637f57fafdaf + # Merge: 256027e8 fbc2e567 + # Author: Pietro Ghiglio + # Date: Fri May 17 13:08:15 2024 +0200 + # Merge pull request #458 from PietroGhg/pietro/link_aggressiveinstcombine + # Link vecz to aggressiveinstcombine + set(OCK_GIT_INTERNAL_TAG 05e6e1b211704224fbdc6394d85d637f57fafdaf) + + # Overwrite OCK_GIT_INTERNAL_REPO/OCK_GIT_INTERNAL_TAG if the corresponding options are set + if(OCK_GIT_REPO) + set(OCK_GIT_INTERNAL_REPO "${OCK_GIT_REPO}") + endif() + if(OCK_GIT_TAG) + set(OCK_GIT_INTERNAL_TAG "${OCK_GIT_TAG}") + endif() + include(FetchContent) + FetchContent_Declare(oneapi-ck + GIT_REPOSITORY "${OCK_GIT_INTERNAL_REPO}" + GIT_TAG "${OCK_GIT_INTERNAL_TAG}" + ) + FetchContent_GetProperties(oneapi-ck) + if(NOT oneapi-ck_POPULATED) + message(STATUS "Cloning oneAPI Construction Kit from ${OCK_GIT_INTERNAL_REPO}, tag ${OCK_GIT_INTERNAL_TAG}") + FetchContent_Populate(oneapi-ck) + message(STATUS "oneAPI Construction Kit cloned in ${oneapi-ck_SOURCE_DIR}") + set(OCK_SOURCE_DIR_INTERNAL ${oneapi-ck_SOURCE_DIR}/compiler_passes) + set(OCK_BINARY_DIR_INTERNAL ${oneapi-ck_BINARY_DIR}) + endif() + elseif(OCK_SOURCE_DIR) + set(OCK_SOURCE_DIR_INTERNAL "${OCK_SOURCE_DIR}/compiler_passes") + set(OCK_BINARY_DIR_INTERNAL "${CMAKE_CURRENT_BINARY_DIR}/oneapi-construction-kit") + else() + message(FATAL_ERROR "NATIVECPU_OCK_USE_FETCHCONTENT is Off and OCK_SOURCE_DIR not set") + endif() + + set(CA_ENABLE_API "cl" CACHE STRING "" FORCE) + add_subdirectory( + ${OCK_SOURCE_DIR_INTERNAL} + ${OCK_BINARY_DIR_INTERNAL} EXCLUDE_FROM_ALL) + + install(TARGETS compiler-pipeline + EXPORT;LLVMExports + LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline + ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline + RUNTIME DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline) + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS compiler-pipeline) + install(TARGETS vecz + EXPORT;LLVMExports + LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz + ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz + RUNTIME DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz) + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS vecz) + install(TARGETS multi_llvm EXPORT;LLVMExports) + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS multi_llvm) + target_compile_definitions(LLVMSYCLNativeCPUUtils PRIVATE NATIVECPU_USE_OCK) + target_include_directories(LLVMSYCLNativeCPUUtils PRIVATE + ${oneapi-ck_SOURCE_DIR}/modules/compiler/multi_llvm/include + ${oneapi-ck_SOURCE_DIR}/modules/cargo/include + ${oneapi-ck_SOURCE_DIR}/modules/compiler/vecz/include + ${oneapi-ck_SOURCE_DIR}/modules/compiler/utils/include) + target_link_libraries(LLVMSYCLNativeCPUUtils PRIVATE compiler-pipeline vecz) + +endif() diff --git a/llvm/lib/SYCLLowerIR/ConvertToMuxBuiltinsSYCLNativeCPU.cpp b/llvm/lib/SYCLNativeCPUUtils/ConvertToMuxBuiltinsSYCLNativeCPU.cpp similarity index 100% rename from llvm/lib/SYCLLowerIR/ConvertToMuxBuiltinsSYCLNativeCPU.cpp rename to llvm/lib/SYCLNativeCPUUtils/ConvertToMuxBuiltinsSYCLNativeCPU.cpp diff --git a/llvm/lib/SYCLLowerIR/PipelineSYCLNativeCPU.cpp b/llvm/lib/SYCLNativeCPUUtils/PipelineSYCLNativeCPU.cpp similarity index 99% rename from llvm/lib/SYCLLowerIR/PipelineSYCLNativeCPU.cpp rename to llvm/lib/SYCLNativeCPUUtils/PipelineSYCLNativeCPU.cpp index bfed3660de282..410d0aeb3f243 100644 --- a/llvm/lib/SYCLLowerIR/PipelineSYCLNativeCPU.cpp +++ b/llvm/lib/SYCLNativeCPUUtils/PipelineSYCLNativeCPU.cpp @@ -22,9 +22,9 @@ #include "compiler/utils/prepare_barriers_pass.h" #include "compiler/utils/sub_group_analysis.h" #include "compiler/utils/work_item_loops_pass.h" -#include "llvm/Transforms/IPO/AlwaysInliner.h" #include "vecz/pass.h" #include "vecz/vecz_target_info.h" +#include "llvm/Transforms/IPO/AlwaysInliner.h" #endif using namespace llvm; @@ -85,5 +85,4 @@ void llvm::sycl::utils::addSYCLNativeCPUBackendPasses( #endif MPM.addPass(PrepareSYCLNativeCPUPass()); MPM.addPass(RenameKernelSYCLNativeCPUPass()); - } diff --git a/llvm/lib/SYCLLowerIR/PrepareSYCLNativeCPU.cpp b/llvm/lib/SYCLNativeCPUUtils/PrepareSYCLNativeCPU.cpp similarity index 100% rename from llvm/lib/SYCLLowerIR/PrepareSYCLNativeCPU.cpp rename to llvm/lib/SYCLNativeCPUUtils/PrepareSYCLNativeCPU.cpp diff --git a/llvm/lib/SYCLLowerIR/RenameKernelSYCLNativeCPU.cpp b/llvm/lib/SYCLNativeCPUUtils/RenameKernelSYCLNativeCPU.cpp similarity index 100% rename from llvm/lib/SYCLLowerIR/RenameKernelSYCLNativeCPU.cpp rename to llvm/lib/SYCLNativeCPUUtils/RenameKernelSYCLNativeCPU.cpp diff --git a/sycl/plugins/native_cpu/CMakeLists.txt b/sycl/plugins/native_cpu/CMakeLists.txt index cf0b14f71699f..6015784dc3bb7 100644 --- a/sycl/plugins/native_cpu/CMakeLists.txt +++ b/sycl/plugins/native_cpu/CMakeLists.txt @@ -23,76 +23,9 @@ add_sycl_plugin(native_cpu UnifiedRuntimeCommon ) -set(OCK_SOURCE_DIR "" CACHE PATH "Root of the local checkout of the oneAPI Construction Kit") -set(OCK_GIT_REPO "" CACHE STRING "Git repository for the oneAPI Construction Kit FetchContent") -set(OCK_GIT_TAG "" CACHE STRING "Git tag for the oneAPI Construction Kit FetchContent") -option(NATIVECPU_OCK_USE_FETCHCONTENT "Use FetchContent to acquire oneAPI Construction Kit source code" On) if(NATIVECPU_USE_OCK) - if(NATIVECPU_OCK_USE_FETCHCONTENT) - set(OCK_GIT_INTERNAL_REPO "https://github.com/codeplaysoftware/oneapi-construction-kit.git") - # commit bd7eadaf7ffc7d74c88dd309119e858b7ffae0cf - # Merge: e4f71dc16 792461086 - # Author: Colin Davidson - # Date: Tue May 7 09:40:38 2024 +0100 - # Merge pull request #448 from coldav/colin/support_compiler_passes_only - # Add top level directory which can be used to just build compiler passes - set(OCK_GIT_INTERNAL_TAG bd7eadaf7ffc7d74c88dd309119e858b7ffae0cf) - - # Overwrite OCK_GIT_INTERNAL_REPO/OCK_GIT_INTERNAL_TAG if the corresponding options are set - if(OCK_GIT_REPO) - set(OCK_GIT_INTERNAL_REPO "${OCK_GIT_REPO}") - endif() - if(OCK_GIT_TAG) - set(OCK_GIT_INTERNAL_TAG "${OCK_GIT_TAG}") - endif() - include(FetchContent) - FetchContent_Declare(oneapi-ck - GIT_REPOSITORY "${OCK_GIT_INTERNAL_REPO}" - GIT_TAG "${OCK_GIT_INTERNAL_TAG}" - ) - FetchContent_GetProperties(oneapi-ck) - if(NOT oneapi-ck_POPULATED) - message(STATUS "Cloning oneAPI Construction Kit from ${OCK_GIT_INTERNAL_REPO}, tag ${OCK_GIT_INTERNAL_TAG}") - FetchContent_Populate(oneapi-ck) - message(STATUS "oneAPI Construction Kit cloned in ${oneapi-ck_SOURCE_DIR}") - set(OCK_SOURCE_DIR_INTERNAL ${oneapi-ck_SOURCE_DIR}/compiler_passes) - set(OCK_BINARY_DIR_INTERNAL ${oneapi-ck_BINARY_DIR}) - endif() - elseif(OCK_SOURCE_DIR) - set(OCK_SOURCE_DIR_INTERNAL "${OCK_SOURCE_DIR}/compiler_passes") - set(OCK_BINARY_DIR_INTERNAL "${CMAKE_CURRENT_BINARY_DIR}/oneapi-construction-kit") - else() - message(FATAL_ERROR "NATIVECPU_OCK_USE_FETCHCONTENT is Off and OCK_SOURCE_DIR not set") - endif() - - set(CA_ENABLE_API "cl" CACHE STRING "" FORCE) - add_subdirectory( - ${OCK_SOURCE_DIR_INTERNAL} - ${OCK_BINARY_DIR_INTERNAL} EXCLUDE_FROM_ALL) - - install(TARGETS compiler-pipeline - EXPORT;LLVMExports - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline - RUNTIME DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT compiler-pipeline) - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS compiler-pipeline) - install(TARGETS vecz - EXPORT;LLVMExports - LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz - ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz - RUNTIME DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT vecz) - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS vecz) - install(TARGETS multi_llvm EXPORT;LLVMExports) - set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS multi_llvm) - target_compile_definitions(LLVMSYCLLowerIR PRIVATE NATIVECPU_USE_OCK) - target_include_directories(LLVMSYCLLowerIR PRIVATE - ${oneapi-ck_SOURCE_DIR}/modules/compiler/multi_llvm/include - ${oneapi-ck_SOURCE_DIR}/modules/cargo/include - ${oneapi-ck_SOURCE_DIR}/modules/compiler/vecz/include - ${oneapi-ck_SOURCE_DIR}/modules/compiler/utils/include) - target_link_libraries(LLVMSYCLLowerIR PRIVATE compiler-pipeline vecz) target_compile_definitions(pi_native_cpu PRIVATE NATIVECPU_USE_OCK) - endif() + set_target_properties(pi_native_cpu PROPERTIES LINKER_LANGUAGE CXX) diff --git a/sycl/plugins/unified_runtime/CMakeLists.txt b/sycl/plugins/unified_runtime/CMakeLists.txt index 252deba45219a..f48ac68f3ebed 100644 --- a/sycl/plugins/unified_runtime/CMakeLists.txt +++ b/sycl/plugins/unified_runtime/CMakeLists.txt @@ -281,7 +281,6 @@ endif() if ("native_cpu" IN_LIST SYCL_ENABLE_PLUGINS) add_dependencies(sycl-runtime-libraries ur_adapter_native_cpu) - option(NATIVECPU_USE_OCK "Use the oneAPI Construction Kit for Native CPU" ON) if(NATIVECPU_USE_OCK) message(STATUS "Compiling Native CPU adapter with OCK support.")