Бранимир Караџић 8 месяцев назад
Родитель
Сommit
9433b566c0
30 измененных файлов с 2025 добавлено и 2165 удалено
  1. 1 1
      3rdparty/spirv-tools/include/generated/build-version.inc
  2. 1460 1449
      3rdparty/spirv-tools/include/generated/core_tables_body.inc
  3. 2 0
      3rdparty/spirv-tools/include/generated/core_tables_header.inc
  4. 0 38
      3rdparty/spirv-tools/include/generated/debuginfo.insts.inc
  5. 0 317
      3rdparty/spirv-tools/include/generated/enum_string_mapping.inc
  6. 0 154
      3rdparty/spirv-tools/include/generated/extension_enum.inc
  7. 0 46
      3rdparty/spirv-tools/include/generated/nonsemantic.clspvreflection.insts.inc
  8. 0 48
      3rdparty/spirv-tools/include/generated/nonsemantic.shader.debuginfo.100.insts.inc
  9. 0 12
      3rdparty/spirv-tools/include/generated/nonsemantic.vkspreflection.insts.inc
  10. 0 41
      3rdparty/spirv-tools/include/generated/opencl.debuginfo.100.insts.inc
  11. 0 7
      3rdparty/spirv-tools/include/generated/spv-amd-gcn-shader.insts.inc
  12. 0 8
      3rdparty/spirv-tools/include/generated/spv-amd-shader-ballot.insts.inc
  13. 0 5
      3rdparty/spirv-tools/include/generated/spv-amd-shader-explicit-vertex-parameter.insts.inc
  14. 0 13
      3rdparty/spirv-tools/include/generated/spv-amd-shader-trinary-minmax.insts.inc
  15. 4 0
      3rdparty/spirv-tools/include/spirv-tools/libspirv.h
  16. 4 0
      3rdparty/spirv-tools/source/binary.cpp
  17. 1 0
      3rdparty/spirv-tools/source/opcode.cpp
  18. 5 0
      3rdparty/spirv-tools/source/operand.cpp
  19. 19 4
      3rdparty/spirv-tools/source/opt/copy_prop_arrays.cpp
  20. 15 13
      3rdparty/spirv-tools/source/opt/redundancy_elimination.cpp
  21. 1 2
      3rdparty/spirv-tools/source/opt/redundancy_elimination.h
  22. 2 0
      3rdparty/spirv-tools/source/text.cpp
  23. 1 0
      3rdparty/spirv-tools/source/val/validate.cpp
  24. 3 0
      3rdparty/spirv-tools/source/val/validate.h
  25. 148 1
      3rdparty/spirv-tools/source/val/validate_constants.cpp
  26. 1 1
      3rdparty/spirv-tools/source/val/validate_memory.cpp
  27. 252 0
      3rdparty/spirv-tools/source/val/validate_tensor.cpp
  28. 79 0
      3rdparty/spirv-tools/source/val/validate_type.cpp
  29. 25 4
      3rdparty/spirv-tools/source/val/validation_state.cpp
  30. 2 1
      3rdparty/spirv-tools/source/val/validation_state.h

+ 1 - 1
3rdparty/spirv-tools/include/generated/build-version.inc

@@ -1 +1 @@
-"v2025.2", "SPIRV-Tools v2025.2 v2025.2.rc2-29-g9c392f66"
+"v2025.2", "SPIRV-Tools v2025.2 v2025.2.rc2-38-g4b1de6d5"

Разница между файлами не показана из-за своего большого размера
+ 1460 - 1449
3rdparty/spirv-tools/include/generated/core_tables_body.inc


+ 2 - 0
3rdparty/spirv-tools/include/generated/core_tables_header.inc

@@ -23,6 +23,7 @@ enum class PrintingClass : uint32_t {
   kPrimitive,
   kRelational_and_Logical,
   kReserved,
+  kTensor,
   kType_Declaration,
   k_exclude,
 };
