zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3a48f4bb40d219efc9b96df44850bcedf83f6285 (tree)
parent f4462c0cd74c052ec58e13394c6862955b17b214
Author: Ali Cheraghi <alichraghi@proton.me>
Date:   Thu, 18 Jun 2026 18:51:47 +0330

spirv: drive capability and extension emission from target features

- Emitting `OpCapability` and `OpExtension` from assembly is no longer allowed (tbh it never was because we silently ignored them).
  They now `fail` with a message pointing users at `-mcpu`.

- `tools/gen_spirv_spec.zig` now also emits `Extension` and the `Capability.dependencies()`.
  Also To keep the feature set a reasonable size, the generator filters to an allowlist of `KHR` and `EXT` entries.
  We can decide which vendors to allow later if a use-case is found.

- `tools/update_cpu_features.zig` now uses the generated `spec.zig` and emits a  feature for every
  capability and extension, with the capability's `.deps` populated from `Capability.dependencies()`.

- `Module.finalize`, `Module.entryPoints`, `Module.addCapability`, `Module.addExtension`
  and `sections.capabilities`/`sections.extensions` are deleted.

- Linker now verifies that an `.spv` object declares the `Linkage` capability

Diffstat:
Mbuild.zig | 20++++++++++++++++++++
Mlib/std/Target/spirv.zig | 1785+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Msrc/codegen/spirv/Assembler.zig | 11++---------
Msrc/codegen/spirv/Module.zig | 289+------------------------------------------------------------------------------
Msrc/codegen/spirv/spec.zig | 7053+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc/link/SpirV.zig | 98++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mtest/standalone/build.zig | 7+++++++
Mtools/gen_spirv_spec.zig | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtools/update_cpu_features.zig | 116+++++++++++++++++++++++++++----------------------------------------------------
9 files changed, 6222 insertions(+), 3261 deletions(-)

