diff --git a/0001-SPV_KHR_untyped_pointers-Fix-verification-for-OpenCL.patch b/0001-SPV_KHR_untyped_pointers-Fix-verification-for-OpenCL.patch new file mode 100644 index 0000000..ee6979d --- /dev/null +++ b/0001-SPV_KHR_untyped_pointers-Fix-verification-for-OpenCL.patch @@ -0,0 +1,73 @@ +From 01c8438ee4ac52c248119b7e03e0b021f853b51a Mon Sep 17 00:00:00 2001 +From: Viktoria Maximova +Date: Fri, 20 Sep 2024 17:31:46 +0200 +Subject: [PATCH] [SPV_KHR_untyped_pointers] Fix verification for OpenCL.std + instructions (#5810) + +Allow `p` to be untyped pointer for `fract`, `frexp`, `lgamma_r`, +`modf`, `remquo`, and `sincos`. + +``` +operand must be a pointer(p1, ...).If it is a typed pointer, it must +point to data types. + +``` + +https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/KHR/SPV_KHR_untyped_pointers.html#_modifications_to_the_opencl_std_extended_instruction_set +--- + source/val/validate_extensions.cpp | 10 ++++++---- + source/val/validate_memory.cpp | 4 +++- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/source/val/validate_extensions.cpp b/source/val/validate_extensions.cpp +index e26df288..74974a4f 100644 +--- a/source/val/validate_extensions.cpp ++++ b/source/val/validate_extensions.cpp +@@ -1980,7 +1980,7 @@ spv_result_t ValidateExtInst(ValidationState_t& _, const Instruction* inst) { + "CrossWorkgroup, Workgroup or Function"; + } + +- if (result_type != p_data_type) { ++ if (!_.ContainsUntypedPointer(p_type) && result_type != p_data_type) { + return _.diag(SPV_ERROR_INVALID_DATA, inst) + << ext_inst_name() << ": " + << "expected data type of the pointer to be equal to Result " +@@ -2042,15 +2042,17 @@ spv_result_t ValidateExtInst(ValidationState_t& _, const Instruction* inst) { + "CrossWorkgroup, Workgroup or Function"; + } + +- if (!_.IsIntScalarOrVectorType(p_data_type) || +- _.GetBitWidth(p_data_type) != 32) { ++ if ((!_.IsIntScalarOrVectorType(p_data_type) || ++ _.GetBitWidth(p_data_type) != 32) && ++ !_.ContainsUntypedPointer(p_type)) { + return _.diag(SPV_ERROR_INVALID_DATA, inst) + << ext_inst_name() << ": " + << "expected data type of the pointer to be a 32-bit int " + "scalar or vector type"; + } + +- if (_.GetDimension(p_data_type) != num_components) { ++ if (!_.ContainsUntypedPointer(p_type) && ++ _.GetDimension(p_data_type) != num_components) { + return _.diag(SPV_ERROR_INVALID_DATA, inst) + << ext_inst_name() << ": " + << "expected data type of the pointer to have the same number " +diff --git a/source/val/validate_memory.cpp b/source/val/validate_memory.cpp +index 9bfa3c21..a9ae3644 100644 +--- a/source/val/validate_memory.cpp ++++ b/source/val/validate_memory.cpp +@@ -463,7 +463,9 @@ spv_result_t ValidateVariable(ValidationState_t& _, const Instruction* inst) { + const auto initializer_id = inst->GetOperandAs(initializer_index); + const auto initializer = _.FindDef(initializer_id); + const auto is_module_scope_var = +- initializer && (initializer->opcode() == spv::Op::OpVariable) && ++ initializer && ++ (initializer->opcode() == spv::Op::OpVariable || ++ initializer->opcode() == spv::Op::OpUntypedVariableKHR) && + (initializer->GetOperandAs(storage_class_index) != + spv::StorageClass::Function); + const auto is_constant = +-- +2.46.1 + diff --git a/baselibs.conf b/baselibs.conf index 30d8001..95774b1 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,4 +1,4 @@ -libSPIRV-Tools-2024_3 +libSPIRV-Tools-2024_4_rc1 spirv-tools-devel requires -spirv-tools- - requires "libSPIRV-Tools-2024_3- = " + requires "libSPIRV-Tools-2024_4_rc1- = " diff --git a/spirv-tools.changes b/spirv-tools.changes index 65c1459..b5ee4a8 100644 --- a/spirv-tools.changes +++ b/spirv-tools.changes @@ -1,3 +1,22 @@ +------------------------------------------------------------------- +Tue Oct 8 16:12:56 UTC 2024 - Jan Engelhardt + +- Update to release 2024.4~rc1 + * Add knowledge of cooperative matrices + * Add FPEncoding operand type + * Allow for empty list of enums for an operand + * Support SPV_KHR_untyped_pointers + * properly handle the load and store cache control operand types + * spirv-link: allow linking functions with different pointer arguments + * Allow ArrayStride on untyped pointers + * [OPT] Add SPV_KHR_ray_tracing_position_fetch to allow lists + * Validate presence of Stride operand to OpCooperativeMatrix{Load,Store}KHR + * [SPV_KHR_untyped_pointers] Fix verification of vload/vstore OpenCL.std instructions + * spirv-opt: make traversal deterministic + * add support for SPV_INTEL_global_variable_host_access +- Add 0001-SPV_KHR_untyped_pointers-Fix-verification-for-OpenCL.patch + for shaderc. + ------------------------------------------------------------------- Tue Jun 25 20:47:23 UTC 2024 - Jan Engelhardt diff --git a/spirv-tools.spec b/spirv-tools.spec index 4c3ea57..0a3546a 100644 --- a/spirv-tools.spec +++ b/spirv-tools.spec @@ -17,18 +17,19 @@ %define _lto_cflags %nil -%define lname libSPIRV-Tools-2024_3 +%define lname libSPIRV-Tools-2024_4_rc1 Name: spirv-tools -Version: 2024.3 +Version: 2024.4~rc1 Release: 0 Summary: API and commands for processing SPIR-V modules License: Apache-2.0 Group: Development/Libraries/C and C++ URL: https://github.com/KhronosGroup/SPIRV-Tools -Source: https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v%version.tar.gz +Source: https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v2024.4.rc1.tar.gz Source9: baselibs.conf Patch1: ver.diff +Patch2: 0001-SPV_KHR_untyped_pointers-Fix-verification-for-OpenCL.patch BuildRequires: bison BuildRequires: cmake >= 3.17.2 %if 0%{?suse_version} >= 1599 @@ -67,7 +68,7 @@ validator, and is used in the standalone tools whilst also enabling integration into other code bases directly. %prep -%autosetup -p1 -n SPIRV-Tools-%version +%autosetup -p1 -n SPIRV-Tools-2024.4.rc1 find . -type f -name CMakeLists.txt -exec \ perl -i -pe 's{\@PACKAGE_VERSION\@}{%version}' CMakeLists.txt {} + diff --git a/v2024.3.tar.gz b/v2024.3.tar.gz deleted file mode 100644 index 3d7bc3f..0000000 --- a/v2024.3.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3961edff3410599112a50bfcda2d4a828f7cb12e8294ee0f6169976ef0532b83 -size 3169316 diff --git a/v2024.4.rc1.tar.gz b/v2024.4.rc1.tar.gz new file mode 100644 index 0000000..655c513 --- /dev/null +++ b/v2024.4.rc1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f44b9bc780a5b8c54637b722e4f9f2a2b7dd04840a79890dd4bcf615faf6b0c +size 3194161