From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 138E0158094 for ; Thu, 30 Jun 2022 21:46:15 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 47B0DE0D4A; Thu, 30 Jun 2022 21:46:14 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id DCC1BE0D4A for ; Thu, 30 Jun 2022 21:46:13 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 0022C341571 for ; Thu, 30 Jun 2022 21:46:12 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 9214A4ED for ; Thu, 30 Jun 2022 21:46:11 +0000 (UTC) From: "Conrad Kostecki" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Conrad Kostecki" Message-ID: <1656625554.ff79850f5ff41c74cf8a70cab355a5803bfa648c.conikost@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/intel-graphics-compiler/, dev-util/intel-graphics-compiler/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-util/intel-graphics-compiler/Manifest dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-fix-BiF-caching.patch dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-include-opencl-c.patch dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-update-raytracing-llvm14.patch dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-wrap-getNumArgOperands.patch dev-util/intel-graphics-compiler/intel-graphics-compiler-1.0.11485.ebuild X-VCS-Directories: dev-util/intel-graphics-compiler/files/ dev-util/intel-graphics-compiler/ X-VCS-Committer: conikost X-VCS-Committer-Name: Conrad Kostecki X-VCS-Revision: ff79850f5ff41c74cf8a70cab355a5803bfa648c X-VCS-Branch: master Date: Thu, 30 Jun 2022 21:46:11 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 60ec01f3-546f-4da0-ba8d-33717a6f2b66 X-Archives-Hash: e2c503ffb44fd4fd91a4fed4ccba4ae7 commit: ff79850f5ff41c74cf8a70cab355a5803bfa648c Author: Conrad Kostecki gentoo org> AuthorDate: Thu Jun 30 21:35:06 2022 +0000 Commit: Conrad Kostecki gentoo org> CommitDate: Thu Jun 30 21:45:54 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ff79850f dev-util/intel-graphics-compiler: add 1.0.11485 Signed-off-by: Conrad Kostecki gentoo.org> dev-util/intel-graphics-compiler/Manifest | 1 + ...aphics-compiler-1.0.11485-fix-BiF-caching.patch | 49 ++++++ ...phics-compiler-1.0.11485-include-opencl-c.patch | 11 ++ ...mpiler-1.0.11485-update-raytracing-llvm14.patch | 186 +++++++++++++++++++++ ...compiler-1.0.11485-wrap-getNumArgOperands.patch | 24 +++ .../intel-graphics-compiler-1.0.11485.ebuild | 88 ++++++++++ 6 files changed, 359 insertions(+) diff --git a/dev-util/intel-graphics-compiler/Manifest b/dev-util/intel-graphics-compiler/Manifest index 0abfe62ca8e0..42d67d67a296 100644 --- a/dev-util/intel-graphics-compiler/Manifest +++ b/dev-util/intel-graphics-compiler/Manifest @@ -1 +1,2 @@ DIST intel-graphics-compiler-1.0.11378.tar.gz 8809420 BLAKE2B d503b962193daf3731864739bc0efb753baed3603795e04941d17dcdcaf9e971787ffa877e8295054de41d889a39e2bdbf8119fb7d60110580acea3c24cefc58 SHA512 f3daedfe36badfe07f187b38c9a4da98116533940f4d910fbbd060813aeb1e3ffaa627a72180e66736748830a80cfca4c2a6dc9c8e9507884629e3e55add1cbb +DIST intel-graphics-compiler-1.0.11485.tar.gz 8831925 BLAKE2B 7e2bcb37b4c34bb01788a8d75fc42498223b6193421cb726c21ce7949181757a10d112ae151736cd9283ba6ed8f0625597fb1f2a61229a7352e7f1f5ec34d1d0 SHA512 03fb571fdd61daea3a5c61ff75a146bd98b9b92dfd8bc1957143fe127977f5111df680ac86769d3c1fa1801ba2012b600b1ff844b318ce64460f2d042c4ae65b diff --git a/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-fix-BiF-caching.patch b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-fix-BiF-caching.patch new file mode 100644 index 000000000000..7ad261e0aa6c --- /dev/null +++ b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-fix-BiF-caching.patch @@ -0,0 +1,49 @@ +From 12c99343388eba6e6275856b25e0fa8978585dfb Mon Sep 17 00:00:00 2001 +From: Marcin Naczk +Date: Mon, 13 Jun 2022 08:28:24 +0000 +Subject: [PATCH] Find OpenCl-c.h when clang is take from system. + +Find OpenCl-c.h when clang is take from system. +--- + IGC/cmake/igc_find_opencl_clang.cmake | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +diff --git a/IGC/cmake/igc_find_opencl_clang.cmake b/IGC/cmake/igc_find_opencl_clang.cmake +index dc8924fb7ee..0a54ac68249 100644 +--- a/IGC/cmake/igc_find_opencl_clang.cmake ++++ b/IGC/cmake/igc_find_opencl_clang.cmake +@@ -94,19 +94,25 @@ if(CCLANG_FROM_SYSTEM) + else() + set_property(TARGET opencl-clang-lib PROPERTY "IMPORTED_LOCATION" "${SYSTEM_COMMON_CLANG}") + endif() +- find_program(CLANG_GE7 clang-${LLVM_VERSION_MAJOR}) +- if(CLANG_GE7) +- message(STATUS "[IGC] Found clang-${LLVM_VERSION_MAJOR} executable: ${CLANG_GE7}") ++ find_program(CLANG_EXE clang-${LLVM_VERSION_MAJOR}) ++ if(CLANG_EXE) ++ message(STATUS "[IGC] Found clang-${LLVM_VERSION_MAJOR} executable: ${CLANG_EXE}") + + add_executable(clang-tool IMPORTED GLOBAL) +- set_property(TARGET clang-tool PROPERTY "IMPORTED_LOCATION" "${CLANG_GE7}") ++ set_property(TARGET clang-tool PROPERTY "IMPORTED_LOCATION" "${CLANG_EXE}") + set(CL_OPTIONS "-finclude-default-header") +- if(LLVM_VERSION_MAJOR VERSION_EQUAL 7) +- message(WARNING "[IGC] : clang-7 should be patched with VME patch (https://reviews.llvm.org/D51484). Assuming that it is. If not, please add -DVME_TYPES_DEFINED=FALSE.") +- endif() +- else(CLANG_GE7) ++ ++ # Get parent dir of the location of CLANG_EXE ++ get_filename_component(CLANG_EXE_PARENT_DIR ${CLANG_EXE} DIRECTORY) ++ file(GLOB_RECURSE opencl-header ${CLANG_EXE_PARENT_DIR}/../*opencl-c.h) ++ if(opencl-header) ++ message(STATUS "[IGC] Found opencl-c.h: ${opencl-header}") ++ else(opencl-header) ++ message(FATAL_ERROR "[IGC] : Couldn't find opencl-c.h, please provide it.") ++ endif(opencl-header) ++ else(CLANG_EXE) + message(FATAL_ERROR "[IGC] : Couldn't find clang-${LLVM_VERSION_MAJOR} executable, please install it.") +- endif(CLANG_GE7) ++ endif(CLANG_EXE) + ### + #2. CCLANG_BUILD_PREBUILDS - use prebuilt opencl-clang toolchain + elseif(${CCLANG_BUILD_PREBUILDS}) diff --git a/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-include-opencl-c.patch b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-include-opencl-c.patch new file mode 100644 index 000000000000..dbf4188ad0bc --- /dev/null +++ b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-include-opencl-c.patch @@ -0,0 +1,11 @@ +--- a/IGC/cmake/igc_find_opencl_clang.cmake ++++ b/IGC/cmake/igc_find_opencl_clang.cmake +@@ -104,7 +104,7 @@ + + # Get parent dir of the location of CLANG_EXE + get_filename_component(CLANG_EXE_PARENT_DIR ${CLANG_EXE} DIRECTORY) +- file(GLOB_RECURSE opencl-header ${CLANG_EXE_PARENT_DIR}/../*opencl-c.h) ++ file(GLOB_RECURSE opencl-header ${CCLANG_INCLUDE_PREBUILDS_DIR}/*opencl-c.h) + if(opencl-header) + message(STATUS "[IGC] Found opencl-c.h: ${opencl-header}") + else(opencl-header) diff --git a/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-update-raytracing-llvm14.patch b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-update-raytracing-llvm14.patch new file mode 100644 index 000000000000..248f8244e32f --- /dev/null +++ b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-update-raytracing-llvm14.patch @@ -0,0 +1,186 @@ +From d9535cc5c3e54b21d56c492d4e21cb13c80b9b7a Mon Sep 17 00:00:00 2001 +From: Artem Gindinson +Date: Wed, 22 Jun 2022 11:53:02 +0000 +Subject: [PATCH] Update RayTracing for full LLVM 14 buildability + +- Address further casting issues +- Use pre-existing LLVM wrappers for function argument manipulations +- Create & use LLVM wrappers for `AAQueryInfo` and + `CallBase::getRetDereferenceableBytes()` +--- + IGC/AdaptorCommon/RayTracing/AllocaTracking.cpp | 3 ++- + IGC/AdaptorCommon/RayTracing/InlineDataPass.cpp | 3 ++- + IGC/AdaptorCommon/RayTracing/LowerIntersectionAnyHit.cpp | 2 +- + IGC/AdaptorCommon/RayTracing/RTSpillShrinkPass.cpp | 4 ++-- + IGC/AdaptorCommon/RayTracing/RayTracingFinalizePass.cpp | 4 ++-- + IGC/AdaptorCommon/RayTracing/StackIDSchedulingPass.cpp | 3 ++- + IGC/AdaptorCommon/TypesLegalizationPass.cpp | 2 +- + .../include/llvmWrapper/Analysis/AliasAnalysis.h | 7 +++++++ + IGC/WrapperLLVM/include/llvmWrapper/IR/InstrTypes.h | 9 +++++++++ + 9 files changed, 28 insertions(+), 9 deletions(-) + +diff --git a/IGC/AdaptorCommon/RayTracing/AllocaTracking.cpp b/IGC/AdaptorCommon/RayTracing/AllocaTracking.cpp +index b5ad27e32ca..67cf302495c 100644 +--- a/IGC/AdaptorCommon/RayTracing/AllocaTracking.cpp ++++ b/IGC/AdaptorCommon/RayTracing/AllocaTracking.cpp +@@ -19,6 +19,7 @@ SPDX-License-Identifier: MIT + #include "common/LLVMWarningsPush.hpp" + #include + #include ++#include + #include "common/LLVMWarningsPop.hpp" + + using namespace llvm; +@@ -129,7 +130,7 @@ void rewriteTypes( + "Only handles void right now!"); + + SmallVector Tys; +- for (auto &Op : II->arg_operands()) ++ for (auto &Op : IGCLLVM::args(II)) + Tys.push_back(Op->getType()); + + auto* NewFTy = FunctionType::get( +diff --git a/IGC/AdaptorCommon/RayTracing/InlineDataPass.cpp b/IGC/AdaptorCommon/RayTracing/InlineDataPass.cpp +index 5e4df4e1a86..9433340d259 100644 +--- a/IGC/AdaptorCommon/RayTracing/InlineDataPass.cpp ++++ b/IGC/AdaptorCommon/RayTracing/InlineDataPass.cpp +@@ -46,6 +46,7 @@ SPDX-License-Identifier: MIT + #include + #include "common/LLVMWarningsPush.hpp" + #include ++#include + #include "common/LLVMWarningsPop.hpp" + + using namespace llvm; +@@ -155,7 +156,7 @@ bool BindlessInlineDataPass::runOnModule(Module &M) + // the size of the Shader Identifier + the size of the Local arguments + const uint64_t dereferenceable_size = + sizeof(ShaderIdentifier) + +- local_buffer_ptr->getDereferenceableBytes(AttributeList::ReturnIndex); ++ IGCLLVM::getRetDereferenceableBytes(local_buffer_ptr); + + // Return a CallInst* representing the InlinedData intrinsic call + // In the shader dumps, +diff --git a/IGC/AdaptorCommon/RayTracing/LowerIntersectionAnyHit.cpp b/IGC/AdaptorCommon/RayTracing/LowerIntersectionAnyHit.cpp +index 8b6bba69f23..2c3a98d04e3 100644 +--- a/IGC/AdaptorCommon/RayTracing/LowerIntersectionAnyHit.cpp ++++ b/IGC/AdaptorCommon/RayTracing/LowerIntersectionAnyHit.cpp +@@ -449,7 +449,7 @@ CallInst* LowerIntersectionAnyHit::codeGenReportHit( + CustomHitAttrPtr, + 4, + Attrs, +- std::min(4U, DL.getABITypeAlignment(AttrTy->getPointerElementType())), ++ std::min(4U, (unsigned)DL.getABITypeAlignment(AttrTy->getPointerElementType())), + IRB.getInt64(DL.getTypeAllocSize(AttrTy->getPointerElementType()))); + } + +diff --git a/IGC/AdaptorCommon/RayTracing/RTSpillShrinkPass.cpp b/IGC/AdaptorCommon/RayTracing/RTSpillShrinkPass.cpp +index 4d42b32af36..d8d7ac3c54f 100644 +--- a/IGC/AdaptorCommon/RayTracing/RTSpillShrinkPass.cpp ++++ b/IGC/AdaptorCommon/RayTracing/RTSpillShrinkPass.cpp +@@ -61,9 +61,9 @@ class RTSpillShrinkPass : public FunctionPass + + unsigned getAlignment(const DataLayout& DL, StoreInst* ST) const + { +- unsigned Align = ST->getAlignment(); ++ unsigned Align = (unsigned)ST->getAlignment(); + if (Align == 0) +- Align = DL.getABITypeAlignment(ST->getType()); ++ Align = (unsigned)DL.getABITypeAlignment(ST->getType()); + return Align; + } + +diff --git a/IGC/AdaptorCommon/RayTracing/RayTracingFinalizePass.cpp b/IGC/AdaptorCommon/RayTracing/RayTracingFinalizePass.cpp +index 87549a6ce85..797e77a548d 100644 +--- a/IGC/AdaptorCommon/RayTracing/RayTracingFinalizePass.cpp ++++ b/IGC/AdaptorCommon/RayTracing/RayTracingFinalizePass.cpp +@@ -114,7 +114,7 @@ bool RayTracingFinalizePass::runOnModule(Module &M) + { + // Temporary WA to ensure we don't page fault on unaligned + // acceses. +- uint32_t Align = LI->getAlignment(); ++ uint32_t Align = (uint32_t)LI->getAlignment(); + if (Align == 0) + Align = (uint32_t)DL.getTypeAllocSize(LI->getType()); + +@@ -125,7 +125,7 @@ bool RayTracingFinalizePass::runOnModule(Module &M) + { + // Temporary WA to ensure we don't page fault on unaligned + // acceses. +- uint32_t Align = SI->getAlignment(); ++ uint32_t Align = (uint32_t)SI->getAlignment(); + if (Align == 0) + Align = (uint32_t)DL.getTypeAllocSize( + SI->getValueOperand()->getType()); +diff --git a/IGC/AdaptorCommon/RayTracing/StackIDSchedulingPass.cpp b/IGC/AdaptorCommon/RayTracing/StackIDSchedulingPass.cpp +index db5490267fd..d352b67a50f 100644 +--- a/IGC/AdaptorCommon/RayTracing/StackIDSchedulingPass.cpp ++++ b/IGC/AdaptorCommon/RayTracing/StackIDSchedulingPass.cpp +@@ -49,6 +49,7 @@ SPDX-License-Identifier: MIT + #include + #include + #include ++#include "llvmWrapper/Analysis/AliasAnalysis.h" + #include "llvmWrapper/Analysis/MemoryLocation.h" + #include "common/LLVMWarningsPop.hpp" + +@@ -175,7 +176,7 @@ BasicBlock* StackIDSchedulingPass::schedule( + ModRefInfo StackIDSchedulingPass::getModRefInfo( + const CallBase* Call, const MemoryLocation& Loc) + { +- AAQueryInfo AAQIP; ++ AAQueryInfo AAQIP = IGCLLVM::makeAAQueryInfo(); + return AA->getModRefInfo(Call, Loc, AAQIP); + } + +diff --git a/IGC/AdaptorCommon/TypesLegalizationPass.cpp b/IGC/AdaptorCommon/TypesLegalizationPass.cpp +index c3570f39d31..10da29ee242 100644 +--- a/IGC/AdaptorCommon/TypesLegalizationPass.cpp ++++ b/IGC/AdaptorCommon/TypesLegalizationPass.cpp +@@ -207,7 +207,7 @@ TypesLegalizationPass::ResolveValue( Instruction *ip,Value *val,SmallVector builder( ld ); + Value* gep = CreateGEP( builder,ld->getOperand( 0 ),indices ); +- unsigned alignment = ld->getAlignment(); ++ unsigned alignment = (unsigned)ld->getAlignment(); + unsigned pointerTypeSize = gep->getType()->getPointerElementType()->getScalarSizeInBits() / 8; + if ( alignment && pointerTypeSize == alignment ) + return builder.CreateAlignedLoad( gep, IGCLLVM::getAlign(alignment) ); +diff --git a/IGC/WrapperLLVM/include/llvmWrapper/Analysis/AliasAnalysis.h b/IGC/WrapperLLVM/include/llvmWrapper/Analysis/AliasAnalysis.h +index 873886cc860..385c04db970 100644 +--- a/IGC/WrapperLLVM/include/llvmWrapper/Analysis/AliasAnalysis.h ++++ b/IGC/WrapperLLVM/include/llvmWrapper/Analysis/AliasAnalysis.h +@@ -19,6 +19,13 @@ namespace IGCLLVM + #else + using AliasResultEnum = llvm::AliasResult::Kind; + #endif ++inline llvm::AAQueryInfo makeAAQueryInfo() { ++#if LLVM_VERSION_MAJOR >= 14 ++ return llvm::AAQueryInfo(new llvm::SimpleCaptureInfo()); ++#else ++ return llvm::AAQueryInfo(); ++#endif ++} + } + + #endif +diff --git a/IGC/WrapperLLVM/include/llvmWrapper/IR/InstrTypes.h b/IGC/WrapperLLVM/include/llvmWrapper/IR/InstrTypes.h +index 569eece3fb5..1050c842271 100644 +--- a/IGC/WrapperLLVM/include/llvmWrapper/IR/InstrTypes.h ++++ b/IGC/WrapperLLVM/include/llvmWrapper/IR/InstrTypes.h +@@ -50,6 +50,15 @@ namespace IGCLLVM + CI->addFnAttr(Kind); + #else + CI->addAttribute(llvm::AttributeList::FunctionIndex, Kind); ++#endif ++ } ++ ++ inline uint64_t getRetDereferenceableBytes(llvm::CallBase* Call) ++ { ++#if LLVM_VERSION_MAJOR >= 14 ++ return Call->getRetDereferenceableBytes(); ++#else ++ return Call->getDereferenceableBytes(llvm::AttributeList::ReturnIndex); + #endif + } + } diff --git a/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-wrap-getNumArgOperands.patch b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-wrap-getNumArgOperands.patch new file mode 100644 index 000000000000..23754ccb6b4b --- /dev/null +++ b/dev-util/intel-graphics-compiler/files/intel-graphics-compiler-1.0.11485-wrap-getNumArgOperands.patch @@ -0,0 +1,24 @@ +From 1d5ceafdbc005f3adc58be5af1dc92f068908e16 Mon Sep 17 00:00:00 2001 +From: Artem Gindinson +Date: Mon, 20 Jun 2022 12:38:04 +0000 +Subject: [PATCH] Wrap CallInst::getNumArgOperands calls for LLVM 14 + +Rework all remaining call sites to rely on the already-existing wrapper +function. +--- + IGC/Compiler/CISACodeGen/HFpackingOpt.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/IGC/Compiler/CISACodeGen/HFpackingOpt.cpp b/IGC/Compiler/CISACodeGen/HFpackingOpt.cpp +index 69d6151f8bf..e24362d7791 100644 +--- a/IGC/Compiler/CISACodeGen/HFpackingOpt.cpp ++++ b/IGC/Compiler/CISACodeGen/HFpackingOpt.cpp +@@ -825,7 +825,7 @@ bool HFpackingOpt::findStoreSequence(std::vector& path, std::vecto + uint srciCount = inst->getNumOperands(); + if (CallInst* cinst = dyn_cast(inst)) + { +- srciCount = cinst->getNumArgOperands(); ++ srciCount = IGCLLVM::getNumArgOperands(cinst); + } + + for (uint srci = 0; srci < srciCount; srci++) diff --git a/dev-util/intel-graphics-compiler/intel-graphics-compiler-1.0.11485.ebuild b/dev-util/intel-graphics-compiler/intel-graphics-compiler-1.0.11485.ebuild new file mode 100644 index 000000000000..74f02de2f3a1 --- /dev/null +++ b/dev-util/intel-graphics-compiler/intel-graphics-compiler-1.0.11485.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CMAKE_BUILD_TYPE="Release" +LLVM_MAX_SLOT="13" +MY_PN="igc" +MY_P="${MY_PN}-${PV}" +PYTHON_COMPAT=( python3_{8..11} ) + +inherit cmake flag-o-matic llvm python-any-r1 + +DESCRIPTION="LLVM-based OpenCL compiler for OpenCL targetting Intel Gen graphics hardware" +HOMEPAGE="https://github.com/intel/intel-graphics-compiler" +SRC_URI="https://github.com/intel/${PN}/archive/${MY_P}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${MY_P}" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" +IUSE="debug" + +DEPEND=" + dev-libs/opencl-clang:${LLVM_MAX_SLOT}= + dev-util/spirv-tools + =sys-devel/lld-${LLVM_MAX_SLOT}* + sys-devel/llvm:${LLVM_MAX_SLOT}= +" + +RDEPEND="${DEPEND}" + +BDEPEND=" + =sys-devel/lld-${LLVM_MAX_SLOT}* + ${PYTHON_DEPS} +" + +PATCHES=( + "${FILESDIR}/${PN}-1.0.9-no_Werror.patch" + "${FILESDIR}/${PN}-1.0.8173-opencl-clang_version.patch" + "${FILESDIR}/${PN}-1.0.8365-disable-git.patch" + "${FILESDIR}/${PN}-1.0.11485-fix-BiF-caching.patch" + "${FILESDIR}/${PN}-1.0.11485-update-raytracing-llvm14.patch" + "${FILESDIR}/${PN}-1.0.11485-wrap-getNumArgOperands.patch" + "${FILESDIR}/${PN}-1.0.11485-include-opencl-c.patch" +) + +pkg_setup() { + llvm_pkg_setup + python-any-r1_pkg_setup +} + +src_configure() { + # Get LLVM version + local llvm_version="$(best_version -d sys-devel/llvm:${LLVM_MAX_SLOT})" + + # See https://github.com/intel/intel-graphics-compiler/issues/212 + append-ldflags -Wl,-z,undefs + + # See https://bugs.gentoo.org/718824 + ! use debug && append-cppflags -DNDEBUG + + local mycmakeargs=( + -DCCLANG_INCLUDE_PREBUILDS_DIR="/usr/lib/clang/${llvm_version##*-}/include" + -DCCLANG_SONAME_VERSION="${LLVM_MAX_SLOT}" + -DCMAKE_LIBRARY_PATH="$(get_llvm_prefix ${LLVM_MAX_SLOT})/$(get_libdir)" + -DIGC_OPTION__ARCHITECTURE_TARGET="Linux64" + -DIGC_OPTION__CLANG_MODE="Prebuilds" + -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR="ON" + -DIGC_OPTION__LLD_MODE="Prebuilds" + -DIGC_OPTION__LLDELF_H_DIR="${EPREFIX}/usr/include/lld/Common" + -DIGC_OPTION__LLVM_MODE="Prebuilds" + -DIGC_OPTION__LLVM_PREFERRED_VERSION="${llvm_version##*-}" + -DIGC_OPTION__SPIRV_TOOLS_MODE="Prebuilds" + -DIGC_OPTION__SPIRV_TRANSLATOR_MODE="Prebuilds" + -DIGC_OPTION__USE_PREINSTALLED_SPRIV_HEADERS="ON" + -DINSTALL_GENX_IR="ON" + -DSPIRVLLVMTranslator_INCLUDE_DIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAX_SLOT}/include/LLVMSPIRVLib" + -Wno-dev + + # Compilation with VectorCompiler causes currently a segfault. + # See https://github.com/intel/intel-graphics-compiler/issues/236 + -DIGC_BUILD__VC_ENABLED="OFF" + # -DIGC_OPTION__VC_INTRINSICS_MODE="Prebuilds" + ) + + cmake_src_configure +}