diff --git a/build.zig b/build.zig @@ -70,6 +70,23 @@ pub fn build(b: *std.Build) !void { b.getInstallStep().dependOn(&install_std_docs.step); } + const update_cpu_features = b.addExecutable(.{ + .name = "update-cpu-features", + .root_module = b.createModule(.{ + .root_source_file = b.path("tools/update_cpu_features.zig"), + .target = b.graph.host, + .imports = &.{.{ + .name = "spirv_spec", + .module = b.createModule(.{ + .root_source_file = b.path("src/codegen/spirv/spec.zig"), + .target = b.graph.host, + }), + }}, + }), + }); + const run_update_cpu_features = b.addRunArtifact(update_cpu_features); + run_update_cpu_features.addPassthruArgs(); + if (flat) { b.installFile("LICENSE", "LICENSE"); b.installFile("README.md", "README.md"); @@ -85,6 +102,9 @@ pub fn build(b: *std.Build) !void { docs_step.dependOn(langref_step); docs_step.dependOn(std_docs_step); + const update_cpu_features_step = b.step("update-cpu-features", "Update CPU Features"); + update_cpu_features_step.dependOn(&run_update_cpu_features.step); + const no_matrix = b.option(bool, "no-matrix", "Limit test matrix to exactly one target configuration") orelse false; const fuzz_only = b.option(bool, "fuzz-only", "Limit test matrix to one target suitable for fuzzing") orelse false; const skip_debug = b.option(bool, "skip-debug", "Main test suite skips debug builds") orelse false; diff --git a/lib/std/Target/spirv.zig b/lib/std/Target/spirv.zig @@ -5,12 +5,225 @@ const CpuFeature = std.Target.Cpu.Feature; const CpuModel = std.Target.Cpu.Model; pub const Feature = enum { - arbitrary_precision_integers, + abort_khr, + addresses, + arithmetic_fence_ext, + atomic_float16add_ext, + atomic_float16min_max_ext, + atomic_float32add_ext, + atomic_float32min_max_ext, + atomic_float64add_ext, + atomic_float64min_max_ext, + atomic_storage, + atomic_storage_ops, + b_float16cooperative_matrix_khr, + b_float16dot_product_khr, + b_float16type_khr, + bit_instructions, + clip_distance, + compute_derivative_group_linear_khr, + compute_derivative_group_quads_khr, + constant_data_khr, + cooperative_matrix_khr, + cull_distance, + demote_to_helper_invocation, + denorm_flush_to_zero, + denorm_preserve, + derivative_control, + descriptor_heap_ext, + device_enqueue, + device_group, + dot_product, + dot_product_input4x8bit, + dot_product_input4x8bit_packed, + dot_product_input_all, + draw_parameters, + expect_assume_khr, float16, + float16buffer, float64, + float8cooperative_matrix_ext, + float8ext, + float_controls2, + fmakhr, + fragment_barycentric_khr, + fragment_density_ext, + fragment_fully_covered_ext, + fragment_shader_pixel_interlock_ext, + fragment_shader_sample_interlock_ext, + fragment_shader_shading_rate_interlock_ext, + fragment_shading_rate_khr, generic_pointer, + geometry, + geometry_point_size, + geometry_streams, + group_non_uniform, + group_non_uniform_arithmetic, + group_non_uniform_ballot, + group_non_uniform_clustered, + group_non_uniform_partitioned_ext, + group_non_uniform_quad, + group_non_uniform_rotate_khr, + group_non_uniform_shuffle, + group_non_uniform_shuffle_relative, + group_non_uniform_vote, + group_uniform_arithmetic_khr, + groups, + image_basic, + image_buffer, + image_cube_array, + image_gather_extended, + image_mipmap, + image_ms_array, + image_query, + image_read_write, + image_rect, + input_attachment, + input_attachment_array_dynamic_indexing, + input_attachment_array_non_uniform_indexing, + int16, int64, + int64atomics, + int64image_ext, + int8, + interpolation_function, + kernel, + linkage, + literal_sampler, + long_vector_ext, + matrix, + mesh_shading_ext, + min_lod, + multi_view, + multi_viewport, + named_barrier, + opt_none_ext, + physical_storage_buffer_addresses, + pipe_storage, + pipes, + poison_freeze_khr, + quad_control_khr, + ray_cull_mask_khr, + ray_query_khr, + ray_query_position_fetch_khr, + ray_query_provisional_khr, + ray_tracing_khr, + ray_tracing_opacity_micromap_ext, + ray_tracing_position_fetch_khr, + ray_tracing_provisional_khr, + ray_traversal_primitive_culling_khr, + replicated_composites_ext, + runtime_descriptor_array, + sample_mask_post_depth_coverage, + sample_rate_shading, + sampled_buffer, + sampled_cube_array, + sampled_image_array_dynamic_indexing, + sampled_image_array_non_uniform_indexing, + sampled_rect, + shader, + shader64bit_indexing_ext, + shader_clock_khr, + shader_invocation_reorder_ext, + shader_layer, + shader_non_uniform, + shader_viewport_index, + shader_viewport_index_layer_ext, + signed_zero_inf_nan_preserve, + sparse_residency, + SPV_EXT_arithmetic_fence, + SPV_EXT_demote_to_helper_invocation, + SPV_EXT_descriptor_heap, + SPV_EXT_descriptor_indexing, + SPV_EXT_float8, + SPV_EXT_fragment_fully_covered, + SPV_EXT_fragment_invocation_density, + SPV_EXT_fragment_shader_interlock, + SPV_EXT_long_vector, + SPV_EXT_mesh_shader, + SPV_EXT_opacity_micromap, + SPV_EXT_optnone, + SPV_EXT_physical_storage_buffer, + SPV_EXT_replicated_composites, + SPV_EXT_shader_64bit_indexing, + SPV_EXT_shader_atomic_float16_add, + SPV_EXT_shader_atomic_float_add, + SPV_EXT_shader_atomic_float_min_max, + SPV_EXT_shader_image_int64, + SPV_EXT_shader_invocation_reorder, + SPV_EXT_shader_stencil_export, + SPV_EXT_shader_subgroup_partitioned, + SPV_EXT_shader_tile_image, + SPV_EXT_shader_viewport_index_layer, + SPV_KHR_16bit_storage, + SPV_KHR_8bit_storage, + SPV_KHR_abort, + SPV_KHR_bfloat16, + SPV_KHR_bit_instructions, + SPV_KHR_compute_shader_derivatives, + SPV_KHR_constant_data, + SPV_KHR_cooperative_matrix, + SPV_KHR_device_group, + SPV_KHR_expect_assume, + SPV_KHR_float_controls, + SPV_KHR_float_controls2, + SPV_KHR_fma, + SPV_KHR_fragment_shader_barycentric, + SPV_KHR_fragment_shading_rate, + SPV_KHR_integer_dot_product, + SPV_KHR_multiview, + SPV_KHR_physical_storage_buffer, + SPV_KHR_poison_freeze, + SPV_KHR_post_depth_coverage, + SPV_KHR_quad_control, + SPV_KHR_ray_cull_mask, + SPV_KHR_ray_query, + SPV_KHR_ray_tracing, + SPV_KHR_ray_tracing_position_fetch, + SPV_KHR_shader_atomic_counter_ops, + SPV_KHR_shader_ballot, + SPV_KHR_shader_clock, + SPV_KHR_shader_draw_parameters, + SPV_KHR_subgroup_rotate, + SPV_KHR_subgroup_vote, + SPV_KHR_uniform_group_instructions, + SPV_KHR_untyped_pointers, + SPV_KHR_variable_pointers, + SPV_KHR_vulkan_memory_model, + SPV_KHR_workgroup_memory_explicit_layout, + stencil_export_ext, + storage_buffer16bit_access, + storage_buffer8bit_access, + storage_buffer_array_dynamic_indexing, + storage_buffer_array_non_uniform_indexing, + storage_image_array_dynamic_indexing, + storage_image_array_non_uniform_indexing, + storage_image_extended_formats, + storage_image_multisample, + storage_image_read_without_format, + storage_image_write_without_format, + storage_input_output16, storage_push_constant16, + storage_push_constant8, + storage_texel_buffer_array_dynamic_indexing, + storage_texel_buffer_array_non_uniform_indexing, + subgroup_ballot_khr, + subgroup_dispatch, + subgroup_vote_khr, + tessellation, + tessellation_point_size, + tile_image_color_read_access_ext, + tile_image_depth_read_access_ext, + tile_image_stencil_read_access_ext, + transform_feedback, + uniform_and_storage_buffer16bit_access, + uniform_and_storage_buffer8bit_access, + uniform_buffer_array_dynamic_indexing, + uniform_buffer_array_non_uniform_indexing, + uniform_decoration, + uniform_texel_buffer_array_dynamic_indexing, + uniform_texel_buffer_array_non_uniform_indexing, + untyped_pointers_khr, v1_0, v1_1, v1_2, @@ -19,7 +232,13 @@ pub const Feature = enum { v1_5, v1_6, variable_pointers, + variable_pointers_storage_buffer, vector16, + vulkan_memory_model, + vulkan_memory_model_device_scope, + workgroup_memory_explicit_layout16bit_access_khr, + workgroup_memory_explicit_layout8bit_access_khr, + workgroup_memory_explicit_layout_khr, }; pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet; @@ -32,106 +251,1608 @@ pub const all_features = blk: { const len = @typeInfo(Feature).@"enum".field_names.len; std.debug.assert(len <= CpuFeature.Set.needed_bit_count); var result: [len]CpuFeature = undefined; - result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{ + result[@intFromEnum(Feature.abort_khr)] = .{ .llvm_name = null, - .description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability", + .description = "Enable abort_khr Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_abort, + .v1_0, + }), + }; + result[@intFromEnum(Feature.addresses)] = .{ + .llvm_name = null, + .description = "Enable addresses Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.arithmetic_fence_ext)] = .{ + .llvm_name = null, + .description = "Enable arithmetic_fence_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_arithmetic_fence, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float16add_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float16add_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float16_add, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float16min_max_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float16min_max_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float_min_max, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float32add_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float32add_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float_add, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float32min_max_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float32min_max_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float_min_max, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float64add_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float64add_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float_add, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_float64min_max_ext)] = .{ + .llvm_name = null, + .description = "Enable atomic_float64min_max_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_atomic_float_min_max, + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_storage)] = .{ + .llvm_name = null, + .description = "Enable atomic_storage Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.atomic_storage_ops)] = .{ + .llvm_name = null, + .description = "Enable atomic_storage_ops Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_shader_atomic_counter_ops, + .v1_0, + }), + }; + result[@intFromEnum(Feature.b_float16cooperative_matrix_khr)] = .{ + .llvm_name = null, + .description = "Enable b_float16cooperative_matrix_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_bfloat16, + .v1_0, + }), + }; + result[@intFromEnum(Feature.b_float16dot_product_khr)] = .{ + .llvm_name = null, + .description = "Enable b_float16dot_product_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_bfloat16, + .v1_0, + }), + }; + result[@intFromEnum(Feature.b_float16type_khr)] = .{ + .llvm_name = null, + .description = "Enable b_float16type_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_bfloat16, + .v1_0, + }), + }; + result[@intFromEnum(Feature.bit_instructions)] = .{ + .llvm_name = null, + .description = "Enable bit_instructions Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_bit_instructions, + .v1_0, + }), + }; + result[@intFromEnum(Feature.clip_distance)] = .{ + .llvm_name = null, + .description = "Enable clip_distance Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.compute_derivative_group_linear_khr)] = .{ + .llvm_name = null, + .description = "Enable compute_derivative_group_linear_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_compute_shader_derivatives, + .v1_0, + }), + }; + result[@intFromEnum(Feature.compute_derivative_group_quads_khr)] = .{ + .llvm_name = null, + .description = "Enable compute_derivative_group_quads_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_compute_shader_derivatives, + .v1_0, + }), + }; + result[@intFromEnum(Feature.constant_data_khr)] = .{ + .llvm_name = null, + .description = "Enable constant_data_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_constant_data, + .v1_0, + }), + }; + result[@intFromEnum(Feature.cooperative_matrix_khr)] = .{ + .llvm_name = null, + .description = "Enable cooperative_matrix_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_cooperative_matrix, + .v1_0, + }), + }; + result[@intFromEnum(Feature.cull_distance)] = .{ + .llvm_name = null, + .description = "Enable cull_distance Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.demote_to_helper_invocation)] = .{ + .llvm_name = null, + .description = "Enable demote_to_helper_invocation Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_demote_to_helper_invocation, + .v1_6, + }), + }; + result[@intFromEnum(Feature.denorm_flush_to_zero)] = .{ + .llvm_name = null, + .description = "Enable denorm_flush_to_zero Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_float_controls, + .v1_4, + }), + }; + result[@intFromEnum(Feature.denorm_preserve)] = .{ + .llvm_name = null, + .description = "Enable denorm_preserve Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_float_controls, + .v1_4, + }), + }; + result[@intFromEnum(Feature.derivative_control)] = .{ + .llvm_name = null, + .description = "Enable derivative_control Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.descriptor_heap_ext)] = .{ + .llvm_name = null, + .description = "Enable descriptor_heap_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_heap, + .v1_0, + }), + }; + result[@intFromEnum(Feature.device_enqueue)] = .{ + .llvm_name = null, + .description = "Enable device_enqueue Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.device_group)] = .{ + .llvm_name = null, + .description = "Enable device_group Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_device_group, + .v1_3, + }), + }; + result[@intFromEnum(Feature.dot_product)] = .{ + .llvm_name = null, + .description = "Enable dot_product Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_integer_dot_product, + .v1_6, + }), + }; + result[@intFromEnum(Feature.dot_product_input4x8bit)] = .{ + .llvm_name = null, + .description = "Enable dot_product_input4x8bit Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_integer_dot_product, + .v1_6, + }), + }; + result[@intFromEnum(Feature.dot_product_input4x8bit_packed)] = .{ + .llvm_name = null, + .description = "Enable dot_product_input4x8bit_packed Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_integer_dot_product, + .v1_6, + }), + }; + result[@intFromEnum(Feature.dot_product_input_all)] = .{ + .llvm_name = null, + .description = "Enable dot_product_input_all Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_integer_dot_product, + .v1_6, + }), + }; + result[@intFromEnum(Feature.draw_parameters)] = .{ + .llvm_name = null, + .description = "Enable draw_parameters Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_shader_draw_parameters, + .v1_3, + }), + }; + result[@intFromEnum(Feature.expect_assume_khr)] = .{ + .llvm_name = null, + .description = "Enable expect_assume_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_expect_assume, + .v1_0, + }), + }; + result[@intFromEnum(Feature.float16)] = .{ + .llvm_name = null, + .description = "Enable float16 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.float16buffer)] = .{ + .llvm_name = null, + .description = "Enable float16buffer Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.float64)] = .{ + .llvm_name = null, + .description = "Enable float64 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.float8cooperative_matrix_ext)] = .{ + .llvm_name = null, + .description = "Enable float8cooperative_matrix_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_float8, + .v1_0, + }), + }; + result[@intFromEnum(Feature.float8ext)] = .{ + .llvm_name = null, + .description = "Enable float8ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_float8, + .v1_0, + }), + }; + result[@intFromEnum(Feature.float_controls2)] = .{ + .llvm_name = null, + .description = "Enable float_controls2 Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_float_controls2, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fmakhr)] = .{ + .llvm_name = null, + .description = "Enable fmakhr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_fma, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_barycentric_khr)] = .{ + .llvm_name = null, + .description = "Enable fragment_barycentric_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_fragment_shader_barycentric, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_density_ext)] = .{ + .llvm_name = null, + .description = "Enable fragment_density_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_fragment_invocation_density, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_fully_covered_ext)] = .{ + .llvm_name = null, + .description = "Enable fragment_fully_covered_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_fragment_fully_covered, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_shader_pixel_interlock_ext)] = .{ + .llvm_name = null, + .description = "Enable fragment_shader_pixel_interlock_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_fragment_shader_interlock, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_shader_sample_interlock_ext)] = .{ + .llvm_name = null, + .description = "Enable fragment_shader_sample_interlock_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_fragment_shader_interlock, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_shader_shading_rate_interlock_ext)] = .{ + .llvm_name = null, + .description = "Enable fragment_shader_shading_rate_interlock_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_fragment_shader_interlock, + .v1_0, + }), + }; + result[@intFromEnum(Feature.fragment_shading_rate_khr)] = .{ + .llvm_name = null, + .description = "Enable fragment_shading_rate_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_fragment_shading_rate, + .v1_0, + }), + }; + result[@intFromEnum(Feature.generic_pointer)] = .{ + .llvm_name = null, + .description = "Enable generic_pointer Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.geometry)] = .{ + .llvm_name = null, + .description = "Enable geometry Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.geometry_point_size)] = .{ + .llvm_name = null, + .description = "Enable geometry_point_size Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.geometry_streams)] = .{ + .llvm_name = null, + .description = "Enable geometry_streams Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.group_non_uniform)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_arithmetic)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_arithmetic Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_ballot)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_ballot Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_clustered)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_clustered Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_partitioned_ext)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_partitioned_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_subgroup_partitioned, + .v1_0, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_quad)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_quad Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_rotate_khr)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_rotate_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_subgroup_rotate, + .v1_0, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_shuffle)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_shuffle Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_shuffle_relative)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_shuffle_relative Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_non_uniform_vote)] = .{ + .llvm_name = null, + .description = "Enable group_non_uniform_vote Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), + }; + result[@intFromEnum(Feature.group_uniform_arithmetic_khr)] = .{ + .llvm_name = null, + .description = "Enable group_uniform_arithmetic_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_uniform_group_instructions, + .v1_0, + }), + }; + result[@intFromEnum(Feature.groups)] = .{ + .llvm_name = null, + .description = "Enable groups Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_basic)] = .{ + .llvm_name = null, + .description = "Enable image_basic Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_buffer)] = .{ + .llvm_name = null, + .description = "Enable image_buffer Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_cube_array)] = .{ + .llvm_name = null, + .description = "Enable image_cube_array Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_gather_extended)] = .{ + .llvm_name = null, + .description = "Enable image_gather_extended Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_mipmap)] = .{ + .llvm_name = null, + .description = "Enable image_mipmap Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_ms_array)] = .{ + .llvm_name = null, + .description = "Enable image_ms_array Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_query)] = .{ + .llvm_name = null, + .description = "Enable image_query Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_read_write)] = .{ + .llvm_name = null, + .description = "Enable image_read_write Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.image_rect)] = .{ + .llvm_name = null, + .description = "Enable image_rect Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.input_attachment)] = .{ + .llvm_name = null, + .description = "Enable input_attachment Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.input_attachment_array_dynamic_indexing)] = .{ + .llvm_name = null, + .description = "Enable input_attachment_array_dynamic_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.input_attachment_array_non_uniform_indexing)] = .{ + .llvm_name = null, + .description = "Enable input_attachment_array_non_uniform_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.int16)] = .{ + .llvm_name = null, + .description = "Enable int16 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.int64)] = .{ + .llvm_name = null, + .description = "Enable int64 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.int64atomics)] = .{ + .llvm_name = null, + .description = "Enable int64atomics Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.int64image_ext)] = .{ + .llvm_name = null, + .description = "Enable int64image_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_image_int64, + .v1_0, + }), + }; + result[@intFromEnum(Feature.int8)] = .{ + .llvm_name = null, + .description = "Enable int8 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.interpolation_function)] = .{ + .llvm_name = null, + .description = "Enable interpolation_function Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.kernel)] = .{ + .llvm_name = null, + .description = "Enable kernel Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.linkage)] = .{ + .llvm_name = null, + .description = "Enable linkage Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.literal_sampler)] = .{ + .llvm_name = null, + .description = "Enable literal_sampler Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.long_vector_ext)] = .{ + .llvm_name = null, + .description = "Enable long_vector_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_long_vector, + .v1_0, + }), + }; + result[@intFromEnum(Feature.matrix)] = .{ + .llvm_name = null, + .description = "Enable matrix Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.mesh_shading_ext)] = .{ + .llvm_name = null, + .description = "Enable mesh_shading_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_mesh_shader, + .v1_0, + }), + }; + result[@intFromEnum(Feature.min_lod)] = .{ + .llvm_name = null, + .description = "Enable min_lod Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.multi_view)] = .{ + .llvm_name = null, + .description = "Enable multi_view Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_multiview, + .v1_3, + }), + }; + result[@intFromEnum(Feature.multi_viewport)] = .{ + .llvm_name = null, + .description = "Enable multi_viewport Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.named_barrier)] = .{ + .llvm_name = null, + .description = "Enable named_barrier Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_1, + }), + }; + result[@intFromEnum(Feature.opt_none_ext)] = .{ + .llvm_name = null, + .description = "Enable opt_none_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_optnone, + .v1_0, + }), + }; + result[@intFromEnum(Feature.physical_storage_buffer_addresses)] = .{ + .llvm_name = null, + .description = "Enable physical_storage_buffer_addresses Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_physical_storage_buffer, + .SPV_KHR_physical_storage_buffer, + .v1_5, + }), + }; + result[@intFromEnum(Feature.pipe_storage)] = .{ + .llvm_name = null, + .description = "Enable pipe_storage Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_1, + }), + }; + result[@intFromEnum(Feature.pipes)] = .{ + .llvm_name = null, + .description = "Enable pipes Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.poison_freeze_khr)] = .{ + .llvm_name = null, + .description = "Enable poison_freeze_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_poison_freeze, + .v1_0, + }), + }; + result[@intFromEnum(Feature.quad_control_khr)] = .{ + .llvm_name = null, + .description = "Enable quad_control_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_quad_control, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_cull_mask_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_cull_mask_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_cull_mask, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_query_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_query_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_query, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_query_position_fetch_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_query_position_fetch_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_tracing_position_fetch, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_query_provisional_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_query_provisional_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_query, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_tracing_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_tracing_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_tracing, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_tracing_opacity_micromap_ext)] = .{ + .llvm_name = null, + .description = "Enable ray_tracing_opacity_micromap_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_opacity_micromap, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_tracing_position_fetch_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_tracing_position_fetch_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_tracing_position_fetch, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_tracing_provisional_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_tracing_provisional_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_tracing, + .v1_0, + }), + }; + result[@intFromEnum(Feature.ray_traversal_primitive_culling_khr)] = .{ + .llvm_name = null, + .description = "Enable ray_traversal_primitive_culling_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_ray_query, + .SPV_KHR_ray_tracing, + .v1_0, + }), + }; + result[@intFromEnum(Feature.replicated_composites_ext)] = .{ + .llvm_name = null, + .description = "Enable replicated_composites_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_replicated_composites, + .v1_0, + }), + }; + result[@intFromEnum(Feature.runtime_descriptor_array)] = .{ + .llvm_name = null, + .description = "Enable runtime_descriptor_array Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.sample_mask_post_depth_coverage)] = .{ + .llvm_name = null, + .description = "Enable sample_mask_post_depth_coverage Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_post_depth_coverage, + .v1_0, + }), + }; + result[@intFromEnum(Feature.sample_rate_shading)] = .{ + .llvm_name = null, + .description = "Enable sample_rate_shading Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.sampled_buffer)] = .{ + .llvm_name = null, + .description = "Enable sampled_buffer Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.sampled_cube_array)] = .{ + .llvm_name = null, + .description = "Enable sampled_cube_array Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.sampled_image_array_dynamic_indexing)] = .{ + .llvm_name = null, + .description = "Enable sampled_image_array_dynamic_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.sampled_image_array_non_uniform_indexing)] = .{ + .llvm_name = null, + .description = "Enable sampled_image_array_non_uniform_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.sampled_rect)] = .{ + .llvm_name = null, + .description = "Enable sampled_rect Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader)] = .{ + .llvm_name = null, + .description = "Enable shader Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader64bit_indexing_ext)] = .{ + .llvm_name = null, + .description = "Enable shader64bit_indexing_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_64bit_indexing, + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader_clock_khr)] = .{ + .llvm_name = null, + .description = "Enable shader_clock_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_shader_clock, + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader_invocation_reorder_ext)] = .{ + .llvm_name = null, + .description = "Enable shader_invocation_reorder_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_invocation_reorder, + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader_layer)] = .{ + .llvm_name = null, + .description = "Enable shader_layer Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_5, + }), + }; + result[@intFromEnum(Feature.shader_non_uniform)] = .{ + .llvm_name = null, + .description = "Enable shader_non_uniform Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.shader_viewport_index)] = .{ + .llvm_name = null, + .description = "Enable shader_viewport_index Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_5, + }), + }; + result[@intFromEnum(Feature.shader_viewport_index_layer_ext)] = .{ + .llvm_name = null, + .description = "Enable shader_viewport_index_layer_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_viewport_index_layer, + .v1_0, + }), + }; + result[@intFromEnum(Feature.signed_zero_inf_nan_preserve)] = .{ + .llvm_name = null, + .description = "Enable signed_zero_inf_nan_preserve Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_float_controls, + .v1_4, + }), + }; + result[@intFromEnum(Feature.sparse_residency)] = .{ + .llvm_name = null, + .description = "Enable sparse_residency Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.SPV_EXT_arithmetic_fence)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_arithmetic_fence Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_demote_to_helper_invocation)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_demote_to_helper_invocation Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_descriptor_heap)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_descriptor_heap Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_descriptor_indexing)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_descriptor_indexing Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_float8)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_float8 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_fragment_fully_covered)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_fragment_fully_covered Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_fragment_invocation_density)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_fragment_invocation_density Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_fragment_shader_interlock)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_fragment_shader_interlock Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_long_vector)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_long_vector Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_mesh_shader)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_mesh_shader Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_opacity_micromap)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_opacity_micromap Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_optnone)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_optnone Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_physical_storage_buffer)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_physical_storage_buffer Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_replicated_composites)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_replicated_composites Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_64bit_indexing)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_64bit_indexing Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float16_add)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_atomic_float16_add Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_add)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_atomic_float_add Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_atomic_float_min_max Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_image_int64)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_image_int64 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_invocation_reorder)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_invocation_reorder Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_stencil_export)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_stencil_export Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_subgroup_partitioned)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_subgroup_partitioned Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_tile_image)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_tile_image Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_EXT_shader_viewport_index_layer)] = .{ + .llvm_name = null, + .description = "Enable SPV_EXT_shader_viewport_index_layer Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_16bit_storage)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_16bit_storage Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_8bit_storage)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_8bit_storage Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_abort)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_abort Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_bfloat16)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_bfloat16 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_bit_instructions)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_bit_instructions Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_compute_shader_derivatives)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_compute_shader_derivatives Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_constant_data)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_constant_data Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_cooperative_matrix)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_cooperative_matrix Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_device_group)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_device_group Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_expect_assume)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_expect_assume Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_float_controls)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_float_controls Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_float_controls2)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_float_controls2 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_fma)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_fma Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_fragment_shader_barycentric)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_fragment_shader_barycentric Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_fragment_shading_rate)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_fragment_shading_rate Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_integer_dot_product)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_integer_dot_product Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_multiview)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_multiview Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_physical_storage_buffer)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_physical_storage_buffer Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_poison_freeze)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_poison_freeze Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_post_depth_coverage)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_post_depth_coverage Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_quad_control)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_quad_control Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_ray_cull_mask)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_ray_cull_mask Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_ray_query)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_ray_query Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_ray_tracing)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_ray_tracing Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_ray_tracing_position_fetch)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_ray_tracing_position_fetch Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_shader_atomic_counter_ops Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_shader_ballot)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_shader_ballot Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_shader_clock)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_shader_clock Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_shader_draw_parameters)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_shader_draw_parameters Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_subgroup_rotate)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_subgroup_rotate Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_subgroup_vote)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_subgroup_vote Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_uniform_group_instructions)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_uniform_group_instructions Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_untyped_pointers)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_untyped_pointers Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_variable_pointers)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_variable_pointers Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_vulkan_memory_model)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_vulkan_memory_model Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_workgroup_memory_explicit_layout Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.stencil_export_ext)] = .{ + .llvm_name = null, + .description = "Enable stencil_export_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_stencil_export, + .v1_0, + }), + }; + result[@intFromEnum(Feature.storage_buffer16bit_access)] = .{ + .llvm_name = null, + .description = "Enable storage_buffer16bit_access Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_16bit_storage, + .v1_3, + }), + }; + result[@intFromEnum(Feature.storage_buffer8bit_access)] = .{ + .llvm_name = null, + .description = "Enable storage_buffer8bit_access Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_8bit_storage, .v1_5, }), }; - result[@intFromEnum(Feature.float16)] = .{ + result[@intFromEnum(Feature.storage_buffer_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable Float16 capability", + .description = "Enable storage_buffer_array_dynamic_indexing Capability.", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; - result[@intFromEnum(Feature.float64)] = .{ + result[@intFromEnum(Feature.storage_buffer_array_non_uniform_indexing)] = .{ + .llvm_name = null, + .description = "Enable storage_buffer_array_non_uniform_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.storage_image_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable Float64 capability", + .description = "Enable storage_image_array_dynamic_indexing Capability.", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; - result[@intFromEnum(Feature.generic_pointer)] = .{ + result[@intFromEnum(Feature.storage_image_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable GenericPointer capability", + .description = "Enable storage_image_array_non_uniform_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.storage_image_extended_formats)] = .{ + .llvm_name = null, + .description = "Enable storage_image_extended_formats Capability.", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; - result[@intFromEnum(Feature.int64)] = .{ + result[@intFromEnum(Feature.storage_image_multisample)] = .{ + .llvm_name = null, + .description = "Enable storage_image_multisample Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.storage_image_read_without_format)] = .{ + .llvm_name = null, + .description = "Enable storage_image_read_without_format Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.storage_image_write_without_format)] = .{ .llvm_name = null, - .description = "Enable Int64 capability", + .description = "Enable storage_image_write_without_format Capability.", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; + result[@intFromEnum(Feature.storage_input_output16)] = .{ + .llvm_name = null, + .description = "Enable storage_input_output16 Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_16bit_storage, + .v1_3, + }), + }; result[@intFromEnum(Feature.storage_push_constant16)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability", + .description = "Enable storage_push_constant16 Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_16bit_storage, .v1_3, }), }; - result[@intFromEnum(Feature.v1_0)] = .{ + result[@intFromEnum(Feature.storage_push_constant8)] = .{ .llvm_name = null, - .description = "Enable version 1.0", - .dependencies = featureSet(&[_]Feature{}), + .description = "Enable storage_push_constant8 Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_8bit_storage, + .v1_5, + }), }; - result[@intFromEnum(Feature.v1_1)] = .{ + result[@intFromEnum(Feature.storage_texel_buffer_array_dynamic_indexing)] = .{ + .llvm_name = null, + .description = "Enable storage_texel_buffer_array_dynamic_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.storage_texel_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable version 1.1", + .description = "Enable storage_texel_buffer_array_non_uniform_indexing Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.subgroup_ballot_khr)] = .{ + .llvm_name = null, + .description = "Enable subgroup_ballot_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_shader_ballot, .v1_0, }), }; - result[@intFromEnum(Feature.v1_2)] = .{ + result[@intFromEnum(Feature.subgroup_dispatch)] = .{ .llvm_name = null, - .description = "Enable version 1.2", + .description = "Enable subgroup_dispatch Capability.", .dependencies = featureSet(&[_]Feature{ .v1_1, }), }; - result[@intFromEnum(Feature.v1_3)] = .{ + result[@intFromEnum(Feature.subgroup_vote_khr)] = .{ .llvm_name = null, - .description = "Enable version 1.3", + .description = "Enable subgroup_vote_khr Capability.", .dependencies = featureSet(&[_]Feature{ - .v1_2, + .SPV_KHR_subgroup_vote, + .v1_0, }), }; - result[@intFromEnum(Feature.v1_4)] = .{ + result[@intFromEnum(Feature.tessellation)] = .{ + .llvm_name = null, + .description = "Enable tessellation Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.tessellation_point_size)] = .{ + .llvm_name = null, + .description = "Enable tessellation_point_size Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.tile_image_color_read_access_ext)] = .{ + .llvm_name = null, + .description = "Enable tile_image_color_read_access_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_tile_image, + .v1_0, + }), + }; + result[@intFromEnum(Feature.tile_image_depth_read_access_ext)] = .{ + .llvm_name = null, + .description = "Enable tile_image_depth_read_access_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_tile_image, + .v1_0, + }), + }; + result[@intFromEnum(Feature.tile_image_stencil_read_access_ext)] = .{ + .llvm_name = null, + .description = "Enable tile_image_stencil_read_access_ext Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_shader_tile_image, + .v1_0, + }), + }; + result[@intFromEnum(Feature.transform_feedback)] = .{ + .llvm_name = null, + .description = "Enable transform_feedback Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.uniform_and_storage_buffer16bit_access)] = .{ .llvm_name = null, - .description = "Enable version 1.4", + .description = "Enable uniform_and_storage_buffer16bit_access Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_16bit_storage, .v1_3, }), }; - result[@intFromEnum(Feature.v1_5)] = .{ + result[@intFromEnum(Feature.uniform_and_storage_buffer8bit_access)] = .{ .llvm_name = null, - .description = "Enable version 1.5", + .description = "Enable uniform_and_storage_buffer8bit_access Capability.", .dependencies = featureSet(&[_]Feature{ - .v1_4, + .SPV_KHR_8bit_storage, + .v1_5, }), }; - result[@intFromEnum(Feature.v1_6)] = .{ + result[@intFromEnum(Feature.uniform_buffer_array_dynamic_indexing)] = .{ + .llvm_name = null, + .description = "Enable uniform_buffer_array_dynamic_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.uniform_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable version 1.6", + .description = "Enable uniform_buffer_array_non_uniform_indexing Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, .v1_5, }), }; - result[@intFromEnum(Feature.variable_pointers)] = .{ + result[@intFromEnum(Feature.uniform_decoration)] = .{ + .llvm_name = null, + .description = "Enable uniform_decoration Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_6, + }), + }; + result[@intFromEnum(Feature.uniform_texel_buffer_array_dynamic_indexing)] = .{ + .llvm_name = null, + .description = "Enable uniform_texel_buffer_array_dynamic_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.uniform_texel_buffer_array_non_uniform_indexing)] = .{ + .llvm_name = null, + .description = "Enable uniform_texel_buffer_array_non_uniform_indexing Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_EXT_descriptor_indexing, + .v1_5, + }), + }; + result[@intFromEnum(Feature.untyped_pointers_khr)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_variable_pointers extension and the VariablePointers capability", + .description = "Enable untyped_pointers_khr Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_untyped_pointers, .v1_0, }), }; + result[@intFromEnum(Feature.v1_0)] = .{ + .llvm_name = null, + .description = "Enable v1_0 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_1)] = .{ + .llvm_name = null, + .description = "Enable v1_1 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_2)] = .{ + .llvm_name = null, + .description = "Enable v1_2 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_3)] = .{ + .llvm_name = null, + .description = "Enable v1_3 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_4)] = .{ + .llvm_name = null, + .description = "Enable v1_4 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_5)] = .{ + .llvm_name = null, + .description = "Enable v1_5 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.v1_6)] = .{ + .llvm_name = null, + .description = "Enable v1_6 Extension.", + .dependencies = featureSet(&[_]Feature{}), + }; + result[@intFromEnum(Feature.variable_pointers)] = .{ + .llvm_name = null, + .description = "Enable variable_pointers Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_variable_pointers, + .v1_3, + }), + }; + result[@intFromEnum(Feature.variable_pointers_storage_buffer)] = .{ + .llvm_name = null, + .description = "Enable variable_pointers_storage_buffer Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_variable_pointers, + .v1_3, + }), + }; result[@intFromEnum(Feature.vector16)] = .{ .llvm_name = null, - .description = "Enable Vector16 capability", + .description = "Enable vector16 Capability.", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.vulkan_memory_model)] = .{ + .llvm_name = null, + .description = "Enable vulkan_memory_model Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_vulkan_memory_model, + .v1_5, + }), + }; + result[@intFromEnum(Feature.vulkan_memory_model_device_scope)] = .{ + .llvm_name = null, + .description = "Enable vulkan_memory_model_device_scope Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_vulkan_memory_model, + .v1_5, + }), + }; + result[@intFromEnum(Feature.workgroup_memory_explicit_layout16bit_access_khr)] = .{ + .llvm_name = null, + .description = "Enable workgroup_memory_explicit_layout16bit_access_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_workgroup_memory_explicit_layout, + .v1_0, + }), + }; + result[@intFromEnum(Feature.workgroup_memory_explicit_layout8bit_access_khr)] = .{ + .llvm_name = null, + .description = "Enable workgroup_memory_explicit_layout8bit_access_khr Capability.", + .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_workgroup_memory_explicit_layout, + .v1_0, + }), + }; + result[@intFromEnum(Feature.workgroup_memory_explicit_layout_khr)] = .{ + .llvm_name = null, + .description = "Enable workgroup_memory_explicit_layout_khr Capability.", .dependencies = featureSet(&[_]Feature{ + .SPV_KHR_workgroup_memory_explicit_layout, .v1_0, }), }; diff --git a/src/codegen/spirv/Assembler.zig b/src/codegen/spirv/Assembler.zig @@ -167,15 +167,8 @@ fn processInstruction(ass: *Assembler) !void { .OpExecutionMode, .OpExecutionModeId => { return ass.fail(ass.currentToken().start, "cannot set execution mode in assembly", .{}); }, - .OpCapability => { - try module.addCapability(@enumFromInt(ass.inst.operands.items[0].value)); - return; - }, - .OpExtension => { - const ext_name_offset = ass.inst.operands.items[0].string; - const ext_name = std.mem.sliceTo(ass.inst.string_bytes.items[ext_name_offset..], 0); - try module.addExtension(ext_name); - return; + .OpCapability, .OpExtension => { + return ass.fail(ass.currentToken().start, "cannot declare capabilities or extensions in assembly; use -mcpu instead", .{}); }, .OpExtInstImport => blk: { const set_name_offset = ass.inst.operands.items[1].string; diff --git a/src/codegen/spirv/Module.zig b/src/codegen/spirv/Module.zig @@ -61,8 +61,6 @@ cache: struct { struct_types: std.array_hash_map.Custom(StructType, Id, StructType.HashContext, true) = .empty, fn_types: std.array_hash_map.Custom(FnType, Id, FnType.HashContext, true) = .empty, - capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty, - extensions: std.StringHashMapUnmanaged(void) = .empty, extended_instruction_set: std.AutoHashMapUnmanaged(spec.InstructionSet, Id) = .empty, decorations: std.AutoHashMapUnmanaged(struct { Id, spec.Decoration }, void) = .empty, builtins: std.AutoHashMapUnmanaged(struct { spec.BuiltIn, spec.StorageClass }, Decl.Index) = .empty, @@ -75,8 +73,6 @@ cache: struct { } = .{}, /// Module layout, according to SPIR-V Spec section 2.4, "Logical Layout of a Module". sections: struct { - capabilities: Section = .{}, - extensions: Section = .{}, extended_instruction_set: Section = .{}, memory_model: Section = .{}, execution_modes: Section = .{}, @@ -211,8 +207,6 @@ pub fn deinit(module: *Module) void { module.intern_map.deinit(module.gpa); module.ptr_types.deinit(module.gpa); - module.sections.capabilities.deinit(module.gpa); - module.sections.extensions.deinit(module.gpa); module.sections.extended_instruction_set.deinit(module.gpa); module.sections.memory_model.deinit(module.gpa); module.sections.execution_modes.deinit(module.gpa); @@ -230,8 +224,6 @@ pub fn deinit(module: *Module) void { module.cache.struct_types.deinit(module.gpa); module.cache.fn_types.deinit(module.gpa); module.cache.spirv_types.deinit(module.gpa); - module.cache.capabilities.deinit(module.gpa); - module.cache.extensions.deinit(module.gpa); module.cache.extended_instruction_set.deinit(module.gpa); module.cache.decorations.deinit(module.gpa); module.cache.builtins.deinit(module.gpa); @@ -302,270 +294,6 @@ pub fn addEntryPointDeps( } } -fn entryPoints(module: *Module) !Section { - const target = module.zcu.getTarget(); - - var entry_points = Section{}; - errdefer entry_points.deinit(module.gpa); - - var interface = std.array_list.Managed(Id).init(module.gpa); - defer interface.deinit(); - - var seen: std.bit_set.Dynamic = try .initEmpty(module.gpa, module.decls.items.len); - defer seen.deinit(module.gpa); - - for (module.entry_points.keys(), module.entry_points.values()) |entry_point_id, entry_point| { - interface.items.len = 0; - seen.setRangeValue(.{ .start = 0, .end = module.decls.items.len }, false); - - const exec_model: spec.ExecutionModel = switch (target.os.tag) { - .vulkan, .opengl => switch (entry_point.cc) { - .spirv_vertex => .vertex, - .spirv_fragment => .fragment, - .spirv_kernel => .gl_compute, - .spirv_task => .task_ext, - .spirv_mesh => .mesh_ext, - // TODO: We should integrate with the Linkage capability and export this function - .spirv_device => continue, - else => unreachable, - }, - .opencl => switch (entry_point.cc) { - .spirv_kernel => .kernel, - // TODO: We should integrate with the Linkage capability and export this function - .spirv_device => continue, - else => unreachable, - }, - else => unreachable, - }; - try module.addEntryPointDeps(entry_point.decl_index, &seen, &interface); - try entry_points.emit(module.gpa, .OpEntryPoint, .{ - .execution_model = exec_model, - .entry_point = entry_point_id, - .name = entry_point.name, - .interface = interface.items, - }); - - switch (entry_point.cc) { - .spirv_kernel, .spirv_task => |kernel| { - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = .{ .local_size = .{ - .x_size = kernel.x, - .y_size = kernel.y, - .z_size = kernel.z, - } }, - }); - }, - .spirv_fragment => |fragment| { - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = if (target.os.tag == .vulkan) .origin_upper_left else .origin_lower_left, - }); - if (fragment.pixel_centered_integer) { - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = .pixel_center_integer, - }); - } - - const exec_mode: ?spec.ExecutionMode.Extended = switch (fragment.depth_assumption) { - .none => null, - .greater => .depth_greater, - .less => .depth_less, - .unchanged => .depth_unchanged, - }; - if (exec_mode) |mode| { - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = mode, - }); - } - }, - .spirv_mesh => |mesh| { - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = .{ .output_vertices = .{ .vertex_count = mesh.max_vertices } }, - }); - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = .{ .output_primitives_ext = .{ .primitive_count = mesh.max_primitives } }, - }); - - try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{ - .entry_point = entry_point_id, - .mode = switch (mesh.stage_output) { - .output_points => .output_points, - .output_lines => .output_lines_ext, - .output_triangles => .output_triangles_ext, - }, - }); - }, - else => {}, // TODO: should this be unreachable? - } - } - - return entry_points; -} - -pub fn finalize(module: *Module, gpa: Allocator) ![]Word { - const target = module.zcu.getTarget(); - - // Emit capabilities and extensions - switch (target.os.tag) { - .opengl => { - try module.addCapability(.shader); - try module.addCapability(.matrix); - }, - .vulkan => { - try module.addCapability(.shader); - try module.addCapability(.matrix); - if (target.cpu.arch == .spirv64) { - try module.addExtension("SPV_KHR_physical_storage_buffer"); - try module.addCapability(.physical_storage_buffer_addresses); - } - }, - .opencl, .amdhsa => { - try module.addCapability(.kernel); - try module.addCapability(.addresses); - }, - else => unreachable, - } - if (target.cpu.arch == .spirv64) try module.addCapability(.int64); - if (target.cpu.has(.spirv, .int64)) try module.addCapability(.int64); - if (target.cpu.has(.spirv, .float16)) { - if (target.os.tag == .opencl) try module.addExtension("cl_khr_fp16"); - try module.addCapability(.float16); - } - if (target.cpu.has(.spirv, .float64)) try module.addCapability(.float64); - if (target.cpu.has(.spirv, .generic_pointer)) try module.addCapability(.generic_pointer); - if (target.cpu.has(.spirv, .vector16)) try module.addCapability(.vector16); - if (target.cpu.has(.spirv, .storage_push_constant16)) { - try module.addExtension("SPV_KHR_16bit_storage"); - try module.addCapability(.storage_push_constant16); - } - if (target.cpu.has(.spirv, .arbitrary_precision_integers)) { - try module.addExtension("SPV_INTEL_arbitrary_precision_integers"); - try module.addCapability(.arbitrary_precision_integers_intel); - } - if (target.cpu.has(.spirv, .variable_pointers)) { - try module.addExtension("SPV_KHR_variable_pointers"); - try module.addCapability(.variable_pointers_storage_buffer); - try module.addCapability(.variable_pointers); - } - // These are well supported - try module.addCapability(.int8); - try module.addCapability(.int16); - - // Emit memory model - const addressing_model: spec.AddressingModel = switch (target.os.tag) { - .opengl => .logical, - .vulkan => if (target.cpu.arch == .spirv32) .logical else .physical_storage_buffer64, - .opencl => if (target.cpu.arch == .spirv32) .physical32 else .physical64, - .amdhsa => .physical64, - else => unreachable, - }; - try module.sections.memory_model.emit(module.gpa, .OpMemoryModel, .{ - .addressing_model = addressing_model, - .memory_model = switch (target.os.tag) { - .opencl => .open_cl, - .vulkan, .opengl => .glsl450, - else => unreachable, - }, - }); - - var entry_points = try module.entryPoints(); - defer entry_points.deinit(module.gpa); - - const version: spec.Version = .{ - .major = 1, - .minor = blk: { - // Prefer higher versions - if (target.cpu.has(.spirv, .v1_6)) break :blk 6; - if (target.cpu.has(.spirv, .v1_5)) break :blk 5; - if (target.cpu.has(.spirv, .v1_4)) break :blk 4; - if (target.cpu.has(.spirv, .v1_3)) break :blk 3; - if (target.cpu.has(.spirv, .v1_2)) break :blk 2; - if (target.cpu.has(.spirv, .v1_1)) break :blk 1; - break :blk 0; - }, - }; - - const zig_version = @import("builtin").zig_version; - const zig_spirv_compiler_version = comptime (zig_version.major << 12) | (zig_version.minor << 7) | zig_version.patch; - - // A SPIR-V Generator Magic Number is a 32 bit word: The high order 16 - // bits are a tool ID, which should be unique across all SPIR-V - // generators. The low order 16 bits are reserved for use as a tool - // version number, or any other purpose the tool supplier chooses. - // Only the tool IDs are reserved with Khronos. - // See https://github.com/KhronosGroup/SPIRV-Headers/blob/f2e4bd213104fe323a01e935df56557328d37ac8/include/spirv/spir-v.xml#L17C5-L21C54 - const generator_id: u32 = (spec.zig_generator_id << 16) | zig_spirv_compiler_version; - - const header = [_]Word{ - spec.magic_number, - version.toWord(), - generator_id, - module.idBound(), - 0, // Schema (currently reserved for future use) - }; - - var source = Section{}; - defer source.deinit(module.gpa); - try module.sections.debug_strings.emit(module.gpa, .OpSource, .{ - .source_language = .zig, - .version = zig_spirv_compiler_version, - // We cannot emit these because the Khronos translator does not parse this instruction - // correctly. - // See https://github.com/KhronosGroup/SPIRV-LLVM-Translator/issues/2188 - .file = null, - .source = null, - }); - - // Note: needs to be kept in order according to section 2.3! - const buffers = &[_][]const Word{ - &header, - module.sections.capabilities.toWords(), - module.sections.extensions.toWords(), - module.sections.extended_instruction_set.toWords(), - module.sections.memory_model.toWords(), - entry_points.toWords(), - module.sections.execution_modes.toWords(), - source.toWords(), - module.sections.debug_strings.toWords(), - module.sections.debug_names.toWords(), - module.sections.annotations.toWords(), - module.sections.globals.toWords(), - module.sections.functions.toWords(), - }; - - var total_result_size: usize = 0; - for (buffers) |buffer| { - total_result_size += buffer.len; - } - const result = try gpa.alloc(Word, total_result_size); - errdefer comptime unreachable; - - var offset: usize = 0; - for (buffers) |buffer| { - @memcpy(result[offset..][0..buffer.len], buffer); - offset += buffer.len; - } - - return result; -} - -pub fn addCapability(module: *Module, cap: spec.Capability) !void { - const entry = try module.cache.capabilities.getOrPut(module.gpa, cap); - if (entry.found_existing) return; - try module.sections.capabilities.emit(module.gpa, .OpCapability, .{ .capability = cap }); -} - -pub fn addExtension(module: *Module, ext: []const u8) !void { - const entry = try module.cache.extensions.getOrPut(module.gpa, ext); - if (entry.found_existing) return; - try module.sections.extensions.emit(module.gpa, .OpExtension, .{ .name = ext }); -} - /// Imports or returns the existing id of an extended instruction set pub fn importInstructionSet(module: *Module, set: spec.InstructionSet) !Id { assert(set != .core); @@ -622,28 +350,17 @@ pub fn opaqueType(module: *Module, name: []const u8) !Id { pub fn backingIntBits(module: *Module, bits: u16) struct { u16, bool } { assert(bits != 0); const target = module.zcu.getTarget(); - - if (target.cpu.has(.spirv, .arbitrary_precision_integers) and bits <= 32) { - return .{ bits, false }; - } - - // We require Int8 and Int16 capabilities and benefit Int64 when available. - // 32-bit integers are always supported (see spec, 2.16.1, Data rules). const ints = [_]struct { bits: u16, enabled: bool }{ - .{ .bits = 8, .enabled = true }, - .{ .bits = 16, .enabled = true }, + .{ .bits = 8, .enabled = target.cpu.has(.spirv, .int8) }, + .{ .bits = 16, .enabled = target.cpu.has(.spirv, .int16) }, .{ .bits = 32, .enabled = true }, - .{ - .bits = 64, - .enabled = target.cpu.has(.spirv, .int64) or target.cpu.arch == .spirv64, - }, + .{ .bits = 64, .enabled = target.cpu.has(.spirv, .int64) or target.cpu.arch == .spirv64 }, }; for (ints) |int| { if (bits <= int.bits and int.enabled) return .{ int.bits, false }; } - // Big int return .{ std.mem.alignForward(u16, bits, big_int_bits), true }; } diff --git a/src/codegen/spirv/spec.zig b/src/codegen/spirv/spec.zig @@ -313,16 +313,16 @@ pub const OperandKind = enum { .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.literal_integer} }, .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.literal_integer} }, .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.literal_integer} }, - .{ .name = "InitiationIntervalINTEL", .value = 0x10000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxConcurrencyINTEL", .value = 0x20000, .parameters = &.{.literal_integer} }, - .{ .name = "DependencyArrayINTEL", .value = 0x40000, .parameters = &.{.literal_integer} }, - .{ .name = "PipelineEnableINTEL", .value = 0x80000, .parameters = &.{.literal_integer} }, - .{ .name = "LoopCoalesceINTEL", .value = 0x100000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxInterleavingINTEL", .value = 0x200000, .parameters = &.{.literal_integer} }, - .{ .name = "SpeculatedIterationsINTEL", .value = 0x400000, .parameters = &.{.literal_integer} }, - .{ .name = "NoFusionINTEL", .value = 0x800000, .parameters = &.{} }, - .{ .name = "LoopCountINTEL", .value = 0x1000000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxReinvocationDelayINTEL", .value = 0x2000000, .parameters = &.{.literal_integer} }, + .{ .name = "InitiationIntervalALTERA", .value = 0x10000, .parameters = &.{.literal_integer} }, + .{ .name = "MaxConcurrencyALTERA", .value = 0x20000, .parameters = &.{.literal_integer} }, + .{ .name = "DependencyArrayALTERA", .value = 0x40000, .parameters = &.{.literal_integer} }, + .{ .name = "PipelineEnableALTERA", .value = 0x80000, .parameters = &.{.literal_integer} }, + .{ .name = "LoopCoalesceALTERA", .value = 0x100000, .parameters = &.{.literal_integer} }, + .{ .name = "MaxInterleavingALTERA", .value = 0x200000, .parameters = &.{.literal_integer} }, + .{ .name = "SpeculatedIterationsALTERA", .value = 0x400000, .parameters = &.{.literal_integer} }, + .{ .name = "NoFusionALTERA", .value = 0x800000, .parameters = &.{} }, + .{ .name = "LoopCountALTERA", .value = 0x1000000, .parameters = &.{.literal_integer} }, + .{ .name = "MaxReinvocationDelayALTERA", .value = 0x2000000, .parameters = &.{.literal_integer} }, }, .function_control => &.{ .{ .name = "Inline", .value = 0x0001, .parameters = &.{} }, @@ -500,6 +500,7 @@ pub const OperandKind = enum { .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &.{} }, .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &.{} }, .{ .name = "SharesInputWithAMDX", .value = 5102, .parameters = &.{ .id_ref, .id_ref } }, + .{ .name = "ArithmeticPoisonKHR", .value = 5157, .parameters = &.{} }, .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &.{} }, .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.literal_integer} }, .{ .name = "DerivativeGroupQuadsKHR", .value = 5289, .parameters = &.{} }, @@ -511,6 +512,7 @@ pub const OperandKind = enum { .{ .name = "SampleInterlockUnorderedEXT", .value = 5369, .parameters = &.{} }, .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &.{} }, .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &.{} }, + .{ .name = "Shader64BitIndexingEXT", .value = 5427, .parameters = &.{} }, .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &.{.literal_integer} }, .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &.{.literal_integer} }, .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &.{.literal_integer} }, @@ -556,9 +558,10 @@ pub const OperandKind = enum { .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &.{} }, .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &.{} }, .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &.{} }, + .{ .name = "HitObjectAttributeEXT", .value = 5411, .parameters = &.{} }, .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &.{} }, - .{ .name = "DeviceOnlyINTEL", .value = 5936, .parameters = &.{} }, - .{ .name = "HostOnlyINTEL", .value = 5937, .parameters = &.{} }, + .{ .name = "DeviceOnlyALTERA", .value = 5936, .parameters = &.{} }, + .{ .name = "HostOnlyALTERA", .value = 5937, .parameters = &.{} }, }, .dim => &.{ .{ .name = "1D", .value = 0, .parameters = &.{} }, @@ -730,7 +733,7 @@ pub const OperandKind = enum { .{ .name = "NoCapture", .value = 5, .parameters = &.{} }, .{ .name = "NoWrite", .value = 6, .parameters = &.{} }, .{ .name = "NoReadWrite", .value = 7, .parameters = &.{} }, - .{ .name = "RuntimeAlignedINTEL", .value = 5940, .parameters = &.{} }, + .{ .name = "RuntimeAlignedALTERA", .value = 5940, .parameters = &.{} }, }, .decoration => &.{ .{ .name = "RelaxedPrecision", .value = 0, .parameters = &.{} }, @@ -795,6 +798,9 @@ pub const OperandKind = enum { .{ .name = "PayloadNodeSparseArrayAMDX", .value = 5099, .parameters = &.{} }, .{ .name = "PayloadNodeArraySizeAMDX", .value = 5100, .parameters = &.{.id_ref} }, .{ .name = "PayloadDispatchIndirectAMDX", .value = 5105, .parameters = &.{} }, + .{ .name = "ArrayStrideIdEXT", .value = 5124, .parameters = &.{.id_ref} }, + .{ .name = "OffsetIdEXT", .value = 5125, .parameters = &.{.id_ref} }, + .{ .name = "UTFEncodedKHR", .value = 5145, .parameters = &.{} }, .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &.{} }, .{ .name = "PassthroughNV", .value = 5250, .parameters = &.{} }, .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &.{} }, @@ -806,7 +812,10 @@ pub const OperandKind = enum { .{ .name = "NonUniform", .value = 5300, .parameters = &.{} }, .{ .name = "RestrictPointer", .value = 5355, .parameters = &.{} }, .{ .name = "AliasedPointer", .value = 5356, .parameters = &.{} }, + .{ .name = "MemberOffsetNV", .value = 5358, .parameters = &.{.literal_integer} }, .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &.{} }, + .{ .name = "HitObjectShaderRecordBufferEXT", .value = 5389, .parameters = &.{} }, + .{ .name = "BankNV", .value = 5397, .parameters = &.{.literal_integer} }, .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &.{} }, .{ .name = "BindlessImageNV", .value = 5399, .parameters = &.{} }, .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &.{} }, @@ -825,55 +834,56 @@ pub const OperandKind = enum { .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &.{.literal_string} }, .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &.{ .literal_integer, .fp_rounding_mode } }, .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &.{ .literal_integer, .fp_denorm_mode } }, - .{ .name = "RegisterINTEL", .value = 5825, .parameters = &.{} }, - .{ .name = "MemoryINTEL", .value = 5826, .parameters = &.{.literal_string} }, - .{ .name = "NumbanksINTEL", .value = 5827, .parameters = &.{.literal_integer} }, - .{ .name = "BankwidthINTEL", .value = 5828, .parameters = &.{.literal_integer} }, - .{ .name = "MaxPrivateCopiesINTEL", .value = 5829, .parameters = &.{.literal_integer} }, - .{ .name = "SinglepumpINTEL", .value = 5830, .parameters = &.{} }, - .{ .name = "DoublepumpINTEL", .value = 5831, .parameters = &.{} }, - .{ .name = "MaxReplicatesINTEL", .value = 5832, .parameters = &.{.literal_integer} }, - .{ .name = "SimpleDualPortINTEL", .value = 5833, .parameters = &.{} }, - .{ .name = "MergeINTEL", .value = 5834, .parameters = &.{ .literal_string, .literal_string } }, - .{ .name = "BankBitsINTEL", .value = 5835, .parameters = &.{.literal_integer} }, - .{ .name = "ForcePow2DepthINTEL", .value = 5836, .parameters = &.{.literal_integer} }, - .{ .name = "StridesizeINTEL", .value = 5883, .parameters = &.{.literal_integer} }, - .{ .name = "WordsizeINTEL", .value = 5884, .parameters = &.{.literal_integer} }, - .{ .name = "TrueDualPortINTEL", .value = 5885, .parameters = &.{} }, - .{ .name = "BurstCoalesceINTEL", .value = 5899, .parameters = &.{} }, - .{ .name = "CacheSizeINTEL", .value = 5900, .parameters = &.{.literal_integer} }, - .{ .name = "DontStaticallyCoalesceINTEL", .value = 5901, .parameters = &.{} }, - .{ .name = "PrefetchINTEL", .value = 5902, .parameters = &.{.literal_integer} }, - .{ .name = "StallEnableINTEL", .value = 5905, .parameters = &.{} }, - .{ .name = "FuseLoopsInFunctionINTEL", .value = 5907, .parameters = &.{} }, - .{ .name = "MathOpDSPModeINTEL", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } }, + .{ .name = "RegisterALTERA", .value = 5825, .parameters = &.{} }, + .{ .name = "MemoryALTERA", .value = 5826, .parameters = &.{.literal_string} }, + .{ .name = "NumbanksALTERA", .value = 5827, .parameters = &.{.literal_integer} }, + .{ .name = "BankwidthALTERA", .value = 5828, .parameters = &.{.literal_integer} }, + .{ .name = "MaxPrivateCopiesALTERA", .value = 5829, .parameters = &.{.literal_integer} }, + .{ .name = "SinglepumpALTERA", .value = 5830, .parameters = &.{} }, + .{ .name = "DoublepumpALTERA", .value = 5831, .parameters = &.{} }, + .{ .name = "MaxReplicatesALTERA", .value = 5832, .parameters = &.{.literal_integer} }, + .{ .name = "SimpleDualPortALTERA", .value = 5833, .parameters = &.{} }, + .{ .name = "MergeALTERA", .value = 5834, .parameters = &.{ .literal_string, .literal_string } }, + .{ .name = "BankBitsALTERA", .value = 5835, .parameters = &.{.literal_integer} }, + .{ .name = "ForcePow2DepthALTERA", .value = 5836, .parameters = &.{.literal_integer} }, + .{ .name = "StridesizeALTERA", .value = 5883, .parameters = &.{.literal_integer} }, + .{ .name = "WordsizeALTERA", .value = 5884, .parameters = &.{.literal_integer} }, + .{ .name = "TrueDualPortALTERA", .value = 5885, .parameters = &.{} }, + .{ .name = "BurstCoalesceALTERA", .value = 5899, .parameters = &.{} }, + .{ .name = "CacheSizeALTERA", .value = 5900, .parameters = &.{.literal_integer} }, + .{ .name = "DontStaticallyCoalesceALTERA", .value = 5901, .parameters = &.{} }, + .{ .name = "PrefetchALTERA", .value = 5902, .parameters = &.{.literal_integer} }, + .{ .name = "StallEnableALTERA", .value = 5905, .parameters = &.{} }, + .{ .name = "FuseLoopsInFunctionALTERA", .value = 5907, .parameters = &.{} }, + .{ .name = "MathOpDSPModeALTERA", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } }, .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &.{.id_ref} }, .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &.{.id_ref} }, - .{ .name = "InitiationIntervalINTEL", .value = 5917, .parameters = &.{.literal_integer} }, - .{ .name = "MaxConcurrencyINTEL", .value = 5918, .parameters = &.{.literal_integer} }, - .{ .name = "PipelineEnableINTEL", .value = 5919, .parameters = &.{.literal_integer} }, - .{ .name = "BufferLocationINTEL", .value = 5921, .parameters = &.{.literal_integer} }, - .{ .name = "IOPipeStorageINTEL", .value = 5944, .parameters = &.{.literal_integer} }, + .{ .name = "InitiationIntervalALTERA", .value = 5917, .parameters = &.{.literal_integer} }, + .{ .name = "MaxConcurrencyALTERA", .value = 5918, .parameters = &.{.literal_integer} }, + .{ .name = "PipelineEnableALTERA", .value = 5919, .parameters = &.{.literal_integer} }, + .{ .name = "BufferLocationALTERA", .value = 5921, .parameters = &.{.literal_integer} }, + .{ .name = "IOPipeStorageALTERA", .value = 5944, .parameters = &.{.literal_integer} }, .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &.{ .literal_integer, .fp_operation_mode } }, .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &.{} }, .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &.{} }, .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &.{} }, - .{ .name = "StallFreeINTEL", .value = 6151, .parameters = &.{} }, + .{ .name = "StallFreeALTERA", .value = 6151, .parameters = &.{} }, .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &.{.literal_float} }, - .{ .name = "LatencyControlLabelINTEL", .value = 6172, .parameters = &.{.literal_integer} }, - .{ .name = "LatencyControlConstraintINTEL", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, - .{ .name = "ConduitKernelArgumentINTEL", .value = 6175, .parameters = &.{} }, - .{ .name = "RegisterMapKernelArgumentINTEL", .value = 6176, .parameters = &.{} }, - .{ .name = "MMHostInterfaceAddressWidthINTEL", .value = 6177, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceDataWidthINTEL", .value = 6178, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceLatencyINTEL", .value = 6179, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceReadWriteModeINTEL", .value = 6180, .parameters = &.{.access_qualifier} }, - .{ .name = "MMHostInterfaceMaxBurstINTEL", .value = 6181, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceWaitRequestINTEL", .value = 6182, .parameters = &.{.literal_integer} }, - .{ .name = "StableKernelArgumentINTEL", .value = 6183, .parameters = &.{} }, + .{ .name = "LatencyControlLabelALTERA", .value = 6172, .parameters = &.{.literal_integer} }, + .{ .name = "LatencyControlConstraintALTERA", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, + .{ .name = "ConduitKernelArgumentALTERA", .value = 6175, .parameters = &.{} }, + .{ .name = "RegisterMapKernelArgumentALTERA", .value = 6176, .parameters = &.{} }, + .{ .name = "MMHostInterfaceAddressWidthALTERA", .value = 6177, .parameters = &.{.literal_integer} }, + .{ .name = "MMHostInterfaceDataWidthALTERA", .value = 6178, .parameters = &.{.literal_integer} }, + .{ .name = "MMHostInterfaceLatencyALTERA", .value = 6179, .parameters = &.{.literal_integer} }, + .{ .name = "MMHostInterfaceReadWriteModeALTERA", .value = 6180, .parameters = &.{.access_qualifier} }, + .{ .name = "MMHostInterfaceMaxBurstALTERA", .value = 6181, .parameters = &.{.literal_integer} }, + .{ .name = "MMHostInterfaceWaitRequestALTERA", .value = 6182, .parameters = &.{.literal_integer} }, + .{ .name = "StableKernelArgumentALTERA", .value = 6183, .parameters = &.{} }, .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &.{ .host_access_qualifier, .literal_string } }, - .{ .name = "InitModeINTEL", .value = 6190, .parameters = &.{.initialization_mode_qualifier} }, - .{ .name = "ImplementInRegisterMapINTEL", .value = 6191, .parameters = &.{.literal_integer} }, + .{ .name = "InitModeALTERA", .value = 6190, .parameters = &.{.initialization_mode_qualifier} }, + .{ .name = "ImplementInRegisterMapALTERA", .value = 6191, .parameters = &.{.literal_integer} }, + .{ .name = "ConditionalINTEL", .value = 6247, .parameters = &.{.id_ref} }, .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &.{ .literal_integer, .load_cache_control } }, .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &.{ .literal_integer, .store_cache_control } }, }, @@ -949,6 +959,8 @@ pub const OperandKind = enum { .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &.{} }, .{ .name = "RemainingRecursionLevelsAMDX", .value = 5021, .parameters = &.{} }, .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{} }, + .{ .name = "SamplerHeapEXT", .value = 5122, .parameters = &.{} }, + .{ .name = "ResourceHeapEXT", .value = 5123, .parameters = &.{} }, .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &.{} }, .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &.{} }, .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &.{} }, @@ -1019,9 +1031,9 @@ pub const OperandKind = enum { .{ .name = "InclusiveScan", .value = 1, .parameters = &.{} }, .{ .name = "ExclusiveScan", .value = 2, .parameters = &.{} }, .{ .name = "ClusteredReduce", .value = 3, .parameters = &.{} }, - .{ .name = "PartitionedReduceNV", .value = 6, .parameters = &.{} }, - .{ .name = "PartitionedInclusiveScanNV", .value = 7, .parameters = &.{} }, - .{ .name = "PartitionedExclusiveScanNV", .value = 8, .parameters = &.{} }, + .{ .name = "PartitionedReduceEXT", .value = 6, .parameters = &.{} }, + .{ .name = "PartitionedInclusiveScanEXT", .value = 7, .parameters = &.{} }, + .{ .name = "PartitionedExclusiveScanEXT", .value = 8, .parameters = &.{} }, }, .kernel_enqueue_flags => &.{ .{ .name = "NoWait", .value = 0, .parameters = &.{} }, @@ -1144,6 +1156,7 @@ pub const OperandKind = enum { .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &.{} }, .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &.{} }, .{ .name = "TileShadingQCOM", .value = 4495, .parameters = &.{} }, + .{ .name = "CooperativeMatrixConversionQCOM", .value = 4496, .parameters = &.{} }, .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &.{} }, .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &.{} }, .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &.{} }, @@ -1159,6 +1172,10 @@ pub const OperandKind = enum { .{ .name = "BFloat16TypeKHR", .value = 5116, .parameters = &.{} }, .{ .name = "BFloat16DotProductKHR", .value = 5117, .parameters = &.{} }, .{ .name = "BFloat16CooperativeMatrixKHR", .value = 5118, .parameters = &.{} }, + .{ .name = "AbortKHR", .value = 5120, .parameters = &.{} }, + .{ .name = "DescriptorHeapEXT", .value = 5128, .parameters = &.{} }, + .{ .name = "ConstantDataKHR", .value = 5146, .parameters = &.{} }, + .{ .name = "PoisonFreezeKHR", .value = 5156, .parameters = &.{} }, .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &.{} }, .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &.{} }, .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &.{} }, @@ -1172,7 +1189,7 @@ pub const OperandKind = enum { .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &.{} }, .{ .name = "ComputeDerivativeGroupQuadsKHR", .value = 5288, .parameters = &.{} }, .{ .name = "FragmentDensityEXT", .value = 5291, .parameters = &.{} }, - .{ .name = "GroupNonUniformPartitionedNV", .value = 5297, .parameters = &.{} }, + .{ .name = "GroupNonUniformPartitionedEXT", .value = 5297, .parameters = &.{} }, .{ .name = "ShaderNonUniform", .value = 5301, .parameters = &.{} }, .{ .name = "RuntimeDescriptorArray", .value = 5302, .parameters = &.{} }, .{ .name = "InputAttachmentArrayDynamicIndexing", .value = 5303, .parameters = &.{} }, @@ -1202,6 +1219,7 @@ pub const OperandKind = enum { .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &.{} }, .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &.{} }, .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &.{} }, + .{ .name = "ShaderInvocationReorderEXT", .value = 5388, .parameters = &.{} }, .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &.{} }, .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &.{} }, .{ .name = "CooperativeVectorNV", .value = 5394, .parameters = &.{} }, @@ -1210,6 +1228,9 @@ pub const OperandKind = enum { .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &.{} }, .{ .name = "RayTracingSpheresGeometryNV", .value = 5418, .parameters = &.{} }, .{ .name = "RayTracingLinearSweptSpheresGeometryNV", .value = 5419, .parameters = &.{} }, + .{ .name = "PushConstantBanksNV", .value = 5423, .parameters = &.{} }, + .{ .name = "LongVectorEXT", .value = 5425, .parameters = &.{} }, + .{ .name = "Shader64BitIndexingEXT", .value = 5426, .parameters = &.{} }, .{ .name = "CooperativeMatrixReductionsNV", .value = 5430, .parameters = &.{} }, .{ .name = "CooperativeMatrixConversionsNV", .value = 5431, .parameters = &.{} }, .{ .name = "CooperativeMatrixPerElementOperationsNV", .value = 5432, .parameters = &.{} }, @@ -1239,27 +1260,27 @@ pub const OperandKind = enum { .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &.{} }, .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &.{} }, .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &.{} }, - .{ .name = "FPGAMemoryAttributesINTEL", .value = 5824, .parameters = &.{} }, + .{ .name = "FPGAMemoryAttributesALTERA", .value = 5824, .parameters = &.{} }, .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionIntegersINTEL", .value = 5844, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionFloatingPointINTEL", .value = 5845, .parameters = &.{} }, + .{ .name = "ArbitraryPrecisionIntegersALTERA", .value = 5844, .parameters = &.{} }, + .{ .name = "ArbitraryPrecisionFloatingPointALTERA", .value = 5845, .parameters = &.{} }, .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &.{} }, - .{ .name = "FPGALoopControlsINTEL", .value = 5888, .parameters = &.{} }, + .{ .name = "FPGALoopControlsALTERA", .value = 5888, .parameters = &.{} }, .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &.{} }, .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &.{} }, - .{ .name = "FPGAMemoryAccessesINTEL", .value = 5898, .parameters = &.{} }, - .{ .name = "FPGAClusterAttributesINTEL", .value = 5904, .parameters = &.{} }, - .{ .name = "LoopFuseINTEL", .value = 5906, .parameters = &.{} }, - .{ .name = "FPGADSPControlINTEL", .value = 5908, .parameters = &.{} }, + .{ .name = "FPGAMemoryAccessesALTERA", .value = 5898, .parameters = &.{} }, + .{ .name = "FPGAClusterAttributesALTERA", .value = 5904, .parameters = &.{} }, + .{ .name = "LoopFuseALTERA", .value = 5906, .parameters = &.{} }, + .{ .name = "FPGADSPControlALTERA", .value = 5908, .parameters = &.{} }, .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &.{} }, - .{ .name = "FPGAInvocationPipeliningAttributesINTEL", .value = 5916, .parameters = &.{} }, - .{ .name = "FPGABufferLocationINTEL", .value = 5920, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionFixedPointINTEL", .value = 5922, .parameters = &.{} }, - .{ .name = "USMStorageClassesINTEL", .value = 5935, .parameters = &.{} }, - .{ .name = "RuntimeAlignedAttributeINTEL", .value = 5939, .parameters = &.{} }, - .{ .name = "IOPipesINTEL", .value = 5943, .parameters = &.{} }, - .{ .name = "BlockingPipesINTEL", .value = 5945, .parameters = &.{} }, - .{ .name = "FPGARegINTEL", .value = 5948, .parameters = &.{} }, + .{ .name = "FPGAInvocationPipeliningAttributesALTERA", .value = 5916, .parameters = &.{} }, + .{ .name = "FPGABufferLocationALTERA", .value = 5920, .parameters = &.{} }, + .{ .name = "ArbitraryPrecisionFixedPointALTERA", .value = 5922, .parameters = &.{} }, + .{ .name = "USMStorageClassesALTERA", .value = 5935, .parameters = &.{} }, + .{ .name = "RuntimeAlignedAttributeALTERA", .value = 5939, .parameters = &.{} }, + .{ .name = "IOPipesALTERA", .value = 5943, .parameters = &.{} }, + .{ .name = "BlockingPipesALTERA", .value = 5945, .parameters = &.{} }, + .{ .name = "FPGARegALTERA", .value = 5948, .parameters = &.{} }, .{ .name = "DotProductInputAll", .value = 6016, .parameters = &.{} }, .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &.{} }, .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &.{} }, @@ -1270,6 +1291,7 @@ pub const OperandKind = enum { .{ .name = "BitInstructions", .value = 6025, .parameters = &.{} }, .{ .name = "GroupNonUniformRotateKHR", .value = 6026, .parameters = &.{} }, .{ .name = "FloatControls2", .value = 6029, .parameters = &.{} }, + .{ .name = "FMAKHR", .value = 6030, .parameters = &.{} }, .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &.{} }, .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &.{} }, .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &.{} }, @@ -1279,26 +1301,33 @@ pub const OperandKind = enum { .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &.{} }, .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &.{} }, .{ .name = "ArithmeticFenceEXT", .value = 6144, .parameters = &.{} }, - .{ .name = "FPGAClusterAttributesV2INTEL", .value = 6150, .parameters = &.{} }, + .{ .name = "FPGAClusterAttributesV2ALTERA", .value = 6150, .parameters = &.{} }, .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &.{} }, - .{ .name = "TaskSequenceINTEL", .value = 6162, .parameters = &.{} }, + .{ .name = "TaskSequenceALTERA", .value = 6162, .parameters = &.{} }, .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &.{} }, - .{ .name = "FPGALatencyControlINTEL", .value = 6171, .parameters = &.{} }, - .{ .name = "FPGAArgumentInterfacesINTEL", .value = 6174, .parameters = &.{} }, + .{ .name = "FPGALatencyControlALTERA", .value = 6171, .parameters = &.{} }, + .{ .name = "FPGAArgumentInterfacesALTERA", .value = 6174, .parameters = &.{} }, .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &.{} }, - .{ .name = "GlobalVariableFPGADecorationsINTEL", .value = 6189, .parameters = &.{} }, + .{ .name = "GlobalVariableFPGADecorationsALTERA", .value = 6189, .parameters = &.{} }, .{ .name = "SubgroupBufferPrefetchINTEL", .value = 6220, .parameters = &.{} }, .{ .name = "Subgroup2DBlockIOINTEL", .value = 6228, .parameters = &.{} }, .{ .name = "Subgroup2DBlockTransformINTEL", .value = 6229, .parameters = &.{} }, .{ .name = "Subgroup2DBlockTransposeINTEL", .value = 6230, .parameters = &.{} }, .{ .name = "SubgroupMatrixMultiplyAccumulateINTEL", .value = 6236, .parameters = &.{} }, .{ .name = "TernaryBitwiseFunctionINTEL", .value = 6241, .parameters = &.{} }, + .{ .name = "UntypedVariableLengthArrayINTEL", .value = 6243, .parameters = &.{} }, + .{ .name = "SpecConditionalINTEL", .value = 6245, .parameters = &.{} }, + .{ .name = "FunctionVariantsINTEL", .value = 6246, .parameters = &.{} }, .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &.{} }, .{ .name = "TensorFloat32RoundingINTEL", .value = 6425, .parameters = &.{} }, .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &.{} }, .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &.{} }, .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &.{} }, .{ .name = "BindlessImagesINTEL", .value = 6528, .parameters = &.{} }, + .{ .name = "DotProductFloat16AccFloat32VALVE", .value = 6912, .parameters = &.{} }, + .{ .name = "DotProductFloat16AccFloat16VALVE", .value = 6913, .parameters = &.{} }, + .{ .name = "DotProductBFloat16AccVALVE", .value = 6914, .parameters = &.{} }, + .{ .name = "DotProductFloat8AccFloat32VALVE", .value = 6915, .parameters = &.{} }, }, .ray_query_intersection => &.{ .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &.{} }, @@ -1352,8 +1381,8 @@ pub const OperandKind = enum { .{ .name = "DecodeFunc", .value = 0x0002, .parameters = &.{.id_ref} }, }, .initialization_mode_qualifier => &.{ - .{ .name = "InitOnDeviceReprogramINTEL", .value = 0, .parameters = &.{} }, - .{ .name = "InitOnDeviceResetINTEL", .value = 1, .parameters = &.{} }, + .{ .name = "InitOnDeviceReprogramALTERA", .value = 0, .parameters = &.{} }, + .{ .name = "InitOnDeviceResetALTERA", .value = 1, .parameters = &.{} }, }, .load_cache_control => &.{ .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} }, @@ -1811,12 +1840,14 @@ pub const Opcode = enum(u16) { OpUntypedInBoundsPtrAccessChainKHR = 4424, OpUntypedArrayLengthKHR = 4425, OpUntypedPrefetchKHR = 4426, + OpFmaKHR = 4427, OpSubgroupAllKHR = 4428, OpSubgroupAnyKHR = 4429, OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, OpExtInstWithForwardRefsKHR = 4433, + OpUntypedGroupAsyncCopyKHR = 4434, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, @@ -1847,10 +1878,14 @@ pub const Opcode = enum(u16) { OpImageBoxFilterQCOM = 4481, OpImageBlockMatchSSDQCOM = 4482, OpImageBlockMatchSADQCOM = 4483, + OpBitCastArrayQCOM = 4497, OpImageBlockMatchWindowSSDQCOM = 4500, OpImageBlockMatchWindowSADQCOM = 4501, OpImageBlockMatchGatherSSDQCOM = 4502, OpImageBlockMatchGatherSADQCOM = 4503, + OpCompositeConstructCoopMatQCOM = 4540, + OpCompositeExtractCoopMatQCOM = 4541, + OpExtractSubArrayQCOM = 4542, OpGroupIAddNonUniformAMD = 5000, OpGroupFAddNonUniformAMD = 5001, OpGroupFMinNonUniformAMD = 5002, @@ -1872,6 +1907,16 @@ pub const Opcode = enum(u16) { OpSpecConstantStringAMDX = 5104, OpGroupNonUniformQuadAllKHR = 5110, OpGroupNonUniformQuadAnyKHR = 5111, + OpTypeBufferEXT = 5115, + OpBufferPointerEXT = 5119, + OpAbortKHR = 5121, + OpUntypedImageTexelPointerEXT = 5126, + OpMemberDecorateIdEXT = 5127, + OpConstantSizeOfEXT = 5129, + OpConstantDataKHR = 5147, + OpSpecConstantDataKHR = 5148, + OpPoisonKHR = 5158, + OpFreezeKHR = 5159, OpHitObjectRecordHitMotionNV = 5249, OpHitObjectRecordHitWithIndexMotionNV = 5250, OpHitObjectRecordMissMotionNV = 5251, @@ -1906,7 +1951,7 @@ pub const Opcode = enum(u16) { OpReorderThreadWithHintNV = 5280, OpTypeHitObjectNV = 5281, OpImageSampleFootprintNV = 5283, - OpTypeCooperativeVectorNV = 5288, + OpTypeVectorIdEXT = 5288, OpCooperativeVectorMatrixMulNV = 5289, OpCooperativeVectorOuterProductAccumulateNV = 5290, OpCooperativeVectorReduceSumAccumulateNV = 5291, @@ -1914,12 +1959,42 @@ pub const Opcode = enum(u16) { OpCooperativeMatrixConvertNV = 5293, OpEmitMeshTasksEXT = 5294, OpSetMeshOutputsEXT = 5295, - OpGroupNonUniformPartitionNV = 5296, + OpGroupNonUniformPartitionEXT = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, OpFetchMicroTriangleVertexPositionNV = 5300, OpFetchMicroTriangleVertexBarycentricNV = 5301, OpCooperativeVectorLoadNV = 5302, OpCooperativeVectorStoreNV = 5303, + OpHitObjectRecordFromQueryEXT = 5304, + OpHitObjectRecordMissEXT = 5305, + OpHitObjectRecordMissMotionEXT = 5306, + OpHitObjectGetIntersectionTriangleVertexPositionsEXT = 5307, + OpHitObjectGetRayFlagsEXT = 5308, + OpHitObjectSetShaderBindingTableRecordIndexEXT = 5309, + OpHitObjectReorderExecuteShaderEXT = 5310, + OpHitObjectTraceReorderExecuteEXT = 5311, + OpHitObjectTraceMotionReorderExecuteEXT = 5312, + OpTypeHitObjectEXT = 5313, + OpReorderThreadWithHintEXT = 5314, + OpReorderThreadWithHitObjectEXT = 5315, + OpHitObjectTraceRayEXT = 5316, + OpHitObjectTraceRayMotionEXT = 5317, + OpHitObjectRecordEmptyEXT = 5318, + OpHitObjectExecuteShaderEXT = 5319, + OpHitObjectGetCurrentTimeEXT = 5320, + OpHitObjectGetAttributesEXT = 5321, + OpHitObjectGetHitKindEXT = 5322, + OpHitObjectGetPrimitiveIndexEXT = 5323, + OpHitObjectGetGeometryIndexEXT = 5324, + OpHitObjectGetInstanceIdEXT = 5325, + OpHitObjectGetInstanceCustomIndexEXT = 5326, + OpHitObjectGetObjectRayOriginEXT = 5327, + OpHitObjectGetObjectRayDirectionEXT = 5328, + OpHitObjectGetWorldRayDirectionEXT = 5329, + OpHitObjectGetWorldRayOriginEXT = 5330, + OpHitObjectGetObjectToWorldEXT = 5331, + OpHitObjectGetWorldToObjectEXT = 5332, + OpHitObjectGetRayTMaxEXT = 5333, OpReportIntersectionKHR = 5334, OpIgnoreIntersectionNV = 5335, OpTerminateRayNV = 5336, @@ -1929,8 +2004,14 @@ pub const Opcode = enum(u16) { OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340, OpTypeAccelerationStructureKHR = 5341, OpExecuteCallableNV = 5344, - OpRayQueryGetClusterIdNV = 5345, + OpRayQueryGetIntersectionClusterIdNV = 5345, OpHitObjectGetClusterIdNV = 5346, + OpHitObjectGetRayTMinEXT = 5347, + OpHitObjectGetShaderBindingTableRecordIndexEXT = 5348, + OpHitObjectGetShaderRecordBufferHandleEXT = 5349, + OpHitObjectIsEmptyEXT = 5350, + OpHitObjectIsHitEXT = 5351, + OpHitObjectIsMissEXT = 5352, OpTypeCooperativeMatrixNV = 5358, OpCooperativeMatrixLoadNV = 5359, OpCooperativeMatrixStoreNV = 5360, @@ -2008,10 +2089,10 @@ pub const Opcode = enum(u16) { OpExpectKHR = 5631, OpDecorateString = 5632, OpMemberDecorateString = 5633, + OpVariableLengthArrayINTEL = 5818, + OpSaveMemoryINTEL = 5819, + OpRestoreMemoryINTEL = 5820, OpLoopControlINTEL = 5887, - OpReadPipeBlockingINTEL = 5946, - OpWritePipeBlockingINTEL = 5947, - OpFPGARegINTEL = 5949, OpRayQueryGetRayTMinKHR = 6016, OpRayQueryGetRayFlagsKHR = 6017, OpRayQueryGetIntersectionTKHR = 6018, @@ -2040,11 +2121,6 @@ pub const Opcode = enum(u16) { OpControlBarrierArriveINTEL = 6142, OpControlBarrierWaitINTEL = 6143, OpArithmeticFenceEXT = 6145, - OpTaskSequenceCreateINTEL = 6163, - OpTaskSequenceAsyncINTEL = 6164, - OpTaskSequenceGetINTEL = 6165, - OpTaskSequenceReleaseINTEL = 6166, - OpTypeTaskSequenceINTEL = 6199, OpSubgroupBlockPrefetchINTEL = 6221, OpSubgroup2DBlockLoadINTEL = 6231, OpSubgroup2DBlockLoadTransformINTEL = 6232, @@ -2053,6 +2129,14 @@ pub const Opcode = enum(u16) { OpSubgroup2DBlockStoreINTEL = 6235, OpSubgroupMatrixMultiplyAccumulateINTEL = 6237, OpBitwiseFunctionINTEL = 6242, + OpUntypedVariableLengthArrayINTEL = 6244, + OpConditionalExtensionINTEL = 6248, + OpConditionalEntryPointINTEL = 6249, + OpConditionalCapabilityINTEL = 6250, + OpSpecConstantTargetINTEL = 6251, + OpSpecConstantArchitectureINTEL = 6252, + OpSpecConstantCapabilitiesINTEL = 6253, + OpConditionalCopyObjectINTEL = 6254, OpGroupIMulKHR = 6401, OpGroupFMulKHR = 6402, OpGroupBitwiseAndKHR = 6403, @@ -2067,6 +2151,9 @@ pub const Opcode = enum(u16) { OpConvertHandleToImageINTEL = 6529, OpConvertHandleToSamplerINTEL = 6530, OpConvertHandleToSampledImageINTEL = 6531, + OpFDot2MixAcc32VALVE = 6916, + OpFDot2MixAcc16VALVE = 6917, + OpFDot4MixAcc32VALVE = 6918, pub fn Operands(comptime self: Opcode) type { return switch (self) { @@ -2380,7 +2467,7 @@ pub const Opcode = enum(u16) { .OpGroupNonUniformAll => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id }, .OpGroupNonUniformAny => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id }, .OpGroupNonUniformAllEqual => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id }, - .OpGroupNonUniformBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id }, + .OpGroupNonUniformBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, invocation_id: Id }, .OpGroupNonUniformBroadcastFirst => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id }, .OpGroupNonUniformBallot => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id }, .OpGroupNonUniformInverseBallot => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id }, @@ -2388,7 +2475,7 @@ pub const Opcode = enum(u16) { .OpGroupNonUniformBallotBitCount => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id }, .OpGroupNonUniformBallotFindLSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id }, .OpGroupNonUniformBallotFindMSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id }, - .OpGroupNonUniformShuffle => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id }, + .OpGroupNonUniformShuffle => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, invocation_id: Id }, .OpGroupNonUniformShuffleXor => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, mask: Id }, .OpGroupNonUniformShuffleUp => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id }, .OpGroupNonUniformShuffleDown => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id }, @@ -2439,12 +2526,14 @@ pub const Opcode = enum(u16) { .OpUntypedInBoundsPtrAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, element: Id, indexes: []const Id = &.{} }, .OpUntypedArrayLengthKHR => struct { id_result_type: Id, id_result: Id, structure: Id, pointer: Id, array_member: LiteralInteger }, .OpUntypedPrefetchKHR => struct { pointer_type: Id, num_bytes: Id, rw: ?Id = null, locality: ?Id = null, cache_type: ?Id = null }, + .OpFmaKHR => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id, operand_3: Id }, .OpSubgroupAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpSubgroupAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpSubgroupAllEqualKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpGroupNonUniformRotateKHR => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id, cluster_size: ?Id = null }, .OpSubgroupReadInvocationKHR => struct { id_result_type: Id, id_result: Id, value: Id, index: Id }, .OpExtInstWithForwardRefsKHR => struct { id_result_type: Id, id_result: Id, set: Id, instruction: LiteralExtInstInteger, id_ref_4: []const Id = &.{} }, + .OpUntypedGroupAsyncCopyKHR => struct { id_result_type: Id, id_result: Id, execution: Id, destination: Id, source: Id, element_num_bytes: Id, num_elements: Id, stride: Id, event: Id, destination_memory_operands: ?MemoryAccess.Extended = null, source_memory_operands: ?MemoryAccess.Extended = null }, .OpTraceRayKHR => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload: Id }, .OpExecuteCallableKHR => struct { sbt_index: Id, callable_data: Id }, .OpConvertUToAccelerationStructureKHR => struct { id_result_type: Id, id_result: Id, accel: Id }, @@ -2475,10 +2564,14 @@ pub const Opcode = enum(u16) { .OpImageBoxFilterQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, box_size: Id }, .OpImageBlockMatchSSDQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id }, .OpImageBlockMatchSADQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id }, + .OpBitCastArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id }, .OpImageBlockMatchWindowSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, .OpImageBlockMatchWindowSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, .OpImageBlockMatchGatherSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, .OpImageBlockMatchGatherSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, + .OpCompositeConstructCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id }, + .OpCompositeExtractCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_cooperative_matrix: Id }, + .OpExtractSubArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id, index: Id }, .OpGroupIAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupFAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupFMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, @@ -2500,6 +2593,16 @@ pub const Opcode = enum(u16) { .OpSpecConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString }, .OpGroupNonUniformQuadAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, + .OpTypeBufferEXT => struct { id_result: Id, storage_class: StorageClass }, + .OpBufferPointerEXT => struct { id_result_type: Id, id_result: Id, buffer: Id }, + .OpAbortKHR => struct { message_type: Id, message: Id }, + .OpUntypedImageTexelPointerEXT => struct { id_result_type: Id, id_result: Id, image_type: Id, image: Id, coordinate: Id, sample: Id }, + .OpMemberDecorateIdEXT => struct { structure_type: Id, member: LiteralInteger, decoration: Decoration.Extended }, + .OpConstantSizeOfEXT => struct { id_result_type: Id, id_result: Id, type: Id }, + .OpConstantDataKHR => struct { id_result_type: Id, id_result: Id, data: []const LiteralInteger = &.{} }, + .OpSpecConstantDataKHR => struct { id_result_type: Id, id_result: Id, data: []const LiteralInteger = &.{} }, + .OpPoisonKHR => struct { id_result_type: Id, id_result: Id }, + .OpFreezeKHR => struct { id_result_type: Id, id_result: Id, value: Id }, .OpHitObjectRecordHitMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_offset: Id, sbt_record_stride: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id }, .OpHitObjectRecordHitWithIndexMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id }, .OpHitObjectRecordMissMotionNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id }, @@ -2534,7 +2637,7 @@ pub const Opcode = enum(u16) { .OpReorderThreadWithHintNV => struct { hint: Id, bits: Id }, .OpTypeHitObjectNV => struct { id_result: Id }, .OpImageSampleFootprintNV => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, granularity: Id, coarse: Id, image_operands: ?ImageOperands.Extended = null }, - .OpTypeCooperativeVectorNV => struct { id_result: Id, component_type: Id, component_count: Id }, + .OpTypeVectorIdEXT => struct { id_result: Id, component_type: Id, component_count: Id }, .OpCooperativeVectorMatrixMulNV => struct { id_result_type: Id, id_result: Id, input: Id, input_interpretation: Id, matrix: Id, matrix_offset: Id, matrix_interpretation: Id, m: Id, k: Id, memory_layout: Id, transpose: Id, matrix_stride: ?Id = null, cooperative_matrix_operands: ?CooperativeMatrixOperands = null }, .OpCooperativeVectorOuterProductAccumulateNV => struct { pointer: Id, offset: Id, a: Id, b: Id, memory_layout: Id, matrix_interpretation: Id, matrix_stride: ?Id = null }, .OpCooperativeVectorReduceSumAccumulateNV => struct { pointer: Id, offset: Id, v: Id }, @@ -2542,12 +2645,42 @@ pub const Opcode = enum(u16) { .OpCooperativeMatrixConvertNV => struct { id_result_type: Id, id_result: Id, matrix: Id }, .OpEmitMeshTasksEXT => struct { group_count_x: Id, group_count_y: Id, group_count_z: Id, payload: ?Id = null }, .OpSetMeshOutputsEXT => struct { vertex_count: Id, primitive_count: Id }, - .OpGroupNonUniformPartitionNV => struct { id_result_type: Id, id_result: Id, value: Id }, + .OpGroupNonUniformPartitionEXT => struct { id_result_type: Id, id_result: Id, value: Id }, .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: Id, packed_indices: Id }, .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id }, .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id }, .OpCooperativeVectorLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, offset: Id, memory_access: ?MemoryAccess.Extended = null }, .OpCooperativeVectorStoreNV => struct { pointer: Id, offset: Id, object: Id, memory_access: ?MemoryAccess.Extended = null }, + .OpHitObjectRecordFromQueryEXT => struct { hit_object: Id, ray_query: Id, sbt_record_index: Id, hit_object_attributes: Id }, + .OpHitObjectRecordMissEXT => struct { hit_object: Id, ray_flags: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id }, + .OpHitObjectRecordMissMotionEXT => struct { hit_object: Id, ray_flags: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, current_time: Id }, + .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetRayFlagsEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectSetShaderBindingTableRecordIndexEXT => struct { hit_object: Id, sbt_record_index: Id }, + .OpHitObjectReorderExecuteShaderEXT => struct { hit_object: Id, payload: Id, hint: ?Id = null, bits: ?Id = null }, + .OpHitObjectTraceReorderExecuteEXT => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload: Id, hint: ?Id = null, bits: ?Id = null }, + .OpHitObjectTraceMotionReorderExecuteEXT => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, current_time: Id, payload: Id, hint: ?Id = null, bits: ?Id = null }, + .OpTypeHitObjectEXT => struct { id_result: Id }, + .OpReorderThreadWithHintEXT => struct { hint: Id, bits: Id }, + .OpReorderThreadWithHitObjectEXT => struct { hit_object: Id, hint: ?Id = null, bits: ?Id = null }, + .OpHitObjectTraceRayEXT => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload: Id }, + .OpHitObjectTraceRayMotionEXT => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, current_time: Id, payload: Id }, + .OpHitObjectRecordEmptyEXT => struct { hit_object: Id }, + .OpHitObjectExecuteShaderEXT => struct { hit_object: Id, payload: Id }, + .OpHitObjectGetCurrentTimeEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetAttributesEXT => struct { hit_object: Id, hit_object_attribute: Id }, + .OpHitObjectGetHitKindEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetPrimitiveIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetGeometryIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetInstanceIdEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetInstanceCustomIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetObjectRayOriginEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetObjectRayDirectionEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetWorldRayDirectionEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetWorldRayOriginEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetObjectToWorldEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetWorldToObjectEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetRayTMaxEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpReportIntersectionKHR => struct { id_result_type: Id, id_result: Id, hit: Id, hit_kind: Id }, .OpIgnoreIntersectionNV => void, .OpTerminateRayNV => void, @@ -2557,8 +2690,14 @@ pub const Opcode = enum(u16) { .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, .OpTypeAccelerationStructureKHR => struct { id_result: Id }, .OpExecuteCallableNV => struct { sbt_index: Id, callable_data_id: Id }, - .OpRayQueryGetClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, + .OpRayQueryGetIntersectionClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, .OpHitObjectGetClusterIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetRayTMinEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetShaderBindingTableRecordIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectGetShaderRecordBufferHandleEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectIsEmptyEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectIsHitEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, + .OpHitObjectIsMissEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpTypeCooperativeMatrixNV => struct { id_result: Id, component_type: Id, execution: Id, rows: Id, columns: Id }, .OpCooperativeMatrixLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null }, .OpCooperativeMatrixStoreNV => struct { pointer: Id, object: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null }, @@ -2636,10 +2775,10 @@ pub const Opcode = enum(u16) { .OpExpectKHR => struct { id_result_type: Id, id_result: Id, value: Id, expected_value: Id }, .OpDecorateString => struct { target: Id, decoration: Decoration.Extended }, .OpMemberDecorateString => struct { struct_type: Id, member: LiteralInteger, decoration: Decoration.Extended }, + .OpVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, length: Id }, + .OpSaveMemoryINTEL => struct { id_result_type: Id, id_result: Id }, + .OpRestoreMemoryINTEL => struct { ptr: Id }, .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} }, - .OpReadPipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id }, - .OpWritePipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id }, - .OpFPGARegINTEL => struct { id_result_type: Id, id_result: Id, input: Id }, .OpRayQueryGetRayTMinKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id }, .OpRayQueryGetRayFlagsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id }, .OpRayQueryGetIntersectionTKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, @@ -2668,11 +2807,6 @@ pub const Opcode = enum(u16) { .OpControlBarrierArriveINTEL => struct { execution: Id, memory: Id, semantics: Id }, .OpControlBarrierWaitINTEL => struct { execution: Id, memory: Id, semantics: Id }, .OpArithmeticFenceEXT => struct { id_result_type: Id, id_result: Id, target: Id }, - .OpTaskSequenceCreateINTEL => struct { id_result_type: Id, id_result: Id, function: Id, pipelined: LiteralInteger, use_stall_enable_clusters: LiteralInteger, get_capacity: LiteralInteger, async_capacity: LiteralInteger }, - .OpTaskSequenceAsyncINTEL => struct { sequence: Id, arguments: []const Id = &.{} }, - .OpTaskSequenceGetINTEL => struct { id_result_type: Id, id_result: Id, sequence: Id }, - .OpTaskSequenceReleaseINTEL => struct { sequence: Id }, - .OpTypeTaskSequenceINTEL => struct { id_result: Id }, .OpSubgroupBlockPrefetchINTEL => struct { ptr: Id, num_bytes: Id, memory_access: ?MemoryAccess.Extended = null }, .OpSubgroup2DBlockLoadINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id }, .OpSubgroup2DBlockLoadTransformINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id }, @@ -2681,6 +2815,14 @@ pub const Opcode = enum(u16) { .OpSubgroup2DBlockStoreINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_pointer: Id, dst_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id }, .OpSubgroupMatrixMultiplyAccumulateINTEL => struct { id_result_type: Id, id_result: Id, k_dim: Id, matrix_a: Id, matrix_b: Id, matrix_c: Id, matrix_multiply_accumulate_operands: ?MatrixMultiplyAccumulateOperands = null }, .OpBitwiseFunctionINTEL => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, lut_index: Id }, + .OpUntypedVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, element_type: Id, length: Id }, + .OpConditionalExtensionINTEL => struct { condition: Id, name: LiteralString }, + .OpConditionalEntryPointINTEL => struct { condition: Id, execution_model: ExecutionModel, entry_point: Id, name: LiteralString, interface: []const Id = &.{} }, + .OpConditionalCapabilityINTEL => struct { condition: Id, capability: Capability }, + .OpSpecConstantTargetINTEL => struct { id_result_type: Id, id_result: Id, target: LiteralInteger, features: []const LiteralInteger = &.{} }, + .OpSpecConstantArchitectureINTEL => struct { id_result_type: Id, id_result: Id, category: LiteralInteger, family: LiteralInteger, opcode: LiteralInteger, architecture: LiteralInteger }, + .OpSpecConstantCapabilitiesINTEL => struct { id_result_type: Id, id_result: Id, capabilities: []const Capability = &.{} }, + .OpConditionalCopyObjectINTEL => struct { id_result_type: Id, id_result: Id, id_ref: []const Id = &.{} }, .OpGroupIMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupFMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupBitwiseAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, @@ -2695,6 +2837,9 @@ pub const Opcode = enum(u16) { .OpConvertHandleToImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, .OpConvertHandleToSamplerINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, .OpConvertHandleToSampledImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, + .OpFDot2MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, + .OpFDot2MixAcc16VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, + .OpFDot4MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, }; } pub fn class(self: Opcode) Class { @@ -3068,12 +3213,14 @@ pub const Opcode = enum(u16) { .OpUntypedInBoundsPtrAccessChainKHR => .memory, .OpUntypedArrayLengthKHR => .memory, .OpUntypedPrefetchKHR => .memory, + .OpFmaKHR => .arithmetic, .OpSubgroupAllKHR => .group, .OpSubgroupAnyKHR => .group, .OpSubgroupAllEqualKHR => .group, .OpGroupNonUniformRotateKHR => .group, .OpSubgroupReadInvocationKHR => .group, .OpExtInstWithForwardRefsKHR => .extension, + .OpUntypedGroupAsyncCopyKHR => .group, .OpTraceRayKHR => .reserved, .OpExecuteCallableKHR => .reserved, .OpConvertUToAccelerationStructureKHR => .reserved, @@ -3104,10 +3251,14 @@ pub const Opcode = enum(u16) { .OpImageBoxFilterQCOM => .image, .OpImageBlockMatchSSDQCOM => .image, .OpImageBlockMatchSADQCOM => .image, + .OpBitCastArrayQCOM => .conversion, .OpImageBlockMatchWindowSSDQCOM => .image, .OpImageBlockMatchWindowSADQCOM => .image, .OpImageBlockMatchGatherSSDQCOM => .image, .OpImageBlockMatchGatherSADQCOM => .image, + .OpCompositeConstructCoopMatQCOM => .composite, + .OpCompositeExtractCoopMatQCOM => .composite, + .OpExtractSubArrayQCOM => .composite, .OpGroupIAddNonUniformAMD => .group, .OpGroupFAddNonUniformAMD => .group, .OpGroupFMinNonUniformAMD => .group, @@ -3129,6 +3280,16 @@ pub const Opcode = enum(u16) { .OpSpecConstantStringAMDX => .reserved, .OpGroupNonUniformQuadAllKHR => .non_uniform, .OpGroupNonUniformQuadAnyKHR => .non_uniform, + .OpTypeBufferEXT => .type_declaration, + .OpBufferPointerEXT => .memory, + .OpAbortKHR => .control_flow, + .OpUntypedImageTexelPointerEXT => .memory, + .OpMemberDecorateIdEXT => .annotation, + .OpConstantSizeOfEXT => .constant_creation, + .OpConstantDataKHR => .constant_creation, + .OpSpecConstantDataKHR => .constant_creation, + .OpPoisonKHR => .miscellaneous, + .OpFreezeKHR => .miscellaneous, .OpHitObjectRecordHitMotionNV => .reserved, .OpHitObjectRecordHitWithIndexMotionNV => .reserved, .OpHitObjectRecordMissMotionNV => .reserved, @@ -3163,7 +3324,7 @@ pub const Opcode = enum(u16) { .OpReorderThreadWithHintNV => .reserved, .OpTypeHitObjectNV => .type_declaration, .OpImageSampleFootprintNV => .image, - .OpTypeCooperativeVectorNV => .type_declaration, + .OpTypeVectorIdEXT => .type_declaration, .OpCooperativeVectorMatrixMulNV => .reserved, .OpCooperativeVectorOuterProductAccumulateNV => .reserved, .OpCooperativeVectorReduceSumAccumulateNV => .reserved, @@ -3171,12 +3332,42 @@ pub const Opcode = enum(u16) { .OpCooperativeMatrixConvertNV => .conversion, .OpEmitMeshTasksEXT => .reserved, .OpSetMeshOutputsEXT => .reserved, - .OpGroupNonUniformPartitionNV => .non_uniform, + .OpGroupNonUniformPartitionEXT => .non_uniform, .OpWritePackedPrimitiveIndices4x8NV => .reserved, .OpFetchMicroTriangleVertexPositionNV => .reserved, .OpFetchMicroTriangleVertexBarycentricNV => .reserved, .OpCooperativeVectorLoadNV => .memory, .OpCooperativeVectorStoreNV => .memory, + .OpHitObjectRecordFromQueryEXT => .reserved, + .OpHitObjectRecordMissEXT => .reserved, + .OpHitObjectRecordMissMotionEXT => .reserved, + .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => .reserved, + .OpHitObjectGetRayFlagsEXT => .reserved, + .OpHitObjectSetShaderBindingTableRecordIndexEXT => .reserved, + .OpHitObjectReorderExecuteShaderEXT => .reserved, + .OpHitObjectTraceReorderExecuteEXT => .reserved, + .OpHitObjectTraceMotionReorderExecuteEXT => .reserved, + .OpTypeHitObjectEXT => .type_declaration, + .OpReorderThreadWithHintEXT => .reserved, + .OpReorderThreadWithHitObjectEXT => .reserved, + .OpHitObjectTraceRayEXT => .reserved, + .OpHitObjectTraceRayMotionEXT => .reserved, + .OpHitObjectRecordEmptyEXT => .reserved, + .OpHitObjectExecuteShaderEXT => .reserved, + .OpHitObjectGetCurrentTimeEXT => .reserved, + .OpHitObjectGetAttributesEXT => .reserved, + .OpHitObjectGetHitKindEXT => .reserved, + .OpHitObjectGetPrimitiveIndexEXT => .reserved, + .OpHitObjectGetGeometryIndexEXT => .reserved, + .OpHitObjectGetInstanceIdEXT => .reserved, + .OpHitObjectGetInstanceCustomIndexEXT => .reserved, + .OpHitObjectGetObjectRayOriginEXT => .reserved, + .OpHitObjectGetObjectRayDirectionEXT => .reserved, + .OpHitObjectGetWorldRayDirectionEXT => .reserved, + .OpHitObjectGetWorldRayOriginEXT => .reserved, + .OpHitObjectGetObjectToWorldEXT => .reserved, + .OpHitObjectGetWorldToObjectEXT => .reserved, + .OpHitObjectGetRayTMaxEXT => .reserved, .OpReportIntersectionKHR => .reserved, .OpIgnoreIntersectionNV => .reserved, .OpTerminateRayNV => .reserved, @@ -3186,8 +3377,14 @@ pub const Opcode = enum(u16) { .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .reserved, .OpTypeAccelerationStructureKHR => .type_declaration, .OpExecuteCallableNV => .reserved, - .OpRayQueryGetClusterIdNV => .reserved, + .OpRayQueryGetIntersectionClusterIdNV => .reserved, .OpHitObjectGetClusterIdNV => .reserved, + .OpHitObjectGetRayTMinEXT => .reserved, + .OpHitObjectGetShaderBindingTableRecordIndexEXT => .reserved, + .OpHitObjectGetShaderRecordBufferHandleEXT => .reserved, + .OpHitObjectIsEmptyEXT => .reserved, + .OpHitObjectIsHitEXT => .reserved, + .OpHitObjectIsMissEXT => .reserved, .OpTypeCooperativeMatrixNV => .type_declaration, .OpCooperativeMatrixLoadNV => .reserved, .OpCooperativeMatrixStoreNV => .reserved, @@ -3265,10 +3462,10 @@ pub const Opcode = enum(u16) { .OpExpectKHR => .miscellaneous, .OpDecorateString => .annotation, .OpMemberDecorateString => .annotation, + .OpVariableLengthArrayINTEL => .memory, + .OpSaveMemoryINTEL => .memory, + .OpRestoreMemoryINTEL => .memory, .OpLoopControlINTEL => .reserved, - .OpReadPipeBlockingINTEL => .pipe, - .OpWritePipeBlockingINTEL => .pipe, - .OpFPGARegINTEL => .reserved, .OpRayQueryGetRayTMinKHR => .reserved, .OpRayQueryGetRayFlagsKHR => .reserved, .OpRayQueryGetIntersectionTKHR => .reserved, @@ -3297,11 +3494,6 @@ pub const Opcode = enum(u16) { .OpControlBarrierArriveINTEL => .barrier, .OpControlBarrierWaitINTEL => .barrier, .OpArithmeticFenceEXT => .miscellaneous, - .OpTaskSequenceCreateINTEL => .reserved, - .OpTaskSequenceAsyncINTEL => .reserved, - .OpTaskSequenceGetINTEL => .reserved, - .OpTaskSequenceReleaseINTEL => .reserved, - .OpTypeTaskSequenceINTEL => .type_declaration, .OpSubgroupBlockPrefetchINTEL => .group, .OpSubgroup2DBlockLoadINTEL => .group, .OpSubgroup2DBlockLoadTransformINTEL => .group, @@ -3310,6 +3502,14 @@ pub const Opcode = enum(u16) { .OpSubgroup2DBlockStoreINTEL => .group, .OpSubgroupMatrixMultiplyAccumulateINTEL => .group, .OpBitwiseFunctionINTEL => .bit, + .OpUntypedVariableLengthArrayINTEL => .memory, + .OpConditionalExtensionINTEL => .extension, + .OpConditionalEntryPointINTEL => .mode_setting, + .OpConditionalCapabilityINTEL => .mode_setting, + .OpSpecConstantTargetINTEL => .constant_creation, + .OpSpecConstantArchitectureINTEL => .constant_creation, + .OpSpecConstantCapabilitiesINTEL => .constant_creation, + .OpConditionalCopyObjectINTEL => .composite, .OpGroupIMulKHR => .group, .OpGroupFMulKHR => .group, .OpGroupBitwiseAndKHR => .group, @@ -3324,94 +3524,13 @@ pub const Opcode = enum(u16) { .OpConvertHandleToImageINTEL => .image, .OpConvertHandleToSamplerINTEL => .image, .OpConvertHandleToSampledImageINTEL => .image, + .OpFDot2MixAcc32VALVE => .reserved, + .OpFDot2MixAcc16VALVE => .reserved, + .OpFDot4MixAcc32VALVE => .reserved, }; } }; -pub const GlslOpcode = enum(u16) { - Round = 1, - RoundEven = 2, - Trunc = 3, - FAbs = 4, - SAbs = 5, - FSign = 6, - SSign = 7, - Floor = 8, - Ceil = 9, - Fract = 10, - Radians = 11, - Degrees = 12, - Sin = 13, - Cos = 14, - Tan = 15, - Asin = 16, - Acos = 17, - Atan = 18, - Sinh = 19, - Cosh = 20, - Tanh = 21, - Asinh = 22, - Acosh = 23, - Atanh = 24, - Atan2 = 25, - Pow = 26, - Exp = 27, - Log = 28, - Exp2 = 29, - Log2 = 30, - Sqrt = 31, - InverseSqrt = 32, - Determinant = 33, - MatrixInverse = 34, - Modf = 35, - ModfStruct = 36, - FMin = 37, - UMin = 38, - SMin = 39, - FMax = 40, - UMax = 41, - SMax = 42, - FClamp = 43, - UClamp = 44, - SClamp = 45, - FMix = 46, - IMix = 47, - Step = 48, - SmoothStep = 49, - Fma = 50, - Frexp = 51, - FrexpStruct = 52, - Ldexp = 53, - PackSnorm4x8 = 54, - PackUnorm4x8 = 55, - PackSnorm2x16 = 56, - PackUnorm2x16 = 57, - PackHalf2x16 = 58, - PackDouble2x32 = 59, - UnpackSnorm2x16 = 60, - UnpackUnorm2x16 = 61, - UnpackHalf2x16 = 62, - UnpackSnorm4x8 = 63, - UnpackUnorm4x8 = 64, - UnpackDouble2x32 = 65, - Length = 66, - Distance = 67, - Cross = 68, - Normalize = 69, - FaceForward = 70, - Reflect = 71, - Refract = 72, - FindILsb = 73, - FindSMsb = 74, - FindUMsb = 75, - InterpolateAtCentroid = 76, - InterpolateAtSample = 77, - InterpolateAtOffset = 78, - NMin = 79, - NMax = 80, - NClamp = 81, -}; - pub const OpenClOpcode = enum(u16) { acos = 0, acosh = 1, @@ -3577,6 +3696,90 @@ pub const OpenClOpcode = enum(u16) { u_mad_hi = 204, }; +pub const GlslOpcode = enum(u16) { + Round = 1, + RoundEven = 2, + Trunc = 3, + FAbs = 4, + SAbs = 5, + FSign = 6, + SSign = 7, + Floor = 8, + Ceil = 9, + Fract = 10, + Radians = 11, + Degrees = 12, + Sin = 13, + Cos = 14, + Tan = 15, + Asin = 16, + Acos = 17, + Atan = 18, + Sinh = 19, + Cosh = 20, + Tanh = 21, + Asinh = 22, + Acosh = 23, + Atanh = 24, + Atan2 = 25, + Pow = 26, + Exp = 27, + Log = 28, + Exp2 = 29, + Log2 = 30, + Sqrt = 31, + InverseSqrt = 32, + Determinant = 33, + MatrixInverse = 34, + Modf = 35, + ModfStruct = 36, + FMin = 37, + UMin = 38, + SMin = 39, + FMax = 40, + UMax = 41, + SMax = 42, + FClamp = 43, + UClamp = 44, + SClamp = 45, + FMix = 46, + IMix = 47, + Step = 48, + SmoothStep = 49, + Fma = 50, + Frexp = 51, + FrexpStruct = 52, + Ldexp = 53, + PackSnorm4x8 = 54, + PackUnorm4x8 = 55, + PackSnorm2x16 = 56, + PackUnorm2x16 = 57, + PackHalf2x16 = 58, + PackDouble2x32 = 59, + UnpackSnorm2x16 = 60, + UnpackUnorm2x16 = 61, + UnpackHalf2x16 = 62, + UnpackSnorm4x8 = 63, + UnpackUnorm4x8 = 64, + UnpackDouble2x32 = 65, + Length = 66, + Distance = 67, + Cross = 68, + Normalize = 69, + FaceForward = 70, + Reflect = 71, + Refract = 72, + FindILsb = 73, + FindSMsb = 74, + FindUMsb = 75, + InterpolateAtCentroid = 76, + InterpolateAtSample = 77, + InterpolateAtOffset = 78, + NMin = 79, + NMax = 80, + NClamp = 81, +}; + pub const Zig = enum(u16) { InvocationGlobal = 0, }; @@ -3734,16 +3937,16 @@ pub const LoopControl = packed struct { _reserved_bit_13: bool = false, _reserved_bit_14: bool = false, _reserved_bit_15: bool = false, - initiation_interval_intel: bool = false, - max_concurrency_intel: bool = false, - dependency_array_intel: bool = false, - pipeline_enable_intel: bool = false, - loop_coalesce_intel: bool = false, - max_interleaving_intel: bool = false, - speculated_iterations_intel: bool = false, - no_fusion_intel: bool = false, - loop_count_intel: bool = false, - max_reinvocation_delay_intel: bool = false, + initiation_interval_altera: bool = false, + max_concurrency_altera: bool = false, + dependency_array_altera: bool = false, + pipeline_enable_altera: bool = false, + loop_coalesce_altera: bool = false, + max_interleaving_altera: bool = false, + speculated_iterations_altera: bool = false, + no_fusion_altera: bool = false, + loop_count_altera: bool = false, + max_reinvocation_delay_altera: bool = false, _reserved_bit_26: bool = false, _reserved_bit_27: bool = false, _reserved_bit_28: bool = false, @@ -3768,16 +3971,16 @@ pub const LoopControl = packed struct { _reserved_bit_13: bool = false, _reserved_bit_14: bool = false, _reserved_bit_15: bool = false, - initiation_interval_intel: ?struct { literal_integer: LiteralInteger } = null, - max_concurrency_intel: ?struct { literal_integer: LiteralInteger } = null, - dependency_array_intel: ?struct { literal_integer: LiteralInteger } = null, - pipeline_enable_intel: ?struct { literal_integer: LiteralInteger } = null, - loop_coalesce_intel: ?struct { literal_integer: LiteralInteger } = null, - max_interleaving_intel: ?struct { literal_integer: LiteralInteger } = null, - speculated_iterations_intel: ?struct { literal_integer: LiteralInteger } = null, - no_fusion_intel: bool = false, - loop_count_intel: ?struct { literal_integer: LiteralInteger } = null, - max_reinvocation_delay_intel: ?struct { literal_integer: LiteralInteger } = null, + initiation_interval_altera: ?struct { literal_integer: LiteralInteger } = null, + max_concurrency_altera: ?struct { literal_integer: LiteralInteger } = null, + dependency_array_altera: ?struct { literal_integer: LiteralInteger } = null, + pipeline_enable_altera: ?struct { literal_integer: LiteralInteger } = null, + loop_coalesce_altera: ?struct { literal_integer: LiteralInteger } = null, + max_interleaving_altera: ?struct { literal_integer: LiteralInteger } = null, + speculated_iterations_altera: ?struct { literal_integer: LiteralInteger } = null, + no_fusion_altera: bool = false, + loop_count_altera: ?struct { literal_integer: LiteralInteger } = null, + max_reinvocation_delay_altera: ?struct { literal_integer: LiteralInteger } = null, _reserved_bit_26: bool = false, _reserved_bit_27: bool = false, _reserved_bit_28: bool = false, @@ -4174,6 +4377,7 @@ pub const ExecutionMode = enum(u32) { quad_derivatives_khr = 5088, require_full_quads_khr = 5089, shares_input_with_amdx = 5102, + arithmetic_poison_khr = 5157, output_lines_ext = 5269, output_primitives_ext = 5270, derivative_group_quads_khr = 5289, @@ -4185,6 +4389,7 @@ pub const ExecutionMode = enum(u32) { sample_interlock_unordered_ext = 5369, shading_rate_interlock_ordered_ext = 5370, shading_rate_interlock_unordered_ext = 5371, + shader64bit_indexing_ext = 5427, shared_local_memory_size_intel = 5618, rounding_mode_rtpintel = 5620, rounding_mode_rtnintel = 5621, @@ -4272,6 +4477,7 @@ pub const ExecutionMode = enum(u32) { quad_derivatives_khr, require_full_quads_khr, shares_input_with_amdx: struct { node_name: Id, shader_index: Id }, + arithmetic_poison_khr, output_lines_ext, output_primitives_ext: struct { primitive_count: LiteralInteger }, derivative_group_quads_khr, @@ -4283,6 +4489,7 @@ pub const ExecutionMode = enum(u32) { sample_interlock_unordered_ext, shading_rate_interlock_ordered_ext, shading_rate_interlock_unordered_ext, + shader64bit_indexing_ext, shared_local_memory_size_intel: struct { size: LiteralInteger }, rounding_mode_rtpintel: struct { target_width: LiteralInteger }, rounding_mode_rtnintel: struct { target_width: LiteralInteger }, @@ -4329,9 +4536,10 @@ pub const StorageClass = enum(u32) { physical_storage_buffer = 5349, hit_object_attribute_nv = 5385, task_payload_workgroup_ext = 5402, + hit_object_attribute_ext = 5411, code_section_intel = 5605, - device_only_intel = 5936, - host_only_intel = 5937, + device_only_altera = 5936, + host_only_altera = 5937, }; pub const Dim = enum(u32) { @"1d" = 0, @@ -4503,7 +4711,7 @@ pub const FunctionParameterAttribute = enum(u32) { no_capture = 5, no_write = 6, no_read_write = 7, - runtime_aligned_intel = 5940, + runtime_aligned_altera = 5940, }; pub const Decoration = enum(u32) { relaxed_precision = 0, @@ -4568,6 +4776,9 @@ pub const Decoration = enum(u32) { payload_node_sparse_array_amdx = 5099, payload_node_array_size_amdx = 5100, payload_dispatch_indirect_amdx = 5105, + array_stride_id_ext = 5124, + offset_id_ext = 5125, + utf_encoded_khr = 5145, override_coverage_nv = 5248, passthrough_nv = 5250, viewport_relative_nv = 5252, @@ -4579,7 +4790,10 @@ pub const Decoration = enum(u32) { non_uniform = 5300, restrict_pointer = 5355, aliased_pointer = 5356, + member_offset_nv = 5358, hit_object_shader_record_buffer_nv = 5386, + hit_object_shader_record_buffer_ext = 5389, + bank_nv = 5397, bindless_sampler_nv = 5398, bindless_image_nv = 5399, bound_sampler_nv = 5400, @@ -4598,55 +4812,56 @@ pub const Decoration = enum(u32) { user_type_google = 5636, function_rounding_mode_intel = 5822, function_denorm_mode_intel = 5823, - register_intel = 5825, - memory_intel = 5826, - numbanks_intel = 5827, - bankwidth_intel = 5828, - max_private_copies_intel = 5829, - singlepump_intel = 5830, - doublepump_intel = 5831, - max_replicates_intel = 5832, - simple_dual_port_intel = 5833, - merge_intel = 5834, - bank_bits_intel = 5835, - force_pow2depth_intel = 5836, - stridesize_intel = 5883, - wordsize_intel = 5884, - true_dual_port_intel = 5885, - burst_coalesce_intel = 5899, - cache_size_intel = 5900, - dont_statically_coalesce_intel = 5901, - prefetch_intel = 5902, - stall_enable_intel = 5905, - fuse_loops_in_function_intel = 5907, - math_op_dsp_mode_intel = 5909, + register_altera = 5825, + memory_altera = 5826, + numbanks_altera = 5827, + bankwidth_altera = 5828, + max_private_copies_altera = 5829, + singlepump_altera = 5830, + doublepump_altera = 5831, + max_replicates_altera = 5832, + simple_dual_port_altera = 5833, + merge_altera = 5834, + bank_bits_altera = 5835, + force_pow2depth_altera = 5836, + stridesize_altera = 5883, + wordsize_altera = 5884, + true_dual_port_altera = 5885, + burst_coalesce_altera = 5899, + cache_size_altera = 5900, + dont_statically_coalesce_altera = 5901, + prefetch_altera = 5902, + stall_enable_altera = 5905, + fuse_loops_in_function_altera = 5907, + math_op_dsp_mode_altera = 5909, alias_scope_intel = 5914, no_alias_intel = 5915, - initiation_interval_intel = 5917, - max_concurrency_intel = 5918, - pipeline_enable_intel = 5919, - buffer_location_intel = 5921, - io_pipe_storage_intel = 5944, + initiation_interval_altera = 5917, + max_concurrency_altera = 5918, + pipeline_enable_altera = 5919, + buffer_location_altera = 5921, + io_pipe_storage_altera = 5944, function_floating_point_mode_intel = 6080, single_element_vector_intel = 6085, vector_compute_callable_function_intel = 6087, media_block_iointel = 6140, - stall_free_intel = 6151, + stall_free_altera = 6151, fp_max_error_decoration_intel = 6170, - latency_control_label_intel = 6172, - latency_control_constraint_intel = 6173, - conduit_kernel_argument_intel = 6175, - register_map_kernel_argument_intel = 6176, - mm_host_interface_address_width_intel = 6177, - mm_host_interface_data_width_intel = 6178, - mm_host_interface_latency_intel = 6179, - mm_host_interface_read_write_mode_intel = 6180, - mm_host_interface_max_burst_intel = 6181, - mm_host_interface_wait_request_intel = 6182, - stable_kernel_argument_intel = 6183, + latency_control_label_altera = 6172, + latency_control_constraint_altera = 6173, + conduit_kernel_argument_altera = 6175, + register_map_kernel_argument_altera = 6176, + mm_host_interface_address_width_altera = 6177, + mm_host_interface_data_width_altera = 6178, + mm_host_interface_latency_altera = 6179, + mm_host_interface_read_write_mode_altera = 6180, + mm_host_interface_max_burst_altera = 6181, + mm_host_interface_wait_request_altera = 6182, + stable_kernel_argument_altera = 6183, host_access_intel = 6188, - init_mode_intel = 6190, - implement_in_register_map_intel = 6191, + init_mode_altera = 6190, + implement_in_register_map_altera = 6191, + conditional_intel = 6247, cache_control_load_intel = 6442, cache_control_store_intel = 6443, @@ -4713,6 +4928,9 @@ pub const Decoration = enum(u32) { payload_node_sparse_array_amdx, payload_node_array_size_amdx: struct { array_size: Id }, payload_dispatch_indirect_amdx, + array_stride_id_ext: struct { array_stride: Id }, + offset_id_ext: struct { byte_offset: Id }, + utf_encoded_khr, override_coverage_nv, passthrough_nv, viewport_relative_nv, @@ -4724,7 +4942,10 @@ pub const Decoration = enum(u32) { non_uniform, restrict_pointer, aliased_pointer, + member_offset_nv: struct { member_offset: LiteralInteger }, hit_object_shader_record_buffer_nv, + hit_object_shader_record_buffer_ext, + bank_nv: struct { bank: LiteralInteger }, bindless_sampler_nv, bindless_image_nv, bound_sampler_nv, @@ -4743,55 +4964,56 @@ pub const Decoration = enum(u32) { user_type_google: struct { user_type: LiteralString }, function_rounding_mode_intel: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode }, function_denorm_mode_intel: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode }, - register_intel, - memory_intel: struct { memory_type: LiteralString }, - numbanks_intel: struct { banks: LiteralInteger }, - bankwidth_intel: struct { bank_width: LiteralInteger }, - max_private_copies_intel: struct { maximum_copies: LiteralInteger }, - singlepump_intel, - doublepump_intel, - max_replicates_intel: struct { maximum_replicates: LiteralInteger }, - simple_dual_port_intel, - merge_intel: struct { merge_key: LiteralString, merge_type: LiteralString }, - bank_bits_intel: struct { bank_bits: []const LiteralInteger = &.{} }, - force_pow2depth_intel: struct { force_key: LiteralInteger }, - stridesize_intel: struct { stride_size: LiteralInteger }, - wordsize_intel: struct { word_size: LiteralInteger }, - true_dual_port_intel, - burst_coalesce_intel, - cache_size_intel: struct { cache_size_in_bytes: LiteralInteger }, - dont_statically_coalesce_intel, - prefetch_intel: struct { prefetcher_size_in_bytes: LiteralInteger }, - stall_enable_intel, - fuse_loops_in_function_intel, - math_op_dsp_mode_intel: struct { mode: LiteralInteger, propagate: LiteralInteger }, + register_altera, + memory_altera: struct { memory_type: LiteralString }, + numbanks_altera: struct { banks: LiteralInteger }, + bankwidth_altera: struct { bank_width: LiteralInteger }, + max_private_copies_altera: struct { maximum_copies: LiteralInteger }, + singlepump_altera, + doublepump_altera, + max_replicates_altera: struct { maximum_replicates: LiteralInteger }, + simple_dual_port_altera, + merge_altera: struct { merge_key: LiteralString, merge_type: LiteralString }, + bank_bits_altera: struct { bank_bits: []const LiteralInteger = &.{} }, + force_pow2depth_altera: struct { force_key: LiteralInteger }, + stridesize_altera: struct { stride_size: LiteralInteger }, + wordsize_altera: struct { word_size: LiteralInteger }, + true_dual_port_altera, + burst_coalesce_altera, + cache_size_altera: struct { cache_size_in_bytes: LiteralInteger }, + dont_statically_coalesce_altera, + prefetch_altera: struct { prefetcher_size_in_bytes: LiteralInteger }, + stall_enable_altera, + fuse_loops_in_function_altera, + math_op_dsp_mode_altera: struct { mode: LiteralInteger, propagate: LiteralInteger }, alias_scope_intel: struct { aliasing_scopes_list: Id }, no_alias_intel: struct { aliasing_scopes_list: Id }, - initiation_interval_intel: struct { cycles: LiteralInteger }, - max_concurrency_intel: struct { invocations: LiteralInteger }, - pipeline_enable_intel: struct { enable: LiteralInteger }, - buffer_location_intel: struct { buffer_location_id: LiteralInteger }, - io_pipe_storage_intel: struct { io_pipe_id: LiteralInteger }, + initiation_interval_altera: struct { cycles: LiteralInteger }, + max_concurrency_altera: struct { invocations: LiteralInteger }, + pipeline_enable_altera: struct { enable: LiteralInteger }, + buffer_location_altera: struct { buffer_location_id: LiteralInteger }, + io_pipe_storage_altera: struct { io_pipe_id: LiteralInteger }, function_floating_point_mode_intel: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode }, single_element_vector_intel, vector_compute_callable_function_intel, media_block_iointel, - stall_free_intel, + stall_free_altera, fp_max_error_decoration_intel: struct { max_error: LiteralFloat }, - latency_control_label_intel: struct { latency_label: LiteralInteger }, - latency_control_constraint_intel: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger }, - conduit_kernel_argument_intel, - register_map_kernel_argument_intel, - mm_host_interface_address_width_intel: struct { address_width: LiteralInteger }, - mm_host_interface_data_width_intel: struct { data_width: LiteralInteger }, - mm_host_interface_latency_intel: struct { latency: LiteralInteger }, - mm_host_interface_read_write_mode_intel: struct { read_write_mode: AccessQualifier }, - mm_host_interface_max_burst_intel: struct { max_burst_count: LiteralInteger }, - mm_host_interface_wait_request_intel: struct { waitrequest: LiteralInteger }, - stable_kernel_argument_intel, + latency_control_label_altera: struct { latency_label: LiteralInteger }, + latency_control_constraint_altera: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger }, + conduit_kernel_argument_altera, + register_map_kernel_argument_altera, + mm_host_interface_address_width_altera: struct { address_width: LiteralInteger }, + mm_host_interface_data_width_altera: struct { data_width: LiteralInteger }, + mm_host_interface_latency_altera: struct { latency: LiteralInteger }, + mm_host_interface_read_write_mode_altera: struct { read_write_mode: AccessQualifier }, + mm_host_interface_max_burst_altera: struct { max_burst_count: LiteralInteger }, + mm_host_interface_wait_request_altera: struct { waitrequest: LiteralInteger }, + stable_kernel_argument_altera, host_access_intel: struct { access: HostAccessQualifier, name: LiteralString }, - init_mode_intel: struct { trigger: InitializationModeQualifier }, - implement_in_register_map_intel: struct { value: LiteralInteger }, + init_mode_altera: struct { trigger: InitializationModeQualifier }, + implement_in_register_map_altera: struct { value: LiteralInteger }, + conditional_intel: struct { condition: Id }, cache_control_load_intel: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl }, cache_control_store_intel: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl }, }; @@ -4868,6 +5090,8 @@ pub const BuiltIn = enum(u32) { frag_stencil_ref_ext = 5014, remaining_recursion_levels_amdx = 5021, shader_index_amdx = 5073, + sampler_heap_ext = 5122, + resource_heap_ext = 5123, viewport_mask_nv = 5253, secondary_position_nv = 5257, secondary_viewport_mask_nv = 5258, @@ -4938,9 +5162,9 @@ pub const GroupOperation = enum(u32) { inclusive_scan = 1, exclusive_scan = 2, clustered_reduce = 3, - partitioned_reduce_nv = 6, - partitioned_inclusive_scan_nv = 7, - partitioned_exclusive_scan_nv = 8, + partitioned_reduce_ext = 6, + partitioned_inclusive_scan_ext = 7, + partitioned_exclusive_scan_ext = 8, }; pub const KernelEnqueueFlags = enum(u32) { no_wait = 0, @@ -4989,8 +5213,6 @@ pub const Capability = enum(u32) { input_attachment = 40, sparse_residency = 41, min_lod = 42, - sampled1d = 43, - image1d = 44, sampled_cube_array = 45, sampled_buffer = 46, image_buffer = 47, @@ -5018,15 +5240,9 @@ pub const Capability = enum(u32) { shader_layer = 69, shader_viewport_index = 70, uniform_decoration = 71, - core_builtins_arm = 4165, tile_image_color_read_access_ext = 4166, tile_image_depth_read_access_ext = 4167, tile_image_stencil_read_access_ext = 4168, - tensors_arm = 4174, - storage_tensor_array_dynamic_indexing_arm = 4175, - storage_tensor_array_non_uniform_indexing_arm = 4176, - graph_arm = 4191, - cooperative_matrix_layouts_arm = 4201, float8ext = 4212, float8cooperative_matrix_ext = 4213, fragment_shading_rate_khr = 4422, @@ -5052,46 +5268,29 @@ pub const Capability = enum(u32) { denorm_preserve = 4464, denorm_flush_to_zero = 4465, signed_zero_inf_nan_preserve = 4466, - rounding_mode_rte = 4467, - rounding_mode_rtz = 4468, ray_query_provisional_khr = 4471, ray_query_khr = 4472, untyped_pointers_khr = 4473, ray_traversal_primitive_culling_khr = 4478, ray_tracing_khr = 4479, - texture_sample_weighted_qcom = 4484, - texture_box_filter_qcom = 4485, - texture_block_match_qcom = 4486, - tile_shading_qcom = 4495, - texture_block_match2qcom = 4498, - float16image_amd = 5008, - image_gather_bias_lod_amd = 5009, - fragment_mask_amd = 5010, stencil_export_ext = 5013, - image_read_write_lod_amd = 5015, int64image_ext = 5016, shader_clock_khr = 5055, - shader_enqueue_amdx = 5067, quad_control_khr = 5087, - int4type_intel = 5112, - int4cooperative_matrix_intel = 5114, b_float16type_khr = 5116, b_float16dot_product_khr = 5117, b_float16cooperative_matrix_khr = 5118, - sample_mask_override_coverage_nv = 5249, - geometry_shader_passthrough_nv = 5251, + abort_khr = 5120, + descriptor_heap_ext = 5128, + constant_data_khr = 5146, + poison_freeze_khr = 5156, shader_viewport_index_layer_ext = 5254, - shader_viewport_mask_nv = 5255, - shader_stereo_view_nv = 5259, - per_view_attributes_nv = 5260, fragment_fully_covered_ext = 5265, - mesh_shading_nv = 5266, - image_footprint_nv = 5282, mesh_shading_ext = 5283, fragment_barycentric_khr = 5284, compute_derivative_group_quads_khr = 5288, fragment_density_ext = 5291, - group_non_uniform_partitioned_nv = 5297, + group_non_uniform_partitioned_ext = 5297, shader_non_uniform = 5301, runtime_descriptor_array = 5302, input_attachment_array_dynamic_indexing = 5303, @@ -5105,80 +5304,24 @@ pub const Capability = enum(u32) { uniform_texel_buffer_array_non_uniform_indexing = 5311, storage_texel_buffer_array_non_uniform_indexing = 5312, ray_tracing_position_fetch_khr = 5336, - ray_tracing_nv = 5340, - ray_tracing_motion_blur_nv = 5341, vulkan_memory_model = 5345, vulkan_memory_model_device_scope = 5346, physical_storage_buffer_addresses = 5347, compute_derivative_group_linear_khr = 5350, ray_tracing_provisional_khr = 5353, - cooperative_matrix_nv = 5357, fragment_shader_sample_interlock_ext = 5363, fragment_shader_shading_rate_interlock_ext = 5372, - shader_sm_builtins_nv = 5373, fragment_shader_pixel_interlock_ext = 5378, demote_to_helper_invocation = 5379, - displacement_micromap_nv = 5380, ray_tracing_opacity_micromap_ext = 5381, - shader_invocation_reorder_nv = 5383, - bindless_texture_nv = 5390, + shader_invocation_reorder_ext = 5388, ray_query_position_fetch_khr = 5391, - cooperative_vector_nv = 5394, - atomic_float16vector_nv = 5404, - ray_tracing_displacement_micromap_nv = 5409, - raw_access_chains_nv = 5414, - ray_tracing_spheres_geometry_nv = 5418, - ray_tracing_linear_swept_spheres_geometry_nv = 5419, - cooperative_matrix_reductions_nv = 5430, - cooperative_matrix_conversions_nv = 5431, - cooperative_matrix_per_element_operations_nv = 5432, - cooperative_matrix_tensor_addressing_nv = 5433, - cooperative_matrix_block_loads_nv = 5434, - cooperative_vector_training_nv = 5435, - ray_tracing_cluster_acceleration_structure_nv = 5437, - tensor_addressing_nv = 5439, - subgroup_shuffle_intel = 5568, - subgroup_buffer_block_iointel = 5569, - subgroup_image_block_iointel = 5570, - subgroup_image_media_block_iointel = 5579, - round_to_infinity_intel = 5582, - floating_point_mode_intel = 5583, - integer_functions2intel = 5584, - function_pointers_intel = 5603, - indirect_references_intel = 5604, - asm_intel = 5606, + long_vector_ext = 5425, + shader64bit_indexing_ext = 5426, atomic_float32min_max_ext = 5612, atomic_float64min_max_ext = 5613, atomic_float16min_max_ext = 5616, - vector_compute_intel = 5617, - vector_any_intel = 5619, expect_assume_khr = 5629, - subgroup_avc_motion_estimation_intel = 5696, - subgroup_avc_motion_estimation_intra_intel = 5697, - subgroup_avc_motion_estimation_chroma_intel = 5698, - variable_length_array_intel = 5817, - function_float_control_intel = 5821, - fpga_memory_attributes_intel = 5824, - fp_fast_math_mode_intel = 5837, - arbitrary_precision_integers_intel = 5844, - arbitrary_precision_floating_point_intel = 5845, - unstructured_loop_controls_intel = 5886, - fpga_loop_controls_intel = 5888, - kernel_attributes_intel = 5892, - fpga_kernel_attributes_intel = 5897, - fpga_memory_accesses_intel = 5898, - fpga_cluster_attributes_intel = 5904, - loop_fuse_intel = 5906, - fpgadsp_control_intel = 5908, - memory_access_aliasing_intel = 5910, - fpga_invocation_pipelining_attributes_intel = 5916, - fpga_buffer_location_intel = 5920, - arbitrary_precision_fixed_point_intel = 5922, - usm_storage_classes_intel = 5935, - runtime_aligned_attribute_intel = 5939, - io_pipes_intel = 5943, - blocking_pipes_intel = 5945, - fpga_reg_intel = 5948, dot_product_input_all = 6016, dot_product_input4x8bit = 6017, dot_product_input4x8bit_packed = 6018, @@ -5189,123 +5332,663 @@ pub const Capability = enum(u32) { bit_instructions = 6025, group_non_uniform_rotate_khr = 6026, float_controls2 = 6029, + fmakhr = 6030, atomic_float32add_ext = 6033, atomic_float64add_ext = 6034, - long_composites_intel = 6089, opt_none_ext = 6094, atomic_float16add_ext = 6095, - debug_info_module_intel = 6114, - b_float16conversion_intel = 6115, - split_barrier_intel = 6141, arithmetic_fence_ext = 6144, - fpga_cluster_attributes_v2intel = 6150, - fpga_kernel_attributesv2intel = 6161, - task_sequence_intel = 6162, - fp_max_error_intel = 6169, - fpga_latency_control_intel = 6171, - fpga_argument_interfaces_intel = 6174, - global_variable_host_access_intel = 6187, - global_variable_fpga_decorations_intel = 6189, - subgroup_buffer_prefetch_intel = 6220, - subgroup2d_block_iointel = 6228, - subgroup2d_block_transform_intel = 6229, - subgroup2d_block_transpose_intel = 6230, - subgroup_matrix_multiply_accumulate_intel = 6236, - ternary_bitwise_function_intel = 6241, group_uniform_arithmetic_khr = 6400, - tensor_float32rounding_intel = 6425, - masked_gather_scatter_intel = 6427, - cache_controls_intel = 6441, - register_limits_intel = 6460, - bindless_images_intel = 6528, -}; -pub const RayQueryIntersection = enum(u32) { - ray_query_candidate_intersection_khr = 0, - ray_query_committed_intersection_khr = 1, -}; -pub const RayQueryCommittedIntersectionType = enum(u32) { - ray_query_committed_intersection_none_khr = 0, - ray_query_committed_intersection_triangle_khr = 1, - ray_query_committed_intersection_generated_khr = 2, -}; -pub const RayQueryCandidateIntersectionType = enum(u32) { - ray_query_candidate_intersection_triangle_khr = 0, - ray_query_candidate_intersection_aabbkhr = 1, -}; -pub const PackedVectorFormat = enum(u32) { - packed_vector_format4x8bit = 0, -}; -pub const CooperativeMatrixOperands = packed struct { - matrix_a_signed_components_khr: bool = false, - matrix_b_signed_components_khr: bool = false, - matrix_c_signed_components_khr: bool = false, - matrix_result_signed_components_khr: bool = false, - saturating_accumulation_khr: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, -}; -pub const CooperativeMatrixLayout = enum(u32) { - row_major_khr = 0, - column_major_khr = 1, - row_blocked_interleaved_arm = 4202, - column_blocked_interleaved_arm = 4203, -}; -pub const CooperativeMatrixUse = enum(u32) { - matrix_akhr = 0, - matrix_bkhr = 1, - matrix_accumulator_khr = 2, -}; -pub const CooperativeMatrixReduce = packed struct { - row: bool = false, - column: bool = false, - @"2x2": bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, + + pub fn dependencies(self: Capability) []const Extension { + return switch (self) { + .matrix => &.{ + .v1_0, + }, + .shader => &.{ + .v1_0, + }, + .geometry => &.{ + .v1_0, + }, + .tessellation => &.{ + .v1_0, + }, + .addresses => &.{ + .v1_0, + }, + .linkage => &.{ + .v1_0, + }, + .kernel => &.{ + .v1_0, + }, + .vector16 => &.{ + .v1_0, + }, + .float16buffer => &.{ + .v1_0, + }, + .float16 => &.{ + .v1_0, + }, + .float64 => &.{ + .v1_0, + }, + .int64 => &.{ + .v1_0, + }, + .int64atomics => &.{ + .v1_0, + }, + .image_basic => &.{ + .v1_0, + }, + .image_read_write => &.{ + .v1_0, + }, + .image_mipmap => &.{ + .v1_0, + }, + .pipes => &.{ + .v1_0, + }, + .groups => &.{ + .v1_0, + }, + .device_enqueue => &.{ + .v1_0, + }, + .literal_sampler => &.{ + .v1_0, + }, + .atomic_storage => &.{ + .v1_0, + }, + .int16 => &.{ + .v1_0, + }, + .tessellation_point_size => &.{ + .v1_0, + }, + .geometry_point_size => &.{ + .v1_0, + }, + .image_gather_extended => &.{ + .v1_0, + }, + .storage_image_multisample => &.{ + .v1_0, + }, + .uniform_buffer_array_dynamic_indexing => &.{ + .v1_0, + }, + .sampled_image_array_dynamic_indexing => &.{ + .v1_0, + }, + .storage_buffer_array_dynamic_indexing => &.{ + .v1_0, + }, + .storage_image_array_dynamic_indexing => &.{ + .v1_0, + }, + .clip_distance => &.{ + .v1_0, + }, + .cull_distance => &.{ + .v1_0, + }, + .image_cube_array => &.{ + .v1_0, + }, + .sample_rate_shading => &.{ + .v1_0, + }, + .image_rect => &.{ + .v1_0, + }, + .sampled_rect => &.{ + .v1_0, + }, + .generic_pointer => &.{ + .v1_0, + }, + .int8 => &.{ + .v1_0, + }, + .input_attachment => &.{ + .v1_0, + }, + .sparse_residency => &.{ + .v1_0, + }, + .min_lod => &.{ + .v1_0, + }, + .sampled_cube_array => &.{ + .v1_0, + }, + .sampled_buffer => &.{ + .v1_0, + }, + .image_buffer => &.{ + .v1_0, + }, + .image_ms_array => &.{ + .v1_0, + }, + .storage_image_extended_formats => &.{ + .v1_0, + }, + .image_query => &.{ + .v1_0, + }, + .derivative_control => &.{ + .v1_0, + }, + .interpolation_function => &.{ + .v1_0, + }, + .transform_feedback => &.{ + .v1_0, + }, + .geometry_streams => &.{ + .v1_0, + }, + .storage_image_read_without_format => &.{ + .v1_0, + }, + .storage_image_write_without_format => &.{ + .v1_0, + }, + .multi_viewport => &.{ + .v1_0, + }, + .subgroup_dispatch => &.{ + .v1_1, + }, + .named_barrier => &.{ + .v1_1, + }, + .pipe_storage => &.{ + .v1_1, + }, + .group_non_uniform => &.{ + .v1_3, + }, + .group_non_uniform_vote => &.{ + .v1_3, + }, + .group_non_uniform_arithmetic => &.{ + .v1_3, + }, + .group_non_uniform_ballot => &.{ + .v1_3, + }, + .group_non_uniform_shuffle => &.{ + .v1_3, + }, + .group_non_uniform_shuffle_relative => &.{ + .v1_3, + }, + .group_non_uniform_clustered => &.{ + .v1_3, + }, + .group_non_uniform_quad => &.{ + .v1_3, + }, + .shader_layer => &.{ + .v1_5, + }, + .shader_viewport_index => &.{ + .v1_5, + }, + .uniform_decoration => &.{ + .v1_6, + }, + .tile_image_color_read_access_ext => &.{ + .v1_0, + .SPV_EXT_shader_tile_image, + }, + .tile_image_depth_read_access_ext => &.{ + .v1_0, + .SPV_EXT_shader_tile_image, + }, + .tile_image_stencil_read_access_ext => &.{ + .v1_0, + .SPV_EXT_shader_tile_image, + }, + .float8ext => &.{ + .v1_0, + .SPV_EXT_float8, + }, + .float8cooperative_matrix_ext => &.{ + .v1_0, + .SPV_EXT_float8, + }, + .fragment_shading_rate_khr => &.{ + .v1_0, + .SPV_KHR_fragment_shading_rate, + }, + .subgroup_ballot_khr => &.{ + .v1_0, + .SPV_KHR_shader_ballot, + }, + .draw_parameters => &.{ + .v1_3, + .SPV_KHR_shader_draw_parameters, + }, + .workgroup_memory_explicit_layout_khr => &.{ + .v1_0, + .SPV_KHR_workgroup_memory_explicit_layout, + }, + .workgroup_memory_explicit_layout8bit_access_khr => &.{ + .v1_0, + .SPV_KHR_workgroup_memory_explicit_layout, + }, + .workgroup_memory_explicit_layout16bit_access_khr => &.{ + .v1_0, + .SPV_KHR_workgroup_memory_explicit_layout, + }, + .subgroup_vote_khr => &.{ + .v1_0, + .SPV_KHR_subgroup_vote, + }, + .storage_buffer16bit_access => &.{ + .v1_3, + .SPV_KHR_16bit_storage, + }, + .uniform_and_storage_buffer16bit_access => &.{ + .v1_3, + .SPV_KHR_16bit_storage, + }, + .storage_push_constant16 => &.{ + .v1_3, + .SPV_KHR_16bit_storage, + }, + .storage_input_output16 => &.{ + .v1_3, + .SPV_KHR_16bit_storage, + }, + .device_group => &.{ + .v1_3, + .SPV_KHR_device_group, + }, + .multi_view => &.{ + .v1_3, + .SPV_KHR_multiview, + }, + .variable_pointers_storage_buffer => &.{ + .v1_3, + .SPV_KHR_variable_pointers, + }, + .variable_pointers => &.{ + .v1_3, + .SPV_KHR_variable_pointers, + }, + .atomic_storage_ops => &.{ + .v1_0, + .SPV_KHR_shader_atomic_counter_ops, + }, + .sample_mask_post_depth_coverage => &.{ + .v1_0, + .SPV_KHR_post_depth_coverage, + }, + .storage_buffer8bit_access => &.{ + .v1_5, + .SPV_KHR_8bit_storage, + }, + .uniform_and_storage_buffer8bit_access => &.{ + .v1_5, + .SPV_KHR_8bit_storage, + }, + .storage_push_constant8 => &.{ + .v1_5, + .SPV_KHR_8bit_storage, + }, + .denorm_preserve => &.{ + .v1_4, + .SPV_KHR_float_controls, + }, + .denorm_flush_to_zero => &.{ + .v1_4, + .SPV_KHR_float_controls, + }, + .signed_zero_inf_nan_preserve => &.{ + .v1_4, + .SPV_KHR_float_controls, + }, + .ray_query_provisional_khr => &.{ + .v1_0, + .SPV_KHR_ray_query, + }, + .ray_query_khr => &.{ + .v1_0, + .SPV_KHR_ray_query, + }, + .untyped_pointers_khr => &.{ + .v1_0, + .SPV_KHR_untyped_pointers, + }, + .ray_traversal_primitive_culling_khr => &.{ + .v1_0, + .SPV_KHR_ray_query, + .SPV_KHR_ray_tracing, + }, + .ray_tracing_khr => &.{ + .v1_0, + .SPV_KHR_ray_tracing, + }, + .stencil_export_ext => &.{ + .v1_0, + .SPV_EXT_shader_stencil_export, + }, + .int64image_ext => &.{ + .v1_0, + .SPV_EXT_shader_image_int64, + }, + .shader_clock_khr => &.{ + .v1_0, + .SPV_KHR_shader_clock, + }, + .quad_control_khr => &.{ + .v1_0, + .SPV_KHR_quad_control, + }, + .b_float16type_khr => &.{ + .v1_0, + .SPV_KHR_bfloat16, + }, + .b_float16dot_product_khr => &.{ + .v1_0, + .SPV_KHR_bfloat16, + }, + .b_float16cooperative_matrix_khr => &.{ + .v1_0, + .SPV_KHR_bfloat16, + }, + .abort_khr => &.{ + .v1_0, + .SPV_KHR_abort, + }, + .descriptor_heap_ext => &.{ + .v1_0, + .SPV_EXT_descriptor_heap, + }, + .constant_data_khr => &.{ + .v1_0, + .SPV_KHR_constant_data, + }, + .poison_freeze_khr => &.{ + .v1_0, + .SPV_KHR_poison_freeze, + }, + .shader_viewport_index_layer_ext => &.{ + .v1_0, + .SPV_EXT_shader_viewport_index_layer, + }, + .fragment_fully_covered_ext => &.{ + .v1_0, + .SPV_EXT_fragment_fully_covered, + }, + .mesh_shading_ext => &.{ + .v1_0, + .SPV_EXT_mesh_shader, + }, + .fragment_barycentric_khr => &.{ + .v1_0, + .SPV_KHR_fragment_shader_barycentric, + }, + .compute_derivative_group_quads_khr => &.{ + .v1_0, + .SPV_KHR_compute_shader_derivatives, + }, + .fragment_density_ext => &.{ + .v1_0, + .SPV_EXT_fragment_invocation_density, + }, + .group_non_uniform_partitioned_ext => &.{ + .v1_0, + .SPV_EXT_shader_subgroup_partitioned, + }, + .shader_non_uniform => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .runtime_descriptor_array => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .input_attachment_array_dynamic_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .uniform_texel_buffer_array_dynamic_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .storage_texel_buffer_array_dynamic_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .uniform_buffer_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .sampled_image_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .storage_buffer_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .storage_image_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .input_attachment_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .uniform_texel_buffer_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .storage_texel_buffer_array_non_uniform_indexing => &.{ + .v1_5, + .SPV_EXT_descriptor_indexing, + }, + .ray_tracing_position_fetch_khr => &.{ + .v1_0, + .SPV_KHR_ray_tracing_position_fetch, + }, + .vulkan_memory_model => &.{ + .v1_5, + .SPV_KHR_vulkan_memory_model, + }, + .vulkan_memory_model_device_scope => &.{ + .v1_5, + .SPV_KHR_vulkan_memory_model, + }, + .physical_storage_buffer_addresses => &.{ + .v1_5, + .SPV_EXT_physical_storage_buffer, + .SPV_KHR_physical_storage_buffer, + }, + .compute_derivative_group_linear_khr => &.{ + .v1_0, + .SPV_KHR_compute_shader_derivatives, + }, + .ray_tracing_provisional_khr => &.{ + .v1_0, + .SPV_KHR_ray_tracing, + }, + .fragment_shader_sample_interlock_ext => &.{ + .v1_0, + .SPV_EXT_fragment_shader_interlock, + }, + .fragment_shader_shading_rate_interlock_ext => &.{ + .v1_0, + .SPV_EXT_fragment_shader_interlock, + }, + .fragment_shader_pixel_interlock_ext => &.{ + .v1_0, + .SPV_EXT_fragment_shader_interlock, + }, + .demote_to_helper_invocation => &.{ + .v1_6, + .SPV_EXT_demote_to_helper_invocation, + }, + .ray_tracing_opacity_micromap_ext => &.{ + .v1_0, + .SPV_EXT_opacity_micromap, + }, + .shader_invocation_reorder_ext => &.{ + .v1_0, + .SPV_EXT_shader_invocation_reorder, + }, + .ray_query_position_fetch_khr => &.{ + .v1_0, + .SPV_KHR_ray_tracing_position_fetch, + }, + .long_vector_ext => &.{ + .v1_0, + .SPV_EXT_long_vector, + }, + .shader64bit_indexing_ext => &.{ + .v1_0, + .SPV_EXT_shader_64bit_indexing, + }, + .atomic_float32min_max_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float_min_max, + }, + .atomic_float64min_max_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float_min_max, + }, + .atomic_float16min_max_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float_min_max, + }, + .expect_assume_khr => &.{ + .v1_0, + .SPV_KHR_expect_assume, + }, + .dot_product_input_all => &.{ + .v1_6, + .SPV_KHR_integer_dot_product, + }, + .dot_product_input4x8bit => &.{ + .v1_6, + .SPV_KHR_integer_dot_product, + }, + .dot_product_input4x8bit_packed => &.{ + .v1_6, + .SPV_KHR_integer_dot_product, + }, + .dot_product => &.{ + .v1_6, + .SPV_KHR_integer_dot_product, + }, + .ray_cull_mask_khr => &.{ + .v1_0, + .SPV_KHR_ray_cull_mask, + }, + .cooperative_matrix_khr => &.{ + .v1_0, + .SPV_KHR_cooperative_matrix, + }, + .replicated_composites_ext => &.{ + .v1_0, + .SPV_EXT_replicated_composites, + }, + .bit_instructions => &.{ + .v1_0, + .SPV_KHR_bit_instructions, + }, + .group_non_uniform_rotate_khr => &.{ + .v1_0, + .SPV_KHR_subgroup_rotate, + }, + .float_controls2 => &.{ + .v1_0, + .SPV_KHR_float_controls2, + }, + .fmakhr => &.{ + .v1_0, + .SPV_KHR_fma, + }, + .atomic_float32add_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float_add, + }, + .atomic_float64add_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float_add, + }, + .opt_none_ext => &.{ + .v1_0, + .SPV_EXT_optnone, + }, + .atomic_float16add_ext => &.{ + .v1_0, + .SPV_EXT_shader_atomic_float16_add, + }, + .arithmetic_fence_ext => &.{ + .v1_0, + .SPV_EXT_arithmetic_fence, + }, + .group_uniform_arithmetic_khr => &.{ + .v1_0, + .SPV_KHR_uniform_group_instructions, + }, + }; + } +}; +pub const RayQueryIntersection = enum(u32) { + ray_query_candidate_intersection_khr = 0, + ray_query_committed_intersection_khr = 1, +}; +pub const RayQueryCommittedIntersectionType = enum(u32) { + ray_query_committed_intersection_none_khr = 0, + ray_query_committed_intersection_triangle_khr = 1, + ray_query_committed_intersection_generated_khr = 2, +}; +pub const RayQueryCandidateIntersectionType = enum(u32) { + ray_query_candidate_intersection_triangle_khr = 0, + ray_query_candidate_intersection_aabbkhr = 1, +}; +pub const PackedVectorFormat = enum(u32) { + packed_vector_format4x8bit = 0, +}; +pub const CooperativeMatrixOperands = packed struct { + matrix_a_signed_components_khr: bool = false, + matrix_b_signed_components_khr: bool = false, + matrix_c_signed_components_khr: bool = false, + matrix_result_signed_components_khr: bool = false, + saturating_accumulation_khr: bool = false, + _reserved_bit_5: bool = false, + _reserved_bit_6: bool = false, + _reserved_bit_7: bool = false, + _reserved_bit_8: bool = false, + _reserved_bit_9: bool = false, + _reserved_bit_10: bool = false, + _reserved_bit_11: bool = false, + _reserved_bit_12: bool = false, + _reserved_bit_13: bool = false, + _reserved_bit_14: bool = false, + _reserved_bit_15: bool = false, + _reserved_bit_16: bool = false, + _reserved_bit_17: bool = false, + _reserved_bit_18: bool = false, + _reserved_bit_19: bool = false, + _reserved_bit_20: bool = false, + _reserved_bit_21: bool = false, + _reserved_bit_22: bool = false, + _reserved_bit_23: bool = false, + _reserved_bit_24: bool = false, _reserved_bit_25: bool = false, _reserved_bit_26: bool = false, _reserved_bit_27: bool = false, @@ -5314,17 +5997,21 @@ pub const CooperativeMatrixReduce = packed struct { _reserved_bit_30: bool = false, _reserved_bit_31: bool = false, }; -pub const TensorClampMode = enum(u32) { - undefined = 0, - constant = 1, - clamp_to_edge = 2, - repeat = 3, - repeat_mirrored = 4, +pub const CooperativeMatrixLayout = enum(u32) { + row_major_khr = 0, + column_major_khr = 1, + row_blocked_interleaved_arm = 4202, + column_blocked_interleaved_arm = 4203, }; -pub const TensorAddressingOperands = packed struct { - tensor_view: bool = false, - decode_func: bool = false, - _reserved_bit_2: bool = false, +pub const CooperativeMatrixUse = enum(u32) { + matrix_akhr = 0, + matrix_bkhr = 1, + matrix_accumulator_khr = 2, +}; +pub const CooperativeMatrixReduce = packed struct { + row: bool = false, + column: bool = false, + @"2x2": bool = false, _reserved_bit_3: bool = false, _reserved_bit_4: bool = false, _reserved_bit_5: bool = false, @@ -5354,24 +6041,65 @@ pub const TensorAddressingOperands = packed struct { _reserved_bit_29: bool = false, _reserved_bit_30: bool = false, _reserved_bit_31: bool = false, - - pub const Extended = struct { - tensor_view: ?struct { id_ref: Id } = null, - decode_func: ?struct { id_ref: Id } = null, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, +}; +pub const TensorClampMode = enum(u32) { + undefined = 0, + constant = 1, + clamp_to_edge = 2, + repeat = 3, + repeat_mirrored = 4, +}; +pub const TensorAddressingOperands = packed struct { + tensor_view: bool = false, + decode_func: bool = false, + _reserved_bit_2: bool = false, + _reserved_bit_3: bool = false, + _reserved_bit_4: bool = false, + _reserved_bit_5: bool = false, + _reserved_bit_6: bool = false, + _reserved_bit_7: bool = false, + _reserved_bit_8: bool = false, + _reserved_bit_9: bool = false, + _reserved_bit_10: bool = false, + _reserved_bit_11: bool = false, + _reserved_bit_12: bool = false, + _reserved_bit_13: bool = false, + _reserved_bit_14: bool = false, + _reserved_bit_15: bool = false, + _reserved_bit_16: bool = false, + _reserved_bit_17: bool = false, + _reserved_bit_18: bool = false, + _reserved_bit_19: bool = false, + _reserved_bit_20: bool = false, + _reserved_bit_21: bool = false, + _reserved_bit_22: bool = false, + _reserved_bit_23: bool = false, + _reserved_bit_24: bool = false, + _reserved_bit_25: bool = false, + _reserved_bit_26: bool = false, + _reserved_bit_27: bool = false, + _reserved_bit_28: bool = false, + _reserved_bit_29: bool = false, + _reserved_bit_30: bool = false, + _reserved_bit_31: bool = false, + + pub const Extended = struct { + tensor_view: ?struct { id_ref: Id } = null, + decode_func: ?struct { id_ref: Id } = null, + _reserved_bit_2: bool = false, + _reserved_bit_3: bool = false, + _reserved_bit_4: bool = false, + _reserved_bit_5: bool = false, + _reserved_bit_6: bool = false, + _reserved_bit_7: bool = false, + _reserved_bit_8: bool = false, + _reserved_bit_9: bool = false, + _reserved_bit_10: bool = false, + _reserved_bit_11: bool = false, + _reserved_bit_12: bool = false, + _reserved_bit_13: bool = false, + _reserved_bit_14: bool = false, + _reserved_bit_15: bool = false, _reserved_bit_16: bool = false, _reserved_bit_17: bool = false, _reserved_bit_18: bool = false, @@ -5391,8 +6119,8 @@ pub const TensorAddressingOperands = packed struct { }; }; pub const InitializationModeQualifier = enum(u32) { - init_on_device_reprogram_intel = 0, - init_on_device_reset_intel = 1, + init_on_device_reprogram_altera = 0, + init_on_device_reset_altera = 1, }; pub const LoadCacheControl = enum(u32) { uncached_intel = 0, @@ -5543,8 +6271,8 @@ pub const TensorOperands = packed struct { }; pub const InstructionSet = enum { core, - @"GLSL.std.450", @"OpenCL.std", + @"GLSL.std.450", zig, pub fn instructions(self: InstructionSet) []const Instruction { @@ -5613,482 +6341,890 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpLine", - .opcode = 8, + .name = "OpLine", + .opcode = 8, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpExtension", + .opcode = 10, + .operands = &.{ + .{ .kind = .literal_string, .quantifier = .required }, + }, + }, + .{ + .name = "OpExtInstImport", + .opcode = 11, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + }, + }, + .{ + .name = "OpExtInst", + .opcode = 12, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpMemoryModel", + .opcode = 14, + .operands = &.{ + .{ .kind = .addressing_model, .quantifier = .required }, + .{ .kind = .memory_model, .quantifier = .required }, + }, + }, + .{ + .name = "OpEntryPoint", + .opcode = 15, + .operands = &.{ + .{ .kind = .execution_model, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpExecutionMode", + .opcode = 16, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .execution_mode, .quantifier = .required }, + }, + }, + .{ + .name = "OpCapability", + .opcode = 17, + .operands = &.{ + .{ .kind = .capability, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeVoid", + .opcode = 19, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeBool", + .opcode = 20, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeInt", + .opcode = 21, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeFloat", + .opcode = 22, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .fp_encoding, .quantifier = .optional }, + }, + }, + .{ + .name = "OpTypeVector", + .opcode = 23, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeMatrix", + .opcode = 24, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeImage", + .opcode = 25, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .dim, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .image_format, .quantifier = .required }, + .{ .kind = .access_qualifier, .quantifier = .optional }, + }, + }, + .{ + .name = "OpTypeSampler", + .opcode = 26, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeSampledImage", + .opcode = 27, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeArray", + .opcode = 28, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeRuntimeArray", + .opcode = 29, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeStruct", + .opcode = 30, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpTypeOpaque", + .opcode = 31, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypePointer", + .opcode = 32, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeFunction", + .opcode = 33, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpTypeEvent", + .opcode = 34, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeDeviceEvent", + .opcode = 35, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeReserveId", + .opcode = 36, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeQueue", + .opcode = 37, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypePipe", + .opcode = 38, + .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .access_qualifier, .quantifier = .required }, + }, + }, + .{ + .name = "OpTypeForwardPointer", + .opcode = 39, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, + }, + }, + .{ + .name = "OpConstantTrue", + .opcode = 41, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpConstantFalse", + .opcode = 42, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpConstant", + .opcode = 43, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_context_dependent_number, .quantifier = .required }, + }, + }, + .{ + .name = "OpConstantComposite", + .opcode = 44, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpConstantSampler", + .opcode = 45, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .sampler_addressing_mode, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .sampler_filter_mode, .quantifier = .required }, + }, + }, + .{ + .name = "OpConstantNull", + .opcode = 46, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstantTrue", + .opcode = 48, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstantFalse", + .opcode = 49, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstant", + .opcode = 50, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_context_dependent_number, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstantComposite", + .opcode = 51, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpSpecConstantOp", + .opcode = 52, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpFunction", + .opcode = 54, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .function_control, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpFunctionParameter", + .opcode = 55, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, + }, + .{ + .name = "OpFunctionEnd", + .opcode = 56, + .operands = &.{}, + }, + .{ + .name = "OpFunctionCall", + .opcode = 57, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpExtension", - .opcode = 10, + .name = "OpVariable", + .opcode = 59, .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpExtInstImport", - .opcode = 11, + .name = "OpImageTexelPointer", + .opcode = 60, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpExtInst", - .opcode = 12, + .name = "OpLoad", + .opcode = 61, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpMemoryModel", - .opcode = 14, + .name = "OpStore", + .opcode = 62, .operands = &.{ - .{ .kind = .addressing_model, .quantifier = .required }, - .{ .kind = .memory_model, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpEntryPoint", - .opcode = 15, + .name = "OpCopyMemory", + .opcode = 63, .operands = &.{ - .{ .kind = .execution_model, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpExecutionMode", - .opcode = 16, + .name = "OpCopyMemorySized", + .opcode = 64, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .execution_mode, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCapability", - .opcode = 17, + .name = "OpAccessChain", + .opcode = 65, .operands = &.{ - .{ .kind = .capability, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeVoid", - .opcode = 19, + .name = "OpInBoundsAccessChain", + .opcode = 66, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeBool", - .opcode = 20, + .name = "OpPtrAccessChain", + .opcode = 67, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeInt", - .opcode = 21, + .name = "OpArrayLength", + .opcode = 68, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpTypeFloat", - .opcode = 22, + .name = "OpGenericPtrMemSemantics", + .opcode = 69, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .fp_encoding, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeVector", - .opcode = 23, + .name = "OpInBoundsPtrAccessChain", + .opcode = 70, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeMatrix", - .opcode = 24, + .name = "OpDecorate", + .opcode = 71, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpTypeImage", - .opcode = 25, + .name = "OpMemberDecorate", + .opcode = 72, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .dim, .quantifier = .required }, .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .image_format, .quantifier = .required }, - .{ .kind = .access_qualifier, .quantifier = .optional }, + .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpTypeSampler", - .opcode = 26, + .name = "OpDecorationGroup", + .opcode = 73, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, }, }, .{ - .name = "OpTypeSampledImage", - .opcode = 27, + .name = "OpGroupDecorate", + .opcode = 74, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeArray", - .opcode = 28, + .name = "OpGroupMemberDecorate", + .opcode = 75, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeRuntimeArray", - .opcode = 29, + .name = "OpVectorExtractDynamic", + .opcode = 77, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeStruct", - .opcode = 30, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTypeOpaque", - .opcode = 31, + .name = "OpVectorInsertDynamic", + .opcode = 78, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypePointer", - .opcode = 32, + .name = "OpVectorShuffle", + .opcode = 79, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeFunction", - .opcode = 33, + .name = "OpCompositeConstruct", + .opcode = 80, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeEvent", - .opcode = 34, + .name = "OpCompositeExtract", + .opcode = 81, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeDeviceEvent", - .opcode = 35, + .name = "OpCompositeInsert", + .opcode = 82, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpTypeReserveId", - .opcode = 36, + .name = "OpCopyObject", + .opcode = 83, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeQueue", - .opcode = 37, + .name = "OpTranspose", + .opcode = 84, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypePipe", - .opcode = 38, + .name = "OpSampledImage", + .opcode = 86, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .access_qualifier, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeForwardPointer", - .opcode = 39, + .name = "OpImageSampleImplicitLod", + .opcode = 87, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpConstantTrue", - .opcode = 41, + .name = "OpImageSampleExplicitLod", + .opcode = 88, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpConstantFalse", - .opcode = 42, + .name = "OpImageSampleDrefImplicitLod", + .opcode = 89, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpConstant", - .opcode = 43, + .name = "OpImageSampleDrefExplicitLod", + .opcode = 90, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_context_dependent_number, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpConstantComposite", - .opcode = 44, + .name = "OpImageSampleProjImplicitLod", + .opcode = 91, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpConstantSampler", - .opcode = 45, + .name = "OpImageSampleProjExplicitLod", + .opcode = 92, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .sampler_addressing_mode, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .sampler_filter_mode, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpConstantNull", - .opcode = 46, + .name = "OpImageSampleProjDrefImplicitLod", + .opcode = 93, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpSpecConstantTrue", - .opcode = 48, + .name = "OpImageSampleProjDrefExplicitLod", + .opcode = 94, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpSpecConstantFalse", - .opcode = 49, + .name = "OpImageFetch", + .opcode = 95, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpSpecConstant", - .opcode = 50, + .name = "OpImageGather", + .opcode = 96, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_context_dependent_number, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpSpecConstantComposite", - .opcode = 51, + .name = "OpImageDrefGather", + .opcode = 97, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpSpecConstantOp", - .opcode = 52, + .name = "OpImageRead", + .opcode = 98, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpFunction", - .opcode = 54, + .name = "OpImageWrite", + .opcode = 99, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .function_control, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpFunctionParameter", - .opcode = 55, + .name = "OpImage", + .opcode = 100, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFunctionEnd", - .opcode = 56, - .operands = &.{}, - }, - .{ - .name = "OpFunctionCall", - .opcode = 57, + .name = "OpImageQueryFormat", + .opcode = 101, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpVariable", - .opcode = 59, + .name = "OpImageQueryOrder", + .opcode = 102, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageTexelPointer", - .opcode = 60, + .name = "OpImageQuerySizeLod", + .opcode = 103, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLoad", - .opcode = 61, + .name = "OpImageQuerySize", + .opcode = 104, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpStore", - .opcode = 62, + .name = "OpImageQueryLod", + .opcode = 105, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCopyMemory", - .opcode = 63, + .name = "OpImageQueryLevels", + .opcode = 106, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCopyMemorySized", - .opcode = 64, + .name = "OpImageQuerySamples", + .opcode = 107, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpAccessChain", - .opcode = 65, + .name = "OpConvertFToU", + .opcode = 109, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpInBoundsAccessChain", - .opcode = 66, + .name = "OpConvertFToS", + .opcode = 110, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpPtrAccessChain", - .opcode = 67, + .name = "OpConvertSToF", + .opcode = 111, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpArrayLength", - .opcode = 68, + .name = "OpConvertUToF", + .opcode = 112, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpGenericPtrMemSemantics", - .opcode = 69, + .name = "OpUConvert", + .opcode = 113, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6096,139 +7232,146 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpInBoundsPtrAccessChain", - .opcode = 70, + .name = "OpSConvert", + .opcode = 114, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpDecorate", - .opcode = 71, + .name = "OpFConvert", + .opcode = 115, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpMemberDecorate", - .opcode = 72, + .name = "OpQuantizeToF16", + .opcode = 116, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpDecorationGroup", - .opcode = 73, + .name = "OpConvertPtrToU", + .opcode = 117, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupDecorate", - .opcode = 74, + .name = "OpSatConvertSToU", + .opcode = 118, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupMemberDecorate", - .opcode = 75, + .name = "OpSatConvertUToS", + .opcode = 119, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpVectorExtractDynamic", - .opcode = 77, + .name = "OpConvertUToPtr", + .opcode = 120, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpVectorInsertDynamic", - .opcode = 78, + .name = "OpPtrCastToGeneric", + .opcode = 121, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpVectorShuffle", - .opcode = 79, + .name = "OpGenericCastToPtr", + .opcode = 122, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpCompositeConstruct", - .opcode = 80, + .name = "OpGenericCastToPtrExplicit", + .opcode = 123, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, }, }, .{ - .name = "OpCompositeExtract", - .opcode = 81, + .name = "OpBitcast", + .opcode = 124, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpCompositeInsert", - .opcode = 82, + .name = "OpSNegate", + .opcode = 126, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpFNegate", + .opcode = 127, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpCopyObject", - .opcode = 83, + .name = "OpIAdd", + .opcode = 128, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTranspose", - .opcode = 84, + .name = "OpFAdd", + .opcode = 129, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSampledImage", - .opcode = 86, + .name = "OpISub", + .opcode = 130, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6237,183 +7380,168 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpImageSampleImplicitLod", - .opcode = 87, + .name = "OpFSub", + .opcode = 131, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageSampleExplicitLod", - .opcode = 88, + .name = "OpIMul", + .opcode = 132, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpImageSampleDrefImplicitLod", - .opcode = 89, + .name = "OpFMul", + .opcode = 133, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageSampleDrefExplicitLod", - .opcode = 90, + .name = "OpUDiv", + .opcode = 134, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpImageSampleProjImplicitLod", - .opcode = 91, + .name = "OpSDiv", + .opcode = 135, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageSampleProjExplicitLod", - .opcode = 92, + .name = "OpFDiv", + .opcode = 136, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpImageSampleProjDrefImplicitLod", - .opcode = 93, + .name = "OpUMod", + .opcode = 137, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageSampleProjDrefExplicitLod", - .opcode = 94, + .name = "OpSRem", + .opcode = 138, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpImageFetch", - .opcode = 95, + .name = "OpSMod", + .opcode = 139, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageGather", - .opcode = 96, + .name = "OpFRem", + .opcode = 140, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageDrefGather", - .opcode = 97, + .name = "OpFMod", + .opcode = 141, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageRead", - .opcode = 98, + .name = "OpVectorTimesScalar", + .opcode = 142, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImageWrite", - .opcode = 99, + .name = "OpMatrixTimesScalar", + .opcode = 143, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpImage", - .opcode = 100, + .name = "OpVectorTimesMatrix", + .opcode = 144, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageQueryFormat", - .opcode = 101, + .name = "OpMatrixTimesVector", + .opcode = 145, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageQueryOrder", - .opcode = 102, + .name = "OpMatrixTimesMatrix", + .opcode = 146, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageQuerySizeLod", - .opcode = 103, + .name = "OpOuterProduct", + .opcode = 147, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6422,17 +7550,18 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpImageQuerySize", - .opcode = 104, + .name = "OpDot", + .opcode = 148, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageQueryLod", - .opcode = 105, + .name = "OpIAddCarry", + .opcode = 149, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6441,35 +7570,38 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpImageQueryLevels", - .opcode = 106, + .name = "OpISubBorrow", + .opcode = 150, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageQuerySamples", - .opcode = 107, + .name = "OpUMulExtended", + .opcode = 151, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertFToU", - .opcode = 109, + .name = "OpSMulExtended", + .opcode = 152, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertFToS", - .opcode = 110, + .name = "OpAny", + .opcode = 154, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6477,8 +7609,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpConvertSToF", - .opcode = 111, + .name = "OpAll", + .opcode = 155, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6486,8 +7618,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpConvertUToF", - .opcode = 112, + .name = "OpIsNan", + .opcode = 156, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6495,8 +7627,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpUConvert", - .opcode = 113, + .name = "OpIsInf", + .opcode = 157, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6504,8 +7636,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSConvert", - .opcode = 114, + .name = "OpIsFinite", + .opcode = 158, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6513,8 +7645,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFConvert", - .opcode = 115, + .name = "OpIsNormal", + .opcode = 159, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6522,8 +7654,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpQuantizeToF16", - .opcode = 116, + .name = "OpSignBitSet", + .opcode = 160, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6531,72 +7663,78 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpConvertPtrToU", - .opcode = 117, + .name = "OpLessOrGreater", + .opcode = 161, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSatConvertSToU", - .opcode = 118, + .name = "OpOrdered", + .opcode = 162, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSatConvertUToS", - .opcode = 119, + .name = "OpUnordered", + .opcode = 163, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertUToPtr", - .opcode = 120, + .name = "OpLogicalEqual", + .opcode = 164, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpPtrCastToGeneric", - .opcode = 121, + .name = "OpLogicalNotEqual", + .opcode = 165, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGenericCastToPtr", - .opcode = 122, + .name = "OpLogicalOr", + .opcode = 166, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGenericCastToPtrExplicit", - .opcode = 123, + .name = "OpLogicalAnd", + .opcode = 167, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitcast", - .opcode = 124, + .name = "OpLogicalNot", + .opcode = 168, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6604,26 +7742,29 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSNegate", - .opcode = 126, + .name = "OpSelect", + .opcode = 169, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFNegate", - .opcode = 127, + .name = "OpIEqual", + .opcode = 170, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIAdd", - .opcode = 128, + .name = "OpINotEqual", + .opcode = 171, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6632,8 +7773,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFAdd", - .opcode = 129, + .name = "OpUGreaterThan", + .opcode = 172, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6642,8 +7783,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpISub", - .opcode = 130, + .name = "OpSGreaterThan", + .opcode = 173, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6652,8 +7793,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFSub", - .opcode = 131, + .name = "OpUGreaterThanEqual", + .opcode = 174, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6662,8 +7803,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpIMul", - .opcode = 132, + .name = "OpSGreaterThanEqual", + .opcode = 175, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6672,8 +7813,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFMul", - .opcode = 133, + .name = "OpULessThan", + .opcode = 176, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6682,8 +7823,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpUDiv", - .opcode = 134, + .name = "OpSLessThan", + .opcode = 177, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6692,8 +7833,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSDiv", - .opcode = 135, + .name = "OpULessThanEqual", + .opcode = 178, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6702,8 +7843,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFDiv", - .opcode = 136, + .name = "OpSLessThanEqual", + .opcode = 179, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6712,8 +7853,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpUMod", - .opcode = 137, + .name = "OpFOrdEqual", + .opcode = 180, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6722,8 +7863,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSRem", - .opcode = 138, + .name = "OpFUnordEqual", + .opcode = 181, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6732,8 +7873,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSMod", - .opcode = 139, + .name = "OpFOrdNotEqual", + .opcode = 182, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6742,8 +7883,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFRem", - .opcode = 140, + .name = "OpFUnordNotEqual", + .opcode = 183, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6752,8 +7893,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFMod", - .opcode = 141, + .name = "OpFOrdLessThan", + .opcode = 184, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6762,8 +7903,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpVectorTimesScalar", - .opcode = 142, + .name = "OpFUnordLessThan", + .opcode = 185, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6771,9 +7912,9 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, }, }, - .{ - .name = "OpMatrixTimesScalar", - .opcode = 143, + .{ + .name = "OpFOrdGreaterThan", + .opcode = 186, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6782,8 +7923,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpVectorTimesMatrix", - .opcode = 144, + .name = "OpFUnordGreaterThan", + .opcode = 187, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6792,8 +7933,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpMatrixTimesVector", - .opcode = 145, + .name = "OpFOrdLessThanEqual", + .opcode = 188, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6802,8 +7943,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpMatrixTimesMatrix", - .opcode = 146, + .name = "OpFUnordLessThanEqual", + .opcode = 189, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6812,8 +7953,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpOuterProduct", - .opcode = 147, + .name = "OpFOrdGreaterThanEqual", + .opcode = 190, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6822,8 +7963,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpDot", - .opcode = 148, + .name = "OpFUnordGreaterThanEqual", + .opcode = 191, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6832,8 +7973,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpIAddCarry", - .opcode = 149, + .name = "OpShiftRightLogical", + .opcode = 194, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6842,8 +7983,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpISubBorrow", - .opcode = 150, + .name = "OpShiftRightArithmetic", + .opcode = 195, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6852,8 +7993,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpUMulExtended", - .opcode = 151, + .name = "OpShiftLeftLogical", + .opcode = 196, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6862,8 +8003,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSMulExtended", - .opcode = 152, + .name = "OpBitwiseOr", + .opcode = 197, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6872,26 +8013,28 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpAny", - .opcode = 154, + .name = "OpBitwiseXor", + .opcode = 198, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAll", - .opcode = 155, + .name = "OpBitwiseAnd", + .opcode = 199, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIsNan", - .opcode = 156, + .name = "OpNot", + .opcode = 200, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6899,35 +8042,42 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpIsInf", - .opcode = 157, + .name = "OpBitFieldInsert", + .opcode = 201, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIsFinite", - .opcode = 158, + .name = "OpBitFieldSExtract", + .opcode = 202, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIsNormal", - .opcode = 159, + .name = "OpBitFieldUExtract", + .opcode = 203, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSignBitSet", - .opcode = 160, + .name = "OpBitReverse", + .opcode = 204, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -6935,78 +8085,71 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpLessOrGreater", - .opcode = 161, + .name = "OpBitCount", + .opcode = 205, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpOrdered", - .opcode = 162, + .name = "OpDPdx", + .opcode = 207, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUnordered", - .opcode = 163, + .name = "OpDPdy", + .opcode = 208, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLogicalEqual", - .opcode = 164, + .name = "OpFwidth", + .opcode = 209, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLogicalNotEqual", - .opcode = 165, + .name = "OpDPdxFine", + .opcode = 210, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLogicalOr", - .opcode = 166, + .name = "OpDPdyFine", + .opcode = 211, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLogicalAnd", - .opcode = 167, + .name = "OpFwidthFine", + .opcode = 212, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLogicalNot", - .opcode = 168, + .name = "OpDPdxCoarse", + .opcode = 213, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -7014,936 +8157,1028 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSelect", - .opcode = 169, + .name = "OpDPdyCoarse", + .opcode = 214, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIEqual", - .opcode = 170, + .name = "OpFwidthCoarse", + .opcode = 215, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpINotEqual", - .opcode = 171, + .name = "OpEmitVertex", + .opcode = 218, + .operands = &.{}, + }, + .{ + .name = "OpEndPrimitive", + .opcode = 219, + .operands = &.{}, + }, + .{ + .name = "OpEmitStreamVertex", + .opcode = 220, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUGreaterThan", - .opcode = 172, + .name = "OpEndStreamPrimitive", + .opcode = 221, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSGreaterThan", - .opcode = 173, + .name = "OpControlBarrier", + .opcode = 224, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpUGreaterThanEqual", - .opcode = 174, + .name = "OpMemoryBarrier", + .opcode = 225, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpSGreaterThanEqual", - .opcode = 175, + .name = "OpAtomicLoad", + .opcode = 227, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpULessThan", - .opcode = 176, + .name = "OpAtomicStore", + .opcode = 228, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSLessThan", - .opcode = 177, + .name = "OpAtomicExchange", + .opcode = 229, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpULessThanEqual", - .opcode = 178, + .name = "OpAtomicCompareExchange", + .opcode = 230, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSLessThanEqual", - .opcode = 179, + .name = "OpAtomicCompareExchangeWeak", + .opcode = 231, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFOrdEqual", - .opcode = 180, + .name = "OpAtomicIIncrement", + .opcode = 232, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpFUnordEqual", - .opcode = 181, + .name = "OpAtomicIDecrement", + .opcode = 233, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpFOrdNotEqual", - .opcode = 182, + .name = "OpAtomicIAdd", + .opcode = 234, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFUnordNotEqual", - .opcode = 183, + .name = "OpAtomicISub", + .opcode = 235, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFOrdLessThan", - .opcode = 184, + .name = "OpAtomicSMin", + .opcode = 236, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFUnordLessThan", - .opcode = 185, + .name = "OpAtomicUMin", + .opcode = 237, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFOrdGreaterThan", - .opcode = 186, + .name = "OpAtomicSMax", + .opcode = 238, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFUnordGreaterThan", - .opcode = 187, + .name = "OpAtomicUMax", + .opcode = 239, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFOrdLessThanEqual", - .opcode = 188, + .name = "OpAtomicAnd", + .opcode = 240, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFUnordLessThanEqual", - .opcode = 189, + .name = "OpAtomicOr", + .opcode = 241, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFOrdGreaterThanEqual", - .opcode = 190, + .name = "OpAtomicXor", + .opcode = 242, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFUnordGreaterThanEqual", - .opcode = 191, + .name = "OpPhi", + .opcode = 245, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpShiftRightLogical", - .opcode = 194, + .name = "OpLoopMerge", + .opcode = 246, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .loop_control, .quantifier = .required }, }, }, .{ - .name = "OpShiftRightArithmetic", - .opcode = 195, + .name = "OpSelectionMerge", + .opcode = 247, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .selection_control, .quantifier = .required }, }, }, .{ - .name = "OpShiftLeftLogical", - .opcode = 196, + .name = "OpLabel", + .opcode = 248, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitwiseOr", - .opcode = 197, + .name = "OpBranch", + .opcode = 249, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitwiseXor", - .opcode = 198, + .name = "OpBranchConditional", + .opcode = 250, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpBitwiseAnd", - .opcode = 199, + .name = "OpSwitch", + .opcode = 251, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpNot", - .opcode = 200, + .name = "OpKill", + .opcode = 252, + .operands = &.{}, + }, + .{ + .name = "OpReturn", + .opcode = 253, + .operands = &.{}, + }, + .{ + .name = "OpReturnValue", + .opcode = 254, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitFieldInsert", - .opcode = 201, + .name = "OpUnreachable", + .opcode = 255, + .operands = &.{}, + }, + .{ + .name = "OpLifetimeStart", + .opcode = 256, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpBitFieldSExtract", - .opcode = 202, + .name = "OpLifetimeStop", + .opcode = 257, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpBitFieldUExtract", - .opcode = 203, + .name = "OpGroupAsyncCopy", + .opcode = 259, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitReverse", - .opcode = 204, + .name = "OpGroupWaitEvents", + .opcode = 260, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBitCount", - .opcode = 205, + .name = "OpGroupAll", + .opcode = 261, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdx", - .opcode = 207, + .name = "OpGroupAny", + .opcode = 262, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdy", - .opcode = 208, + .name = "OpGroupBroadcast", + .opcode = 263, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFwidth", - .opcode = 209, + .name = "OpGroupIAdd", + .opcode = 264, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdxFine", - .opcode = 210, + .name = "OpGroupFAdd", + .opcode = 265, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdyFine", - .opcode = 211, + .name = "OpGroupFMin", + .opcode = 266, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFwidthFine", - .opcode = 212, + .name = "OpGroupUMin", + .opcode = 267, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdxCoarse", - .opcode = 213, + .name = "OpGroupSMin", + .opcode = 268, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpDPdyCoarse", - .opcode = 214, + .name = "OpGroupFMax", + .opcode = 269, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFwidthCoarse", - .opcode = 215, + .name = "OpGroupUMax", + .opcode = 270, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpEmitVertex", - .opcode = 218, - .operands = &.{}, - }, - .{ - .name = "OpEndPrimitive", - .opcode = 219, - .operands = &.{}, - }, - .{ - .name = "OpEmitStreamVertex", - .opcode = 220, + .name = "OpGroupSMax", + .opcode = 271, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpEndStreamPrimitive", - .opcode = 221, + .name = "OpReadPipe", + .opcode = 274, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpControlBarrier", - .opcode = 224, + .name = "OpWritePipe", + .opcode = 275, .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpMemoryBarrier", - .opcode = 225, + .name = "OpReservedReadPipe", + .opcode = 276, .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicLoad", - .opcode = 227, + .name = "OpReservedWritePipe", + .opcode = 277, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicStore", - .opcode = 228, + .name = "OpReserveReadPipePackets", + .opcode = 278, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicExchange", - .opcode = 229, + .name = "OpReserveWritePipePackets", + .opcode = 279, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicCompareExchange", - .opcode = 230, + .name = "OpCommitReadPipe", + .opcode = 280, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicCompareExchangeWeak", - .opcode = 231, + .name = "OpCommitWritePipe", + .opcode = 281, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicIIncrement", - .opcode = 232, + .name = "OpIsValidReserveId", + .opcode = 282, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpAtomicIDecrement", - .opcode = 233, + .name = "OpGetNumPipePackets", + .opcode = 283, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicIAdd", - .opcode = 234, + .name = "OpGetMaxPipePackets", + .opcode = 284, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicISub", - .opcode = 235, + .name = "OpGroupReserveReadPipePackets", + .opcode = 285, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicSMin", - .opcode = 236, + .name = "OpGroupReserveWritePipePackets", + .opcode = 286, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicUMin", - .opcode = 237, + .name = "OpGroupCommitReadPipe", + .opcode = 287, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpGroupCommitWritePipe", + .opcode = 288, + .operands = &.{ .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicSMax", - .opcode = 238, + .name = "OpEnqueueMarker", + .opcode = 291, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicUMax", - .opcode = 239, + .name = "OpEnqueueKernel", + .opcode = 292, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpAtomicAnd", - .opcode = 240, + .name = "OpGetKernelNDrangeSubGroupCount", + .opcode = 293, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicOr", - .opcode = 241, + .name = "OpGetKernelNDrangeMaxSubGroupSize", + .opcode = 294, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpAtomicXor", - .opcode = 242, + .name = "OpGetKernelWorkGroupSize", + .opcode = 295, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpPhi", - .opcode = 245, + .name = "OpGetKernelPreferredWorkGroupSizeMultiple", + .opcode = 296, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpLoopMerge", - .opcode = 246, + .name = "OpRetainEvent", + .opcode = 297, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .loop_control, .quantifier = .required }, }, }, .{ - .name = "OpSelectionMerge", - .opcode = 247, + .name = "OpReleaseEvent", + .opcode = 298, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .selection_control, .quantifier = .required }, }, }, .{ - .name = "OpLabel", - .opcode = 248, + .name = "OpCreateUserEvent", + .opcode = 299, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, }, }, .{ - .name = "OpBranch", - .opcode = 249, + .name = "OpIsValidEvent", + .opcode = 300, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpBranchConditional", - .opcode = 250, + .name = "OpSetUserEventStatus", + .opcode = 301, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpSwitch", - .opcode = 251, + .name = "OpCaptureEventProfilingInfo", + .opcode = 302, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpKill", - .opcode = 252, - .operands = &.{}, - }, - .{ - .name = "OpReturn", - .opcode = 253, - .operands = &.{}, + .name = "OpGetDefaultQueue", + .opcode = 303, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + }, }, .{ - .name = "OpReturnValue", - .opcode = 254, + .name = "OpBuildNDRange", + .opcode = 304, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUnreachable", - .opcode = 255, - .operands = &.{}, + .name = "OpImageSparseSampleImplicitLod", + .opcode = 305, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, + }, }, .{ - .name = "OpLifetimeStart", - .opcode = 256, + .name = "OpImageSparseSampleExplicitLod", + .opcode = 306, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpLifetimeStop", - .opcode = 257, + .name = "OpImageSparseSampleDrefImplicitLod", + .opcode = 307, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupAsyncCopy", - .opcode = 259, + .name = "OpImageSparseSampleDrefExplicitLod", + .opcode = 308, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, + }, + }, + .{ + .name = "OpImageSparseSampleProjImplicitLod", + .opcode = 309, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupWaitEvents", - .opcode = 260, + .name = "OpImageSparseSampleProjExplicitLod", + .opcode = 310, .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpGroupAll", - .opcode = 261, + .name = "OpImageSparseSampleProjDrefImplicitLod", + .opcode = 311, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupAny", - .opcode = 262, + .name = "OpImageSparseSampleProjDrefExplicitLod", + .opcode = 312, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .required }, }, }, .{ - .name = "OpGroupBroadcast", - .opcode = 263, + .name = "OpImageSparseFetch", + .opcode = 313, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupIAdd", - .opcode = 264, + .name = "OpImageSparseGather", + .opcode = 314, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupFAdd", - .opcode = 265, + .name = "OpImageSparseDrefGather", + .opcode = 315, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupFMin", - .opcode = 266, + .name = "OpImageSparseTexelsResident", + .opcode = 316, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupUMin", - .opcode = 267, + .name = "OpNoLine", + .opcode = 317, + .operands = &.{}, + }, + .{ + .name = "OpAtomicFlagTestAndSet", + .opcode = 318, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpGroupSMin", - .opcode = 268, + .name = "OpAtomicFlagClear", + .opcode = 319, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpGroupFMax", - .opcode = 269, + .name = "OpImageSparseRead", + .opcode = 320, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpGroupUMax", - .opcode = 270, + .name = "OpSizeOf", + .opcode = 321, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupSMax", - .opcode = 271, + .name = "OpTypePipeStorage", + .opcode = 322, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReadPipe", - .opcode = 274, + .name = "OpConstantPipeStorage", + .opcode = 323, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpWritePipe", - .opcode = 275, + .name = "OpCreatePipeFromPipeStorage", + .opcode = 324, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReservedReadPipe", - .opcode = 276, + .name = "OpGetKernelLocalSizeForSubgroupCount", + .opcode = 325, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -7952,12 +9187,11 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReservedWritePipe", - .opcode = 277, + .name = "OpGetKernelMaxNumSubgroups", + .opcode = 326, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -7965,1158 +9199,1110 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReserveReadPipePackets", - .opcode = 278, + .name = "OpTypeNamedBarrier", + .opcode = 327, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReserveWritePipePackets", - .opcode = 279, + .name = "OpNamedBarrierInitialize", + .opcode = 328, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCommitReadPipe", - .opcode = 280, + .name = "OpMemoryNamedBarrier", + .opcode = 329, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_memory_semantics, .quantifier = .required }, }, }, .{ - .name = "OpCommitWritePipe", - .opcode = 281, + .name = "OpModuleProcessed", + .opcode = 330, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, }, }, .{ - .name = "OpIsValidReserveId", - .opcode = 282, + .name = "OpExecutionModeId", + .opcode = 331, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .execution_mode, .quantifier = .required }, }, }, .{ - .name = "OpGetNumPipePackets", - .opcode = 283, + .name = "OpDecorateId", + .opcode = 332, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpGetMaxPipePackets", - .opcode = 284, + .name = "OpGroupNonUniformElect", + .opcode = 333, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, }, }, .{ - .name = "OpGroupReserveReadPipePackets", - .opcode = 285, + .name = "OpGroupNonUniformAll", + .opcode = 334, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupReserveWritePipePackets", - .opcode = 286, + .name = "OpGroupNonUniformAny", + .opcode = 335, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupCommitReadPipe", - .opcode = 287, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupCommitWritePipe", - .opcode = 288, + .name = "OpGroupNonUniformAllEqual", + .opcode = 336, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpEnqueueMarker", - .opcode = 291, + .name = "OpGroupNonUniformBroadcast", + .opcode = 337, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpEnqueueKernel", - .opcode = 292, + .name = "OpGroupNonUniformBroadcastFirst", + .opcode = 338, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGetKernelNDrangeSubGroupCount", - .opcode = 293, + .name = "OpGroupNonUniformBallot", + .opcode = 339, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetKernelNDrangeMaxSubGroupSize", - .opcode = 294, + .name = "OpGroupNonUniformInverseBallot", + .opcode = 340, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetKernelWorkGroupSize", - .opcode = 295, + .name = "OpGroupNonUniformBallotBitExtract", + .opcode = 341, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetKernelPreferredWorkGroupSizeMultiple", - .opcode = 296, + .name = "OpGroupNonUniformBallotBitCount", + .opcode = 342, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpRetainEvent", - .opcode = 297, + .name = "OpGroupNonUniformBallotFindLSB", + .opcode = 343, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReleaseEvent", - .opcode = 298, + .name = "OpGroupNonUniformBallotFindMSB", + .opcode = 344, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCreateUserEvent", - .opcode = 299, + .name = "OpGroupNonUniformShuffle", + .opcode = 345, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIsValidEvent", - .opcode = 300, + .name = "OpGroupNonUniformShuffleXor", + .opcode = 346, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSetUserEventStatus", - .opcode = 301, + .name = "OpGroupNonUniformShuffleUp", + .opcode = 347, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCaptureEventProfilingInfo", - .opcode = 302, + .name = "OpGroupNonUniformShuffleDown", + .opcode = 348, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetDefaultQueue", - .opcode = 303, + .name = "OpGroupNonUniformIAdd", + .opcode = 349, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpBuildNDRange", - .opcode = 304, + .name = "OpGroupNonUniformFAdd", + .opcode = 350, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleImplicitLod", - .opcode = 305, + .name = "OpGroupNonUniformIMul", + .opcode = 351, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleExplicitLod", - .opcode = 306, + .name = "OpGroupNonUniformFMul", + .opcode = 352, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleDrefImplicitLod", - .opcode = 307, + .name = "OpGroupNonUniformSMin", + .opcode = 353, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleDrefExplicitLod", - .opcode = 308, + .name = "OpGroupNonUniformUMin", + .opcode = 354, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleProjImplicitLod", - .opcode = 309, + .name = "OpGroupNonUniformFMin", + .opcode = 355, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleProjExplicitLod", - .opcode = 310, + .name = "OpGroupNonUniformSMax", + .opcode = 356, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleProjDrefImplicitLod", - .opcode = 311, + .name = "OpGroupNonUniformUMax", + .opcode = 357, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseSampleProjDrefExplicitLod", - .opcode = 312, + .name = "OpGroupNonUniformFMax", + .opcode = 358, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseFetch", - .opcode = 313, + .name = "OpGroupNonUniformBitwiseAnd", + .opcode = 359, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseGather", - .opcode = 314, + .name = "OpGroupNonUniformBitwiseOr", + .opcode = 360, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseDrefGather", - .opcode = 315, + .name = "OpGroupNonUniformBitwiseXor", + .opcode = 361, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseTexelsResident", - .opcode = 316, + .name = "OpGroupNonUniformLogicalAnd", + .opcode = 362, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpNoLine", - .opcode = 317, - .operands = &.{}, - }, - .{ - .name = "OpAtomicFlagTestAndSet", - .opcode = 318, + .name = "OpGroupNonUniformLogicalOr", + .opcode = 363, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpAtomicFlagClear", - .opcode = 319, + .name = "OpGroupNonUniformLogicalXor", + .opcode = 364, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpImageSparseRead", - .opcode = 320, + .name = "OpGroupNonUniformQuadBroadcast", + .opcode = 365, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpSizeOf", - .opcode = 321, + .name = "OpGroupNonUniformQuadSwap", + .opcode = 366, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypePipeStorage", - .opcode = 322, + .name = "OpCopyLogical", + .opcode = 400, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConstantPipeStorage", - .opcode = 323, + .name = "OpPtrEqual", + .opcode = 401, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCreatePipeFromPipeStorage", - .opcode = 324, + .name = "OpPtrNotEqual", + .opcode = 402, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetKernelLocalSizeForSubgroupCount", - .opcode = 325, + .name = "OpPtrDiff", + .opcode = 403, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGetKernelMaxNumSubgroups", - .opcode = 326, + .name = "OpColorAttachmentReadEXT", + .opcode = 4160, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpTypeNamedBarrier", - .opcode = 327, + .name = "OpDepthAttachmentReadEXT", + .opcode = 4161, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpNamedBarrierInitialize", - .opcode = 328, + .name = "OpStencilAttachmentReadEXT", + .opcode = 4162, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpMemoryNamedBarrier", - .opcode = 329, + .name = "OpTypeTensorARM", + .opcode = 4163, .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpModuleProcessed", - .opcode = 330, + .name = "OpTensorReadARM", + .opcode = 4164, .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .tensor_operands, .quantifier = .optional }, }, }, .{ - .name = "OpExecutionModeId", - .opcode = 331, + .name = "OpTensorWriteARM", + .opcode = 4165, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .execution_mode, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .tensor_operands, .quantifier = .optional }, }, }, .{ - .name = "OpDecorateId", - .opcode = 332, + .name = "OpTensorQuerySizeARM", + .opcode = 4166, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformElect", - .opcode = 333, + .name = "OpGraphConstantARM", + .opcode = 4181, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformAll", - .opcode = 334, + .name = "OpGraphEntryPointARM", + .opcode = 4182, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformAny", - .opcode = 335, + .name = "OpGraphARM", + .opcode = 4183, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformAllEqual", - .opcode = 336, + .name = "OpGraphInputARM", + .opcode = 4184, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformBroadcast", - .opcode = 337, + .name = "OpGraphSetOutputARM", + .opcode = 4185, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformBroadcastFirst", - .opcode = 338, + .name = "OpGraphEndARM", + .opcode = 4186, + .operands = &.{}, + }, + .{ + .name = "OpTypeGraphARM", + .opcode = 4190, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformBallot", - .opcode = 339, + .name = "OpTerminateInvocation", + .opcode = 4416, + .operands = &.{}, + }, + .{ + .name = "OpTypeUntypedPointerKHR", + .opcode = 4417, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformInverseBallot", - .opcode = 340, + .name = "OpUntypedVariableKHR", + .opcode = 4418, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformBallotBitExtract", - .opcode = 341, + .name = "OpUntypedAccessChainKHR", + .opcode = 4419, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformBallotBitCount", - .opcode = 342, + .name = "OpUntypedInBoundsAccessChainKHR", + .opcode = 4420, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformBallotFindLSB", - .opcode = 343, + .name = "OpSubgroupBallotKHR", + .opcode = 4421, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformBallotFindMSB", - .opcode = 344, + .name = "OpSubgroupFirstInvocationKHR", + .opcode = 4422, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformShuffle", - .opcode = 345, + .name = "OpUntypedPtrAccessChainKHR", + .opcode = 4423, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformShuffleXor", - .opcode = 346, + .name = "OpUntypedInBoundsPtrAccessChainKHR", + .opcode = 4424, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformShuffleUp", - .opcode = 347, + .name = "OpUntypedArrayLengthKHR", + .opcode = 4425, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformShuffleDown", - .opcode = 348, + .name = "OpUntypedPrefetchKHR", + .opcode = 4426, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformIAdd", - .opcode = 349, + .name = "OpFmaKHR", + .opcode = 4427, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformFAdd", - .opcode = 350, + .name = "OpSubgroupAllKHR", + .opcode = 4428, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformIMul", - .opcode = 351, + .name = "OpSubgroupAnyKHR", + .opcode = 4429, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformFMul", - .opcode = 352, + .name = "OpSubgroupAllEqualKHR", + .opcode = 4430, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformSMin", - .opcode = 353, + .name = "OpGroupNonUniformRotateKHR", + .opcode = 4431, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformUMin", - .opcode = 354, + .name = "OpSubgroupReadInvocationKHR", + .opcode = 4432, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformFMin", - .opcode = 355, + .name = "OpExtInstWithForwardRefsKHR", + .opcode = 4433, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGroupNonUniformSMax", - .opcode = 356, + .name = "OpUntypedGroupAsyncCopyKHR", + .opcode = 4434, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformUMax", - .opcode = 357, + .name = "OpTraceRayKHR", + .opcode = 4445, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformFMax", - .opcode = 358, + .name = "OpExecuteCallableKHR", + .opcode = 4446, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformBitwiseAnd", - .opcode = 359, + .name = "OpConvertUToAccelerationStructureKHR", + .opcode = 4447, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformBitwiseOr", - .opcode = 360, + .name = "OpIgnoreIntersectionKHR", + .opcode = 4448, + .operands = &.{}, + }, + .{ + .name = "OpTerminateRayKHR", + .opcode = 4449, + .operands = &.{}, + }, + .{ + .name = "OpSDot", + .opcode = 4450, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformBitwiseXor", - .opcode = 361, + .name = "OpUDot", + .opcode = 4451, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformLogicalAnd", - .opcode = 362, + .name = "OpSUDot", + .opcode = 4452, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformLogicalOr", - .opcode = 363, + .name = "OpSDotAccSat", + .opcode = 4453, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformLogicalXor", - .opcode = 364, + .name = "OpUDotAccSat", + .opcode = 4454, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformQuadBroadcast", - .opcode = 365, + .name = "OpSUDotAccSat", + .opcode = 4455, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpGroupNonUniformQuadSwap", - .opcode = 366, + .name = "OpTypeCooperativeMatrixKHR", + .opcode = 4456, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCopyLogical", - .opcode = 400, + .name = "OpCooperativeMatrixLoadKHR", + .opcode = 4457, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpPtrEqual", - .opcode = 401, + .name = "OpCooperativeMatrixStoreKHR", + .opcode = 4458, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpPtrNotEqual", - .opcode = 402, + .name = "OpCooperativeMatrixMulAddKHR", + .opcode = 4459, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, }, }, .{ - .name = "OpPtrDiff", - .opcode = 403, + .name = "OpCooperativeMatrixLengthKHR", + .opcode = 4460, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpColorAttachmentReadEXT", - .opcode = 4160, + .name = "OpConstantCompositeReplicateEXT", + .opcode = 4461, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpDepthAttachmentReadEXT", - .opcode = 4161, + .name = "OpSpecConstantCompositeReplicateEXT", + .opcode = 4462, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpStencilAttachmentReadEXT", - .opcode = 4162, + .name = "OpCompositeConstructReplicateEXT", + .opcode = 4463, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeTensorARM", - .opcode = 4163, + .name = "OpTypeRayQueryKHR", + .opcode = 4472, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpTensorReadARM", - .opcode = 4164, + .name = "OpRayQueryInitializeKHR", + .opcode = 4473, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .tensor_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTensorWriteARM", - .opcode = 4165, - .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .tensor_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTensorQuerySizeARM", - .opcode = 4166, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGraphConstantARM", - .opcode = 4181, + .name = "OpRayQueryTerminateKHR", + .opcode = 4474, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGraphEntryPointARM", - .opcode = 4182, + .name = "OpRayQueryGenerateIntersectionKHR", + .opcode = 4475, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGraphARM", - .opcode = 4183, + .name = "OpRayQueryConfirmIntersectionKHR", + .opcode = 4476, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGraphInputARM", - .opcode = 4184, + .name = "OpRayQueryProceedKHR", + .opcode = 4477, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpGraphSetOutputARM", - .opcode = 4185, + .name = "OpRayQueryGetIntersectionTypeKHR", + .opcode = 4479, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGraphEndARM", - .opcode = 4186, - .operands = &.{}, - }, - .{ - .name = "OpTypeGraphARM", - .opcode = 4190, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTerminateInvocation", - .opcode = 4416, - .operands = &.{}, - }, - .{ - .name = "OpTypeUntypedPointerKHR", - .opcode = 4417, + .name = "OpImageSampleWeightedQCOM", + .opcode = 4480, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedVariableKHR", - .opcode = 4418, + .name = "OpImageBoxFilterQCOM", + .opcode = 4481, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedAccessChainKHR", - .opcode = 4419, + .name = "OpImageBlockMatchSSDQCOM", + .opcode = 4482, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedInBoundsAccessChainKHR", - .opcode = 4420, + .name = "OpImageBlockMatchSADQCOM", + .opcode = 4483, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSubgroupBallotKHR", - .opcode = 4421, + .name = "OpBitCastArrayQCOM", + .opcode = 4497, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9124,63 +10310,60 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSubgroupFirstInvocationKHR", - .opcode = 4422, + .name = "OpImageBlockMatchWindowSSDQCOM", + .opcode = 4500, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedPtrAccessChainKHR", - .opcode = 4423, + .name = "OpImageBlockMatchWindowSADQCOM", + .opcode = 4501, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedInBoundsPtrAccessChainKHR", - .opcode = 4424, + .name = "OpImageBlockMatchGatherSSDQCOM", + .opcode = 4502, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpUntypedArrayLengthKHR", - .opcode = 4425, + .name = "OpImageBlockMatchGatherSADQCOM", + .opcode = 4503, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedPrefetchKHR", - .opcode = 4426, - .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpSubgroupAllKHR", - .opcode = 4428, + .name = "OpCompositeConstructCoopMatQCOM", + .opcode = 4540, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9188,8 +10371,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSubgroupAnyKHR", - .opcode = 4429, + .name = "OpCompositeExtractCoopMatQCOM", + .opcode = 4541, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9197,228 +10380,206 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpSubgroupAllEqualKHR", - .opcode = 4430, + .name = "OpExtractSubArrayQCOM", + .opcode = 4542, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformRotateKHR", - .opcode = 4431, + .name = "OpGroupIAddNonUniformAMD", + .opcode = 5000, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpSubgroupReadInvocationKHR", - .opcode = 4432, + .name = "OpGroupFAddNonUniformAMD", + .opcode = 5001, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpExtInstWithForwardRefsKHR", - .opcode = 4433, + .name = "OpGroupFMinNonUniformAMD", + .opcode = 5002, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "OpTraceRayKHR", - .opcode = 4445, + .name = "OpGroupUMinNonUniformAMD", + .opcode = 5003, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpExecuteCallableKHR", - .opcode = 4446, + .name = "OpGroupSMinNonUniformAMD", + .opcode = 5004, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertUToAccelerationStructureKHR", - .opcode = 4447, + .name = "OpGroupFMaxNonUniformAMD", + .opcode = 5005, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpIgnoreIntersectionKHR", - .opcode = 4448, - .operands = &.{}, - }, - .{ - .name = "OpTerminateRayKHR", - .opcode = 4449, - .operands = &.{}, - }, - .{ - .name = "OpSDot", - .opcode = 4450, + .name = "OpGroupUMaxNonUniformAMD", + .opcode = 5006, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpUDot", - .opcode = 4451, + .name = "OpGroupSMaxNonUniformAMD", + .opcode = 5007, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpSUDot", - .opcode = 4452, + .name = "OpFragmentMaskFetchAMD", + .opcode = 5011, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpSDotAccSat", - .opcode = 4453, + .name = "OpFragmentFetchAMD", + .opcode = 5012, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpUDotAccSat", - .opcode = 4454, + .name = "OpReadClockKHR", + .opcode = 5056, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, + .{ .kind = .id_scope, .quantifier = .required }, }, }, .{ - .name = "OpSUDotAccSat", - .opcode = 4455, + .name = "OpAllocateNodePayloadsAMDX", + .opcode = 5074, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_scope, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpEnqueueNodePayloadsAMDX", + .opcode = 5075, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, }, }, .{ - .name = "OpTypeCooperativeMatrixKHR", - .opcode = 4456, + .name = "OpTypeNodePayloadArrayAMDX", + .opcode = 5076, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCooperativeMatrixLoadKHR", - .opcode = 4457, + .name = "OpFinishWritingNodePayloadAMDX", + .opcode = 5078, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeMatrixStoreKHR", - .opcode = 4458, + .name = "OpNodePayloadArrayLengthAMDX", + .opcode = 5090, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeMatrixMulAddKHR", - .opcode = 4459, + .name = "OpIsNodePayloadValidAMDX", + .opcode = 5101, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeMatrixLengthKHR", - .opcode = 4460, + .name = "OpConstantStringAMDX", + .opcode = 5103, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, }, }, .{ - .name = "OpConstantCompositeReplicateEXT", - .opcode = 4461, + .name = "OpSpecConstantStringAMDX", + .opcode = 5104, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, }, }, .{ - .name = "OpSpecConstantCompositeReplicateEXT", - .opcode = 4462, + .name = "OpGroupNonUniformQuadAllKHR", + .opcode = 5110, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9426,8 +10587,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpCompositeConstructReplicateEXT", - .opcode = 4463, + .name = "OpGroupNonUniformQuadAnyKHR", + .opcode = 5111, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9435,51 +10596,54 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpTypeRayQueryKHR", - .opcode = 4472, + .name = "OpTypeBufferEXT", + .opcode = 5115, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .storage_class, .quantifier = .required }, }, }, .{ - .name = "OpRayQueryInitializeKHR", - .opcode = 4473, + .name = "OpBufferPointerEXT", + .opcode = 5119, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpRayQueryTerminateKHR", - .opcode = 4474, + .name = "OpAbortKHR", + .opcode = 5121, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpRayQueryGenerateIntersectionKHR", - .opcode = 4475, + .name = "OpUntypedImageTexelPointerEXT", + .opcode = 5126, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpRayQueryConfirmIntersectionKHR", - .opcode = 4476, + .name = "OpMemberDecorateIdEXT", + .opcode = 5127, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .decoration, .quantifier = .required }, }, }, .{ - .name = "OpRayQueryProceedKHR", - .opcode = 4477, + .name = "OpConstantSizeOfEXT", + .opcode = 5129, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9487,69 +10651,53 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpRayQueryGetIntersectionTypeKHR", - .opcode = 4479, + .name = "OpConstantDataKHR", + .opcode = 5147, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpImageSampleWeightedQCOM", - .opcode = 4480, + .name = "OpSpecConstantDataKHR", + .opcode = 5148, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, }, }, .{ - .name = "OpImageBoxFilterQCOM", - .opcode = 4481, + .name = "OpPoisonKHR", + .opcode = 5158, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageBlockMatchSSDQCOM", - .opcode = 4482, + .name = "OpFreezeKHR", + .opcode = 5159, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpImageBlockMatchSADQCOM", - .opcode = 4483, + .name = "OpHitObjectRecordHitMotionNV", + .opcode = 5249, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchWindowSSDQCOM", - .opcode = 4500, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9558,24 +10706,17 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpImageBlockMatchWindowSADQCOM", - .opcode = 4501, + .name = "OpHitObjectRecordHitWithIndexMotionNV", + .opcode = 5250, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchGatherSSDQCOM", - .opcode = 4502, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9584,11 +10725,11 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpImageBlockMatchGatherSADQCOM", - .opcode = 4503, + .name = "OpHitObjectRecordMissMotionNV", + .opcode = 5251, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9597,161 +10738,163 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpGroupIAddNonUniformAMD", - .opcode = 5000, + .name = "OpHitObjectGetWorldToObjectNV", + .opcode = 5252, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupFAddNonUniformAMD", - .opcode = 5001, + .name = "OpHitObjectGetObjectToWorldNV", + .opcode = 5253, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupFMinNonUniformAMD", - .opcode = 5002, + .name = "OpHitObjectGetObjectRayDirectionNV", + .opcode = 5254, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupUMinNonUniformAMD", - .opcode = 5003, + .name = "OpHitObjectGetObjectRayOriginNV", + .opcode = 5255, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupSMinNonUniformAMD", - .opcode = 5004, + .name = "OpHitObjectTraceRayMotionNV", + .opcode = 5256, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupFMaxNonUniformAMD", - .opcode = 5005, + .name = "OpHitObjectGetShaderRecordBufferHandleNV", + .opcode = 5257, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupUMaxNonUniformAMD", - .opcode = 5006, + .name = "OpHitObjectGetShaderBindingTableRecordIndexNV", + .opcode = 5258, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupSMaxNonUniformAMD", - .opcode = 5007, + .name = "OpHitObjectRecordEmptyNV", + .opcode = 5259, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFragmentMaskFetchAMD", - .opcode = 5011, + .name = "OpHitObjectTraceRayNV", + .opcode = 5260, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFragmentFetchAMD", - .opcode = 5012, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpReadClockKHR", - .opcode = 5056, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - }, - }, - .{ - .name = "OpAllocateNodePayloadsAMDX", - .opcode = 5074, + .name = "OpHitObjectRecordHitNV", + .opcode = 5261, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpEnqueueNodePayloadsAMDX", - .opcode = 5075, + .name = "OpHitObjectRecordHitWithIndexNV", + .opcode = 5262, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeNodePayloadArrayAMDX", - .opcode = 5076, + .name = "OpHitObjectRecordMissNV", + .opcode = 5263, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFinishWritingNodePayloadAMDX", - .opcode = 5078, + .name = "OpHitObjectExecuteShaderNV", + .opcode = 5264, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpNodePayloadArrayLengthAMDX", - .opcode = 5090, + .name = "OpHitObjectGetCurrentTimeNV", + .opcode = 5265, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9759,34 +10902,25 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpIsNodePayloadValidAMDX", - .opcode = 5101, + .name = "OpHitObjectGetAttributesNV", + .opcode = 5266, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConstantStringAMDX", - .opcode = 5103, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantStringAMDX", - .opcode = 5104, + .name = "OpHitObjectGetHitKindNV", + .opcode = 5267, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformQuadAllKHR", - .opcode = 5110, + .name = "OpHitObjectGetPrimitiveIndexNV", + .opcode = 5268, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9794,8 +10928,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpGroupNonUniformQuadAnyKHR", - .opcode = 5111, + .name = "OpHitObjectGetGeometryIndexNV", + .opcode = 5269, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9803,60 +10937,35 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectRecordHitMotionNV", - .opcode = 5249, + .name = "OpHitObjectGetInstanceIdNV", + .opcode = 5270, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectRecordHitWithIndexMotionNV", - .opcode = 5250, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .name = "OpHitObjectGetInstanceCustomIndexNV", + .opcode = 5271, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectRecordMissMotionNV", - .opcode = 5251, + .name = "OpHitObjectGetWorldRayDirectionNV", + .opcode = 5272, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetWorldToObjectNV", - .opcode = 5252, + .name = "OpHitObjectGetWorldRayOriginNV", + .opcode = 5273, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9864,8 +10973,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectGetObjectToWorldNV", - .opcode = 5253, + .name = "OpHitObjectGetRayTMaxNV", + .opcode = 5274, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9873,8 +10982,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectGetObjectRayDirectionNV", - .opcode = 5254, + .name = "OpHitObjectGetRayTMinNV", + .opcode = 5275, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9882,8 +10991,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectGetObjectRayOriginNV", - .opcode = 5255, + .name = "OpHitObjectIsEmptyNV", + .opcode = 5276, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -9891,53 +11000,75 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectTraceRayMotionNV", - .opcode = 5256, + .name = "OpHitObjectIsHitNV", + .opcode = 5277, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectIsMissNV", + .opcode = 5278, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpReorderThreadWithHitObjectNV", + .opcode = 5279, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, + }, + }, + .{ + .name = "OpReorderThreadWithHintNV", + .opcode = 5280, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetShaderRecordBufferHandleNV", - .opcode = 5257, + .name = "OpTypeHitObjectNV", + .opcode = 5281, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetShaderBindingTableRecordIndexNV", - .opcode = 5258, + .name = "OpImageSampleFootprintNV", + .opcode = 5283, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectRecordEmptyNV", - .opcode = 5259, + .name = "OpTypeVectorIdEXT", + .opcode = 5288, .operands = &.{ + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectTraceRayNV", - .opcode = 5260, + .name = "OpCooperativeVectorMatrixMulNV", + .opcode = 5289, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9947,14 +11078,13 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectRecordHitNV", - .opcode = 5261, + .name = "OpCooperativeVectorOuterProductAccumulateNV", + .opcode = 5290, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9962,19 +11092,24 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + }, + }, + .{ + .name = "OpCooperativeVectorReduceSumAccumulateNV", + .opcode = 5291, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectRecordHitWithIndexNV", - .opcode = 5262, + .name = "OpCooperativeVectorMatrixMulAddNV", + .opcode = 5292, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -9987,31 +11122,40 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectRecordMissNV", - .opcode = 5263, + .name = "OpCooperativeMatrixConvertNV", + .opcode = 5293, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpEmitMeshTasksEXT", + .opcode = 5294, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectExecuteShaderNV", - .opcode = 5264, + .name = "OpSetMeshOutputsEXT", + .opcode = 5295, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetCurrentTimeNV", - .opcode = 5265, + .name = "OpGroupNonUniformPartitionEXT", + .opcode = 5296, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -10019,88 +11163,100 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectGetAttributesNV", - .opcode = 5266, + .name = "OpWritePackedPrimitiveIndices4x8NV", + .opcode = 5299, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetHitKindNV", - .opcode = 5267, + .name = "OpFetchMicroTriangleVertexPositionNV", + .opcode = 5300, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetPrimitiveIndexNV", - .opcode = 5268, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetGeometryIndexNV", - .opcode = 5269, + .name = "OpFetchMicroTriangleVertexBarycentricNV", + .opcode = 5301, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetInstanceIdNV", - .opcode = 5270, + .name = "OpCooperativeVectorLoadNV", + .opcode = 5302, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectGetInstanceCustomIndexNV", - .opcode = 5271, + .name = "OpCooperativeVectorStoreNV", + .opcode = 5303, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpHitObjectGetWorldRayDirectionNV", - .opcode = 5272, + .name = "OpHitObjectRecordFromQueryEXT", + .opcode = 5304, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetWorldRayOriginNV", - .opcode = 5273, + .name = "OpHitObjectRecordMissEXT", + .opcode = 5305, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetRayTMaxNV", - .opcode = 5274, + .name = "OpHitObjectRecordMissMotionEXT", + .opcode = 5306, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectGetRayTMinNV", - .opcode = 5275, + .name = "OpHitObjectGetIntersectionTriangleVertexPositionsEXT", + .opcode = 5307, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -10108,8 +11264,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectIsEmptyNV", - .opcode = 5276, + .name = "OpHitObjectGetRayFlagsEXT", + .opcode = 5308, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -10117,75 +11273,92 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpHitObjectIsHitNV", - .opcode = 5277, + .name = "OpHitObjectSetShaderBindingTableRecordIndexEXT", + .opcode = 5309, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpHitObjectIsMissNV", - .opcode = 5278, + .name = "OpHitObjectReorderExecuteShaderEXT", + .opcode = 5310, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpReorderThreadWithHitObjectNV", - .opcode = 5279, + .name = "OpHitObjectTraceReorderExecuteEXT", + .opcode = 5311, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpReorderThreadWithHintNV", - .opcode = 5280, + .name = "OpHitObjectTraceMotionReorderExecuteEXT", + .opcode = 5312, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpTypeHitObjectNV", - .opcode = 5281, + .name = "OpTypeHitObjectEXT", + .opcode = 5313, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, }, }, .{ - .name = "OpImageSampleFootprintNV", - .opcode = 5283, + .name = "OpReorderThreadWithHintEXT", + .opcode = 5314, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, }, }, .{ - .name = "OpTypeCooperativeVectorNV", - .opcode = 5288, + .name = "OpReorderThreadWithHitObjectEXT", + .opcode = 5315, .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeVectorMatrixMulNV", - .opcode = 5289, + .name = "OpHitObjectTraceRayEXT", + .opcode = 5316, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -10195,13 +11368,14 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCooperativeVectorOuterProductAccumulateNV", - .opcode = 5290, + .name = "OpHitObjectTraceRayMotionEXT", + .opcode = 5317, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -10209,43 +11383,50 @@ pub const InstructionSet = enum { .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCooperativeVectorReduceSumAccumulateNV", - .opcode = 5291, + .name = "OpHitObjectRecordEmptyEXT", + .opcode = 5318, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectExecuteShaderEXT", + .opcode = 5319, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCooperativeVectorMatrixMulAddNV", - .opcode = 5292, + .name = "OpHitObjectGetCurrentTimeEXT", + .opcode = 5320, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetAttributesEXT", + .opcode = 5321, + .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeMatrixConvertNV", - .opcode = 5293, + .name = "OpHitObjectGetHitKindEXT", + .opcode = 5322, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -10253,26 +11434,26 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpEmitMeshTasksEXT", - .opcode = 5294, + .name = "OpHitObjectGetPrimitiveIndexEXT", + .opcode = 5323, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, }, }, .{ - .name = "OpSetMeshOutputsEXT", - .opcode = 5295, + .name = "OpHitObjectGetGeometryIndexEXT", + .opcode = 5324, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpGroupNonUniformPartitionNV", - .opcode = 5296, + .name = "OpHitObjectGetInstanceIdEXT", + .opcode = 5325, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, @@ -10280,58 +11461,75 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpWritePackedPrimitiveIndices4x8NV", - .opcode = 5299, + .name = "OpHitObjectGetInstanceCustomIndexEXT", + .opcode = 5326, .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFetchMicroTriangleVertexPositionNV", - .opcode = 5300, + .name = "OpHitObjectGetObjectRayOriginEXT", + .opcode = 5327, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpFetchMicroTriangleVertexBarycentricNV", - .opcode = 5301, + .name = "OpHitObjectGetObjectRayDirectionEXT", + .opcode = 5328, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpCooperativeVectorLoadNV", - .opcode = 5302, + .name = "OpHitObjectGetWorldRayDirectionEXT", + .opcode = 5329, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetWorldRayOriginEXT", + .opcode = 5330, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ - .name = "OpCooperativeVectorStoreNV", - .opcode = 5303, + .name = "OpHitObjectGetObjectToWorldEXT", + .opcode = 5331, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetWorldToObjectEXT", + .opcode = 5332, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetRayTMaxEXT", + .opcode = 5333, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, }, }, .{ @@ -10433,7 +11631,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpRayQueryGetClusterIdNV", + .name = "OpRayQueryGetIntersectionClusterIdNV", .opcode = 5345, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -10452,6 +11650,60 @@ pub const InstructionSet = enum { }, }, .{ + .name = "OpHitObjectGetRayTMinEXT", + .opcode = 5347, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetShaderBindingTableRecordIndexEXT", + .opcode = 5348, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectGetShaderRecordBufferHandleEXT", + .opcode = 5349, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectIsEmptyEXT", + .opcode = 5350, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectIsHitEXT", + .opcode = 5351, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpHitObjectIsMissEXT", + .opcode = 5352, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ .name = "OpTypeCooperativeMatrixNV", .opcode = 5358, .operands = &.{ @@ -12432,7 +13684,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatSinCosPiINTEL", + .name = "OpArbitraryFloatSinCosPiALTERA", .opcode = 5840, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12446,7 +13698,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatCastINTEL", + .name = "OpArbitraryFloatCastALTERA", .opcode = 5841, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12460,7 +13712,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatCastFromIntINTEL", + .name = "OpArbitraryFloatCastFromIntALTERA", .opcode = 5842, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12474,7 +13726,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatCastToIntINTEL", + .name = "OpArbitraryFloatCastToIntALTERA", .opcode = 5843, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12488,7 +13740,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatAddINTEL", + .name = "OpArbitraryFloatAddALTERA", .opcode = 5846, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12504,7 +13756,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatSubINTEL", + .name = "OpArbitraryFloatSubALTERA", .opcode = 5847, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12520,7 +13772,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatMulINTEL", + .name = "OpArbitraryFloatMulALTERA", .opcode = 5848, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12536,7 +13788,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatDivINTEL", + .name = "OpArbitraryFloatDivALTERA", .opcode = 5849, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12552,7 +13804,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatGTINTEL", + .name = "OpArbitraryFloatGTALTERA", .opcode = 5850, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12564,7 +13816,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatGEINTEL", + .name = "OpArbitraryFloatGEALTERA", .opcode = 5851, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12576,7 +13828,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatLTINTEL", + .name = "OpArbitraryFloatLTALTERA", .opcode = 5852, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12588,7 +13840,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatLEINTEL", + .name = "OpArbitraryFloatLEALTERA", .opcode = 5853, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12600,7 +13852,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatEQINTEL", + .name = "OpArbitraryFloatEQALTERA", .opcode = 5854, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12612,7 +13864,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatRecipINTEL", + .name = "OpArbitraryFloatRecipALTERA", .opcode = 5855, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12626,7 +13878,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatRSqrtINTEL", + .name = "OpArbitraryFloatRSqrtALTERA", .opcode = 5856, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12640,7 +13892,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatCbrtINTEL", + .name = "OpArbitraryFloatCbrtALTERA", .opcode = 5857, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12654,7 +13906,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatHypotINTEL", + .name = "OpArbitraryFloatHypotALTERA", .opcode = 5858, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -12670,7 +13922,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpArbitraryFloatSqrtINTEL", + .name = "OpArbitraryFloatSqrtALTERA", .opcode = 5859, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13046,7 +14298,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedSqrtINTEL", + .name = "OpFixedSqrtALTERA", .opcode = 5923, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13060,7 +14312,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedRecipINTEL", + .name = "OpFixedRecipALTERA", .opcode = 5924, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13074,7 +14326,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedRsqrtINTEL", + .name = "OpFixedRsqrtALTERA", .opcode = 5925, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13088,7 +14340,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedSinINTEL", + .name = "OpFixedSinALTERA", .opcode = 5926, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13102,7 +14354,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedCosINTEL", + .name = "OpFixedCosALTERA", .opcode = 5927, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13116,7 +14368,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedSinCosINTEL", + .name = "OpFixedSinCosALTERA", .opcode = 5928, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13130,7 +14382,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedSinPiINTEL", + .name = "OpFixedSinPiALTERA", .opcode = 5929, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13144,7 +14396,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedCosPiINTEL", + .name = "OpFixedCosPiALTERA", .opcode = 5930, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13158,7 +14410,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedSinCosPiINTEL", + .name = "OpFixedSinCosPiALTERA", .opcode = 5931, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13172,7 +14424,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedLogINTEL", + .name = "OpFixedLogALTERA", .opcode = 5932, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13186,7 +14438,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFixedExpINTEL", + .name = "OpFixedExpALTERA", .opcode = 5933, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13200,7 +14452,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpPtrCastToCrossWorkgroupINTEL", + .name = "OpPtrCastToCrossWorkgroupALTERA", .opcode = 5934, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13209,7 +14461,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpCrossWorkgroupCastToPtrINTEL", + .name = "OpCrossWorkgroupCastToPtrALTERA", .opcode = 5938, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13218,7 +14470,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpReadPipeBlockingINTEL", + .name = "OpReadPipeBlockingALTERA", .opcode = 5946, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13228,7 +14480,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpWritePipeBlockingINTEL", + .name = "OpWritePipeBlockingALTERA", .opcode = 5947, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13238,7 +14490,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpFPGARegINTEL", + .name = "OpFPGARegALTERA", .opcode = 5949, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13507,7 +14759,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpTaskSequenceCreateINTEL", + .name = "OpTaskSequenceCreateALTERA", .opcode = 6163, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13520,7 +14772,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpTaskSequenceAsyncINTEL", + .name = "OpTaskSequenceAsyncALTERA", .opcode = 6164, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, @@ -13528,7 +14780,7 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpTaskSequenceGetINTEL", + .name = "OpTaskSequenceGetALTERA", .opcode = 6165, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, @@ -13537,14 +14789,14 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpTaskSequenceReleaseINTEL", + .name = "OpTaskSequenceReleaseALTERA", .opcode = 6166, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpTypeTaskSequenceINTEL", + .name = "OpTypeTaskSequenceALTERA", .opcode = 6199, .operands = &.{ .{ .kind = .id_result, .quantifier = .required }, @@ -13664,6 +14916,83 @@ pub const InstructionSet = enum { }, }, .{ + .name = "OpUntypedVariableLengthArrayINTEL", + .opcode = 6244, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpConditionalExtensionINTEL", + .opcode = 6248, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + }, + }, + .{ + .name = "OpConditionalEntryPointINTEL", + .opcode = 6249, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .execution_model, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_string, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpConditionalCapabilityINTEL", + .opcode = 6250, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .capability, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstantTargetINTEL", + .opcode = 6251, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpSpecConstantArchitectureINTEL", + .opcode = 6252, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + }, + }, + .{ + .name = "OpSpecConstantCapabilitiesINTEL", + .opcode = 6253, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .capability, .quantifier = .variadic }, + }, + }, + .{ + .name = "OpConditionalCopyObjectINTEL", + .opcode = 6254, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, + }, + }, + .{ .name = "OpGroupIMulKHR", .opcode = 6401, .operands = &.{ @@ -13761,406 +15090,447 @@ pub const InstructionSet = enum { }, }, .{ - .name = "OpMaskedGatherINTEL", - .opcode = 6428, + .name = "OpMaskedGatherINTEL", + .opcode = 6428, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpMaskedScatterINTEL", + .opcode = 6429, + .operands = &.{ + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpConvertHandleToImageINTEL", + .opcode = 6529, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpConvertHandleToSamplerINTEL", + .opcode = 6530, + .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + }, + }, + .{ + .name = "OpConvertHandleToSampledImageINTEL", + .opcode = 6531, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpMaskedScatterINTEL", - .opcode = 6429, + .name = "OpFDot2MixAcc32VALVE", + .opcode = 6916, .operands = &.{ + .{ .kind = .id_result_type, .quantifier = .required }, + .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertHandleToImageINTEL", - .opcode = 6529, + .name = "OpFDot2MixAcc16VALVE", + .opcode = 6917, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "OpConvertHandleToSamplerINTEL", - .opcode = 6530, + .name = "OpFDot4MixAcc32VALVE", + .opcode = 6918, .operands = &.{ .{ .kind = .id_result_type, .quantifier = .required }, .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, + }, + .@"OpenCL.std" => &.{ .{ - .name = "OpConvertHandleToSampledImageINTEL", - .opcode = 6531, + .name = "acos", + .opcode = 0, .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, - }, - .@"GLSL.std.450" => &.{ .{ - .name = "Round", + .name = "acosh", .opcode = 1, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "RoundEven", + .name = "acospi", .opcode = 2, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Trunc", + .name = "asin", .opcode = 3, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FAbs", + .name = "asinh", .opcode = 4, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "SAbs", + .name = "asinpi", .opcode = 5, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FSign", + .name = "atan", .opcode = 6, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "SSign", + .name = "atan2", .opcode = 7, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Floor", + .name = "atanh", .opcode = 8, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Ceil", + .name = "atanpi", .opcode = 9, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Fract", + .name = "atan2pi", .opcode = 10, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Radians", + .name = "cbrt", .opcode = 11, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Degrees", + .name = "ceil", .opcode = 12, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Sin", + .name = "copysign", .opcode = 13, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Cos", + .name = "cos", .opcode = 14, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Tan", + .name = "cosh", .opcode = 15, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Asin", + .name = "cospi", .opcode = 16, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Acos", + .name = "erfc", .opcode = 17, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Atan", + .name = "erf", .opcode = 18, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Sinh", + .name = "exp", .opcode = 19, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Cosh", + .name = "exp2", .opcode = 20, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Tanh", + .name = "exp10", .opcode = 21, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Asinh", + .name = "expm1", .opcode = 22, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Acosh", + .name = "fabs", .opcode = 23, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Atanh", + .name = "fdim", .opcode = 24, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Atan2", + .name = "floor", .opcode = 25, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Pow", + .name = "fma", .opcode = 26, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Exp", + .name = "fmax", .opcode = 27, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Log", + .name = "fmin", .opcode = 28, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Exp2", + .name = "fmod", .opcode = 29, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Log2", + .name = "fract", .opcode = 30, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Sqrt", + .name = "frexp", .opcode = 31, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "InverseSqrt", + .name = "hypot", .opcode = 32, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Determinant", + .name = "ilogb", .opcode = 33, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "MatrixInverse", + .name = "ldexp", .opcode = 34, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Modf", + .name = "lgamma", .opcode = 35, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "ModfStruct", + .name = "lgamma_r", .opcode = 36, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FMin", + .name = "log", .opcode = 37, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UMin", + .name = "log2", .opcode = 38, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "SMin", + .name = "log10", .opcode = 39, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FMax", + .name = "log1p", .opcode = 40, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UMax", + .name = "logb", .opcode = 41, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "SMax", + .name = "mad", .opcode = 42, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FClamp", + .name = "maxmag", .opcode = 43, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UClamp", + .name = "minmag", .opcode = 44, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "SClamp", + .name = "modf", .opcode = 45, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FMix", + .name = "nan", .opcode = 46, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "IMix", + .name = "nextafter", .opcode = 47, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Step", + .name = "pow", .opcode = 48, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, @@ -14168,25 +15538,23 @@ pub const InstructionSet = enum { }, }, .{ - .name = "SmoothStep", + .name = "pown", .opcode = 49, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Fma", + .name = "powr", .opcode = 50, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Frexp", + .name = "remainder", .opcode = 51, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, @@ -14194,121 +15562,123 @@ pub const InstructionSet = enum { }, }, .{ - .name = "FrexpStruct", + .name = "remquo", .opcode = 52, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Ldexp", + .name = "rint", .opcode = 53, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackSnorm4x8", + .name = "rootn", .opcode = 54, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackUnorm4x8", + .name = "round", .opcode = 55, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackSnorm2x16", + .name = "rsqrt", .opcode = 56, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackUnorm2x16", + .name = "sin", .opcode = 57, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackHalf2x16", + .name = "sincos", .opcode = 58, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "PackDouble2x32", + .name = "sinh", .opcode = 59, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackSnorm2x16", + .name = "sinpi", .opcode = 60, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackUnorm2x16", + .name = "sqrt", .opcode = 61, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackHalf2x16", + .name = "tan", .opcode = 62, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackSnorm4x8", + .name = "tanh", .opcode = 63, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackUnorm4x8", + .name = "tanpi", .opcode = 64, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "UnpackDouble2x32", + .name = "tgamma", .opcode = 65, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Length", + .name = "trunc", .opcode = 66, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Distance", + .name = "half_cos", .opcode = 67, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Cross", + .name = "half_divide", .opcode = 68, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, @@ -14316,420 +15686,412 @@ pub const InstructionSet = enum { }, }, .{ - .name = "Normalize", + .name = "half_exp", .opcode = 69, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FaceForward", + .name = "half_exp2", .opcode = 70, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Reflect", + .name = "half_exp10", .opcode = 71, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "Refract", + .name = "half_log", .opcode = 72, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FindILsb", + .name = "half_log2", .opcode = 73, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FindSMsb", + .name = "half_log10", .opcode = 74, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "FindUMsb", + .name = "half_powr", .opcode = 75, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "InterpolateAtCentroid", + .name = "half_recip", .opcode = 76, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "InterpolateAtSample", + .name = "half_rsqrt", .opcode = 77, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "InterpolateAtOffset", + .name = "half_sin", .opcode = 78, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "NMin", + .name = "half_sqrt", .opcode = 79, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "NMax", + .name = "half_tan", .opcode = 80, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "NClamp", + .name = "native_cos", .opcode = 81, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, - }, - .@"OpenCL.std" => &.{ .{ - .name = "acos", - .opcode = 0, + .name = "native_divide", + .opcode = 82, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "acosh", - .opcode = 1, + .name = "native_exp", + .opcode = 83, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "acospi", - .opcode = 2, + .name = "native_exp2", + .opcode = 84, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "asin", - .opcode = 3, + .name = "native_exp10", + .opcode = 85, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "asinh", - .opcode = 4, + .name = "native_log", + .opcode = 86, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "asinpi", - .opcode = 5, + .name = "native_log2", + .opcode = 87, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "atan", - .opcode = 6, + .name = "native_log10", + .opcode = 88, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "atan2", - .opcode = 7, + .name = "native_powr", + .opcode = 89, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "atanh", - .opcode = 8, + .name = "native_recip", + .opcode = 90, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "atanpi", - .opcode = 9, + .name = "native_rsqrt", + .opcode = 91, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "atan2pi", - .opcode = 10, + .name = "native_sin", + .opcode = 92, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "cbrt", - .opcode = 11, + .name = "native_sqrt", + .opcode = 93, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "ceil", - .opcode = 12, + .name = "native_tan", + .opcode = 94, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "copysign", - .opcode = 13, + .name = "fclamp", + .opcode = 95, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cos", - .opcode = 14, - .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "cosh", - .opcode = 15, + .name = "degrees", + .opcode = 96, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "cospi", - .opcode = 16, + .name = "fmax_common", + .opcode = 97, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "erfc", - .opcode = 17, + .name = "fmin_common", + .opcode = 98, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "erf", - .opcode = 18, + .name = "mix", + .opcode = 99, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "exp", - .opcode = 19, + .name = "radians", + .opcode = 100, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "exp2", - .opcode = 20, + .name = "step", + .opcode = 101, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "exp10", - .opcode = 21, + .name = "smoothstep", + .opcode = 102, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "expm1", - .opcode = 22, + .name = "sign", + .opcode = 103, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fabs", - .opcode = 23, + .name = "cross", + .opcode = 104, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fdim", - .opcode = 24, + .name = "distance", + .opcode = 105, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "floor", - .opcode = 25, + .name = "length", + .opcode = 106, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fma", - .opcode = 26, + .name = "normalize", + .opcode = 107, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fmax", - .opcode = 27, + .name = "fast_distance", + .opcode = 108, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fmin", - .opcode = 28, + .name = "fast_length", + .opcode = 109, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fmod", - .opcode = 29, + .name = "fast_normalize", + .opcode = 110, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fract", - .opcode = 30, + .name = "s_abs", + .opcode = 141, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "frexp", - .opcode = 31, + .name = "s_abs_diff", + .opcode = 142, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "hypot", - .opcode = 32, + .name = "s_add_sat", + .opcode = 143, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "ilogb", - .opcode = 33, + .name = "u_add_sat", + .opcode = 144, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "ldexp", - .opcode = 34, + .name = "s_hadd", + .opcode = 145, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "lgamma", - .opcode = 35, + .name = "u_hadd", + .opcode = 146, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "lgamma_r", - .opcode = 36, + .name = "s_rhadd", + .opcode = 147, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "log", - .opcode = 37, + .name = "u_rhadd", + .opcode = 148, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "log2", - .opcode = 38, + .name = "s_clamp", + .opcode = 149, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "log10", - .opcode = 39, + .name = "u_clamp", + .opcode = 150, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "log1p", - .opcode = 40, + .name = "clz", + .opcode = 151, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "logb", - .opcode = 41, + .name = "ctz", + .opcode = 152, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "mad", - .opcode = 42, + .name = "s_mad_hi", + .opcode = 153, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -14737,607 +16099,636 @@ pub const InstructionSet = enum { }, }, .{ - .name = "maxmag", - .opcode = 43, + .name = "u_mad_sat", + .opcode = 154, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "minmag", - .opcode = 44, + .name = "s_mad_sat", + .opcode = 155, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "modf", - .opcode = 45, + .name = "s_max", + .opcode = 156, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "nan", - .opcode = 46, + .name = "u_max", + .opcode = 157, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "nextafter", - .opcode = 47, + .name = "s_min", + .opcode = 158, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "pow", - .opcode = 48, + .name = "u_min", + .opcode = 159, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "pown", - .opcode = 49, + .name = "s_mul_hi", + .opcode = 160, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "powr", - .opcode = 50, + .name = "rotate", + .opcode = 161, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "remainder", - .opcode = 51, + .name = "s_sub_sat", + .opcode = 162, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "remquo", - .opcode = 52, + .name = "u_sub_sat", + .opcode = 163, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "rint", - .opcode = 53, + .name = "u_upsample", + .opcode = 164, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "rootn", - .opcode = 54, + .name = "s_upsample", + .opcode = 165, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "round", - .opcode = 55, + .name = "popcount", + .opcode = 166, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "rsqrt", - .opcode = 56, + .name = "s_mad24", + .opcode = 167, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "sin", - .opcode = 57, + .name = "u_mad24", + .opcode = 168, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "sincos", - .opcode = 58, + .name = "s_mul24", + .opcode = 169, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "sinh", - .opcode = 59, + .name = "u_mul24", + .opcode = 170, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "sinpi", - .opcode = 60, + .name = "vloadn", + .opcode = 171, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "sqrt", - .opcode = 61, + .name = "vstoren", + .opcode = 172, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "tan", - .opcode = 62, + .name = "vload_half", + .opcode = 173, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "tanh", - .opcode = 63, + .name = "vload_halfn", + .opcode = 174, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "tanpi", - .opcode = 64, + .name = "vstore_half", + .opcode = 175, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "tgamma", - .opcode = 65, + .name = "vstore_half_r", + .opcode = 176, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "trunc", - .opcode = 66, + .name = "vstore_halfn", + .opcode = 177, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_cos", - .opcode = 67, + .name = "vstore_halfn_r", + .opcode = 178, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "half_divide", - .opcode = 68, + .name = "vloada_halfn", + .opcode = 179, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "half_exp", - .opcode = 69, + .name = "vstorea_halfn", + .opcode = 180, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_exp2", - .opcode = 70, + .name = "vstorea_halfn_r", + .opcode = 181, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "half_exp10", - .opcode = 71, + .name = "shuffle", + .opcode = 182, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_log", - .opcode = 72, + .name = "shuffle2", + .opcode = 183, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_log2", - .opcode = 73, + .name = "printf", + .opcode = 184, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "half_log10", - .opcode = 74, + .name = "prefetch", + .opcode = 185, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_powr", - .opcode = 75, + .name = "bitselect", + .opcode = 186, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_recip", - .opcode = 76, + .name = "select", + .opcode = 187, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_rsqrt", - .opcode = 77, + .name = "u_abs", + .opcode = 201, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_sin", - .opcode = 78, + .name = "u_abs_diff", + .opcode = 202, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_sqrt", - .opcode = 79, + .name = "u_mul_hi", + .opcode = 203, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "half_tan", - .opcode = 80, + .name = "u_mad_hi", + .opcode = 204, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, + }, + .@"GLSL.std.450" => &.{ .{ - .name = "native_cos", - .opcode = 81, + .name = "Round", + .opcode = 1, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_divide", - .opcode = 82, + .name = "RoundEven", + .opcode = 2, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_exp", - .opcode = 83, + .name = "Trunc", + .opcode = 3, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_exp2", - .opcode = 84, + .name = "FAbs", + .opcode = 4, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_exp10", - .opcode = 85, + .name = "SAbs", + .opcode = 5, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_log", - .opcode = 86, + .name = "FSign", + .opcode = 6, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_log2", - .opcode = 87, + .name = "SSign", + .opcode = 7, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_log10", - .opcode = 88, + .name = "Floor", + .opcode = 8, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_powr", - .opcode = 89, + .name = "Ceil", + .opcode = 9, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_recip", - .opcode = 90, + .name = "Fract", + .opcode = 10, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_rsqrt", - .opcode = 91, + .name = "Radians", + .opcode = 11, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_sin", - .opcode = 92, + .name = "Degrees", + .opcode = 12, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_sqrt", - .opcode = 93, + .name = "Sin", + .opcode = 13, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "native_tan", - .opcode = 94, + .name = "Cos", + .opcode = 14, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fclamp", - .opcode = 95, + .name = "Tan", + .opcode = 15, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "degrees", - .opcode = 96, + .name = "Asin", + .opcode = 16, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fmax_common", - .opcode = 97, + .name = "Acos", + .opcode = 17, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fmin_common", - .opcode = 98, + .name = "Atan", + .opcode = 18, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "mix", - .opcode = 99, + .name = "Sinh", + .opcode = 19, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "radians", - .opcode = 100, + .name = "Cosh", + .opcode = 20, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "step", - .opcode = 101, + .name = "Tanh", + .opcode = 21, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "smoothstep", - .opcode = 102, + .name = "Asinh", + .opcode = 22, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "sign", - .opcode = 103, + .name = "Acosh", + .opcode = 23, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "cross", - .opcode = 104, + .name = "Atanh", + .opcode = 24, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "distance", - .opcode = 105, + .name = "Atan2", + .opcode = 25, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "length", - .opcode = 106, + .name = "Pow", + .opcode = 26, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "normalize", - .opcode = 107, + .name = "Exp", + .opcode = 27, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fast_distance", - .opcode = 108, + .name = "Log", + .opcode = 28, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fast_length", - .opcode = 109, + .name = "Exp2", + .opcode = 29, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "fast_normalize", - .opcode = 110, + .name = "Log2", + .opcode = 30, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_abs", - .opcode = 141, + .name = "Sqrt", + .opcode = 31, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_abs_diff", - .opcode = 142, + .name = "InverseSqrt", + .opcode = 32, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_add_sat", - .opcode = 143, + .name = "Determinant", + .opcode = 33, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_add_sat", - .opcode = 144, + .name = "MatrixInverse", + .opcode = 34, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_hadd", - .opcode = 145, + .name = "Modf", + .opcode = 35, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_hadd", - .opcode = 146, + .name = "ModfStruct", + .opcode = 36, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_rhadd", - .opcode = 147, + .name = "FMin", + .opcode = 37, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_rhadd", - .opcode = 148, + .name = "UMin", + .opcode = 38, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_clamp", - .opcode = 149, + .name = "SMin", + .opcode = 39, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_clamp", - .opcode = 150, + .name = "FMax", + .opcode = 40, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "clz", - .opcode = 151, + .name = "UMax", + .opcode = 41, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "ctz", - .opcode = 152, + .name = "SMax", + .opcode = 42, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_mad_hi", - .opcode = 153, + .name = "FClamp", + .opcode = 43, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -15345,8 +16736,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "u_mad_sat", - .opcode = 154, + .name = "UClamp", + .opcode = 44, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -15354,8 +16745,8 @@ pub const InstructionSet = enum { }, }, .{ - .name = "s_mad_sat", - .opcode = 155, + .name = "SClamp", + .opcode = 45, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -15363,211 +16754,189 @@ pub const InstructionSet = enum { }, }, .{ - .name = "s_max", - .opcode = 156, + .name = "FMix", + .opcode = 46, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_max", - .opcode = 157, + .name = "IMix", + .opcode = 47, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_min", - .opcode = 158, + .name = "Step", + .opcode = 48, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_min", - .opcode = 159, + .name = "SmoothStep", + .opcode = 49, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_mul_hi", - .opcode = 160, + .name = "Fma", + .opcode = 50, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "rotate", - .opcode = 161, + .name = "Frexp", + .opcode = 51, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_sub_sat", - .opcode = 162, + .name = "FrexpStruct", + .opcode = 52, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_sub_sat", - .opcode = 163, + .name = "Ldexp", + .opcode = 53, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_upsample", - .opcode = 164, + .name = "PackSnorm4x8", + .opcode = 54, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_upsample", - .opcode = 165, + .name = "PackUnorm4x8", + .opcode = 55, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "popcount", - .opcode = 166, + .name = "PackSnorm2x16", + .opcode = 56, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_mad24", - .opcode = 167, + .name = "PackUnorm2x16", + .opcode = 57, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_mad24", - .opcode = 168, + .name = "PackHalf2x16", + .opcode = 58, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "s_mul24", - .opcode = 169, + .name = "PackDouble2x32", + .opcode = 59, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_mul24", - .opcode = 170, + .name = "UnpackSnorm2x16", + .opcode = 60, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "vloadn", - .opcode = 171, + .name = "UnpackUnorm2x16", + .opcode = 61, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "vstoren", - .opcode = 172, + .name = "UnpackHalf2x16", + .opcode = 62, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "vload_half", - .opcode = 173, + .name = "UnpackSnorm4x8", + .opcode = 63, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "vload_halfn", - .opcode = 174, + .name = "UnpackUnorm4x8", + .opcode = 64, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "vstore_half", - .opcode = 175, + .name = "UnpackDouble2x32", + .opcode = 65, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "vstore_half_r", - .opcode = 176, + .name = "Length", + .opcode = 66, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "vstore_halfn", - .opcode = 177, + .name = "Distance", + .opcode = 67, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "vstore_halfn_r", - .opcode = 178, + .name = "Cross", + .opcode = 68, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "vloada_halfn", - .opcode = 179, + .name = "Normalize", + .opcode = 69, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, }, }, .{ - .name = "vstorea_halfn", - .opcode = 180, + .name = "FaceForward", + .opcode = 70, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -15575,92 +16944,85 @@ pub const InstructionSet = enum { }, }, .{ - .name = "vstorea_halfn_r", - .opcode = 181, + .name = "Reflect", + .opcode = 71, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, }, }, .{ - .name = "shuffle", - .opcode = 182, + .name = "Refract", + .opcode = 72, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "shuffle2", - .opcode = 183, + .name = "FindILsb", + .opcode = 73, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "printf", - .opcode = 184, + .name = "FindSMsb", + .opcode = 74, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, }, }, .{ - .name = "prefetch", - .opcode = 185, + .name = "FindUMsb", + .opcode = 75, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "bitselect", - .opcode = 186, + .name = "InterpolateAtCentroid", + .opcode = 76, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "select", - .opcode = 187, + .name = "InterpolateAtSample", + .opcode = 77, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_abs", - .opcode = 201, + .name = "InterpolateAtOffset", + .opcode = 78, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, + .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_abs_diff", - .opcode = 202, + .name = "NMin", + .opcode = 79, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_mul_hi", - .opcode = 203, + .name = "NMax", + .opcode = 80, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, }, }, .{ - .name = "u_mad_hi", - .opcode = 204, + .name = "NClamp", + .opcode = 81, .operands = &.{ .{ .kind = .id_ref, .quantifier = .required }, .{ .kind = .id_ref, .quantifier = .required }, @@ -15680,3 +17042,72 @@ pub const InstructionSet = enum { }; } }; +pub const Extension = enum { + v1_0, + v1_1, + v1_2, + v1_3, + v1_4, + v1_5, + v1_6, + SPV_EXT_shader_tile_image, + SPV_EXT_float8, + SPV_KHR_fragment_shading_rate, + SPV_KHR_shader_ballot, + SPV_KHR_shader_draw_parameters, + SPV_KHR_workgroup_memory_explicit_layout, + SPV_KHR_subgroup_vote, + SPV_KHR_16bit_storage, + SPV_KHR_device_group, + SPV_KHR_multiview, + SPV_KHR_variable_pointers, + SPV_KHR_shader_atomic_counter_ops, + SPV_KHR_post_depth_coverage, + SPV_KHR_8bit_storage, + SPV_KHR_float_controls, + SPV_KHR_ray_query, + SPV_KHR_untyped_pointers, + SPV_KHR_ray_tracing, + SPV_EXT_shader_stencil_export, + SPV_EXT_shader_image_int64, + SPV_KHR_shader_clock, + SPV_KHR_quad_control, + SPV_KHR_bfloat16, + SPV_KHR_abort, + SPV_EXT_descriptor_heap, + SPV_KHR_constant_data, + SPV_KHR_poison_freeze, + SPV_EXT_shader_viewport_index_layer, + SPV_EXT_fragment_fully_covered, + SPV_EXT_mesh_shader, + SPV_KHR_fragment_shader_barycentric, + SPV_KHR_compute_shader_derivatives, + SPV_EXT_fragment_invocation_density, + SPV_EXT_shader_subgroup_partitioned, + SPV_EXT_descriptor_indexing, + SPV_KHR_ray_tracing_position_fetch, + SPV_KHR_vulkan_memory_model, + SPV_EXT_physical_storage_buffer, + SPV_KHR_physical_storage_buffer, + SPV_EXT_fragment_shader_interlock, + SPV_EXT_demote_to_helper_invocation, + SPV_EXT_opacity_micromap, + SPV_EXT_shader_invocation_reorder, + SPV_EXT_long_vector, + SPV_EXT_shader_64bit_indexing, + SPV_EXT_shader_atomic_float_min_max, + SPV_KHR_expect_assume, + SPV_KHR_integer_dot_product, + SPV_KHR_ray_cull_mask, + SPV_KHR_cooperative_matrix, + SPV_EXT_replicated_composites, + SPV_KHR_bit_instructions, + SPV_KHR_subgroup_rotate, + SPV_KHR_float_controls2, + SPV_KHR_fma, + SPV_EXT_shader_atomic_float_add, + SPV_EXT_optnone, + SPV_EXT_shader_atomic_float16_add, + SPV_EXT_arithmetic_fence, + SPV_KHR_uniform_group_instructions, +}; diff --git a/src/link/SpirV.zig b/src/link/SpirV.zig @@ -12,7 +12,6 @@ const Air = @import("../Air.zig"); const Type = @import("../Type.zig"); const codegen = @import("../codegen.zig"); const CodeGen = @import("../codegen/spirv/CodeGen.zig"); -const Module = @import("../codegen/spirv/Module.zig"); const BinaryModule = @import("SpirV/BinaryModule.zig"); const lower_invocation_globals = @import("SpirV/lower_invocation_globals.zig"); const dedup_types = @import("SpirV/dedup_types.zig"); @@ -147,6 +146,21 @@ pub fn loadInput(linker: *Linker, input: link.Input) !void { const id_bound = all_words[3]; const instructions = try gpa.dupe(Word, all_words[5..]); + errdefer gpa.free(instructions); + + // OpCapability instructions appear at the top of the module + // so we can stop scanning as soon as we hit anything else. + var it: BinaryModule.Instruction.Iterator = .init(instructions, 0); + const has_linkage = while (it.next()) |inst| switch (inst.opcode) { + .OpCapability => { + const cap: spec.Capability = @enumFromInt(inst.operands[0]); + if (cap == .linkage) break true; + }, + else => break false, + } else false; + if (!has_linkage) { + return diags.fail("SPIR-V object '{f}' is missing the Linkage capability and cannot be linked", .{obj.path}); + } try linker.external_objects.append(gpa, .{ .instructions = instructions, @@ -594,63 +608,54 @@ fn emitPreamble( capabilities: *Section, extensions: *Section, memory_model: *Section, -) error{OutOfMemory}!void { - try capabilities.emit(gpa, .OpCapability, .{ .capability = .int8 }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .int16 }); +) !void { + var caps: std.EnumSet(spec.Capability) = .empty; + var exts: std.StringHashMapUnmanaged(void) = .empty; + defer exts.deinit(gpa); switch (target.os.tag) { - .opengl => { - try capabilities.emit(gpa, .OpCapability, .{ .capability = .shader }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .matrix }); - }, - .vulkan => { - try capabilities.emit(gpa, .OpCapability, .{ .capability = .shader }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .matrix }); - if (target.cpu.arch == .spirv64) { - try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_physical_storage_buffer" }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .physical_storage_buffer_addresses }); - } - }, + .opengl, .vulkan => caps.insert(.shader), .opencl, .amdhsa => { - try capabilities.emit(gpa, .OpCapability, .{ .capability = .kernel }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .addresses }); + caps.insert(.kernel); + caps.insert(.addresses); }, else => unreachable, } - if (target.cpu.arch == .spirv64) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .int64 }); - if (target.cpu.has(.spirv, .int64)) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .int64 }); - if (target.cpu.has(.spirv, .float16)) { - if (target.os.tag == .opencl) try extensions.emit(gpa, .OpExtension, .{ .name = "cl_khr_fp16" }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .float16 }); - } - if (target.cpu.has(.spirv, .float64)) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .float64 }); - if (target.cpu.has(.spirv, .generic_pointer)) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .generic_pointer }); - if (target.cpu.has(.spirv, .vector16)) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .vector16 }); - if (target.cpu.has(.spirv, .storage_push_constant16)) { - try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_16bit_storage" }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .storage_push_constant16 }); + if (target.os.tag == .vulkan and target.cpu.arch == .spirv64) { + caps.insert(.physical_storage_buffer_addresses); + try exts.put(gpa, "SPV_KHR_physical_storage_buffer", {}); } - if (target.cpu.has(.spirv, .arbitrary_precision_integers)) { - try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_INTEL_arbitrary_precision_integers" }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .arbitrary_precision_integers_intel }); + if (has_linkage) caps.insert(.linkage); + + inline for (@typeInfo(spec.Capability).@"enum".field_names) |cap_name| { + if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, cap_name))) + caps.insert(@field(spec.Capability, cap_name)); } - if (target.cpu.has(.spirv, .variable_pointers)) { - try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_variable_pointers" }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .variable_pointers_storage_buffer }); - try capabilities.emit(gpa, .OpCapability, .{ .capability = .variable_pointers }); + inline for (@typeInfo(spec.Extension).@"enum".field_names) |ext_name| { + switch (@field(spec.Extension, ext_name)) { + .v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {}, + else => if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, ext_name))) + try exts.put(gpa, ext_name, {}), + } } - if (has_linkage) - try capabilities.emit(gpa, .OpCapability, .{ .capability = .linkage }); + + var cit = caps.iterator(); + while (cit.next()) |cap| try capabilities.emit(gpa, .OpCapability, .{ .capability = cap }); + var eit = exts.iterator(); + while (eit.next()) |e| try extensions.emit(gpa, .OpExtension, .{ .name = e.key_ptr.* }); const addressing_model: spec.AddressingModel = switch (target.os.tag) { .opengl => .logical, - .vulkan => if (target.cpu.arch == .spirv32) .logical else .physical_storage_buffer64, - .opencl => if (target.cpu.arch == .spirv32) .physical32 else .physical64, + .vulkan => switch (target.cpu.arch) { + .spirv32 => .logical, + .spirv64 => .physical_storage_buffer64, + else => unreachable, + }, + .opencl => switch (target.cpu.arch) { + .spirv32 => .physical32, + .spirv64 => .physical64, + else => unreachable, + }, .amdhsa => .physical64, else => unreachable, }; @@ -659,6 +664,7 @@ fn emitPreamble( .memory_model = switch (target.os.tag) { .opencl => .open_cl, .vulkan, .opengl => .glsl450, + .amdhsa => unreachable, // TODO else => unreachable, }, }); diff --git a/test/standalone/build.zig b/test/standalone/build.zig @@ -69,6 +69,13 @@ pub fn build(b: *std.Build) void { }); tool.root_module.addImport("preprocessor", mingw_preprocessor_mod); } + if (std.mem.endsWith(u8, tool_src_path, "update_cpu_features.zig")) { + const spirv_spec = b.createModule(.{ + .root_source_file = b.path("../../src/codegen/spirv/spec.zig"), + .target = tools_target, + }); + tool.root_module.addImport("spirv_spec", spirv_spec); + } tools_tests_step.dependOn(&tool.step); } diff --git a/tools/gen_spirv_spec.zig b/tools/gen_spirv_spec.zig @@ -13,6 +13,33 @@ const Operand = g.Operand; const ExtendedStructSet = std.StringHashMap(void); +const allowed_vendors = [_][]const u8{ + "KHR", + "EXT", +}; + +fn isAllowedCapability(name: []const u8) bool { + // core capabilities (no vendor suffix) end in a lowercase letter or digit. + const last = name[name.len - 1]; + if (std.ascii.isLower(last) or std.ascii.isDigit(last)) return true; + for (allowed_vendors) |vendor| { + if (std.mem.endsWith(u8, name, vendor)) return true; + } + return false; +} + +fn isAllowedExtension(name: []const u8) bool { + const spv_prefix = "SPV_"; + if (!std.mem.startsWith(u8, name, spv_prefix)) return false; + const tail = name[spv_prefix.len..]; + for (allowed_vendors) |vendor| { + if (std.mem.startsWith(u8, tail, vendor) and + tail.len > vendor.len and tail[vendor.len] == '_') + return true; + } + return false; +} + const Extension = struct { name: []const u8, opcode_name: []const u8, @@ -325,6 +352,43 @@ fn render( try renderOperandKinds(arena, writer, all_operand_kinds.values(), extended_structs); try renderInstructionSet(writer, registry, extensions, all_operand_kinds); + try renderExtension(arena, writer, all_operand_kinds.values()); +} + +fn renderExtension( + arena: Allocator, + writer: *std.Io.Writer, + kinds: []const OperandKind, +) !void { + try writer.writeAll( + \\pub const Extension = enum { + \\v1_0, + \\v1_1, + \\v1_2, + \\v1_3, + \\v1_4, + \\v1_5, + \\v1_6, + \\ + ); + + var seen_extensions: std.StringHashMapUnmanaged(void) = .empty; + defer seen_extensions.deinit(arena); + + for (kinds) |kind| { + if (std.mem.eql(u8, "Capability", kind.kind)) { + for (kind.enumerants.?) |enumerant| { + if (!isAllowedCapability(enumerant.enumerant)) continue; + for (enumerant.extensions) |ext| { + if (!isAllowedExtension(ext)) continue; + if (seen_extensions.contains(ext)) continue; + try seen_extensions.put(arena, ext, {}); + try writer.print("{s},\n", .{ext}); + } + } + } + } + try writer.writeAll("};\n"); } fn renderInstructionSet( @@ -687,10 +751,13 @@ fn renderValueEnum( const enum_indices = enum_map.values(); + const is_capability = std.mem.eql(u8, "Capability", enumeration.kind); + try writer.print("pub const {f} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)}); for (enum_indices) |i| { const enumerant = enumerants[i]; + if (is_capability and !isAllowedCapability(enumerant.enumerant)) continue; // if (enumerant.value != .int) return error.InvalidRegistry; switch (enumerant.value) { @@ -702,6 +769,8 @@ fn renderValueEnum( try writer.writeByte('\n'); for (aliases.items) |alias| { + if (is_capability and (!isAllowedCapability(enumerants[alias.enumerant].enumerant) or + !isAllowedCapability(enumerants[alias.alias].enumerant))) continue; try writer.print("pub const {f} = {f}.{f};\n", .{ formatId(enumerants[alias.enumerant].enumerant), std.zig.fmtId(enumeration.kind), @@ -709,6 +778,41 @@ fn renderValueEnum( }); } + if (is_capability) { + try writer.writeAll( + \\ + \\pub fn dependencies(self: Capability) []const Extension { + \\ return switch (self) { + ); + + for (enum_indices) |i| { + const enumerant = enumerants[i]; + if (!isAllowedCapability(enumerant.enumerant)) continue; + + // Convert version to enum. + // None is for reserved + // Example: "None" -> .v1_0 + // Example: "1.5" -> .v1_5 + const enum_version = enumerant.version.?; + const version: [4]u8 = .{ 'v', '1', '_', if (enum_version[0] == 'N') '0' else enum_version[2] }; + + try writer.print("\n.{f} => &.{{.{s},", .{ formatId(enumerant.enumerant), version }); + for (enumerant.extensions) |extension| { + if (!isAllowedExtension(extension)) continue; + try writer.print(".{s},", .{extension}); + } + try writer.writeAll("},"); + } + + try writer.writeAll( + \\}; + \\} + \\}; + \\ + ); + return; + } + if (!extended_structs.contains(enumeration.kind)) { try writer.writeAll("};\n"); return; diff --git a/tools/update_cpu_features.zig b/tools/update_cpu_features.zig @@ -1,4 +1,5 @@ const builtin = @import("builtin"); +const spirv_spec = @import("spirv_spec"); const std = @import("std"); const Io = std.Io; @@ -49,6 +50,43 @@ const ArchTarget = struct { branch_quota: ?usize = null, }; +const spirv_extra_features = blk: { + const caps_info = @typeInfo(spirv_spec.Capability).@"enum"; + const exts_info = @typeInfo(spirv_spec.Extension).@"enum"; + const caps_len = caps_info.field_names.len; + const exts_len = exts_info.field_names.len; + + var features: [caps_len + exts_len]Feature = undefined; + for ( + caps_info.field_names, + caps_info.field_values, + features[0..caps_len], + ) |name, value, *feature| { + feature.* = .{ + .zig_name = name, + .desc = "Enable " ++ name ++ " capability", + .deps = &struct { + const extensions = spirv_spec.Capability.dependencies(@enumFromInt(value)); + const deps: [extensions.len][]const u8 = inner: { + var out: [extensions.len][]const u8 = undefined; + for (extensions, 0..) |ext, i| out[i] = @tagName(ext); + break :inner out; + }; + }.deps, + }; + } + + for (exts_info.field_names, features[caps_len..]) |name, *feature| { + feature.* = .{ + .zig_name = name, + .desc = "Enable " ++ name ++ " extension", + .deps = &.{}, + }; + } + + break :blk features; +}; + const targets = [_]ArchTarget{ .{ .zig_name = "aarch64", @@ -1443,83 +1481,7 @@ const targets = [_]ArchTarget{ .td_name = "SPIRV", }, .branch_quota = 2000, - .extra_features = &.{ - .{ - .zig_name = "v1_0", - .desc = "Enable version 1.0", - .deps = &.{}, - }, - .{ - .zig_name = "v1_1", - .desc = "Enable version 1.1", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "v1_2", - .desc = "Enable version 1.2", - .deps = &.{"v1_1"}, - }, - .{ - .zig_name = "v1_3", - .desc = "Enable version 1.3", - .deps = &.{"v1_2"}, - }, - .{ - .zig_name = "v1_4", - .desc = "Enable version 1.4", - .deps = &.{"v1_3"}, - }, - .{ - .zig_name = "v1_5", - .desc = "Enable version 1.5", - .deps = &.{"v1_4"}, - }, - .{ - .zig_name = "v1_6", - .desc = "Enable version 1.6", - .deps = &.{"v1_5"}, - }, - .{ - .zig_name = "int64", - .desc = "Enable Int64 capability", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "float16", - .desc = "Enable Float16 capability", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "float64", - .desc = "Enable Float64 capability", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "storage_push_constant16", - .desc = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability", - .deps = &.{"v1_3"}, - }, - .{ - .zig_name = "arbitrary_precision_integers", - .desc = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability", - .deps = &.{"v1_5"}, - }, - .{ - .zig_name = "generic_pointer", - .desc = "Enable GenericPointer capability", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "vector16", - .desc = "Enable Vector16 capability", - .deps = &.{"v1_0"}, - }, - .{ - .zig_name = "variable_pointers", - .desc = "Enable SPV_KHR_variable_pointers extension and the VariablePointers capability", - .deps = &.{"v1_0"}, - }, - }, + .extra_features = &spirv_extra_features, .extra_cpus = &.{ .{ .llvm_name = null,