@@ -42,6 +43,7 @@ enum Extension : uint32_t {
   kSPV_AMD_texture_gather_bias_lod,
   kSPV_ARM_cooperative_matrix_layouts,
   kSPV_ARM_core_builtins,
+  kSPV_ARM_tensors,
   kSPV_EXT_arithmetic_fence,
   kSPV_EXT_demote_to_helper_invocation,
   kSPV_EXT_descriptor_indexing,

+ 0 - 38
3rdparty/spirv-tools/include/generated/debuginfo.insts.inc

@@ -1,38 +0,0 @@
-
-
-static const spv_ext_inst_desc_t debuginfo_entries[] = {
-  {"DebugInfoNone", 0, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugCompilationUnit", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeBasic", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_BASE_TYPE_ATTRIBUTE_ENCODING, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePointer", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_STORAGE_CLASS, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeQualifier", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_TYPE_QUALIFIER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeArray", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeVector", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypedef", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeFunction", 8, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeEnum", 9, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeComposite", 10, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_COMPOSITE_TYPE, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeMember", 11, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeInheritance", 12, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePtrToMember", 13, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplate", 14, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameter", 15, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateTemplateParameter", 16, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameterPack", 17, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugGlobalVariable", 18, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunctionDeclaration", 19, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunction", 20, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlock", 21, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlockDiscriminator", 22, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugScope", 23, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugNoScope", 24, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedAt", 25, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLocalVariable", 26, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedVariable", 27, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugDeclare", 28, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugValue", 29, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugOperation", 30, 0, nullptr, {SPV_OPERAND_TYPE_DEBUG_OPERATION, SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugExpression", 31, 0, nullptr, {SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroDef", 32, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroUndef", 33, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

Разница между файлами не показана из-за своего большого размера
+ 0 - 317
3rdparty/spirv-tools/include/generated/enum_string_mapping.inc


+ 0 - 154
3rdparty/spirv-tools/include/generated/extension_enum.inc

@@ -1,154 +0,0 @@
-kSPV_AMDX_shader_enqueue,
-kSPV_AMD_gcn_shader,
-kSPV_AMD_gpu_shader_half_float,
-kSPV_AMD_gpu_shader_half_float_fetch,
-kSPV_AMD_gpu_shader_int16,
-kSPV_AMD_shader_ballot,
-kSPV_AMD_shader_early_and_late_fragment_tests,
-kSPV_AMD_shader_explicit_vertex_parameter,
-kSPV_AMD_shader_fragment_mask,
-kSPV_AMD_shader_image_load_store_lod,
-kSPV_AMD_shader_trinary_minmax,
-kSPV_AMD_texture_gather_bias_lod,
-kSPV_ARM_cooperative_matrix_layouts,
-kSPV_ARM_core_builtins,
-kSPV_EXT_arithmetic_fence,
-kSPV_EXT_demote_to_helper_invocation,
-kSPV_EXT_descriptor_indexing,
-kSPV_EXT_fragment_fully_covered,
-kSPV_EXT_fragment_invocation_density,
-kSPV_EXT_fragment_shader_interlock,
-kSPV_EXT_mesh_shader,
-kSPV_EXT_opacity_micromap,
-kSPV_EXT_optnone,
-kSPV_EXT_physical_storage_buffer,
-kSPV_EXT_relaxed_printf_string_address_space,
-kSPV_EXT_replicated_composites,
-kSPV_EXT_shader_atomic_float16_add,
-kSPV_EXT_shader_atomic_float_add,
-kSPV_EXT_shader_atomic_float_min_max,
-kSPV_EXT_shader_image_int64,
-kSPV_EXT_shader_stencil_export,
-kSPV_EXT_shader_tile_image,
-kSPV_EXT_shader_viewport_index_layer,
-kSPV_GOOGLE_decorate_string,
-kSPV_GOOGLE_hlsl_functionality1,
-kSPV_GOOGLE_user_type,
-kSPV_INTEL_2d_block_io,
-kSPV_INTEL_arbitrary_precision_fixed_point,
-kSPV_INTEL_arbitrary_precision_floating_point,
-kSPV_INTEL_arbitrary_precision_integers,
-kSPV_INTEL_bfloat16_conversion,
-kSPV_INTEL_blocking_pipes,
-kSPV_INTEL_cache_controls,
-kSPV_INTEL_debug_module,
-kSPV_INTEL_device_side_avc_motion_estimation,
-kSPV_INTEL_float_controls2,
-kSPV_INTEL_fp_fast_math_mode,
-kSPV_INTEL_fp_max_error,
-kSPV_INTEL_fpga_argument_interfaces,
-kSPV_INTEL_fpga_buffer_location,
-kSPV_INTEL_fpga_cluster_attributes,
-kSPV_INTEL_fpga_dsp_control,
-kSPV_INTEL_fpga_invocation_pipelining_attributes,
-kSPV_INTEL_fpga_latency_control,
-kSPV_INTEL_fpga_loop_controls,
-kSPV_INTEL_fpga_memory_accesses,
-kSPV_INTEL_fpga_memory_attributes,
-kSPV_INTEL_fpga_reg,
-kSPV_INTEL_function_pointers,
-kSPV_INTEL_global_variable_fpga_decorations,
-kSPV_INTEL_global_variable_host_access,
-kSPV_INTEL_inline_assembly,
-kSPV_INTEL_int4,
-kSPV_INTEL_io_pipes,
-kSPV_INTEL_kernel_attributes,
-kSPV_INTEL_long_composites,
-kSPV_INTEL_loop_fuse,
-kSPV_INTEL_masked_gather_scatter,
-kSPV_INTEL_maximum_registers,
-kSPV_INTEL_media_block_io,
-kSPV_INTEL_memory_access_aliasing,
-kSPV_INTEL_optnone,
-kSPV_INTEL_runtime_aligned,
-kSPV_INTEL_shader_integer_functions2,
-kSPV_INTEL_split_barrier,
-kSPV_INTEL_subgroup_buffer_prefetch,
-kSPV_INTEL_subgroup_matrix_multiply_accumulate,
-kSPV_INTEL_subgroups,
-kSPV_INTEL_task_sequence,
-kSPV_INTEL_tensor_float32_conversion,
-kSPV_INTEL_ternary_bitwise_function,
-kSPV_INTEL_unstructured_loop_controls,
-kSPV_INTEL_usm_storage_classes,
-kSPV_INTEL_variable_length_array,
-kSPV_INTEL_vector_compute,
-kSPV_KHR_16bit_storage,
-kSPV_KHR_8bit_storage,
-kSPV_KHR_bfloat16,
-kSPV_KHR_bit_instructions,
-kSPV_KHR_compute_shader_derivatives,
-kSPV_KHR_cooperative_matrix,
-kSPV_KHR_device_group,
-kSPV_KHR_expect_assume,
-kSPV_KHR_float_controls,
-kSPV_KHR_float_controls2,
-kSPV_KHR_fragment_shader_barycentric,
-kSPV_KHR_fragment_shading_rate,
-kSPV_KHR_integer_dot_product,
-kSPV_KHR_linkonce_odr,
-kSPV_KHR_maximal_reconvergence,
-kSPV_KHR_multiview,
-kSPV_KHR_no_integer_wrap_decoration,
-kSPV_KHR_non_semantic_info,
-kSPV_KHR_physical_storage_buffer,
-kSPV_KHR_post_depth_coverage,
-kSPV_KHR_quad_control,
-kSPV_KHR_ray_cull_mask,
-kSPV_KHR_ray_query,
-kSPV_KHR_ray_tracing,
-kSPV_KHR_ray_tracing_position_fetch,
-kSPV_KHR_relaxed_extended_instruction,
-kSPV_KHR_shader_atomic_counter_ops,
-kSPV_KHR_shader_ballot,
-kSPV_KHR_shader_clock,
-kSPV_KHR_shader_draw_parameters,
-kSPV_KHR_storage_buffer_storage_class,
-kSPV_KHR_subgroup_rotate,
-kSPV_KHR_subgroup_uniform_control_flow,
-kSPV_KHR_subgroup_vote,
-kSPV_KHR_terminate_invocation,
-kSPV_KHR_uniform_group_instructions,
-kSPV_KHR_untyped_pointers,
-kSPV_KHR_variable_pointers,
-kSPV_KHR_vulkan_memory_model,
-kSPV_KHR_workgroup_memory_explicit_layout,
-kSPV_NVX_multiview_per_view_attributes,
-kSPV_NV_bindless_texture,
-kSPV_NV_cluster_acceleration_structure,
-kSPV_NV_compute_shader_derivatives,
-kSPV_NV_cooperative_matrix,
-kSPV_NV_cooperative_matrix2,
-kSPV_NV_cooperative_vector,
-kSPV_NV_displacement_micromap,
-kSPV_NV_fragment_shader_barycentric,
-kSPV_NV_geometry_shader_passthrough,
-kSPV_NV_linear_swept_spheres,
-kSPV_NV_mesh_shader,
-kSPV_NV_raw_access_chains,
-kSPV_NV_ray_tracing,
-kSPV_NV_ray_tracing_motion_blur,
-kSPV_NV_sample_mask_override_coverage,
-kSPV_NV_shader_atomic_fp16_vector,
-kSPV_NV_shader_image_footprint,
-kSPV_NV_shader_invocation_reorder,
-kSPV_NV_shader_sm_builtins,
-kSPV_NV_shader_subgroup_partitioned,
-kSPV_NV_shading_rate,
-kSPV_NV_stereo_view_rendering,
-kSPV_NV_tensor_addressing,
-kSPV_NV_viewport_array2,
-kSPV_QCOM_image_processing,
-kSPV_QCOM_image_processing2,
-kSPV_QCOM_tile_shading,
-kSPV_VALIDATOR_ignore_type_decl_unique

+ 0 - 46
3rdparty/spirv-tools/include/generated/nonsemantic.clspvreflection.insts.inc

@@ -1,46 +0,0 @@
-
-
-static const spv_ext_inst_desc_t nonsemantic_clspvreflection_entries[] = {
-  {"Kernel", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentInfo", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentStorageBuffer", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentUniform", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentPodStorageBuffer", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentPodUniform", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentPodPushConstant", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentSampledImage", 8, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentStorageImage", 9, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentSampler", 10, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentWorkgroup", 11, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SpecConstantWorkgroupSize", 12, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SpecConstantGlobalOffset", 13, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SpecConstantWorkDim", 14, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantGlobalOffset", 15, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantEnqueuedLocalSize", 16, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantGlobalSize", 17, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantRegionOffset", 18, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantNumWorkgroups", 19, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstantRegionGroupOffset", 20, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ConstantDataStorageBuffer", 21, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ConstantDataUniform", 22, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"LiteralSampler", 23, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PropertyRequiredWorkgroupSize", 24, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SpecConstantSubgroupMaxSize", 25, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentPointerPushConstant", 26, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentPointerUniform", 27, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ProgramScopeVariablesStorageBuffer", 28, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ProgramScopeVariablePointerRelocation", 29, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ImageArgumentInfoChannelOrderPushConstant", 30, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ImageArgumentInfoChannelDataTypePushConstant", 31, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ImageArgumentInfoChannelOrderUniform", 32, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ImageArgumentInfoChannelDataTypeUniform", 33, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentStorageTexelBuffer", 34, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ArgumentUniformTexelBuffer", 35, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ConstantDataPointerPushConstant", 36, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"ProgramScopeVariablePointerPushConstant", 37, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PrintfInfo", 38, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PrintfBufferStorageBuffer", 39, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PrintfBufferPointerPushConstant", 40, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"NormalizedSamplerMaskPushConstant", 41, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"WorkgroupVariableSize", 42, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 48
3rdparty/spirv-tools/include/generated/nonsemantic.shader.debuginfo.100.insts.inc

@@ -1,48 +0,0 @@
-
-
-static const spv_ext_inst_desc_t nonsemantic_shader_debuginfo_100_entries[] = {
-  {"DebugInfoNone", 0, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugCompilationUnit", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeBasic", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePointer", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeQualifier", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeArray", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeVector", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypedef", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeFunction", 8, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeEnum", 9, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeComposite", 10, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeMember", 11, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeInheritance", 12, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePtrToMember", 13, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplate", 14, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameter", 15, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateTemplateParameter", 16, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameterPack", 17, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugGlobalVariable", 18, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunctionDeclaration", 19, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunction", 20, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlock", 21, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlockDiscriminator", 22, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugScope", 23, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugNoScope", 24, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedAt", 25, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLocalVariable", 26, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedVariable", 27, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugDeclare", 28, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugValue", 29, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugOperation", 30, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugExpression", 31, 0, nullptr, {SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroDef", 32, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroUndef", 33, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugImportedEntity", 34, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugSource", 35, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunctionDefinition", 101, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugSourceContinued", 102, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLine", 103, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugNoLine", 104, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugBuildIdentifier", 105, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugStoragePath", 106, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugEntryPoint", 107, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeMatrix", 108, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 12
3rdparty/spirv-tools/include/generated/nonsemantic.vkspreflection.insts.inc

@@ -1,12 +0,0 @@
-
-
-static const spv_ext_inst_desc_t nonsemantic_vkspreflection_entries[] = {
-  {"Configuration", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"StartCounter", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"StopCounter", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"PushConstants", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SpecializationMapEntry", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DescriptorSetBuffer", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DescriptorSetImage", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DescriptorSetSampler", 8, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 41
3rdparty/spirv-tools/include/generated/opencl.debuginfo.100.insts.inc

@@ -1,41 +0,0 @@
-
-
-static const spv_ext_inst_desc_t opencl_debuginfo_100_entries[] = {
-  {"DebugInfoNone", 0, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugCompilationUnit", 1, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_SOURCE_LANGUAGE, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeBasic", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_BASE_TYPE_ATTRIBUTE_ENCODING, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePointer", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_STORAGE_CLASS, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeQualifier", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_TYPE_QUALIFIER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeArray", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeVector", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypedef", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeFunction", 8, 0, nullptr, {SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeEnum", 9, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeComposite", 10, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_COMPOSITE_TYPE, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeMember", 11, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeInheritance", 12, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypePtrToMember", 13, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplate", 14, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameter", 15, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateTemplateParameter", 16, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugTypeTemplateParameterPack", 17, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugGlobalVariable", 18, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunctionDeclaration", 19, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_NONE}},
-  {"DebugFunction", 20, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlock", 21, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLexicalBlockDiscriminator", 22, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugScope", 23, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugNoScope", 24, 0, nullptr, {SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedAt", 25, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugLocalVariable", 26, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_INFO_FLAGS, SPV_OPERAND_TYPE_OPTIONAL_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugInlinedVariable", 27, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugDeclare", 28, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugValue", 29, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugOperation", 30, 0, nullptr, {SPV_OPERAND_TYPE_DEBUG_OPERATION, SPV_OPERAND_TYPE_VARIABLE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}},
-  {"DebugExpression", 31, 0, nullptr, {SPV_OPERAND_TYPE_VARIABLE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroDef", 32, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugMacroUndef", 33, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugImportedEntity", 34, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_DEBUG_IMPORTED_ENTITY, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugSource", 35, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_OPTIONAL_ID, SPV_OPERAND_TYPE_NONE}},
-  {"DebugModuleINTEL", 36, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 7
3rdparty/spirv-tools/include/generated/spv-amd-gcn-shader.insts.inc

@@ -1,7 +0,0 @@
-
-
-static const spv_ext_inst_desc_t spv_amd_gcn_shader_entries[] = {
-  {"CubeFaceIndexAMD", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"CubeFaceCoordAMD", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"TimeAMD", 3, 0, nullptr, {SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 8
3rdparty/spirv-tools/include/generated/spv-amd-shader-ballot.insts.inc

@@ -1,8 +0,0 @@
-
-
-static const spv_ext_inst_desc_t spv_amd_shader_ballot_entries[] = {
-  {"SwizzleInvocationsAMD", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SwizzleInvocationsMaskedAMD", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"WriteInvocationAMD", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"MbcntAMD", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 5
3rdparty/spirv-tools/include/generated/spv-amd-shader-explicit-vertex-parameter.insts.inc

@@ -1,5 +0,0 @@
-
-
-static const spv_ext_inst_desc_t spv_amd_shader_explicit_vertex_parameter_entries[] = {
-  {"InterpolateAtVertexAMD", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 0 - 13
3rdparty/spirv-tools/include/generated/spv-amd-shader-trinary-minmax.insts.inc

@@ -1,13 +0,0 @@
-
-
-static const spv_ext_inst_desc_t spv_amd_shader_trinary_minmax_entries[] = {
-  {"FMin3AMD", 1, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"UMin3AMD", 2, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SMin3AMD", 3, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"FMax3AMD", 4, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"UMax3AMD", 5, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SMax3AMD", 6, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"FMid3AMD", 7, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"UMid3AMD", 8, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}},
-  {"SMid3AMD", 9, 0, nullptr, {SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_ID, SPV_OPERAND_TYPE_NONE}}
-};

+ 4 - 0
3rdparty/spirv-tools/include/spirv-tools/libspirv.h

@@ -340,6 +340,10 @@ typedef enum spv_operand_type_t {
   SPV_OPERAND_TYPE_SHDEBUG100_DEBUG_OPERATION,
   SPV_OPERAND_TYPE_SHDEBUG100_DEBUG_TYPE_QUALIFIER,
 
+  // SPV_ARM_tensors
+  SPV_OPERAND_TYPE_TENSOR_OPERANDS,
+  SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS,
+
   // This is a sentinel value, and does not represent an operand type.
   // It should come last.
   SPV_OPERAND_TYPE_NUM_OPERAND_TYPES,

+ 4 - 0
3rdparty/spirv-tools/source/binary.cpp

@@ -720,6 +720,8 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
     case SPV_OPERAND_TYPE_IMAGE:
     case SPV_OPERAND_TYPE_OPTIONAL_IMAGE:
     case SPV_OPERAND_TYPE_MEMORY_ACCESS:
+    case SPV_OPERAND_TYPE_TENSOR_OPERANDS:
+    case SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS:
     case SPV_OPERAND_TYPE_OPTIONAL_MEMORY_ACCESS:
     case SPV_OPERAND_TYPE_OPTIONAL_RAW_ACCESS_CHAIN_OPERANDS:
     case SPV_OPERAND_TYPE_SELECTION_CONTROL:
@@ -745,6 +747,8 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
       if (type == SPV_OPERAND_TYPE_OPTIONAL_MATRIX_MULTIPLY_ACCUMULATE_OPERANDS)
         parsed_operand.type =
             SPV_OPERAND_TYPE_MATRIX_MULTIPLY_ACCUMULATE_OPERANDS;
+      if (type == SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS)
+        parsed_operand.type = SPV_OPERAND_TYPE_TENSOR_OPERANDS;
 
       // Check validity of set mask bits. Also prepare for operands for those
       // masks if they have any.  To get operand order correct, scan from

+ 1 - 0
3rdparty/spirv-tools/source/opcode.cpp

@@ -262,6 +262,7 @@ int32_t spvOpcodeGeneratesType(spv::Op op) {
     case spv::Op::OpTypeNodePayloadArrayAMDX:
     case spv::Op::OpTypeTensorLayoutNV:
     case spv::Op::OpTypeTensorViewNV:
+    case spv::Op::OpTypeTensorARM:
       return true;
     default:
       // In particular, OpTypeForwardPointer does not generate a type,

+ 5 - 0
3rdparty/spirv-tools/source/operand.cpp

@@ -139,6 +139,9 @@ const char* spvOperandTypeStr(spv_operand_type_t type) {
     case SPV_OPERAND_TYPE_MATRIX_MULTIPLY_ACCUMULATE_OPERANDS:
     case SPV_OPERAND_TYPE_OPTIONAL_MATRIX_MULTIPLY_ACCUMULATE_OPERANDS:
       return "matrix multiply accumulate operands";
+    case SPV_OPERAND_TYPE_TENSOR_OPERANDS:
+    case SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS:
+      return "tensor operands";
     case SPV_OPERAND_TYPE_INITIALIZATION_MODE_QUALIFIER:
       return "initialization mode qualifier";
     case SPV_OPERAND_TYPE_HOST_ACCESS_QUALIFIER:
@@ -366,6 +369,7 @@ bool spvOperandIsConcreteMask(spv_operand_type_t type) {
     case SPV_OPERAND_TYPE_RAW_ACCESS_CHAIN_OPERANDS:
     case SPV_OPERAND_TYPE_COOPERATIVE_MATRIX_REDUCE:
     case SPV_OPERAND_TYPE_TENSOR_ADDRESSING_OPERANDS:
+    case SPV_OPERAND_TYPE_TENSOR_OPERANDS:
       return true;
     default:
       break;
@@ -389,6 +393,7 @@ bool spvOperandIsOptional(spv_operand_type_t type) {
     case SPV_OPERAND_TYPE_OPTIONAL_CIV:
     case SPV_OPERAND_TYPE_OPTIONAL_RAW_ACCESS_CHAIN_OPERANDS:
     case SPV_OPERAND_TYPE_OPTIONAL_FPENCODING:
+    case SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS:
       return true;
     default:
       break;

+ 19 - 4
3rdparty/spirv-tools/source/opt/copy_prop_arrays.cpp

@@ -256,11 +256,14 @@ bool CopyPropagateArrays::HasValidReferencesOnly(Instruction* ptr_inst,
         } else if (use->IsDecoration() || use->opcode() == spv::Op::OpName) {
           return true;
         } else if (use->opcode() == spv::Op::OpStore) {
-          // If we are storing to part of the object it is not an candidate.
+          // If we are storing to part of the object it is not a candidate.
           return ptr_inst->opcode() == spv::Op::OpVariable &&
                  store_inst->GetSingleWordInOperand(kStorePointerInOperand) ==
                      ptr_inst->result_id();
         } else if (IsDebugDeclareOrValue(use)) {
+          // The store does not have to dominate debug instructions. We do not
+          // want debugging info to stop the transformation. It will be fixed
+          // up later.
           return true;
         }
         // Some other instruction.  Be conservative.
@@ -656,6 +659,20 @@ void CopyPropagateArrays::UpdateUses(Instruction* original_ptr_inst,
     uint32_t index = pair.second;
 
     if (use->IsCommonDebugInstr()) {
+      // It is possible that the debug instructions are not dominated by
+      // `new_ptr_inst`. If not, move the debug instruction to just after
+      // `new_ptr_inst`.
+      BasicBlock* store_block = context()->get_instr_block(new_ptr_inst);
+      if (store_block) {
+        Function* function = store_block->GetParent();
+        DominatorAnalysis* dominator_analysis =
+            context()->GetDominatorAnalysis(function);
+        if (!dominator_analysis->Dominates(new_ptr_inst, use)) {
+          assert(dominator_analysis->Dominates(use, new_ptr_inst));
+          use->InsertAfter(new_ptr_inst);
+        }
+      }
+
       switch (use->GetCommonDebugOpcode()) {
         case CommonDebugInfoDebugDeclare: {
           if (new_ptr_inst->opcode() == spv::Op::OpVariable ||
@@ -897,9 +914,7 @@ CopyPropagateArrays::MemoryObject::MemoryObject(Instruction* var_inst,
                                                 iterator begin, iterator end)
     : variable_inst_(var_inst) {
   std::transform(begin, end, std::back_inserter(access_chain_),
-                 [](uint32_t id) {
-                   return AccessChainEntry{true, {id}};
-                 });
+                 [](uint32_t id) { return AccessChainEntry{true, {id}}; });
 }
 
 std::vector<uint32_t> CopyPropagateArrays::MemoryObject::GetAccessIds() const {

+ 15 - 13
3rdparty/spirv-tools/source/opt/redundancy_elimination.cpp

@@ -33,12 +33,7 @@ Pass::Status RedundancyEliminationPass::Process() {
     DominatorTree& dom_tree =
         context()->GetDominatorAnalysis(&func)->GetDomTree();
 
-    // Keeps track of all ids that contain a given value number. We keep
-    // track of multiple values because they could have the same value, but
-    // different decorations.
-    std::map<uint32_t, uint32_t> value_to_ids;
-
-    if (EliminateRedundanciesFrom(dom_tree.GetRoot(), vnTable, value_to_ids)) {
+    if (EliminateRedundanciesFrom(dom_tree.GetRoot(), vnTable)) {
       modified = true;
     }
   }
@@ -46,14 +41,21 @@ Pass::Status RedundancyEliminationPass::Process() {
 }
 
 bool RedundancyEliminationPass::EliminateRedundanciesFrom(
-    DominatorTreeNode* bb, const ValueNumberTable& vnTable,
-    std::map<uint32_t, uint32_t> value_to_ids) {
-  bool modified = EliminateRedundanciesInBB(bb->bb_, vnTable, &value_to_ids);
-
-  for (auto dominated_bb : bb->children_) {
-    modified |= EliminateRedundanciesFrom(dominated_bb, vnTable, value_to_ids);
+    DominatorTreeNode* bb, const ValueNumberTable& vnTable) {
+  struct State {
+    DominatorTreeNode* node;
+    std::map<uint32_t, uint32_t> value_to_id_map;
+  };
+  std::vector<State> todo;
+  todo.push_back({bb, std::map<uint32_t, uint32_t>()});
+  bool modified = false;
+  for (size_t next_node = 0; next_node < todo.size(); next_node++) {
+    modified |= EliminateRedundanciesInBB(todo[next_node].node->bb_, vnTable,
+                                          &todo[next_node].value_to_id_map);
+    for (DominatorTreeNode* child : todo[next_node].node->children_) {
+      todo.push_back({child, todo[next_node].value_to_id_map});
+    }
   }
-
   return modified;
 }
 }  // namespace opt

+ 1 - 2
3rdparty/spirv-tools/source/opt/redundancy_elimination.h

@@ -46,8 +46,7 @@ class RedundancyEliminationPass : public LocalRedundancyEliminationPass {
   //
   // Returns true if at least one instruction is deleted.
   bool EliminateRedundanciesFrom(DominatorTreeNode* bb,
-                                 const ValueNumberTable& vnTable,
-                                 std::map<uint32_t, uint32_t> value_to_ids);
+                                 const ValueNumberTable& vnTable);
 };
 
 }  // namespace opt

+ 2 - 0
3rdparty/spirv-tools/source/text.cpp

@@ -412,6 +412,8 @@ spv_result_t spvTextEncodeOperand(const spvtools::AssemblyGrammar& grammar,
     case SPV_OPERAND_TYPE_LOOP_CONTROL:
     case SPV_OPERAND_TYPE_IMAGE:
     case SPV_OPERAND_TYPE_OPTIONAL_IMAGE:
+    case SPV_OPERAND_TYPE_TENSOR_OPERANDS:
+    case SPV_OPERAND_TYPE_OPTIONAL_TENSOR_OPERANDS:
     case SPV_OPERAND_TYPE_OPTIONAL_MEMORY_ACCESS:
     case SPV_OPERAND_TYPE_OPTIONAL_RAW_ACCESS_CHAIN_OPERANDS:
     case SPV_OPERAND_TYPE_SELECTION_CONTROL:

+ 1 - 0
3rdparty/spirv-tools/source/val/validate.cpp

@@ -367,6 +367,7 @@ spv_result_t ValidateBinaryUsingContextAndValidationState(
     if (auto error = RayReorderNVPass(*vstate, &instruction)) return error;
     if (auto error = MeshShadingPass(*vstate, &instruction)) return error;
     if (auto error = TensorLayoutPass(*vstate, &instruction)) return error;
+    if (auto error = TensorPass(*vstate, &instruction)) return error;
     if (auto error = InvalidTypePass(*vstate, &instruction)) return error;
   }
 

+ 3 - 0
3rdparty/spirv-tools/source/val/validate.h

@@ -223,6 +223,9 @@ spv_result_t RayReorderNVPass(ValidationState_t& _, const Instruction* inst);
 /// Validates correctness of mesh shading instructions.
 spv_result_t MeshShadingPass(ValidationState_t& _, const Instruction* inst);
 
+/// Validates correctness of tensor instructions.
+spv_result_t TensorPass(ValidationState_t& _, const Instruction* inst);
+
 /// Validates correctness of certain special type instructions.
 spv_result_t InvalidTypePass(ValidationState_t& _, const Instruction* inst);
 

+ 148 - 1
3rdparty/spirv-tools/source/val/validate_constants.cpp

@@ -33,12 +33,19 @@ spv_result_t ValidateConstantBool(ValidationState_t& _,
   return SPV_SUCCESS;
 }
 
+bool isCompositeType(const Instruction* inst) {
+  bool is_tensor = inst->opcode() == spv::Op::OpTypeTensorARM;
+  bool tensor_is_shaped = inst->words().size() == 5;
+  return spvOpcodeIsComposite(inst->opcode()) ||
+         (is_tensor && tensor_is_shaped);
+}
+
 spv_result_t ValidateConstantComposite(ValidationState_t& _,
                                        const Instruction* inst) {
   std::string opcode_name = std::string("Op") + spvOpcodeString(inst->opcode());
 
   const auto result_type = _.FindDef(inst->type_id());
-  if (!result_type || !spvOpcodeIsComposite(result_type->opcode())) {
+  if (!result_type || !isCompositeType(result_type)) {
     return _.diag(SPV_ERROR_INVALID_ID, inst)
            << opcode_name << " Result Type <id> "
            << _.getIdName(inst->type_id()) << " is not a composite type.";
@@ -282,6 +289,141 @@ spv_result_t ValidateConstantComposite(ValidationState_t& _,
                << _.getIdName(result_type->id()) << "s component type.";
       }
     } break;
+    case spv::Op::OpTypeTensorARM: {
+      auto inst_element_type =
+          _.FindDef(result_type->GetOperandAs<uint32_t>(1));
+      if (!inst_element_type) {
+        return _.diag(SPV_ERROR_INVALID_ID, result_type)
+               << "Element type is not defined.";
+      }
+      const auto inst_rank = _.FindDef(result_type->GetOperandAs<uint32_t>(2));
+      if (!inst_rank) {
+        return _.diag(SPV_ERROR_INVALID_ID, result_type)
+               << "Rank is not defined.";
+      }
+      const auto inst_shape = _.FindDef(result_type->GetOperandAs<uint32_t>(3));
+      if (!inst_shape) {
+        return _.diag(SPV_ERROR_INVALID_ID, result_type)
+               << "Shape is not defined.";
+      }
+
+      uint64_t rank = 0;
+      _.EvalConstantValUint64(inst_rank->id(), &rank);
+
+      uint64_t outermost_shape = 0;
+      if (_.EvalConstantValUint64(inst_shape->GetOperandAs<uint32_t>(2),
+                                  &outermost_shape) &&
+          (outermost_shape != constituent_count)) {
+        return _.diag(SPV_ERROR_INVALID_ID, inst)
+               << opcode_name
+               << " Constituent count does not match "
+                  "the shape of Result Type <id> "
+               << _.getIdName(result_type->id())
+               << " along its outermost dimension, " << "expected "
+               << outermost_shape << " but got " << constituent_count << ".";
+      }
+
+      for (size_t constituent_index = 2;
+           constituent_index < inst->operands().size(); constituent_index++) {
+        const auto constituent_id =
+            inst->GetOperandAs<uint32_t>(constituent_index);
+        const auto constituent = _.FindDef(constituent_id);
+        if (!constituent ||
+            !spvOpcodeIsConstantOrUndef(constituent->opcode())) {
+          return _.diag(SPV_ERROR_INVALID_ID, inst)
+                 << opcode_name << " Constituent <id> "
+                 << _.getIdName(constituent_id)
+                 << " is not a constant or undef.";
+        }
+        const auto constituent_type = _.FindDef(constituent->type_id());
+        if (!constituent_type) {
+          return _.diag(SPV_ERROR_INVALID_ID, constituent)
+                 << "Type of Constituent " << constituent_index - 2
+                 << " is not defined.";
+        }
+
+        if (rank == 0) {
+          // The rank of the returned tensor constant is not known.
+          // Skip rank-dependent validation.
+          continue;
+        }
+
+        if (rank == 1) {
+          if (inst_element_type->id() != constituent_type->id()) {
+            return _.diag(SPV_ERROR_INVALID_ID, inst)
+                   << opcode_name << " Constituent <id> "
+                   << _.getIdName(constituent_id)
+                   << " type does not match the element type of the tensor ("
+                   << _.getIdName(result_type->id()) << ").";
+          }
+        } else {
+          if (constituent_type->opcode() != spv::Op::OpTypeTensorARM) {
+            return _.diag(SPV_ERROR_INVALID_ID, inst)
+                   << opcode_name << " Constituent <id> "
+                   << _.getIdName(constituent_id)
+                   << " must be an OpTypeTensorARM.";
+          }
+          auto inst_constituent_element_type =
+              _.FindDef(constituent_type->GetOperandAs<uint32_t>(1));
+          if (!inst_constituent_element_type ||
+              inst_constituent_element_type->id() != inst_element_type->id()) {
+            return _.diag(SPV_ERROR_INVALID_ID, inst)
+                   << opcode_name << " Constituent <id> "
+                   << _.getIdName(constituent_id)
+                   << " must have the same Element Type as Result Type <id> "
+                   << _.getIdName(result_type->id()) << ".";
+          }
+          auto inst_constituent_rank =
+              _.FindDef(constituent_type->GetOperandAs<uint32_t>(2));
+          uint64_t constituent_rank;
+          if (inst_constituent_rank &&
+              _.EvalConstantValUint64(inst_constituent_rank->id(),
+                                      &constituent_rank) &&
+              (constituent_rank != rank - 1)) {
+            return _.diag(SPV_ERROR_INVALID_ID, inst)
+                   << opcode_name << " Constituent <id> "
+                   << _.getIdName(constituent_id)
+                   << " must have a Rank that is 1 less than the Rank of "
+                      "Result Type <id> "
+                   << _.getIdName(result_type->id()) << ", expected "
+                   << rank - 1 << " but got " << constituent_rank << ".";
+          }
+
+          auto inst_constituent_shape =
+              _.FindDef(constituent_type->GetOperandAs<uint32_t>(3));
+          if (!inst_constituent_shape) {
+            return _.diag(SPV_ERROR_INVALID_ID, result_type)
+                   << "Shape of Constituent " << constituent_index - 2
+                   << " is not defined.";
+          }
+          for (size_t constituent_shape_index = 2;
+               constituent_shape_index <
+               inst_constituent_shape->operands().size();
+               constituent_shape_index++) {
+            size_t shape_index = constituent_shape_index + 1;
+            uint64_t constituent_shape = 0, shape = 1;
+            if (_.EvalConstantValUint64(
+                    inst_constituent_shape->GetOperandAs<uint32_t>(
+                        constituent_shape_index),
+                    &constituent_shape) &&
+                _.EvalConstantValUint64(
+                    inst_shape->GetOperandAs<uint32_t>(shape_index), &shape) &&
+                (constituent_shape != shape)) {
+              return _.diag(SPV_ERROR_INVALID_ID, inst)
+                     << opcode_name << " Constituent <id> "
+                     << _.getIdName(constituent_id)
+                     << " must have a Shape that matches that of Result Type "
+                        "<id> "
+                     << _.getIdName(result_type->id())
+                     << " along all inner dimensions of Result Type, expected "
+                     << shape << " for dimension "
+                     << constituent_shape_index - 2
+                     << " of Constituent but got " << constituent_shape << ".";
+            }
+          }
+        }
+      }
+    } break;
     default:
       break;
   }
@@ -341,6 +483,11 @@ bool IsTypeNullable(const std::vector<uint32_t>& instruction,
         return false;
       }
       return true;
+    case spv::Op::OpTypeTensorARM: {
+      auto elem_type = _.FindDef(instruction[2]);
+      return (instruction.size() > 4) && elem_type &&
+             IsTypeNullable(elem_type->words(), _);
+    }
     default:
       return false;
   }

+ 1 - 1
3rdparty/spirv-tools/source/val/validate_memory.cpp

@@ -590,7 +590,7 @@ spv_result_t ValidateVariable(ValidationState_t& _, const Instruction* inst) {
       if (pointee && !IsAllowedTypeOrArrayOfSame(
                          _, pointee,
                          {spv::Op::OpTypeImage, spv::Op::OpTypeSampler,
-                          spv::Op::OpTypeSampledImage,
+                          spv::Op::OpTypeSampledImage, spv::Op::OpTypeTensorARM,
                           spv::Op::OpTypeAccelerationStructureKHR})) {
         return _.diag(SPV_ERROR_INVALID_ID, inst)
                << _.VkErrorID(4655) << "UniformConstant OpVariable <id> "

+ 252 - 0
3rdparty/spirv-tools/source/val/validate_tensor.cpp

@@ -0,0 +1,252 @@
+// Copyright (c) 2023-2025 Arm Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Validates correctness of tensor instructions.
+
+#include "source/opcode.h"
+#include "source/val/validate.h"
+#include "source/val/validation_state.h"
+
+namespace spvtools {
+namespace val {
+namespace {
+
+bool IsRankedTensor(ValidationState_t& _, uint32_t id) {
+  auto inst = _.FindDef(id);
+  if (!inst || inst->opcode() != spv::Op::OpTypeTensorARM ||
+      inst->words().size() <= 3) {
+    return false;
+  }
+  return true;
+}
+
+uint64_t GetTensorTypeRank(ValidationState_t& _, uint32_t id) {
+  auto inst = _.FindDef(id);
+  if (!inst || inst->opcode() != spv::Op::OpTypeTensorARM ||
+      inst->words().size() <= 3) {
+    return 0;
+  }
+  uint64_t rank = 0;
+  if (!_.EvalConstantValUint64(inst->word(3), &rank)) {
+    return 0;
+  }
+  return rank;
+}
+
+bool IsScalarTypeOrOrArrayOfScalarType(ValidationState_t& _, uint32_t id) {
+  auto inst = _.FindDef(id);
+  if (!inst) {
+    return false;
+  }
+  return _.IsScalarType(id) || (inst->opcode() == spv::Op::OpTypeArray &&
+                                _.IsScalarType(inst->word(2)));
+}
+
+spv_result_t ValidateTensorRead(ValidationState_t& _, const Instruction* inst) {
+  // Result Type must be a scalar type or array of scalar type.
+  if (!IsScalarTypeOrOrArrayOfScalarType(_, inst->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Result Type to be a scalar type or array of "
+              "scalar type.";
+  }
+
+  // Tensor must be a Ranked Tensor.
+  auto op_tensor = inst->word(3);
+  auto inst_tensor = _.FindDef(op_tensor);
+  if (!inst_tensor || !IsRankedTensor(_, inst_tensor->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Tensor to be an OpTypeTensorARM whose Rank is "
+              "specified";
+  }
+
+  // The scalar type must be the same as the Element Type of Tensor.
+  if (_.GetComponentType(inst_tensor->type_id()) !=
+      _.GetComponentType(inst->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Result Type to be the same as the Element Type of "
+              "Tensor.";
+  }
+
+  // Coordinates is an array whose Element Type must be an integer type and
+  // whose Length must be equal to the Rank of Tensor.
+  auto op_coord = inst->word(4);
+  auto inst_coord = _.FindDef(op_coord);
+  auto tensor_rank = GetTensorTypeRank(_, inst_tensor->type_id());
+  if (tensor_rank == 0 ||
+      !_.IsIntArrayType(inst_coord->type_id(), tensor_rank)) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Coordinates to be an array whose Element Type is an "
+              "integer type and whose Length is equal to the Rank of Tensor.";
+  }
+
+  // Validate Tensor Operands
+  if (inst->words().size() > 5) {
+    auto toperands = static_cast<spv::TensorOperandsMask>(inst->word(5));
+    if ((toperands & spv::TensorOperandsMask::OutOfBoundsValueARM) !=
+        spv::TensorOperandsMask::MaskNone) {
+      if (inst->words().size() < 7) {
+        return _.diag(SPV_ERROR_INVALID_ID, inst)
+               << "A value must be provided after the OutOfBoundsValueARM "
+                  "Tensor Operand.";
+      }
+      auto op_oobval = inst->word(6);
+      auto inst_oobval = _.FindDef(op_oobval);
+      if (_.GetComponentType(inst_tensor->type_id()) !=
+          _.GetComponentType(inst_oobval->type_id())) {
+        return _.diag(SPV_ERROR_INVALID_ID, inst)
+               << "Expected the type of the OutOfBoundsValueARM value to be "
+                  "the same "
+                  "as the Element Type of Tensor.";
+      }
+    }
+    if ((toperands & spv::TensorOperandsMask::MakeElementAvailableARM) !=
+        spv::TensorOperandsMask::MaskNone) {
+      return _.diag(SPV_ERROR_INVALID_DATA, inst)
+             << "MakeElementAvailableARM cannot be used with OpTensorReadARM.";
+    }
+    if (((toperands & spv::TensorOperandsMask::MakeElementVisibleARM) !=
+         spv::TensorOperandsMask::MaskNone) &&
+        ((toperands & spv::TensorOperandsMask::NonPrivateElementARM) ==
+         spv::TensorOperandsMask::MaskNone)) {
+      return _.diag(SPV_ERROR_INVALID_DATA, inst)
+             << "MakeElementAvailableARM requires NonPrivateElementARM.";
+    }
+  }
+
+  return SPV_SUCCESS;
+}
+
+spv_result_t ValidateTensorWrite(ValidationState_t& _,
+                                 const Instruction* inst) {
+  // Tensor must be a Ranked Tensor.
+  auto op_tensor = inst->word(1);
+  auto inst_tensor = _.FindDef(op_tensor);
+  if (!IsRankedTensor(_, inst_tensor->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Tensor to be an OpTypeTensorARM whose Rank is "
+              "specified";
+  }
+
+  // Coordinates is an array whose Element Type must be an integer type and
+  // whose Length must be equal to the Rank of Tensor.
+  auto op_coord = inst->word(2);
+  auto inst_coord = _.FindDef(op_coord);
+  auto tensor_rank = GetTensorTypeRank(_, inst_tensor->type_id());
+  if (tensor_rank == 0 ||
+      !_.IsIntArrayType(inst_coord->type_id(), tensor_rank)) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Coordinates to be an array whose Element Type is an "
+              "integer type and whose Length is equal to the Rank of Tensor.";
+  }
+
+  // Object must be an object of scalar type or array of scalar type.
+  // The scalar type must be the same as the Element Type of Tensor.
+  auto op_object = inst->word(3);
+  auto inst_object = _.FindDef(op_object);
+  if (!IsScalarTypeOrOrArrayOfScalarType(_, inst_object->type_id()) ||
+      (_.GetComponentType(inst_object->type_id()) !=
+       _.GetComponentType(inst_tensor->type_id()))) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Object to be a scalar type or array of scalar "
+              "type that is the same as the Element Type of Tensor.";
+  }
+
+  // Validate Tensor Operands
+  if (inst->words().size() > 5) {
+    auto toperands = static_cast<spv::TensorOperandsMask>(inst->word(4));
+    if ((toperands & spv::TensorOperandsMask::OutOfBoundsValueARM) !=
+        spv::TensorOperandsMask::MaskNone) {
+      return _.diag(SPV_ERROR_INVALID_DATA, inst)
+             << "OutOfBoundsValue Tensor Operand not allowed with "
+                "OpTensorWriteARM.";
+    }
+    if ((toperands & spv::TensorOperandsMask::MakeElementVisibleARM) !=
+        spv::TensorOperandsMask::MaskNone) {
+      return _.diag(SPV_ERROR_INVALID_DATA, inst)
+             << "MakeElementVisibleARM not allowed with OpTensorWriteARM.";
+    }
+    if (((toperands & spv::TensorOperandsMask::MakeElementAvailableARM) !=
+         spv::TensorOperandsMask::MaskNone) &&
+        ((toperands & spv::TensorOperandsMask::NonPrivateElementARM) ==
+         spv::TensorOperandsMask::MaskNone)) {
+      return _.diag(SPV_ERROR_INVALID_DATA, inst)
+             << "MakeElementAvailableARM requires NonPrivateElementARM.";
+    }
+  }
+
+  return SPV_SUCCESS;
+}
+
+spv_result_t ValidateTensorQuerySize(ValidationState_t& _,
+                                     const Instruction* inst) {
+  // Check result type
+  if (!_.IsIntScalarType(inst->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Result Type to be an integer type scalar";
+  }
+
+  // Check Tensor operand
+  auto op_tensor = inst->word(3);
+  auto inst_tensor = _.FindDef(op_tensor);
+  if (!inst_tensor || !IsRankedTensor(_, inst_tensor->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Expected Tensor to be an OpTypeTensorARM whose Rank is "
+              "specified";
+  }
+
+  // Check Dimension operand
+  auto op_dim = inst->word(4);
+  auto inst_dim = _.FindDef(op_dim);
+  if (!spvOpcodeIsConstant(inst_dim->opcode()) ||
+      !_.IsIntScalarType(inst_dim->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Dimension must come from a constant instruction of scalar "
+              "integer type.";
+  }
+
+  auto inst_tensor_type = _.FindDef(inst_tensor->type_id());
+  auto op_tensor_rank = inst_tensor_type->word(3);
+  uint64_t tensor_rank = 0;
+  uint64_t dim;
+  if (_.EvalConstantValUint64(op_tensor_rank, &tensor_rank) &&
+      _.EvalConstantValUint64(op_dim, &dim) && (dim >= tensor_rank)) {
+    return _.diag(SPV_ERROR_INVALID_DATA, inst)
+           << "Dimension (" << dim << ") must be less than the Rank of Tensor ("
+           << tensor_rank << ").";
+  }
+
+  return SPV_SUCCESS;
+}
+
+}  // namespace
+
+// Validates correctness of tensor instructions.
+spv_result_t TensorPass(ValidationState_t& _, const Instruction* inst) {
+  (void)_;
+  const spv::Op opcode = inst->opcode();
+  switch (opcode) {
+    case spv::Op::OpTensorReadARM:
+      return ValidateTensorRead(_, inst);
+    case spv::Op::OpTensorWriteARM:
+      return ValidateTensorWrite(_, inst);
+    case spv::Op::OpTensorQuerySizeARM:
+      return ValidateTensorQuerySize(_, inst);
+    default:
+      break;
+  }
+  return SPV_SUCCESS;
+}
+
+}  // namespace val
+}  // namespace spvtools

+ 79 - 0
3rdparty/spirv-tools/source/val/validate_type.cpp

@@ -875,6 +875,82 @@ spv_result_t ValidateTypeTensorViewNV(ValidationState_t& _,
 
   return SPV_SUCCESS;
 }
+
+spv_result_t ValidateTypeTensorARM(ValidationState_t& _,
+                                   const Instruction* inst) {
+  // Element type must be a scalar type
+  const auto element_type_index = 1;
+  const auto element_type_id = inst->GetOperandAs<uint32_t>(element_type_index);
+  const auto element_type = _.FindDef(element_type_id);
+  if (!element_type || (!_.IsFloatScalarType(element_type_id) &&
+                        !_.IsIntScalarType(element_type_id) &&
+                        !_.IsBoolScalarType(element_type_id))) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Element Type <id> "
+           << _.getIdName(element_type_id) << " is not a scalar type.";
+  }
+
+  if (inst->operands().size() < 3) {
+    return SPV_SUCCESS;
+  }
+
+  // Rank must be constant instruction with scalar integer type
+  const auto rank_index = 2;
+  const auto rank_id = inst->GetOperandAs<uint32_t>(rank_index);
+  const auto rank = _.FindDef(rank_id);
+  if (!rank || !spvOpcodeIsConstant(rank->opcode())) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Rank <id> " << _.getIdName(rank_id)
+           << " is not a constant instruction.";
+  }
+  // Rank must have scalar integer type
+  if (!rank || !_.IsIntScalarType(rank->type_id())) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Rank <id> " << _.getIdName(rank_id)
+           << " does not have a scalar integer type.";
+  }
+  // Rank must be greater than 0
+  uint64_t rank_value = 0;
+  if (_.EvalConstantValUint64(rank_id, &rank_value) && rank_value == 0) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Rank <id> " << _.getIdName(rank_id)
+           << " must define a value greater than 0.";
+  }
+
+  if (inst->operands().size() < 4) {
+    return SPV_SUCCESS;
+  }
+
+  // Shape must be constant instruction
+  const auto shape_index = 3;
+  const auto shape_id = inst->GetOperandAs<uint32_t>(shape_index);
+  const auto shape = _.FindDef(shape_id);
+  if (!shape || !spvOpcodeIsConstant(shape->opcode())) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Shape <id> " << _.getIdName(shape_id)
+           << " is not a constant instruction.";
+  }
+
+  // Shape must be array of integer of length rank
+  if (!_.IsIntArrayType(shape->type_id(), rank_value)) {
+    return _.diag(SPV_ERROR_INVALID_ID, inst)
+           << "OpTypeTensorARM Shape <id> " << _.getIdName(shape_id)
+           << " is not an array of integer type whose Length is equal to Rank.";
+  }
+
+  // Shape constituents must be greater than 0
+  for (size_t i = 2; i < shape->operands().size(); i++) {
+    const auto s_id = shape->GetOperandAs<uint32_t>(i);
+    uint64_t s_val = 0;
+    if (_.EvalConstantValUint64(s_id, &s_val) && s_val == 0) {
+      return _.diag(SPV_ERROR_INVALID_ID, inst)
+             << "OpTypeTensorARM Shape constituent " << i - 2
+             << " is not greater than 0.";
+    }
+  }
+
+  return SPV_SUCCESS;
+}
 }  // namespace
 
 spv_result_t TypePass(ValidationState_t& _, const Instruction* inst) {
@@ -932,6 +1008,9 @@ spv_result_t TypePass(ValidationState_t& _, const Instruction* inst) {
     case spv::Op::OpTypeTensorViewNV:
       if (auto error = ValidateTypeTensorViewNV(_, inst)) return error;
       break;
+    case spv::Op::OpTypeTensorARM:
+      if (auto error = ValidateTypeTensorARM(_, inst)) return error;
+      break;
     default:
       break;
   }

+ 25 - 4
3rdparty/spirv-tools/source/val/validation_state.cpp

@@ -887,6 +887,9 @@ uint32_t ValidationState_t::GetComponentType(uint32_t id) const {
     case spv::Op::OpTypeCooperativeVectorNV:
       return inst->word(2);
 
+    case spv::Op::OpTypeTensorARM:
+      return inst->word(2);
+
     default:
       break;
   }
@@ -947,6 +950,10 @@ bool ValidationState_t::IsVoidType(uint32_t id) const {
   return inst && inst->opcode() == spv::Op::OpTypeVoid;
 }
 
+bool ValidationState_t::IsScalarType(uint32_t id) const {
+  return IsIntScalarType(id) || IsFloatScalarType(id) || IsBoolScalarType(id);
+}
+
 bool ValidationState_t::IsBfloat16ScalarType(uint32_t id) const {
   const Instruction* inst = FindDef(id);
   if (inst && inst->opcode() == spv::Op::OpTypeFloat) {
@@ -1040,17 +1047,31 @@ bool ValidationState_t::IsIntScalarType(uint32_t id) const {
   return inst && inst->opcode() == spv::Op::OpTypeInt;
 }
 
-bool ValidationState_t::IsIntArrayType(uint32_t id) const {
+bool ValidationState_t::IsIntArrayType(uint32_t id, uint64_t length) const {
   const Instruction* inst = FindDef(id);
   if (!inst) {
     return false;
   }
 
-  if (inst->opcode() == spv::Op::OpTypeArray) {
-    return IsIntScalarType(GetComponentType(id));
+  if (inst->opcode() != spv::Op::OpTypeArray) {
+    return false;
   }
 
-  return false;
+  if (!IsIntScalarType(GetComponentType(id))) {
+    return false;
+  }
+
+  if (length != 0) {
+    const auto len_id = inst->GetOperandAs<uint32_t>(2);
+    const auto len = FindDef(len_id);
+    uint64_t len_value = 0;
+    if (!len || !spvOpcodeIsConstant(len->opcode()) ||
+        (EvalConstantValUint64(len_id, &len_value) && (length != len_value))) {
+      return false;
+    }
+  }
+
+  return true;
 }
 
 bool ValidationState_t::IsIntVectorType(uint32_t id) const {

+ 2 - 1
3rdparty/spirv-tools/source/val/validation_state.h

@@ -634,6 +634,7 @@ class ValidationState_t {
   // Returns true iff |id| is a type corresponding to the name of the function.
   // Only works for types not for objects.
   bool IsVoidType(uint32_t id) const;
+  bool IsScalarType(uint32_t id) const;
   bool IsBfloat16ScalarType(uint32_t id) const;
   bool IsBfloat16VectorType(uint32_t id) const;
   bool IsFloatScalarType(uint32_t id) const;
@@ -643,7 +644,7 @@ class ValidationState_t {
   bool IsFloatScalarOrVectorType(uint32_t id) const;
   bool IsFloatMatrixType(uint32_t id) const;
   bool IsIntScalarType(uint32_t id) const;
-  bool IsIntArrayType(uint32_t id) const;
+  bool IsIntArrayType(uint32_t id, uint64_t length = 0) const;
   bool IsIntVectorType(uint32_t id) const;
   bool IsIntScalarOrVectorType(uint32_t id) const;
   bool IsUnsignedIntScalarType(uint32_t id) const;

Некоторые файлы не были показаны из-за большого количества измененных файлов