mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
Updated spirv-tools.
This commit is contained in:
@@ -1 +1 @@
|
||||
"v2025.2", "SPIRV-Tools v2025.2 v2025.2.rc2-29-g9c392f66"
|
||||
"v2025.2", "SPIRV-Tools v2025.2 v2025.2.rc2-38-g4b1de6d5"
|
||||
|
||||
17090
3rdparty/spirv-tools/include/generated/core_tables_body.inc
vendored
17090
3rdparty/spirv-tools/include/generated/core_tables_body.inc
vendored
File diff suppressed because it is too large
Load Diff
@@ -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,
|
||||
|
||||
@@ -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}}
|
||||
};
|
||||
File diff suppressed because one or more lines are too long
@@ -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
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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}}
|
||||
};
|
||||
@@ -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
3rdparty/spirv-tools/source/binary.cpp
vendored
4
3rdparty/spirv-tools/source/binary.cpp
vendored
@@ -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
3rdparty/spirv-tools/source/opcode.cpp
vendored
1
3rdparty/spirv-tools/source/opcode.cpp
vendored
@@ -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
3rdparty/spirv-tools/source/operand.cpp
vendored
5
3rdparty/spirv-tools/source/operand.cpp
vendored
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
3rdparty/spirv-tools/source/text.cpp
vendored
2
3rdparty/spirv-tools/source/text.cpp
vendored
@@ -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
3rdparty/spirv-tools/source/val/validate.cpp
vendored
1
3rdparty/spirv-tools/source/val/validate.cpp
vendored
@@ -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
3rdparty/spirv-tools/source/val/validate.h
vendored
3
3rdparty/spirv-tools/source/val/validate.h
vendored
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
3rdparty/spirv-tools/source/val/validate_tensor.cpp
vendored
Normal file
252
3rdparty/spirv-tools/source/val/validate_tensor.cpp
vendored
Normal file
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user