From b7adb7d81422ae432c0b615b6da32d63653fdc92 Mon Sep 17 00:00:00 2001 From: "Sarnie, Nick" Date: Fri, 25 Apr 2025 13:20:35 -0700 Subject: [PATCH 1/3] [SYCL] Use the sysinstalled vc-intrinsics if available Signed-off-by: Sarnie, Nick --- llvm/lib/SYCLLowerIR/CMakeLists.txt | 71 ++++++++++++++---------- llvm/tools/sycl-post-link/CMakeLists.txt | 2 + sycl-jit/jit-compiler/CMakeLists.txt | 1 + 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/llvm/lib/SYCLLowerIR/CMakeLists.txt b/llvm/lib/SYCLLowerIR/CMakeLists.txt index 44c07dd676d10..5e77358a60428 100644 --- a/llvm/lib/SYCLLowerIR/CMakeLists.txt +++ b/llvm/lib/SYCLLowerIR/CMakeLists.txt @@ -1,36 +1,49 @@ # Lowering of SYCL ESIMD kernels depends on vc-intrinsics # NOTE: could have been added earlier from llvm/projects if (NOT TARGET LLVMGenXIntrinsics) - if (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) - set(LLVMGenXIntrinsics_GIT_REPO https://github.com/intel/vc-intrinsics.git) - - # Date: Mar 7, 2025 - # Update Triple usage after 979c275097 - set(LLVMGenXIntrinsics_GIT_TAG 9e1935aedc2101deaab45b2f69f4b43ccf6f2b52) - - message(STATUS "vc-intrinsics repo is missing. Will try to download it from ${LLVMGenXIntrinsics_GIT_REPO}") - include(FetchContent) - FetchContent_Declare(vc-intrinsics - GIT_REPOSITORY ${LLVMGenXIntrinsics_GIT_REPO} - GIT_TAG ${LLVMGenXIntrinsics_GIT_TAG} - ) - FetchContent_MakeAvailable(vc-intrinsics) - FetchContent_GetProperties(vc-intrinsics) - - set(LLVMGenXIntrinsics_SOURCE_DIR ${vc-intrinsics_SOURCE_DIR}) - set(LLVMGenXIntrinsics_BINARY_DIR ${vc-intrinsics_BINARY_DIR}) - else (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) - # -DLLVMGenXIntrinsics_SOURCE_DIR is provided - message(STATUS "vc-intrinsics are added manually ${LLVMGenXIntrinsics_SOURCE_DIR}") - - set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build) - add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR}) - endif (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) - - target_include_directories(LLVMGenXIntrinsics - PUBLIC $ - PUBLIC $ + find_package(LLVMGenXIntrinsics QUIET) + + if (NOT LLVMGenXIntrinsics_FOUND) + if (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) + find_path(LLVMGenXIntrinsics_INCLUDE_DIR GenXIntrinsics/include PATHS ${CMAKE_PREFIX_PATH}) + + if (NOT LLVMGenXIntrinsics_INCLUDE_DIR) + set(LLVMGenXIntrinsics_GIT_REPO https://github.com/intel/vc-intrinsics.git) + + # Date: Mar 7, 2025 + # Update Triple usage after 979c275097 + set(LLVMGenXIntrinsics_GIT_TAG 9e1935aedc2101deaab45b2f69f4b43ccf6f2b52) + + message(STATUS "vc-intrinsics repo is missing. Will try to download it from ${LLVMGenXIntrinsics_GIT_REPO}") + include(FetchContent) + FetchContent_Declare(vc-intrinsics + GIT_REPOSITORY ${LLVMGenXIntrinsics_GIT_REPO} + GIT_TAG ${LLVMGenXIntrinsics_GIT_TAG} + ) + FetchContent_MakeAvailable(vc-intrinsics) + FetchContent_GetProperties(vc-intrinsics) + + set(LLVMGenXIntrinsics_SOURCE_DIR ${vc-intrinsics_SOURCE_DIR}) + set(LLVMGenXIntrinsics_BINARY_DIR ${vc-intrinsics_BINARY_DIR}) + else() + message(STATUS "vc-intrinsics found in system at ${LLVMGenXIntrinsics_INCLUDE_DIR}") + set(LLVMGenXIntrinsics_SOURCE_DIR ${LLVMGenXIntrinsics_INCLUDE_DIR}/..) + set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build) + add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR}) + endif() + else (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) + # -DLLVMGenXIntrinsics_SOURCE_DIR is provided + message(STATUS "vc-intrinsics are added manually ${LLVMGenXIntrinsics_SOURCE_DIR}") + + set(LLVMGenXIntrinsics_BINARY_DIR ${CMAKE_BINARY_DIR}/vc-intrinsics-build) + add_subdirectory(${LLVMGenXIntrinsics_SOURCE_DIR} ${LLVMGenXIntrinsics_BINARY_DIR}) + endif (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) + target_include_directories(LLVMGenXIntrinsics + PUBLIC $ + PUBLIC $ ) + endif() + endif (NOT TARGET LLVMGenXIntrinsics) set_property(GLOBAL PROPERTY LLVMGenXIntrinsics_SOURCE_PROP ${LLVMGenXIntrinsics_SOURCE_DIR}) diff --git a/llvm/tools/sycl-post-link/CMakeLists.txt b/llvm/tools/sycl-post-link/CMakeLists.txt index 88b827bf31a4e..50256637ebeba 100644 --- a/llvm/tools/sycl-post-link/CMakeLists.txt +++ b/llvm/tools/sycl-post-link/CMakeLists.txt @@ -1,3 +1,5 @@ +find_package(LLVMGenXIntrinsics QUIET) + set(LLVM_LINK_COMPONENTS BitWriter Core diff --git a/sycl-jit/jit-compiler/CMakeLists.txt b/sycl-jit/jit-compiler/CMakeLists.txt index 71cd1aed486aa..3d985962a91b5 100644 --- a/sycl-jit/jit-compiler/CMakeLists.txt +++ b/sycl-jit/jit-compiler/CMakeLists.txt @@ -1,3 +1,4 @@ +find_package(LLVMGenXIntrinsics QUIET) add_llvm_library(sycl-jit lib/translation/JITContext.cpp From ead39e13112242a2fcd020c583aad4ffdb06bcca Mon Sep 17 00:00:00 2001 From: "Sarnie, Nick" Date: Mon, 28 Apr 2025 07:38:48 -0700 Subject: [PATCH 2/3] whitespace Signed-off-by: Sarnie, Nick --- llvm/lib/SYCLLowerIR/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/llvm/lib/SYCLLowerIR/CMakeLists.txt b/llvm/lib/SYCLLowerIR/CMakeLists.txt index 5e77358a60428..07f322993b19b 100644 --- a/llvm/lib/SYCLLowerIR/CMakeLists.txt +++ b/llvm/lib/SYCLLowerIR/CMakeLists.txt @@ -41,9 +41,8 @@ if (NOT TARGET LLVMGenXIntrinsics) target_include_directories(LLVMGenXIntrinsics PUBLIC $ PUBLIC $ - ) - endif() - + ) + endif() endif (NOT TARGET LLVMGenXIntrinsics) set_property(GLOBAL PROPERTY LLVMGenXIntrinsics_SOURCE_PROP ${LLVMGenXIntrinsics_SOURCE_DIR}) From 27c597b822186c15377561ecea058c201ea4ca54 Mon Sep 17 00:00:00 2001 From: "Sarnie, Nick" Date: Mon, 28 Apr 2025 10:14:37 -0700 Subject: [PATCH 3/3] address feedback Signed-off-by: Sarnie, Nick --- llvm/lib/SYCLLowerIR/CMakeLists.txt | 4 +++- llvm/tools/sycl-post-link/CMakeLists.txt | 2 -- sycl-jit/jit-compiler/CMakeLists.txt | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/llvm/lib/SYCLLowerIR/CMakeLists.txt b/llvm/lib/SYCLLowerIR/CMakeLists.txt index 07f322993b19b..c466f54a007d7 100644 --- a/llvm/lib/SYCLLowerIR/CMakeLists.txt +++ b/llvm/lib/SYCLLowerIR/CMakeLists.txt @@ -1,7 +1,9 @@ # Lowering of SYCL ESIMD kernels depends on vc-intrinsics # NOTE: could have been added earlier from llvm/projects if (NOT TARGET LLVMGenXIntrinsics) - find_package(LLVMGenXIntrinsics QUIET) + if(NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR AND NOT LLVMGenXIntrinsics_INCLUDE_DIR) + find_package(LLVMGenXIntrinsics QUIET) + endif() if (NOT LLVMGenXIntrinsics_FOUND) if (NOT DEFINED LLVMGenXIntrinsics_SOURCE_DIR) diff --git a/llvm/tools/sycl-post-link/CMakeLists.txt b/llvm/tools/sycl-post-link/CMakeLists.txt index 50256637ebeba..88b827bf31a4e 100644 --- a/llvm/tools/sycl-post-link/CMakeLists.txt +++ b/llvm/tools/sycl-post-link/CMakeLists.txt @@ -1,5 +1,3 @@ -find_package(LLVMGenXIntrinsics QUIET) - set(LLVM_LINK_COMPONENTS BitWriter Core diff --git a/sycl-jit/jit-compiler/CMakeLists.txt b/sycl-jit/jit-compiler/CMakeLists.txt index 3d985962a91b5..71cd1aed486aa 100644 --- a/sycl-jit/jit-compiler/CMakeLists.txt +++ b/sycl-jit/jit-compiler/CMakeLists.txt @@ -1,4 +1,3 @@ -find_package(LLVMGenXIntrinsics QUIET) add_llvm_library(sycl-jit lib/translation/JITContext.cpp