commit: f14418d3a1e63ad1eca29cb8a2ad0cb165987a06 Author: Conrad Kostecki <conikost <AT> gentoo <DOT> org> AuthorDate: Sat Jan 20 21:07:01 2024 +0000 Commit: Conrad Kostecki <conikost <AT> gentoo <DOT> org> CommitDate: Sat Jan 20 21:13:16 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f14418d3
dev-util/spirv-llvm-translator: support new spirv headers Closes: https://bugs.gentoo.org/922435 Signed-off-by: Conrad Kostecki <conikost <AT> gentoo.org> ...v-llvm-translator-17.0.0-intel-capability.patch | 181 +++++++++++++++++++++ ...uild => spirv-llvm-translator-17.0.0-r1.ebuild} | 4 +- 2 files changed, 184 insertions(+), 1 deletion(-) diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch new file mode 100644 index 000000000000..d7839367a2a1 --- /dev/null +++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch @@ -0,0 +1,181 @@ +diff --git a/include/LLVMSPIRVExtensions.inc b/include/LLVMSPIRVExtensions.inc +index eb98c7f..4e2eb0b 100644 +--- a/include/LLVMSPIRVExtensions.inc ++++ b/include/LLVMSPIRVExtensions.inc +@@ -41,7 +41,7 @@ EXT(SPV_INTEL_variable_length_array) + EXT(SPV_INTEL_fp_fast_math_mode) + EXT(SPV_INTEL_fpga_cluster_attributes) + EXT(SPV_INTEL_loop_fuse) +-EXT(SPV_INTEL_long_constant_composite) ++EXT(SPV_INTEL_long_composites) + EXT(SPV_INTEL_optnone) + EXT(SPV_INTEL_fpga_dsp_control) + EXT(SPV_INTEL_memory_access_aliasing) +diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp +index 807aa0c..0946dbe 100644 +--- a/lib/SPIRV/SPIRVWriter.cpp ++++ b/lib/SPIRV/SPIRVWriter.cpp +@@ -409,11 +409,10 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) { + const size_t NumElements = ST->getNumElements(); + size_t SPIRVStructNumElements = NumElements; + // In case number of elements is greater than maximum WordCount and +- // SPV_INTEL_long_constant_composite is not enabled, the error will be ++ // SPV_INTEL_long_composites is not enabled, the error will be + // emitted by validate functionality of SPIRVTypeStruct class. + if (NumElements > MaxNumElements && +- BM->isAllowedToUseExtension( +- ExtensionID::SPV_INTEL_long_constant_composite)) { ++ BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) { + SPIRVStructNumElements = MaxNumElements; + } + +@@ -421,8 +420,7 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) { + mapType(T, Struct); + + if (NumElements > MaxNumElements && +- BM->isAllowedToUseExtension( +- ExtensionID::SPV_INTEL_long_constant_composite)) { ++ BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) { + uint64_t NumOfContinuedInstructions = NumElements / MaxNumElements - 1; + for (uint64_t J = 0; J < NumOfContinuedInstructions; J++) { + auto *Continued = BM->addTypeStructContinuedINTEL(MaxNumElements); +@@ -1832,8 +1830,7 @@ LLVMToSPIRVBase::transValueWithoutDecoration(Value *V, SPIRVBasicBlock *BB, + } else + BVarInit = I->second; + } else if (Init && !isa<UndefValue>(Init)) { +- if (!BM->isAllowedToUseExtension( +- ExtensionID::SPV_INTEL_long_constant_composite)) { ++ if (!BM->isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) { + if (auto ArrTy = dyn_cast_or_null<ArrayType>(Init->getType())) { + // First 3 words of OpConstantComposite encode: 1) word count & + // opcode, 2) Result Type and 3) Result Id. Max length of SPIRV +diff --git a/lib/SPIRV/libSPIRV/SPIRVEntry.h b/lib/SPIRV/libSPIRV/SPIRVEntry.h +index a3c9441..e188099 100644 +--- a/lib/SPIRV/libSPIRV/SPIRVEntry.h ++++ b/lib/SPIRV/libSPIRV/SPIRVEntry.h +@@ -908,11 +908,11 @@ public: + } + + SPIRVCapVec getRequiredCapability() const override { +- return getVec(CapabilityLongConstantCompositeINTEL); ++ return getVec(CapabilityLongCompositesINTEL); + } + + std::optional<ExtensionID> getRequiredExtension() const override { +- return ExtensionID::SPV_INTEL_long_constant_composite; ++ return ExtensionID::SPV_INTEL_long_composites; + } + + SPIRVWord getNumElements() const { return Elements.size(); } +diff --git a/lib/SPIRV/libSPIRV/SPIRVModule.cpp b/lib/SPIRV/libSPIRV/SPIRVModule.cpp +index 5ac7275..d8d06f6 100644 +--- a/lib/SPIRV/libSPIRV/SPIRVModule.cpp ++++ b/lib/SPIRV/libSPIRV/SPIRVModule.cpp +@@ -1175,10 +1175,10 @@ SPIRVValue *SPIRVModuleImpl::addCompositeConstant( + const int NumElements = Elements.size(); + + // In case number of elements is greater than maximum WordCount and +- // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted ++ // SPV_INTEL_long_composites is not enabled, the error will be emitted + // by validate functionality of SPIRVCompositeConstant class. + if (NumElements <= MaxNumElements || +- !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite)) ++ !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) + return addConstant(new SPIRVConstantComposite(this, Ty, getId(), Elements)); + + auto Start = Elements.begin(); +@@ -1213,7 +1213,7 @@ SPIRVValue *SPIRVModuleImpl::addSpecConstantComposite( + // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted + // by validate functionality of SPIRVSpecConstantComposite class. + if (NumElements <= MaxNumElements || +- !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite)) ++ !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_composites)) + return addConstant( + new SPIRVSpecConstantComposite(this, Ty, getId(), Elements)); + +diff --git a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h +index d450a43..a2a0ddb 100644 +--- a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h ++++ b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h +@@ -610,7 +610,7 @@ template <> inline void SPIRVMap<Capability, std::string>::init() { + add(CapabilityGroupNonUniformRotateKHR, "GroupNonUniformRotateKHR"); + add(CapabilityAtomicFloat32AddEXT, "AtomicFloat32AddEXT"); + add(CapabilityAtomicFloat64AddEXT, "AtomicFloat64AddEXT"); +- add(CapabilityLongConstantCompositeINTEL, "LongConstantCompositeINTEL"); ++ add(CapabilityLongCompositesINTEL, "LongCompositesINTEL"); + add(CapabilityOptNoneINTEL, "OptNoneINTEL"); + add(CapabilityAtomicFloat16AddEXT, "AtomicFloat16AddEXT"); + add(CapabilityDebugInfoModuleINTEL, "DebugInfoModuleINTEL"); +diff --git a/test/SpecConstants/long-spec-const-composite.ll b/test/SpecConstants/long-spec-const-composite.ll +index a45c895..e943296 100644 +--- a/test/SpecConstants/long-spec-const-composite.ll ++++ b/test/SpecConstants/long-spec-const-composite.ll +@@ -1,5 +1,5 @@ + ; RUN: llvm-as %s -o %t.bc +-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv ++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv + ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV + ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc + ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM +@@ -11,8 +11,8 @@ + target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64" + target triple = "spir64-unknown-unknown" + +-; CHECK-SPIRV: Capability LongConstantCompositeINTEL +-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite" ++; CHECK-SPIRV: Capability LongCompositesINTEL ++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites" + ; CHECK-SPIRV-DAG: Decorate [[First:[0-9]+]] SpecId 0 + ; CHECK-SPIRV-DAG: Decorate [[Last:[0-9]+]] SpecId 65548 + ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8 +diff --git a/test/long-constant-array.ll b/test/long-constant-array.ll +index 415a723..cfef59d 100644 +--- a/test/long-constant-array.ll ++++ b/test/long-constant-array.ll +@@ -1,16 +1,16 @@ + ; RUN: llvm-as %s -o %t.bc + ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR + +-; Check that everything is fine if SPV_INTEL_long_constant_composite is enabled +-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv ++; Check that everything is fine if SPV_INTEL_long_composites is enabled ++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv + ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV + ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc + ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM + ; TODO: run validator once it supports the extension + ; RUNx: spirv-val %t.spv + +-; CHECK-SPIRV: Capability LongConstantCompositeINTEL +-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite" ++; CHECK-SPIRV: Capability LongCompositesINTEL ++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites" + ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8 + ; CHECK-SPIRV: Constant {{[0-9]+}} [[ArrSize:[0-9]+]] 78000 + ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]] [[TInt]] [[ArrSize]] +diff --git a/test/long-type-struct.ll b/test/long-type-struct.ll +index 9b83f62..de6352a 100644 +--- a/test/long-type-struct.ll ++++ b/test/long-type-struct.ll +@@ -1,8 +1,8 @@ + ; RUN: llvm-as %s -o %t.bc +-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv ++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv + ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV + ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc +-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite -spirv-text %t.rev.bc -o %t2.spt ++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites -spirv-text %t.rev.bc -o %t2.spt + ; RUN: FileCheck --input-file=%t2.spt %s --check-prefix=CHECK-SPIRV + ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM + ; TODO: run validator once it supports the extension +@@ -10,8 +10,8 @@ + + ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR + +-; CHECK-SPIRV: Capability LongConstantCompositeINTEL +-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite" ++; CHECK-SPIRV: Capability LongCompositesINTEL ++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites" + ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8 + ; CHECK-SPIRV: TypePointer [[TIntPtr:[0-9]+]] 8 [[TInt]] + ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]] diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r1.ebuild similarity index 92% rename from dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0.ebuild rename to dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r1.ebuild index 5f258190d543..31e879a61af7 100644 --- a/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0.ebuild +++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -35,6 +35,8 @@ BDEPEND=" ) " +PATCHES=( "${FILESDIR}/${PN}-17.0.0-intel-capability.patch" ) + src_prepare() { append-flags -fPIC cmake_src_prepare