Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package spirv-llvm-translator for openSUSE:Factory checked in at 2025-01-12 11:10:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/spirv-llvm-translator (Old) and /work/SRC/openSUSE:Factory/.spirv-llvm-translator.new.1881 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spirv-llvm-translator" Sun Jan 12 11:10:05 2025 rev:14 rq:1236052 version:19.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/spirv-llvm-translator/spirv-llvm-translator.changes 2024-12-08 11:37:57.031665767 +0100 +++ /work/SRC/openSUSE:Factory/.spirv-llvm-translator.new.1881/spirv-llvm-translator.changes 2025-01-12 11:10:28.149330860 +0100 @@ -1,0 +2,9 @@ +Mon Jan 6 21:10:20 UTC 2025 - Aaron Puchert <aaronpuch...@alice-dsl.net> + +- Update to version 19.1.3. + * Add support for MaxByteOffsetId, LocalSizeId, LocalSizeHintId + (SPIR-V 1.2) and SubgroupsPerWorkgroup(Id) (SPIR-V 1.1/1.2) + in SPIRVReader. + * Fix EnumClass support in DebugInfo. + +------------------------------------------------------------------- Old: ---- SPIRV-LLVM-Translator-19.1.2.tar.gz New: ---- SPIRV-LLVM-Translator-19.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ spirv-llvm-translator.spec ++++++ --- /var/tmp/diff_new_pack.BKW7q1/_old 2025-01-12 11:10:29.701394726 +0100 +++ /var/tmp/diff_new_pack.BKW7q1/_new 2025-01-12 11:10:29.713395220 +0100 @@ -1,7 +1,7 @@ # # spec file for package spirv-llvm-translator # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # Copyright (c) 2023, Martin Hauke <mar...@gmx.de> # # All modifications and additions to the file contributed by third parties @@ -19,7 +19,7 @@ %define sover 19 Name: spirv-llvm-translator -Version: 19.1.2 +Version: 19.1.3 Release: 0 Summary: LLVM/SPIR-V Bi-Directional Translator library License: BSD-3-Clause ++++++ SPIRV-LLVM-Translator-19.1.2.tar.gz -> SPIRV-LLVM-Translator-19.1.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/LLVMToSPIRVDbgTran.cpp new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/LLVMToSPIRVDbgTran.cpp --- old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/LLVMToSPIRVDbgTran.cpp 2024-11-28 14:26:55.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/LLVMToSPIRVDbgTran.cpp 2024-12-20 15:01:19.000000000 +0100 @@ -500,6 +500,8 @@ if (BM->getDebugInfoEIS() == SPIRVEIS_NonSemantic_Shader_DebugInfo_200) if (DFlags & DINode::FlagBitField) Flags |= SPIRVDebug::FlagBitField; + if (DFlags & DINode::FlagEnumClass) + Flags |= SPIRVDebug::FlagIsEnumClass; return Flags; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/SPIRVReader.cpp new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/SPIRVReader.cpp --- old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/SPIRVReader.cpp 2024-11-28 14:26:55.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/SPIRVReader.cpp 2024-12-20 15:01:19.000000000 +0100 @@ -3127,6 +3127,14 @@ SPIRVWord MaxOffset = 0; if (BA->hasDecorate(DecorationMaxByteOffset, 0, &MaxOffset)) Builder.addDereferenceableAttr(MaxOffset); + else { + SPIRVId MaxOffsetId; + if (BA->hasDecorateId(DecorationMaxByteOffsetId, 0, &MaxOffsetId)) { + if (auto MaxOffsetVal = transIdAsConstant(MaxOffsetId)) { + Builder.addDereferenceableAttr(*MaxOffsetVal); + } + } + } if (auto Alignment = getAlignment(BA)) { Builder.addAlignmentAttr(*Alignment); } @@ -4415,11 +4423,29 @@ if (auto *EM = BF->getExecutionMode(ExecutionModeLocalSize)) { F->setMetadata(kSPIR2MD::WGSize, getMDNodeStringIntVec(Context, EM->getLiterals())); + } else if (auto *EM = BF->getExecutionModeId(ExecutionModeLocalSizeId)) { + std::vector<SPIRVWord> Values; + for (const auto Id : EM->getLiterals()) { + if (auto Val = transIdAsConstant(Id)) { + Values.emplace_back(static_cast<SPIRVWord>(*Val)); + } + } + F->setMetadata(kSPIR2MD::WGSize, getMDNodeStringIntVec(Context, Values)); } // Generate metadata for work_group_size_hint if (auto *EM = BF->getExecutionMode(ExecutionModeLocalSizeHint)) { F->setMetadata(kSPIR2MD::WGSizeHint, getMDNodeStringIntVec(Context, EM->getLiterals())); + } else if (auto *EM = + BF->getExecutionModeId(ExecutionModeLocalSizeHintId)) { + std::vector<SPIRVWord> Values; + for (const auto Id : EM->getLiterals()) { + if (auto Val = transIdAsConstant(Id)) { + Values.emplace_back(static_cast<SPIRVWord>(*Val)); + } + } + F->setMetadata(kSPIR2MD::WGSizeHint, + getMDNodeStringIntVec(Context, Values)); } // Generate metadata for vec_type_hint if (auto *EM = BF->getExecutionMode(ExecutionModeVecTypeHint)) { @@ -4453,6 +4479,25 @@ auto *SizeMD = ConstantAsMetadata::get(getInt32(M, -1)); F->setMetadata(kSPIR2MD::SubgroupSize, MDNode::get(*Context, SizeMD)); } + // Generate metadata for SubgroupsPerWorkgroup/SubgroupsPerWorkgroupId. + auto EmitSubgroupsPerWorkgroupMD = [this, F](SPIRVExecutionModeKind EMK, + uint64_t Value) { + NamedMDNode *ExecModeMD = + M->getOrInsertNamedMetadata(kSPIRVMD::ExecutionMode); + SmallVector<Metadata *, 2> OperandVec; + OperandVec.push_back(ConstantAsMetadata::get(F)); + OperandVec.push_back(ConstantAsMetadata::get(getUInt32(M, EMK))); + OperandVec.push_back(ConstantAsMetadata::get(getUInt32(M, Value))); + ExecModeMD->addOperand(MDNode::get(*Context, OperandVec)); + }; + if (auto *EM = BF->getExecutionMode(ExecutionModeSubgroupsPerWorkgroup)) { + EmitSubgroupsPerWorkgroupMD(EM->getExecutionMode(), EM->getLiterals()[0]); + } else if (auto *EM = BF->getExecutionModeId( + ExecutionModeSubgroupsPerWorkgroupId)) { + if (auto Val = transIdAsConstant(EM->getLiterals()[0])) { + EmitSubgroupsPerWorkgroupMD(EM->getExecutionMode(), *Val); + } + } // Generate metadata for max_work_group_size if (auto *EM = BF->getExecutionMode(ExecutionModeMaxWorkgroupSizeINTEL)) { F->setMetadata(kSPIR2MD::MaxWGSize, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/SPIRVToLLVMDbgTran.cpp new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/SPIRVToLLVMDbgTran.cpp --- old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/SPIRVToLLVMDbgTran.cpp 2024-11-28 14:26:55.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/SPIRVToLLVMDbgTran.cpp 2024-12-20 15:01:19.000000000 +0100 @@ -812,7 +812,7 @@ UnderlyingType = transDebugInst<DIType>(static_cast<SPIRVExtInst *>(E)); return getDIBuilder(DebugInst).createEnumerationType( Scope, Name, File, LineNo, SizeInBits, AlignInBits, Enumerators, - UnderlyingType, 0, "", UnderlyingType); + UnderlyingType, 0, "", Flags & SPIRVDebug::FlagIsEnumClass); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/libSPIRV/SPIRVEntry.cpp new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/libSPIRV/SPIRVEntry.cpp --- old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/libSPIRV/SPIRVEntry.cpp 2024-11-28 14:26:55.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/libSPIRV/SPIRVEntry.cpp 2024-12-20 15:01:19.000000000 +0100 @@ -651,7 +651,9 @@ getDecoder(I) >> Target >> ExecMode; switch (static_cast<uint32_t>(ExecMode)) { case ExecutionModeLocalSize: + case ExecutionModeLocalSizeId: case ExecutionModeLocalSizeHint: + case ExecutionModeLocalSizeHintId: case ExecutionModeMaxWorkgroupSizeINTEL: WordLiterals.resize(3); break; @@ -670,6 +672,8 @@ case ExecutionModeSharedLocalMemorySizeINTEL: case ExecutionModeNamedBarrierCountINTEL: case ExecutionModeSubgroupSize: + case ExecutionModeSubgroupsPerWorkgroup: + case ExecutionModeSubgroupsPerWorkgroupId: case ExecutionModeMaxWorkDimINTEL: case ExecutionModeNumSIMDWorkitemsINTEL: case ExecutionModeSchedulerTargetFmaxMhzINTEL: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/libSPIRV/SPIRVEntry.h new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/libSPIRV/SPIRVEntry.h --- old/SPIRV-LLVM-Translator-19.1.2/lib/SPIRV/libSPIRV/SPIRVEntry.h 2024-11-28 14:26:55.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/lib/SPIRV/libSPIRV/SPIRVEntry.h 2024-12-20 15:01:19.000000000 +0100 @@ -804,6 +804,12 @@ return nullptr; return Loc->second; } + SPIRVExecutionModeId *getExecutionModeId(SPIRVExecutionModeKind EMK) const { + auto Loc = ExecModes.find(EMK); + if (Loc == ExecModes.end()) + return nullptr; + return static_cast<SPIRVExecutionModeId *>(Loc->second); + } SPIRVExecutionModeRange getExecutionModeRange(SPIRVExecutionModeKind EMK) const { return ExecModes.equal_range(EMK); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/test/LocalSizeHintId.spvasm new/SPIRV-LLVM-Translator-19.1.3/test/LocalSizeHintId.spvasm --- old/SPIRV-LLVM-Translator-19.1.2/test/LocalSizeHintId.spvasm 1970-01-01 01:00:00.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/test/LocalSizeHintId.spvasm 2024-12-20 15:01:19.000000000 +0100 @@ -0,0 +1,27 @@ +; REQUIRES: spirv-as + +; RUN: spirv-as %s --target-env spv1.2 -o %t.spv +; RUN: spirv-val %t.spv +; RUN: llvm-spirv -r -o %t.rev.bc %t.spv +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s + + OpCapability Addresses + OpCapability Linkage + OpCapability Kernel + OpMemoryModel Physical64 OpenCL + OpEntryPoint Kernel %fn "testLocalSizeHintId" + OpExecutionModeId %fn LocalSizeHintId %uint_64 %uint_1 %uint_1sco + %void = OpTypeVoid + %uint = OpTypeInt 32 0 + %uint_1 = OpConstant %uint 1 + %uint_64 = OpConstant %uint 64 + %uint_1sco = OpSpecConstantOp %uint UDiv %uint_64 %uint_64 + %fnTy = OpTypeFunction %void + +; CHECK: define spir_kernel void @testLocalSizeHintId() {{.*}} !work_group_size_hint ![[MD:[0-9]+]] +; CHECK: ![[MD]] = !{i32 64, i32 1, i32 1} + + %fn = OpFunction %void None %fnTy + %entry = OpLabel + OpReturn + OpFunctionEnd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/test/LocalSizeId.spvasm new/SPIRV-LLVM-Translator-19.1.3/test/LocalSizeId.spvasm --- old/SPIRV-LLVM-Translator-19.1.2/test/LocalSizeId.spvasm 1970-01-01 01:00:00.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/test/LocalSizeId.spvasm 2024-12-20 15:01:19.000000000 +0100 @@ -0,0 +1,27 @@ +; REQUIRES: spirv-as + +; RUN: spirv-as %s --target-env spv1.2 -o %t.spv +; RUN: spirv-val %t.spv +; RUN: llvm-spirv -r -o %t.rev.bc %t.spv +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s + + OpCapability Addresses + OpCapability Linkage + OpCapability Kernel + OpMemoryModel Physical64 OpenCL + OpEntryPoint Kernel %fn "testLocalSizeId" + OpExecutionModeId %fn LocalSizeId %uint_64 %uint_1 %uint_1sco + %void = OpTypeVoid + %uint = OpTypeInt 32 0 + %uint_1 = OpConstant %uint 1 + %uint_64 = OpConstant %uint 64 + %uint_1sco = OpSpecConstantOp %uint UDiv %uint_64 %uint_64 + %fnTy = OpTypeFunction %void + +; CHECK: define spir_kernel void @testLocalSizeId() {{.*}} !reqd_work_group_size ![[MD:[0-9]+]] +; CHECK: ![[MD]] = !{i32 64, i32 1, i32 1} + + %fn = OpFunction %void None %fnTy + %entry = OpLabel + OpReturn + OpFunctionEnd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/test/MaxByteOffsetId.spvasm new/SPIRV-LLVM-Translator-19.1.3/test/MaxByteOffsetId.spvasm --- old/SPIRV-LLVM-Translator-19.1.2/test/MaxByteOffsetId.spvasm 1970-01-01 01:00:00.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/test/MaxByteOffsetId.spvasm 2024-12-20 15:01:19.000000000 +0100 @@ -0,0 +1,33 @@ +; REQUIRES: spirv-as + +; RUN: spirv-as %s --target-env spv1.2 -o %t.spv +; RUN: spirv-val %t.spv +; RUN: llvm-spirv -r -o %t.rev.bc %t.spv +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s + +; CHECK: define spir_kernel void @testMaxByteOffsetId( +; CHECK-SAME: ptr addrspace(1) dereferenceable(24) %p, +; CHECK-SAME: ptr addrspace(1) dereferenceable(48) %q) + + OpCapability Addresses + OpCapability Kernel + OpMemoryModel Physical64 OpenCL + OpEntryPoint Kernel %fn "testMaxByteOffsetId" + OpName %p "p" + OpName %q "q" + OpDecorateId %p MaxByteOffsetId %mbo + OpDecorateId %q MaxByteOffsetId %spec + %void = OpTypeVoid + %i32 = OpTypeInt 32 0 + %ptr = OpTypePointer CrossWorkgroup %i32 + %fnTy = OpTypeFunction %void %ptr %ptr + %mbo = OpConstant %i32 24 + %spec = OpSpecConstantOp %i32 IAdd %mbo %mbo + + %fn = OpFunction %void None %fnTy + %p = OpFunctionParameter %ptr + %q = OpFunctionParameter %ptr + %entry = OpLabel + + OpReturn + OpFunctionEnd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/test/SubgroupsPerWorkgroup.spvasm new/SPIRV-LLVM-Translator-19.1.3/test/SubgroupsPerWorkgroup.spvasm --- old/SPIRV-LLVM-Translator-19.1.2/test/SubgroupsPerWorkgroup.spvasm 1970-01-01 01:00:00.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/test/SubgroupsPerWorkgroup.spvasm 2024-12-20 15:01:19.000000000 +0100 @@ -0,0 +1,24 @@ +; REQUIRES: spirv-as + +; RUN: spirv-as %s --target-env spv1.2 -o %t.spv +; RUN: spirv-val %t.spv +; RUN: llvm-spirv -r -o %t.rev.bc %t.spv +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s + + OpCapability Addresses + OpCapability Linkage + OpCapability Kernel + OpCapability SubgroupDispatch + OpMemoryModel Physical64 OpenCL + OpEntryPoint Kernel %fn "testSubgroupsPerWorkgroup" + OpExecutionMode %fn SubgroupsPerWorkgroup 8 + %void = OpTypeVoid + %fnTy = OpTypeFunction %void + +; CHECK: !spirv.ExecutionMode = !{![[MD:[0-9]+]]} +; CHECK: ![[MD]] = !{ptr @testSubgroupsPerWorkgroup, i32 36, i32 8} + + %fn = OpFunction %void None %fnTy + %entry = OpLabel + OpReturn + OpFunctionEnd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPIRV-LLVM-Translator-19.1.2/test/SubgroupsPerWorkgroupId.spvasm new/SPIRV-LLVM-Translator-19.1.3/test/SubgroupsPerWorkgroupId.spvasm --- old/SPIRV-LLVM-Translator-19.1.2/test/SubgroupsPerWorkgroupId.spvasm 1970-01-01 01:00:00.000000000 +0100 +++ new/SPIRV-LLVM-Translator-19.1.3/test/SubgroupsPerWorkgroupId.spvasm 2024-12-20 15:01:19.000000000 +0100 @@ -0,0 +1,27 @@ +; REQUIRES: spirv-as + +; RUN: spirv-as %s --target-env spv1.2 -o %t.spv +; RUN: spirv-val %t.spv +; RUN: llvm-spirv -r -o %t.rev.bc %t.spv +; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s + + OpCapability Addresses + OpCapability Linkage + OpCapability Kernel + OpCapability SubgroupDispatch + OpMemoryModel Physical64 OpenCL + OpEntryPoint Kernel %fn "testSubgroupsPerWorkgroupId" + OpExecutionModeId %fn SubgroupsPerWorkgroupId %uint_8 + %void = OpTypeVoid + %uint = OpTypeInt 32 0 + %uint_4 = OpConstant %uint 4 + %uint_8 = OpSpecConstantOp %uint IAdd %uint_4 %uint_4 + %fnTy = OpTypeFunction %void + +; CHECK: !spirv.ExecutionMode = !{![[MD:[0-9]+]]} +; CHECK: ![[MD]] = !{ptr @testSubgroupsPerWorkgroupId, i32 37, i32 8} + + %fn = OpFunction %void None %fnTy + %entry = OpLabel + OpReturn + OpFunctionEnd