diff options
Diffstat (limited to 'dynamic-layers/clang-layer/recipes-opencl/igc')
8 files changed, 199 insertions, 143 deletions
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch new file mode 100644 index 00000000..377081fd --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch @@ -0,0 +1,35 @@ +From 3d71670f8ad5b54d434c2f5f71713bb1d5433ae4 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Tue, 12 Oct 2021 23:46:42 +0800 +Subject: [PATCH] BiF/CMakeLists.txt: remove opt from DEPENDS + +Otherwise it starts failing with: + +| ninja: error: 'IGC/VectorCompiler/lib/BiF/opt', needed by 'IGC/VectorCompiler/lib/BiF/VCBiFPrintfOCL32.opt.bc', missing and no known rule to make it + +We don't need to explicitly make sure opt is built when +using prebuilt binaries. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake +index d20d7f887..882e09fea 100644 +--- a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake ++++ b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake +@@ -109,7 +109,7 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE) + COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}" + COMMAND CMCLTranslatorTool -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL} + COMMAND ${LLVM_OPT_EXE} ${IGC_LLVM_DEPENDENT_OPT_FLAGS} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME} +- DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL} ++ DEPENDS CMCLTranslatorTool ${BIF_CLANG_BC_PATH_FINAL} + BYPRODUCTS ${BIF_OPT_BC_PATH} + SOURCES ${CMCL_SRC_PATH}) + set(${RES_FILE} ${BIF_OPT_BC_NAME} PARENT_SCOPE) +-- +2.43.2 + diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch new file mode 100644 index 00000000..dca75e22 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch @@ -0,0 +1,31 @@ +From e69a3181482e5f442756a61c7b683914072884f1 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Mon, 9 Jan 2023 11:43:05 +0800 +Subject: [PATCH] external/SPIRV-Tools: change path to tools and headers + +We clone the SPIRV headers and tools in a different directory to ensure +file path substitutions take place. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +--- + external/SPIRV-Tools/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/external/SPIRV-Tools/CMakeLists.txt b/external/SPIRV-Tools/CMakeLists.txt +index 9afa5746c..7ca24d5dc 100644 +--- a/external/SPIRV-Tools/CMakeLists.txt ++++ b/external/SPIRV-Tools/CMakeLists.txt +@@ -43,8 +43,8 @@ else() #By default use build from sources + message(STATUS "[SPIRV-Tools] : Building from source") + message(STATUS "[SPIRV-Tools] : Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}") + +- set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Headers") # used in subdirectory +- set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Tools") ++ set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Headers") # used in subdirectory ++ set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Tools") + + set(SPIRV-Tools_OUTPUT_DIR "${IGC_OPTION__OUTPUT_DIR}/external/SPIRV-Tools/build") + set(IGC_BUILD__SPIRV-Headers_DIR "${SPIRV-Headers_SOURCE_DIR}") diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch new file mode 100644 index 00000000..39443931 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch @@ -0,0 +1,24 @@ +From 5648568e597acd0fed82aac3e6aef0f95a1b78d1 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Thu, 19 May 2022 22:50:09 +0800 +Subject: [PATCH] fix tblgen + +Upstream-Status: Inappropriate [OE specific] + +--- + IGC/cmake/igc_llvm.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/IGC/cmake/igc_llvm.cmake b/IGC/cmake/igc_llvm.cmake +index 10322533c..9020cb3c8 100644 +--- a/IGC/cmake/igc_llvm.cmake ++++ b/IGC/cmake/igc_llvm.cmake +@@ -52,7 +52,7 @@ else() + set(LLVM_OPT_EXE "opt" CACHE STRING "") + + set(LLVM_TABLEGEN_EXE "llvm-tblgen") +- if(CMAKE_CROSSCOMPILING) ++ if(TRUE) + if(DEFINED LLVM_TABLEGEN) + set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) + else() diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch deleted file mode 100644 index 65342d9c..00000000 --- a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5501fab763aa2b11437fbdb19e07a11157a7d3e6 Mon Sep 17 00:00:00 2001 -From: Naveen Saini <naveen.kumar.saini@intel.com> -Date: Thu, 6 Feb 2020 14:56:56 +0800 -Subject: [PATCH] skip execution of ElfPackager - -ElfPackager adds the ability to convert llvm bitcode into elf files for -easier partitioning. Skip for now until we start building a native -version for this. - -Upstream-Status: Inappropriate [configuration specific] - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - IGC/ElfPackager/CMakeLists.txt | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/IGC/ElfPackager/CMakeLists.txt b/IGC/ElfPackager/CMakeLists.txt -index 563ac9d6..c6c74ce9 100644 ---- a/IGC/ElfPackager/CMakeLists.txt -+++ b/IGC/ElfPackager/CMakeLists.txt -@@ -71,12 +71,12 @@ include_directories ( - ${IGC_SOURCE_DIR}/AdaptorOCL/CLElfLib/ - ) - --if(NOT ANDROID) -- add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager} -- POST_BUILD -- COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin -- ) --endif() -+#if(NOT ANDROID) -+# add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager} -+# POST_BUILD -+# COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin -+# ) -+#endif() - - - add_dependencies("${IGC_BUILD__PROJ__ElfPackager}" "${IGC_BUILD__PROJ__BiFModule_OCL}") --- -2.17.1 - diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch new file mode 100644 index 00000000..650130a8 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch @@ -0,0 +1,34 @@ +From 0559332abd04b6c8bc70171d201f43d2e4735336 Mon Sep 17 00:00:00 2001 +From: Lee Chee Yang <chee.yang.lee@intel.com> +Date: Wed, 2 Sep 2020 08:28:35 +0800 +Subject: [PATCH] Improve Reproducibility for src package + +Improve reproducibility for intel-graphics-compiler-src package. +needs to pass build path as environment variable to the build. +this only works on bison 3.7 onward, hence check for bison version +before adding the flags. +Upstream-Status: Inappropriate [applying --file-prefix-map in such way does not work for upstream] +Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> + +--- + visa/CMakeLists.txt | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/visa/CMakeLists.txt b/visa/CMakeLists.txt +index 6be467587..930c386a6 100644 +--- a/visa/CMakeLists.txt ++++ b/visa/CMakeLists.txt +@@ -123,8 +123,11 @@ endif() + set(bison_output_file ${CMAKE_CURRENT_BINARY_DIR}/CISA.tab.cpp) + set(flex_output_file ${CMAKE_CURRENT_BINARY_DIR}/lex.CISA.cpp) + +-BISON_TARGET(CISAParser CISA.y ${bison_output_file} COMPILE_FLAGS "-vt -p CISA") +-FLEX_TARGET(CISAScanner CISA.l ${flex_output_file} COMPILE_FLAGS "-PCISA ${WIN_FLEX_FLAG}") ++if(BISON_VERSION VERSION_GREATER_EQUAL "3.7.0") ++ set(BISON_EXTRA_FLAGS " --file-prefix-map=$ENV{B}=/igc/ ") ++endif() ++BISON_TARGET(CISAParser CISA.y ${bison_output_file} COMPILE_FLAGS "-l -vt -p CISA ${BISON_EXTRA_FLAGS} ") ++FLEX_TARGET(CISAScanner CISA.l ${flex_output_file} COMPILE_FLAGS "-PCISA -L ${WIN_FLEX_FLAG} ") + ADD_FLEX_BISON_DEPENDENCY(CISAScanner CISAParser) + set(CISAScanner_dependencies) + diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/link-to-LLVMGenXIntrinsics.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/link-to-LLVMGenXIntrinsics.patch deleted file mode 100644 index 89a28097..00000000 --- a/dynamic-layers/clang-layer/recipes-opencl/igc/files/link-to-LLVMGenXIntrinsics.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 483154871f72590b81c036b000be09627376b5a9 Mon Sep 17 00:00:00 2001 -From: Naveen Saini <naveen.kumar.saini@intel.com> -Date: Thu, 27 Aug 2020 12:17:12 +0800 -Subject: [PATCH] IGC/VectorCompiler/CMakeLists.txt: link to external - LLVMGenXIntrinsics - -By default LLVMGenXIntrinsics is to be build In-tree, but we want to -link externally. - -Fix llvm-tblgen path. - -Upstream-Status: Inappropriate [configuration specific] - -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - IGC/VectorCompiler/CMakeLists.txt | 23 ++--------------------- - 1 file changed, 2 insertions(+), 21 deletions(-) - -diff --git a/IGC/VectorCompiler/CMakeLists.txt b/IGC/VectorCompiler/CMakeLists.txt -index 3592e0b4..ae754b8b 100644 ---- a/IGC/VectorCompiler/CMakeLists.txt -+++ b/IGC/VectorCompiler/CMakeLists.txt -@@ -50,10 +50,7 @@ if(IGC_BUILD__USING_SYSTEM_LLVM OR (WIN32 AND LLVM_USE_PREBUILT)) - message(STATUS "[VC] Using system llvm") - - # Need to search for llvm-tblgen -- find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" -- ${LLVM_TOOLS_BINARY_DIR} -- NO_DEFAULT_PATH -- ) -+ find_program(LLVM_TABLEGEN_EXE "llvm-tblgen") - if(LLVM_TABLEGEN_EXE-NOTFOUND) - message(FATAL_ERROR "[VC] llvm-tblgen is not found") - endif() -@@ -131,23 +128,7 @@ if(LLVM_ON_WIN32) - add_compile_options(/wd4624) - endif() - --if(DEFINED VC_INTRINSICS_SRC) -- set(INTRSRC "${VC_INTRINSICS_SRC}/GenXIntrinsics") --endif() -- --if(NOT DEFINED INTRSRC) -- set(INTRSRC "${CMAKE_CURRENT_SOURCE_DIR}/../../../vc-intrinsics/GenXIntrinsics") --endif() -- --message(STATUS "[VC] Using vc-intrinsics source from: ${INTRSRC}") -- --# We are using prebuilt SPIRV and building intrinsics. --set(INTRBUILD "${CMAKE_CURRENT_BINARY_DIR}/intrbuild") -- -- --# Do not copy anything from prebuilts. libSPIRVDLL.so will be dynamically loaded at runtime. --add_subdirectory(${INTRSRC} ${INTRBUILD}) --include_directories(${INTRSRC}/include ${INTRBUILD}/include) -+find_package(LLVMGenXIntrinsics REQUIRED) - - include(cmake/spirv.cmake) - include(${IGC_SOURCE_DIR}/cmake/utils.cmake) --- -2.17.1 - diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.16510.2.bb b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.16510.2.bb new file mode 100644 index 00000000..24eb97bd --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.16510.2.bb @@ -0,0 +1,75 @@ +SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)" +DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \ +llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \ +hardware architecture." + +LICENSE = "MIT & Apache-2.0" +LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \ + file://LICENSE.md;md5=488d74376edf2765f6e78d271543dde3 \ + file://NOTICES.txt;md5=b81a52411c84df3419f20bad4d755880" + +SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;name=igc;branch=releases/igc-1.0.16510 \ + git://github.com/intel/vc-intrinsics.git;protocol=https;destsuffix=git/vc-intrinsics;name=vc;nobranch=1 \ + git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;destsuffix=git/SPIRV-Tools;name=spirv-tools;branch=main \ + git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=git/SPIRV-Headers;name=spirv-headers;branch=main \ + file://0003-Improve-Reproducibility-for-src-package.patch \ + file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \ + file://0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch \ + " + +SRC_URI:append:class-native = " file://0001-fix-tblgen.patch" + +SRCREV_igc = "c2495d45f37fadd963ad22eb0cc1a8235a306775" +SRCREV_vc = "f9c34404d0ea9abad83875a10bd48d88cea90ebd" +SRCREV_spirv-tools = "f0cc85efdbbe3a46eae90e0f915dc1509836d0fc" +SRCREV_spirv-headers = "1c6bb2743599e6eb6f37b2969acc0aef812e32e3" + +SRCREV_FORMAT = "igc_vc_spirv-tools_spirv-headers" + +# Used to replace with relative path in reproducibility patch +export B + +S = "${WORKDIR}/git" + +inherit cmake pkgconfig qemu python3native + +CXXFLAGS:append = " -Wno-error=nonnull" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS += " flex-native bison-native clang clang-cross-x86_64 opencl-clang qemu-native python3-mako-native" + +RDEPENDS:${PN} += "opencl-clang" + +PACKAGECONFIG ??= "vc" +PACKAGECONFIG[vc] = "-DIGC_BUILD__VC_ENABLED=ON -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON -DIGC_OPTION__SPIRV_TRANSLATOR_MODE=Prebuilds,-DIGC_BUILD__VC_ENABLED=OFF," + +EXTRA_OECMAKE = " \ + -DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} \ + -DVC_INTRINSICS_SRC="${S}/vc-intrinsics" \ + -DIGC_OPTION__LLVM_MODE=Prebuilds \ + -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ + -DLLVM_LINK_EXE=${STAGING_BINDIR_NATIVE}/llvm-link \ + -DCLANG_EXE=${STAGING_BINDIR_NATIVE}/clang \ + -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \ + " + +do_configure:prepend:class-target () { + # Write out a qemu wrapper that will be used by cmake. + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" + cat > ${WORKDIR}/qemuwrapper << EOF +#!/bin/sh +$qemu_binary "\$@" +EOF + chmod +x ${WORKDIR}/qemuwrapper +} + +UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$" + +FILES:${PN} += " \ + ${libdir}/igc/NOTICES.txt \ + " + +# libigc.so contains buildpaths +INSANE_SKIP:${PN} += "buildpaths" diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.4756.bb b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.4756.bb deleted file mode 100644 index 406f9f18..00000000 --- a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.4756.bb +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)" -DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \ -llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \ -hardware architecture." - -LICENSE = "MIT & BSD-3-Clause" -LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \ - file://IGC/Compiler/LegalizationPass.cpp;beginline=1;endline=25;md5=4abf1738ff96b18e34186eb763e28eeb \ - file://NOTICES.txt;md5=b12e73994de4fbe0f688cf0bc91512a0" - -SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https; \ - file://0001-skip-execution-of-ElfPackager.patch \ - file://link-to-LLVMGenXIntrinsics.patch \ - " - -SRCREV = "3623209b10b357ddb3a3d6eac3551c53ebc897f7" - -S = "${WORKDIR}/git" - -inherit cmake - -COMPATIBLE_HOST = '(x86_64).*-linux' -COMPATIBLE_HOST_libc-musl = "null" - -DEPENDS += " flex-native bison-native clang opencl-clang vc-intrinsics" -DEPENDS_append_class-target = " clang-cross-x86_64" - -RDEPENDS_${PN} += "opencl-clang" - -EXTRA_OECMAKE = "-DIGC_PREFERRED_LLVM_VERSION=10.0.0 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 -DINSTALL_SPIRVDLL=0" - -BBCLASSEXTEND = "native nativesdk" - -UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$" - -FILES_${PN} += " \ - ${libdir}/igc/NOTICES.txt \ - " |