authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2026-06-18 18:51:47+03:30
committergravatar for alichraghi@noreply.codeberg.orgAli Cheraghi <alichraghi@noreply.codeberg.org> 2026-06-20 09:38:20+02:00
log3a48f4bb40d219efc9b96df44850bcedf83f6285
tree27f8d64e9843ff084cc83e64ca1e05fcbc9d1a4b
parentf4462c0cd74c052ec58e13394c6862955b17b214

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

9 files changed, 6222 insertions(+), 3261 deletions(-)

build.zig+20
...@@ -70,6 +70,23 @@ pub fn build(b: *std.Build) !void {...@@ -70,6 +70,23 @@ pub fn build(b: *std.Build) !void {
70 b.getInstallStep().dependOn(&install_std_docs.step);70 b.getInstallStep().dependOn(&install_std_docs.step);
71 }71 }
7272
73 const update_cpu_features = b.addExecutable(.{
74 .name = "update-cpu-features",
75 .root_module = b.createModule(.{
76 .root_source_file = b.path("tools/update_cpu_features.zig"),
77 .target = b.graph.host,
78 .imports = &.{.{
79 .name = "spirv_spec",
80 .module = b.createModule(.{
81 .root_source_file = b.path("src/codegen/spirv/spec.zig"),
82 .target = b.graph.host,
83 }),
84 }},
85 }),
86 });
87 const run_update_cpu_features = b.addRunArtifact(update_cpu_features);
88 run_update_cpu_features.addPassthruArgs();
89
73 if (flat) {90 if (flat) {
74 b.installFile("LICENSE", "LICENSE");91 b.installFile("LICENSE", "LICENSE");
75 b.installFile("README.md", "README.md");92 b.installFile("README.md", "README.md");
...@@ -85,6 +102,9 @@ pub fn build(b: *std.Build) !void {...@@ -85,6 +102,9 @@ pub fn build(b: *std.Build) !void {
85 docs_step.dependOn(langref_step);102 docs_step.dependOn(langref_step);
86 docs_step.dependOn(std_docs_step);103 docs_step.dependOn(std_docs_step);
87104
105 const update_cpu_features_step = b.step("update-cpu-features", "Update CPU Features");
106 update_cpu_features_step.dependOn(&run_update_cpu_features.step);
107
88 const no_matrix = b.option(bool, "no-matrix", "Limit test matrix to exactly one target configuration") orelse false;108 const no_matrix = b.option(bool, "no-matrix", "Limit test matrix to exactly one target configuration") orelse false;
89 const fuzz_only = b.option(bool, "fuzz-only", "Limit test matrix to one target suitable for fuzzing") orelse false;109 const fuzz_only = b.option(bool, "fuzz-only", "Limit test matrix to one target suitable for fuzzing") orelse false;
90 const skip_debug = b.option(bool, "skip-debug", "Main test suite skips debug builds") orelse false;110 const skip_debug = b.option(bool, "skip-debug", "Main test suite skips debug builds") orelse false;
lib/std/Target/spirv.zig+1753-32
...@@ -5,12 +5,225 @@ const CpuFeature = std.Target.Cpu.Feature;...@@ -5,12 +5,225 @@ const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;5const CpuModel = std.Target.Cpu.Model;
66
7pub const Feature = enum {7pub const Feature = enum {
8 arbitrary_precision_integers,8 abort_khr,
9 addresses,
10 arithmetic_fence_ext,
11 atomic_float16add_ext,
12 atomic_float16min_max_ext,
13 atomic_float32add_ext,
14 atomic_float32min_max_ext,
15 atomic_float64add_ext,
16 atomic_float64min_max_ext,
17 atomic_storage,
18 atomic_storage_ops,
19 b_float16cooperative_matrix_khr,
20 b_float16dot_product_khr,
21 b_float16type_khr,
22 bit_instructions,
23 clip_distance,
24 compute_derivative_group_linear_khr,
25 compute_derivative_group_quads_khr,
26 constant_data_khr,
27 cooperative_matrix_khr,
28 cull_distance,
29 demote_to_helper_invocation,
30 denorm_flush_to_zero,
31 denorm_preserve,
32 derivative_control,
33 descriptor_heap_ext,
34 device_enqueue,
35 device_group,
36 dot_product,
37 dot_product_input4x8bit,
38 dot_product_input4x8bit_packed,
39 dot_product_input_all,
40 draw_parameters,
41 expect_assume_khr,
9 float16,42 float16,
43 float16buffer,
10 float64,44 float64,
45 float8cooperative_matrix_ext,
46 float8ext,
47 float_controls2,
48 fmakhr,
49 fragment_barycentric_khr,
50 fragment_density_ext,
51 fragment_fully_covered_ext,
52 fragment_shader_pixel_interlock_ext,
53 fragment_shader_sample_interlock_ext,
54 fragment_shader_shading_rate_interlock_ext,
55 fragment_shading_rate_khr,
11 generic_pointer,56 generic_pointer,
57 geometry,
58 geometry_point_size,
59 geometry_streams,
60 group_non_uniform,
61 group_non_uniform_arithmetic,
62 group_non_uniform_ballot,
63 group_non_uniform_clustered,
64 group_non_uniform_partitioned_ext,
65 group_non_uniform_quad,
66 group_non_uniform_rotate_khr,
67 group_non_uniform_shuffle,
68 group_non_uniform_shuffle_relative,
69 group_non_uniform_vote,
70 group_uniform_arithmetic_khr,
71 groups,
72 image_basic,
73 image_buffer,
74 image_cube_array,
75 image_gather_extended,
76 image_mipmap,
77 image_ms_array,
78 image_query,
79 image_read_write,
80 image_rect,
81 input_attachment,
82 input_attachment_array_dynamic_indexing,
83 input_attachment_array_non_uniform_indexing,
84 int16,
12 int64,85 int64,
86 int64atomics,
87 int64image_ext,
88 int8,
89 interpolation_function,
90 kernel,
91 linkage,
92 literal_sampler,
93 long_vector_ext,
94 matrix,
95 mesh_shading_ext,
96 min_lod,
97 multi_view,
98 multi_viewport,
99 named_barrier,
100 opt_none_ext,
101 physical_storage_buffer_addresses,
102 pipe_storage,
103 pipes,
104 poison_freeze_khr,
105 quad_control_khr,
106 ray_cull_mask_khr,
107 ray_query_khr,
108 ray_query_position_fetch_khr,
109 ray_query_provisional_khr,
110 ray_tracing_khr,
111 ray_tracing_opacity_micromap_ext,
112 ray_tracing_position_fetch_khr,
113 ray_tracing_provisional_khr,
114 ray_traversal_primitive_culling_khr,
115 replicated_composites_ext,
116 runtime_descriptor_array,
117 sample_mask_post_depth_coverage,
118 sample_rate_shading,
119 sampled_buffer,
120 sampled_cube_array,
121 sampled_image_array_dynamic_indexing,
122 sampled_image_array_non_uniform_indexing,
123 sampled_rect,
124 shader,
125 shader64bit_indexing_ext,
126 shader_clock_khr,
127 shader_invocation_reorder_ext,
128 shader_layer,
129 shader_non_uniform,
130 shader_viewport_index,
131 shader_viewport_index_layer_ext,
132 signed_zero_inf_nan_preserve,
133 sparse_residency,
134 SPV_EXT_arithmetic_fence,
135 SPV_EXT_demote_to_helper_invocation,
136 SPV_EXT_descriptor_heap,
137 SPV_EXT_descriptor_indexing,
138 SPV_EXT_float8,
139 SPV_EXT_fragment_fully_covered,
140 SPV_EXT_fragment_invocation_density,
141 SPV_EXT_fragment_shader_interlock,
142 SPV_EXT_long_vector,
143 SPV_EXT_mesh_shader,
144 SPV_EXT_opacity_micromap,
145 SPV_EXT_optnone,
146 SPV_EXT_physical_storage_buffer,
147 SPV_EXT_replicated_composites,
148 SPV_EXT_shader_64bit_indexing,
149 SPV_EXT_shader_atomic_float16_add,
150 SPV_EXT_shader_atomic_float_add,
151 SPV_EXT_shader_atomic_float_min_max,
152 SPV_EXT_shader_image_int64,
153 SPV_EXT_shader_invocation_reorder,
154 SPV_EXT_shader_stencil_export,
155 SPV_EXT_shader_subgroup_partitioned,
156 SPV_EXT_shader_tile_image,
157 SPV_EXT_shader_viewport_index_layer,
158 SPV_KHR_16bit_storage,
159 SPV_KHR_8bit_storage,
160 SPV_KHR_abort,
161 SPV_KHR_bfloat16,
162 SPV_KHR_bit_instructions,
163 SPV_KHR_compute_shader_derivatives,
164 SPV_KHR_constant_data,
165 SPV_KHR_cooperative_matrix,
166 SPV_KHR_device_group,
167 SPV_KHR_expect_assume,
168 SPV_KHR_float_controls,
169 SPV_KHR_float_controls2,
170 SPV_KHR_fma,
171 SPV_KHR_fragment_shader_barycentric,
172 SPV_KHR_fragment_shading_rate,
173 SPV_KHR_integer_dot_product,
174 SPV_KHR_multiview,
175 SPV_KHR_physical_storage_buffer,
176 SPV_KHR_poison_freeze,
177 SPV_KHR_post_depth_coverage,
178 SPV_KHR_quad_control,
179 SPV_KHR_ray_cull_mask,
180 SPV_KHR_ray_query,
181 SPV_KHR_ray_tracing,
182 SPV_KHR_ray_tracing_position_fetch,
183 SPV_KHR_shader_atomic_counter_ops,
184 SPV_KHR_shader_ballot,
185 SPV_KHR_shader_clock,
186 SPV_KHR_shader_draw_parameters,
187 SPV_KHR_subgroup_rotate,
188 SPV_KHR_subgroup_vote,
189 SPV_KHR_uniform_group_instructions,
190 SPV_KHR_untyped_pointers,
191 SPV_KHR_variable_pointers,
192 SPV_KHR_vulkan_memory_model,
193 SPV_KHR_workgroup_memory_explicit_layout,
194 stencil_export_ext,
195 storage_buffer16bit_access,
196 storage_buffer8bit_access,
197 storage_buffer_array_dynamic_indexing,
198 storage_buffer_array_non_uniform_indexing,
199 storage_image_array_dynamic_indexing,
200 storage_image_array_non_uniform_indexing,
201 storage_image_extended_formats,
202 storage_image_multisample,
203 storage_image_read_without_format,
204 storage_image_write_without_format,
205 storage_input_output16,
13 storage_push_constant16,206 storage_push_constant16,
207 storage_push_constant8,
208 storage_texel_buffer_array_dynamic_indexing,
209 storage_texel_buffer_array_non_uniform_indexing,
210 subgroup_ballot_khr,
211 subgroup_dispatch,
212 subgroup_vote_khr,
213 tessellation,
214 tessellation_point_size,
215 tile_image_color_read_access_ext,
216 tile_image_depth_read_access_ext,
217 tile_image_stencil_read_access_ext,
218 transform_feedback,
219 uniform_and_storage_buffer16bit_access,
220 uniform_and_storage_buffer8bit_access,
221 uniform_buffer_array_dynamic_indexing,
222 uniform_buffer_array_non_uniform_indexing,
223 uniform_decoration,
224 uniform_texel_buffer_array_dynamic_indexing,
225 uniform_texel_buffer_array_non_uniform_indexing,
226 untyped_pointers_khr,
14 v1_0,227 v1_0,
15 v1_1,228 v1_1,
16 v1_2,229 v1_2,
...@@ -19,7 +232,13 @@ pub const Feature = enum {...@@ -19,7 +232,13 @@ pub const Feature = enum {
19 v1_5,232 v1_5,
20 v1_6,233 v1_6,
21 variable_pointers,234 variable_pointers,
235 variable_pointers_storage_buffer,
22 vector16,236 vector16,
237 vulkan_memory_model,
238 vulkan_memory_model_device_scope,
239 workgroup_memory_explicit_layout16bit_access_khr,
240 workgroup_memory_explicit_layout8bit_access_khr,
241 workgroup_memory_explicit_layout_khr,
23};242};
24243
25pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;244pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
...@@ -32,106 +251,1608 @@ pub const all_features = blk: {...@@ -32,106 +251,1608 @@ pub const all_features = blk: {
32 const len = @typeInfo(Feature).@"enum".field_names.len;251 const len = @typeInfo(Feature).@"enum".field_names.len;
33 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);252 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
34 var result: [len]CpuFeature = undefined;253 var result: [len]CpuFeature = undefined;
35 result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{254 result[@intFromEnum(Feature.abort_khr)] = .{
36 .llvm_name = null,255 .llvm_name = null,
37 .description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability",256 .description = "Enable abort_khr Capability.",
38 .dependencies = featureSet(&[_]Feature{257 .dependencies = featureSet(&[_]Feature{
258 .SPV_KHR_abort,
259 .v1_0,
260 }),
261 };
262 result[@intFromEnum(Feature.addresses)] = .{
263 .llvm_name = null,
264 .description = "Enable addresses Capability.",
265 .dependencies = featureSet(&[_]Feature{
266 .v1_0,
267 }),
268 };
269 result[@intFromEnum(Feature.arithmetic_fence_ext)] = .{
270 .llvm_name = null,
271 .description = "Enable arithmetic_fence_ext Capability.",
272 .dependencies = featureSet(&[_]Feature{
273 .SPV_EXT_arithmetic_fence,
274 .v1_0,
275 }),
276 };
277 result[@intFromEnum(Feature.atomic_float16add_ext)] = .{
278 .llvm_name = null,
279 .description = "Enable atomic_float16add_ext Capability.",
280 .dependencies = featureSet(&[_]Feature{
281 .SPV_EXT_shader_atomic_float16_add,
282 .v1_0,
283 }),
284 };
285 result[@intFromEnum(Feature.atomic_float16min_max_ext)] = .{
286 .llvm_name = null,
287 .description = "Enable atomic_float16min_max_ext Capability.",
288 .dependencies = featureSet(&[_]Feature{
289 .SPV_EXT_shader_atomic_float_min_max,
290 .v1_0,
291 }),
292 };
293 result[@intFromEnum(Feature.atomic_float32add_ext)] = .{
294 .llvm_name = null,
295 .description = "Enable atomic_float32add_ext Capability.",
296 .dependencies = featureSet(&[_]Feature{
297 .SPV_EXT_shader_atomic_float_add,
298 .v1_0,
299 }),
300 };
301 result[@intFromEnum(Feature.atomic_float32min_max_ext)] = .{
302 .llvm_name = null,
303 .description = "Enable atomic_float32min_max_ext Capability.",
304 .dependencies = featureSet(&[_]Feature{
305 .SPV_EXT_shader_atomic_float_min_max,
306 .v1_0,
307 }),
308 };
309 result[@intFromEnum(Feature.atomic_float64add_ext)] = .{
310 .llvm_name = null,
311 .description = "Enable atomic_float64add_ext Capability.",
312 .dependencies = featureSet(&[_]Feature{
313 .SPV_EXT_shader_atomic_float_add,
314 .v1_0,
315 }),
316 };
317 result[@intFromEnum(Feature.atomic_float64min_max_ext)] = .{
318 .llvm_name = null,
319 .description = "Enable atomic_float64min_max_ext Capability.",
320 .dependencies = featureSet(&[_]Feature{
321 .SPV_EXT_shader_atomic_float_min_max,
322 .v1_0,
323 }),
324 };
325 result[@intFromEnum(Feature.atomic_storage)] = .{
326 .llvm_name = null,
327 .description = "Enable atomic_storage Capability.",
328 .dependencies = featureSet(&[_]Feature{
329 .v1_0,
330 }),
331 };
332 result[@intFromEnum(Feature.atomic_storage_ops)] = .{
333 .llvm_name = null,
334 .description = "Enable atomic_storage_ops Capability.",
335 .dependencies = featureSet(&[_]Feature{
336 .SPV_KHR_shader_atomic_counter_ops,
337 .v1_0,
338 }),
339 };
340 result[@intFromEnum(Feature.b_float16cooperative_matrix_khr)] = .{
341 .llvm_name = null,
342 .description = "Enable b_float16cooperative_matrix_khr Capability.",
343 .dependencies = featureSet(&[_]Feature{
344 .SPV_KHR_bfloat16,
345 .v1_0,
346 }),
347 };
348 result[@intFromEnum(Feature.b_float16dot_product_khr)] = .{
349 .llvm_name = null,
350 .description = "Enable b_float16dot_product_khr Capability.",
351 .dependencies = featureSet(&[_]Feature{
352 .SPV_KHR_bfloat16,
353 .v1_0,
354 }),
355 };
356 result[@intFromEnum(Feature.b_float16type_khr)] = .{
357 .llvm_name = null,
358 .description = "Enable b_float16type_khr Capability.",
359 .dependencies = featureSet(&[_]Feature{
360 .SPV_KHR_bfloat16,
361 .v1_0,
362 }),
363 };
364 result[@intFromEnum(Feature.bit_instructions)] = .{
365 .llvm_name = null,
366 .description = "Enable bit_instructions Capability.",
367 .dependencies = featureSet(&[_]Feature{
368 .SPV_KHR_bit_instructions,
369 .v1_0,
370 }),
371 };
372 result[@intFromEnum(Feature.clip_distance)] = .{
373 .llvm_name = null,
374 .description = "Enable clip_distance Capability.",
375 .dependencies = featureSet(&[_]Feature{
376 .v1_0,
377 }),
378 };
379 result[@intFromEnum(Feature.compute_derivative_group_linear_khr)] = .{
380 .llvm_name = null,
381 .description = "Enable compute_derivative_group_linear_khr Capability.",
382 .dependencies = featureSet(&[_]Feature{
383 .SPV_KHR_compute_shader_derivatives,
384 .v1_0,
385 }),
386 };
387 result[@intFromEnum(Feature.compute_derivative_group_quads_khr)] = .{
388 .llvm_name = null,
389 .description = "Enable compute_derivative_group_quads_khr Capability.",
390 .dependencies = featureSet(&[_]Feature{
391 .SPV_KHR_compute_shader_derivatives,
392 .v1_0,
393 }),
394 };
395 result[@intFromEnum(Feature.constant_data_khr)] = .{
396 .llvm_name = null,
397 .description = "Enable constant_data_khr Capability.",
398 .dependencies = featureSet(&[_]Feature{
399 .SPV_KHR_constant_data,
400 .v1_0,
401 }),
402 };
403 result[@intFromEnum(Feature.cooperative_matrix_khr)] = .{
404 .llvm_name = null,
405 .description = "Enable cooperative_matrix_khr Capability.",
406 .dependencies = featureSet(&[_]Feature{
407 .SPV_KHR_cooperative_matrix,
408 .v1_0,
409 }),
410 };
411 result[@intFromEnum(Feature.cull_distance)] = .{
412 .llvm_name = null,
413 .description = "Enable cull_distance Capability.",
414 .dependencies = featureSet(&[_]Feature{
415 .v1_0,
416 }),
417 };
418 result[@intFromEnum(Feature.demote_to_helper_invocation)] = .{
419 .llvm_name = null,
420 .description = "Enable demote_to_helper_invocation Capability.",
421 .dependencies = featureSet(&[_]Feature{
422 .SPV_EXT_demote_to_helper_invocation,
423 .v1_6,
424 }),
425 };
426 result[@intFromEnum(Feature.denorm_flush_to_zero)] = .{
427 .llvm_name = null,
428 .description = "Enable denorm_flush_to_zero Capability.",
429 .dependencies = featureSet(&[_]Feature{
430 .SPV_KHR_float_controls,
431 .v1_4,
432 }),
433 };
434 result[@intFromEnum(Feature.denorm_preserve)] = .{
435 .llvm_name = null,
436 .description = "Enable denorm_preserve Capability.",
437 .dependencies = featureSet(&[_]Feature{
438 .SPV_KHR_float_controls,
439 .v1_4,
440 }),
441 };
442 result[@intFromEnum(Feature.derivative_control)] = .{
443 .llvm_name = null,
444 .description = "Enable derivative_control Capability.",
445 .dependencies = featureSet(&[_]Feature{
446 .v1_0,
447 }),
448 };
449 result[@intFromEnum(Feature.descriptor_heap_ext)] = .{
450 .llvm_name = null,
451 .description = "Enable descriptor_heap_ext Capability.",
452 .dependencies = featureSet(&[_]Feature{
453 .SPV_EXT_descriptor_heap,
454 .v1_0,
455 }),
456 };
457 result[@intFromEnum(Feature.device_enqueue)] = .{
458 .llvm_name = null,
459 .description = "Enable device_enqueue Capability.",
460 .dependencies = featureSet(&[_]Feature{
461 .v1_0,
462 }),
463 };
464 result[@intFromEnum(Feature.device_group)] = .{
465 .llvm_name = null,
466 .description = "Enable device_group Capability.",
467 .dependencies = featureSet(&[_]Feature{
468 .SPV_KHR_device_group,
469 .v1_3,
470 }),
471 };
472 result[@intFromEnum(Feature.dot_product)] = .{
473 .llvm_name = null,
474 .description = "Enable dot_product Capability.",
475 .dependencies = featureSet(&[_]Feature{
476 .SPV_KHR_integer_dot_product,
477 .v1_6,
478 }),
479 };
480 result[@intFromEnum(Feature.dot_product_input4x8bit)] = .{
481 .llvm_name = null,
482 .description = "Enable dot_product_input4x8bit Capability.",
483 .dependencies = featureSet(&[_]Feature{
484 .SPV_KHR_integer_dot_product,
485 .v1_6,
486 }),
487 };
488 result[@intFromEnum(Feature.dot_product_input4x8bit_packed)] = .{
489 .llvm_name = null,
490 .description = "Enable dot_product_input4x8bit_packed Capability.",
491 .dependencies = featureSet(&[_]Feature{
492 .SPV_KHR_integer_dot_product,
493 .v1_6,
494 }),
495 };
496 result[@intFromEnum(Feature.dot_product_input_all)] = .{
497 .llvm_name = null,
498 .description = "Enable dot_product_input_all Capability.",
499 .dependencies = featureSet(&[_]Feature{
500 .SPV_KHR_integer_dot_product,
501 .v1_6,
502 }),
503 };
504 result[@intFromEnum(Feature.draw_parameters)] = .{
505 .llvm_name = null,
506 .description = "Enable draw_parameters Capability.",
507 .dependencies = featureSet(&[_]Feature{
508 .SPV_KHR_shader_draw_parameters,
509 .v1_3,
510 }),
511 };
512 result[@intFromEnum(Feature.expect_assume_khr)] = .{
513 .llvm_name = null,
514 .description = "Enable expect_assume_khr Capability.",
515 .dependencies = featureSet(&[_]Feature{
516 .SPV_KHR_expect_assume,
517 .v1_0,
518 }),
519 };
520 result[@intFromEnum(Feature.float16)] = .{
521 .llvm_name = null,
522 .description = "Enable float16 Capability.",
523 .dependencies = featureSet(&[_]Feature{
524 .v1_0,
525 }),
526 };
527 result[@intFromEnum(Feature.float16buffer)] = .{
528 .llvm_name = null,
529 .description = "Enable float16buffer Capability.",
530 .dependencies = featureSet(&[_]Feature{
531 .v1_0,
532 }),
533 };
534 result[@intFromEnum(Feature.float64)] = .{
535 .llvm_name = null,
536 .description = "Enable float64 Capability.",
537 .dependencies = featureSet(&[_]Feature{
538 .v1_0,
539 }),
540 };
541 result[@intFromEnum(Feature.float8cooperative_matrix_ext)] = .{
542 .llvm_name = null,
543 .description = "Enable float8cooperative_matrix_ext Capability.",
544 .dependencies = featureSet(&[_]Feature{
545 .SPV_EXT_float8,
546 .v1_0,
547 }),
548 };
549 result[@intFromEnum(Feature.float8ext)] = .{
550 .llvm_name = null,
551 .description = "Enable float8ext Capability.",
552 .dependencies = featureSet(&[_]Feature{
553 .SPV_EXT_float8,
554 .v1_0,
555 }),
556 };
557 result[@intFromEnum(Feature.float_controls2)] = .{
558 .llvm_name = null,
559 .description = "Enable float_controls2 Capability.",
560 .dependencies = featureSet(&[_]Feature{
561 .SPV_KHR_float_controls2,
562 .v1_0,
563 }),
564 };
565 result[@intFromEnum(Feature.fmakhr)] = .{
566 .llvm_name = null,
567 .description = "Enable fmakhr Capability.",
568 .dependencies = featureSet(&[_]Feature{
569 .SPV_KHR_fma,
570 .v1_0,
571 }),
572 };
573 result[@intFromEnum(Feature.fragment_barycentric_khr)] = .{
574 .llvm_name = null,
575 .description = "Enable fragment_barycentric_khr Capability.",
576 .dependencies = featureSet(&[_]Feature{
577 .SPV_KHR_fragment_shader_barycentric,
578 .v1_0,
579 }),
580 };
581 result[@intFromEnum(Feature.fragment_density_ext)] = .{
582 .llvm_name = null,
583 .description = "Enable fragment_density_ext Capability.",
584 .dependencies = featureSet(&[_]Feature{
585 .SPV_EXT_fragment_invocation_density,
586 .v1_0,
587 }),
588 };
589 result[@intFromEnum(Feature.fragment_fully_covered_ext)] = .{
590 .llvm_name = null,
591 .description = "Enable fragment_fully_covered_ext Capability.",
592 .dependencies = featureSet(&[_]Feature{
593 .SPV_EXT_fragment_fully_covered,
594 .v1_0,
595 }),
596 };
597 result[@intFromEnum(Feature.fragment_shader_pixel_interlock_ext)] = .{
598 .llvm_name = null,
599 .description = "Enable fragment_shader_pixel_interlock_ext Capability.",
600 .dependencies = featureSet(&[_]Feature{
601 .SPV_EXT_fragment_shader_interlock,
602 .v1_0,
603 }),
604 };
605 result[@intFromEnum(Feature.fragment_shader_sample_interlock_ext)] = .{
606 .llvm_name = null,
607 .description = "Enable fragment_shader_sample_interlock_ext Capability.",
608 .dependencies = featureSet(&[_]Feature{
609 .SPV_EXT_fragment_shader_interlock,
610 .v1_0,
611 }),
612 };
613 result[@intFromEnum(Feature.fragment_shader_shading_rate_interlock_ext)] = .{
614 .llvm_name = null,
615 .description = "Enable fragment_shader_shading_rate_interlock_ext Capability.",
616 .dependencies = featureSet(&[_]Feature{
617 .SPV_EXT_fragment_shader_interlock,
618 .v1_0,
619 }),
620 };
621 result[@intFromEnum(Feature.fragment_shading_rate_khr)] = .{
622 .llvm_name = null,
623 .description = "Enable fragment_shading_rate_khr Capability.",
624 .dependencies = featureSet(&[_]Feature{
625 .SPV_KHR_fragment_shading_rate,
626 .v1_0,
627 }),
628 };
629 result[@intFromEnum(Feature.generic_pointer)] = .{
630 .llvm_name = null,
631 .description = "Enable generic_pointer Capability.",
632 .dependencies = featureSet(&[_]Feature{
633 .v1_0,
634 }),
635 };
636 result[@intFromEnum(Feature.geometry)] = .{
637 .llvm_name = null,
638 .description = "Enable geometry Capability.",
639 .dependencies = featureSet(&[_]Feature{
640 .v1_0,
641 }),
642 };
643 result[@intFromEnum(Feature.geometry_point_size)] = .{
644 .llvm_name = null,
645 .description = "Enable geometry_point_size Capability.",
646 .dependencies = featureSet(&[_]Feature{
647 .v1_0,
648 }),
649 };
650 result[@intFromEnum(Feature.geometry_streams)] = .{
651 .llvm_name = null,
652 .description = "Enable geometry_streams Capability.",
653 .dependencies = featureSet(&[_]Feature{
654 .v1_0,
655 }),
656 };
657 result[@intFromEnum(Feature.group_non_uniform)] = .{
658 .llvm_name = null,
659 .description = "Enable group_non_uniform Capability.",
660 .dependencies = featureSet(&[_]Feature{
661 .v1_3,
662 }),
663 };
664 result[@intFromEnum(Feature.group_non_uniform_arithmetic)] = .{
665 .llvm_name = null,
666 .description = "Enable group_non_uniform_arithmetic Capability.",
667 .dependencies = featureSet(&[_]Feature{
668 .v1_3,
669 }),
670 };
671 result[@intFromEnum(Feature.group_non_uniform_ballot)] = .{
672 .llvm_name = null,
673 .description = "Enable group_non_uniform_ballot Capability.",
674 .dependencies = featureSet(&[_]Feature{
675 .v1_3,
676 }),
677 };
678 result[@intFromEnum(Feature.group_non_uniform_clustered)] = .{
679 .llvm_name = null,
680 .description = "Enable group_non_uniform_clustered Capability.",
681 .dependencies = featureSet(&[_]Feature{
682 .v1_3,
683 }),
684 };
685 result[@intFromEnum(Feature.group_non_uniform_partitioned_ext)] = .{
686 .llvm_name = null,
687 .description = "Enable group_non_uniform_partitioned_ext Capability.",
688 .dependencies = featureSet(&[_]Feature{
689 .SPV_EXT_shader_subgroup_partitioned,
690 .v1_0,
691 }),
692 };
693 result[@intFromEnum(Feature.group_non_uniform_quad)] = .{
694 .llvm_name = null,
695 .description = "Enable group_non_uniform_quad Capability.",
696 .dependencies = featureSet(&[_]Feature{
697 .v1_3,
698 }),
699 };
700 result[@intFromEnum(Feature.group_non_uniform_rotate_khr)] = .{
701 .llvm_name = null,
702 .description = "Enable group_non_uniform_rotate_khr Capability.",
703 .dependencies = featureSet(&[_]Feature{
704 .SPV_KHR_subgroup_rotate,
705 .v1_0,
706 }),
707 };
708 result[@intFromEnum(Feature.group_non_uniform_shuffle)] = .{
709 .llvm_name = null,
710 .description = "Enable group_non_uniform_shuffle Capability.",
711 .dependencies = featureSet(&[_]Feature{
712 .v1_3,
713 }),
714 };
715 result[@intFromEnum(Feature.group_non_uniform_shuffle_relative)] = .{
716 .llvm_name = null,
717 .description = "Enable group_non_uniform_shuffle_relative Capability.",
718 .dependencies = featureSet(&[_]Feature{
719 .v1_3,
720 }),
721 };
722 result[@intFromEnum(Feature.group_non_uniform_vote)] = .{
723 .llvm_name = null,
724 .description = "Enable group_non_uniform_vote Capability.",
725 .dependencies = featureSet(&[_]Feature{
726 .v1_3,
727 }),
728 };
729 result[@intFromEnum(Feature.group_uniform_arithmetic_khr)] = .{
730 .llvm_name = null,
731 .description = "Enable group_uniform_arithmetic_khr Capability.",
732 .dependencies = featureSet(&[_]Feature{
733 .SPV_KHR_uniform_group_instructions,
734 .v1_0,
735 }),
736 };
737 result[@intFromEnum(Feature.groups)] = .{
738 .llvm_name = null,
739 .description = "Enable groups Capability.",
740 .dependencies = featureSet(&[_]Feature{
741 .v1_0,
742 }),
743 };
744 result[@intFromEnum(Feature.image_basic)] = .{
745 .llvm_name = null,
746 .description = "Enable image_basic Capability.",
747 .dependencies = featureSet(&[_]Feature{
748 .v1_0,
749 }),
750 };
751 result[@intFromEnum(Feature.image_buffer)] = .{
752 .llvm_name = null,
753 .description = "Enable image_buffer Capability.",
754 .dependencies = featureSet(&[_]Feature{
755 .v1_0,
756 }),
757 };
758 result[@intFromEnum(Feature.image_cube_array)] = .{
759 .llvm_name = null,
760 .description = "Enable image_cube_array Capability.",
761 .dependencies = featureSet(&[_]Feature{
762 .v1_0,
763 }),
764 };
765 result[@intFromEnum(Feature.image_gather_extended)] = .{
766 .llvm_name = null,
767 .description = "Enable image_gather_extended Capability.",
768 .dependencies = featureSet(&[_]Feature{
769 .v1_0,
770 }),
771 };
772 result[@intFromEnum(Feature.image_mipmap)] = .{
773 .llvm_name = null,
774 .description = "Enable image_mipmap Capability.",
775 .dependencies = featureSet(&[_]Feature{
776 .v1_0,
777 }),
778 };
779 result[@intFromEnum(Feature.image_ms_array)] = .{
780 .llvm_name = null,
781 .description = "Enable image_ms_array Capability.",
782 .dependencies = featureSet(&[_]Feature{
783 .v1_0,
784 }),
785 };
786 result[@intFromEnum(Feature.image_query)] = .{
787 .llvm_name = null,
788 .description = "Enable image_query Capability.",
789 .dependencies = featureSet(&[_]Feature{
790 .v1_0,
791 }),
792 };
793 result[@intFromEnum(Feature.image_read_write)] = .{
794 .llvm_name = null,
795 .description = "Enable image_read_write Capability.",
796 .dependencies = featureSet(&[_]Feature{
797 .v1_0,
798 }),
799 };
800 result[@intFromEnum(Feature.image_rect)] = .{
801 .llvm_name = null,
802 .description = "Enable image_rect Capability.",
803 .dependencies = featureSet(&[_]Feature{
804 .v1_0,
805 }),
806 };
807 result[@intFromEnum(Feature.input_attachment)] = .{
808 .llvm_name = null,
809 .description = "Enable input_attachment Capability.",
810 .dependencies = featureSet(&[_]Feature{
811 .v1_0,
812 }),
813 };
814 result[@intFromEnum(Feature.input_attachment_array_dynamic_indexing)] = .{
815 .llvm_name = null,
816 .description = "Enable input_attachment_array_dynamic_indexing Capability.",
817 .dependencies = featureSet(&[_]Feature{
818 .SPV_EXT_descriptor_indexing,
819 .v1_5,
820 }),
821 };
822 result[@intFromEnum(Feature.input_attachment_array_non_uniform_indexing)] = .{
823 .llvm_name = null,
824 .description = "Enable input_attachment_array_non_uniform_indexing Capability.",
825 .dependencies = featureSet(&[_]Feature{
826 .SPV_EXT_descriptor_indexing,
827 .v1_5,
828 }),
829 };
830 result[@intFromEnum(Feature.int16)] = .{
831 .llvm_name = null,
832 .description = "Enable int16 Capability.",
833 .dependencies = featureSet(&[_]Feature{
834 .v1_0,
835 }),
836 };
837 result[@intFromEnum(Feature.int64)] = .{
838 .llvm_name = null,
839 .description = "Enable int64 Capability.",
840 .dependencies = featureSet(&[_]Feature{
841 .v1_0,
842 }),
843 };
844 result[@intFromEnum(Feature.int64atomics)] = .{
845 .llvm_name = null,
846 .description = "Enable int64atomics Capability.",
847 .dependencies = featureSet(&[_]Feature{
848 .v1_0,
849 }),
850 };
851 result[@intFromEnum(Feature.int64image_ext)] = .{
852 .llvm_name = null,
853 .description = "Enable int64image_ext Capability.",
854 .dependencies = featureSet(&[_]Feature{
855 .SPV_EXT_shader_image_int64,
856 .v1_0,
857 }),
858 };
859 result[@intFromEnum(Feature.int8)] = .{
860 .llvm_name = null,
861 .description = "Enable int8 Capability.",
862 .dependencies = featureSet(&[_]Feature{
863 .v1_0,
864 }),
865 };
866 result[@intFromEnum(Feature.interpolation_function)] = .{
867 .llvm_name = null,
868 .description = "Enable interpolation_function Capability.",
869 .dependencies = featureSet(&[_]Feature{
870 .v1_0,
871 }),
872 };
873 result[@intFromEnum(Feature.kernel)] = .{
874 .llvm_name = null,
875 .description = "Enable kernel Capability.",
876 .dependencies = featureSet(&[_]Feature{
877 .v1_0,
878 }),
879 };
880 result[@intFromEnum(Feature.linkage)] = .{
881 .llvm_name = null,
882 .description = "Enable linkage Capability.",
883 .dependencies = featureSet(&[_]Feature{
884 .v1_0,
885 }),
886 };
887 result[@intFromEnum(Feature.literal_sampler)] = .{
888 .llvm_name = null,
889 .description = "Enable literal_sampler Capability.",
890 .dependencies = featureSet(&[_]Feature{
891 .v1_0,
892 }),
893 };
894 result[@intFromEnum(Feature.long_vector_ext)] = .{
895 .llvm_name = null,
896 .description = "Enable long_vector_ext Capability.",
897 .dependencies = featureSet(&[_]Feature{
898 .SPV_EXT_long_vector,
899 .v1_0,
900 }),
901 };
902 result[@intFromEnum(Feature.matrix)] = .{
903 .llvm_name = null,
904 .description = "Enable matrix Capability.",
905 .dependencies = featureSet(&[_]Feature{
906 .v1_0,
907 }),
908 };
909 result[@intFromEnum(Feature.mesh_shading_ext)] = .{
910 .llvm_name = null,
911 .description = "Enable mesh_shading_ext Capability.",
912 .dependencies = featureSet(&[_]Feature{
913 .SPV_EXT_mesh_shader,
914 .v1_0,
915 }),
916 };
917 result[@intFromEnum(Feature.min_lod)] = .{
918 .llvm_name = null,
919 .description = "Enable min_lod Capability.",
920 .dependencies = featureSet(&[_]Feature{
921 .v1_0,
922 }),
923 };
924 result[@intFromEnum(Feature.multi_view)] = .{
925 .llvm_name = null,
926 .description = "Enable multi_view Capability.",
927 .dependencies = featureSet(&[_]Feature{
928 .SPV_KHR_multiview,
929 .v1_3,
930 }),
931 };
932 result[@intFromEnum(Feature.multi_viewport)] = .{
933 .llvm_name = null,
934 .description = "Enable multi_viewport Capability.",
935 .dependencies = featureSet(&[_]Feature{
936 .v1_0,
937 }),
938 };
939 result[@intFromEnum(Feature.named_barrier)] = .{
940 .llvm_name = null,
941 .description = "Enable named_barrier Capability.",
942 .dependencies = featureSet(&[_]Feature{
943 .v1_1,
944 }),
945 };
946 result[@intFromEnum(Feature.opt_none_ext)] = .{
947 .llvm_name = null,
948 .description = "Enable opt_none_ext Capability.",
949 .dependencies = featureSet(&[_]Feature{
950 .SPV_EXT_optnone,
951 .v1_0,
952 }),
953 };
954 result[@intFromEnum(Feature.physical_storage_buffer_addresses)] = .{
955 .llvm_name = null,
956 .description = "Enable physical_storage_buffer_addresses Capability.",
957 .dependencies = featureSet(&[_]Feature{
958 .SPV_EXT_physical_storage_buffer,
959 .SPV_KHR_physical_storage_buffer,
960 .v1_5,
961 }),
962 };
963 result[@intFromEnum(Feature.pipe_storage)] = .{
964 .llvm_name = null,
965 .description = "Enable pipe_storage Capability.",
966 .dependencies = featureSet(&[_]Feature{
967 .v1_1,
968 }),
969 };
970 result[@intFromEnum(Feature.pipes)] = .{
971 .llvm_name = null,
972 .description = "Enable pipes Capability.",
973 .dependencies = featureSet(&[_]Feature{
974 .v1_0,
975 }),
976 };
977 result[@intFromEnum(Feature.poison_freeze_khr)] = .{
978 .llvm_name = null,
979 .description = "Enable poison_freeze_khr Capability.",
980 .dependencies = featureSet(&[_]Feature{
981 .SPV_KHR_poison_freeze,
982 .v1_0,
983 }),
984 };
985 result[@intFromEnum(Feature.quad_control_khr)] = .{
986 .llvm_name = null,
987 .description = "Enable quad_control_khr Capability.",
988 .dependencies = featureSet(&[_]Feature{
989 .SPV_KHR_quad_control,
990 .v1_0,
991 }),
992 };
993 result[@intFromEnum(Feature.ray_cull_mask_khr)] = .{
994 .llvm_name = null,
995 .description = "Enable ray_cull_mask_khr Capability.",
996 .dependencies = featureSet(&[_]Feature{
997 .SPV_KHR_ray_cull_mask,
998 .v1_0,
999 }),
1000 };
1001 result[@intFromEnum(Feature.ray_query_khr)] = .{
1002 .llvm_name = null,
1003 .description = "Enable ray_query_khr Capability.",
1004 .dependencies = featureSet(&[_]Feature{
1005 .SPV_KHR_ray_query,
1006 .v1_0,
1007 }),
1008 };
1009 result[@intFromEnum(Feature.ray_query_position_fetch_khr)] = .{
1010 .llvm_name = null,
1011 .description = "Enable ray_query_position_fetch_khr Capability.",
1012 .dependencies = featureSet(&[_]Feature{
1013 .SPV_KHR_ray_tracing_position_fetch,
1014 .v1_0,
1015 }),
1016 };
1017 result[@intFromEnum(Feature.ray_query_provisional_khr)] = .{
1018 .llvm_name = null,
1019 .description = "Enable ray_query_provisional_khr Capability.",
1020 .dependencies = featureSet(&[_]Feature{
1021 .SPV_KHR_ray_query,
1022 .v1_0,
1023 }),
1024 };
1025 result[@intFromEnum(Feature.ray_tracing_khr)] = .{
1026 .llvm_name = null,
1027 .description = "Enable ray_tracing_khr Capability.",
1028 .dependencies = featureSet(&[_]Feature{
1029 .SPV_KHR_ray_tracing,
1030 .v1_0,
1031 }),
1032 };
1033 result[@intFromEnum(Feature.ray_tracing_opacity_micromap_ext)] = .{
1034 .llvm_name = null,
1035 .description = "Enable ray_tracing_opacity_micromap_ext Capability.",
1036 .dependencies = featureSet(&[_]Feature{
1037 .SPV_EXT_opacity_micromap,
1038 .v1_0,
1039 }),
1040 };
1041 result[@intFromEnum(Feature.ray_tracing_position_fetch_khr)] = .{
1042 .llvm_name = null,
1043 .description = "Enable ray_tracing_position_fetch_khr Capability.",
1044 .dependencies = featureSet(&[_]Feature{
1045 .SPV_KHR_ray_tracing_position_fetch,
1046 .v1_0,
1047 }),
1048 };
1049 result[@intFromEnum(Feature.ray_tracing_provisional_khr)] = .{
1050 .llvm_name = null,
1051 .description = "Enable ray_tracing_provisional_khr Capability.",
1052 .dependencies = featureSet(&[_]Feature{
1053 .SPV_KHR_ray_tracing,
1054 .v1_0,
1055 }),
1056 };
1057 result[@intFromEnum(Feature.ray_traversal_primitive_culling_khr)] = .{
1058 .llvm_name = null,
1059 .description = "Enable ray_traversal_primitive_culling_khr Capability.",
1060 .dependencies = featureSet(&[_]Feature{
1061 .SPV_KHR_ray_query,
1062 .SPV_KHR_ray_tracing,
1063 .v1_0,
1064 }),
1065 };
1066 result[@intFromEnum(Feature.replicated_composites_ext)] = .{
1067 .llvm_name = null,
1068 .description = "Enable replicated_composites_ext Capability.",
1069 .dependencies = featureSet(&[_]Feature{
1070 .SPV_EXT_replicated_composites,
1071 .v1_0,
1072 }),
1073 };
1074 result[@intFromEnum(Feature.runtime_descriptor_array)] = .{
1075 .llvm_name = null,
1076 .description = "Enable runtime_descriptor_array Capability.",
1077 .dependencies = featureSet(&[_]Feature{
1078 .SPV_EXT_descriptor_indexing,
1079 .v1_5,
1080 }),
1081 };
1082 result[@intFromEnum(Feature.sample_mask_post_depth_coverage)] = .{
1083 .llvm_name = null,
1084 .description = "Enable sample_mask_post_depth_coverage Capability.",
1085 .dependencies = featureSet(&[_]Feature{
1086 .SPV_KHR_post_depth_coverage,
1087 .v1_0,
1088 }),
1089 };
1090 result[@intFromEnum(Feature.sample_rate_shading)] = .{
1091 .llvm_name = null,
1092 .description = "Enable sample_rate_shading Capability.",
1093 .dependencies = featureSet(&[_]Feature{
1094 .v1_0,
1095 }),
1096 };
1097 result[@intFromEnum(Feature.sampled_buffer)] = .{
1098 .llvm_name = null,
1099 .description = "Enable sampled_buffer Capability.",
1100 .dependencies = featureSet(&[_]Feature{
1101 .v1_0,
1102 }),
1103 };
1104 result[@intFromEnum(Feature.sampled_cube_array)] = .{
1105 .llvm_name = null,
1106 .description = "Enable sampled_cube_array Capability.",
1107 .dependencies = featureSet(&[_]Feature{
1108 .v1_0,
1109 }),
1110 };
1111 result[@intFromEnum(Feature.sampled_image_array_dynamic_indexing)] = .{
1112 .llvm_name = null,
1113 .description = "Enable sampled_image_array_dynamic_indexing Capability.",
1114 .dependencies = featureSet(&[_]Feature{
1115 .v1_0,
1116 }),
1117 };
1118 result[@intFromEnum(Feature.sampled_image_array_non_uniform_indexing)] = .{
1119 .llvm_name = null,
1120 .description = "Enable sampled_image_array_non_uniform_indexing Capability.",
1121 .dependencies = featureSet(&[_]Feature{
1122 .SPV_EXT_descriptor_indexing,
1123 .v1_5,
1124 }),
1125 };
1126 result[@intFromEnum(Feature.sampled_rect)] = .{
1127 .llvm_name = null,
1128 .description = "Enable sampled_rect Capability.",
1129 .dependencies = featureSet(&[_]Feature{
1130 .v1_0,
1131 }),
1132 };
1133 result[@intFromEnum(Feature.shader)] = .{
1134 .llvm_name = null,
1135 .description = "Enable shader Capability.",
1136 .dependencies = featureSet(&[_]Feature{
1137 .v1_0,
1138 }),
1139 };
1140 result[@intFromEnum(Feature.shader64bit_indexing_ext)] = .{
1141 .llvm_name = null,
1142 .description = "Enable shader64bit_indexing_ext Capability.",
1143 .dependencies = featureSet(&[_]Feature{
1144 .SPV_EXT_shader_64bit_indexing,
1145 .v1_0,
1146 }),
1147 };
1148 result[@intFromEnum(Feature.shader_clock_khr)] = .{
1149 .llvm_name = null,
1150 .description = "Enable shader_clock_khr Capability.",
1151 .dependencies = featureSet(&[_]Feature{
1152 .SPV_KHR_shader_clock,
1153 .v1_0,
1154 }),
1155 };
1156 result[@intFromEnum(Feature.shader_invocation_reorder_ext)] = .{
1157 .llvm_name = null,
1158 .description = "Enable shader_invocation_reorder_ext Capability.",
1159 .dependencies = featureSet(&[_]Feature{
1160 .SPV_EXT_shader_invocation_reorder,
1161 .v1_0,
1162 }),
1163 };
1164 result[@intFromEnum(Feature.shader_layer)] = .{
1165 .llvm_name = null,
1166 .description = "Enable shader_layer Capability.",
1167 .dependencies = featureSet(&[_]Feature{
1168 .v1_5,
1169 }),
1170 };
1171 result[@intFromEnum(Feature.shader_non_uniform)] = .{
1172 .llvm_name = null,
1173 .description = "Enable shader_non_uniform Capability.",
1174 .dependencies = featureSet(&[_]Feature{
1175 .SPV_EXT_descriptor_indexing,
1176 .v1_5,
1177 }),
1178 };
1179 result[@intFromEnum(Feature.shader_viewport_index)] = .{
1180 .llvm_name = null,
1181 .description = "Enable shader_viewport_index Capability.",
1182 .dependencies = featureSet(&[_]Feature{
1183 .v1_5,
1184 }),
1185 };
1186 result[@intFromEnum(Feature.shader_viewport_index_layer_ext)] = .{
1187 .llvm_name = null,
1188 .description = "Enable shader_viewport_index_layer_ext Capability.",
1189 .dependencies = featureSet(&[_]Feature{
1190 .SPV_EXT_shader_viewport_index_layer,
1191 .v1_0,
1192 }),
1193 };
1194 result[@intFromEnum(Feature.signed_zero_inf_nan_preserve)] = .{
1195 .llvm_name = null,
1196 .description = "Enable signed_zero_inf_nan_preserve Capability.",
1197 .dependencies = featureSet(&[_]Feature{
1198 .SPV_KHR_float_controls,
1199 .v1_4,
1200 }),
1201 };
1202 result[@intFromEnum(Feature.sparse_residency)] = .{
1203 .llvm_name = null,
1204 .description = "Enable sparse_residency Capability.",
1205 .dependencies = featureSet(&[_]Feature{
1206 .v1_0,
1207 }),
1208 };
1209 result[@intFromEnum(Feature.SPV_EXT_arithmetic_fence)] = .{
1210 .llvm_name = null,
1211 .description = "Enable SPV_EXT_arithmetic_fence Extension.",
1212 .dependencies = featureSet(&[_]Feature{}),
1213 };
1214 result[@intFromEnum(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
1215 .llvm_name = null,
1216 .description = "Enable SPV_EXT_demote_to_helper_invocation Extension.",
1217 .dependencies = featureSet(&[_]Feature{}),
1218 };
1219 result[@intFromEnum(Feature.SPV_EXT_descriptor_heap)] = .{
1220 .llvm_name = null,
1221 .description = "Enable SPV_EXT_descriptor_heap Extension.",
1222 .dependencies = featureSet(&[_]Feature{}),
1223 };
1224 result[@intFromEnum(Feature.SPV_EXT_descriptor_indexing)] = .{
1225 .llvm_name = null,
1226 .description = "Enable SPV_EXT_descriptor_indexing Extension.",
1227 .dependencies = featureSet(&[_]Feature{}),
1228 };
1229 result[@intFromEnum(Feature.SPV_EXT_float8)] = .{
1230 .llvm_name = null,
1231 .description = "Enable SPV_EXT_float8 Extension.",
1232 .dependencies = featureSet(&[_]Feature{}),
1233 };
1234 result[@intFromEnum(Feature.SPV_EXT_fragment_fully_covered)] = .{
1235 .llvm_name = null,
1236 .description = "Enable SPV_EXT_fragment_fully_covered Extension.",
1237 .dependencies = featureSet(&[_]Feature{}),
1238 };
1239 result[@intFromEnum(Feature.SPV_EXT_fragment_invocation_density)] = .{
1240 .llvm_name = null,
1241 .description = "Enable SPV_EXT_fragment_invocation_density Extension.",
1242 .dependencies = featureSet(&[_]Feature{}),
1243 };
1244 result[@intFromEnum(Feature.SPV_EXT_fragment_shader_interlock)] = .{
1245 .llvm_name = null,
1246 .description = "Enable SPV_EXT_fragment_shader_interlock Extension.",
1247 .dependencies = featureSet(&[_]Feature{}),
1248 };
1249 result[@intFromEnum(Feature.SPV_EXT_long_vector)] = .{
1250 .llvm_name = null,
1251 .description = "Enable SPV_EXT_long_vector Extension.",
1252 .dependencies = featureSet(&[_]Feature{}),
1253 };
1254 result[@intFromEnum(Feature.SPV_EXT_mesh_shader)] = .{
1255 .llvm_name = null,
1256 .description = "Enable SPV_EXT_mesh_shader Extension.",
1257 .dependencies = featureSet(&[_]Feature{}),
1258 };
1259 result[@intFromEnum(Feature.SPV_EXT_opacity_micromap)] = .{
1260 .llvm_name = null,
1261 .description = "Enable SPV_EXT_opacity_micromap Extension.",
1262 .dependencies = featureSet(&[_]Feature{}),
1263 };
1264 result[@intFromEnum(Feature.SPV_EXT_optnone)] = .{
1265 .llvm_name = null,
1266 .description = "Enable SPV_EXT_optnone Extension.",
1267 .dependencies = featureSet(&[_]Feature{}),
1268 };
1269 result[@intFromEnum(Feature.SPV_EXT_physical_storage_buffer)] = .{
1270 .llvm_name = null,
1271 .description = "Enable SPV_EXT_physical_storage_buffer Extension.",
1272 .dependencies = featureSet(&[_]Feature{}),
1273 };
1274 result[@intFromEnum(Feature.SPV_EXT_replicated_composites)] = .{
1275 .llvm_name = null,
1276 .description = "Enable SPV_EXT_replicated_composites Extension.",
1277 .dependencies = featureSet(&[_]Feature{}),
1278 };
1279 result[@intFromEnum(Feature.SPV_EXT_shader_64bit_indexing)] = .{
1280 .llvm_name = null,
1281 .description = "Enable SPV_EXT_shader_64bit_indexing Extension.",
1282 .dependencies = featureSet(&[_]Feature{}),
1283 };
1284 result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float16_add)] = .{
1285 .llvm_name = null,
1286 .description = "Enable SPV_EXT_shader_atomic_float16_add Extension.",
1287 .dependencies = featureSet(&[_]Feature{}),
1288 };
1289 result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_add)] = .{
1290 .llvm_name = null,
1291 .description = "Enable SPV_EXT_shader_atomic_float_add Extension.",
1292 .dependencies = featureSet(&[_]Feature{}),
1293 };
1294 result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
1295 .llvm_name = null,
1296 .description = "Enable SPV_EXT_shader_atomic_float_min_max Extension.",
1297 .dependencies = featureSet(&[_]Feature{}),
1298 };
1299 result[@intFromEnum(Feature.SPV_EXT_shader_image_int64)] = .{
1300 .llvm_name = null,
1301 .description = "Enable SPV_EXT_shader_image_int64 Extension.",
1302 .dependencies = featureSet(&[_]Feature{}),
1303 };
1304 result[@intFromEnum(Feature.SPV_EXT_shader_invocation_reorder)] = .{
1305 .llvm_name = null,
1306 .description = "Enable SPV_EXT_shader_invocation_reorder Extension.",
1307 .dependencies = featureSet(&[_]Feature{}),
1308 };
1309 result[@intFromEnum(Feature.SPV_EXT_shader_stencil_export)] = .{
1310 .llvm_name = null,
1311 .description = "Enable SPV_EXT_shader_stencil_export Extension.",
1312 .dependencies = featureSet(&[_]Feature{}),
1313 };
1314 result[@intFromEnum(Feature.SPV_EXT_shader_subgroup_partitioned)] = .{
1315 .llvm_name = null,
1316 .description = "Enable SPV_EXT_shader_subgroup_partitioned Extension.",
1317 .dependencies = featureSet(&[_]Feature{}),
1318 };
1319 result[@intFromEnum(Feature.SPV_EXT_shader_tile_image)] = .{
1320 .llvm_name = null,
1321 .description = "Enable SPV_EXT_shader_tile_image Extension.",
1322 .dependencies = featureSet(&[_]Feature{}),
1323 };
1324 result[@intFromEnum(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
1325 .llvm_name = null,
1326 .description = "Enable SPV_EXT_shader_viewport_index_layer Extension.",
1327 .dependencies = featureSet(&[_]Feature{}),
1328 };
1329 result[@intFromEnum(Feature.SPV_KHR_16bit_storage)] = .{
1330 .llvm_name = null,
1331 .description = "Enable SPV_KHR_16bit_storage Extension.",
1332 .dependencies = featureSet(&[_]Feature{}),
1333 };
1334 result[@intFromEnum(Feature.SPV_KHR_8bit_storage)] = .{
1335 .llvm_name = null,
1336 .description = "Enable SPV_KHR_8bit_storage Extension.",
1337 .dependencies = featureSet(&[_]Feature{}),
1338 };
1339 result[@intFromEnum(Feature.SPV_KHR_abort)] = .{
1340 .llvm_name = null,
1341 .description = "Enable SPV_KHR_abort Extension.",
1342 .dependencies = featureSet(&[_]Feature{}),
1343 };
1344 result[@intFromEnum(Feature.SPV_KHR_bfloat16)] = .{
1345 .llvm_name = null,
1346 .description = "Enable SPV_KHR_bfloat16 Extension.",
1347 .dependencies = featureSet(&[_]Feature{}),
1348 };
1349 result[@intFromEnum(Feature.SPV_KHR_bit_instructions)] = .{
1350 .llvm_name = null,
1351 .description = "Enable SPV_KHR_bit_instructions Extension.",
1352 .dependencies = featureSet(&[_]Feature{}),
1353 };
1354 result[@intFromEnum(Feature.SPV_KHR_compute_shader_derivatives)] = .{
1355 .llvm_name = null,
1356 .description = "Enable SPV_KHR_compute_shader_derivatives Extension.",
1357 .dependencies = featureSet(&[_]Feature{}),
1358 };
1359 result[@intFromEnum(Feature.SPV_KHR_constant_data)] = .{
1360 .llvm_name = null,
1361 .description = "Enable SPV_KHR_constant_data Extension.",
1362 .dependencies = featureSet(&[_]Feature{}),
1363 };
1364 result[@intFromEnum(Feature.SPV_KHR_cooperative_matrix)] = .{
1365 .llvm_name = null,
1366 .description = "Enable SPV_KHR_cooperative_matrix Extension.",
1367 .dependencies = featureSet(&[_]Feature{}),
1368 };
1369 result[@intFromEnum(Feature.SPV_KHR_device_group)] = .{
1370 .llvm_name = null,
1371 .description = "Enable SPV_KHR_device_group Extension.",
1372 .dependencies = featureSet(&[_]Feature{}),
1373 };
1374 result[@intFromEnum(Feature.SPV_KHR_expect_assume)] = .{
1375 .llvm_name = null,
1376 .description = "Enable SPV_KHR_expect_assume Extension.",
1377 .dependencies = featureSet(&[_]Feature{}),
1378 };
1379 result[@intFromEnum(Feature.SPV_KHR_float_controls)] = .{
1380 .llvm_name = null,
1381 .description = "Enable SPV_KHR_float_controls Extension.",
1382 .dependencies = featureSet(&[_]Feature{}),
1383 };
1384 result[@intFromEnum(Feature.SPV_KHR_float_controls2)] = .{
1385 .llvm_name = null,
1386 .description = "Enable SPV_KHR_float_controls2 Extension.",
1387 .dependencies = featureSet(&[_]Feature{}),
1388 };
1389 result[@intFromEnum(Feature.SPV_KHR_fma)] = .{
1390 .llvm_name = null,
1391 .description = "Enable SPV_KHR_fma Extension.",
1392 .dependencies = featureSet(&[_]Feature{}),
1393 };
1394 result[@intFromEnum(Feature.SPV_KHR_fragment_shader_barycentric)] = .{
1395 .llvm_name = null,
1396 .description = "Enable SPV_KHR_fragment_shader_barycentric Extension.",
1397 .dependencies = featureSet(&[_]Feature{}),
1398 };
1399 result[@intFromEnum(Feature.SPV_KHR_fragment_shading_rate)] = .{
1400 .llvm_name = null,
1401 .description = "Enable SPV_KHR_fragment_shading_rate Extension.",
1402 .dependencies = featureSet(&[_]Feature{}),
1403 };
1404 result[@intFromEnum(Feature.SPV_KHR_integer_dot_product)] = .{
1405 .llvm_name = null,
1406 .description = "Enable SPV_KHR_integer_dot_product Extension.",
1407 .dependencies = featureSet(&[_]Feature{}),
1408 };
1409 result[@intFromEnum(Feature.SPV_KHR_multiview)] = .{
1410 .llvm_name = null,
1411 .description = "Enable SPV_KHR_multiview Extension.",
1412 .dependencies = featureSet(&[_]Feature{}),
1413 };
1414 result[@intFromEnum(Feature.SPV_KHR_physical_storage_buffer)] = .{
1415 .llvm_name = null,
1416 .description = "Enable SPV_KHR_physical_storage_buffer Extension.",
1417 .dependencies = featureSet(&[_]Feature{}),
1418 };
1419 result[@intFromEnum(Feature.SPV_KHR_poison_freeze)] = .{
1420 .llvm_name = null,
1421 .description = "Enable SPV_KHR_poison_freeze Extension.",
1422 .dependencies = featureSet(&[_]Feature{}),
1423 };
1424 result[@intFromEnum(Feature.SPV_KHR_post_depth_coverage)] = .{
1425 .llvm_name = null,
1426 .description = "Enable SPV_KHR_post_depth_coverage Extension.",
1427 .dependencies = featureSet(&[_]Feature{}),
1428 };
1429 result[@intFromEnum(Feature.SPV_KHR_quad_control)] = .{
1430 .llvm_name = null,
1431 .description = "Enable SPV_KHR_quad_control Extension.",
1432 .dependencies = featureSet(&[_]Feature{}),
1433 };
1434 result[@intFromEnum(Feature.SPV_KHR_ray_cull_mask)] = .{
1435 .llvm_name = null,
1436 .description = "Enable SPV_KHR_ray_cull_mask Extension.",
1437 .dependencies = featureSet(&[_]Feature{}),
1438 };
1439 result[@intFromEnum(Feature.SPV_KHR_ray_query)] = .{
1440 .llvm_name = null,
1441 .description = "Enable SPV_KHR_ray_query Extension.",
1442 .dependencies = featureSet(&[_]Feature{}),
1443 };
1444 result[@intFromEnum(Feature.SPV_KHR_ray_tracing)] = .{
1445 .llvm_name = null,
1446 .description = "Enable SPV_KHR_ray_tracing Extension.",
1447 .dependencies = featureSet(&[_]Feature{}),
1448 };
1449 result[@intFromEnum(Feature.SPV_KHR_ray_tracing_position_fetch)] = .{
1450 .llvm_name = null,
1451 .description = "Enable SPV_KHR_ray_tracing_position_fetch Extension.",
1452 .dependencies = featureSet(&[_]Feature{}),
1453 };
1454 result[@intFromEnum(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
1455 .llvm_name = null,
1456 .description = "Enable SPV_KHR_shader_atomic_counter_ops Extension.",
1457 .dependencies = featureSet(&[_]Feature{}),
1458 };
1459 result[@intFromEnum(Feature.SPV_KHR_shader_ballot)] = .{
1460 .llvm_name = null,
1461 .description = "Enable SPV_KHR_shader_ballot Extension.",
1462 .dependencies = featureSet(&[_]Feature{}),
1463 };
1464 result[@intFromEnum(Feature.SPV_KHR_shader_clock)] = .{
1465 .llvm_name = null,
1466 .description = "Enable SPV_KHR_shader_clock Extension.",
1467 .dependencies = featureSet(&[_]Feature{}),
1468 };
1469 result[@intFromEnum(Feature.SPV_KHR_shader_draw_parameters)] = .{
1470 .llvm_name = null,
1471 .description = "Enable SPV_KHR_shader_draw_parameters Extension.",
1472 .dependencies = featureSet(&[_]Feature{}),
1473 };
1474 result[@intFromEnum(Feature.SPV_KHR_subgroup_rotate)] = .{
1475 .llvm_name = null,
1476 .description = "Enable SPV_KHR_subgroup_rotate Extension.",
1477 .dependencies = featureSet(&[_]Feature{}),
1478 };
1479 result[@intFromEnum(Feature.SPV_KHR_subgroup_vote)] = .{
1480 .llvm_name = null,
1481 .description = "Enable SPV_KHR_subgroup_vote Extension.",
1482 .dependencies = featureSet(&[_]Feature{}),
1483 };
1484 result[@intFromEnum(Feature.SPV_KHR_uniform_group_instructions)] = .{
1485 .llvm_name = null,
1486 .description = "Enable SPV_KHR_uniform_group_instructions Extension.",
1487 .dependencies = featureSet(&[_]Feature{}),
1488 };
1489 result[@intFromEnum(Feature.SPV_KHR_untyped_pointers)] = .{
1490 .llvm_name = null,
1491 .description = "Enable SPV_KHR_untyped_pointers Extension.",
1492 .dependencies = featureSet(&[_]Feature{}),
1493 };
1494 result[@intFromEnum(Feature.SPV_KHR_variable_pointers)] = .{
1495 .llvm_name = null,
1496 .description = "Enable SPV_KHR_variable_pointers Extension.",
1497 .dependencies = featureSet(&[_]Feature{}),
1498 };
1499 result[@intFromEnum(Feature.SPV_KHR_vulkan_memory_model)] = .{
1500 .llvm_name = null,
1501 .description = "Enable SPV_KHR_vulkan_memory_model Extension.",
1502 .dependencies = featureSet(&[_]Feature{}),
1503 };
1504 result[@intFromEnum(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
1505 .llvm_name = null,
1506 .description = "Enable SPV_KHR_workgroup_memory_explicit_layout Extension.",
1507 .dependencies = featureSet(&[_]Feature{}),
1508 };
1509 result[@intFromEnum(Feature.stencil_export_ext)] = .{
1510 .llvm_name = null,
1511 .description = "Enable stencil_export_ext Capability.",
1512 .dependencies = featureSet(&[_]Feature{
1513 .SPV_EXT_shader_stencil_export,
1514 .v1_0,
1515 }),
1516 };
1517 result[@intFromEnum(Feature.storage_buffer16bit_access)] = .{
1518 .llvm_name = null,
1519 .description = "Enable storage_buffer16bit_access Capability.",
1520 .dependencies = featureSet(&[_]Feature{
1521 .SPV_KHR_16bit_storage,
1522 .v1_3,
1523 }),
1524 };
1525 result[@intFromEnum(Feature.storage_buffer8bit_access)] = .{
1526 .llvm_name = null,
1527 .description = "Enable storage_buffer8bit_access Capability.",
1528 .dependencies = featureSet(&[_]Feature{
1529 .SPV_KHR_8bit_storage,
39 .v1_5,1530 .v1_5,
40 }),1531 }),
41 };1532 };
42 result[@intFromEnum(Feature.float16)] = .{1533 result[@intFromEnum(Feature.storage_buffer_array_dynamic_indexing)] = .{
43 .llvm_name = null,1534 .llvm_name = null,
44 .description = "Enable Float16 capability",1535 .description = "Enable storage_buffer_array_dynamic_indexing Capability.",
45 .dependencies = featureSet(&[_]Feature{1536 .dependencies = featureSet(&[_]Feature{
46 .v1_0,1537 .v1_0,
47 }),1538 }),
48 };1539 };
49 result[@intFromEnum(Feature.float64)] = .{1540 result[@intFromEnum(Feature.storage_buffer_array_non_uniform_indexing)] = .{
1541 .llvm_name = null,
1542 .description = "Enable storage_buffer_array_non_uniform_indexing Capability.",
1543 .dependencies = featureSet(&[_]Feature{
1544 .SPV_EXT_descriptor_indexing,
1545 .v1_5,
1546 }),
1547 };
1548 result[@intFromEnum(Feature.storage_image_array_dynamic_indexing)] = .{
50 .llvm_name = null,1549 .llvm_name = null,
51 .description = "Enable Float64 capability",1550 .description = "Enable storage_image_array_dynamic_indexing Capability.",
52 .dependencies = featureSet(&[_]Feature{1551 .dependencies = featureSet(&[_]Feature{
53 .v1_0,1552 .v1_0,
54 }),1553 }),
55 };1554 };
56 result[@intFromEnum(Feature.generic_pointer)] = .{1555 result[@intFromEnum(Feature.storage_image_array_non_uniform_indexing)] = .{
57 .llvm_name = null,1556 .llvm_name = null,
58 .description = "Enable GenericPointer capability",1557 .description = "Enable storage_image_array_non_uniform_indexing Capability.",
1558 .dependencies = featureSet(&[_]Feature{
1559 .SPV_EXT_descriptor_indexing,
1560 .v1_5,
1561 }),
1562 };
1563 result[@intFromEnum(Feature.storage_image_extended_formats)] = .{
1564 .llvm_name = null,
1565 .description = "Enable storage_image_extended_formats Capability.",
59 .dependencies = featureSet(&[_]Feature{1566 .dependencies = featureSet(&[_]Feature{
60 .v1_0,1567 .v1_0,
61 }),1568 }),
62 };1569 };
63 result[@intFromEnum(Feature.int64)] = .{1570 result[@intFromEnum(Feature.storage_image_multisample)] = .{
1571 .llvm_name = null,
1572 .description = "Enable storage_image_multisample Capability.",
1573 .dependencies = featureSet(&[_]Feature{
1574 .v1_0,
1575 }),
1576 };
1577 result[@intFromEnum(Feature.storage_image_read_without_format)] = .{
1578 .llvm_name = null,
1579 .description = "Enable storage_image_read_without_format Capability.",
1580 .dependencies = featureSet(&[_]Feature{
1581 .v1_0,
1582 }),
1583 };
1584 result[@intFromEnum(Feature.storage_image_write_without_format)] = .{
64 .llvm_name = null,1585 .llvm_name = null,
65 .description = "Enable Int64 capability",1586 .description = "Enable storage_image_write_without_format Capability.",
66 .dependencies = featureSet(&[_]Feature{1587 .dependencies = featureSet(&[_]Feature{
67 .v1_0,1588 .v1_0,
68 }),1589 }),
69 };1590 };
1591 result[@intFromEnum(Feature.storage_input_output16)] = .{
1592 .llvm_name = null,
1593 .description = "Enable storage_input_output16 Capability.",
1594 .dependencies = featureSet(&[_]Feature{
1595 .SPV_KHR_16bit_storage,
1596 .v1_3,
1597 }),
1598 };
70 result[@intFromEnum(Feature.storage_push_constant16)] = .{1599 result[@intFromEnum(Feature.storage_push_constant16)] = .{
71 .llvm_name = null,1600 .llvm_name = null,
72 .description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",1601 .description = "Enable storage_push_constant16 Capability.",
73 .dependencies = featureSet(&[_]Feature{1602 .dependencies = featureSet(&[_]Feature{
1603 .SPV_KHR_16bit_storage,
74 .v1_3,1604 .v1_3,
75 }),1605 }),
76 };1606 };
77 result[@intFromEnum(Feature.v1_0)] = .{1607 result[@intFromEnum(Feature.storage_push_constant8)] = .{
78 .llvm_name = null,1608 .llvm_name = null,
79 .description = "Enable version 1.0",1609 .description = "Enable storage_push_constant8 Capability.",
80 .dependencies = featureSet(&[_]Feature{}),1610 .dependencies = featureSet(&[_]Feature{
1611 .SPV_KHR_8bit_storage,
1612 .v1_5,
1613 }),
81 };1614 };
82 result[@intFromEnum(Feature.v1_1)] = .{1615 result[@intFromEnum(Feature.storage_texel_buffer_array_dynamic_indexing)] = .{
1616 .llvm_name = null,
1617 .description = "Enable storage_texel_buffer_array_dynamic_indexing Capability.",
1618 .dependencies = featureSet(&[_]Feature{
1619 .SPV_EXT_descriptor_indexing,
1620 .v1_5,
1621 }),
1622 };
1623 result[@intFromEnum(Feature.storage_texel_buffer_array_non_uniform_indexing)] = .{
83 .llvm_name = null,1624 .llvm_name = null,
84 .description = "Enable version 1.1",1625 .description = "Enable storage_texel_buffer_array_non_uniform_indexing Capability.",
85 .dependencies = featureSet(&[_]Feature{1626 .dependencies = featureSet(&[_]Feature{
1627 .SPV_EXT_descriptor_indexing,
1628 .v1_5,
1629 }),
1630 };
1631 result[@intFromEnum(Feature.subgroup_ballot_khr)] = .{
1632 .llvm_name = null,
1633 .description = "Enable subgroup_ballot_khr Capability.",
1634 .dependencies = featureSet(&[_]Feature{
1635 .SPV_KHR_shader_ballot,
86 .v1_0,1636 .v1_0,
87 }),1637 }),
88 };1638 };
89 result[@intFromEnum(Feature.v1_2)] = .{1639 result[@intFromEnum(Feature.subgroup_dispatch)] = .{
90 .llvm_name = null,1640 .llvm_name = null,
91 .description = "Enable version 1.2",1641 .description = "Enable subgroup_dispatch Capability.",
92 .dependencies = featureSet(&[_]Feature{1642 .dependencies = featureSet(&[_]Feature{
93 .v1_1,1643 .v1_1,
94 }),1644 }),
95 };1645 };
96 result[@intFromEnum(Feature.v1_3)] = .{1646 result[@intFromEnum(Feature.subgroup_vote_khr)] = .{
97 .llvm_name = null,1647 .llvm_name = null,
98 .description = "Enable version 1.3",1648 .description = "Enable subgroup_vote_khr Capability.",
99 .dependencies = featureSet(&[_]Feature{1649 .dependencies = featureSet(&[_]Feature{
100 .v1_2,1650 .SPV_KHR_subgroup_vote,
1651 .v1_0,
101 }),1652 }),
102 };1653 };
103 result[@intFromEnum(Feature.v1_4)] = .{1654 result[@intFromEnum(Feature.tessellation)] = .{
1655 .llvm_name = null,
1656 .description = "Enable tessellation Capability.",
1657 .dependencies = featureSet(&[_]Feature{
1658 .v1_0,
1659 }),
1660 };
1661 result[@intFromEnum(Feature.tessellation_point_size)] = .{
1662 .llvm_name = null,
1663 .description = "Enable tessellation_point_size Capability.",
1664 .dependencies = featureSet(&[_]Feature{
1665 .v1_0,
1666 }),
1667 };
1668 result[@intFromEnum(Feature.tile_image_color_read_access_ext)] = .{
1669 .llvm_name = null,
1670 .description = "Enable tile_image_color_read_access_ext Capability.",
1671 .dependencies = featureSet(&[_]Feature{
1672 .SPV_EXT_shader_tile_image,
1673 .v1_0,
1674 }),
1675 };
1676 result[@intFromEnum(Feature.tile_image_depth_read_access_ext)] = .{
1677 .llvm_name = null,
1678 .description = "Enable tile_image_depth_read_access_ext Capability.",
1679 .dependencies = featureSet(&[_]Feature{
1680 .SPV_EXT_shader_tile_image,
1681 .v1_0,
1682 }),
1683 };
1684 result[@intFromEnum(Feature.tile_image_stencil_read_access_ext)] = .{
1685 .llvm_name = null,
1686 .description = "Enable tile_image_stencil_read_access_ext Capability.",
1687 .dependencies = featureSet(&[_]Feature{
1688 .SPV_EXT_shader_tile_image,
1689 .v1_0,
1690 }),
1691 };
1692 result[@intFromEnum(Feature.transform_feedback)] = .{
1693 .llvm_name = null,
1694 .description = "Enable transform_feedback Capability.",
1695 .dependencies = featureSet(&[_]Feature{
1696 .v1_0,
1697 }),
1698 };
1699 result[@intFromEnum(Feature.uniform_and_storage_buffer16bit_access)] = .{
104 .llvm_name = null,1700 .llvm_name = null,
105 .description = "Enable version 1.4",1701 .description = "Enable uniform_and_storage_buffer16bit_access Capability.",
106 .dependencies = featureSet(&[_]Feature{1702 .dependencies = featureSet(&[_]Feature{
1703 .SPV_KHR_16bit_storage,
107 .v1_3,1704 .v1_3,
108 }),1705 }),
109 };1706 };
110 result[@intFromEnum(Feature.v1_5)] = .{1707 result[@intFromEnum(Feature.uniform_and_storage_buffer8bit_access)] = .{
111 .llvm_name = null,1708 .llvm_name = null,
112 .description = "Enable version 1.5",1709 .description = "Enable uniform_and_storage_buffer8bit_access Capability.",
113 .dependencies = featureSet(&[_]Feature{1710 .dependencies = featureSet(&[_]Feature{
114 .v1_4,1711 .SPV_KHR_8bit_storage,
1712 .v1_5,
115 }),1713 }),
116 };1714 };
117 result[@intFromEnum(Feature.v1_6)] = .{1715 result[@intFromEnum(Feature.uniform_buffer_array_dynamic_indexing)] = .{
1716 .llvm_name = null,
1717 .description = "Enable uniform_buffer_array_dynamic_indexing Capability.",
1718 .dependencies = featureSet(&[_]Feature{
1719 .v1_0,
1720 }),
1721 };
1722 result[@intFromEnum(Feature.uniform_buffer_array_non_uniform_indexing)] = .{
118 .llvm_name = null,1723 .llvm_name = null,
119 .description = "Enable version 1.6",1724 .description = "Enable uniform_buffer_array_non_uniform_indexing Capability.",
120 .dependencies = featureSet(&[_]Feature{1725 .dependencies = featureSet(&[_]Feature{
1726 .SPV_EXT_descriptor_indexing,
121 .v1_5,1727 .v1_5,
122 }),1728 }),
123 };1729 };
124 result[@intFromEnum(Feature.variable_pointers)] = .{1730 result[@intFromEnum(Feature.uniform_decoration)] = .{
1731 .llvm_name = null,
1732 .description = "Enable uniform_decoration Capability.",
1733 .dependencies = featureSet(&[_]Feature{
1734 .v1_6,
1735 }),
1736 };
1737 result[@intFromEnum(Feature.uniform_texel_buffer_array_dynamic_indexing)] = .{
1738 .llvm_name = null,
1739 .description = "Enable uniform_texel_buffer_array_dynamic_indexing Capability.",
1740 .dependencies = featureSet(&[_]Feature{
1741 .SPV_EXT_descriptor_indexing,
1742 .v1_5,
1743 }),
1744 };
1745 result[@intFromEnum(Feature.uniform_texel_buffer_array_non_uniform_indexing)] = .{
1746 .llvm_name = null,
1747 .description = "Enable uniform_texel_buffer_array_non_uniform_indexing Capability.",
1748 .dependencies = featureSet(&[_]Feature{
1749 .SPV_EXT_descriptor_indexing,
1750 .v1_5,
1751 }),
1752 };
1753 result[@intFromEnum(Feature.untyped_pointers_khr)] = .{
125 .llvm_name = null,1754 .llvm_name = null,
126 .description = "Enable SPV_KHR_variable_pointers extension and the VariablePointers capability",1755 .description = "Enable untyped_pointers_khr Capability.",
127 .dependencies = featureSet(&[_]Feature{1756 .dependencies = featureSet(&[_]Feature{
1757 .SPV_KHR_untyped_pointers,
128 .v1_0,1758 .v1_0,
129 }),1759 }),
130 };1760 };
1761 result[@intFromEnum(Feature.v1_0)] = .{
1762 .llvm_name = null,
1763 .description = "Enable v1_0 Extension.",
1764 .dependencies = featureSet(&[_]Feature{}),
1765 };
1766 result[@intFromEnum(Feature.v1_1)] = .{
1767 .llvm_name = null,
1768 .description = "Enable v1_1 Extension.",
1769 .dependencies = featureSet(&[_]Feature{}),
1770 };
1771 result[@intFromEnum(Feature.v1_2)] = .{
1772 .llvm_name = null,
1773 .description = "Enable v1_2 Extension.",
1774 .dependencies = featureSet(&[_]Feature{}),
1775 };
1776 result[@intFromEnum(Feature.v1_3)] = .{
1777 .llvm_name = null,
1778 .description = "Enable v1_3 Extension.",
1779 .dependencies = featureSet(&[_]Feature{}),
1780 };
1781 result[@intFromEnum(Feature.v1_4)] = .{
1782 .llvm_name = null,
1783 .description = "Enable v1_4 Extension.",
1784 .dependencies = featureSet(&[_]Feature{}),
1785 };
1786 result[@intFromEnum(Feature.v1_5)] = .{
1787 .llvm_name = null,
1788 .description = "Enable v1_5 Extension.",
1789 .dependencies = featureSet(&[_]Feature{}),
1790 };
1791 result[@intFromEnum(Feature.v1_6)] = .{
1792 .llvm_name = null,
1793 .description = "Enable v1_6 Extension.",
1794 .dependencies = featureSet(&[_]Feature{}),
1795 };
1796 result[@intFromEnum(Feature.variable_pointers)] = .{
1797 .llvm_name = null,
1798 .description = "Enable variable_pointers Capability.",
1799 .dependencies = featureSet(&[_]Feature{
1800 .SPV_KHR_variable_pointers,
1801 .v1_3,
1802 }),
1803 };
1804 result[@intFromEnum(Feature.variable_pointers_storage_buffer)] = .{
1805 .llvm_name = null,
1806 .description = "Enable variable_pointers_storage_buffer Capability.",
1807 .dependencies = featureSet(&[_]Feature{
1808 .SPV_KHR_variable_pointers,
1809 .v1_3,
1810 }),
1811 };
131 result[@intFromEnum(Feature.vector16)] = .{1812 result[@intFromEnum(Feature.vector16)] = .{
132 .llvm_name = null,1813 .llvm_name = null,
133 .description = "Enable Vector16 capability",1814 .description = "Enable vector16 Capability.",
1815 .dependencies = featureSet(&[_]Feature{
1816 .v1_0,
1817 }),
1818 };
1819 result[@intFromEnum(Feature.vulkan_memory_model)] = .{
1820 .llvm_name = null,
1821 .description = "Enable vulkan_memory_model Capability.",
1822 .dependencies = featureSet(&[_]Feature{
1823 .SPV_KHR_vulkan_memory_model,
1824 .v1_5,
1825 }),
1826 };
1827 result[@intFromEnum(Feature.vulkan_memory_model_device_scope)] = .{
1828 .llvm_name = null,
1829 .description = "Enable vulkan_memory_model_device_scope Capability.",
1830 .dependencies = featureSet(&[_]Feature{
1831 .SPV_KHR_vulkan_memory_model,
1832 .v1_5,
1833 }),
1834 };
1835 result[@intFromEnum(Feature.workgroup_memory_explicit_layout16bit_access_khr)] = .{
1836 .llvm_name = null,
1837 .description = "Enable workgroup_memory_explicit_layout16bit_access_khr Capability.",
1838 .dependencies = featureSet(&[_]Feature{
1839 .SPV_KHR_workgroup_memory_explicit_layout,
1840 .v1_0,
1841 }),
1842 };
1843 result[@intFromEnum(Feature.workgroup_memory_explicit_layout8bit_access_khr)] = .{
1844 .llvm_name = null,
1845 .description = "Enable workgroup_memory_explicit_layout8bit_access_khr Capability.",
1846 .dependencies = featureSet(&[_]Feature{
1847 .SPV_KHR_workgroup_memory_explicit_layout,
1848 .v1_0,
1849 }),
1850 };
1851 result[@intFromEnum(Feature.workgroup_memory_explicit_layout_khr)] = .{
1852 .llvm_name = null,
1853 .description = "Enable workgroup_memory_explicit_layout_khr Capability.",
134 .dependencies = featureSet(&[_]Feature{1854 .dependencies = featureSet(&[_]Feature{
1855 .SPV_KHR_workgroup_memory_explicit_layout,
135 .v1_0,1856 .v1_0,
136 }),1857 }),
137 };1858 };
src/codegen/spirv/Assembler.zig+2-9
...@@ -167,15 +167,8 @@ fn processInstruction(ass: *Assembler) !void {...@@ -167,15 +167,8 @@ fn processInstruction(ass: *Assembler) !void {
167 .OpExecutionMode, .OpExecutionModeId => {167 .OpExecutionMode, .OpExecutionModeId => {
168 return ass.fail(ass.currentToken().start, "cannot set execution mode in assembly", .{});168 return ass.fail(ass.currentToken().start, "cannot set execution mode in assembly", .{});
169 },169 },
170 .OpCapability => {170 .OpCapability, .OpExtension => {
171 try module.addCapability(@enumFromInt(ass.inst.operands.items[0].value));171 return ass.fail(ass.currentToken().start, "cannot declare capabilities or extensions in assembly; use -mcpu instead", .{});
172 return;
173 },
174 .OpExtension => {
175 const ext_name_offset = ass.inst.operands.items[0].string;
176 const ext_name = std.mem.sliceTo(ass.inst.string_bytes.items[ext_name_offset..], 0);
177 try module.addExtension(ext_name);
178 return;
179 },172 },
180 .OpExtInstImport => blk: {173 .OpExtInstImport => blk: {
181 const set_name_offset = ass.inst.operands.items[1].string;174 const set_name_offset = ass.inst.operands.items[1].string;
src/codegen/spirv/Module.zig+3-286
...@@ -61,8 +61,6 @@ cache: struct {...@@ -61,8 +61,6 @@ cache: struct {
61 struct_types: std.array_hash_map.Custom(StructType, Id, StructType.HashContext, true) = .empty,61 struct_types: std.array_hash_map.Custom(StructType, Id, StructType.HashContext, true) = .empty,
62 fn_types: std.array_hash_map.Custom(FnType, Id, FnType.HashContext, true) = .empty,62 fn_types: std.array_hash_map.Custom(FnType, Id, FnType.HashContext, true) = .empty,
6363
64 capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty,
65 extensions: std.StringHashMapUnmanaged(void) = .empty,
66 extended_instruction_set: std.AutoHashMapUnmanaged(spec.InstructionSet, Id) = .empty,64 extended_instruction_set: std.AutoHashMapUnmanaged(spec.InstructionSet, Id) = .empty,
67 decorations: std.AutoHashMapUnmanaged(struct { Id, spec.Decoration }, void) = .empty,65 decorations: std.AutoHashMapUnmanaged(struct { Id, spec.Decoration }, void) = .empty,
68 builtins: std.AutoHashMapUnmanaged(struct { spec.BuiltIn, spec.StorageClass }, Decl.Index) = .empty,66 builtins: std.AutoHashMapUnmanaged(struct { spec.BuiltIn, spec.StorageClass }, Decl.Index) = .empty,
...@@ -75,8 +73,6 @@ cache: struct {...@@ -75,8 +73,6 @@ cache: struct {
75} = .{},73} = .{},
76/// Module layout, according to SPIR-V Spec section 2.4, "Logical Layout of a Module".74/// Module layout, according to SPIR-V Spec section 2.4, "Logical Layout of a Module".
77sections: struct {75sections: struct {
78 capabilities: Section = .{},
79 extensions: Section = .{},
80 extended_instruction_set: Section = .{},76 extended_instruction_set: Section = .{},
81 memory_model: Section = .{},77 memory_model: Section = .{},
82 execution_modes: Section = .{},78 execution_modes: Section = .{},
...@@ -211,8 +207,6 @@ pub fn deinit(module: *Module) void {...@@ -211,8 +207,6 @@ pub fn deinit(module: *Module) void {
211 module.intern_map.deinit(module.gpa);207 module.intern_map.deinit(module.gpa);
212 module.ptr_types.deinit(module.gpa);208 module.ptr_types.deinit(module.gpa);
213209
214 module.sections.capabilities.deinit(module.gpa);
215 module.sections.extensions.deinit(module.gpa);
216 module.sections.extended_instruction_set.deinit(module.gpa);210 module.sections.extended_instruction_set.deinit(module.gpa);
217 module.sections.memory_model.deinit(module.gpa);211 module.sections.memory_model.deinit(module.gpa);
218 module.sections.execution_modes.deinit(module.gpa);212 module.sections.execution_modes.deinit(module.gpa);
...@@ -230,8 +224,6 @@ pub fn deinit(module: *Module) void {...@@ -230,8 +224,6 @@ pub fn deinit(module: *Module) void {
230 module.cache.struct_types.deinit(module.gpa);224 module.cache.struct_types.deinit(module.gpa);
231 module.cache.fn_types.deinit(module.gpa);225 module.cache.fn_types.deinit(module.gpa);
232 module.cache.spirv_types.deinit(module.gpa);226 module.cache.spirv_types.deinit(module.gpa);
233 module.cache.capabilities.deinit(module.gpa);
234 module.cache.extensions.deinit(module.gpa);
235 module.cache.extended_instruction_set.deinit(module.gpa);227 module.cache.extended_instruction_set.deinit(module.gpa);
236 module.cache.decorations.deinit(module.gpa);228 module.cache.decorations.deinit(module.gpa);
237 module.cache.builtins.deinit(module.gpa);229 module.cache.builtins.deinit(module.gpa);
...@@ -302,270 +294,6 @@ pub fn addEntryPointDeps(...@@ -302,270 +294,6 @@ pub fn addEntryPointDeps(
302 }294 }
303}295}
304296
305fn entryPoints(module: *Module) !Section {
306 const target = module.zcu.getTarget();
307
308 var entry_points = Section{};
309 errdefer entry_points.deinit(module.gpa);
310
311 var interface = std.array_list.Managed(Id).init(module.gpa);
312 defer interface.deinit();
313
314 var seen: std.bit_set.Dynamic = try .initEmpty(module.gpa, module.decls.items.len);
315 defer seen.deinit(module.gpa);
316
317 for (module.entry_points.keys(), module.entry_points.values()) |entry_point_id, entry_point| {
318 interface.items.len = 0;
319 seen.setRangeValue(.{ .start = 0, .end = module.decls.items.len }, false);
320
321 const exec_model: spec.ExecutionModel = switch (target.os.tag) {
322 .vulkan, .opengl => switch (entry_point.cc) {
323 .spirv_vertex => .vertex,
324 .spirv_fragment => .fragment,
325 .spirv_kernel => .gl_compute,
326 .spirv_task => .task_ext,
327 .spirv_mesh => .mesh_ext,
328 // TODO: We should integrate with the Linkage capability and export this function
329 .spirv_device => continue,
330 else => unreachable,
331 },
332 .opencl => switch (entry_point.cc) {
333 .spirv_kernel => .kernel,
334 // TODO: We should integrate with the Linkage capability and export this function
335 .spirv_device => continue,
336 else => unreachable,
337 },
338 else => unreachable,
339 };
340 try module.addEntryPointDeps(entry_point.decl_index, &seen, &interface);
341 try entry_points.emit(module.gpa, .OpEntryPoint, .{
342 .execution_model = exec_model,
343 .entry_point = entry_point_id,
344 .name = entry_point.name,
345 .interface = interface.items,
346 });
347
348 switch (entry_point.cc) {
349 .spirv_kernel, .spirv_task => |kernel| {
350 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
351 .entry_point = entry_point_id,
352 .mode = .{ .local_size = .{
353 .x_size = kernel.x,
354 .y_size = kernel.y,
355 .z_size = kernel.z,
356 } },
357 });
358 },
359 .spirv_fragment => |fragment| {
360 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
361 .entry_point = entry_point_id,
362 .mode = if (target.os.tag == .vulkan) .origin_upper_left else .origin_lower_left,
363 });
364 if (fragment.pixel_centered_integer) {
365 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
366 .entry_point = entry_point_id,
367 .mode = .pixel_center_integer,
368 });
369 }
370
371 const exec_mode: ?spec.ExecutionMode.Extended = switch (fragment.depth_assumption) {
372 .none => null,
373 .greater => .depth_greater,
374 .less => .depth_less,
375 .unchanged => .depth_unchanged,
376 };
377 if (exec_mode) |mode| {
378 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
379 .entry_point = entry_point_id,
380 .mode = mode,
381 });
382 }
383 },
384 .spirv_mesh => |mesh| {
385 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
386 .entry_point = entry_point_id,
387 .mode = .{ .output_vertices = .{ .vertex_count = mesh.max_vertices } },
388 });
389 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
390 .entry_point = entry_point_id,
391 .mode = .{ .output_primitives_ext = .{ .primitive_count = mesh.max_primitives } },
392 });
393
394 try module.sections.execution_modes.emit(module.gpa, .OpExecutionMode, .{
395 .entry_point = entry_point_id,
396 .mode = switch (mesh.stage_output) {
397 .output_points => .output_points,
398 .output_lines => .output_lines_ext,
399 .output_triangles => .output_triangles_ext,
400 },
401 });
402 },
403 else => {}, // TODO: should this be unreachable?
404 }
405 }
406
407 return entry_points;
408}
409
410pub fn finalize(module: *Module, gpa: Allocator) ![]Word {
411 const target = module.zcu.getTarget();
412
413 // Emit capabilities and extensions
414 switch (target.os.tag) {
415 .opengl => {
416 try module.addCapability(.shader);
417 try module.addCapability(.matrix);
418 },
419 .vulkan => {
420 try module.addCapability(.shader);
421 try module.addCapability(.matrix);
422 if (target.cpu.arch == .spirv64) {
423 try module.addExtension("SPV_KHR_physical_storage_buffer");
424 try module.addCapability(.physical_storage_buffer_addresses);
425 }
426 },
427 .opencl, .amdhsa => {
428 try module.addCapability(.kernel);
429 try module.addCapability(.addresses);
430 },
431 else => unreachable,
432 }
433 if (target.cpu.arch == .spirv64) try module.addCapability(.int64);
434 if (target.cpu.has(.spirv, .int64)) try module.addCapability(.int64);
435 if (target.cpu.has(.spirv, .float16)) {
436 if (target.os.tag == .opencl) try module.addExtension("cl_khr_fp16");
437 try module.addCapability(.float16);
438 }
439 if (target.cpu.has(.spirv, .float64)) try module.addCapability(.float64);
440 if (target.cpu.has(.spirv, .generic_pointer)) try module.addCapability(.generic_pointer);
441 if (target.cpu.has(.spirv, .vector16)) try module.addCapability(.vector16);
442 if (target.cpu.has(.spirv, .storage_push_constant16)) {
443 try module.addExtension("SPV_KHR_16bit_storage");
444 try module.addCapability(.storage_push_constant16);
445 }
446 if (target.cpu.has(.spirv, .arbitrary_precision_integers)) {
447 try module.addExtension("SPV_INTEL_arbitrary_precision_integers");
448 try module.addCapability(.arbitrary_precision_integers_intel);
449 }
450 if (target.cpu.has(.spirv, .variable_pointers)) {
451 try module.addExtension("SPV_KHR_variable_pointers");
452 try module.addCapability(.variable_pointers_storage_buffer);
453 try module.addCapability(.variable_pointers);
454 }
455 // These are well supported
456 try module.addCapability(.int8);
457 try module.addCapability(.int16);
458
459 // Emit memory model
460 const addressing_model: spec.AddressingModel = switch (target.os.tag) {
461 .opengl => .logical,
462 .vulkan => if (target.cpu.arch == .spirv32) .logical else .physical_storage_buffer64,
463 .opencl => if (target.cpu.arch == .spirv32) .physical32 else .physical64,
464 .amdhsa => .physical64,
465 else => unreachable,
466 };
467 try module.sections.memory_model.emit(module.gpa, .OpMemoryModel, .{
468 .addressing_model = addressing_model,
469 .memory_model = switch (target.os.tag) {
470 .opencl => .open_cl,
471 .vulkan, .opengl => .glsl450,
472 else => unreachable,
473 },
474 });
475
476 var entry_points = try module.entryPoints();
477 defer entry_points.deinit(module.gpa);
478
479 const version: spec.Version = .{
480 .major = 1,
481 .minor = blk: {
482 // Prefer higher versions
483 if (target.cpu.has(.spirv, .v1_6)) break :blk 6;
484 if (target.cpu.has(.spirv, .v1_5)) break :blk 5;
485 if (target.cpu.has(.spirv, .v1_4)) break :blk 4;
486 if (target.cpu.has(.spirv, .v1_3)) break :blk 3;
487 if (target.cpu.has(.spirv, .v1_2)) break :blk 2;
488 if (target.cpu.has(.spirv, .v1_1)) break :blk 1;
489 break :blk 0;
490 },
491 };
492
493 const zig_version = @import("builtin").zig_version;
494 const zig_spirv_compiler_version = comptime (zig_version.major << 12) | (zig_version.minor << 7) | zig_version.patch;
495
496 // A SPIR-V Generator Magic Number is a 32 bit word: The high order 16
497 // bits are a tool ID, which should be unique across all SPIR-V
498 // generators. The low order 16 bits are reserved for use as a tool
499 // version number, or any other purpose the tool supplier chooses.
500 // Only the tool IDs are reserved with Khronos.
501 // See https://github.com/KhronosGroup/SPIRV-Headers/blob/f2e4bd213104fe323a01e935df56557328d37ac8/include/spirv/spir-v.xml#L17C5-L21C54
502 const generator_id: u32 = (spec.zig_generator_id << 16) | zig_spirv_compiler_version;
503
504 const header = [_]Word{
505 spec.magic_number,
506 version.toWord(),
507 generator_id,
508 module.idBound(),
509 0, // Schema (currently reserved for future use)
510 };
511
512 var source = Section{};
513 defer source.deinit(module.gpa);
514 try module.sections.debug_strings.emit(module.gpa, .OpSource, .{
515 .source_language = .zig,
516 .version = zig_spirv_compiler_version,
517 // We cannot emit these because the Khronos translator does not parse this instruction
518 // correctly.
519 // See https://github.com/KhronosGroup/SPIRV-LLVM-Translator/issues/2188
520 .file = null,
521 .source = null,
522 });
523
524 // Note: needs to be kept in order according to section 2.3!
525 const buffers = &[_][]const Word{
526 &header,
527 module.sections.capabilities.toWords(),
528 module.sections.extensions.toWords(),
529 module.sections.extended_instruction_set.toWords(),
530 module.sections.memory_model.toWords(),
531 entry_points.toWords(),
532 module.sections.execution_modes.toWords(),
533 source.toWords(),
534 module.sections.debug_strings.toWords(),
535 module.sections.debug_names.toWords(),
536 module.sections.annotations.toWords(),
537 module.sections.globals.toWords(),
538 module.sections.functions.toWords(),
539 };
540
541 var total_result_size: usize = 0;
542 for (buffers) |buffer| {
543 total_result_size += buffer.len;
544 }
545 const result = try gpa.alloc(Word, total_result_size);
546 errdefer comptime unreachable;
547
548 var offset: usize = 0;
549 for (buffers) |buffer| {
550 @memcpy(result[offset..][0..buffer.len], buffer);
551 offset += buffer.len;
552 }
553
554 return result;
555}
556
557pub fn addCapability(module: *Module, cap: spec.Capability) !void {
558 const entry = try module.cache.capabilities.getOrPut(module.gpa, cap);
559 if (entry.found_existing) return;
560 try module.sections.capabilities.emit(module.gpa, .OpCapability, .{ .capability = cap });
561}
562
563pub fn addExtension(module: *Module, ext: []const u8) !void {
564 const entry = try module.cache.extensions.getOrPut(module.gpa, ext);
565 if (entry.found_existing) return;
566 try module.sections.extensions.emit(module.gpa, .OpExtension, .{ .name = ext });
567}
568
569/// Imports or returns the existing id of an extended instruction set297/// Imports or returns the existing id of an extended instruction set
570pub fn importInstructionSet(module: *Module, set: spec.InstructionSet) !Id {298pub fn importInstructionSet(module: *Module, set: spec.InstructionSet) !Id {
571 assert(set != .core);299 assert(set != .core);
...@@ -622,28 +350,17 @@ pub fn opaqueType(module: *Module, name: []const u8) !Id {...@@ -622,28 +350,17 @@ pub fn opaqueType(module: *Module, name: []const u8) !Id {
622pub fn backingIntBits(module: *Module, bits: u16) struct { u16, bool } {350pub fn backingIntBits(module: *Module, bits: u16) struct { u16, bool } {
623 assert(bits != 0);351 assert(bits != 0);
624 const target = module.zcu.getTarget();352 const target = module.zcu.getTarget();
625
626 if (target.cpu.has(.spirv, .arbitrary_precision_integers) and bits <= 32) {
627 return .{ bits, false };
628 }
629
630 // We require Int8 and Int16 capabilities and benefit Int64 when available.
631 // 32-bit integers are always supported (see spec, 2.16.1, Data rules).
632 const ints = [_]struct { bits: u16, enabled: bool }{353 const ints = [_]struct { bits: u16, enabled: bool }{
633 .{ .bits = 8, .enabled = true },354 .{ .bits = 8, .enabled = target.cpu.has(.spirv, .int8) },
634 .{ .bits = 16, .enabled = true },355 .{ .bits = 16, .enabled = target.cpu.has(.spirv, .int16) },
635 .{ .bits = 32, .enabled = true },356 .{ .bits = 32, .enabled = true },
636 .{357 .{ .bits = 64, .enabled = target.cpu.has(.spirv, .int64) or target.cpu.arch == .spirv64 },
637 .bits = 64,
638 .enabled = target.cpu.has(.spirv, .int64) or target.cpu.arch == .spirv64,
639 },
640 };358 };
641359
642 for (ints) |int| {360 for (ints) |int| {
643 if (bits <= int.bits and int.enabled) return .{ int.bits, false };361 if (bits <= int.bits and int.enabled) return .{ int.bits, false };
644 }362 }
645363
646 // Big int
647 return .{ std.mem.alignForward(u16, bits, big_int_bits), true };364 return .{ std.mem.alignForward(u16, bits, big_int_bits), true };
648}365}
649366
src/codegen/spirv/spec.zig+4242-2811
...@@ -313,16 +313,16 @@ pub const OperandKind = enum {...@@ -313,16 +313,16 @@ pub const OperandKind = enum {
313 .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.literal_integer} },313 .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.literal_integer} },
314 .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.literal_integer} },314 .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.literal_integer} },
315 .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.literal_integer} },315 .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.literal_integer} },
316 .{ .name = "InitiationIntervalINTEL", .value = 0x10000, .parameters = &.{.literal_integer} },316 .{ .name = "InitiationIntervalALTERA", .value = 0x10000, .parameters = &.{.literal_integer} },
317 .{ .name = "MaxConcurrencyINTEL", .value = 0x20000, .parameters = &.{.literal_integer} },317 .{ .name = "MaxConcurrencyALTERA", .value = 0x20000, .parameters = &.{.literal_integer} },
318 .{ .name = "DependencyArrayINTEL", .value = 0x40000, .parameters = &.{.literal_integer} },318 .{ .name = "DependencyArrayALTERA", .value = 0x40000, .parameters = &.{.literal_integer} },
319 .{ .name = "PipelineEnableINTEL", .value = 0x80000, .parameters = &.{.literal_integer} },319 .{ .name = "PipelineEnableALTERA", .value = 0x80000, .parameters = &.{.literal_integer} },
320 .{ .name = "LoopCoalesceINTEL", .value = 0x100000, .parameters = &.{.literal_integer} },320 .{ .name = "LoopCoalesceALTERA", .value = 0x100000, .parameters = &.{.literal_integer} },
321 .{ .name = "MaxInterleavingINTEL", .value = 0x200000, .parameters = &.{.literal_integer} },321 .{ .name = "MaxInterleavingALTERA", .value = 0x200000, .parameters = &.{.literal_integer} },
322 .{ .name = "SpeculatedIterationsINTEL", .value = 0x400000, .parameters = &.{.literal_integer} },322 .{ .name = "SpeculatedIterationsALTERA", .value = 0x400000, .parameters = &.{.literal_integer} },
323 .{ .name = "NoFusionINTEL", .value = 0x800000, .parameters = &.{} },323 .{ .name = "NoFusionALTERA", .value = 0x800000, .parameters = &.{} },
324 .{ .name = "LoopCountINTEL", .value = 0x1000000, .parameters = &.{.literal_integer} },324 .{ .name = "LoopCountALTERA", .value = 0x1000000, .parameters = &.{.literal_integer} },
325 .{ .name = "MaxReinvocationDelayINTEL", .value = 0x2000000, .parameters = &.{.literal_integer} },325 .{ .name = "MaxReinvocationDelayALTERA", .value = 0x2000000, .parameters = &.{.literal_integer} },
326 },326 },
327 .function_control => &.{327 .function_control => &.{
328 .{ .name = "Inline", .value = 0x0001, .parameters = &.{} },328 .{ .name = "Inline", .value = 0x0001, .parameters = &.{} },
...@@ -500,6 +500,7 @@ pub const OperandKind = enum {...@@ -500,6 +500,7 @@ pub const OperandKind = enum {
500 .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &.{} },500 .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &.{} },
501 .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &.{} },501 .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &.{} },
502 .{ .name = "SharesInputWithAMDX", .value = 5102, .parameters = &.{ .id_ref, .id_ref } },502 .{ .name = "SharesInputWithAMDX", .value = 5102, .parameters = &.{ .id_ref, .id_ref } },
503 .{ .name = "ArithmeticPoisonKHR", .value = 5157, .parameters = &.{} },
503 .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &.{} },504 .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &.{} },
504 .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.literal_integer} },505 .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.literal_integer} },
505 .{ .name = "DerivativeGroupQuadsKHR", .value = 5289, .parameters = &.{} },506 .{ .name = "DerivativeGroupQuadsKHR", .value = 5289, .parameters = &.{} },
...@@ -511,6 +512,7 @@ pub const OperandKind = enum {...@@ -511,6 +512,7 @@ pub const OperandKind = enum {
511 .{ .name = "SampleInterlockUnorderedEXT", .value = 5369, .parameters = &.{} },512 .{ .name = "SampleInterlockUnorderedEXT", .value = 5369, .parameters = &.{} },
512 .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &.{} },513 .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &.{} },
513 .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &.{} },514 .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &.{} },
515 .{ .name = "Shader64BitIndexingEXT", .value = 5427, .parameters = &.{} },
514 .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &.{.literal_integer} },516 .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &.{.literal_integer} },
515 .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &.{.literal_integer} },517 .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &.{.literal_integer} },
516 .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &.{.literal_integer} },518 .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &.{.literal_integer} },
...@@ -556,9 +558,10 @@ pub const OperandKind = enum {...@@ -556,9 +558,10 @@ pub const OperandKind = enum {
556 .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &.{} },558 .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &.{} },
557 .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &.{} },559 .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &.{} },
558 .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &.{} },560 .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &.{} },
561 .{ .name = "HitObjectAttributeEXT", .value = 5411, .parameters = &.{} },
559 .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &.{} },562 .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &.{} },
560 .{ .name = "DeviceOnlyINTEL", .value = 5936, .parameters = &.{} },563 .{ .name = "DeviceOnlyALTERA", .value = 5936, .parameters = &.{} },
561 .{ .name = "HostOnlyINTEL", .value = 5937, .parameters = &.{} },564 .{ .name = "HostOnlyALTERA", .value = 5937, .parameters = &.{} },
562 },565 },
563 .dim => &.{566 .dim => &.{
564 .{ .name = "1D", .value = 0, .parameters = &.{} },567 .{ .name = "1D", .value = 0, .parameters = &.{} },
...@@ -730,7 +733,7 @@ pub const OperandKind = enum {...@@ -730,7 +733,7 @@ pub const OperandKind = enum {
730 .{ .name = "NoCapture", .value = 5, .parameters = &.{} },733 .{ .name = "NoCapture", .value = 5, .parameters = &.{} },
731 .{ .name = "NoWrite", .value = 6, .parameters = &.{} },734 .{ .name = "NoWrite", .value = 6, .parameters = &.{} },
732 .{ .name = "NoReadWrite", .value = 7, .parameters = &.{} },735 .{ .name = "NoReadWrite", .value = 7, .parameters = &.{} },
733 .{ .name = "RuntimeAlignedINTEL", .value = 5940, .parameters = &.{} },736 .{ .name = "RuntimeAlignedALTERA", .value = 5940, .parameters = &.{} },
734 },737 },
735 .decoration => &.{738 .decoration => &.{
736 .{ .name = "RelaxedPrecision", .value = 0, .parameters = &.{} },739 .{ .name = "RelaxedPrecision", .value = 0, .parameters = &.{} },
...@@ -795,6 +798,9 @@ pub const OperandKind = enum {...@@ -795,6 +798,9 @@ pub const OperandKind = enum {
795 .{ .name = "PayloadNodeSparseArrayAMDX", .value = 5099, .parameters = &.{} },798 .{ .name = "PayloadNodeSparseArrayAMDX", .value = 5099, .parameters = &.{} },
796 .{ .name = "PayloadNodeArraySizeAMDX", .value = 5100, .parameters = &.{.id_ref} },799 .{ .name = "PayloadNodeArraySizeAMDX", .value = 5100, .parameters = &.{.id_ref} },
797 .{ .name = "PayloadDispatchIndirectAMDX", .value = 5105, .parameters = &.{} },800 .{ .name = "PayloadDispatchIndirectAMDX", .value = 5105, .parameters = &.{} },
801 .{ .name = "ArrayStrideIdEXT", .value = 5124, .parameters = &.{.id_ref} },
802 .{ .name = "OffsetIdEXT", .value = 5125, .parameters = &.{.id_ref} },
803 .{ .name = "UTFEncodedKHR", .value = 5145, .parameters = &.{} },
798 .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &.{} },804 .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &.{} },
799 .{ .name = "PassthroughNV", .value = 5250, .parameters = &.{} },805 .{ .name = "PassthroughNV", .value = 5250, .parameters = &.{} },
800 .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &.{} },806 .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &.{} },
...@@ -806,7 +812,10 @@ pub const OperandKind = enum {...@@ -806,7 +812,10 @@ pub const OperandKind = enum {
806 .{ .name = "NonUniform", .value = 5300, .parameters = &.{} },812 .{ .name = "NonUniform", .value = 5300, .parameters = &.{} },
807 .{ .name = "RestrictPointer", .value = 5355, .parameters = &.{} },813 .{ .name = "RestrictPointer", .value = 5355, .parameters = &.{} },
808 .{ .name = "AliasedPointer", .value = 5356, .parameters = &.{} },814 .{ .name = "AliasedPointer", .value = 5356, .parameters = &.{} },
815 .{ .name = "MemberOffsetNV", .value = 5358, .parameters = &.{.literal_integer} },
809 .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &.{} },816 .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &.{} },
817 .{ .name = "HitObjectShaderRecordBufferEXT", .value = 5389, .parameters = &.{} },
818 .{ .name = "BankNV", .value = 5397, .parameters = &.{.literal_integer} },
810 .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &.{} },819 .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &.{} },
811 .{ .name = "BindlessImageNV", .value = 5399, .parameters = &.{} },820 .{ .name = "BindlessImageNV", .value = 5399, .parameters = &.{} },
812 .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &.{} },821 .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &.{} },
...@@ -825,55 +834,56 @@ pub const OperandKind = enum {...@@ -825,55 +834,56 @@ pub const OperandKind = enum {
825 .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &.{.literal_string} },834 .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &.{.literal_string} },
826 .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &.{ .literal_integer, .fp_rounding_mode } },835 .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &.{ .literal_integer, .fp_rounding_mode } },
827 .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &.{ .literal_integer, .fp_denorm_mode } },836 .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &.{ .literal_integer, .fp_denorm_mode } },
828 .{ .name = "RegisterINTEL", .value = 5825, .parameters = &.{} },837 .{ .name = "RegisterALTERA", .value = 5825, .parameters = &.{} },
829 .{ .name = "MemoryINTEL", .value = 5826, .parameters = &.{.literal_string} },838 .{ .name = "MemoryALTERA", .value = 5826, .parameters = &.{.literal_string} },
830 .{ .name = "NumbanksINTEL", .value = 5827, .parameters = &.{.literal_integer} },839 .{ .name = "NumbanksALTERA", .value = 5827, .parameters = &.{.literal_integer} },
831 .{ .name = "BankwidthINTEL", .value = 5828, .parameters = &.{.literal_integer} },840 .{ .name = "BankwidthALTERA", .value = 5828, .parameters = &.{.literal_integer} },
832 .{ .name = "MaxPrivateCopiesINTEL", .value = 5829, .parameters = &.{.literal_integer} },841 .{ .name = "MaxPrivateCopiesALTERA", .value = 5829, .parameters = &.{.literal_integer} },
833 .{ .name = "SinglepumpINTEL", .value = 5830, .parameters = &.{} },842 .{ .name = "SinglepumpALTERA", .value = 5830, .parameters = &.{} },
834 .{ .name = "DoublepumpINTEL", .value = 5831, .parameters = &.{} },843 .{ .name = "DoublepumpALTERA", .value = 5831, .parameters = &.{} },
835 .{ .name = "MaxReplicatesINTEL", .value = 5832, .parameters = &.{.literal_integer} },844 .{ .name = "MaxReplicatesALTERA", .value = 5832, .parameters = &.{.literal_integer} },
836 .{ .name = "SimpleDualPortINTEL", .value = 5833, .parameters = &.{} },845 .{ .name = "SimpleDualPortALTERA", .value = 5833, .parameters = &.{} },
837 .{ .name = "MergeINTEL", .value = 5834, .parameters = &.{ .literal_string, .literal_string } },846 .{ .name = "MergeALTERA", .value = 5834, .parameters = &.{ .literal_string, .literal_string } },
838 .{ .name = "BankBitsINTEL", .value = 5835, .parameters = &.{.literal_integer} },847 .{ .name = "BankBitsALTERA", .value = 5835, .parameters = &.{.literal_integer} },
839 .{ .name = "ForcePow2DepthINTEL", .value = 5836, .parameters = &.{.literal_integer} },848 .{ .name = "ForcePow2DepthALTERA", .value = 5836, .parameters = &.{.literal_integer} },
840 .{ .name = "StridesizeINTEL", .value = 5883, .parameters = &.{.literal_integer} },849 .{ .name = "StridesizeALTERA", .value = 5883, .parameters = &.{.literal_integer} },
841 .{ .name = "WordsizeINTEL", .value = 5884, .parameters = &.{.literal_integer} },850 .{ .name = "WordsizeALTERA", .value = 5884, .parameters = &.{.literal_integer} },
842 .{ .name = "TrueDualPortINTEL", .value = 5885, .parameters = &.{} },851 .{ .name = "TrueDualPortALTERA", .value = 5885, .parameters = &.{} },
843 .{ .name = "BurstCoalesceINTEL", .value = 5899, .parameters = &.{} },852 .{ .name = "BurstCoalesceALTERA", .value = 5899, .parameters = &.{} },
844 .{ .name = "CacheSizeINTEL", .value = 5900, .parameters = &.{.literal_integer} },853 .{ .name = "CacheSizeALTERA", .value = 5900, .parameters = &.{.literal_integer} },
845 .{ .name = "DontStaticallyCoalesceINTEL", .value = 5901, .parameters = &.{} },854 .{ .name = "DontStaticallyCoalesceALTERA", .value = 5901, .parameters = &.{} },
846 .{ .name = "PrefetchINTEL", .value = 5902, .parameters = &.{.literal_integer} },855 .{ .name = "PrefetchALTERA", .value = 5902, .parameters = &.{.literal_integer} },
847 .{ .name = "StallEnableINTEL", .value = 5905, .parameters = &.{} },856 .{ .name = "StallEnableALTERA", .value = 5905, .parameters = &.{} },
848 .{ .name = "FuseLoopsInFunctionINTEL", .value = 5907, .parameters = &.{} },857 .{ .name = "FuseLoopsInFunctionALTERA", .value = 5907, .parameters = &.{} },
849 .{ .name = "MathOpDSPModeINTEL", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } },858 .{ .name = "MathOpDSPModeALTERA", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } },
850 .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &.{.id_ref} },859 .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &.{.id_ref} },
851 .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &.{.id_ref} },860 .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &.{.id_ref} },
852 .{ .name = "InitiationIntervalINTEL", .value = 5917, .parameters = &.{.literal_integer} },861 .{ .name = "InitiationIntervalALTERA", .value = 5917, .parameters = &.{.literal_integer} },
853 .{ .name = "MaxConcurrencyINTEL", .value = 5918, .parameters = &.{.literal_integer} },862 .{ .name = "MaxConcurrencyALTERA", .value = 5918, .parameters = &.{.literal_integer} },
854 .{ .name = "PipelineEnableINTEL", .value = 5919, .parameters = &.{.literal_integer} },863 .{ .name = "PipelineEnableALTERA", .value = 5919, .parameters = &.{.literal_integer} },
855 .{ .name = "BufferLocationINTEL", .value = 5921, .parameters = &.{.literal_integer} },864 .{ .name = "BufferLocationALTERA", .value = 5921, .parameters = &.{.literal_integer} },
856 .{ .name = "IOPipeStorageINTEL", .value = 5944, .parameters = &.{.literal_integer} },865 .{ .name = "IOPipeStorageALTERA", .value = 5944, .parameters = &.{.literal_integer} },
857 .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &.{ .literal_integer, .fp_operation_mode } },866 .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &.{ .literal_integer, .fp_operation_mode } },
858 .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &.{} },867 .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &.{} },
859 .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &.{} },868 .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &.{} },
860 .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &.{} },869 .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &.{} },
861 .{ .name = "StallFreeINTEL", .value = 6151, .parameters = &.{} },870 .{ .name = "StallFreeALTERA", .value = 6151, .parameters = &.{} },
862 .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &.{.literal_float} },871 .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &.{.literal_float} },
863 .{ .name = "LatencyControlLabelINTEL", .value = 6172, .parameters = &.{.literal_integer} },872 .{ .name = "LatencyControlLabelALTERA", .value = 6172, .parameters = &.{.literal_integer} },
864 .{ .name = "LatencyControlConstraintINTEL", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },873 .{ .name = "LatencyControlConstraintALTERA", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
865 .{ .name = "ConduitKernelArgumentINTEL", .value = 6175, .parameters = &.{} },874 .{ .name = "ConduitKernelArgumentALTERA", .value = 6175, .parameters = &.{} },
866 .{ .name = "RegisterMapKernelArgumentINTEL", .value = 6176, .parameters = &.{} },875 .{ .name = "RegisterMapKernelArgumentALTERA", .value = 6176, .parameters = &.{} },
867 .{ .name = "MMHostInterfaceAddressWidthINTEL", .value = 6177, .parameters = &.{.literal_integer} },876 .{ .name = "MMHostInterfaceAddressWidthALTERA", .value = 6177, .parameters = &.{.literal_integer} },
868 .{ .name = "MMHostInterfaceDataWidthINTEL", .value = 6178, .parameters = &.{.literal_integer} },877 .{ .name = "MMHostInterfaceDataWidthALTERA", .value = 6178, .parameters = &.{.literal_integer} },
869 .{ .name = "MMHostInterfaceLatencyINTEL", .value = 6179, .parameters = &.{.literal_integer} },878 .{ .name = "MMHostInterfaceLatencyALTERA", .value = 6179, .parameters = &.{.literal_integer} },
870 .{ .name = "MMHostInterfaceReadWriteModeINTEL", .value = 6180, .parameters = &.{.access_qualifier} },879 .{ .name = "MMHostInterfaceReadWriteModeALTERA", .value = 6180, .parameters = &.{.access_qualifier} },
871 .{ .name = "MMHostInterfaceMaxBurstINTEL", .value = 6181, .parameters = &.{.literal_integer} },880 .{ .name = "MMHostInterfaceMaxBurstALTERA", .value = 6181, .parameters = &.{.literal_integer} },
872 .{ .name = "MMHostInterfaceWaitRequestINTEL", .value = 6182, .parameters = &.{.literal_integer} },881 .{ .name = "MMHostInterfaceWaitRequestALTERA", .value = 6182, .parameters = &.{.literal_integer} },
873 .{ .name = "StableKernelArgumentINTEL", .value = 6183, .parameters = &.{} },882 .{ .name = "StableKernelArgumentALTERA", .value = 6183, .parameters = &.{} },
874 .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &.{ .host_access_qualifier, .literal_string } },883 .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &.{ .host_access_qualifier, .literal_string } },
875 .{ .name = "InitModeINTEL", .value = 6190, .parameters = &.{.initialization_mode_qualifier} },884 .{ .name = "InitModeALTERA", .value = 6190, .parameters = &.{.initialization_mode_qualifier} },
876 .{ .name = "ImplementInRegisterMapINTEL", .value = 6191, .parameters = &.{.literal_integer} },885 .{ .name = "ImplementInRegisterMapALTERA", .value = 6191, .parameters = &.{.literal_integer} },
886 .{ .name = "ConditionalINTEL", .value = 6247, .parameters = &.{.id_ref} },
877 .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &.{ .literal_integer, .load_cache_control } },887 .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &.{ .literal_integer, .load_cache_control } },
878 .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &.{ .literal_integer, .store_cache_control } },888 .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &.{ .literal_integer, .store_cache_control } },
879 },889 },
...@@ -949,6 +959,8 @@ pub const OperandKind = enum {...@@ -949,6 +959,8 @@ pub const OperandKind = enum {
949 .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &.{} },959 .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &.{} },
950 .{ .name = "RemainingRecursionLevelsAMDX", .value = 5021, .parameters = &.{} },960 .{ .name = "RemainingRecursionLevelsAMDX", .value = 5021, .parameters = &.{} },
951 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{} },961 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{} },
962 .{ .name = "SamplerHeapEXT", .value = 5122, .parameters = &.{} },
963 .{ .name = "ResourceHeapEXT", .value = 5123, .parameters = &.{} },
952 .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &.{} },964 .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &.{} },
953 .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &.{} },965 .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &.{} },
954 .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &.{} },966 .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &.{} },
...@@ -1019,9 +1031,9 @@ pub const OperandKind = enum {...@@ -1019,9 +1031,9 @@ pub const OperandKind = enum {
1019 .{ .name = "InclusiveScan", .value = 1, .parameters = &.{} },1031 .{ .name = "InclusiveScan", .value = 1, .parameters = &.{} },
1020 .{ .name = "ExclusiveScan", .value = 2, .parameters = &.{} },1032 .{ .name = "ExclusiveScan", .value = 2, .parameters = &.{} },
1021 .{ .name = "ClusteredReduce", .value = 3, .parameters = &.{} },1033 .{ .name = "ClusteredReduce", .value = 3, .parameters = &.{} },
1022 .{ .name = "PartitionedReduceNV", .value = 6, .parameters = &.{} },1034 .{ .name = "PartitionedReduceEXT", .value = 6, .parameters = &.{} },
1023 .{ .name = "PartitionedInclusiveScanNV", .value = 7, .parameters = &.{} },1035 .{ .name = "PartitionedInclusiveScanEXT", .value = 7, .parameters = &.{} },
1024 .{ .name = "PartitionedExclusiveScanNV", .value = 8, .parameters = &.{} },1036 .{ .name = "PartitionedExclusiveScanEXT", .value = 8, .parameters = &.{} },
1025 },1037 },
1026 .kernel_enqueue_flags => &.{1038 .kernel_enqueue_flags => &.{
1027 .{ .name = "NoWait", .value = 0, .parameters = &.{} },1039 .{ .name = "NoWait", .value = 0, .parameters = &.{} },
...@@ -1144,6 +1156,7 @@ pub const OperandKind = enum {...@@ -1144,6 +1156,7 @@ pub const OperandKind = enum {
1144 .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &.{} },1156 .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &.{} },
1145 .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &.{} },1157 .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &.{} },
1146 .{ .name = "TileShadingQCOM", .value = 4495, .parameters = &.{} },1158 .{ .name = "TileShadingQCOM", .value = 4495, .parameters = &.{} },
1159 .{ .name = "CooperativeMatrixConversionQCOM", .value = 4496, .parameters = &.{} },
1147 .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &.{} },1160 .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &.{} },
1148 .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &.{} },1161 .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &.{} },
1149 .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &.{} },1162 .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &.{} },
...@@ -1159,6 +1172,10 @@ pub const OperandKind = enum {...@@ -1159,6 +1172,10 @@ pub const OperandKind = enum {
1159 .{ .name = "BFloat16TypeKHR", .value = 5116, .parameters = &.{} },1172 .{ .name = "BFloat16TypeKHR", .value = 5116, .parameters = &.{} },
1160 .{ .name = "BFloat16DotProductKHR", .value = 5117, .parameters = &.{} },1173 .{ .name = "BFloat16DotProductKHR", .value = 5117, .parameters = &.{} },
1161 .{ .name = "BFloat16CooperativeMatrixKHR", .value = 5118, .parameters = &.{} },1174 .{ .name = "BFloat16CooperativeMatrixKHR", .value = 5118, .parameters = &.{} },
1175 .{ .name = "AbortKHR", .value = 5120, .parameters = &.{} },
1176 .{ .name = "DescriptorHeapEXT", .value = 5128, .parameters = &.{} },
1177 .{ .name = "ConstantDataKHR", .value = 5146, .parameters = &.{} },
1178 .{ .name = "PoisonFreezeKHR", .value = 5156, .parameters = &.{} },
1162 .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &.{} },1179 .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &.{} },
1163 .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &.{} },1180 .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &.{} },
1164 .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &.{} },1181 .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &.{} },
...@@ -1172,7 +1189,7 @@ pub const OperandKind = enum {...@@ -1172,7 +1189,7 @@ pub const OperandKind = enum {
1172 .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &.{} },1189 .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &.{} },
1173 .{ .name = "ComputeDerivativeGroupQuadsKHR", .value = 5288, .parameters = &.{} },1190 .{ .name = "ComputeDerivativeGroupQuadsKHR", .value = 5288, .parameters = &.{} },
1174 .{ .name = "FragmentDensityEXT", .value = 5291, .parameters = &.{} },1191 .{ .name = "FragmentDensityEXT", .value = 5291, .parameters = &.{} },
1175 .{ .name = "GroupNonUniformPartitionedNV", .value = 5297, .parameters = &.{} },1192 .{ .name = "GroupNonUniformPartitionedEXT", .value = 5297, .parameters = &.{} },
1176 .{ .name = "ShaderNonUniform", .value = 5301, .parameters = &.{} },1193 .{ .name = "ShaderNonUniform", .value = 5301, .parameters = &.{} },
1177 .{ .name = "RuntimeDescriptorArray", .value = 5302, .parameters = &.{} },1194 .{ .name = "RuntimeDescriptorArray", .value = 5302, .parameters = &.{} },
1178 .{ .name = "InputAttachmentArrayDynamicIndexing", .value = 5303, .parameters = &.{} },1195 .{ .name = "InputAttachmentArrayDynamicIndexing", .value = 5303, .parameters = &.{} },
...@@ -1202,6 +1219,7 @@ pub const OperandKind = enum {...@@ -1202,6 +1219,7 @@ pub const OperandKind = enum {
1202 .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &.{} },1219 .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &.{} },
1203 .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &.{} },1220 .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &.{} },
1204 .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &.{} },1221 .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &.{} },
1222 .{ .name = "ShaderInvocationReorderEXT", .value = 5388, .parameters = &.{} },
1205 .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &.{} },1223 .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &.{} },
1206 .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &.{} },1224 .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &.{} },
1207 .{ .name = "CooperativeVectorNV", .value = 5394, .parameters = &.{} },1225 .{ .name = "CooperativeVectorNV", .value = 5394, .parameters = &.{} },
...@@ -1210,6 +1228,9 @@ pub const OperandKind = enum {...@@ -1210,6 +1228,9 @@ pub const OperandKind = enum {
1210 .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &.{} },1228 .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &.{} },
1211 .{ .name = "RayTracingSpheresGeometryNV", .value = 5418, .parameters = &.{} },1229 .{ .name = "RayTracingSpheresGeometryNV", .value = 5418, .parameters = &.{} },
1212 .{ .name = "RayTracingLinearSweptSpheresGeometryNV", .value = 5419, .parameters = &.{} },1230 .{ .name = "RayTracingLinearSweptSpheresGeometryNV", .value = 5419, .parameters = &.{} },
1231 .{ .name = "PushConstantBanksNV", .value = 5423, .parameters = &.{} },
1232 .{ .name = "LongVectorEXT", .value = 5425, .parameters = &.{} },
1233 .{ .name = "Shader64BitIndexingEXT", .value = 5426, .parameters = &.{} },
1213 .{ .name = "CooperativeMatrixReductionsNV", .value = 5430, .parameters = &.{} },1234 .{ .name = "CooperativeMatrixReductionsNV", .value = 5430, .parameters = &.{} },
1214 .{ .name = "CooperativeMatrixConversionsNV", .value = 5431, .parameters = &.{} },1235 .{ .name = "CooperativeMatrixConversionsNV", .value = 5431, .parameters = &.{} },
1215 .{ .name = "CooperativeMatrixPerElementOperationsNV", .value = 5432, .parameters = &.{} },1236 .{ .name = "CooperativeMatrixPerElementOperationsNV", .value = 5432, .parameters = &.{} },
...@@ -1239,27 +1260,27 @@ pub const OperandKind = enum {...@@ -1239,27 +1260,27 @@ pub const OperandKind = enum {
1239 .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &.{} },1260 .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &.{} },
1240 .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &.{} },1261 .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &.{} },
1241 .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &.{} },1262 .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &.{} },
1242 .{ .name = "FPGAMemoryAttributesINTEL", .value = 5824, .parameters = &.{} },1263 .{ .name = "FPGAMemoryAttributesALTERA", .value = 5824, .parameters = &.{} },
1243 .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &.{} },1264 .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &.{} },
1244 .{ .name = "ArbitraryPrecisionIntegersINTEL", .value = 5844, .parameters = &.{} },1265 .{ .name = "ArbitraryPrecisionIntegersALTERA", .value = 5844, .parameters = &.{} },
1245 .{ .name = "ArbitraryPrecisionFloatingPointINTEL", .value = 5845, .parameters = &.{} },1266 .{ .name = "ArbitraryPrecisionFloatingPointALTERA", .value = 5845, .parameters = &.{} },
1246 .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &.{} },1267 .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &.{} },
1247 .{ .name = "FPGALoopControlsINTEL", .value = 5888, .parameters = &.{} },1268 .{ .name = "FPGALoopControlsALTERA", .value = 5888, .parameters = &.{} },
1248 .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &.{} },1269 .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &.{} },
1249 .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &.{} },1270 .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &.{} },
1250 .{ .name = "FPGAMemoryAccessesINTEL", .value = 5898, .parameters = &.{} },1271 .{ .name = "FPGAMemoryAccessesALTERA", .value = 5898, .parameters = &.{} },
1251 .{ .name = "FPGAClusterAttributesINTEL", .value = 5904, .parameters = &.{} },1272 .{ .name = "FPGAClusterAttributesALTERA", .value = 5904, .parameters = &.{} },
1252 .{ .name = "LoopFuseINTEL", .value = 5906, .parameters = &.{} },1273 .{ .name = "LoopFuseALTERA", .value = 5906, .parameters = &.{} },
1253 .{ .name = "FPGADSPControlINTEL", .value = 5908, .parameters = &.{} },1274 .{ .name = "FPGADSPControlALTERA", .value = 5908, .parameters = &.{} },
1254 .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &.{} },1275 .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &.{} },
1255 .{ .name = "FPGAInvocationPipeliningAttributesINTEL", .value = 5916, .parameters = &.{} },1276 .{ .name = "FPGAInvocationPipeliningAttributesALTERA", .value = 5916, .parameters = &.{} },
1256 .{ .name = "FPGABufferLocationINTEL", .value = 5920, .parameters = &.{} },1277 .{ .name = "FPGABufferLocationALTERA", .value = 5920, .parameters = &.{} },
1257 .{ .name = "ArbitraryPrecisionFixedPointINTEL", .value = 5922, .parameters = &.{} },1278 .{ .name = "ArbitraryPrecisionFixedPointALTERA", .value = 5922, .parameters = &.{} },
1258 .{ .name = "USMStorageClassesINTEL", .value = 5935, .parameters = &.{} },1279 .{ .name = "USMStorageClassesALTERA", .value = 5935, .parameters = &.{} },
1259 .{ .name = "RuntimeAlignedAttributeINTEL", .value = 5939, .parameters = &.{} },1280 .{ .name = "RuntimeAlignedAttributeALTERA", .value = 5939, .parameters = &.{} },
1260 .{ .name = "IOPipesINTEL", .value = 5943, .parameters = &.{} },1281 .{ .name = "IOPipesALTERA", .value = 5943, .parameters = &.{} },
1261 .{ .name = "BlockingPipesINTEL", .value = 5945, .parameters = &.{} },1282 .{ .name = "BlockingPipesALTERA", .value = 5945, .parameters = &.{} },
1262 .{ .name = "FPGARegINTEL", .value = 5948, .parameters = &.{} },1283 .{ .name = "FPGARegALTERA", .value = 5948, .parameters = &.{} },
1263 .{ .name = "DotProductInputAll", .value = 6016, .parameters = &.{} },1284 .{ .name = "DotProductInputAll", .value = 6016, .parameters = &.{} },
1264 .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &.{} },1285 .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &.{} },
1265 .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &.{} },1286 .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &.{} },
...@@ -1270,6 +1291,7 @@ pub const OperandKind = enum {...@@ -1270,6 +1291,7 @@ pub const OperandKind = enum {
1270 .{ .name = "BitInstructions", .value = 6025, .parameters = &.{} },1291 .{ .name = "BitInstructions", .value = 6025, .parameters = &.{} },
1271 .{ .name = "GroupNonUniformRotateKHR", .value = 6026, .parameters = &.{} },1292 .{ .name = "GroupNonUniformRotateKHR", .value = 6026, .parameters = &.{} },
1272 .{ .name = "FloatControls2", .value = 6029, .parameters = &.{} },1293 .{ .name = "FloatControls2", .value = 6029, .parameters = &.{} },
1294 .{ .name = "FMAKHR", .value = 6030, .parameters = &.{} },
1273 .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &.{} },1295 .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &.{} },
1274 .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &.{} },1296 .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &.{} },
1275 .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &.{} },1297 .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &.{} },
...@@ -1279,26 +1301,33 @@ pub const OperandKind = enum {...@@ -1279,26 +1301,33 @@ pub const OperandKind = enum {
1279 .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &.{} },1301 .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &.{} },
1280 .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &.{} },1302 .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &.{} },
1281 .{ .name = "ArithmeticFenceEXT", .value = 6144, .parameters = &.{} },1303 .{ .name = "ArithmeticFenceEXT", .value = 6144, .parameters = &.{} },
1282 .{ .name = "FPGAClusterAttributesV2INTEL", .value = 6150, .parameters = &.{} },1304 .{ .name = "FPGAClusterAttributesV2ALTERA", .value = 6150, .parameters = &.{} },
1283 .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &.{} },1305 .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &.{} },
1284 .{ .name = "TaskSequenceINTEL", .value = 6162, .parameters = &.{} },1306 .{ .name = "TaskSequenceALTERA", .value = 6162, .parameters = &.{} },
1285 .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &.{} },1307 .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &.{} },
1286 .{ .name = "FPGALatencyControlINTEL", .value = 6171, .parameters = &.{} },1308 .{ .name = "FPGALatencyControlALTERA", .value = 6171, .parameters = &.{} },
1287 .{ .name = "FPGAArgumentInterfacesINTEL", .value = 6174, .parameters = &.{} },1309 .{ .name = "FPGAArgumentInterfacesALTERA", .value = 6174, .parameters = &.{} },
1288 .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &.{} },1310 .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &.{} },
1289 .{ .name = "GlobalVariableFPGADecorationsINTEL", .value = 6189, .parameters = &.{} },1311 .{ .name = "GlobalVariableFPGADecorationsALTERA", .value = 6189, .parameters = &.{} },
1290 .{ .name = "SubgroupBufferPrefetchINTEL", .value = 6220, .parameters = &.{} },1312 .{ .name = "SubgroupBufferPrefetchINTEL", .value = 6220, .parameters = &.{} },
1291 .{ .name = "Subgroup2DBlockIOINTEL", .value = 6228, .parameters = &.{} },1313 .{ .name = "Subgroup2DBlockIOINTEL", .value = 6228, .parameters = &.{} },
1292 .{ .name = "Subgroup2DBlockTransformINTEL", .value = 6229, .parameters = &.{} },1314 .{ .name = "Subgroup2DBlockTransformINTEL", .value = 6229, .parameters = &.{} },
1293 .{ .name = "Subgroup2DBlockTransposeINTEL", .value = 6230, .parameters = &.{} },1315 .{ .name = "Subgroup2DBlockTransposeINTEL", .value = 6230, .parameters = &.{} },
1294 .{ .name = "SubgroupMatrixMultiplyAccumulateINTEL", .value = 6236, .parameters = &.{} },1316 .{ .name = "SubgroupMatrixMultiplyAccumulateINTEL", .value = 6236, .parameters = &.{} },
1295 .{ .name = "TernaryBitwiseFunctionINTEL", .value = 6241, .parameters = &.{} },1317 .{ .name = "TernaryBitwiseFunctionINTEL", .value = 6241, .parameters = &.{} },
1318 .{ .name = "UntypedVariableLengthArrayINTEL", .value = 6243, .parameters = &.{} },
1319 .{ .name = "SpecConditionalINTEL", .value = 6245, .parameters = &.{} },
1320 .{ .name = "FunctionVariantsINTEL", .value = 6246, .parameters = &.{} },
1296 .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &.{} },1321 .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &.{} },
1297 .{ .name = "TensorFloat32RoundingINTEL", .value = 6425, .parameters = &.{} },1322 .{ .name = "TensorFloat32RoundingINTEL", .value = 6425, .parameters = &.{} },
1298 .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &.{} },1323 .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &.{} },
1299 .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &.{} },1324 .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &.{} },
1300 .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &.{} },1325 .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &.{} },
1301 .{ .name = "BindlessImagesINTEL", .value = 6528, .parameters = &.{} },1326 .{ .name = "BindlessImagesINTEL", .value = 6528, .parameters = &.{} },
1327 .{ .name = "DotProductFloat16AccFloat32VALVE", .value = 6912, .parameters = &.{} },
1328 .{ .name = "DotProductFloat16AccFloat16VALVE", .value = 6913, .parameters = &.{} },
1329 .{ .name = "DotProductBFloat16AccVALVE", .value = 6914, .parameters = &.{} },
1330 .{ .name = "DotProductFloat8AccFloat32VALVE", .value = 6915, .parameters = &.{} },
1302 },1331 },
1303 .ray_query_intersection => &.{1332 .ray_query_intersection => &.{
1304 .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &.{} },1333 .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &.{} },
...@@ -1352,8 +1381,8 @@ pub const OperandKind = enum {...@@ -1352,8 +1381,8 @@ pub const OperandKind = enum {
1352 .{ .name = "DecodeFunc", .value = 0x0002, .parameters = &.{.id_ref} },1381 .{ .name = "DecodeFunc", .value = 0x0002, .parameters = &.{.id_ref} },
1353 },1382 },
1354 .initialization_mode_qualifier => &.{1383 .initialization_mode_qualifier => &.{
1355 .{ .name = "InitOnDeviceReprogramINTEL", .value = 0, .parameters = &.{} },1384 .{ .name = "InitOnDeviceReprogramALTERA", .value = 0, .parameters = &.{} },
1356 .{ .name = "InitOnDeviceResetINTEL", .value = 1, .parameters = &.{} },1385 .{ .name = "InitOnDeviceResetALTERA", .value = 1, .parameters = &.{} },
1357 },1386 },
1358 .load_cache_control => &.{1387 .load_cache_control => &.{
1359 .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} },1388 .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} },
...@@ -1811,12 +1840,14 @@ pub const Opcode = enum(u16) {...@@ -1811,12 +1840,14 @@ pub const Opcode = enum(u16) {
1811 OpUntypedInBoundsPtrAccessChainKHR = 4424,1840 OpUntypedInBoundsPtrAccessChainKHR = 4424,
1812 OpUntypedArrayLengthKHR = 4425,1841 OpUntypedArrayLengthKHR = 4425,
1813 OpUntypedPrefetchKHR = 4426,1842 OpUntypedPrefetchKHR = 4426,
1843 OpFmaKHR = 4427,
1814 OpSubgroupAllKHR = 4428,1844 OpSubgroupAllKHR = 4428,
1815 OpSubgroupAnyKHR = 4429,1845 OpSubgroupAnyKHR = 4429,
1816 OpSubgroupAllEqualKHR = 4430,1846 OpSubgroupAllEqualKHR = 4430,
1817 OpGroupNonUniformRotateKHR = 4431,1847 OpGroupNonUniformRotateKHR = 4431,
1818 OpSubgroupReadInvocationKHR = 4432,1848 OpSubgroupReadInvocationKHR = 4432,
1819 OpExtInstWithForwardRefsKHR = 4433,1849 OpExtInstWithForwardRefsKHR = 4433,
1850 OpUntypedGroupAsyncCopyKHR = 4434,
1820 OpTraceRayKHR = 4445,1851 OpTraceRayKHR = 4445,
1821 OpExecuteCallableKHR = 4446,1852 OpExecuteCallableKHR = 4446,
1822 OpConvertUToAccelerationStructureKHR = 4447,1853 OpConvertUToAccelerationStructureKHR = 4447,
...@@ -1847,10 +1878,14 @@ pub const Opcode = enum(u16) {...@@ -1847,10 +1878,14 @@ pub const Opcode = enum(u16) {
1847 OpImageBoxFilterQCOM = 4481,1878 OpImageBoxFilterQCOM = 4481,
1848 OpImageBlockMatchSSDQCOM = 4482,1879 OpImageBlockMatchSSDQCOM = 4482,
1849 OpImageBlockMatchSADQCOM = 4483,1880 OpImageBlockMatchSADQCOM = 4483,
1881 OpBitCastArrayQCOM = 4497,
1850 OpImageBlockMatchWindowSSDQCOM = 4500,1882 OpImageBlockMatchWindowSSDQCOM = 4500,
1851 OpImageBlockMatchWindowSADQCOM = 4501,1883 OpImageBlockMatchWindowSADQCOM = 4501,
1852 OpImageBlockMatchGatherSSDQCOM = 4502,1884 OpImageBlockMatchGatherSSDQCOM = 4502,
1853 OpImageBlockMatchGatherSADQCOM = 4503,1885 OpImageBlockMatchGatherSADQCOM = 4503,
1886 OpCompositeConstructCoopMatQCOM = 4540,
1887 OpCompositeExtractCoopMatQCOM = 4541,
1888 OpExtractSubArrayQCOM = 4542,
1854 OpGroupIAddNonUniformAMD = 5000,1889 OpGroupIAddNonUniformAMD = 5000,
1855 OpGroupFAddNonUniformAMD = 5001,1890 OpGroupFAddNonUniformAMD = 5001,
1856 OpGroupFMinNonUniformAMD = 5002,1891 OpGroupFMinNonUniformAMD = 5002,
...@@ -1872,6 +1907,16 @@ pub const Opcode = enum(u16) {...@@ -1872,6 +1907,16 @@ pub const Opcode = enum(u16) {
1872 OpSpecConstantStringAMDX = 5104,1907 OpSpecConstantStringAMDX = 5104,
1873 OpGroupNonUniformQuadAllKHR = 5110,1908 OpGroupNonUniformQuadAllKHR = 5110,
1874 OpGroupNonUniformQuadAnyKHR = 5111,1909 OpGroupNonUniformQuadAnyKHR = 5111,
1910 OpTypeBufferEXT = 5115,
1911 OpBufferPointerEXT = 5119,
1912 OpAbortKHR = 5121,
1913 OpUntypedImageTexelPointerEXT = 5126,
1914 OpMemberDecorateIdEXT = 5127,
1915 OpConstantSizeOfEXT = 5129,
1916 OpConstantDataKHR = 5147,
1917 OpSpecConstantDataKHR = 5148,
1918 OpPoisonKHR = 5158,
1919 OpFreezeKHR = 5159,
1875 OpHitObjectRecordHitMotionNV = 5249,1920 OpHitObjectRecordHitMotionNV = 5249,
1876 OpHitObjectRecordHitWithIndexMotionNV = 5250,1921 OpHitObjectRecordHitWithIndexMotionNV = 5250,
1877 OpHitObjectRecordMissMotionNV = 5251,1922 OpHitObjectRecordMissMotionNV = 5251,
...@@ -1906,7 +1951,7 @@ pub const Opcode = enum(u16) {...@@ -1906,7 +1951,7 @@ pub const Opcode = enum(u16) {
1906 OpReorderThreadWithHintNV = 5280,1951 OpReorderThreadWithHintNV = 5280,
1907 OpTypeHitObjectNV = 5281,1952 OpTypeHitObjectNV = 5281,
1908 OpImageSampleFootprintNV = 5283,1953 OpImageSampleFootprintNV = 5283,
1909 OpTypeCooperativeVectorNV = 5288,1954 OpTypeVectorIdEXT = 5288,
1910 OpCooperativeVectorMatrixMulNV = 5289,1955 OpCooperativeVectorMatrixMulNV = 5289,
1911 OpCooperativeVectorOuterProductAccumulateNV = 5290,1956 OpCooperativeVectorOuterProductAccumulateNV = 5290,
1912 OpCooperativeVectorReduceSumAccumulateNV = 5291,1957 OpCooperativeVectorReduceSumAccumulateNV = 5291,
...@@ -1914,12 +1959,42 @@ pub const Opcode = enum(u16) {...@@ -1914,12 +1959,42 @@ pub const Opcode = enum(u16) {
1914 OpCooperativeMatrixConvertNV = 5293,1959 OpCooperativeMatrixConvertNV = 5293,
1915 OpEmitMeshTasksEXT = 5294,1960 OpEmitMeshTasksEXT = 5294,
1916 OpSetMeshOutputsEXT = 5295,1961 OpSetMeshOutputsEXT = 5295,
1917 OpGroupNonUniformPartitionNV = 5296,1962 OpGroupNonUniformPartitionEXT = 5296,
1918 OpWritePackedPrimitiveIndices4x8NV = 5299,1963 OpWritePackedPrimitiveIndices4x8NV = 5299,
1919 OpFetchMicroTriangleVertexPositionNV = 5300,1964 OpFetchMicroTriangleVertexPositionNV = 5300,
1920 OpFetchMicroTriangleVertexBarycentricNV = 5301,1965 OpFetchMicroTriangleVertexBarycentricNV = 5301,
1921 OpCooperativeVectorLoadNV = 5302,1966 OpCooperativeVectorLoadNV = 5302,
1922 OpCooperativeVectorStoreNV = 5303,1967 OpCooperativeVectorStoreNV = 5303,
1968 OpHitObjectRecordFromQueryEXT = 5304,
1969 OpHitObjectRecordMissEXT = 5305,
1970 OpHitObjectRecordMissMotionEXT = 5306,
1971 OpHitObjectGetIntersectionTriangleVertexPositionsEXT = 5307,
1972 OpHitObjectGetRayFlagsEXT = 5308,
1973 OpHitObjectSetShaderBindingTableRecordIndexEXT = 5309,
1974 OpHitObjectReorderExecuteShaderEXT = 5310,
1975 OpHitObjectTraceReorderExecuteEXT = 5311,
1976 OpHitObjectTraceMotionReorderExecuteEXT = 5312,
1977 OpTypeHitObjectEXT = 5313,
1978 OpReorderThreadWithHintEXT = 5314,
1979 OpReorderThreadWithHitObjectEXT = 5315,
1980 OpHitObjectTraceRayEXT = 5316,
1981 OpHitObjectTraceRayMotionEXT = 5317,
1982 OpHitObjectRecordEmptyEXT = 5318,
1983 OpHitObjectExecuteShaderEXT = 5319,
1984 OpHitObjectGetCurrentTimeEXT = 5320,
1985 OpHitObjectGetAttributesEXT = 5321,
1986 OpHitObjectGetHitKindEXT = 5322,
1987 OpHitObjectGetPrimitiveIndexEXT = 5323,
1988 OpHitObjectGetGeometryIndexEXT = 5324,
1989 OpHitObjectGetInstanceIdEXT = 5325,
1990 OpHitObjectGetInstanceCustomIndexEXT = 5326,
1991 OpHitObjectGetObjectRayOriginEXT = 5327,
1992 OpHitObjectGetObjectRayDirectionEXT = 5328,
1993 OpHitObjectGetWorldRayDirectionEXT = 5329,
1994 OpHitObjectGetWorldRayOriginEXT = 5330,
1995 OpHitObjectGetObjectToWorldEXT = 5331,
1996 OpHitObjectGetWorldToObjectEXT = 5332,
1997 OpHitObjectGetRayTMaxEXT = 5333,
1923 OpReportIntersectionKHR = 5334,1998 OpReportIntersectionKHR = 5334,
1924 OpIgnoreIntersectionNV = 5335,1999 OpIgnoreIntersectionNV = 5335,
1925 OpTerminateRayNV = 5336,2000 OpTerminateRayNV = 5336,
...@@ -1929,8 +2004,14 @@ pub const Opcode = enum(u16) {...@@ -1929,8 +2004,14 @@ pub const Opcode = enum(u16) {
1929 OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,2004 OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
1930 OpTypeAccelerationStructureKHR = 5341,2005 OpTypeAccelerationStructureKHR = 5341,
1931 OpExecuteCallableNV = 5344,2006 OpExecuteCallableNV = 5344,
1932 OpRayQueryGetClusterIdNV = 5345,2007 OpRayQueryGetIntersectionClusterIdNV = 5345,
1933 OpHitObjectGetClusterIdNV = 5346,2008 OpHitObjectGetClusterIdNV = 5346,
2009 OpHitObjectGetRayTMinEXT = 5347,
2010 OpHitObjectGetShaderBindingTableRecordIndexEXT = 5348,
2011 OpHitObjectGetShaderRecordBufferHandleEXT = 5349,
2012 OpHitObjectIsEmptyEXT = 5350,
2013 OpHitObjectIsHitEXT = 5351,
2014 OpHitObjectIsMissEXT = 5352,
1934 OpTypeCooperativeMatrixNV = 5358,2015 OpTypeCooperativeMatrixNV = 5358,
1935 OpCooperativeMatrixLoadNV = 5359,2016 OpCooperativeMatrixLoadNV = 5359,
1936 OpCooperativeMatrixStoreNV = 5360,2017 OpCooperativeMatrixStoreNV = 5360,
...@@ -2008,10 +2089,10 @@ pub const Opcode = enum(u16) {...@@ -2008,10 +2089,10 @@ pub const Opcode = enum(u16) {
2008 OpExpectKHR = 5631,2089 OpExpectKHR = 5631,
2009 OpDecorateString = 5632,2090 OpDecorateString = 5632,
2010 OpMemberDecorateString = 5633,2091 OpMemberDecorateString = 5633,
2092 OpVariableLengthArrayINTEL = 5818,
2093 OpSaveMemoryINTEL = 5819,
2094 OpRestoreMemoryINTEL = 5820,
2011 OpLoopControlINTEL = 5887,2095 OpLoopControlINTEL = 5887,
2012 OpReadPipeBlockingINTEL = 5946,
2013 OpWritePipeBlockingINTEL = 5947,
2014 OpFPGARegINTEL = 5949,
2015 OpRayQueryGetRayTMinKHR = 6016,2096 OpRayQueryGetRayTMinKHR = 6016,
2016 OpRayQueryGetRayFlagsKHR = 6017,2097 OpRayQueryGetRayFlagsKHR = 6017,
2017 OpRayQueryGetIntersectionTKHR = 6018,2098 OpRayQueryGetIntersectionTKHR = 6018,
...@@ -2040,11 +2121,6 @@ pub const Opcode = enum(u16) {...@@ -2040,11 +2121,6 @@ pub const Opcode = enum(u16) {
2040 OpControlBarrierArriveINTEL = 6142,2121 OpControlBarrierArriveINTEL = 6142,
2041 OpControlBarrierWaitINTEL = 6143,2122 OpControlBarrierWaitINTEL = 6143,
2042 OpArithmeticFenceEXT = 6145,2123 OpArithmeticFenceEXT = 6145,
2043 OpTaskSequenceCreateINTEL = 6163,
2044 OpTaskSequenceAsyncINTEL = 6164,
2045 OpTaskSequenceGetINTEL = 6165,
2046 OpTaskSequenceReleaseINTEL = 6166,
2047 OpTypeTaskSequenceINTEL = 6199,
2048 OpSubgroupBlockPrefetchINTEL = 6221,2124 OpSubgroupBlockPrefetchINTEL = 6221,
2049 OpSubgroup2DBlockLoadINTEL = 6231,2125 OpSubgroup2DBlockLoadINTEL = 6231,
2050 OpSubgroup2DBlockLoadTransformINTEL = 6232,2126 OpSubgroup2DBlockLoadTransformINTEL = 6232,
...@@ -2053,6 +2129,14 @@ pub const Opcode = enum(u16) {...@@ -2053,6 +2129,14 @@ pub const Opcode = enum(u16) {
2053 OpSubgroup2DBlockStoreINTEL = 6235,2129 OpSubgroup2DBlockStoreINTEL = 6235,
2054 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,2130 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
2055 OpBitwiseFunctionINTEL = 6242,2131 OpBitwiseFunctionINTEL = 6242,
2132 OpUntypedVariableLengthArrayINTEL = 6244,
2133 OpConditionalExtensionINTEL = 6248,
2134 OpConditionalEntryPointINTEL = 6249,
2135 OpConditionalCapabilityINTEL = 6250,
2136 OpSpecConstantTargetINTEL = 6251,
2137 OpSpecConstantArchitectureINTEL = 6252,
2138 OpSpecConstantCapabilitiesINTEL = 6253,
2139 OpConditionalCopyObjectINTEL = 6254,
2056 OpGroupIMulKHR = 6401,2140 OpGroupIMulKHR = 6401,
2057 OpGroupFMulKHR = 6402,2141 OpGroupFMulKHR = 6402,
2058 OpGroupBitwiseAndKHR = 6403,2142 OpGroupBitwiseAndKHR = 6403,
...@@ -2067,6 +2151,9 @@ pub const Opcode = enum(u16) {...@@ -2067,6 +2151,9 @@ pub const Opcode = enum(u16) {
2067 OpConvertHandleToImageINTEL = 6529,2151 OpConvertHandleToImageINTEL = 6529,
2068 OpConvertHandleToSamplerINTEL = 6530,2152 OpConvertHandleToSamplerINTEL = 6530,
2069 OpConvertHandleToSampledImageINTEL = 6531,2153 OpConvertHandleToSampledImageINTEL = 6531,
2154 OpFDot2MixAcc32VALVE = 6916,
2155 OpFDot2MixAcc16VALVE = 6917,
2156 OpFDot4MixAcc32VALVE = 6918,
20702157
2071 pub fn Operands(comptime self: Opcode) type {2158 pub fn Operands(comptime self: Opcode) type {
2072 return switch (self) {2159 return switch (self) {
...@@ -2380,7 +2467,7 @@ pub const Opcode = enum(u16) {...@@ -2380,7 +2467,7 @@ pub const Opcode = enum(u16) {
2380 .OpGroupNonUniformAll => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },2467 .OpGroupNonUniformAll => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2381 .OpGroupNonUniformAny => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },2468 .OpGroupNonUniformAny => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2382 .OpGroupNonUniformAllEqual => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },2469 .OpGroupNonUniformAllEqual => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2383 .OpGroupNonUniformBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id },2470 .OpGroupNonUniformBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, invocation_id: Id },
2384 .OpGroupNonUniformBroadcastFirst => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },2471 .OpGroupNonUniformBroadcastFirst => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2385 .OpGroupNonUniformBallot => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },2472 .OpGroupNonUniformBallot => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2386 .OpGroupNonUniformInverseBallot => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },2473 .OpGroupNonUniformInverseBallot => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
...@@ -2388,7 +2475,7 @@ pub const Opcode = enum(u16) {...@@ -2388,7 +2475,7 @@ pub const Opcode = enum(u16) {
2388 .OpGroupNonUniformBallotBitCount => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id },2475 .OpGroupNonUniformBallotBitCount => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id },
2389 .OpGroupNonUniformBallotFindLSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },2476 .OpGroupNonUniformBallotFindLSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2390 .OpGroupNonUniformBallotFindMSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },2477 .OpGroupNonUniformBallotFindMSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2391 .OpGroupNonUniformShuffle => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id },2478 .OpGroupNonUniformShuffle => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, invocation_id: Id },
2392 .OpGroupNonUniformShuffleXor => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, mask: Id },2479 .OpGroupNonUniformShuffleXor => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, mask: Id },
2393 .OpGroupNonUniformShuffleUp => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },2480 .OpGroupNonUniformShuffleUp => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },
2394 .OpGroupNonUniformShuffleDown => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },2481 .OpGroupNonUniformShuffleDown => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },
...@@ -2439,12 +2526,14 @@ pub const Opcode = enum(u16) {...@@ -2439,12 +2526,14 @@ pub const Opcode = enum(u16) {
2439 .OpUntypedInBoundsPtrAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, element: Id, indexes: []const Id = &.{} },2526 .OpUntypedInBoundsPtrAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, element: Id, indexes: []const Id = &.{} },
2440 .OpUntypedArrayLengthKHR => struct { id_result_type: Id, id_result: Id, structure: Id, pointer: Id, array_member: LiteralInteger },2527 .OpUntypedArrayLengthKHR => struct { id_result_type: Id, id_result: Id, structure: Id, pointer: Id, array_member: LiteralInteger },
2441 .OpUntypedPrefetchKHR => struct { pointer_type: Id, num_bytes: Id, rw: ?Id = null, locality: ?Id = null, cache_type: ?Id = null },2528 .OpUntypedPrefetchKHR => struct { pointer_type: Id, num_bytes: Id, rw: ?Id = null, locality: ?Id = null, cache_type: ?Id = null },
2529 .OpFmaKHR => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id, operand_3: Id },
2442 .OpSubgroupAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },2530 .OpSubgroupAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2443 .OpSubgroupAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },2531 .OpSubgroupAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2444 .OpSubgroupAllEqualKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },2532 .OpSubgroupAllEqualKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2445 .OpGroupNonUniformRotateKHR => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id, cluster_size: ?Id = null },2533 .OpGroupNonUniformRotateKHR => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id, cluster_size: ?Id = null },
2446 .OpSubgroupReadInvocationKHR => struct { id_result_type: Id, id_result: Id, value: Id, index: Id },2534 .OpSubgroupReadInvocationKHR => struct { id_result_type: Id, id_result: Id, value: Id, index: Id },
2447 .OpExtInstWithForwardRefsKHR => struct { id_result_type: Id, id_result: Id, set: Id, instruction: LiteralExtInstInteger, id_ref_4: []const Id = &.{} },2535 .OpExtInstWithForwardRefsKHR => struct { id_result_type: Id, id_result: Id, set: Id, instruction: LiteralExtInstInteger, id_ref_4: []const Id = &.{} },
2536 .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 },
2448 .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 },2537 .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 },
2449 .OpExecuteCallableKHR => struct { sbt_index: Id, callable_data: Id },2538 .OpExecuteCallableKHR => struct { sbt_index: Id, callable_data: Id },
2450 .OpConvertUToAccelerationStructureKHR => struct { id_result_type: Id, id_result: Id, accel: Id },2539 .OpConvertUToAccelerationStructureKHR => struct { id_result_type: Id, id_result: Id, accel: Id },
...@@ -2475,10 +2564,14 @@ pub const Opcode = enum(u16) {...@@ -2475,10 +2564,14 @@ pub const Opcode = enum(u16) {
2475 .OpImageBoxFilterQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, box_size: Id },2564 .OpImageBoxFilterQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, box_size: Id },
2476 .OpImageBlockMatchSSDQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },2565 .OpImageBlockMatchSSDQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },
2477 .OpImageBlockMatchSADQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },2566 .OpImageBlockMatchSADQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },
2567 .OpBitCastArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id },
2478 .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 },2568 .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 },
2479 .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 },2569 .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 },
2480 .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 },2570 .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 },
2481 .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 },2571 .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 },
2572 .OpCompositeConstructCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id },
2573 .OpCompositeExtractCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_cooperative_matrix: Id },
2574 .OpExtractSubArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id, index: Id },
2482 .OpGroupIAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2575 .OpGroupIAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2483 .OpGroupFAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2576 .OpGroupFAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2484 .OpGroupFMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2577 .OpGroupFMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
...@@ -2500,6 +2593,16 @@ pub const Opcode = enum(u16) {...@@ -2500,6 +2593,16 @@ pub const Opcode = enum(u16) {
2500 .OpSpecConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString },2593 .OpSpecConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString },
2501 .OpGroupNonUniformQuadAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },2594 .OpGroupNonUniformQuadAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2502 .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },2595 .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2596 .OpTypeBufferEXT => struct { id_result: Id, storage_class: StorageClass },
2597 .OpBufferPointerEXT => struct { id_result_type: Id, id_result: Id, buffer: Id },
2598 .OpAbortKHR => struct { message_type: Id, message: Id },
2599 .OpUntypedImageTexelPointerEXT => struct { id_result_type: Id, id_result: Id, image_type: Id, image: Id, coordinate: Id, sample: Id },
2600 .OpMemberDecorateIdEXT => struct { structure_type: Id, member: LiteralInteger, decoration: Decoration.Extended },
2601 .OpConstantSizeOfEXT => struct { id_result_type: Id, id_result: Id, type: Id },
2602 .OpConstantDataKHR => struct { id_result_type: Id, id_result: Id, data: []const LiteralInteger = &.{} },
2603 .OpSpecConstantDataKHR => struct { id_result_type: Id, id_result: Id, data: []const LiteralInteger = &.{} },
2604 .OpPoisonKHR => struct { id_result_type: Id, id_result: Id },
2605 .OpFreezeKHR => struct { id_result_type: Id, id_result: Id, value: Id },
2503 .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 },2606 .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 },
2504 .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 },2607 .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 },
2505 .OpHitObjectRecordMissMotionNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id },2608 .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) {...@@ -2534,7 +2637,7 @@ pub const Opcode = enum(u16) {
2534 .OpReorderThreadWithHintNV => struct { hint: Id, bits: Id },2637 .OpReorderThreadWithHintNV => struct { hint: Id, bits: Id },
2535 .OpTypeHitObjectNV => struct { id_result: Id },2638 .OpTypeHitObjectNV => struct { id_result: Id },
2536 .OpImageSampleFootprintNV => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, granularity: Id, coarse: Id, image_operands: ?ImageOperands.Extended = null },2639 .OpImageSampleFootprintNV => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, granularity: Id, coarse: Id, image_operands: ?ImageOperands.Extended = null },
2537 .OpTypeCooperativeVectorNV => struct { id_result: Id, component_type: Id, component_count: Id },2640 .OpTypeVectorIdEXT => struct { id_result: Id, component_type: Id, component_count: Id },
2538 .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 },2641 .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 },
2539 .OpCooperativeVectorOuterProductAccumulateNV => struct { pointer: Id, offset: Id, a: Id, b: Id, memory_layout: Id, matrix_interpretation: Id, matrix_stride: ?Id = null },2642 .OpCooperativeVectorOuterProductAccumulateNV => struct { pointer: Id, offset: Id, a: Id, b: Id, memory_layout: Id, matrix_interpretation: Id, matrix_stride: ?Id = null },
2540 .OpCooperativeVectorReduceSumAccumulateNV => struct { pointer: Id, offset: Id, v: Id },2643 .OpCooperativeVectorReduceSumAccumulateNV => struct { pointer: Id, offset: Id, v: Id },
...@@ -2542,12 +2645,42 @@ pub const Opcode = enum(u16) {...@@ -2542,12 +2645,42 @@ pub const Opcode = enum(u16) {
2542 .OpCooperativeMatrixConvertNV => struct { id_result_type: Id, id_result: Id, matrix: Id },2645 .OpCooperativeMatrixConvertNV => struct { id_result_type: Id, id_result: Id, matrix: Id },
2543 .OpEmitMeshTasksEXT => struct { group_count_x: Id, group_count_y: Id, group_count_z: Id, payload: ?Id = null },2646 .OpEmitMeshTasksEXT => struct { group_count_x: Id, group_count_y: Id, group_count_z: Id, payload: ?Id = null },
2544 .OpSetMeshOutputsEXT => struct { vertex_count: Id, primitive_count: Id },2647 .OpSetMeshOutputsEXT => struct { vertex_count: Id, primitive_count: Id },
2545 .OpGroupNonUniformPartitionNV => struct { id_result_type: Id, id_result: Id, value: Id },2648 .OpGroupNonUniformPartitionEXT => struct { id_result_type: Id, id_result: Id, value: Id },
2546 .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: Id, packed_indices: Id },2649 .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: Id, packed_indices: Id },
2547 .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },2650 .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },
2548 .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },2651 .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },
2549 .OpCooperativeVectorLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, offset: Id, memory_access: ?MemoryAccess.Extended = null },2652 .OpCooperativeVectorLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, offset: Id, memory_access: ?MemoryAccess.Extended = null },
2550 .OpCooperativeVectorStoreNV => struct { pointer: Id, offset: Id, object: Id, memory_access: ?MemoryAccess.Extended = null },2653 .OpCooperativeVectorStoreNV => struct { pointer: Id, offset: Id, object: Id, memory_access: ?MemoryAccess.Extended = null },
2654 .OpHitObjectRecordFromQueryEXT => struct { hit_object: Id, ray_query: Id, sbt_record_index: Id, hit_object_attributes: Id },
2655 .OpHitObjectRecordMissEXT => struct { hit_object: Id, ray_flags: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id },
2656 .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 },
2657 .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2658 .OpHitObjectGetRayFlagsEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2659 .OpHitObjectSetShaderBindingTableRecordIndexEXT => struct { hit_object: Id, sbt_record_index: Id },
2660 .OpHitObjectReorderExecuteShaderEXT => struct { hit_object: Id, payload: Id, hint: ?Id = null, bits: ?Id = null },
2661 .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 },
2662 .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 },
2663 .OpTypeHitObjectEXT => struct { id_result: Id },
2664 .OpReorderThreadWithHintEXT => struct { hint: Id, bits: Id },
2665 .OpReorderThreadWithHitObjectEXT => struct { hit_object: Id, hint: ?Id = null, bits: ?Id = null },
2666 .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 },
2667 .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 },
2668 .OpHitObjectRecordEmptyEXT => struct { hit_object: Id },
2669 .OpHitObjectExecuteShaderEXT => struct { hit_object: Id, payload: Id },
2670 .OpHitObjectGetCurrentTimeEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2671 .OpHitObjectGetAttributesEXT => struct { hit_object: Id, hit_object_attribute: Id },
2672 .OpHitObjectGetHitKindEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2673 .OpHitObjectGetPrimitiveIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2674 .OpHitObjectGetGeometryIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2675 .OpHitObjectGetInstanceIdEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2676 .OpHitObjectGetInstanceCustomIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2677 .OpHitObjectGetObjectRayOriginEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2678 .OpHitObjectGetObjectRayDirectionEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2679 .OpHitObjectGetWorldRayDirectionEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2680 .OpHitObjectGetWorldRayOriginEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2681 .OpHitObjectGetObjectToWorldEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2682 .OpHitObjectGetWorldToObjectEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2683 .OpHitObjectGetRayTMaxEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2551 .OpReportIntersectionKHR => struct { id_result_type: Id, id_result: Id, hit: Id, hit_kind: Id },2684 .OpReportIntersectionKHR => struct { id_result_type: Id, id_result: Id, hit: Id, hit_kind: Id },
2552 .OpIgnoreIntersectionNV => void,2685 .OpIgnoreIntersectionNV => void,
2553 .OpTerminateRayNV => void,2686 .OpTerminateRayNV => void,
...@@ -2557,8 +2690,14 @@ pub const Opcode = enum(u16) {...@@ -2557,8 +2690,14 @@ pub const Opcode = enum(u16) {
2557 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },2690 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2558 .OpTypeAccelerationStructureKHR => struct { id_result: Id },2691 .OpTypeAccelerationStructureKHR => struct { id_result: Id },
2559 .OpExecuteCallableNV => struct { sbt_index: Id, callable_data_id: Id },2692 .OpExecuteCallableNV => struct { sbt_index: Id, callable_data_id: Id },
2560 .OpRayQueryGetClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },2693 .OpRayQueryGetIntersectionClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2561 .OpHitObjectGetClusterIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },2694 .OpHitObjectGetClusterIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2695 .OpHitObjectGetRayTMinEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2696 .OpHitObjectGetShaderBindingTableRecordIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2697 .OpHitObjectGetShaderRecordBufferHandleEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2698 .OpHitObjectIsEmptyEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2699 .OpHitObjectIsHitEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2700 .OpHitObjectIsMissEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2562 .OpTypeCooperativeMatrixNV => struct { id_result: Id, component_type: Id, execution: Id, rows: Id, columns: Id },2701 .OpTypeCooperativeMatrixNV => struct { id_result: Id, component_type: Id, execution: Id, rows: Id, columns: Id },
2563 .OpCooperativeMatrixLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null },2702 .OpCooperativeMatrixLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null },
2564 .OpCooperativeMatrixStoreNV => struct { pointer: Id, object: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null },2703 .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) {...@@ -2636,10 +2775,10 @@ pub const Opcode = enum(u16) {
2636 .OpExpectKHR => struct { id_result_type: Id, id_result: Id, value: Id, expected_value: Id },2775 .OpExpectKHR => struct { id_result_type: Id, id_result: Id, value: Id, expected_value: Id },
2637 .OpDecorateString => struct { target: Id, decoration: Decoration.Extended },2776 .OpDecorateString => struct { target: Id, decoration: Decoration.Extended },
2638 .OpMemberDecorateString => struct { struct_type: Id, member: LiteralInteger, decoration: Decoration.Extended },2777 .OpMemberDecorateString => struct { struct_type: Id, member: LiteralInteger, decoration: Decoration.Extended },
2778 .OpVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, length: Id },
2779 .OpSaveMemoryINTEL => struct { id_result_type: Id, id_result: Id },
2780 .OpRestoreMemoryINTEL => struct { ptr: Id },
2639 .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} },2781 .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} },
2640 .OpReadPipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id },
2641 .OpWritePipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id },
2642 .OpFPGARegINTEL => struct { id_result_type: Id, id_result: Id, input: Id },
2643 .OpRayQueryGetRayTMinKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },2782 .OpRayQueryGetRayTMinKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2644 .OpRayQueryGetRayFlagsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },2783 .OpRayQueryGetRayFlagsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2645 .OpRayQueryGetIntersectionTKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },2784 .OpRayQueryGetIntersectionTKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
...@@ -2668,11 +2807,6 @@ pub const Opcode = enum(u16) {...@@ -2668,11 +2807,6 @@ pub const Opcode = enum(u16) {
2668 .OpControlBarrierArriveINTEL => struct { execution: Id, memory: Id, semantics: Id },2807 .OpControlBarrierArriveINTEL => struct { execution: Id, memory: Id, semantics: Id },
2669 .OpControlBarrierWaitINTEL => struct { execution: Id, memory: Id, semantics: Id },2808 .OpControlBarrierWaitINTEL => struct { execution: Id, memory: Id, semantics: Id },
2670 .OpArithmeticFenceEXT => struct { id_result_type: Id, id_result: Id, target: Id },2809 .OpArithmeticFenceEXT => struct { id_result_type: Id, id_result: Id, target: Id },
2671 .OpTaskSequenceCreateINTEL => struct { id_result_type: Id, id_result: Id, function: Id, pipelined: LiteralInteger, use_stall_enable_clusters: LiteralInteger, get_capacity: LiteralInteger, async_capacity: LiteralInteger },
2672 .OpTaskSequenceAsyncINTEL => struct { sequence: Id, arguments: []const Id = &.{} },
2673 .OpTaskSequenceGetINTEL => struct { id_result_type: Id, id_result: Id, sequence: Id },
2674 .OpTaskSequenceReleaseINTEL => struct { sequence: Id },
2675 .OpTypeTaskSequenceINTEL => struct { id_result: Id },
2676 .OpSubgroupBlockPrefetchINTEL => struct { ptr: Id, num_bytes: Id, memory_access: ?MemoryAccess.Extended = null },2810 .OpSubgroupBlockPrefetchINTEL => struct { ptr: Id, num_bytes: Id, memory_access: ?MemoryAccess.Extended = null },
2677 .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 },2811 .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 },
2678 .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 },2812 .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) {...@@ -2681,6 +2815,14 @@ pub const Opcode = enum(u16) {
2681 .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 },2815 .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 },
2682 .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 },2816 .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 },
2683 .OpBitwiseFunctionINTEL => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, lut_index: Id },2817 .OpBitwiseFunctionINTEL => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, lut_index: Id },
2818 .OpUntypedVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, element_type: Id, length: Id },
2819 .OpConditionalExtensionINTEL => struct { condition: Id, name: LiteralString },
2820 .OpConditionalEntryPointINTEL => struct { condition: Id, execution_model: ExecutionModel, entry_point: Id, name: LiteralString, interface: []const Id = &.{} },
2821 .OpConditionalCapabilityINTEL => struct { condition: Id, capability: Capability },
2822 .OpSpecConstantTargetINTEL => struct { id_result_type: Id, id_result: Id, target: LiteralInteger, features: []const LiteralInteger = &.{} },
2823 .OpSpecConstantArchitectureINTEL => struct { id_result_type: Id, id_result: Id, category: LiteralInteger, family: LiteralInteger, opcode: LiteralInteger, architecture: LiteralInteger },
2824 .OpSpecConstantCapabilitiesINTEL => struct { id_result_type: Id, id_result: Id, capabilities: []const Capability = &.{} },
2825 .OpConditionalCopyObjectINTEL => struct { id_result_type: Id, id_result: Id, id_ref: []const Id = &.{} },
2684 .OpGroupIMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2826 .OpGroupIMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2685 .OpGroupFMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2827 .OpGroupFMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2686 .OpGroupBitwiseAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },2828 .OpGroupBitwiseAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
...@@ -2695,6 +2837,9 @@ pub const Opcode = enum(u16) {...@@ -2695,6 +2837,9 @@ pub const Opcode = enum(u16) {
2695 .OpConvertHandleToImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },2837 .OpConvertHandleToImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2696 .OpConvertHandleToSamplerINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },2838 .OpConvertHandleToSamplerINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2697 .OpConvertHandleToSampledImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },2839 .OpConvertHandleToSampledImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2840 .OpFDot2MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id },
2841 .OpFDot2MixAcc16VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id },
2842 .OpFDot4MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id },
2698 };2843 };
2699 }2844 }
2700 pub fn class(self: Opcode) Class {2845 pub fn class(self: Opcode) Class {
...@@ -3068,12 +3213,14 @@ pub const Opcode = enum(u16) {...@@ -3068,12 +3213,14 @@ pub const Opcode = enum(u16) {
3068 .OpUntypedInBoundsPtrAccessChainKHR => .memory,3213 .OpUntypedInBoundsPtrAccessChainKHR => .memory,
3069 .OpUntypedArrayLengthKHR => .memory,3214 .OpUntypedArrayLengthKHR => .memory,
3070 .OpUntypedPrefetchKHR => .memory,3215 .OpUntypedPrefetchKHR => .memory,
3216 .OpFmaKHR => .arithmetic,
3071 .OpSubgroupAllKHR => .group,3217 .OpSubgroupAllKHR => .group,
3072 .OpSubgroupAnyKHR => .group,3218 .OpSubgroupAnyKHR => .group,
3073 .OpSubgroupAllEqualKHR => .group,3219 .OpSubgroupAllEqualKHR => .group,
3074 .OpGroupNonUniformRotateKHR => .group,3220 .OpGroupNonUniformRotateKHR => .group,
3075 .OpSubgroupReadInvocationKHR => .group,3221 .OpSubgroupReadInvocationKHR => .group,
3076 .OpExtInstWithForwardRefsKHR => .extension,3222 .OpExtInstWithForwardRefsKHR => .extension,
3223 .OpUntypedGroupAsyncCopyKHR => .group,
3077 .OpTraceRayKHR => .reserved,3224 .OpTraceRayKHR => .reserved,
3078 .OpExecuteCallableKHR => .reserved,3225 .OpExecuteCallableKHR => .reserved,
3079 .OpConvertUToAccelerationStructureKHR => .reserved,3226 .OpConvertUToAccelerationStructureKHR => .reserved,
...@@ -3104,10 +3251,14 @@ pub const Opcode = enum(u16) {...@@ -3104,10 +3251,14 @@ pub const Opcode = enum(u16) {
3104 .OpImageBoxFilterQCOM => .image,3251 .OpImageBoxFilterQCOM => .image,
3105 .OpImageBlockMatchSSDQCOM => .image,3252 .OpImageBlockMatchSSDQCOM => .image,
3106 .OpImageBlockMatchSADQCOM => .image,3253 .OpImageBlockMatchSADQCOM => .image,
3254 .OpBitCastArrayQCOM => .conversion,
3107 .OpImageBlockMatchWindowSSDQCOM => .image,3255 .OpImageBlockMatchWindowSSDQCOM => .image,
3108 .OpImageBlockMatchWindowSADQCOM => .image,3256 .OpImageBlockMatchWindowSADQCOM => .image,
3109 .OpImageBlockMatchGatherSSDQCOM => .image,3257 .OpImageBlockMatchGatherSSDQCOM => .image,
3110 .OpImageBlockMatchGatherSADQCOM => .image,3258 .OpImageBlockMatchGatherSADQCOM => .image,
3259 .OpCompositeConstructCoopMatQCOM => .composite,
3260 .OpCompositeExtractCoopMatQCOM => .composite,
3261 .OpExtractSubArrayQCOM => .composite,
3111 .OpGroupIAddNonUniformAMD => .group,3262 .OpGroupIAddNonUniformAMD => .group,
3112 .OpGroupFAddNonUniformAMD => .group,3263 .OpGroupFAddNonUniformAMD => .group,
3113 .OpGroupFMinNonUniformAMD => .group,3264 .OpGroupFMinNonUniformAMD => .group,
...@@ -3129,6 +3280,16 @@ pub const Opcode = enum(u16) {...@@ -3129,6 +3280,16 @@ pub const Opcode = enum(u16) {
3129 .OpSpecConstantStringAMDX => .reserved,3280 .OpSpecConstantStringAMDX => .reserved,
3130 .OpGroupNonUniformQuadAllKHR => .non_uniform,3281 .OpGroupNonUniformQuadAllKHR => .non_uniform,
3131 .OpGroupNonUniformQuadAnyKHR => .non_uniform,3282 .OpGroupNonUniformQuadAnyKHR => .non_uniform,
3283 .OpTypeBufferEXT => .type_declaration,
3284 .OpBufferPointerEXT => .memory,
3285 .OpAbortKHR => .control_flow,
3286 .OpUntypedImageTexelPointerEXT => .memory,
3287 .OpMemberDecorateIdEXT => .annotation,
3288 .OpConstantSizeOfEXT => .constant_creation,
3289 .OpConstantDataKHR => .constant_creation,
3290 .OpSpecConstantDataKHR => .constant_creation,
3291 .OpPoisonKHR => .miscellaneous,
3292 .OpFreezeKHR => .miscellaneous,
3132 .OpHitObjectRecordHitMotionNV => .reserved,3293 .OpHitObjectRecordHitMotionNV => .reserved,
3133 .OpHitObjectRecordHitWithIndexMotionNV => .reserved,3294 .OpHitObjectRecordHitWithIndexMotionNV => .reserved,
3134 .OpHitObjectRecordMissMotionNV => .reserved,3295 .OpHitObjectRecordMissMotionNV => .reserved,
...@@ -3163,7 +3324,7 @@ pub const Opcode = enum(u16) {...@@ -3163,7 +3324,7 @@ pub const Opcode = enum(u16) {
3163 .OpReorderThreadWithHintNV => .reserved,3324 .OpReorderThreadWithHintNV => .reserved,
3164 .OpTypeHitObjectNV => .type_declaration,3325 .OpTypeHitObjectNV => .type_declaration,
3165 .OpImageSampleFootprintNV => .image,3326 .OpImageSampleFootprintNV => .image,
3166 .OpTypeCooperativeVectorNV => .type_declaration,3327 .OpTypeVectorIdEXT => .type_declaration,
3167 .OpCooperativeVectorMatrixMulNV => .reserved,3328 .OpCooperativeVectorMatrixMulNV => .reserved,
3168 .OpCooperativeVectorOuterProductAccumulateNV => .reserved,3329 .OpCooperativeVectorOuterProductAccumulateNV => .reserved,
3169 .OpCooperativeVectorReduceSumAccumulateNV => .reserved,3330 .OpCooperativeVectorReduceSumAccumulateNV => .reserved,
...@@ -3171,12 +3332,42 @@ pub const Opcode = enum(u16) {...@@ -3171,12 +3332,42 @@ pub const Opcode = enum(u16) {
3171 .OpCooperativeMatrixConvertNV => .conversion,3332 .OpCooperativeMatrixConvertNV => .conversion,
3172 .OpEmitMeshTasksEXT => .reserved,3333 .OpEmitMeshTasksEXT => .reserved,
3173 .OpSetMeshOutputsEXT => .reserved,3334 .OpSetMeshOutputsEXT => .reserved,
3174 .OpGroupNonUniformPartitionNV => .non_uniform,3335 .OpGroupNonUniformPartitionEXT => .non_uniform,
3175 .OpWritePackedPrimitiveIndices4x8NV => .reserved,3336 .OpWritePackedPrimitiveIndices4x8NV => .reserved,
3176 .OpFetchMicroTriangleVertexPositionNV => .reserved,3337 .OpFetchMicroTriangleVertexPositionNV => .reserved,
3177 .OpFetchMicroTriangleVertexBarycentricNV => .reserved,3338 .OpFetchMicroTriangleVertexBarycentricNV => .reserved,
3178 .OpCooperativeVectorLoadNV => .memory,3339 .OpCooperativeVectorLoadNV => .memory,
3179 .OpCooperativeVectorStoreNV => .memory,3340 .OpCooperativeVectorStoreNV => .memory,
3341 .OpHitObjectRecordFromQueryEXT => .reserved,
3342 .OpHitObjectRecordMissEXT => .reserved,
3343 .OpHitObjectRecordMissMotionEXT => .reserved,
3344 .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => .reserved,
3345 .OpHitObjectGetRayFlagsEXT => .reserved,
3346 .OpHitObjectSetShaderBindingTableRecordIndexEXT => .reserved,
3347 .OpHitObjectReorderExecuteShaderEXT => .reserved,
3348 .OpHitObjectTraceReorderExecuteEXT => .reserved,
3349 .OpHitObjectTraceMotionReorderExecuteEXT => .reserved,
3350 .OpTypeHitObjectEXT => .type_declaration,
3351 .OpReorderThreadWithHintEXT => .reserved,
3352 .OpReorderThreadWithHitObjectEXT => .reserved,
3353 .OpHitObjectTraceRayEXT => .reserved,
3354 .OpHitObjectTraceRayMotionEXT => .reserved,
3355 .OpHitObjectRecordEmptyEXT => .reserved,
3356 .OpHitObjectExecuteShaderEXT => .reserved,
3357 .OpHitObjectGetCurrentTimeEXT => .reserved,
3358 .OpHitObjectGetAttributesEXT => .reserved,
3359 .OpHitObjectGetHitKindEXT => .reserved,
3360 .OpHitObjectGetPrimitiveIndexEXT => .reserved,
3361 .OpHitObjectGetGeometryIndexEXT => .reserved,
3362 .OpHitObjectGetInstanceIdEXT => .reserved,
3363 .OpHitObjectGetInstanceCustomIndexEXT => .reserved,
3364 .OpHitObjectGetObjectRayOriginEXT => .reserved,
3365 .OpHitObjectGetObjectRayDirectionEXT => .reserved,
3366 .OpHitObjectGetWorldRayDirectionEXT => .reserved,
3367 .OpHitObjectGetWorldRayOriginEXT => .reserved,
3368 .OpHitObjectGetObjectToWorldEXT => .reserved,
3369 .OpHitObjectGetWorldToObjectEXT => .reserved,
3370 .OpHitObjectGetRayTMaxEXT => .reserved,
3180 .OpReportIntersectionKHR => .reserved,3371 .OpReportIntersectionKHR => .reserved,
3181 .OpIgnoreIntersectionNV => .reserved,3372 .OpIgnoreIntersectionNV => .reserved,
3182 .OpTerminateRayNV => .reserved,3373 .OpTerminateRayNV => .reserved,
...@@ -3186,8 +3377,14 @@ pub const Opcode = enum(u16) {...@@ -3186,8 +3377,14 @@ pub const Opcode = enum(u16) {
3186 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .reserved,3377 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .reserved,
3187 .OpTypeAccelerationStructureKHR => .type_declaration,3378 .OpTypeAccelerationStructureKHR => .type_declaration,
3188 .OpExecuteCallableNV => .reserved,3379 .OpExecuteCallableNV => .reserved,
3189 .OpRayQueryGetClusterIdNV => .reserved,3380 .OpRayQueryGetIntersectionClusterIdNV => .reserved,
3190 .OpHitObjectGetClusterIdNV => .reserved,3381 .OpHitObjectGetClusterIdNV => .reserved,
3382 .OpHitObjectGetRayTMinEXT => .reserved,
3383 .OpHitObjectGetShaderBindingTableRecordIndexEXT => .reserved,
3384 .OpHitObjectGetShaderRecordBufferHandleEXT => .reserved,
3385 .OpHitObjectIsEmptyEXT => .reserved,
3386 .OpHitObjectIsHitEXT => .reserved,
3387 .OpHitObjectIsMissEXT => .reserved,
3191 .OpTypeCooperativeMatrixNV => .type_declaration,3388 .OpTypeCooperativeMatrixNV => .type_declaration,
3192 .OpCooperativeMatrixLoadNV => .reserved,3389 .OpCooperativeMatrixLoadNV => .reserved,
3193 .OpCooperativeMatrixStoreNV => .reserved,3390 .OpCooperativeMatrixStoreNV => .reserved,
...@@ -3265,10 +3462,10 @@ pub const Opcode = enum(u16) {...@@ -3265,10 +3462,10 @@ pub const Opcode = enum(u16) {
3265 .OpExpectKHR => .miscellaneous,3462 .OpExpectKHR => .miscellaneous,
3266 .OpDecorateString => .annotation,3463 .OpDecorateString => .annotation,
3267 .OpMemberDecorateString => .annotation,3464 .OpMemberDecorateString => .annotation,
3465 .OpVariableLengthArrayINTEL => .memory,
3466 .OpSaveMemoryINTEL => .memory,
3467 .OpRestoreMemoryINTEL => .memory,
3268 .OpLoopControlINTEL => .reserved,3468 .OpLoopControlINTEL => .reserved,
3269 .OpReadPipeBlockingINTEL => .pipe,
3270 .OpWritePipeBlockingINTEL => .pipe,
3271 .OpFPGARegINTEL => .reserved,
3272 .OpRayQueryGetRayTMinKHR => .reserved,3469 .OpRayQueryGetRayTMinKHR => .reserved,
3273 .OpRayQueryGetRayFlagsKHR => .reserved,3470 .OpRayQueryGetRayFlagsKHR => .reserved,
3274 .OpRayQueryGetIntersectionTKHR => .reserved,3471 .OpRayQueryGetIntersectionTKHR => .reserved,
...@@ -3297,11 +3494,6 @@ pub const Opcode = enum(u16) {...@@ -3297,11 +3494,6 @@ pub const Opcode = enum(u16) {
3297 .OpControlBarrierArriveINTEL => .barrier,3494 .OpControlBarrierArriveINTEL => .barrier,
3298 .OpControlBarrierWaitINTEL => .barrier,3495 .OpControlBarrierWaitINTEL => .barrier,
3299 .OpArithmeticFenceEXT => .miscellaneous,3496 .OpArithmeticFenceEXT => .miscellaneous,
3300 .OpTaskSequenceCreateINTEL => .reserved,
3301 .OpTaskSequenceAsyncINTEL => .reserved,
3302 .OpTaskSequenceGetINTEL => .reserved,
3303 .OpTaskSequenceReleaseINTEL => .reserved,
3304 .OpTypeTaskSequenceINTEL => .type_declaration,
3305 .OpSubgroupBlockPrefetchINTEL => .group,3497 .OpSubgroupBlockPrefetchINTEL => .group,
3306 .OpSubgroup2DBlockLoadINTEL => .group,3498 .OpSubgroup2DBlockLoadINTEL => .group,
3307 .OpSubgroup2DBlockLoadTransformINTEL => .group,3499 .OpSubgroup2DBlockLoadTransformINTEL => .group,
...@@ -3310,6 +3502,14 @@ pub const Opcode = enum(u16) {...@@ -3310,6 +3502,14 @@ pub const Opcode = enum(u16) {
3310 .OpSubgroup2DBlockStoreINTEL => .group,3502 .OpSubgroup2DBlockStoreINTEL => .group,
3311 .OpSubgroupMatrixMultiplyAccumulateINTEL => .group,3503 .OpSubgroupMatrixMultiplyAccumulateINTEL => .group,
3312 .OpBitwiseFunctionINTEL => .bit,3504 .OpBitwiseFunctionINTEL => .bit,
3505 .OpUntypedVariableLengthArrayINTEL => .memory,
3506 .OpConditionalExtensionINTEL => .extension,
3507 .OpConditionalEntryPointINTEL => .mode_setting,
3508 .OpConditionalCapabilityINTEL => .mode_setting,
3509 .OpSpecConstantTargetINTEL => .constant_creation,
3510 .OpSpecConstantArchitectureINTEL => .constant_creation,
3511 .OpSpecConstantCapabilitiesINTEL => .constant_creation,
3512 .OpConditionalCopyObjectINTEL => .composite,
3313 .OpGroupIMulKHR => .group,3513 .OpGroupIMulKHR => .group,
3314 .OpGroupFMulKHR => .group,3514 .OpGroupFMulKHR => .group,
3315 .OpGroupBitwiseAndKHR => .group,3515 .OpGroupBitwiseAndKHR => .group,
...@@ -3324,94 +3524,13 @@ pub const Opcode = enum(u16) {...@@ -3324,94 +3524,13 @@ pub const Opcode = enum(u16) {
3324 .OpConvertHandleToImageINTEL => .image,3524 .OpConvertHandleToImageINTEL => .image,
3325 .OpConvertHandleToSamplerINTEL => .image,3525 .OpConvertHandleToSamplerINTEL => .image,
3326 .OpConvertHandleToSampledImageINTEL => .image,3526 .OpConvertHandleToSampledImageINTEL => .image,
3527 .OpFDot2MixAcc32VALVE => .reserved,
3528 .OpFDot2MixAcc16VALVE => .reserved,
3529 .OpFDot4MixAcc32VALVE => .reserved,
3327 };3530 };
3328 }3531 }
3329};3532};
33303533
3331pub const GlslOpcode = enum(u16) {
3332 Round = 1,
3333 RoundEven = 2,
3334 Trunc = 3,
3335 FAbs = 4,
3336 SAbs = 5,
3337 FSign = 6,
3338 SSign = 7,
3339 Floor = 8,
3340 Ceil = 9,
3341 Fract = 10,
3342 Radians = 11,
3343 Degrees = 12,
3344 Sin = 13,
3345 Cos = 14,
3346 Tan = 15,
3347 Asin = 16,
3348 Acos = 17,
3349 Atan = 18,
3350 Sinh = 19,
3351 Cosh = 20,
3352 Tanh = 21,
3353 Asinh = 22,
3354 Acosh = 23,
3355 Atanh = 24,
3356 Atan2 = 25,
3357 Pow = 26,
3358 Exp = 27,
3359 Log = 28,
3360 Exp2 = 29,
3361 Log2 = 30,
3362 Sqrt = 31,
3363 InverseSqrt = 32,
3364 Determinant = 33,
3365 MatrixInverse = 34,
3366 Modf = 35,
3367 ModfStruct = 36,
3368 FMin = 37,
3369 UMin = 38,
3370 SMin = 39,
3371 FMax = 40,
3372 UMax = 41,
3373 SMax = 42,
3374 FClamp = 43,
3375 UClamp = 44,
3376 SClamp = 45,
3377 FMix = 46,
3378 IMix = 47,
3379 Step = 48,
3380 SmoothStep = 49,
3381 Fma = 50,
3382 Frexp = 51,
3383 FrexpStruct = 52,
3384 Ldexp = 53,
3385 PackSnorm4x8 = 54,
3386 PackUnorm4x8 = 55,
3387 PackSnorm2x16 = 56,
3388 PackUnorm2x16 = 57,
3389 PackHalf2x16 = 58,
3390 PackDouble2x32 = 59,
3391 UnpackSnorm2x16 = 60,
3392 UnpackUnorm2x16 = 61,
3393 UnpackHalf2x16 = 62,
3394 UnpackSnorm4x8 = 63,
3395 UnpackUnorm4x8 = 64,
3396 UnpackDouble2x32 = 65,
3397 Length = 66,
3398 Distance = 67,
3399 Cross = 68,
3400 Normalize = 69,
3401 FaceForward = 70,
3402 Reflect = 71,
3403 Refract = 72,
3404 FindILsb = 73,
3405 FindSMsb = 74,
3406 FindUMsb = 75,
3407 InterpolateAtCentroid = 76,
3408 InterpolateAtSample = 77,
3409 InterpolateAtOffset = 78,
3410 NMin = 79,
3411 NMax = 80,
3412 NClamp = 81,
3413};
3414
3415pub const OpenClOpcode = enum(u16) {3534pub const OpenClOpcode = enum(u16) {
3416 acos = 0,3535 acos = 0,
3417 acosh = 1,3536 acosh = 1,
...@@ -3577,6 +3696,90 @@ pub const OpenClOpcode = enum(u16) {...@@ -3577,6 +3696,90 @@ pub const OpenClOpcode = enum(u16) {
3577 u_mad_hi = 204,3696 u_mad_hi = 204,
3578};3697};
35793698
3699pub const GlslOpcode = enum(u16) {
3700 Round = 1,
3701 RoundEven = 2,
3702 Trunc = 3,
3703 FAbs = 4,
3704 SAbs = 5,
3705 FSign = 6,
3706 SSign = 7,
3707 Floor = 8,
3708 Ceil = 9,
3709 Fract = 10,
3710 Radians = 11,
3711 Degrees = 12,
3712 Sin = 13,
3713 Cos = 14,
3714 Tan = 15,
3715 Asin = 16,
3716 Acos = 17,
3717 Atan = 18,
3718 Sinh = 19,
3719 Cosh = 20,
3720 Tanh = 21,
3721 Asinh = 22,
3722 Acosh = 23,
3723 Atanh = 24,
3724 Atan2 = 25,
3725 Pow = 26,
3726 Exp = 27,
3727 Log = 28,
3728 Exp2 = 29,
3729 Log2 = 30,
3730 Sqrt = 31,
3731 InverseSqrt = 32,
3732 Determinant = 33,
3733 MatrixInverse = 34,
3734 Modf = 35,
3735 ModfStruct = 36,
3736 FMin = 37,
3737 UMin = 38,
3738 SMin = 39,
3739 FMax = 40,
3740 UMax = 41,
3741 SMax = 42,
3742 FClamp = 43,
3743 UClamp = 44,
3744 SClamp = 45,
3745 FMix = 46,
3746 IMix = 47,
3747 Step = 48,
3748 SmoothStep = 49,
3749 Fma = 50,
3750 Frexp = 51,
3751 FrexpStruct = 52,
3752 Ldexp = 53,
3753 PackSnorm4x8 = 54,
3754 PackUnorm4x8 = 55,
3755 PackSnorm2x16 = 56,
3756 PackUnorm2x16 = 57,
3757 PackHalf2x16 = 58,
3758 PackDouble2x32 = 59,
3759 UnpackSnorm2x16 = 60,
3760 UnpackUnorm2x16 = 61,
3761 UnpackHalf2x16 = 62,
3762 UnpackSnorm4x8 = 63,
3763 UnpackUnorm4x8 = 64,
3764 UnpackDouble2x32 = 65,
3765 Length = 66,
3766 Distance = 67,
3767 Cross = 68,
3768 Normalize = 69,
3769 FaceForward = 70,
3770 Reflect = 71,
3771 Refract = 72,
3772 FindILsb = 73,
3773 FindSMsb = 74,
3774 FindUMsb = 75,
3775 InterpolateAtCentroid = 76,
3776 InterpolateAtSample = 77,
3777 InterpolateAtOffset = 78,
3778 NMin = 79,
3779 NMax = 80,
3780 NClamp = 81,
3781};
3782
3580pub const Zig = enum(u16) {3783pub const Zig = enum(u16) {
3581 InvocationGlobal = 0,3784 InvocationGlobal = 0,
3582};3785};
...@@ -3734,16 +3937,16 @@ pub const LoopControl = packed struct {...@@ -3734,16 +3937,16 @@ pub const LoopControl = packed struct {
3734 _reserved_bit_13: bool = false,3937 _reserved_bit_13: bool = false,
3735 _reserved_bit_14: bool = false,3938 _reserved_bit_14: bool = false,
3736 _reserved_bit_15: bool = false,3939 _reserved_bit_15: bool = false,
3737 initiation_interval_intel: bool = false,3940 initiation_interval_altera: bool = false,
3738 max_concurrency_intel: bool = false,3941 max_concurrency_altera: bool = false,
3739 dependency_array_intel: bool = false,3942 dependency_array_altera: bool = false,
3740 pipeline_enable_intel: bool = false,3943 pipeline_enable_altera: bool = false,
3741 loop_coalesce_intel: bool = false,3944 loop_coalesce_altera: bool = false,
3742 max_interleaving_intel: bool = false,3945 max_interleaving_altera: bool = false,
3743 speculated_iterations_intel: bool = false,3946 speculated_iterations_altera: bool = false,
3744 no_fusion_intel: bool = false,3947 no_fusion_altera: bool = false,
3745 loop_count_intel: bool = false,3948 loop_count_altera: bool = false,
3746 max_reinvocation_delay_intel: bool = false,3949 max_reinvocation_delay_altera: bool = false,
3747 _reserved_bit_26: bool = false,3950 _reserved_bit_26: bool = false,
3748 _reserved_bit_27: bool = false,3951 _reserved_bit_27: bool = false,
3749 _reserved_bit_28: bool = false,3952 _reserved_bit_28: bool = false,
...@@ -3768,16 +3971,16 @@ pub const LoopControl = packed struct {...@@ -3768,16 +3971,16 @@ pub const LoopControl = packed struct {
3768 _reserved_bit_13: bool = false,3971 _reserved_bit_13: bool = false,
3769 _reserved_bit_14: bool = false,3972 _reserved_bit_14: bool = false,
3770 _reserved_bit_15: bool = false,3973 _reserved_bit_15: bool = false,
3771 initiation_interval_intel: ?struct { literal_integer: LiteralInteger } = null,3974 initiation_interval_altera: ?struct { literal_integer: LiteralInteger } = null,
3772 max_concurrency_intel: ?struct { literal_integer: LiteralInteger } = null,3975 max_concurrency_altera: ?struct { literal_integer: LiteralInteger } = null,
3773 dependency_array_intel: ?struct { literal_integer: LiteralInteger } = null,3976 dependency_array_altera: ?struct { literal_integer: LiteralInteger } = null,
3774 pipeline_enable_intel: ?struct { literal_integer: LiteralInteger } = null,3977 pipeline_enable_altera: ?struct { literal_integer: LiteralInteger } = null,
3775 loop_coalesce_intel: ?struct { literal_integer: LiteralInteger } = null,3978 loop_coalesce_altera: ?struct { literal_integer: LiteralInteger } = null,
3776 max_interleaving_intel: ?struct { literal_integer: LiteralInteger } = null,3979 max_interleaving_altera: ?struct { literal_integer: LiteralInteger } = null,
3777 speculated_iterations_intel: ?struct { literal_integer: LiteralInteger } = null,3980 speculated_iterations_altera: ?struct { literal_integer: LiteralInteger } = null,
3778 no_fusion_intel: bool = false,3981 no_fusion_altera: bool = false,
3779 loop_count_intel: ?struct { literal_integer: LiteralInteger } = null,3982 loop_count_altera: ?struct { literal_integer: LiteralInteger } = null,
3780 max_reinvocation_delay_intel: ?struct { literal_integer: LiteralInteger } = null,3983 max_reinvocation_delay_altera: ?struct { literal_integer: LiteralInteger } = null,
3781 _reserved_bit_26: bool = false,3984 _reserved_bit_26: bool = false,
3782 _reserved_bit_27: bool = false,3985 _reserved_bit_27: bool = false,
3783 _reserved_bit_28: bool = false,3986 _reserved_bit_28: bool = false,
...@@ -4174,6 +4377,7 @@ pub const ExecutionMode = enum(u32) {...@@ -4174,6 +4377,7 @@ pub const ExecutionMode = enum(u32) {
4174 quad_derivatives_khr = 5088,4377 quad_derivatives_khr = 5088,
4175 require_full_quads_khr = 5089,4378 require_full_quads_khr = 5089,
4176 shares_input_with_amdx = 5102,4379 shares_input_with_amdx = 5102,
4380 arithmetic_poison_khr = 5157,
4177 output_lines_ext = 5269,4381 output_lines_ext = 5269,
4178 output_primitives_ext = 5270,4382 output_primitives_ext = 5270,
4179 derivative_group_quads_khr = 5289,4383 derivative_group_quads_khr = 5289,
...@@ -4185,6 +4389,7 @@ pub const ExecutionMode = enum(u32) {...@@ -4185,6 +4389,7 @@ pub const ExecutionMode = enum(u32) {
4185 sample_interlock_unordered_ext = 5369,4389 sample_interlock_unordered_ext = 5369,
4186 shading_rate_interlock_ordered_ext = 5370,4390 shading_rate_interlock_ordered_ext = 5370,
4187 shading_rate_interlock_unordered_ext = 5371,4391 shading_rate_interlock_unordered_ext = 5371,
4392 shader64bit_indexing_ext = 5427,
4188 shared_local_memory_size_intel = 5618,4393 shared_local_memory_size_intel = 5618,
4189 rounding_mode_rtpintel = 5620,4394 rounding_mode_rtpintel = 5620,
4190 rounding_mode_rtnintel = 5621,4395 rounding_mode_rtnintel = 5621,
...@@ -4272,6 +4477,7 @@ pub const ExecutionMode = enum(u32) {...@@ -4272,6 +4477,7 @@ pub const ExecutionMode = enum(u32) {
4272 quad_derivatives_khr,4477 quad_derivatives_khr,
4273 require_full_quads_khr,4478 require_full_quads_khr,
4274 shares_input_with_amdx: struct { node_name: Id, shader_index: Id },4479 shares_input_with_amdx: struct { node_name: Id, shader_index: Id },
4480 arithmetic_poison_khr,
4275 output_lines_ext,4481 output_lines_ext,
4276 output_primitives_ext: struct { primitive_count: LiteralInteger },4482 output_primitives_ext: struct { primitive_count: LiteralInteger },
4277 derivative_group_quads_khr,4483 derivative_group_quads_khr,
...@@ -4283,6 +4489,7 @@ pub const ExecutionMode = enum(u32) {...@@ -4283,6 +4489,7 @@ pub const ExecutionMode = enum(u32) {
4283 sample_interlock_unordered_ext,4489 sample_interlock_unordered_ext,
4284 shading_rate_interlock_ordered_ext,4490 shading_rate_interlock_ordered_ext,
4285 shading_rate_interlock_unordered_ext,4491 shading_rate_interlock_unordered_ext,
4492 shader64bit_indexing_ext,
4286 shared_local_memory_size_intel: struct { size: LiteralInteger },4493 shared_local_memory_size_intel: struct { size: LiteralInteger },
4287 rounding_mode_rtpintel: struct { target_width: LiteralInteger },4494 rounding_mode_rtpintel: struct { target_width: LiteralInteger },
4288 rounding_mode_rtnintel: struct { target_width: LiteralInteger },4495 rounding_mode_rtnintel: struct { target_width: LiteralInteger },
...@@ -4329,9 +4536,10 @@ pub const StorageClass = enum(u32) {...@@ -4329,9 +4536,10 @@ pub const StorageClass = enum(u32) {
4329 physical_storage_buffer = 5349,4536 physical_storage_buffer = 5349,
4330 hit_object_attribute_nv = 5385,4537 hit_object_attribute_nv = 5385,
4331 task_payload_workgroup_ext = 5402,4538 task_payload_workgroup_ext = 5402,
4539 hit_object_attribute_ext = 5411,
4332 code_section_intel = 5605,4540 code_section_intel = 5605,
4333 device_only_intel = 5936,4541 device_only_altera = 5936,
4334 host_only_intel = 5937,4542 host_only_altera = 5937,
4335};4543};
4336pub const Dim = enum(u32) {4544pub const Dim = enum(u32) {
4337 @"1d" = 0,4545 @"1d" = 0,
...@@ -4503,7 +4711,7 @@ pub const FunctionParameterAttribute = enum(u32) {...@@ -4503,7 +4711,7 @@ pub const FunctionParameterAttribute = enum(u32) {
4503 no_capture = 5,4711 no_capture = 5,
4504 no_write = 6,4712 no_write = 6,
4505 no_read_write = 7,4713 no_read_write = 7,
4506 runtime_aligned_intel = 5940,4714 runtime_aligned_altera = 5940,
4507};4715};
4508pub const Decoration = enum(u32) {4716pub const Decoration = enum(u32) {
4509 relaxed_precision = 0,4717 relaxed_precision = 0,
...@@ -4568,6 +4776,9 @@ pub const Decoration = enum(u32) {...@@ -4568,6 +4776,9 @@ pub const Decoration = enum(u32) {
4568 payload_node_sparse_array_amdx = 5099,4776 payload_node_sparse_array_amdx = 5099,
4569 payload_node_array_size_amdx = 5100,4777 payload_node_array_size_amdx = 5100,
4570 payload_dispatch_indirect_amdx = 5105,4778 payload_dispatch_indirect_amdx = 5105,
4779 array_stride_id_ext = 5124,
4780 offset_id_ext = 5125,
4781 utf_encoded_khr = 5145,
4571 override_coverage_nv = 5248,4782 override_coverage_nv = 5248,
4572 passthrough_nv = 5250,4783 passthrough_nv = 5250,
4573 viewport_relative_nv = 5252,4784 viewport_relative_nv = 5252,
...@@ -4579,7 +4790,10 @@ pub const Decoration = enum(u32) {...@@ -4579,7 +4790,10 @@ pub const Decoration = enum(u32) {
4579 non_uniform = 5300,4790 non_uniform = 5300,
4580 restrict_pointer = 5355,4791 restrict_pointer = 5355,
4581 aliased_pointer = 5356,4792 aliased_pointer = 5356,
4793 member_offset_nv = 5358,
4582 hit_object_shader_record_buffer_nv = 5386,4794 hit_object_shader_record_buffer_nv = 5386,
4795 hit_object_shader_record_buffer_ext = 5389,
4796 bank_nv = 5397,
4583 bindless_sampler_nv = 5398,4797 bindless_sampler_nv = 5398,
4584 bindless_image_nv = 5399,4798 bindless_image_nv = 5399,
4585 bound_sampler_nv = 5400,4799 bound_sampler_nv = 5400,
...@@ -4598,55 +4812,56 @@ pub const Decoration = enum(u32) {...@@ -4598,55 +4812,56 @@ pub const Decoration = enum(u32) {
4598 user_type_google = 5636,4812 user_type_google = 5636,
4599 function_rounding_mode_intel = 5822,4813 function_rounding_mode_intel = 5822,
4600 function_denorm_mode_intel = 5823,4814 function_denorm_mode_intel = 5823,
4601 register_intel = 5825,4815 register_altera = 5825,
4602 memory_intel = 5826,4816 memory_altera = 5826,
4603 numbanks_intel = 5827,4817 numbanks_altera = 5827,
4604 bankwidth_intel = 5828,4818 bankwidth_altera = 5828,
4605 max_private_copies_intel = 5829,4819 max_private_copies_altera = 5829,
4606 singlepump_intel = 5830,4820 singlepump_altera = 5830,
4607 doublepump_intel = 5831,4821 doublepump_altera = 5831,
4608 max_replicates_intel = 5832,4822 max_replicates_altera = 5832,
4609 simple_dual_port_intel = 5833,4823 simple_dual_port_altera = 5833,
4610 merge_intel = 5834,4824 merge_altera = 5834,
4611 bank_bits_intel = 5835,4825 bank_bits_altera = 5835,
4612 force_pow2depth_intel = 5836,4826 force_pow2depth_altera = 5836,
4613 stridesize_intel = 5883,4827 stridesize_altera = 5883,
4614 wordsize_intel = 5884,4828 wordsize_altera = 5884,
4615 true_dual_port_intel = 5885,4829 true_dual_port_altera = 5885,
4616 burst_coalesce_intel = 5899,4830 burst_coalesce_altera = 5899,
4617 cache_size_intel = 5900,4831 cache_size_altera = 5900,
4618 dont_statically_coalesce_intel = 5901,4832 dont_statically_coalesce_altera = 5901,
4619 prefetch_intel = 5902,4833 prefetch_altera = 5902,
4620 stall_enable_intel = 5905,4834 stall_enable_altera = 5905,
4621 fuse_loops_in_function_intel = 5907,4835 fuse_loops_in_function_altera = 5907,
4622 math_op_dsp_mode_intel = 5909,4836 math_op_dsp_mode_altera = 5909,
4623 alias_scope_intel = 5914,4837 alias_scope_intel = 5914,
4624 no_alias_intel = 5915,4838 no_alias_intel = 5915,
4625 initiation_interval_intel = 5917,4839 initiation_interval_altera = 5917,
4626 max_concurrency_intel = 5918,4840 max_concurrency_altera = 5918,
4627 pipeline_enable_intel = 5919,4841 pipeline_enable_altera = 5919,
4628 buffer_location_intel = 5921,4842 buffer_location_altera = 5921,
4629 io_pipe_storage_intel = 5944,4843 io_pipe_storage_altera = 5944,
4630 function_floating_point_mode_intel = 6080,4844 function_floating_point_mode_intel = 6080,
4631 single_element_vector_intel = 6085,4845 single_element_vector_intel = 6085,
4632 vector_compute_callable_function_intel = 6087,4846 vector_compute_callable_function_intel = 6087,
4633 media_block_iointel = 6140,4847 media_block_iointel = 6140,
4634 stall_free_intel = 6151,4848 stall_free_altera = 6151,
4635 fp_max_error_decoration_intel = 6170,4849 fp_max_error_decoration_intel = 6170,
4636 latency_control_label_intel = 6172,4850 latency_control_label_altera = 6172,
4637 latency_control_constraint_intel = 6173,4851 latency_control_constraint_altera = 6173,
4638 conduit_kernel_argument_intel = 6175,4852 conduit_kernel_argument_altera = 6175,
4639 register_map_kernel_argument_intel = 6176,4853 register_map_kernel_argument_altera = 6176,
4640 mm_host_interface_address_width_intel = 6177,4854 mm_host_interface_address_width_altera = 6177,
4641 mm_host_interface_data_width_intel = 6178,4855 mm_host_interface_data_width_altera = 6178,
4642 mm_host_interface_latency_intel = 6179,4856 mm_host_interface_latency_altera = 6179,
4643 mm_host_interface_read_write_mode_intel = 6180,4857 mm_host_interface_read_write_mode_altera = 6180,
4644 mm_host_interface_max_burst_intel = 6181,4858 mm_host_interface_max_burst_altera = 6181,
4645 mm_host_interface_wait_request_intel = 6182,4859 mm_host_interface_wait_request_altera = 6182,
4646 stable_kernel_argument_intel = 6183,4860 stable_kernel_argument_altera = 6183,
4647 host_access_intel = 6188,4861 host_access_intel = 6188,
4648 init_mode_intel = 6190,4862 init_mode_altera = 6190,
4649 implement_in_register_map_intel = 6191,4863 implement_in_register_map_altera = 6191,
4864 conditional_intel = 6247,
4650 cache_control_load_intel = 6442,4865 cache_control_load_intel = 6442,
4651 cache_control_store_intel = 6443,4866 cache_control_store_intel = 6443,
46524867
...@@ -4713,6 +4928,9 @@ pub const Decoration = enum(u32) {...@@ -4713,6 +4928,9 @@ pub const Decoration = enum(u32) {
4713 payload_node_sparse_array_amdx,4928 payload_node_sparse_array_amdx,
4714 payload_node_array_size_amdx: struct { array_size: Id },4929 payload_node_array_size_amdx: struct { array_size: Id },
4715 payload_dispatch_indirect_amdx,4930 payload_dispatch_indirect_amdx,
4931 array_stride_id_ext: struct { array_stride: Id },
4932 offset_id_ext: struct { byte_offset: Id },
4933 utf_encoded_khr,
4716 override_coverage_nv,4934 override_coverage_nv,
4717 passthrough_nv,4935 passthrough_nv,
4718 viewport_relative_nv,4936 viewport_relative_nv,
...@@ -4724,7 +4942,10 @@ pub const Decoration = enum(u32) {...@@ -4724,7 +4942,10 @@ pub const Decoration = enum(u32) {
4724 non_uniform,4942 non_uniform,
4725 restrict_pointer,4943 restrict_pointer,
4726 aliased_pointer,4944 aliased_pointer,
4945 member_offset_nv: struct { member_offset: LiteralInteger },
4727 hit_object_shader_record_buffer_nv,4946 hit_object_shader_record_buffer_nv,
4947 hit_object_shader_record_buffer_ext,
4948 bank_nv: struct { bank: LiteralInteger },
4728 bindless_sampler_nv,4949 bindless_sampler_nv,
4729 bindless_image_nv,4950 bindless_image_nv,
4730 bound_sampler_nv,4951 bound_sampler_nv,
...@@ -4743,55 +4964,56 @@ pub const Decoration = enum(u32) {...@@ -4743,55 +4964,56 @@ pub const Decoration = enum(u32) {
4743 user_type_google: struct { user_type: LiteralString },4964 user_type_google: struct { user_type: LiteralString },
4744 function_rounding_mode_intel: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },4965 function_rounding_mode_intel: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },
4745 function_denorm_mode_intel: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },4966 function_denorm_mode_intel: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },
4746 register_intel,4967 register_altera,
4747 memory_intel: struct { memory_type: LiteralString },4968 memory_altera: struct { memory_type: LiteralString },
4748 numbanks_intel: struct { banks: LiteralInteger },4969 numbanks_altera: struct { banks: LiteralInteger },
4749 bankwidth_intel: struct { bank_width: LiteralInteger },4970 bankwidth_altera: struct { bank_width: LiteralInteger },
4750 max_private_copies_intel: struct { maximum_copies: LiteralInteger },4971 max_private_copies_altera: struct { maximum_copies: LiteralInteger },
4751 singlepump_intel,4972 singlepump_altera,
4752 doublepump_intel,4973 doublepump_altera,
4753 max_replicates_intel: struct { maximum_replicates: LiteralInteger },4974 max_replicates_altera: struct { maximum_replicates: LiteralInteger },
4754 simple_dual_port_intel,4975 simple_dual_port_altera,
4755 merge_intel: struct { merge_key: LiteralString, merge_type: LiteralString },4976 merge_altera: struct { merge_key: LiteralString, merge_type: LiteralString },
4756 bank_bits_intel: struct { bank_bits: []const LiteralInteger = &.{} },4977 bank_bits_altera: struct { bank_bits: []const LiteralInteger = &.{} },
4757 force_pow2depth_intel: struct { force_key: LiteralInteger },4978 force_pow2depth_altera: struct { force_key: LiteralInteger },
4758 stridesize_intel: struct { stride_size: LiteralInteger },4979 stridesize_altera: struct { stride_size: LiteralInteger },
4759 wordsize_intel: struct { word_size: LiteralInteger },4980 wordsize_altera: struct { word_size: LiteralInteger },
4760 true_dual_port_intel,4981 true_dual_port_altera,
4761 burst_coalesce_intel,4982 burst_coalesce_altera,
4762 cache_size_intel: struct { cache_size_in_bytes: LiteralInteger },4983 cache_size_altera: struct { cache_size_in_bytes: LiteralInteger },
4763 dont_statically_coalesce_intel,4984 dont_statically_coalesce_altera,
4764 prefetch_intel: struct { prefetcher_size_in_bytes: LiteralInteger },4985 prefetch_altera: struct { prefetcher_size_in_bytes: LiteralInteger },
4765 stall_enable_intel,4986 stall_enable_altera,
4766 fuse_loops_in_function_intel,4987 fuse_loops_in_function_altera,
4767 math_op_dsp_mode_intel: struct { mode: LiteralInteger, propagate: LiteralInteger },4988 math_op_dsp_mode_altera: struct { mode: LiteralInteger, propagate: LiteralInteger },
4768 alias_scope_intel: struct { aliasing_scopes_list: Id },4989 alias_scope_intel: struct { aliasing_scopes_list: Id },
4769 no_alias_intel: struct { aliasing_scopes_list: Id },4990 no_alias_intel: struct { aliasing_scopes_list: Id },
4770 initiation_interval_intel: struct { cycles: LiteralInteger },4991 initiation_interval_altera: struct { cycles: LiteralInteger },
4771 max_concurrency_intel: struct { invocations: LiteralInteger },4992 max_concurrency_altera: struct { invocations: LiteralInteger },
4772 pipeline_enable_intel: struct { enable: LiteralInteger },4993 pipeline_enable_altera: struct { enable: LiteralInteger },
4773 buffer_location_intel: struct { buffer_location_id: LiteralInteger },4994 buffer_location_altera: struct { buffer_location_id: LiteralInteger },
4774 io_pipe_storage_intel: struct { io_pipe_id: LiteralInteger },4995 io_pipe_storage_altera: struct { io_pipe_id: LiteralInteger },
4775 function_floating_point_mode_intel: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },4996 function_floating_point_mode_intel: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },
4776 single_element_vector_intel,4997 single_element_vector_intel,
4777 vector_compute_callable_function_intel,4998 vector_compute_callable_function_intel,
4778 media_block_iointel,4999 media_block_iointel,
4779 stall_free_intel,5000 stall_free_altera,
4780 fp_max_error_decoration_intel: struct { max_error: LiteralFloat },5001 fp_max_error_decoration_intel: struct { max_error: LiteralFloat },
4781 latency_control_label_intel: struct { latency_label: LiteralInteger },5002 latency_control_label_altera: struct { latency_label: LiteralInteger },
4782 latency_control_constraint_intel: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger },5003 latency_control_constraint_altera: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger },
4783 conduit_kernel_argument_intel,5004 conduit_kernel_argument_altera,
4784 register_map_kernel_argument_intel,5005 register_map_kernel_argument_altera,
4785 mm_host_interface_address_width_intel: struct { address_width: LiteralInteger },5006 mm_host_interface_address_width_altera: struct { address_width: LiteralInteger },
4786 mm_host_interface_data_width_intel: struct { data_width: LiteralInteger },5007 mm_host_interface_data_width_altera: struct { data_width: LiteralInteger },
4787 mm_host_interface_latency_intel: struct { latency: LiteralInteger },5008 mm_host_interface_latency_altera: struct { latency: LiteralInteger },
4788 mm_host_interface_read_write_mode_intel: struct { read_write_mode: AccessQualifier },5009 mm_host_interface_read_write_mode_altera: struct { read_write_mode: AccessQualifier },
4789 mm_host_interface_max_burst_intel: struct { max_burst_count: LiteralInteger },5010 mm_host_interface_max_burst_altera: struct { max_burst_count: LiteralInteger },
4790 mm_host_interface_wait_request_intel: struct { waitrequest: LiteralInteger },5011 mm_host_interface_wait_request_altera: struct { waitrequest: LiteralInteger },
4791 stable_kernel_argument_intel,5012 stable_kernel_argument_altera,
4792 host_access_intel: struct { access: HostAccessQualifier, name: LiteralString },5013 host_access_intel: struct { access: HostAccessQualifier, name: LiteralString },
4793 init_mode_intel: struct { trigger: InitializationModeQualifier },5014 init_mode_altera: struct { trigger: InitializationModeQualifier },
4794 implement_in_register_map_intel: struct { value: LiteralInteger },5015 implement_in_register_map_altera: struct { value: LiteralInteger },
5016 conditional_intel: struct { condition: Id },
4795 cache_control_load_intel: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl },5017 cache_control_load_intel: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl },
4796 cache_control_store_intel: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl },5018 cache_control_store_intel: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl },
4797 };5019 };
...@@ -4868,6 +5090,8 @@ pub const BuiltIn = enum(u32) {...@@ -4868,6 +5090,8 @@ pub const BuiltIn = enum(u32) {
4868 frag_stencil_ref_ext = 5014,5090 frag_stencil_ref_ext = 5014,
4869 remaining_recursion_levels_amdx = 5021,5091 remaining_recursion_levels_amdx = 5021,
4870 shader_index_amdx = 5073,5092 shader_index_amdx = 5073,
5093 sampler_heap_ext = 5122,
5094 resource_heap_ext = 5123,
4871 viewport_mask_nv = 5253,5095 viewport_mask_nv = 5253,
4872 secondary_position_nv = 5257,5096 secondary_position_nv = 5257,
4873 secondary_viewport_mask_nv = 5258,5097 secondary_viewport_mask_nv = 5258,
...@@ -4938,9 +5162,9 @@ pub const GroupOperation = enum(u32) {...@@ -4938,9 +5162,9 @@ pub const GroupOperation = enum(u32) {
4938 inclusive_scan = 1,5162 inclusive_scan = 1,
4939 exclusive_scan = 2,5163 exclusive_scan = 2,
4940 clustered_reduce = 3,5164 clustered_reduce = 3,
4941 partitioned_reduce_nv = 6,5165 partitioned_reduce_ext = 6,
4942 partitioned_inclusive_scan_nv = 7,5166 partitioned_inclusive_scan_ext = 7,
4943 partitioned_exclusive_scan_nv = 8,5167 partitioned_exclusive_scan_ext = 8,
4944};5168};
4945pub const KernelEnqueueFlags = enum(u32) {5169pub const KernelEnqueueFlags = enum(u32) {
4946 no_wait = 0,5170 no_wait = 0,
...@@ -4989,8 +5213,6 @@ pub const Capability = enum(u32) {...@@ -4989,8 +5213,6 @@ pub const Capability = enum(u32) {
4989 input_attachment = 40,5213 input_attachment = 40,
4990 sparse_residency = 41,5214 sparse_residency = 41,
4991 min_lod = 42,5215 min_lod = 42,
4992 sampled1d = 43,
4993 image1d = 44,
4994 sampled_cube_array = 45,5216 sampled_cube_array = 45,
4995 sampled_buffer = 46,5217 sampled_buffer = 46,
4996 image_buffer = 47,5218 image_buffer = 47,
...@@ -5018,15 +5240,9 @@ pub const Capability = enum(u32) {...@@ -5018,15 +5240,9 @@ pub const Capability = enum(u32) {
5018 shader_layer = 69,5240 shader_layer = 69,
5019 shader_viewport_index = 70,5241 shader_viewport_index = 70,
5020 uniform_decoration = 71,5242 uniform_decoration = 71,
5021 core_builtins_arm = 4165,
5022 tile_image_color_read_access_ext = 4166,5243 tile_image_color_read_access_ext = 4166,
5023 tile_image_depth_read_access_ext = 4167,5244 tile_image_depth_read_access_ext = 4167,
5024 tile_image_stencil_read_access_ext = 4168,5245 tile_image_stencil_read_access_ext = 4168,
5025 tensors_arm = 4174,
5026 storage_tensor_array_dynamic_indexing_arm = 4175,
5027 storage_tensor_array_non_uniform_indexing_arm = 4176,
5028 graph_arm = 4191,
5029 cooperative_matrix_layouts_arm = 4201,
5030 float8ext = 4212,5246 float8ext = 4212,
5031 float8cooperative_matrix_ext = 4213,5247 float8cooperative_matrix_ext = 4213,
5032 fragment_shading_rate_khr = 4422,5248 fragment_shading_rate_khr = 4422,
...@@ -5052,46 +5268,29 @@ pub const Capability = enum(u32) {...@@ -5052,46 +5268,29 @@ pub const Capability = enum(u32) {
5052 denorm_preserve = 4464,5268 denorm_preserve = 4464,
5053 denorm_flush_to_zero = 4465,5269 denorm_flush_to_zero = 4465,
5054 signed_zero_inf_nan_preserve = 4466,5270 signed_zero_inf_nan_preserve = 4466,
5055 rounding_mode_rte = 4467,
5056 rounding_mode_rtz = 4468,
5057 ray_query_provisional_khr = 4471,5271 ray_query_provisional_khr = 4471,
5058 ray_query_khr = 4472,5272 ray_query_khr = 4472,
5059 untyped_pointers_khr = 4473,5273 untyped_pointers_khr = 4473,
5060 ray_traversal_primitive_culling_khr = 4478,5274 ray_traversal_primitive_culling_khr = 4478,
5061 ray_tracing_khr = 4479,5275 ray_tracing_khr = 4479,
5062 texture_sample_weighted_qcom = 4484,
5063 texture_box_filter_qcom = 4485,
5064 texture_block_match_qcom = 4486,
5065 tile_shading_qcom = 4495,
5066 texture_block_match2qcom = 4498,
5067 float16image_amd = 5008,
5068 image_gather_bias_lod_amd = 5009,
5069 fragment_mask_amd = 5010,
5070 stencil_export_ext = 5013,5276 stencil_export_ext = 5013,
5071 image_read_write_lod_amd = 5015,
5072 int64image_ext = 5016,5277 int64image_ext = 5016,
5073 shader_clock_khr = 5055,5278 shader_clock_khr = 5055,
5074 shader_enqueue_amdx = 5067,
5075 quad_control_khr = 5087,5279 quad_control_khr = 5087,
5076 int4type_intel = 5112,
5077 int4cooperative_matrix_intel = 5114,
5078 b_float16type_khr = 5116,5280 b_float16type_khr = 5116,
5079 b_float16dot_product_khr = 5117,5281 b_float16dot_product_khr = 5117,
5080 b_float16cooperative_matrix_khr = 5118,5282 b_float16cooperative_matrix_khr = 5118,
5081 sample_mask_override_coverage_nv = 5249,5283 abort_khr = 5120,
5082 geometry_shader_passthrough_nv = 5251,5284 descriptor_heap_ext = 5128,
5285 constant_data_khr = 5146,
5286 poison_freeze_khr = 5156,
5083 shader_viewport_index_layer_ext = 5254,5287 shader_viewport_index_layer_ext = 5254,
5084 shader_viewport_mask_nv = 5255,
5085 shader_stereo_view_nv = 5259,
5086 per_view_attributes_nv = 5260,
5087 fragment_fully_covered_ext = 5265,5288 fragment_fully_covered_ext = 5265,
5088 mesh_shading_nv = 5266,
5089 image_footprint_nv = 5282,
5090 mesh_shading_ext = 5283,5289 mesh_shading_ext = 5283,
5091 fragment_barycentric_khr = 5284,5290 fragment_barycentric_khr = 5284,
5092 compute_derivative_group_quads_khr = 5288,5291 compute_derivative_group_quads_khr = 5288,
5093 fragment_density_ext = 5291,5292 fragment_density_ext = 5291,
5094 group_non_uniform_partitioned_nv = 5297,5293 group_non_uniform_partitioned_ext = 5297,
5095 shader_non_uniform = 5301,5294 shader_non_uniform = 5301,
5096 runtime_descriptor_array = 5302,5295 runtime_descriptor_array = 5302,
5097 input_attachment_array_dynamic_indexing = 5303,5296 input_attachment_array_dynamic_indexing = 5303,
...@@ -5105,80 +5304,24 @@ pub const Capability = enum(u32) {...@@ -5105,80 +5304,24 @@ pub const Capability = enum(u32) {
5105 uniform_texel_buffer_array_non_uniform_indexing = 5311,5304 uniform_texel_buffer_array_non_uniform_indexing = 5311,
5106 storage_texel_buffer_array_non_uniform_indexing = 5312,5305 storage_texel_buffer_array_non_uniform_indexing = 5312,
5107 ray_tracing_position_fetch_khr = 5336,5306 ray_tracing_position_fetch_khr = 5336,
5108 ray_tracing_nv = 5340,
5109 ray_tracing_motion_blur_nv = 5341,
5110 vulkan_memory_model = 5345,5307 vulkan_memory_model = 5345,
5111 vulkan_memory_model_device_scope = 5346,5308 vulkan_memory_model_device_scope = 5346,
5112 physical_storage_buffer_addresses = 5347,5309 physical_storage_buffer_addresses = 5347,
5113 compute_derivative_group_linear_khr = 5350,5310 compute_derivative_group_linear_khr = 5350,
5114 ray_tracing_provisional_khr = 5353,5311 ray_tracing_provisional_khr = 5353,
5115 cooperative_matrix_nv = 5357,
5116 fragment_shader_sample_interlock_ext = 5363,5312 fragment_shader_sample_interlock_ext = 5363,
5117 fragment_shader_shading_rate_interlock_ext = 5372,5313 fragment_shader_shading_rate_interlock_ext = 5372,
5118 shader_sm_builtins_nv = 5373,
5119 fragment_shader_pixel_interlock_ext = 5378,5314 fragment_shader_pixel_interlock_ext = 5378,
5120 demote_to_helper_invocation = 5379,5315 demote_to_helper_invocation = 5379,
5121 displacement_micromap_nv = 5380,
5122 ray_tracing_opacity_micromap_ext = 5381,5316 ray_tracing_opacity_micromap_ext = 5381,
5123 shader_invocation_reorder_nv = 5383,5317 shader_invocation_reorder_ext = 5388,
5124 bindless_texture_nv = 5390,
5125 ray_query_position_fetch_khr = 5391,5318 ray_query_position_fetch_khr = 5391,
5126 cooperative_vector_nv = 5394,5319 long_vector_ext = 5425,
5127 atomic_float16vector_nv = 5404,5320 shader64bit_indexing_ext = 5426,
5128 ray_tracing_displacement_micromap_nv = 5409,
5129 raw_access_chains_nv = 5414,
5130 ray_tracing_spheres_geometry_nv = 5418,
5131 ray_tracing_linear_swept_spheres_geometry_nv = 5419,
5132 cooperative_matrix_reductions_nv = 5430,
5133 cooperative_matrix_conversions_nv = 5431,
5134 cooperative_matrix_per_element_operations_nv = 5432,
5135 cooperative_matrix_tensor_addressing_nv = 5433,
5136 cooperative_matrix_block_loads_nv = 5434,
5137 cooperative_vector_training_nv = 5435,
5138 ray_tracing_cluster_acceleration_structure_nv = 5437,
5139 tensor_addressing_nv = 5439,
5140 subgroup_shuffle_intel = 5568,
5141 subgroup_buffer_block_iointel = 5569,
5142 subgroup_image_block_iointel = 5570,
5143 subgroup_image_media_block_iointel = 5579,
5144 round_to_infinity_intel = 5582,
5145 floating_point_mode_intel = 5583,
5146 integer_functions2intel = 5584,
5147 function_pointers_intel = 5603,
5148 indirect_references_intel = 5604,
5149 asm_intel = 5606,
5150 atomic_float32min_max_ext = 5612,5321 atomic_float32min_max_ext = 5612,
5151 atomic_float64min_max_ext = 5613,5322 atomic_float64min_max_ext = 5613,
5152 atomic_float16min_max_ext = 5616,5323 atomic_float16min_max_ext = 5616,
5153 vector_compute_intel = 5617,
5154 vector_any_intel = 5619,
5155 expect_assume_khr = 5629,5324 expect_assume_khr = 5629,
5156 subgroup_avc_motion_estimation_intel = 5696,
5157 subgroup_avc_motion_estimation_intra_intel = 5697,
5158 subgroup_avc_motion_estimation_chroma_intel = 5698,
5159 variable_length_array_intel = 5817,
5160 function_float_control_intel = 5821,
5161 fpga_memory_attributes_intel = 5824,
5162 fp_fast_math_mode_intel = 5837,
5163 arbitrary_precision_integers_intel = 5844,
5164 arbitrary_precision_floating_point_intel = 5845,
5165 unstructured_loop_controls_intel = 5886,
5166 fpga_loop_controls_intel = 5888,
5167 kernel_attributes_intel = 5892,
5168 fpga_kernel_attributes_intel = 5897,
5169 fpga_memory_accesses_intel = 5898,
5170 fpga_cluster_attributes_intel = 5904,
5171 loop_fuse_intel = 5906,
5172 fpgadsp_control_intel = 5908,
5173 memory_access_aliasing_intel = 5910,
5174 fpga_invocation_pipelining_attributes_intel = 5916,
5175 fpga_buffer_location_intel = 5920,
5176 arbitrary_precision_fixed_point_intel = 5922,
5177 usm_storage_classes_intel = 5935,
5178 runtime_aligned_attribute_intel = 5939,
5179 io_pipes_intel = 5943,
5180 blocking_pipes_intel = 5945,
5181 fpga_reg_intel = 5948,
5182 dot_product_input_all = 6016,5325 dot_product_input_all = 6016,
5183 dot_product_input4x8bit = 6017,5326 dot_product_input4x8bit = 6017,
5184 dot_product_input4x8bit_packed = 6018,5327 dot_product_input4x8bit_packed = 6018,
...@@ -5189,123 +5332,663 @@ pub const Capability = enum(u32) {...@@ -5189,123 +5332,663 @@ pub const Capability = enum(u32) {
5189 bit_instructions = 6025,5332 bit_instructions = 6025,
5190 group_non_uniform_rotate_khr = 6026,5333 group_non_uniform_rotate_khr = 6026,
5191 float_controls2 = 6029,5334 float_controls2 = 6029,
5335 fmakhr = 6030,
5192 atomic_float32add_ext = 6033,5336 atomic_float32add_ext = 6033,
5193 atomic_float64add_ext = 6034,5337 atomic_float64add_ext = 6034,
5194 long_composites_intel = 6089,
5195 opt_none_ext = 6094,5338 opt_none_ext = 6094,
5196 atomic_float16add_ext = 6095,5339 atomic_float16add_ext = 6095,
5197 debug_info_module_intel = 6114,
5198 b_float16conversion_intel = 6115,
5199 split_barrier_intel = 6141,
5200 arithmetic_fence_ext = 6144,5340 arithmetic_fence_ext = 6144,
5201 fpga_cluster_attributes_v2intel = 6150,
5202 fpga_kernel_attributesv2intel = 6161,
5203 task_sequence_intel = 6162,
5204 fp_max_error_intel = 6169,
5205 fpga_latency_control_intel = 6171,
5206 fpga_argument_interfaces_intel = 6174,
5207 global_variable_host_access_intel = 6187,
5208 global_variable_fpga_decorations_intel = 6189,
5209 subgroup_buffer_prefetch_intel = 6220,
5210 subgroup2d_block_iointel = 6228,
5211 subgroup2d_block_transform_intel = 6229,
5212 subgroup2d_block_transpose_intel = 6230,
5213 subgroup_matrix_multiply_accumulate_intel = 6236,
5214 ternary_bitwise_function_intel = 6241,
5215 group_uniform_arithmetic_khr = 6400,5341 group_uniform_arithmetic_khr = 6400,
5216 tensor_float32rounding_intel = 6425,5342
5217 masked_gather_scatter_intel = 6427,5343 pub fn dependencies(self: Capability) []const Extension {
5218 cache_controls_intel = 6441,5344 return switch (self) {
5219 register_limits_intel = 6460,5345 .matrix => &.{
5220 bindless_images_intel = 6528,5346 .v1_0,
5221};5347 },
5222pub const RayQueryIntersection = enum(u32) {5348 .shader => &.{
5223 ray_query_candidate_intersection_khr = 0,5349 .v1_0,
5224 ray_query_committed_intersection_khr = 1,5350 },
5225};5351 .geometry => &.{
5226pub const RayQueryCommittedIntersectionType = enum(u32) {5352 .v1_0,
5227 ray_query_committed_intersection_none_khr = 0,5353 },
5228 ray_query_committed_intersection_triangle_khr = 1,5354 .tessellation => &.{
5229 ray_query_committed_intersection_generated_khr = 2,5355 .v1_0,
5230};5356 },
5231pub const RayQueryCandidateIntersectionType = enum(u32) {5357 .addresses => &.{
5232 ray_query_candidate_intersection_triangle_khr = 0,5358 .v1_0,
5233 ray_query_candidate_intersection_aabbkhr = 1,5359 },
5234};5360 .linkage => &.{
5235pub const PackedVectorFormat = enum(u32) {5361 .v1_0,
5236 packed_vector_format4x8bit = 0,5362 },
5237};5363 .kernel => &.{
5238pub const CooperativeMatrixOperands = packed struct {5364 .v1_0,
5239 matrix_a_signed_components_khr: bool = false,5365 },
5240 matrix_b_signed_components_khr: bool = false,5366 .vector16 => &.{
5241 matrix_c_signed_components_khr: bool = false,5367 .v1_0,
5242 matrix_result_signed_components_khr: bool = false,5368 },
5243 saturating_accumulation_khr: bool = false,5369 .float16buffer => &.{
5244 _reserved_bit_5: bool = false,5370 .v1_0,
5245 _reserved_bit_6: bool = false,5371 },
5246 _reserved_bit_7: bool = false,5372 .float16 => &.{
5247 _reserved_bit_8: bool = false,5373 .v1_0,
5248 _reserved_bit_9: bool = false,5374 },
5249 _reserved_bit_10: bool = false,5375 .float64 => &.{
5250 _reserved_bit_11: bool = false,5376 .v1_0,
5251 _reserved_bit_12: bool = false,5377 },
5252 _reserved_bit_13: bool = false,5378 .int64 => &.{
5253 _reserved_bit_14: bool = false,5379 .v1_0,
5254 _reserved_bit_15: bool = false,5380 },
5255 _reserved_bit_16: bool = false,5381 .int64atomics => &.{
5256 _reserved_bit_17: bool = false,5382 .v1_0,
5257 _reserved_bit_18: bool = false,5383 },
5258 _reserved_bit_19: bool = false,5384 .image_basic => &.{
5259 _reserved_bit_20: bool = false,5385 .v1_0,
5260 _reserved_bit_21: bool = false,5386 },
5261 _reserved_bit_22: bool = false,5387 .image_read_write => &.{
5262 _reserved_bit_23: bool = false,5388 .v1_0,
5263 _reserved_bit_24: bool = false,5389 },
5264 _reserved_bit_25: bool = false,5390 .image_mipmap => &.{
5265 _reserved_bit_26: bool = false,5391 .v1_0,
5266 _reserved_bit_27: bool = false,5392 },
5267 _reserved_bit_28: bool = false,5393 .pipes => &.{
5268 _reserved_bit_29: bool = false,5394 .v1_0,
5269 _reserved_bit_30: bool = false,5395 },
5270 _reserved_bit_31: bool = false,5396 .groups => &.{
5271};5397 .v1_0,
5272pub const CooperativeMatrixLayout = enum(u32) {5398 },
5273 row_major_khr = 0,5399 .device_enqueue => &.{
5274 column_major_khr = 1,5400 .v1_0,
5275 row_blocked_interleaved_arm = 4202,5401 },
5276 column_blocked_interleaved_arm = 4203,5402 .literal_sampler => &.{
5277};5403 .v1_0,
5278pub const CooperativeMatrixUse = enum(u32) {5404 },
5279 matrix_akhr = 0,5405 .atomic_storage => &.{
5280 matrix_bkhr = 1,5406 .v1_0,
5281 matrix_accumulator_khr = 2,5407 },
5282};5408 .int16 => &.{
5283pub const CooperativeMatrixReduce = packed struct {5409 .v1_0,
5284 row: bool = false,5410 },
5285 column: bool = false,5411 .tessellation_point_size => &.{
5286 @"2x2": bool = false,5412 .v1_0,
5287 _reserved_bit_3: bool = false,5413 },
5288 _reserved_bit_4: bool = false,5414 .geometry_point_size => &.{
5289 _reserved_bit_5: bool = false,5415 .v1_0,
5290 _reserved_bit_6: bool = false,5416 },
5291 _reserved_bit_7: bool = false,5417 .image_gather_extended => &.{
5292 _reserved_bit_8: bool = false,5418 .v1_0,
5293 _reserved_bit_9: bool = false,5419 },
5294 _reserved_bit_10: bool = false,5420 .storage_image_multisample => &.{
5295 _reserved_bit_11: bool = false,5421 .v1_0,
5296 _reserved_bit_12: bool = false,5422 },
5297 _reserved_bit_13: bool = false,5423 .uniform_buffer_array_dynamic_indexing => &.{
5298 _reserved_bit_14: bool = false,5424 .v1_0,
5299 _reserved_bit_15: bool = false,5425 },
5300 _reserved_bit_16: bool = false,5426 .sampled_image_array_dynamic_indexing => &.{
5301 _reserved_bit_17: bool = false,5427 .v1_0,
5302 _reserved_bit_18: bool = false,5428 },
5303 _reserved_bit_19: bool = false,5429 .storage_buffer_array_dynamic_indexing => &.{
5304 _reserved_bit_20: bool = false,5430 .v1_0,
5305 _reserved_bit_21: bool = false,5431 },
5306 _reserved_bit_22: bool = false,5432 .storage_image_array_dynamic_indexing => &.{
5307 _reserved_bit_23: bool = false,5433 .v1_0,
5308 _reserved_bit_24: bool = false,5434 },
5435 .clip_distance => &.{
5436 .v1_0,
5437 },
5438 .cull_distance => &.{
5439 .v1_0,
5440 },
5441 .image_cube_array => &.{
5442 .v1_0,
5443 },
5444 .sample_rate_shading => &.{
5445 .v1_0,
5446 },
5447 .image_rect => &.{
5448 .v1_0,
5449 },
5450 .sampled_rect => &.{
5451 .v1_0,
5452 },
5453 .generic_pointer => &.{
5454 .v1_0,
5455 },
5456 .int8 => &.{
5457 .v1_0,
5458 },
5459 .input_attachment => &.{
5460 .v1_0,
5461 },
5462 .sparse_residency => &.{
5463 .v1_0,
5464 },
5465 .min_lod => &.{
5466 .v1_0,
5467 },
5468 .sampled_cube_array => &.{
5469 .v1_0,
5470 },
5471 .sampled_buffer => &.{
5472 .v1_0,
5473 },
5474 .image_buffer => &.{
5475 .v1_0,
5476 },
5477 .image_ms_array => &.{
5478 .v1_0,
5479 },
5480 .storage_image_extended_formats => &.{
5481 .v1_0,
5482 },
5483 .image_query => &.{
5484 .v1_0,
5485 },
5486 .derivative_control => &.{
5487 .v1_0,
5488 },
5489 .interpolation_function => &.{
5490 .v1_0,
5491 },
5492 .transform_feedback => &.{
5493 .v1_0,
5494 },
5495 .geometry_streams => &.{
5496 .v1_0,
5497 },
5498 .storage_image_read_without_format => &.{
5499 .v1_0,
5500 },
5501 .storage_image_write_without_format => &.{
5502 .v1_0,
5503 },
5504 .multi_viewport => &.{
5505 .v1_0,
5506 },
5507 .subgroup_dispatch => &.{
5508 .v1_1,
5509 },
5510 .named_barrier => &.{
5511 .v1_1,
5512 },
5513 .pipe_storage => &.{
5514 .v1_1,
5515 },
5516 .group_non_uniform => &.{
5517 .v1_3,
5518 },
5519 .group_non_uniform_vote => &.{
5520 .v1_3,
5521 },
5522 .group_non_uniform_arithmetic => &.{
5523 .v1_3,
5524 },
5525 .group_non_uniform_ballot => &.{
5526 .v1_3,
5527 },
5528 .group_non_uniform_shuffle => &.{
5529 .v1_3,
5530 },
5531 .group_non_uniform_shuffle_relative => &.{
5532 .v1_3,
5533 },
5534 .group_non_uniform_clustered => &.{
5535 .v1_3,
5536 },
5537 .group_non_uniform_quad => &.{
5538 .v1_3,
5539 },
5540 .shader_layer => &.{
5541 .v1_5,
5542 },
5543 .shader_viewport_index => &.{
5544 .v1_5,
5545 },
5546 .uniform_decoration => &.{
5547 .v1_6,
5548 },
5549 .tile_image_color_read_access_ext => &.{
5550 .v1_0,
5551 .SPV_EXT_shader_tile_image,
5552 },
5553 .tile_image_depth_read_access_ext => &.{
5554 .v1_0,
5555 .SPV_EXT_shader_tile_image,
5556 },
5557 .tile_image_stencil_read_access_ext => &.{
5558 .v1_0,
5559 .SPV_EXT_shader_tile_image,
5560 },
5561 .float8ext => &.{
5562 .v1_0,
5563 .SPV_EXT_float8,
5564 },
5565 .float8cooperative_matrix_ext => &.{
5566 .v1_0,
5567 .SPV_EXT_float8,
5568 },
5569 .fragment_shading_rate_khr => &.{
5570 .v1_0,
5571 .SPV_KHR_fragment_shading_rate,
5572 },
5573 .subgroup_ballot_khr => &.{
5574 .v1_0,
5575 .SPV_KHR_shader_ballot,
5576 },
5577 .draw_parameters => &.{
5578 .v1_3,
5579 .SPV_KHR_shader_draw_parameters,
5580 },
5581 .workgroup_memory_explicit_layout_khr => &.{
5582 .v1_0,
5583 .SPV_KHR_workgroup_memory_explicit_layout,
5584 },
5585 .workgroup_memory_explicit_layout8bit_access_khr => &.{
5586 .v1_0,
5587 .SPV_KHR_workgroup_memory_explicit_layout,
5588 },
5589 .workgroup_memory_explicit_layout16bit_access_khr => &.{
5590 .v1_0,
5591 .SPV_KHR_workgroup_memory_explicit_layout,
5592 },
5593 .subgroup_vote_khr => &.{
5594 .v1_0,
5595 .SPV_KHR_subgroup_vote,
5596 },
5597 .storage_buffer16bit_access => &.{
5598 .v1_3,
5599 .SPV_KHR_16bit_storage,
5600 },
5601 .uniform_and_storage_buffer16bit_access => &.{
5602 .v1_3,
5603 .SPV_KHR_16bit_storage,
5604 },
5605 .storage_push_constant16 => &.{
5606 .v1_3,
5607 .SPV_KHR_16bit_storage,
5608 },
5609 .storage_input_output16 => &.{
5610 .v1_3,
5611 .SPV_KHR_16bit_storage,
5612 },
5613 .device_group => &.{
5614 .v1_3,
5615 .SPV_KHR_device_group,
5616 },
5617 .multi_view => &.{
5618 .v1_3,
5619 .SPV_KHR_multiview,
5620 },
5621 .variable_pointers_storage_buffer => &.{
5622 .v1_3,
5623 .SPV_KHR_variable_pointers,
5624 },
5625 .variable_pointers => &.{
5626 .v1_3,
5627 .SPV_KHR_variable_pointers,
5628 },
5629 .atomic_storage_ops => &.{
5630 .v1_0,
5631 .SPV_KHR_shader_atomic_counter_ops,
5632 },
5633 .sample_mask_post_depth_coverage => &.{
5634 .v1_0,
5635 .SPV_KHR_post_depth_coverage,
5636 },
5637 .storage_buffer8bit_access => &.{
5638 .v1_5,
5639 .SPV_KHR_8bit_storage,
5640 },
5641 .uniform_and_storage_buffer8bit_access => &.{
5642 .v1_5,
5643 .SPV_KHR_8bit_storage,
5644 },
5645 .storage_push_constant8 => &.{
5646 .v1_5,
5647 .SPV_KHR_8bit_storage,
5648 },
5649 .denorm_preserve => &.{
5650 .v1_4,
5651 .SPV_KHR_float_controls,
5652 },
5653 .denorm_flush_to_zero => &.{
5654 .v1_4,
5655 .SPV_KHR_float_controls,
5656 },
5657 .signed_zero_inf_nan_preserve => &.{
5658 .v1_4,
5659 .SPV_KHR_float_controls,
5660 },
5661 .ray_query_provisional_khr => &.{
5662 .v1_0,
5663 .SPV_KHR_ray_query,
5664 },
5665 .ray_query_khr => &.{
5666 .v1_0,
5667 .SPV_KHR_ray_query,
5668 },
5669 .untyped_pointers_khr => &.{
5670 .v1_0,
5671 .SPV_KHR_untyped_pointers,
5672 },
5673 .ray_traversal_primitive_culling_khr => &.{
5674 .v1_0,
5675 .SPV_KHR_ray_query,
5676 .SPV_KHR_ray_tracing,
5677 },
5678 .ray_tracing_khr => &.{
5679 .v1_0,
5680 .SPV_KHR_ray_tracing,
5681 },
5682 .stencil_export_ext => &.{
5683 .v1_0,
5684 .SPV_EXT_shader_stencil_export,
5685 },
5686 .int64image_ext => &.{
5687 .v1_0,
5688 .SPV_EXT_shader_image_int64,
5689 },
5690 .shader_clock_khr => &.{
5691 .v1_0,
5692 .SPV_KHR_shader_clock,
5693 },
5694 .quad_control_khr => &.{
5695 .v1_0,
5696 .SPV_KHR_quad_control,
5697 },
5698 .b_float16type_khr => &.{
5699 .v1_0,
5700 .SPV_KHR_bfloat16,
5701 },
5702 .b_float16dot_product_khr => &.{
5703 .v1_0,
5704 .SPV_KHR_bfloat16,
5705 },
5706 .b_float16cooperative_matrix_khr => &.{
5707 .v1_0,
5708 .SPV_KHR_bfloat16,
5709 },
5710 .abort_khr => &.{
5711 .v1_0,
5712 .SPV_KHR_abort,
5713 },
5714 .descriptor_heap_ext => &.{
5715 .v1_0,
5716 .SPV_EXT_descriptor_heap,
5717 },
5718 .constant_data_khr => &.{
5719 .v1_0,
5720 .SPV_KHR_constant_data,
5721 },
5722 .poison_freeze_khr => &.{
5723 .v1_0,
5724 .SPV_KHR_poison_freeze,
5725 },
5726 .shader_viewport_index_layer_ext => &.{
5727 .v1_0,
5728 .SPV_EXT_shader_viewport_index_layer,
5729 },
5730 .fragment_fully_covered_ext => &.{
5731 .v1_0,
5732 .SPV_EXT_fragment_fully_covered,
5733 },
5734 .mesh_shading_ext => &.{
5735 .v1_0,
5736 .SPV_EXT_mesh_shader,
5737 },
5738 .fragment_barycentric_khr => &.{
5739 .v1_0,
5740 .SPV_KHR_fragment_shader_barycentric,
5741 },
5742 .compute_derivative_group_quads_khr => &.{
5743 .v1_0,
5744 .SPV_KHR_compute_shader_derivatives,
5745 },
5746 .fragment_density_ext => &.{
5747 .v1_0,
5748 .SPV_EXT_fragment_invocation_density,
5749 },
5750 .group_non_uniform_partitioned_ext => &.{
5751 .v1_0,
5752 .SPV_EXT_shader_subgroup_partitioned,
5753 },
5754 .shader_non_uniform => &.{
5755 .v1_5,
5756 .SPV_EXT_descriptor_indexing,
5757 },
5758 .runtime_descriptor_array => &.{
5759 .v1_5,
5760 .SPV_EXT_descriptor_indexing,
5761 },
5762 .input_attachment_array_dynamic_indexing => &.{
5763 .v1_5,
5764 .SPV_EXT_descriptor_indexing,
5765 },
5766 .uniform_texel_buffer_array_dynamic_indexing => &.{
5767 .v1_5,
5768 .SPV_EXT_descriptor_indexing,
5769 },
5770 .storage_texel_buffer_array_dynamic_indexing => &.{
5771 .v1_5,
5772 .SPV_EXT_descriptor_indexing,
5773 },
5774 .uniform_buffer_array_non_uniform_indexing => &.{
5775 .v1_5,
5776 .SPV_EXT_descriptor_indexing,
5777 },
5778 .sampled_image_array_non_uniform_indexing => &.{
5779 .v1_5,
5780 .SPV_EXT_descriptor_indexing,
5781 },
5782 .storage_buffer_array_non_uniform_indexing => &.{
5783 .v1_5,
5784 .SPV_EXT_descriptor_indexing,
5785 },
5786 .storage_image_array_non_uniform_indexing => &.{
5787 .v1_5,
5788 .SPV_EXT_descriptor_indexing,
5789 },
5790 .input_attachment_array_non_uniform_indexing => &.{
5791 .v1_5,
5792 .SPV_EXT_descriptor_indexing,
5793 },
5794 .uniform_texel_buffer_array_non_uniform_indexing => &.{
5795 .v1_5,
5796 .SPV_EXT_descriptor_indexing,
5797 },
5798 .storage_texel_buffer_array_non_uniform_indexing => &.{
5799 .v1_5,
5800 .SPV_EXT_descriptor_indexing,
5801 },
5802 .ray_tracing_position_fetch_khr => &.{
5803 .v1_0,
5804 .SPV_KHR_ray_tracing_position_fetch,
5805 },
5806 .vulkan_memory_model => &.{
5807 .v1_5,
5808 .SPV_KHR_vulkan_memory_model,
5809 },
5810 .vulkan_memory_model_device_scope => &.{
5811 .v1_5,
5812 .SPV_KHR_vulkan_memory_model,
5813 },
5814 .physical_storage_buffer_addresses => &.{
5815 .v1_5,
5816 .SPV_EXT_physical_storage_buffer,
5817 .SPV_KHR_physical_storage_buffer,
5818 },
5819 .compute_derivative_group_linear_khr => &.{
5820 .v1_0,
5821 .SPV_KHR_compute_shader_derivatives,
5822 },
5823 .ray_tracing_provisional_khr => &.{
5824 .v1_0,
5825 .SPV_KHR_ray_tracing,
5826 },
5827 .fragment_shader_sample_interlock_ext => &.{
5828 .v1_0,
5829 .SPV_EXT_fragment_shader_interlock,
5830 },
5831 .fragment_shader_shading_rate_interlock_ext => &.{
5832 .v1_0,
5833 .SPV_EXT_fragment_shader_interlock,
5834 },
5835 .fragment_shader_pixel_interlock_ext => &.{
5836 .v1_0,
5837 .SPV_EXT_fragment_shader_interlock,
5838 },
5839 .demote_to_helper_invocation => &.{
5840 .v1_6,
5841 .SPV_EXT_demote_to_helper_invocation,
5842 },
5843 .ray_tracing_opacity_micromap_ext => &.{
5844 .v1_0,
5845 .SPV_EXT_opacity_micromap,
5846 },
5847 .shader_invocation_reorder_ext => &.{
5848 .v1_0,
5849 .SPV_EXT_shader_invocation_reorder,
5850 },
5851 .ray_query_position_fetch_khr => &.{
5852 .v1_0,
5853 .SPV_KHR_ray_tracing_position_fetch,
5854 },
5855 .long_vector_ext => &.{
5856 .v1_0,
5857 .SPV_EXT_long_vector,
5858 },
5859 .shader64bit_indexing_ext => &.{
5860 .v1_0,
5861 .SPV_EXT_shader_64bit_indexing,
5862 },
5863 .atomic_float32min_max_ext => &.{
5864 .v1_0,
5865 .SPV_EXT_shader_atomic_float_min_max,
5866 },
5867 .atomic_float64min_max_ext => &.{
5868 .v1_0,
5869 .SPV_EXT_shader_atomic_float_min_max,
5870 },
5871 .atomic_float16min_max_ext => &.{
5872 .v1_0,
5873 .SPV_EXT_shader_atomic_float_min_max,
5874 },
5875 .expect_assume_khr => &.{
5876 .v1_0,
5877 .SPV_KHR_expect_assume,
5878 },
5879 .dot_product_input_all => &.{
5880 .v1_6,
5881 .SPV_KHR_integer_dot_product,
5882 },
5883 .dot_product_input4x8bit => &.{
5884 .v1_6,
5885 .SPV_KHR_integer_dot_product,
5886 },
5887 .dot_product_input4x8bit_packed => &.{
5888 .v1_6,
5889 .SPV_KHR_integer_dot_product,
5890 },
5891 .dot_product => &.{
5892 .v1_6,
5893 .SPV_KHR_integer_dot_product,
5894 },
5895 .ray_cull_mask_khr => &.{
5896 .v1_0,
5897 .SPV_KHR_ray_cull_mask,
5898 },
5899 .cooperative_matrix_khr => &.{
5900 .v1_0,
5901 .SPV_KHR_cooperative_matrix,
5902 },
5903 .replicated_composites_ext => &.{
5904 .v1_0,
5905 .SPV_EXT_replicated_composites,
5906 },
5907 .bit_instructions => &.{
5908 .v1_0,
5909 .SPV_KHR_bit_instructions,
5910 },
5911 .group_non_uniform_rotate_khr => &.{
5912 .v1_0,
5913 .SPV_KHR_subgroup_rotate,
5914 },
5915 .float_controls2 => &.{
5916 .v1_0,
5917 .SPV_KHR_float_controls2,
5918 },
5919 .fmakhr => &.{
5920 .v1_0,
5921 .SPV_KHR_fma,
5922 },
5923 .atomic_float32add_ext => &.{
5924 .v1_0,
5925 .SPV_EXT_shader_atomic_float_add,
5926 },
5927 .atomic_float64add_ext => &.{
5928 .v1_0,
5929 .SPV_EXT_shader_atomic_float_add,
5930 },
5931 .opt_none_ext => &.{
5932 .v1_0,
5933 .SPV_EXT_optnone,
5934 },
5935 .atomic_float16add_ext => &.{
5936 .v1_0,
5937 .SPV_EXT_shader_atomic_float16_add,
5938 },
5939 .arithmetic_fence_ext => &.{
5940 .v1_0,
5941 .SPV_EXT_arithmetic_fence,
5942 },
5943 .group_uniform_arithmetic_khr => &.{
5944 .v1_0,
5945 .SPV_KHR_uniform_group_instructions,
5946 },
5947 };
5948 }
5949};
5950pub const RayQueryIntersection = enum(u32) {
5951 ray_query_candidate_intersection_khr = 0,
5952 ray_query_committed_intersection_khr = 1,
5953};
5954pub const RayQueryCommittedIntersectionType = enum(u32) {
5955 ray_query_committed_intersection_none_khr = 0,
5956 ray_query_committed_intersection_triangle_khr = 1,
5957 ray_query_committed_intersection_generated_khr = 2,
5958};
5959pub const RayQueryCandidateIntersectionType = enum(u32) {
5960 ray_query_candidate_intersection_triangle_khr = 0,
5961 ray_query_candidate_intersection_aabbkhr = 1,
5962};
5963pub const PackedVectorFormat = enum(u32) {
5964 packed_vector_format4x8bit = 0,
5965};
5966pub const CooperativeMatrixOperands = packed struct {
5967 matrix_a_signed_components_khr: bool = false,
5968 matrix_b_signed_components_khr: bool = false,
5969 matrix_c_signed_components_khr: bool = false,
5970 matrix_result_signed_components_khr: bool = false,
5971 saturating_accumulation_khr: bool = false,
5972 _reserved_bit_5: bool = false,
5973 _reserved_bit_6: bool = false,
5974 _reserved_bit_7: bool = false,
5975 _reserved_bit_8: bool = false,
5976 _reserved_bit_9: bool = false,
5977 _reserved_bit_10: bool = false,
5978 _reserved_bit_11: bool = false,
5979 _reserved_bit_12: bool = false,
5980 _reserved_bit_13: bool = false,
5981 _reserved_bit_14: bool = false,
5982 _reserved_bit_15: bool = false,
5983 _reserved_bit_16: bool = false,
5984 _reserved_bit_17: bool = false,
5985 _reserved_bit_18: bool = false,
5986 _reserved_bit_19: bool = false,
5987 _reserved_bit_20: bool = false,
5988 _reserved_bit_21: bool = false,
5989 _reserved_bit_22: bool = false,
5990 _reserved_bit_23: bool = false,
5991 _reserved_bit_24: bool = false,
5309 _reserved_bit_25: bool = false,5992 _reserved_bit_25: bool = false,
5310 _reserved_bit_26: bool = false,5993 _reserved_bit_26: bool = false,
5311 _reserved_bit_27: bool = false,5994 _reserved_bit_27: bool = false,
...@@ -5314,17 +5997,21 @@ pub const CooperativeMatrixReduce = packed struct {...@@ -5314,17 +5997,21 @@ pub const CooperativeMatrixReduce = packed struct {
5314 _reserved_bit_30: bool = false,5997 _reserved_bit_30: bool = false,
5315 _reserved_bit_31: bool = false,5998 _reserved_bit_31: bool = false,
5316};5999};
5317pub const TensorClampMode = enum(u32) {6000pub const CooperativeMatrixLayout = enum(u32) {
5318 undefined = 0,6001 row_major_khr = 0,
5319 constant = 1,6002 column_major_khr = 1,
5320 clamp_to_edge = 2,6003 row_blocked_interleaved_arm = 4202,
5321 repeat = 3,6004 column_blocked_interleaved_arm = 4203,
5322 repeat_mirrored = 4,
5323};6005};
5324pub const TensorAddressingOperands = packed struct {6006pub const CooperativeMatrixUse = enum(u32) {
5325 tensor_view: bool = false,6007 matrix_akhr = 0,
5326 decode_func: bool = false,6008 matrix_bkhr = 1,
5327 _reserved_bit_2: bool = false,6009 matrix_accumulator_khr = 2,
6010};
6011pub const CooperativeMatrixReduce = packed struct {
6012 row: bool = false,
6013 column: bool = false,
6014 @"2x2": bool = false,
5328 _reserved_bit_3: bool = false,6015 _reserved_bit_3: bool = false,
5329 _reserved_bit_4: bool = false,6016 _reserved_bit_4: bool = false,
5330 _reserved_bit_5: bool = false,6017 _reserved_bit_5: bool = false,
...@@ -5354,24 +6041,65 @@ pub const TensorAddressingOperands = packed struct {...@@ -5354,24 +6041,65 @@ pub const TensorAddressingOperands = packed struct {
5354 _reserved_bit_29: bool = false,6041 _reserved_bit_29: bool = false,
5355 _reserved_bit_30: bool = false,6042 _reserved_bit_30: bool = false,
5356 _reserved_bit_31: bool = false,6043 _reserved_bit_31: bool = false,
53576044};
5358 pub const Extended = struct {6045pub const TensorClampMode = enum(u32) {
5359 tensor_view: ?struct { id_ref: Id } = null,6046 undefined = 0,
5360 decode_func: ?struct { id_ref: Id } = null,6047 constant = 1,
5361 _reserved_bit_2: bool = false,6048 clamp_to_edge = 2,
5362 _reserved_bit_3: bool = false,6049 repeat = 3,
5363 _reserved_bit_4: bool = false,6050 repeat_mirrored = 4,
5364 _reserved_bit_5: bool = false,6051};
5365 _reserved_bit_6: bool = false,6052pub const TensorAddressingOperands = packed struct {
5366 _reserved_bit_7: bool = false,6053 tensor_view: bool = false,
5367 _reserved_bit_8: bool = false,6054 decode_func: bool = false,
5368 _reserved_bit_9: bool = false,6055 _reserved_bit_2: bool = false,
5369 _reserved_bit_10: bool = false,6056 _reserved_bit_3: bool = false,
5370 _reserved_bit_11: bool = false,6057 _reserved_bit_4: bool = false,
5371 _reserved_bit_12: bool = false,6058 _reserved_bit_5: bool = false,
5372 _reserved_bit_13: bool = false,6059 _reserved_bit_6: bool = false,
5373 _reserved_bit_14: bool = false,6060 _reserved_bit_7: bool = false,
5374 _reserved_bit_15: bool = false,6061 _reserved_bit_8: bool = false,
6062 _reserved_bit_9: bool = false,
6063 _reserved_bit_10: bool = false,
6064 _reserved_bit_11: bool = false,
6065 _reserved_bit_12: bool = false,
6066 _reserved_bit_13: bool = false,
6067 _reserved_bit_14: bool = false,
6068 _reserved_bit_15: bool = false,
6069 _reserved_bit_16: bool = false,
6070 _reserved_bit_17: bool = false,
6071 _reserved_bit_18: bool = false,
6072 _reserved_bit_19: bool = false,
6073 _reserved_bit_20: bool = false,
6074 _reserved_bit_21: bool = false,
6075 _reserved_bit_22: bool = false,
6076 _reserved_bit_23: bool = false,
6077 _reserved_bit_24: bool = false,
6078 _reserved_bit_25: bool = false,
6079 _reserved_bit_26: bool = false,
6080 _reserved_bit_27: bool = false,
6081 _reserved_bit_28: bool = false,
6082 _reserved_bit_29: bool = false,
6083 _reserved_bit_30: bool = false,
6084 _reserved_bit_31: bool = false,
6085
6086 pub const Extended = struct {
6087 tensor_view: ?struct { id_ref: Id } = null,
6088 decode_func: ?struct { id_ref: Id } = null,
6089 _reserved_bit_2: bool = false,
6090 _reserved_bit_3: bool = false,
6091 _reserved_bit_4: bool = false,
6092 _reserved_bit_5: bool = false,
6093 _reserved_bit_6: bool = false,
6094 _reserved_bit_7: bool = false,
6095 _reserved_bit_8: bool = false,
6096 _reserved_bit_9: bool = false,
6097 _reserved_bit_10: bool = false,
6098 _reserved_bit_11: bool = false,
6099 _reserved_bit_12: bool = false,
6100 _reserved_bit_13: bool = false,
6101 _reserved_bit_14: bool = false,
6102 _reserved_bit_15: bool = false,
5375 _reserved_bit_16: bool = false,6103 _reserved_bit_16: bool = false,
5376 _reserved_bit_17: bool = false,6104 _reserved_bit_17: bool = false,
5377 _reserved_bit_18: bool = false,6105 _reserved_bit_18: bool = false,
...@@ -5391,8 +6119,8 @@ pub const TensorAddressingOperands = packed struct {...@@ -5391,8 +6119,8 @@ pub const TensorAddressingOperands = packed struct {
5391 };6119 };
5392};6120};
5393pub const InitializationModeQualifier = enum(u32) {6121pub const InitializationModeQualifier = enum(u32) {
5394 init_on_device_reprogram_intel = 0,6122 init_on_device_reprogram_altera = 0,
5395 init_on_device_reset_intel = 1,6123 init_on_device_reset_altera = 1,
5396};6124};
5397pub const LoadCacheControl = enum(u32) {6125pub const LoadCacheControl = enum(u32) {
5398 uncached_intel = 0,6126 uncached_intel = 0,
...@@ -5543,8 +6271,8 @@ pub const TensorOperands = packed struct {...@@ -5543,8 +6271,8 @@ pub const TensorOperands = packed struct {
5543};6271};
5544pub const InstructionSet = enum {6272pub const InstructionSet = enum {
5545 core,6273 core,
5546 @"GLSL.std.450",
5547 @"OpenCL.std",6274 @"OpenCL.std",
6275 @"GLSL.std.450",
5548 zig,6276 zig,
55496277
5550 pub fn instructions(self: InstructionSet) []const Instruction {6278 pub fn instructions(self: InstructionSet) []const Instruction {
...@@ -5613,482 +6341,890 @@ pub const InstructionSet = enum {...@@ -5613,482 +6341,890 @@ pub const InstructionSet = enum {
5613 },6341 },
5614 },6342 },
5615 .{6343 .{
5616 .name = "OpLine",6344 .name = "OpLine",
5617 .opcode = 8,6345 .opcode = 8,
6346 .operands = &.{
6347 .{ .kind = .id_ref, .quantifier = .required },
6348 .{ .kind = .literal_integer, .quantifier = .required },
6349 .{ .kind = .literal_integer, .quantifier = .required },
6350 },
6351 },
6352 .{
6353 .name = "OpExtension",
6354 .opcode = 10,
6355 .operands = &.{
6356 .{ .kind = .literal_string, .quantifier = .required },
6357 },
6358 },
6359 .{
6360 .name = "OpExtInstImport",
6361 .opcode = 11,
6362 .operands = &.{
6363 .{ .kind = .id_result, .quantifier = .required },
6364 .{ .kind = .literal_string, .quantifier = .required },
6365 },
6366 },
6367 .{
6368 .name = "OpExtInst",
6369 .opcode = 12,
6370 .operands = &.{
6371 .{ .kind = .id_result_type, .quantifier = .required },
6372 .{ .kind = .id_result, .quantifier = .required },
6373 .{ .kind = .id_ref, .quantifier = .required },
6374 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },
6375 .{ .kind = .id_ref, .quantifier = .variadic },
6376 },
6377 },
6378 .{
6379 .name = "OpMemoryModel",
6380 .opcode = 14,
6381 .operands = &.{
6382 .{ .kind = .addressing_model, .quantifier = .required },
6383 .{ .kind = .memory_model, .quantifier = .required },
6384 },
6385 },
6386 .{
6387 .name = "OpEntryPoint",
6388 .opcode = 15,
6389 .operands = &.{
6390 .{ .kind = .execution_model, .quantifier = .required },
6391 .{ .kind = .id_ref, .quantifier = .required },
6392 .{ .kind = .literal_string, .quantifier = .required },
6393 .{ .kind = .id_ref, .quantifier = .variadic },
6394 },
6395 },
6396 .{
6397 .name = "OpExecutionMode",
6398 .opcode = 16,
6399 .operands = &.{
6400 .{ .kind = .id_ref, .quantifier = .required },
6401 .{ .kind = .execution_mode, .quantifier = .required },
6402 },
6403 },
6404 .{
6405 .name = "OpCapability",
6406 .opcode = 17,
6407 .operands = &.{
6408 .{ .kind = .capability, .quantifier = .required },
6409 },
6410 },
6411 .{
6412 .name = "OpTypeVoid",
6413 .opcode = 19,
6414 .operands = &.{
6415 .{ .kind = .id_result, .quantifier = .required },
6416 },
6417 },
6418 .{
6419 .name = "OpTypeBool",
6420 .opcode = 20,
6421 .operands = &.{
6422 .{ .kind = .id_result, .quantifier = .required },
6423 },
6424 },
6425 .{
6426 .name = "OpTypeInt",
6427 .opcode = 21,
6428 .operands = &.{
6429 .{ .kind = .id_result, .quantifier = .required },
6430 .{ .kind = .literal_integer, .quantifier = .required },
6431 .{ .kind = .literal_integer, .quantifier = .required },
6432 },
6433 },
6434 .{
6435 .name = "OpTypeFloat",
6436 .opcode = 22,
6437 .operands = &.{
6438 .{ .kind = .id_result, .quantifier = .required },
6439 .{ .kind = .literal_integer, .quantifier = .required },
6440 .{ .kind = .fp_encoding, .quantifier = .optional },
6441 },
6442 },
6443 .{
6444 .name = "OpTypeVector",
6445 .opcode = 23,
6446 .operands = &.{
6447 .{ .kind = .id_result, .quantifier = .required },
6448 .{ .kind = .id_ref, .quantifier = .required },
6449 .{ .kind = .literal_integer, .quantifier = .required },
6450 },
6451 },
6452 .{
6453 .name = "OpTypeMatrix",
6454 .opcode = 24,
6455 .operands = &.{
6456 .{ .kind = .id_result, .quantifier = .required },
6457 .{ .kind = .id_ref, .quantifier = .required },
6458 .{ .kind = .literal_integer, .quantifier = .required },
6459 },
6460 },
6461 .{
6462 .name = "OpTypeImage",
6463 .opcode = 25,
6464 .operands = &.{
6465 .{ .kind = .id_result, .quantifier = .required },
6466 .{ .kind = .id_ref, .quantifier = .required },
6467 .{ .kind = .dim, .quantifier = .required },
6468 .{ .kind = .literal_integer, .quantifier = .required },
6469 .{ .kind = .literal_integer, .quantifier = .required },
6470 .{ .kind = .literal_integer, .quantifier = .required },
6471 .{ .kind = .literal_integer, .quantifier = .required },
6472 .{ .kind = .image_format, .quantifier = .required },
6473 .{ .kind = .access_qualifier, .quantifier = .optional },
6474 },
6475 },
6476 .{
6477 .name = "OpTypeSampler",
6478 .opcode = 26,
6479 .operands = &.{
6480 .{ .kind = .id_result, .quantifier = .required },
6481 },
6482 },
6483 .{
6484 .name = "OpTypeSampledImage",
6485 .opcode = 27,
6486 .operands = &.{
6487 .{ .kind = .id_result, .quantifier = .required },
6488 .{ .kind = .id_ref, .quantifier = .required },
6489 },
6490 },
6491 .{
6492 .name = "OpTypeArray",
6493 .opcode = 28,
6494 .operands = &.{
6495 .{ .kind = .id_result, .quantifier = .required },
6496 .{ .kind = .id_ref, .quantifier = .required },
6497 .{ .kind = .id_ref, .quantifier = .required },
6498 },
6499 },
6500 .{
6501 .name = "OpTypeRuntimeArray",
6502 .opcode = 29,
6503 .operands = &.{
6504 .{ .kind = .id_result, .quantifier = .required },
6505 .{ .kind = .id_ref, .quantifier = .required },
6506 },
6507 },
6508 .{
6509 .name = "OpTypeStruct",
6510 .opcode = 30,
6511 .operands = &.{
6512 .{ .kind = .id_result, .quantifier = .required },
6513 .{ .kind = .id_ref, .quantifier = .variadic },
6514 },
6515 },
6516 .{
6517 .name = "OpTypeOpaque",
6518 .opcode = 31,
6519 .operands = &.{
6520 .{ .kind = .id_result, .quantifier = .required },
6521 .{ .kind = .literal_string, .quantifier = .required },
6522 },
6523 },
6524 .{
6525 .name = "OpTypePointer",
6526 .opcode = 32,
6527 .operands = &.{
6528 .{ .kind = .id_result, .quantifier = .required },
6529 .{ .kind = .storage_class, .quantifier = .required },
6530 .{ .kind = .id_ref, .quantifier = .required },
6531 },
6532 },
6533 .{
6534 .name = "OpTypeFunction",
6535 .opcode = 33,
6536 .operands = &.{
6537 .{ .kind = .id_result, .quantifier = .required },
6538 .{ .kind = .id_ref, .quantifier = .required },
6539 .{ .kind = .id_ref, .quantifier = .variadic },
6540 },
6541 },
6542 .{
6543 .name = "OpTypeEvent",
6544 .opcode = 34,
6545 .operands = &.{
6546 .{ .kind = .id_result, .quantifier = .required },
6547 },
6548 },
6549 .{
6550 .name = "OpTypeDeviceEvent",
6551 .opcode = 35,
6552 .operands = &.{
6553 .{ .kind = .id_result, .quantifier = .required },
6554 },
6555 },
6556 .{
6557 .name = "OpTypeReserveId",
6558 .opcode = 36,
6559 .operands = &.{
6560 .{ .kind = .id_result, .quantifier = .required },
6561 },
6562 },
6563 .{
6564 .name = "OpTypeQueue",
6565 .opcode = 37,
6566 .operands = &.{
6567 .{ .kind = .id_result, .quantifier = .required },
6568 },
6569 },
6570 .{
6571 .name = "OpTypePipe",
6572 .opcode = 38,
6573 .operands = &.{
6574 .{ .kind = .id_result, .quantifier = .required },
6575 .{ .kind = .access_qualifier, .quantifier = .required },
6576 },
6577 },
6578 .{
6579 .name = "OpTypeForwardPointer",
6580 .opcode = 39,
6581 .operands = &.{
6582 .{ .kind = .id_ref, .quantifier = .required },
6583 .{ .kind = .storage_class, .quantifier = .required },
6584 },
6585 },
6586 .{
6587 .name = "OpConstantTrue",
6588 .opcode = 41,
6589 .operands = &.{
6590 .{ .kind = .id_result_type, .quantifier = .required },
6591 .{ .kind = .id_result, .quantifier = .required },
6592 },
6593 },
6594 .{
6595 .name = "OpConstantFalse",
6596 .opcode = 42,
6597 .operands = &.{
6598 .{ .kind = .id_result_type, .quantifier = .required },
6599 .{ .kind = .id_result, .quantifier = .required },
6600 },
6601 },
6602 .{
6603 .name = "OpConstant",
6604 .opcode = 43,
6605 .operands = &.{
6606 .{ .kind = .id_result_type, .quantifier = .required },
6607 .{ .kind = .id_result, .quantifier = .required },
6608 .{ .kind = .literal_context_dependent_number, .quantifier = .required },
6609 },
6610 },
6611 .{
6612 .name = "OpConstantComposite",
6613 .opcode = 44,
6614 .operands = &.{
6615 .{ .kind = .id_result_type, .quantifier = .required },
6616 .{ .kind = .id_result, .quantifier = .required },
6617 .{ .kind = .id_ref, .quantifier = .variadic },
6618 },
6619 },
6620 .{
6621 .name = "OpConstantSampler",
6622 .opcode = 45,
6623 .operands = &.{
6624 .{ .kind = .id_result_type, .quantifier = .required },
6625 .{ .kind = .id_result, .quantifier = .required },
6626 .{ .kind = .sampler_addressing_mode, .quantifier = .required },
6627 .{ .kind = .literal_integer, .quantifier = .required },
6628 .{ .kind = .sampler_filter_mode, .quantifier = .required },
6629 },
6630 },
6631 .{
6632 .name = "OpConstantNull",
6633 .opcode = 46,
6634 .operands = &.{
6635 .{ .kind = .id_result_type, .quantifier = .required },
6636 .{ .kind = .id_result, .quantifier = .required },
6637 },
6638 },
6639 .{
6640 .name = "OpSpecConstantTrue",
6641 .opcode = 48,
6642 .operands = &.{
6643 .{ .kind = .id_result_type, .quantifier = .required },
6644 .{ .kind = .id_result, .quantifier = .required },
6645 },
6646 },
6647 .{
6648 .name = "OpSpecConstantFalse",
6649 .opcode = 49,
6650 .operands = &.{
6651 .{ .kind = .id_result_type, .quantifier = .required },
6652 .{ .kind = .id_result, .quantifier = .required },
6653 },
6654 },
6655 .{
6656 .name = "OpSpecConstant",
6657 .opcode = 50,
6658 .operands = &.{
6659 .{ .kind = .id_result_type, .quantifier = .required },
6660 .{ .kind = .id_result, .quantifier = .required },
6661 .{ .kind = .literal_context_dependent_number, .quantifier = .required },
6662 },
6663 },
6664 .{
6665 .name = "OpSpecConstantComposite",
6666 .opcode = 51,
6667 .operands = &.{
6668 .{ .kind = .id_result_type, .quantifier = .required },
6669 .{ .kind = .id_result, .quantifier = .required },
6670 .{ .kind = .id_ref, .quantifier = .variadic },
6671 },
6672 },
6673 .{
6674 .name = "OpSpecConstantOp",
6675 .opcode = 52,
6676 .operands = &.{
6677 .{ .kind = .id_result_type, .quantifier = .required },
6678 .{ .kind = .id_result, .quantifier = .required },
6679 .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required },
6680 },
6681 },
6682 .{
6683 .name = "OpFunction",
6684 .opcode = 54,
6685 .operands = &.{
6686 .{ .kind = .id_result_type, .quantifier = .required },
6687 .{ .kind = .id_result, .quantifier = .required },
6688 .{ .kind = .function_control, .quantifier = .required },
6689 .{ .kind = .id_ref, .quantifier = .required },
6690 },
6691 },
6692 .{
6693 .name = "OpFunctionParameter",
6694 .opcode = 55,
6695 .operands = &.{
6696 .{ .kind = .id_result_type, .quantifier = .required },
6697 .{ .kind = .id_result, .quantifier = .required },
6698 },
6699 },
6700 .{
6701 .name = "OpFunctionEnd",
6702 .opcode = 56,
6703 .operands = &.{},
6704 },
6705 .{
6706 .name = "OpFunctionCall",
6707 .opcode = 57,
5618 .operands = &.{6708 .operands = &.{
6709 .{ .kind = .id_result_type, .quantifier = .required },
6710 .{ .kind = .id_result, .quantifier = .required },
5619 .{ .kind = .id_ref, .quantifier = .required },6711 .{ .kind = .id_ref, .quantifier = .required },
5620 .{ .kind = .literal_integer, .quantifier = .required },6712 .{ .kind = .id_ref, .quantifier = .variadic },
5621 .{ .kind = .literal_integer, .quantifier = .required },
5622 },6713 },
5623 },6714 },
5624 .{6715 .{
5625 .name = "OpExtension",6716 .name = "OpVariable",
5626 .opcode = 10,6717 .opcode = 59,
5627 .operands = &.{6718 .operands = &.{
5628 .{ .kind = .literal_string, .quantifier = .required },6719 .{ .kind = .id_result_type, .quantifier = .required },
6720 .{ .kind = .id_result, .quantifier = .required },
6721 .{ .kind = .storage_class, .quantifier = .required },
6722 .{ .kind = .id_ref, .quantifier = .optional },
5629 },6723 },
5630 },6724 },
5631 .{6725 .{
5632 .name = "OpExtInstImport",6726 .name = "OpImageTexelPointer",
5633 .opcode = 11,6727 .opcode = 60,
5634 .operands = &.{6728 .operands = &.{
6729 .{ .kind = .id_result_type, .quantifier = .required },
5635 .{ .kind = .id_result, .quantifier = .required },6730 .{ .kind = .id_result, .quantifier = .required },
5636 .{ .kind = .literal_string, .quantifier = .required },6731 .{ .kind = .id_ref, .quantifier = .required },
6732 .{ .kind = .id_ref, .quantifier = .required },
6733 .{ .kind = .id_ref, .quantifier = .required },
5637 },6734 },
5638 },6735 },
5639 .{6736 .{
5640 .name = "OpExtInst",6737 .name = "OpLoad",
5641 .opcode = 12,6738 .opcode = 61,
5642 .operands = &.{6739 .operands = &.{
5643 .{ .kind = .id_result_type, .quantifier = .required },6740 .{ .kind = .id_result_type, .quantifier = .required },
5644 .{ .kind = .id_result, .quantifier = .required },6741 .{ .kind = .id_result, .quantifier = .required },
5645 .{ .kind = .id_ref, .quantifier = .required },6742 .{ .kind = .id_ref, .quantifier = .required },
5646 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },6743 .{ .kind = .memory_access, .quantifier = .optional },
5647 .{ .kind = .id_ref, .quantifier = .variadic },
5648 },6744 },
5649 },6745 },
5650 .{6746 .{
5651 .name = "OpMemoryModel",6747 .name = "OpStore",
5652 .opcode = 14,6748 .opcode = 62,
5653 .operands = &.{6749 .operands = &.{
5654 .{ .kind = .addressing_model, .quantifier = .required },6750 .{ .kind = .id_ref, .quantifier = .required },
5655 .{ .kind = .memory_model, .quantifier = .required },6751 .{ .kind = .id_ref, .quantifier = .required },
6752 .{ .kind = .memory_access, .quantifier = .optional },
5656 },6753 },
5657 },6754 },
5658 .{6755 .{
5659 .name = "OpEntryPoint",6756 .name = "OpCopyMemory",
5660 .opcode = 15,6757 .opcode = 63,
5661 .operands = &.{6758 .operands = &.{
5662 .{ .kind = .execution_model, .quantifier = .required },
5663 .{ .kind = .id_ref, .quantifier = .required },6759 .{ .kind = .id_ref, .quantifier = .required },
5664 .{ .kind = .literal_string, .quantifier = .required },6760 .{ .kind = .id_ref, .quantifier = .required },
5665 .{ .kind = .id_ref, .quantifier = .variadic },6761 .{ .kind = .memory_access, .quantifier = .optional },
6762 .{ .kind = .memory_access, .quantifier = .optional },
5666 },6763 },
5667 },6764 },
5668 .{6765 .{
5669 .name = "OpExecutionMode",6766 .name = "OpCopyMemorySized",
5670 .opcode = 16,6767 .opcode = 64,
5671 .operands = &.{6768 .operands = &.{
5672 .{ .kind = .id_ref, .quantifier = .required },6769 .{ .kind = .id_ref, .quantifier = .required },
5673 .{ .kind = .execution_mode, .quantifier = .required },6770 .{ .kind = .id_ref, .quantifier = .required },
6771 .{ .kind = .id_ref, .quantifier = .required },
6772 .{ .kind = .memory_access, .quantifier = .optional },
6773 .{ .kind = .memory_access, .quantifier = .optional },
5674 },6774 },
5675 },6775 },
5676 .{6776 .{
5677 .name = "OpCapability",6777 .name = "OpAccessChain",
5678 .opcode = 17,6778 .opcode = 65,
5679 .operands = &.{6779 .operands = &.{
5680 .{ .kind = .capability, .quantifier = .required },6780 .{ .kind = .id_result_type, .quantifier = .required },
6781 .{ .kind = .id_result, .quantifier = .required },
6782 .{ .kind = .id_ref, .quantifier = .required },
6783 .{ .kind = .id_ref, .quantifier = .variadic },
5681 },6784 },
5682 },6785 },
5683 .{6786 .{
5684 .name = "OpTypeVoid",6787 .name = "OpInBoundsAccessChain",
5685 .opcode = 19,6788 .opcode = 66,
5686 .operands = &.{6789 .operands = &.{
6790 .{ .kind = .id_result_type, .quantifier = .required },
5687 .{ .kind = .id_result, .quantifier = .required },6791 .{ .kind = .id_result, .quantifier = .required },
6792 .{ .kind = .id_ref, .quantifier = .required },
6793 .{ .kind = .id_ref, .quantifier = .variadic },
5688 },6794 },
5689 },6795 },
5690 .{6796 .{
5691 .name = "OpTypeBool",6797 .name = "OpPtrAccessChain",
5692 .opcode = 20,6798 .opcode = 67,
5693 .operands = &.{6799 .operands = &.{
6800 .{ .kind = .id_result_type, .quantifier = .required },
5694 .{ .kind = .id_result, .quantifier = .required },6801 .{ .kind = .id_result, .quantifier = .required },
6802 .{ .kind = .id_ref, .quantifier = .required },
6803 .{ .kind = .id_ref, .quantifier = .required },
6804 .{ .kind = .id_ref, .quantifier = .variadic },
5695 },6805 },
5696 },6806 },
5697 .{6807 .{
5698 .name = "OpTypeInt",6808 .name = "OpArrayLength",
5699 .opcode = 21,6809 .opcode = 68,
5700 .operands = &.{6810 .operands = &.{
6811 .{ .kind = .id_result_type, .quantifier = .required },
5701 .{ .kind = .id_result, .quantifier = .required },6812 .{ .kind = .id_result, .quantifier = .required },
5702 .{ .kind = .literal_integer, .quantifier = .required },6813 .{ .kind = .id_ref, .quantifier = .required },
5703 .{ .kind = .literal_integer, .quantifier = .required },6814 .{ .kind = .literal_integer, .quantifier = .required },
5704 },6815 },
5705 },6816 },
5706 .{6817 .{
5707 .name = "OpTypeFloat",6818 .name = "OpGenericPtrMemSemantics",
5708 .opcode = 22,6819 .opcode = 69,
5709 .operands = &.{6820 .operands = &.{
6821 .{ .kind = .id_result_type, .quantifier = .required },
5710 .{ .kind = .id_result, .quantifier = .required },6822 .{ .kind = .id_result, .quantifier = .required },
5711 .{ .kind = .literal_integer, .quantifier = .required },6823 .{ .kind = .id_ref, .quantifier = .required },
5712 .{ .kind = .fp_encoding, .quantifier = .optional },
5713 },6824 },
5714 },6825 },
5715 .{6826 .{
5716 .name = "OpTypeVector",6827 .name = "OpInBoundsPtrAccessChain",
5717 .opcode = 23,6828 .opcode = 70,
5718 .operands = &.{6829 .operands = &.{
6830 .{ .kind = .id_result_type, .quantifier = .required },
5719 .{ .kind = .id_result, .quantifier = .required },6831 .{ .kind = .id_result, .quantifier = .required },
5720 .{ .kind = .id_ref, .quantifier = .required },6832 .{ .kind = .id_ref, .quantifier = .required },
5721 .{ .kind = .literal_integer, .quantifier = .required },6833 .{ .kind = .id_ref, .quantifier = .required },
6834 .{ .kind = .id_ref, .quantifier = .variadic },
5722 },6835 },
5723 },6836 },
5724 .{6837 .{
5725 .name = "OpTypeMatrix",6838 .name = "OpDecorate",
5726 .opcode = 24,6839 .opcode = 71,
5727 .operands = &.{6840 .operands = &.{
5728 .{ .kind = .id_result, .quantifier = .required },
5729 .{ .kind = .id_ref, .quantifier = .required },6841 .{ .kind = .id_ref, .quantifier = .required },
5730 .{ .kind = .literal_integer, .quantifier = .required },6842 .{ .kind = .decoration, .quantifier = .required },
5731 },6843 },
5732 },6844 },
5733 .{6845 .{
5734 .name = "OpTypeImage",6846 .name = "OpMemberDecorate",
5735 .opcode = 25,6847 .opcode = 72,
5736 .operands = &.{6848 .operands = &.{
5737 .{ .kind = .id_result, .quantifier = .required },
5738 .{ .kind = .id_ref, .quantifier = .required },6849 .{ .kind = .id_ref, .quantifier = .required },
5739 .{ .kind = .dim, .quantifier = .required },
5740 .{ .kind = .literal_integer, .quantifier = .required },6850 .{ .kind = .literal_integer, .quantifier = .required },
5741 .{ .kind = .literal_integer, .quantifier = .required },6851 .{ .kind = .decoration, .quantifier = .required },
5742 .{ .kind = .literal_integer, .quantifier = .required },
5743 .{ .kind = .literal_integer, .quantifier = .required },
5744 .{ .kind = .image_format, .quantifier = .required },
5745 .{ .kind = .access_qualifier, .quantifier = .optional },
5746 },6852 },
5747 },6853 },
5748 .{6854 .{
5749 .name = "OpTypeSampler",6855 .name = "OpDecorationGroup",
5750 .opcode = 26,6856 .opcode = 73,
5751 .operands = &.{6857 .operands = &.{
5752 .{ .kind = .id_result, .quantifier = .required },6858 .{ .kind = .id_result, .quantifier = .required },
5753 },6859 },
5754 },6860 },
5755 .{6861 .{
5756 .name = "OpTypeSampledImage",6862 .name = "OpGroupDecorate",
5757 .opcode = 27,6863 .opcode = 74,
5758 .operands = &.{6864 .operands = &.{
5759 .{ .kind = .id_result, .quantifier = .required },
5760 .{ .kind = .id_ref, .quantifier = .required },6865 .{ .kind = .id_ref, .quantifier = .required },
6866 .{ .kind = .id_ref, .quantifier = .variadic },
5761 },6867 },
5762 },6868 },
5763 .{6869 .{
5764 .name = "OpTypeArray",6870 .name = "OpGroupMemberDecorate",
5765 .opcode = 28,6871 .opcode = 75,
5766 .operands = &.{6872 .operands = &.{
5767 .{ .kind = .id_result, .quantifier = .required },
5768 .{ .kind = .id_ref, .quantifier = .required },
5769 .{ .kind = .id_ref, .quantifier = .required },6873 .{ .kind = .id_ref, .quantifier = .required },
6874 .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic },
5770 },6875 },
5771 },6876 },
5772 .{6877 .{
5773 .name = "OpTypeRuntimeArray",6878 .name = "OpVectorExtractDynamic",
5774 .opcode = 29,6879 .opcode = 77,
5775 .operands = &.{6880 .operands = &.{
6881 .{ .kind = .id_result_type, .quantifier = .required },
5776 .{ .kind = .id_result, .quantifier = .required },6882 .{ .kind = .id_result, .quantifier = .required },
5777 .{ .kind = .id_ref, .quantifier = .required },6883 .{ .kind = .id_ref, .quantifier = .required },
6884 .{ .kind = .id_ref, .quantifier = .required },
5778 },6885 },
5779 },6886 },
5780 .{6887 .{
5781 .name = "OpTypeStruct",6888 .name = "OpVectorInsertDynamic",
5782 .opcode = 30,6889 .opcode = 78,
5783 .operands = &.{
5784 .{ .kind = .id_result, .quantifier = .required },
5785 .{ .kind = .id_ref, .quantifier = .variadic },
5786 },
5787 },
5788 .{
5789 .name = "OpTypeOpaque",
5790 .opcode = 31,
5791 .operands = &.{6890 .operands = &.{
6891 .{ .kind = .id_result_type, .quantifier = .required },
5792 .{ .kind = .id_result, .quantifier = .required },6892 .{ .kind = .id_result, .quantifier = .required },
5793 .{ .kind = .literal_string, .quantifier = .required },6893 .{ .kind = .id_ref, .quantifier = .required },
6894 .{ .kind = .id_ref, .quantifier = .required },
6895 .{ .kind = .id_ref, .quantifier = .required },
5794 },6896 },
5795 },6897 },
5796 .{6898 .{
5797 .name = "OpTypePointer",6899 .name = "OpVectorShuffle",
5798 .opcode = 32,6900 .opcode = 79,
5799 .operands = &.{6901 .operands = &.{
6902 .{ .kind = .id_result_type, .quantifier = .required },
5800 .{ .kind = .id_result, .quantifier = .required },6903 .{ .kind = .id_result, .quantifier = .required },
5801 .{ .kind = .storage_class, .quantifier = .required },
5802 .{ .kind = .id_ref, .quantifier = .required },6904 .{ .kind = .id_ref, .quantifier = .required },
6905 .{ .kind = .id_ref, .quantifier = .required },
6906 .{ .kind = .literal_integer, .quantifier = .variadic },
5803 },6907 },
5804 },6908 },
5805 .{6909 .{
5806 .name = "OpTypeFunction",6910 .name = "OpCompositeConstruct",
5807 .opcode = 33,6911 .opcode = 80,
5808 .operands = &.{6912 .operands = &.{
6913 .{ .kind = .id_result_type, .quantifier = .required },
5809 .{ .kind = .id_result, .quantifier = .required },6914 .{ .kind = .id_result, .quantifier = .required },
5810 .{ .kind = .id_ref, .quantifier = .required },
5811 .{ .kind = .id_ref, .quantifier = .variadic },6915 .{ .kind = .id_ref, .quantifier = .variadic },
5812 },6916 },
5813 },6917 },
5814 .{6918 .{
5815 .name = "OpTypeEvent",6919 .name = "OpCompositeExtract",
5816 .opcode = 34,6920 .opcode = 81,
5817 .operands = &.{6921 .operands = &.{
6922 .{ .kind = .id_result_type, .quantifier = .required },
5818 .{ .kind = .id_result, .quantifier = .required },6923 .{ .kind = .id_result, .quantifier = .required },
6924 .{ .kind = .id_ref, .quantifier = .required },
6925 .{ .kind = .literal_integer, .quantifier = .variadic },
5819 },6926 },
5820 },6927 },
5821 .{6928 .{
5822 .name = "OpTypeDeviceEvent",6929 .name = "OpCompositeInsert",
5823 .opcode = 35,6930 .opcode = 82,
5824 .operands = &.{6931 .operands = &.{
6932 .{ .kind = .id_result_type, .quantifier = .required },
5825 .{ .kind = .id_result, .quantifier = .required },6933 .{ .kind = .id_result, .quantifier = .required },
6934 .{ .kind = .id_ref, .quantifier = .required },
6935 .{ .kind = .id_ref, .quantifier = .required },
6936 .{ .kind = .literal_integer, .quantifier = .variadic },
5826 },6937 },
5827 },6938 },
5828 .{6939 .{
5829 .name = "OpTypeReserveId",6940 .name = "OpCopyObject",
5830 .opcode = 36,6941 .opcode = 83,
5831 .operands = &.{6942 .operands = &.{
6943 .{ .kind = .id_result_type, .quantifier = .required },
5832 .{ .kind = .id_result, .quantifier = .required },6944 .{ .kind = .id_result, .quantifier = .required },
6945 .{ .kind = .id_ref, .quantifier = .required },
5833 },6946 },
5834 },6947 },
5835 .{6948 .{
5836 .name = "OpTypeQueue",6949 .name = "OpTranspose",
5837 .opcode = 37,6950 .opcode = 84,
5838 .operands = &.{6951 .operands = &.{
6952 .{ .kind = .id_result_type, .quantifier = .required },
5839 .{ .kind = .id_result, .quantifier = .required },6953 .{ .kind = .id_result, .quantifier = .required },
6954 .{ .kind = .id_ref, .quantifier = .required },
5840 },6955 },
5841 },6956 },
5842 .{6957 .{
5843 .name = "OpTypePipe",6958 .name = "OpSampledImage",
5844 .opcode = 38,6959 .opcode = 86,
5845 .operands = &.{6960 .operands = &.{
6961 .{ .kind = .id_result_type, .quantifier = .required },
5846 .{ .kind = .id_result, .quantifier = .required },6962 .{ .kind = .id_result, .quantifier = .required },
5847 .{ .kind = .access_qualifier, .quantifier = .required },6963 .{ .kind = .id_ref, .quantifier = .required },
6964 .{ .kind = .id_ref, .quantifier = .required },
5848 },6965 },
5849 },6966 },
5850 .{6967 .{
5851 .name = "OpTypeForwardPointer",6968 .name = "OpImageSampleImplicitLod",
5852 .opcode = 39,6969 .opcode = 87,
5853 .operands = &.{6970 .operands = &.{
6971 .{ .kind = .id_result_type, .quantifier = .required },
6972 .{ .kind = .id_result, .quantifier = .required },
5854 .{ .kind = .id_ref, .quantifier = .required },6973 .{ .kind = .id_ref, .quantifier = .required },
5855 .{ .kind = .storage_class, .quantifier = .required },6974 .{ .kind = .id_ref, .quantifier = .required },
6975 .{ .kind = .image_operands, .quantifier = .optional },
5856 },6976 },
5857 },6977 },
5858 .{6978 .{
5859 .name = "OpConstantTrue",6979 .name = "OpImageSampleExplicitLod",
5860 .opcode = 41,6980 .opcode = 88,
5861 .operands = &.{6981 .operands = &.{
5862 .{ .kind = .id_result_type, .quantifier = .required },6982 .{ .kind = .id_result_type, .quantifier = .required },
5863 .{ .kind = .id_result, .quantifier = .required },6983 .{ .kind = .id_result, .quantifier = .required },
6984 .{ .kind = .id_ref, .quantifier = .required },
6985 .{ .kind = .id_ref, .quantifier = .required },
6986 .{ .kind = .image_operands, .quantifier = .required },
5864 },6987 },
5865 },6988 },
5866 .{6989 .{
5867 .name = "OpConstantFalse",6990 .name = "OpImageSampleDrefImplicitLod",
5868 .opcode = 42,6991 .opcode = 89,
5869 .operands = &.{6992 .operands = &.{
5870 .{ .kind = .id_result_type, .quantifier = .required },6993 .{ .kind = .id_result_type, .quantifier = .required },
5871 .{ .kind = .id_result, .quantifier = .required },6994 .{ .kind = .id_result, .quantifier = .required },
6995 .{ .kind = .id_ref, .quantifier = .required },
6996 .{ .kind = .id_ref, .quantifier = .required },
6997 .{ .kind = .id_ref, .quantifier = .required },
6998 .{ .kind = .image_operands, .quantifier = .optional },
5872 },6999 },
5873 },7000 },
5874 .{7001 .{
5875 .name = "OpConstant",7002 .name = "OpImageSampleDrefExplicitLod",
5876 .opcode = 43,7003 .opcode = 90,
5877 .operands = &.{7004 .operands = &.{
5878 .{ .kind = .id_result_type, .quantifier = .required },7005 .{ .kind = .id_result_type, .quantifier = .required },
5879 .{ .kind = .id_result, .quantifier = .required },7006 .{ .kind = .id_result, .quantifier = .required },
5880 .{ .kind = .literal_context_dependent_number, .quantifier = .required },7007 .{ .kind = .id_ref, .quantifier = .required },
7008 .{ .kind = .id_ref, .quantifier = .required },
7009 .{ .kind = .id_ref, .quantifier = .required },
7010 .{ .kind = .image_operands, .quantifier = .required },
5881 },7011 },
5882 },7012 },
5883 .{7013 .{
5884 .name = "OpConstantComposite",7014 .name = "OpImageSampleProjImplicitLod",
5885 .opcode = 44,7015 .opcode = 91,
5886 .operands = &.{7016 .operands = &.{
5887 .{ .kind = .id_result_type, .quantifier = .required },7017 .{ .kind = .id_result_type, .quantifier = .required },
5888 .{ .kind = .id_result, .quantifier = .required },7018 .{ .kind = .id_result, .quantifier = .required },
5889 .{ .kind = .id_ref, .quantifier = .variadic },7019 .{ .kind = .id_ref, .quantifier = .required },
7020 .{ .kind = .id_ref, .quantifier = .required },
7021 .{ .kind = .image_operands, .quantifier = .optional },
5890 },7022 },
5891 },7023 },
5892 .{7024 .{
5893 .name = "OpConstantSampler",7025 .name = "OpImageSampleProjExplicitLod",
5894 .opcode = 45,7026 .opcode = 92,
5895 .operands = &.{7027 .operands = &.{
5896 .{ .kind = .id_result_type, .quantifier = .required },7028 .{ .kind = .id_result_type, .quantifier = .required },
5897 .{ .kind = .id_result, .quantifier = .required },7029 .{ .kind = .id_result, .quantifier = .required },
5898 .{ .kind = .sampler_addressing_mode, .quantifier = .required },7030 .{ .kind = .id_ref, .quantifier = .required },
5899 .{ .kind = .literal_integer, .quantifier = .required },7031 .{ .kind = .id_ref, .quantifier = .required },
5900 .{ .kind = .sampler_filter_mode, .quantifier = .required },7032 .{ .kind = .image_operands, .quantifier = .required },
5901 },7033 },
5902 },7034 },
5903 .{7035 .{
5904 .name = "OpConstantNull",7036 .name = "OpImageSampleProjDrefImplicitLod",
5905 .opcode = 46,7037 .opcode = 93,
5906 .operands = &.{7038 .operands = &.{
5907 .{ .kind = .id_result_type, .quantifier = .required },7039 .{ .kind = .id_result_type, .quantifier = .required },
5908 .{ .kind = .id_result, .quantifier = .required },7040 .{ .kind = .id_result, .quantifier = .required },
7041 .{ .kind = .id_ref, .quantifier = .required },
7042 .{ .kind = .id_ref, .quantifier = .required },
7043 .{ .kind = .id_ref, .quantifier = .required },
7044 .{ .kind = .image_operands, .quantifier = .optional },
5909 },7045 },
5910 },7046 },
5911 .{7047 .{
5912 .name = "OpSpecConstantTrue",7048 .name = "OpImageSampleProjDrefExplicitLod",
5913 .opcode = 48,7049 .opcode = 94,
5914 .operands = &.{7050 .operands = &.{
5915 .{ .kind = .id_result_type, .quantifier = .required },7051 .{ .kind = .id_result_type, .quantifier = .required },
5916 .{ .kind = .id_result, .quantifier = .required },7052 .{ .kind = .id_result, .quantifier = .required },
7053 .{ .kind = .id_ref, .quantifier = .required },
7054 .{ .kind = .id_ref, .quantifier = .required },
7055 .{ .kind = .id_ref, .quantifier = .required },
7056 .{ .kind = .image_operands, .quantifier = .required },
5917 },7057 },
5918 },7058 },
5919 .{7059 .{
5920 .name = "OpSpecConstantFalse",7060 .name = "OpImageFetch",
5921 .opcode = 49,7061 .opcode = 95,
5922 .operands = &.{7062 .operands = &.{
5923 .{ .kind = .id_result_type, .quantifier = .required },7063 .{ .kind = .id_result_type, .quantifier = .required },
5924 .{ .kind = .id_result, .quantifier = .required },7064 .{ .kind = .id_result, .quantifier = .required },
7065 .{ .kind = .id_ref, .quantifier = .required },
7066 .{ .kind = .id_ref, .quantifier = .required },
7067 .{ .kind = .image_operands, .quantifier = .optional },
5925 },7068 },
5926 },7069 },
5927 .{7070 .{
5928 .name = "OpSpecConstant",7071 .name = "OpImageGather",
5929 .opcode = 50,7072 .opcode = 96,
5930 .operands = &.{7073 .operands = &.{
5931 .{ .kind = .id_result_type, .quantifier = .required },7074 .{ .kind = .id_result_type, .quantifier = .required },
5932 .{ .kind = .id_result, .quantifier = .required },7075 .{ .kind = .id_result, .quantifier = .required },
5933 .{ .kind = .literal_context_dependent_number, .quantifier = .required },7076 .{ .kind = .id_ref, .quantifier = .required },
7077 .{ .kind = .id_ref, .quantifier = .required },
7078 .{ .kind = .id_ref, .quantifier = .required },
7079 .{ .kind = .image_operands, .quantifier = .optional },
5934 },7080 },
5935 },7081 },
5936 .{7082 .{
5937 .name = "OpSpecConstantComposite",7083 .name = "OpImageDrefGather",
5938 .opcode = 51,7084 .opcode = 97,
5939 .operands = &.{7085 .operands = &.{
5940 .{ .kind = .id_result_type, .quantifier = .required },7086 .{ .kind = .id_result_type, .quantifier = .required },
5941 .{ .kind = .id_result, .quantifier = .required },7087 .{ .kind = .id_result, .quantifier = .required },
5942 .{ .kind = .id_ref, .quantifier = .variadic },7088 .{ .kind = .id_ref, .quantifier = .required },
7089 .{ .kind = .id_ref, .quantifier = .required },
7090 .{ .kind = .id_ref, .quantifier = .required },
7091 .{ .kind = .image_operands, .quantifier = .optional },
5943 },7092 },
5944 },7093 },
5945 .{7094 .{
5946 .name = "OpSpecConstantOp",7095 .name = "OpImageRead",
5947 .opcode = 52,7096 .opcode = 98,
5948 .operands = &.{7097 .operands = &.{
5949 .{ .kind = .id_result_type, .quantifier = .required },7098 .{ .kind = .id_result_type, .quantifier = .required },
5950 .{ .kind = .id_result, .quantifier = .required },7099 .{ .kind = .id_result, .quantifier = .required },
5951 .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required },7100 .{ .kind = .id_ref, .quantifier = .required },
7101 .{ .kind = .id_ref, .quantifier = .required },
7102 .{ .kind = .image_operands, .quantifier = .optional },
5952 },7103 },
5953 },7104 },
5954 .{7105 .{
5955 .name = "OpFunction",7106 .name = "OpImageWrite",
5956 .opcode = 54,7107 .opcode = 99,
5957 .operands = &.{7108 .operands = &.{
5958 .{ .kind = .id_result_type, .quantifier = .required },
5959 .{ .kind = .id_result, .quantifier = .required },
5960 .{ .kind = .function_control, .quantifier = .required },
5961 .{ .kind = .id_ref, .quantifier = .required },7109 .{ .kind = .id_ref, .quantifier = .required },
7110 .{ .kind = .id_ref, .quantifier = .required },
7111 .{ .kind = .id_ref, .quantifier = .required },
7112 .{ .kind = .image_operands, .quantifier = .optional },
5962 },7113 },
5963 },7114 },
5964 .{7115 .{
5965 .name = "OpFunctionParameter",7116 .name = "OpImage",
5966 .opcode = 55,7117 .opcode = 100,
5967 .operands = &.{7118 .operands = &.{
5968 .{ .kind = .id_result_type, .quantifier = .required },7119 .{ .kind = .id_result_type, .quantifier = .required },
5969 .{ .kind = .id_result, .quantifier = .required },7120 .{ .kind = .id_result, .quantifier = .required },
7121 .{ .kind = .id_ref, .quantifier = .required },
5970 },7122 },
5971 },7123 },
5972 .{7124 .{
5973 .name = "OpFunctionEnd",7125 .name = "OpImageQueryFormat",
5974 .opcode = 56,7126 .opcode = 101,
5975 .operands = &.{},
5976 },
5977 .{
5978 .name = "OpFunctionCall",
5979 .opcode = 57,
5980 .operands = &.{7127 .operands = &.{
5981 .{ .kind = .id_result_type, .quantifier = .required },7128 .{ .kind = .id_result_type, .quantifier = .required },
5982 .{ .kind = .id_result, .quantifier = .required },7129 .{ .kind = .id_result, .quantifier = .required },
5983 .{ .kind = .id_ref, .quantifier = .required },7130 .{ .kind = .id_ref, .quantifier = .required },
5984 .{ .kind = .id_ref, .quantifier = .variadic },
5985 },7131 },
5986 },7132 },
5987 .{7133 .{
5988 .name = "OpVariable",7134 .name = "OpImageQueryOrder",
5989 .opcode = 59,7135 .opcode = 102,
5990 .operands = &.{7136 .operands = &.{
5991 .{ .kind = .id_result_type, .quantifier = .required },7137 .{ .kind = .id_result_type, .quantifier = .required },
5992 .{ .kind = .id_result, .quantifier = .required },7138 .{ .kind = .id_result, .quantifier = .required },
5993 .{ .kind = .storage_class, .quantifier = .required },7139 .{ .kind = .id_ref, .quantifier = .required },
5994 .{ .kind = .id_ref, .quantifier = .optional },
5995 },7140 },
5996 },7141 },
5997 .{7142 .{
5998 .name = "OpImageTexelPointer",7143 .name = "OpImageQuerySizeLod",
5999 .opcode = 60,7144 .opcode = 103,
6000 .operands = &.{7145 .operands = &.{
6001 .{ .kind = .id_result_type, .quantifier = .required },7146 .{ .kind = .id_result_type, .quantifier = .required },
6002 .{ .kind = .id_result, .quantifier = .required },7147 .{ .kind = .id_result, .quantifier = .required },
6003 .{ .kind = .id_ref, .quantifier = .required },7148 .{ .kind = .id_ref, .quantifier = .required },
6004 .{ .kind = .id_ref, .quantifier = .required },7149 .{ .kind = .id_ref, .quantifier = .required },
6005 .{ .kind = .id_ref, .quantifier = .required },
6006 },7150 },
6007 },7151 },
6008 .{7152 .{
6009 .name = "OpLoad",7153 .name = "OpImageQuerySize",
6010 .opcode = 61,7154 .opcode = 104,
6011 .operands = &.{7155 .operands = &.{
6012 .{ .kind = .id_result_type, .quantifier = .required },7156 .{ .kind = .id_result_type, .quantifier = .required },
6013 .{ .kind = .id_result, .quantifier = .required },7157 .{ .kind = .id_result, .quantifier = .required },
6014 .{ .kind = .id_ref, .quantifier = .required },7158 .{ .kind = .id_ref, .quantifier = .required },
6015 .{ .kind = .memory_access, .quantifier = .optional },
6016 },7159 },
6017 },7160 },
6018 .{7161 .{
6019 .name = "OpStore",7162 .name = "OpImageQueryLod",
6020 .opcode = 62,7163 .opcode = 105,
6021 .operands = &.{7164 .operands = &.{
7165 .{ .kind = .id_result_type, .quantifier = .required },
7166 .{ .kind = .id_result, .quantifier = .required },
6022 .{ .kind = .id_ref, .quantifier = .required },7167 .{ .kind = .id_ref, .quantifier = .required },
6023 .{ .kind = .id_ref, .quantifier = .required },7168 .{ .kind = .id_ref, .quantifier = .required },
6024 .{ .kind = .memory_access, .quantifier = .optional },
6025 },7169 },
6026 },7170 },
6027 .{7171 .{
6028 .name = "OpCopyMemory",7172 .name = "OpImageQueryLevels",
6029 .opcode = 63,7173 .opcode = 106,
6030 .operands = &.{7174 .operands = &.{
7175 .{ .kind = .id_result_type, .quantifier = .required },
7176 .{ .kind = .id_result, .quantifier = .required },
6031 .{ .kind = .id_ref, .quantifier = .required },7177 .{ .kind = .id_ref, .quantifier = .required },
6032 .{ .kind = .id_ref, .quantifier = .required },
6033 .{ .kind = .memory_access, .quantifier = .optional },
6034 .{ .kind = .memory_access, .quantifier = .optional },
6035 },7178 },
6036 },7179 },
6037 .{7180 .{
6038 .name = "OpCopyMemorySized",7181 .name = "OpImageQuerySamples",
6039 .opcode = 64,7182 .opcode = 107,
6040 .operands = &.{7183 .operands = &.{
7184 .{ .kind = .id_result_type, .quantifier = .required },
7185 .{ .kind = .id_result, .quantifier = .required },
6041 .{ .kind = .id_ref, .quantifier = .required },7186 .{ .kind = .id_ref, .quantifier = .required },
6042 .{ .kind = .id_ref, .quantifier = .required },
6043 .{ .kind = .id_ref, .quantifier = .required },
6044 .{ .kind = .memory_access, .quantifier = .optional },
6045 .{ .kind = .memory_access, .quantifier = .optional },
6046 },7187 },
6047 },7188 },
6048 .{7189 .{
6049 .name = "OpAccessChain",7190 .name = "OpConvertFToU",
6050 .opcode = 65,7191 .opcode = 109,
6051 .operands = &.{7192 .operands = &.{
6052 .{ .kind = .id_result_type, .quantifier = .required },7193 .{ .kind = .id_result_type, .quantifier = .required },
6053 .{ .kind = .id_result, .quantifier = .required },7194 .{ .kind = .id_result, .quantifier = .required },
6054 .{ .kind = .id_ref, .quantifier = .required },7195 .{ .kind = .id_ref, .quantifier = .required },
6055 .{ .kind = .id_ref, .quantifier = .variadic },
6056 },7196 },
6057 },7197 },
6058 .{7198 .{
6059 .name = "OpInBoundsAccessChain",7199 .name = "OpConvertFToS",
6060 .opcode = 66,7200 .opcode = 110,
6061 .operands = &.{7201 .operands = &.{
6062 .{ .kind = .id_result_type, .quantifier = .required },7202 .{ .kind = .id_result_type, .quantifier = .required },
6063 .{ .kind = .id_result, .quantifier = .required },7203 .{ .kind = .id_result, .quantifier = .required },
6064 .{ .kind = .id_ref, .quantifier = .required },7204 .{ .kind = .id_ref, .quantifier = .required },
6065 .{ .kind = .id_ref, .quantifier = .variadic },
6066 },7205 },
6067 },7206 },
6068 .{7207 .{
6069 .name = "OpPtrAccessChain",7208 .name = "OpConvertSToF",
6070 .opcode = 67,7209 .opcode = 111,
6071 .operands = &.{7210 .operands = &.{
6072 .{ .kind = .id_result_type, .quantifier = .required },7211 .{ .kind = .id_result_type, .quantifier = .required },
6073 .{ .kind = .id_result, .quantifier = .required },7212 .{ .kind = .id_result, .quantifier = .required },
6074 .{ .kind = .id_ref, .quantifier = .required },7213 .{ .kind = .id_ref, .quantifier = .required },
6075 .{ .kind = .id_ref, .quantifier = .required },
6076 .{ .kind = .id_ref, .quantifier = .variadic },
6077 },7214 },
6078 },7215 },
6079 .{7216 .{
6080 .name = "OpArrayLength",7217 .name = "OpConvertUToF",
6081 .opcode = 68,7218 .opcode = 112,
6082 .operands = &.{7219 .operands = &.{
6083 .{ .kind = .id_result_type, .quantifier = .required },7220 .{ .kind = .id_result_type, .quantifier = .required },
6084 .{ .kind = .id_result, .quantifier = .required },7221 .{ .kind = .id_result, .quantifier = .required },
6085 .{ .kind = .id_ref, .quantifier = .required },7222 .{ .kind = .id_ref, .quantifier = .required },
6086 .{ .kind = .literal_integer, .quantifier = .required },
6087 },7223 },
6088 },7224 },
6089 .{7225 .{
6090 .name = "OpGenericPtrMemSemantics",7226 .name = "OpUConvert",
6091 .opcode = 69,7227 .opcode = 113,
6092 .operands = &.{7228 .operands = &.{
6093 .{ .kind = .id_result_type, .quantifier = .required },7229 .{ .kind = .id_result_type, .quantifier = .required },
6094 .{ .kind = .id_result, .quantifier = .required },7230 .{ .kind = .id_result, .quantifier = .required },
...@@ -6096,139 +7232,146 @@ pub const InstructionSet = enum {...@@ -6096,139 +7232,146 @@ pub const InstructionSet = enum {
6096 },7232 },
6097 },7233 },
6098 .{7234 .{
6099 .name = "OpInBoundsPtrAccessChain",7235 .name = "OpSConvert",
6100 .opcode = 70,7236 .opcode = 114,
6101 .operands = &.{7237 .operands = &.{
6102 .{ .kind = .id_result_type, .quantifier = .required },7238 .{ .kind = .id_result_type, .quantifier = .required },
6103 .{ .kind = .id_result, .quantifier = .required },7239 .{ .kind = .id_result, .quantifier = .required },
6104 .{ .kind = .id_ref, .quantifier = .required },7240 .{ .kind = .id_ref, .quantifier = .required },
6105 .{ .kind = .id_ref, .quantifier = .required },
6106 .{ .kind = .id_ref, .quantifier = .variadic },
6107 },7241 },
6108 },7242 },
6109 .{7243 .{
6110 .name = "OpDecorate",7244 .name = "OpFConvert",
6111 .opcode = 71,7245 .opcode = 115,
6112 .operands = &.{7246 .operands = &.{
7247 .{ .kind = .id_result_type, .quantifier = .required },
7248 .{ .kind = .id_result, .quantifier = .required },
6113 .{ .kind = .id_ref, .quantifier = .required },7249 .{ .kind = .id_ref, .quantifier = .required },
6114 .{ .kind = .decoration, .quantifier = .required },
6115 },7250 },
6116 },7251 },
6117 .{7252 .{
6118 .name = "OpMemberDecorate",7253 .name = "OpQuantizeToF16",
6119 .opcode = 72,7254 .opcode = 116,
6120 .operands = &.{7255 .operands = &.{
7256 .{ .kind = .id_result_type, .quantifier = .required },
7257 .{ .kind = .id_result, .quantifier = .required },
6121 .{ .kind = .id_ref, .quantifier = .required },7258 .{ .kind = .id_ref, .quantifier = .required },
6122 .{ .kind = .literal_integer, .quantifier = .required },
6123 .{ .kind = .decoration, .quantifier = .required },
6124 },7259 },
6125 },7260 },
6126 .{7261 .{
6127 .name = "OpDecorationGroup",7262 .name = "OpConvertPtrToU",
6128 .opcode = 73,7263 .opcode = 117,
6129 .operands = &.{7264 .operands = &.{
7265 .{ .kind = .id_result_type, .quantifier = .required },
6130 .{ .kind = .id_result, .quantifier = .required },7266 .{ .kind = .id_result, .quantifier = .required },
7267 .{ .kind = .id_ref, .quantifier = .required },
6131 },7268 },
6132 },7269 },
6133 .{7270 .{
6134 .name = "OpGroupDecorate",7271 .name = "OpSatConvertSToU",
6135 .opcode = 74,7272 .opcode = 118,
6136 .operands = &.{7273 .operands = &.{
7274 .{ .kind = .id_result_type, .quantifier = .required },
7275 .{ .kind = .id_result, .quantifier = .required },
6137 .{ .kind = .id_ref, .quantifier = .required },7276 .{ .kind = .id_ref, .quantifier = .required },
6138 .{ .kind = .id_ref, .quantifier = .variadic },
6139 },7277 },
6140 },7278 },
6141 .{7279 .{
6142 .name = "OpGroupMemberDecorate",7280 .name = "OpSatConvertUToS",
6143 .opcode = 75,7281 .opcode = 119,
6144 .operands = &.{7282 .operands = &.{
7283 .{ .kind = .id_result_type, .quantifier = .required },
7284 .{ .kind = .id_result, .quantifier = .required },
6145 .{ .kind = .id_ref, .quantifier = .required },7285 .{ .kind = .id_ref, .quantifier = .required },
6146 .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic },
6147 },7286 },
6148 },7287 },
6149 .{7288 .{
6150 .name = "OpVectorExtractDynamic",7289 .name = "OpConvertUToPtr",
6151 .opcode = 77,7290 .opcode = 120,
6152 .operands = &.{7291 .operands = &.{
6153 .{ .kind = .id_result_type, .quantifier = .required },7292 .{ .kind = .id_result_type, .quantifier = .required },
6154 .{ .kind = .id_result, .quantifier = .required },7293 .{ .kind = .id_result, .quantifier = .required },
6155 .{ .kind = .id_ref, .quantifier = .required },7294 .{ .kind = .id_ref, .quantifier = .required },
6156 .{ .kind = .id_ref, .quantifier = .required },
6157 },7295 },
6158 },7296 },
6159 .{7297 .{
6160 .name = "OpVectorInsertDynamic",7298 .name = "OpPtrCastToGeneric",
6161 .opcode = 78,7299 .opcode = 121,
6162 .operands = &.{7300 .operands = &.{
6163 .{ .kind = .id_result_type, .quantifier = .required },7301 .{ .kind = .id_result_type, .quantifier = .required },
6164 .{ .kind = .id_result, .quantifier = .required },7302 .{ .kind = .id_result, .quantifier = .required },
6165 .{ .kind = .id_ref, .quantifier = .required },7303 .{ .kind = .id_ref, .quantifier = .required },
6166 .{ .kind = .id_ref, .quantifier = .required },
6167 .{ .kind = .id_ref, .quantifier = .required },
6168 },7304 },
6169 },7305 },
6170 .{7306 .{
6171 .name = "OpVectorShuffle",7307 .name = "OpGenericCastToPtr",
6172 .opcode = 79,7308 .opcode = 122,
6173 .operands = &.{7309 .operands = &.{
6174 .{ .kind = .id_result_type, .quantifier = .required },7310 .{ .kind = .id_result_type, .quantifier = .required },
6175 .{ .kind = .id_result, .quantifier = .required },7311 .{ .kind = .id_result, .quantifier = .required },
6176 .{ .kind = .id_ref, .quantifier = .required },7312 .{ .kind = .id_ref, .quantifier = .required },
6177 .{ .kind = .id_ref, .quantifier = .required },
6178 .{ .kind = .literal_integer, .quantifier = .variadic },
6179 },7313 },
6180 },7314 },
6181 .{7315 .{
6182 .name = "OpCompositeConstruct",7316 .name = "OpGenericCastToPtrExplicit",
6183 .opcode = 80,7317 .opcode = 123,
6184 .operands = &.{7318 .operands = &.{
6185 .{ .kind = .id_result_type, .quantifier = .required },7319 .{ .kind = .id_result_type, .quantifier = .required },
6186 .{ .kind = .id_result, .quantifier = .required },7320 .{ .kind = .id_result, .quantifier = .required },
6187 .{ .kind = .id_ref, .quantifier = .variadic },7321 .{ .kind = .id_ref, .quantifier = .required },
7322 .{ .kind = .storage_class, .quantifier = .required },
6188 },7323 },
6189 },7324 },
6190 .{7325 .{
6191 .name = "OpCompositeExtract",7326 .name = "OpBitcast",
6192 .opcode = 81,7327 .opcode = 124,
6193 .operands = &.{7328 .operands = &.{
6194 .{ .kind = .id_result_type, .quantifier = .required },7329 .{ .kind = .id_result_type, .quantifier = .required },
6195 .{ .kind = .id_result, .quantifier = .required },7330 .{ .kind = .id_result, .quantifier = .required },
6196 .{ .kind = .id_ref, .quantifier = .required },7331 .{ .kind = .id_ref, .quantifier = .required },
6197 .{ .kind = .literal_integer, .quantifier = .variadic },
6198 },7332 },
6199 },7333 },
6200 .{7334 .{
6201 .name = "OpCompositeInsert",7335 .name = "OpSNegate",
6202 .opcode = 82,7336 .opcode = 126,
6203 .operands = &.{7337 .operands = &.{
6204 .{ .kind = .id_result_type, .quantifier = .required },7338 .{ .kind = .id_result_type, .quantifier = .required },
6205 .{ .kind = .id_result, .quantifier = .required },7339 .{ .kind = .id_result, .quantifier = .required },
6206 .{ .kind = .id_ref, .quantifier = .required },7340 .{ .kind = .id_ref, .quantifier = .required },
7341 },
7342 },
7343 .{
7344 .name = "OpFNegate",
7345 .opcode = 127,
7346 .operands = &.{
7347 .{ .kind = .id_result_type, .quantifier = .required },
7348 .{ .kind = .id_result, .quantifier = .required },
6207 .{ .kind = .id_ref, .quantifier = .required },7349 .{ .kind = .id_ref, .quantifier = .required },
6208 .{ .kind = .literal_integer, .quantifier = .variadic },
6209 },7350 },
6210 },7351 },
6211 .{7352 .{
6212 .name = "OpCopyObject",7353 .name = "OpIAdd",
6213 .opcode = 83,7354 .opcode = 128,
6214 .operands = &.{7355 .operands = &.{
6215 .{ .kind = .id_result_type, .quantifier = .required },7356 .{ .kind = .id_result_type, .quantifier = .required },
6216 .{ .kind = .id_result, .quantifier = .required },7357 .{ .kind = .id_result, .quantifier = .required },
6217 .{ .kind = .id_ref, .quantifier = .required },7358 .{ .kind = .id_ref, .quantifier = .required },
7359 .{ .kind = .id_ref, .quantifier = .required },
6218 },7360 },
6219 },7361 },
6220 .{7362 .{
6221 .name = "OpTranspose",7363 .name = "OpFAdd",
6222 .opcode = 84,7364 .opcode = 129,
6223 .operands = &.{7365 .operands = &.{
6224 .{ .kind = .id_result_type, .quantifier = .required },7366 .{ .kind = .id_result_type, .quantifier = .required },
6225 .{ .kind = .id_result, .quantifier = .required },7367 .{ .kind = .id_result, .quantifier = .required },
6226 .{ .kind = .id_ref, .quantifier = .required },7368 .{ .kind = .id_ref, .quantifier = .required },
7369 .{ .kind = .id_ref, .quantifier = .required },
6227 },7370 },
6228 },7371 },
6229 .{7372 .{
6230 .name = "OpSampledImage",7373 .name = "OpISub",
6231 .opcode = 86,7374 .opcode = 130,
6232 .operands = &.{7375 .operands = &.{
6233 .{ .kind = .id_result_type, .quantifier = .required },7376 .{ .kind = .id_result_type, .quantifier = .required },
6234 .{ .kind = .id_result, .quantifier = .required },7377 .{ .kind = .id_result, .quantifier = .required },
...@@ -6237,183 +7380,168 @@ pub const InstructionSet = enum {...@@ -6237,183 +7380,168 @@ pub const InstructionSet = enum {
6237 },7380 },
6238 },7381 },
6239 .{7382 .{
6240 .name = "OpImageSampleImplicitLod",7383 .name = "OpFSub",
6241 .opcode = 87,7384 .opcode = 131,
6242 .operands = &.{7385 .operands = &.{
6243 .{ .kind = .id_result_type, .quantifier = .required },7386 .{ .kind = .id_result_type, .quantifier = .required },
6244 .{ .kind = .id_result, .quantifier = .required },7387 .{ .kind = .id_result, .quantifier = .required },
6245 .{ .kind = .id_ref, .quantifier = .required },7388 .{ .kind = .id_ref, .quantifier = .required },
6246 .{ .kind = .id_ref, .quantifier = .required },7389 .{ .kind = .id_ref, .quantifier = .required },
6247 .{ .kind = .image_operands, .quantifier = .optional },
6248 },7390 },
6249 },7391 },
6250 .{7392 .{
6251 .name = "OpImageSampleExplicitLod",7393 .name = "OpIMul",
6252 .opcode = 88,7394 .opcode = 132,
6253 .operands = &.{7395 .operands = &.{
6254 .{ .kind = .id_result_type, .quantifier = .required },7396 .{ .kind = .id_result_type, .quantifier = .required },
6255 .{ .kind = .id_result, .quantifier = .required },7397 .{ .kind = .id_result, .quantifier = .required },
6256 .{ .kind = .id_ref, .quantifier = .required },7398 .{ .kind = .id_ref, .quantifier = .required },
6257 .{ .kind = .id_ref, .quantifier = .required },7399 .{ .kind = .id_ref, .quantifier = .required },
6258 .{ .kind = .image_operands, .quantifier = .required },
6259 },7400 },
6260 },7401 },
6261 .{7402 .{
6262 .name = "OpImageSampleDrefImplicitLod",7403 .name = "OpFMul",
6263 .opcode = 89,7404 .opcode = 133,
6264 .operands = &.{7405 .operands = &.{
6265 .{ .kind = .id_result_type, .quantifier = .required },7406 .{ .kind = .id_result_type, .quantifier = .required },
6266 .{ .kind = .id_result, .quantifier = .required },7407 .{ .kind = .id_result, .quantifier = .required },
6267 .{ .kind = .id_ref, .quantifier = .required },7408 .{ .kind = .id_ref, .quantifier = .required },
6268 .{ .kind = .id_ref, .quantifier = .required },7409 .{ .kind = .id_ref, .quantifier = .required },
6269 .{ .kind = .id_ref, .quantifier = .required },
6270 .{ .kind = .image_operands, .quantifier = .optional },
6271 },7410 },
6272 },7411 },
6273 .{7412 .{
6274 .name = "OpImageSampleDrefExplicitLod",7413 .name = "OpUDiv",
6275 .opcode = 90,7414 .opcode = 134,
6276 .operands = &.{7415 .operands = &.{
6277 .{ .kind = .id_result_type, .quantifier = .required },7416 .{ .kind = .id_result_type, .quantifier = .required },
6278 .{ .kind = .id_result, .quantifier = .required },7417 .{ .kind = .id_result, .quantifier = .required },
6279 .{ .kind = .id_ref, .quantifier = .required },7418 .{ .kind = .id_ref, .quantifier = .required },
6280 .{ .kind = .id_ref, .quantifier = .required },7419 .{ .kind = .id_ref, .quantifier = .required },
6281 .{ .kind = .id_ref, .quantifier = .required },
6282 .{ .kind = .image_operands, .quantifier = .required },
6283 },7420 },
6284 },7421 },
6285 .{7422 .{
6286 .name = "OpImageSampleProjImplicitLod",7423 .name = "OpSDiv",
6287 .opcode = 91,7424 .opcode = 135,
6288 .operands = &.{7425 .operands = &.{
6289 .{ .kind = .id_result_type, .quantifier = .required },7426 .{ .kind = .id_result_type, .quantifier = .required },
6290 .{ .kind = .id_result, .quantifier = .required },7427 .{ .kind = .id_result, .quantifier = .required },
6291 .{ .kind = .id_ref, .quantifier = .required },7428 .{ .kind = .id_ref, .quantifier = .required },
6292 .{ .kind = .id_ref, .quantifier = .required },7429 .{ .kind = .id_ref, .quantifier = .required },
6293 .{ .kind = .image_operands, .quantifier = .optional },
6294 },7430 },
6295 },7431 },
6296 .{7432 .{
6297 .name = "OpImageSampleProjExplicitLod",7433 .name = "OpFDiv",
6298 .opcode = 92,7434 .opcode = 136,
6299 .operands = &.{7435 .operands = &.{
6300 .{ .kind = .id_result_type, .quantifier = .required },7436 .{ .kind = .id_result_type, .quantifier = .required },
6301 .{ .kind = .id_result, .quantifier = .required },7437 .{ .kind = .id_result, .quantifier = .required },
6302 .{ .kind = .id_ref, .quantifier = .required },7438 .{ .kind = .id_ref, .quantifier = .required },
6303 .{ .kind = .id_ref, .quantifier = .required },7439 .{ .kind = .id_ref, .quantifier = .required },
6304 .{ .kind = .image_operands, .quantifier = .required },
6305 },7440 },
6306 },7441 },
6307 .{7442 .{
6308 .name = "OpImageSampleProjDrefImplicitLod",7443 .name = "OpUMod",
6309 .opcode = 93,7444 .opcode = 137,
6310 .operands = &.{7445 .operands = &.{
6311 .{ .kind = .id_result_type, .quantifier = .required },7446 .{ .kind = .id_result_type, .quantifier = .required },
6312 .{ .kind = .id_result, .quantifier = .required },7447 .{ .kind = .id_result, .quantifier = .required },
6313 .{ .kind = .id_ref, .quantifier = .required },7448 .{ .kind = .id_ref, .quantifier = .required },
6314 .{ .kind = .id_ref, .quantifier = .required },7449 .{ .kind = .id_ref, .quantifier = .required },
6315 .{ .kind = .id_ref, .quantifier = .required },
6316 .{ .kind = .image_operands, .quantifier = .optional },
6317 },7450 },
6318 },7451 },
6319 .{7452 .{
6320 .name = "OpImageSampleProjDrefExplicitLod",7453 .name = "OpSRem",
6321 .opcode = 94,7454 .opcode = 138,
6322 .operands = &.{7455 .operands = &.{
6323 .{ .kind = .id_result_type, .quantifier = .required },7456 .{ .kind = .id_result_type, .quantifier = .required },
6324 .{ .kind = .id_result, .quantifier = .required },7457 .{ .kind = .id_result, .quantifier = .required },
6325 .{ .kind = .id_ref, .quantifier = .required },7458 .{ .kind = .id_ref, .quantifier = .required },
6326 .{ .kind = .id_ref, .quantifier = .required },7459 .{ .kind = .id_ref, .quantifier = .required },
6327 .{ .kind = .id_ref, .quantifier = .required },
6328 .{ .kind = .image_operands, .quantifier = .required },
6329 },7460 },
6330 },7461 },
6331 .{7462 .{
6332 .name = "OpImageFetch",7463 .name = "OpSMod",
6333 .opcode = 95,7464 .opcode = 139,
6334 .operands = &.{7465 .operands = &.{
6335 .{ .kind = .id_result_type, .quantifier = .required },7466 .{ .kind = .id_result_type, .quantifier = .required },
6336 .{ .kind = .id_result, .quantifier = .required },7467 .{ .kind = .id_result, .quantifier = .required },
6337 .{ .kind = .id_ref, .quantifier = .required },7468 .{ .kind = .id_ref, .quantifier = .required },
6338 .{ .kind = .id_ref, .quantifier = .required },7469 .{ .kind = .id_ref, .quantifier = .required },
6339 .{ .kind = .image_operands, .quantifier = .optional },
6340 },7470 },
6341 },7471 },
6342 .{7472 .{
6343 .name = "OpImageGather",7473 .name = "OpFRem",
6344 .opcode = 96,7474 .opcode = 140,
6345 .operands = &.{7475 .operands = &.{
6346 .{ .kind = .id_result_type, .quantifier = .required },7476 .{ .kind = .id_result_type, .quantifier = .required },
6347 .{ .kind = .id_result, .quantifier = .required },7477 .{ .kind = .id_result, .quantifier = .required },
6348 .{ .kind = .id_ref, .quantifier = .required },7478 .{ .kind = .id_ref, .quantifier = .required },
6349 .{ .kind = .id_ref, .quantifier = .required },7479 .{ .kind = .id_ref, .quantifier = .required },
6350 .{ .kind = .id_ref, .quantifier = .required },
6351 .{ .kind = .image_operands, .quantifier = .optional },
6352 },7480 },
6353 },7481 },
6354 .{7482 .{
6355 .name = "OpImageDrefGather",7483 .name = "OpFMod",
6356 .opcode = 97,7484 .opcode = 141,
6357 .operands = &.{7485 .operands = &.{
6358 .{ .kind = .id_result_type, .quantifier = .required },7486 .{ .kind = .id_result_type, .quantifier = .required },
6359 .{ .kind = .id_result, .quantifier = .required },7487 .{ .kind = .id_result, .quantifier = .required },
6360 .{ .kind = .id_ref, .quantifier = .required },7488 .{ .kind = .id_ref, .quantifier = .required },
6361 .{ .kind = .id_ref, .quantifier = .required },7489 .{ .kind = .id_ref, .quantifier = .required },
6362 .{ .kind = .id_ref, .quantifier = .required },
6363 .{ .kind = .image_operands, .quantifier = .optional },
6364 },7490 },
6365 },7491 },
6366 .{7492 .{
6367 .name = "OpImageRead",7493 .name = "OpVectorTimesScalar",
6368 .opcode = 98,7494 .opcode = 142,
6369 .operands = &.{7495 .operands = &.{
6370 .{ .kind = .id_result_type, .quantifier = .required },7496 .{ .kind = .id_result_type, .quantifier = .required },
6371 .{ .kind = .id_result, .quantifier = .required },7497 .{ .kind = .id_result, .quantifier = .required },
6372 .{ .kind = .id_ref, .quantifier = .required },7498 .{ .kind = .id_ref, .quantifier = .required },
6373 .{ .kind = .id_ref, .quantifier = .required },7499 .{ .kind = .id_ref, .quantifier = .required },
6374 .{ .kind = .image_operands, .quantifier = .optional },
6375 },7500 },
6376 },7501 },
6377 .{7502 .{
6378 .name = "OpImageWrite",7503 .name = "OpMatrixTimesScalar",
6379 .opcode = 99,7504 .opcode = 143,
6380 .operands = &.{7505 .operands = &.{
7506 .{ .kind = .id_result_type, .quantifier = .required },
7507 .{ .kind = .id_result, .quantifier = .required },
6381 .{ .kind = .id_ref, .quantifier = .required },7508 .{ .kind = .id_ref, .quantifier = .required },
6382 .{ .kind = .id_ref, .quantifier = .required },7509 .{ .kind = .id_ref, .quantifier = .required },
6383 .{ .kind = .id_ref, .quantifier = .required },
6384 .{ .kind = .image_operands, .quantifier = .optional },
6385 },7510 },
6386 },7511 },
6387 .{7512 .{
6388 .name = "OpImage",7513 .name = "OpVectorTimesMatrix",
6389 .opcode = 100,7514 .opcode = 144,
6390 .operands = &.{7515 .operands = &.{
6391 .{ .kind = .id_result_type, .quantifier = .required },7516 .{ .kind = .id_result_type, .quantifier = .required },
6392 .{ .kind = .id_result, .quantifier = .required },7517 .{ .kind = .id_result, .quantifier = .required },
6393 .{ .kind = .id_ref, .quantifier = .required },7518 .{ .kind = .id_ref, .quantifier = .required },
7519 .{ .kind = .id_ref, .quantifier = .required },
6394 },7520 },
6395 },7521 },
6396 .{7522 .{
6397 .name = "OpImageQueryFormat",7523 .name = "OpMatrixTimesVector",
6398 .opcode = 101,7524 .opcode = 145,
6399 .operands = &.{7525 .operands = &.{
6400 .{ .kind = .id_result_type, .quantifier = .required },7526 .{ .kind = .id_result_type, .quantifier = .required },
6401 .{ .kind = .id_result, .quantifier = .required },7527 .{ .kind = .id_result, .quantifier = .required },
6402 .{ .kind = .id_ref, .quantifier = .required },7528 .{ .kind = .id_ref, .quantifier = .required },
7529 .{ .kind = .id_ref, .quantifier = .required },
6403 },7530 },
6404 },7531 },
6405 .{7532 .{
6406 .name = "OpImageQueryOrder",7533 .name = "OpMatrixTimesMatrix",
6407 .opcode = 102,7534 .opcode = 146,
6408 .operands = &.{7535 .operands = &.{
6409 .{ .kind = .id_result_type, .quantifier = .required },7536 .{ .kind = .id_result_type, .quantifier = .required },
6410 .{ .kind = .id_result, .quantifier = .required },7537 .{ .kind = .id_result, .quantifier = .required },
6411 .{ .kind = .id_ref, .quantifier = .required },7538 .{ .kind = .id_ref, .quantifier = .required },
7539 .{ .kind = .id_ref, .quantifier = .required },
6412 },7540 },
6413 },7541 },
6414 .{7542 .{
6415 .name = "OpImageQuerySizeLod",7543 .name = "OpOuterProduct",
6416 .opcode = 103,7544 .opcode = 147,
6417 .operands = &.{7545 .operands = &.{
6418 .{ .kind = .id_result_type, .quantifier = .required },7546 .{ .kind = .id_result_type, .quantifier = .required },
6419 .{ .kind = .id_result, .quantifier = .required },7547 .{ .kind = .id_result, .quantifier = .required },
...@@ -6422,17 +7550,18 @@ pub const InstructionSet = enum {...@@ -6422,17 +7550,18 @@ pub const InstructionSet = enum {
6422 },7550 },
6423 },7551 },
6424 .{7552 .{
6425 .name = "OpImageQuerySize",7553 .name = "OpDot",
6426 .opcode = 104,7554 .opcode = 148,
6427 .operands = &.{7555 .operands = &.{
6428 .{ .kind = .id_result_type, .quantifier = .required },7556 .{ .kind = .id_result_type, .quantifier = .required },
6429 .{ .kind = .id_result, .quantifier = .required },7557 .{ .kind = .id_result, .quantifier = .required },
6430 .{ .kind = .id_ref, .quantifier = .required },7558 .{ .kind = .id_ref, .quantifier = .required },
7559 .{ .kind = .id_ref, .quantifier = .required },
6431 },7560 },
6432 },7561 },
6433 .{7562 .{
6434 .name = "OpImageQueryLod",7563 .name = "OpIAddCarry",
6435 .opcode = 105,7564 .opcode = 149,
6436 .operands = &.{7565 .operands = &.{
6437 .{ .kind = .id_result_type, .quantifier = .required },7566 .{ .kind = .id_result_type, .quantifier = .required },
6438 .{ .kind = .id_result, .quantifier = .required },7567 .{ .kind = .id_result, .quantifier = .required },
...@@ -6441,35 +7570,38 @@ pub const InstructionSet = enum {...@@ -6441,35 +7570,38 @@ pub const InstructionSet = enum {
6441 },7570 },
6442 },7571 },
6443 .{7572 .{
6444 .name = "OpImageQueryLevels",7573 .name = "OpISubBorrow",
6445 .opcode = 106,7574 .opcode = 150,
6446 .operands = &.{7575 .operands = &.{
6447 .{ .kind = .id_result_type, .quantifier = .required },7576 .{ .kind = .id_result_type, .quantifier = .required },
6448 .{ .kind = .id_result, .quantifier = .required },7577 .{ .kind = .id_result, .quantifier = .required },
6449 .{ .kind = .id_ref, .quantifier = .required },7578 .{ .kind = .id_ref, .quantifier = .required },
7579 .{ .kind = .id_ref, .quantifier = .required },
6450 },7580 },
6451 },7581 },
6452 .{7582 .{
6453 .name = "OpImageQuerySamples",7583 .name = "OpUMulExtended",
6454 .opcode = 107,7584 .opcode = 151,
6455 .operands = &.{7585 .operands = &.{
6456 .{ .kind = .id_result_type, .quantifier = .required },7586 .{ .kind = .id_result_type, .quantifier = .required },
6457 .{ .kind = .id_result, .quantifier = .required },7587 .{ .kind = .id_result, .quantifier = .required },
6458 .{ .kind = .id_ref, .quantifier = .required },7588 .{ .kind = .id_ref, .quantifier = .required },
7589 .{ .kind = .id_ref, .quantifier = .required },
6459 },7590 },
6460 },7591 },
6461 .{7592 .{
6462 .name = "OpConvertFToU",7593 .name = "OpSMulExtended",
6463 .opcode = 109,7594 .opcode = 152,
6464 .operands = &.{7595 .operands = &.{
6465 .{ .kind = .id_result_type, .quantifier = .required },7596 .{ .kind = .id_result_type, .quantifier = .required },
6466 .{ .kind = .id_result, .quantifier = .required },7597 .{ .kind = .id_result, .quantifier = .required },
6467 .{ .kind = .id_ref, .quantifier = .required },7598 .{ .kind = .id_ref, .quantifier = .required },
7599 .{ .kind = .id_ref, .quantifier = .required },
6468 },7600 },
6469 },7601 },
6470 .{7602 .{
6471 .name = "OpConvertFToS",7603 .name = "OpAny",
6472 .opcode = 110,7604 .opcode = 154,
6473 .operands = &.{7605 .operands = &.{
6474 .{ .kind = .id_result_type, .quantifier = .required },7606 .{ .kind = .id_result_type, .quantifier = .required },
6475 .{ .kind = .id_result, .quantifier = .required },7607 .{ .kind = .id_result, .quantifier = .required },
...@@ -6477,8 +7609,8 @@ pub const InstructionSet = enum {...@@ -6477,8 +7609,8 @@ pub const InstructionSet = enum {
6477 },7609 },
6478 },7610 },
6479 .{7611 .{
6480 .name = "OpConvertSToF",7612 .name = "OpAll",
6481 .opcode = 111,7613 .opcode = 155,
6482 .operands = &.{7614 .operands = &.{
6483 .{ .kind = .id_result_type, .quantifier = .required },7615 .{ .kind = .id_result_type, .quantifier = .required },
6484 .{ .kind = .id_result, .quantifier = .required },7616 .{ .kind = .id_result, .quantifier = .required },
...@@ -6486,8 +7618,8 @@ pub const InstructionSet = enum {...@@ -6486,8 +7618,8 @@ pub const InstructionSet = enum {
6486 },7618 },
6487 },7619 },
6488 .{7620 .{
6489 .name = "OpConvertUToF",7621 .name = "OpIsNan",
6490 .opcode = 112,7622 .opcode = 156,
6491 .operands = &.{7623 .operands = &.{
6492 .{ .kind = .id_result_type, .quantifier = .required },7624 .{ .kind = .id_result_type, .quantifier = .required },
6493 .{ .kind = .id_result, .quantifier = .required },7625 .{ .kind = .id_result, .quantifier = .required },
...@@ -6495,8 +7627,8 @@ pub const InstructionSet = enum {...@@ -6495,8 +7627,8 @@ pub const InstructionSet = enum {
6495 },7627 },
6496 },7628 },
6497 .{7629 .{
6498 .name = "OpUConvert",7630 .name = "OpIsInf",
6499 .opcode = 113,7631 .opcode = 157,
6500 .operands = &.{7632 .operands = &.{
6501 .{ .kind = .id_result_type, .quantifier = .required },7633 .{ .kind = .id_result_type, .quantifier = .required },
6502 .{ .kind = .id_result, .quantifier = .required },7634 .{ .kind = .id_result, .quantifier = .required },
...@@ -6504,8 +7636,8 @@ pub const InstructionSet = enum {...@@ -6504,8 +7636,8 @@ pub const InstructionSet = enum {
6504 },7636 },
6505 },7637 },
6506 .{7638 .{
6507 .name = "OpSConvert",7639 .name = "OpIsFinite",
6508 .opcode = 114,7640 .opcode = 158,
6509 .operands = &.{7641 .operands = &.{
6510 .{ .kind = .id_result_type, .quantifier = .required },7642 .{ .kind = .id_result_type, .quantifier = .required },
6511 .{ .kind = .id_result, .quantifier = .required },7643 .{ .kind = .id_result, .quantifier = .required },
...@@ -6513,8 +7645,8 @@ pub const InstructionSet = enum {...@@ -6513,8 +7645,8 @@ pub const InstructionSet = enum {
6513 },7645 },
6514 },7646 },
6515 .{7647 .{
6516 .name = "OpFConvert",7648 .name = "OpIsNormal",
6517 .opcode = 115,7649 .opcode = 159,
6518 .operands = &.{7650 .operands = &.{
6519 .{ .kind = .id_result_type, .quantifier = .required },7651 .{ .kind = .id_result_type, .quantifier = .required },
6520 .{ .kind = .id_result, .quantifier = .required },7652 .{ .kind = .id_result, .quantifier = .required },
...@@ -6522,8 +7654,8 @@ pub const InstructionSet = enum {...@@ -6522,8 +7654,8 @@ pub const InstructionSet = enum {
6522 },7654 },
6523 },7655 },
6524 .{7656 .{
6525 .name = "OpQuantizeToF16",7657 .name = "OpSignBitSet",
6526 .opcode = 116,7658 .opcode = 160,
6527 .operands = &.{7659 .operands = &.{
6528 .{ .kind = .id_result_type, .quantifier = .required },7660 .{ .kind = .id_result_type, .quantifier = .required },
6529 .{ .kind = .id_result, .quantifier = .required },7661 .{ .kind = .id_result, .quantifier = .required },
...@@ -6531,72 +7663,78 @@ pub const InstructionSet = enum {...@@ -6531,72 +7663,78 @@ pub const InstructionSet = enum {
6531 },7663 },
6532 },7664 },
6533 .{7665 .{
6534 .name = "OpConvertPtrToU",7666 .name = "OpLessOrGreater",
6535 .opcode = 117,7667 .opcode = 161,
6536 .operands = &.{7668 .operands = &.{
6537 .{ .kind = .id_result_type, .quantifier = .required },7669 .{ .kind = .id_result_type, .quantifier = .required },
6538 .{ .kind = .id_result, .quantifier = .required },7670 .{ .kind = .id_result, .quantifier = .required },
6539 .{ .kind = .id_ref, .quantifier = .required },7671 .{ .kind = .id_ref, .quantifier = .required },
7672 .{ .kind = .id_ref, .quantifier = .required },
6540 },7673 },
6541 },7674 },
6542 .{7675 .{
6543 .name = "OpSatConvertSToU",7676 .name = "OpOrdered",
6544 .opcode = 118,7677 .opcode = 162,
6545 .operands = &.{7678 .operands = &.{
6546 .{ .kind = .id_result_type, .quantifier = .required },7679 .{ .kind = .id_result_type, .quantifier = .required },
6547 .{ .kind = .id_result, .quantifier = .required },7680 .{ .kind = .id_result, .quantifier = .required },
6548 .{ .kind = .id_ref, .quantifier = .required },7681 .{ .kind = .id_ref, .quantifier = .required },
7682 .{ .kind = .id_ref, .quantifier = .required },
6549 },7683 },
6550 },7684 },
6551 .{7685 .{
6552 .name = "OpSatConvertUToS",7686 .name = "OpUnordered",
6553 .opcode = 119,7687 .opcode = 163,
6554 .operands = &.{7688 .operands = &.{
6555 .{ .kind = .id_result_type, .quantifier = .required },7689 .{ .kind = .id_result_type, .quantifier = .required },
6556 .{ .kind = .id_result, .quantifier = .required },7690 .{ .kind = .id_result, .quantifier = .required },
6557 .{ .kind = .id_ref, .quantifier = .required },7691 .{ .kind = .id_ref, .quantifier = .required },
7692 .{ .kind = .id_ref, .quantifier = .required },
6558 },7693 },
6559 },7694 },
6560 .{7695 .{
6561 .name = "OpConvertUToPtr",7696 .name = "OpLogicalEqual",
6562 .opcode = 120,7697 .opcode = 164,
6563 .operands = &.{7698 .operands = &.{
6564 .{ .kind = .id_result_type, .quantifier = .required },7699 .{ .kind = .id_result_type, .quantifier = .required },
6565 .{ .kind = .id_result, .quantifier = .required },7700 .{ .kind = .id_result, .quantifier = .required },
6566 .{ .kind = .id_ref, .quantifier = .required },7701 .{ .kind = .id_ref, .quantifier = .required },
7702 .{ .kind = .id_ref, .quantifier = .required },
6567 },7703 },
6568 },7704 },
6569 .{7705 .{
6570 .name = "OpPtrCastToGeneric",7706 .name = "OpLogicalNotEqual",
6571 .opcode = 121,7707 .opcode = 165,
6572 .operands = &.{7708 .operands = &.{
6573 .{ .kind = .id_result_type, .quantifier = .required },7709 .{ .kind = .id_result_type, .quantifier = .required },
6574 .{ .kind = .id_result, .quantifier = .required },7710 .{ .kind = .id_result, .quantifier = .required },
6575 .{ .kind = .id_ref, .quantifier = .required },7711 .{ .kind = .id_ref, .quantifier = .required },
7712 .{ .kind = .id_ref, .quantifier = .required },
6576 },7713 },
6577 },7714 },
6578 .{7715 .{
6579 .name = "OpGenericCastToPtr",7716 .name = "OpLogicalOr",
6580 .opcode = 122,7717 .opcode = 166,
6581 .operands = &.{7718 .operands = &.{
6582 .{ .kind = .id_result_type, .quantifier = .required },7719 .{ .kind = .id_result_type, .quantifier = .required },
6583 .{ .kind = .id_result, .quantifier = .required },7720 .{ .kind = .id_result, .quantifier = .required },
6584 .{ .kind = .id_ref, .quantifier = .required },7721 .{ .kind = .id_ref, .quantifier = .required },
7722 .{ .kind = .id_ref, .quantifier = .required },
6585 },7723 },
6586 },7724 },
6587 .{7725 .{
6588 .name = "OpGenericCastToPtrExplicit",7726 .name = "OpLogicalAnd",
6589 .opcode = 123,7727 .opcode = 167,
6590 .operands = &.{7728 .operands = &.{
6591 .{ .kind = .id_result_type, .quantifier = .required },7729 .{ .kind = .id_result_type, .quantifier = .required },
6592 .{ .kind = .id_result, .quantifier = .required },7730 .{ .kind = .id_result, .quantifier = .required },
6593 .{ .kind = .id_ref, .quantifier = .required },7731 .{ .kind = .id_ref, .quantifier = .required },
6594 .{ .kind = .storage_class, .quantifier = .required },7732 .{ .kind = .id_ref, .quantifier = .required },
6595 },7733 },
6596 },7734 },
6597 .{7735 .{
6598 .name = "OpBitcast",7736 .name = "OpLogicalNot",
6599 .opcode = 124,7737 .opcode = 168,
6600 .operands = &.{7738 .operands = &.{
6601 .{ .kind = .id_result_type, .quantifier = .required },7739 .{ .kind = .id_result_type, .quantifier = .required },
6602 .{ .kind = .id_result, .quantifier = .required },7740 .{ .kind = .id_result, .quantifier = .required },
...@@ -6604,26 +7742,29 @@ pub const InstructionSet = enum {...@@ -6604,26 +7742,29 @@ pub const InstructionSet = enum {
6604 },7742 },
6605 },7743 },
6606 .{7744 .{
6607 .name = "OpSNegate",7745 .name = "OpSelect",
6608 .opcode = 126,7746 .opcode = 169,
6609 .operands = &.{7747 .operands = &.{
6610 .{ .kind = .id_result_type, .quantifier = .required },7748 .{ .kind = .id_result_type, .quantifier = .required },
6611 .{ .kind = .id_result, .quantifier = .required },7749 .{ .kind = .id_result, .quantifier = .required },
6612 .{ .kind = .id_ref, .quantifier = .required },7750 .{ .kind = .id_ref, .quantifier = .required },
7751 .{ .kind = .id_ref, .quantifier = .required },
7752 .{ .kind = .id_ref, .quantifier = .required },
6613 },7753 },
6614 },7754 },
6615 .{7755 .{
6616 .name = "OpFNegate",7756 .name = "OpIEqual",
6617 .opcode = 127,7757 .opcode = 170,
6618 .operands = &.{7758 .operands = &.{
6619 .{ .kind = .id_result_type, .quantifier = .required },7759 .{ .kind = .id_result_type, .quantifier = .required },
6620 .{ .kind = .id_result, .quantifier = .required },7760 .{ .kind = .id_result, .quantifier = .required },
6621 .{ .kind = .id_ref, .quantifier = .required },7761 .{ .kind = .id_ref, .quantifier = .required },
7762 .{ .kind = .id_ref, .quantifier = .required },
6622 },7763 },
6623 },7764 },
6624 .{7765 .{
6625 .name = "OpIAdd",7766 .name = "OpINotEqual",
6626 .opcode = 128,7767 .opcode = 171,
6627 .operands = &.{7768 .operands = &.{
6628 .{ .kind = .id_result_type, .quantifier = .required },7769 .{ .kind = .id_result_type, .quantifier = .required },
6629 .{ .kind = .id_result, .quantifier = .required },7770 .{ .kind = .id_result, .quantifier = .required },
...@@ -6632,8 +7773,8 @@ pub const InstructionSet = enum {...@@ -6632,8 +7773,8 @@ pub const InstructionSet = enum {
6632 },7773 },
6633 },7774 },
6634 .{7775 .{
6635 .name = "OpFAdd",7776 .name = "OpUGreaterThan",
6636 .opcode = 129,7777 .opcode = 172,
6637 .operands = &.{7778 .operands = &.{
6638 .{ .kind = .id_result_type, .quantifier = .required },7779 .{ .kind = .id_result_type, .quantifier = .required },
6639 .{ .kind = .id_result, .quantifier = .required },7780 .{ .kind = .id_result, .quantifier = .required },
...@@ -6642,8 +7783,8 @@ pub const InstructionSet = enum {...@@ -6642,8 +7783,8 @@ pub const InstructionSet = enum {
6642 },7783 },
6643 },7784 },
6644 .{7785 .{
6645 .name = "OpISub",7786 .name = "OpSGreaterThan",
6646 .opcode = 130,7787 .opcode = 173,
6647 .operands = &.{7788 .operands = &.{
6648 .{ .kind = .id_result_type, .quantifier = .required },7789 .{ .kind = .id_result_type, .quantifier = .required },
6649 .{ .kind = .id_result, .quantifier = .required },7790 .{ .kind = .id_result, .quantifier = .required },
...@@ -6652,8 +7793,8 @@ pub const InstructionSet = enum {...@@ -6652,8 +7793,8 @@ pub const InstructionSet = enum {
6652 },7793 },
6653 },7794 },
6654 .{7795 .{
6655 .name = "OpFSub",7796 .name = "OpUGreaterThanEqual",
6656 .opcode = 131,7797 .opcode = 174,
6657 .operands = &.{7798 .operands = &.{
6658 .{ .kind = .id_result_type, .quantifier = .required },7799 .{ .kind = .id_result_type, .quantifier = .required },
6659 .{ .kind = .id_result, .quantifier = .required },7800 .{ .kind = .id_result, .quantifier = .required },
...@@ -6662,8 +7803,8 @@ pub const InstructionSet = enum {...@@ -6662,8 +7803,8 @@ pub const InstructionSet = enum {
6662 },7803 },
6663 },7804 },
6664 .{7805 .{
6665 .name = "OpIMul",7806 .name = "OpSGreaterThanEqual",
6666 .opcode = 132,7807 .opcode = 175,
6667 .operands = &.{7808 .operands = &.{
6668 .{ .kind = .id_result_type, .quantifier = .required },7809 .{ .kind = .id_result_type, .quantifier = .required },
6669 .{ .kind = .id_result, .quantifier = .required },7810 .{ .kind = .id_result, .quantifier = .required },
...@@ -6672,8 +7813,8 @@ pub const InstructionSet = enum {...@@ -6672,8 +7813,8 @@ pub const InstructionSet = enum {
6672 },7813 },
6673 },7814 },
6674 .{7815 .{
6675 .name = "OpFMul",7816 .name = "OpULessThan",
6676 .opcode = 133,7817 .opcode = 176,
6677 .operands = &.{7818 .operands = &.{
6678 .{ .kind = .id_result_type, .quantifier = .required },7819 .{ .kind = .id_result_type, .quantifier = .required },
6679 .{ .kind = .id_result, .quantifier = .required },7820 .{ .kind = .id_result, .quantifier = .required },
...@@ -6682,8 +7823,8 @@ pub const InstructionSet = enum {...@@ -6682,8 +7823,8 @@ pub const InstructionSet = enum {
6682 },7823 },
6683 },7824 },
6684 .{7825 .{
6685 .name = "OpUDiv",7826 .name = "OpSLessThan",
6686 .opcode = 134,7827 .opcode = 177,
6687 .operands = &.{7828 .operands = &.{
6688 .{ .kind = .id_result_type, .quantifier = .required },7829 .{ .kind = .id_result_type, .quantifier = .required },
6689 .{ .kind = .id_result, .quantifier = .required },7830 .{ .kind = .id_result, .quantifier = .required },
...@@ -6692,8 +7833,8 @@ pub const InstructionSet = enum {...@@ -6692,8 +7833,8 @@ pub const InstructionSet = enum {
6692 },7833 },
6693 },7834 },
6694 .{7835 .{
6695 .name = "OpSDiv",7836 .name = "OpULessThanEqual",
6696 .opcode = 135,7837 .opcode = 178,
6697 .operands = &.{7838 .operands = &.{
6698 .{ .kind = .id_result_type, .quantifier = .required },7839 .{ .kind = .id_result_type, .quantifier = .required },
6699 .{ .kind = .id_result, .quantifier = .required },7840 .{ .kind = .id_result, .quantifier = .required },
...@@ -6702,8 +7843,8 @@ pub const InstructionSet = enum {...@@ -6702,8 +7843,8 @@ pub const InstructionSet = enum {
6702 },7843 },
6703 },7844 },
6704 .{7845 .{
6705 .name = "OpFDiv",7846 .name = "OpSLessThanEqual",
6706 .opcode = 136,7847 .opcode = 179,
6707 .operands = &.{7848 .operands = &.{
6708 .{ .kind = .id_result_type, .quantifier = .required },7849 .{ .kind = .id_result_type, .quantifier = .required },
6709 .{ .kind = .id_result, .quantifier = .required },7850 .{ .kind = .id_result, .quantifier = .required },
...@@ -6712,8 +7853,8 @@ pub const InstructionSet = enum {...@@ -6712,8 +7853,8 @@ pub const InstructionSet = enum {
6712 },7853 },
6713 },7854 },
6714 .{7855 .{
6715 .name = "OpUMod",7856 .name = "OpFOrdEqual",
6716 .opcode = 137,7857 .opcode = 180,
6717 .operands = &.{7858 .operands = &.{
6718 .{ .kind = .id_result_type, .quantifier = .required },7859 .{ .kind = .id_result_type, .quantifier = .required },
6719 .{ .kind = .id_result, .quantifier = .required },7860 .{ .kind = .id_result, .quantifier = .required },
...@@ -6722,8 +7863,8 @@ pub const InstructionSet = enum {...@@ -6722,8 +7863,8 @@ pub const InstructionSet = enum {
6722 },7863 },
6723 },7864 },
6724 .{7865 .{
6725 .name = "OpSRem",7866 .name = "OpFUnordEqual",
6726 .opcode = 138,7867 .opcode = 181,
6727 .operands = &.{7868 .operands = &.{
6728 .{ .kind = .id_result_type, .quantifier = .required },7869 .{ .kind = .id_result_type, .quantifier = .required },
6729 .{ .kind = .id_result, .quantifier = .required },7870 .{ .kind = .id_result, .quantifier = .required },
...@@ -6732,8 +7873,8 @@ pub const InstructionSet = enum {...@@ -6732,8 +7873,8 @@ pub const InstructionSet = enum {
6732 },7873 },
6733 },7874 },
6734 .{7875 .{
6735 .name = "OpSMod",7876 .name = "OpFOrdNotEqual",
6736 .opcode = 139,7877 .opcode = 182,
6737 .operands = &.{7878 .operands = &.{
6738 .{ .kind = .id_result_type, .quantifier = .required },7879 .{ .kind = .id_result_type, .quantifier = .required },
6739 .{ .kind = .id_result, .quantifier = .required },7880 .{ .kind = .id_result, .quantifier = .required },
...@@ -6742,8 +7883,8 @@ pub const InstructionSet = enum {...@@ -6742,8 +7883,8 @@ pub const InstructionSet = enum {
6742 },7883 },
6743 },7884 },
6744 .{7885 .{
6745 .name = "OpFRem",7886 .name = "OpFUnordNotEqual",
6746 .opcode = 140,7887 .opcode = 183,
6747 .operands = &.{7888 .operands = &.{
6748 .{ .kind = .id_result_type, .quantifier = .required },7889 .{ .kind = .id_result_type, .quantifier = .required },
6749 .{ .kind = .id_result, .quantifier = .required },7890 .{ .kind = .id_result, .quantifier = .required },
...@@ -6752,8 +7893,8 @@ pub const InstructionSet = enum {...@@ -6752,8 +7893,8 @@ pub const InstructionSet = enum {
6752 },7893 },
6753 },7894 },
6754 .{7895 .{
6755 .name = "OpFMod",7896 .name = "OpFOrdLessThan",
6756 .opcode = 141,7897 .opcode = 184,
6757 .operands = &.{7898 .operands = &.{
6758 .{ .kind = .id_result_type, .quantifier = .required },7899 .{ .kind = .id_result_type, .quantifier = .required },
6759 .{ .kind = .id_result, .quantifier = .required },7900 .{ .kind = .id_result, .quantifier = .required },
...@@ -6762,8 +7903,8 @@ pub const InstructionSet = enum {...@@ -6762,8 +7903,8 @@ pub const InstructionSet = enum {
6762 },7903 },
6763 },7904 },
6764 .{7905 .{
6765 .name = "OpVectorTimesScalar",7906 .name = "OpFUnordLessThan",
6766 .opcode = 142,7907 .opcode = 185,
6767 .operands = &.{7908 .operands = &.{
6768 .{ .kind = .id_result_type, .quantifier = .required },7909 .{ .kind = .id_result_type, .quantifier = .required },
6769 .{ .kind = .id_result, .quantifier = .required },7910 .{ .kind = .id_result, .quantifier = .required },
...@@ -6771,9 +7912,9 @@ pub const InstructionSet = enum {...@@ -6771,9 +7912,9 @@ pub const InstructionSet = enum {
6771 .{ .kind = .id_ref, .quantifier = .required },7912 .{ .kind = .id_ref, .quantifier = .required },
6772 },7913 },
6773 },7914 },
6774 .{7915 .{
6775 .name = "OpMatrixTimesScalar",7916 .name = "OpFOrdGreaterThan",
6776 .opcode = 143,7917 .opcode = 186,
6777 .operands = &.{7918 .operands = &.{
6778 .{ .kind = .id_result_type, .quantifier = .required },7919 .{ .kind = .id_result_type, .quantifier = .required },
6779 .{ .kind = .id_result, .quantifier = .required },7920 .{ .kind = .id_result, .quantifier = .required },
...@@ -6782,8 +7923,8 @@ pub const InstructionSet = enum {...@@ -6782,8 +7923,8 @@ pub const InstructionSet = enum {
6782 },7923 },
6783 },7924 },
6784 .{7925 .{
6785 .name = "OpVectorTimesMatrix",7926 .name = "OpFUnordGreaterThan",
6786 .opcode = 144,7927 .opcode = 187,
6787 .operands = &.{7928 .operands = &.{
6788 .{ .kind = .id_result_type, .quantifier = .required },7929 .{ .kind = .id_result_type, .quantifier = .required },
6789 .{ .kind = .id_result, .quantifier = .required },7930 .{ .kind = .id_result, .quantifier = .required },
...@@ -6792,8 +7933,8 @@ pub const InstructionSet = enum {...@@ -6792,8 +7933,8 @@ pub const InstructionSet = enum {
6792 },7933 },
6793 },7934 },
6794 .{7935 .{
6795 .name = "OpMatrixTimesVector",7936 .name = "OpFOrdLessThanEqual",
6796 .opcode = 145,7937 .opcode = 188,
6797 .operands = &.{7938 .operands = &.{
6798 .{ .kind = .id_result_type, .quantifier = .required },7939 .{ .kind = .id_result_type, .quantifier = .required },
6799 .{ .kind = .id_result, .quantifier = .required },7940 .{ .kind = .id_result, .quantifier = .required },
...@@ -6802,8 +7943,8 @@ pub const InstructionSet = enum {...@@ -6802,8 +7943,8 @@ pub const InstructionSet = enum {
6802 },7943 },
6803 },7944 },
6804 .{7945 .{
6805 .name = "OpMatrixTimesMatrix",7946 .name = "OpFUnordLessThanEqual",
6806 .opcode = 146,7947 .opcode = 189,
6807 .operands = &.{7948 .operands = &.{
6808 .{ .kind = .id_result_type, .quantifier = .required },7949 .{ .kind = .id_result_type, .quantifier = .required },
6809 .{ .kind = .id_result, .quantifier = .required },7950 .{ .kind = .id_result, .quantifier = .required },
...@@ -6812,8 +7953,8 @@ pub const InstructionSet = enum {...@@ -6812,8 +7953,8 @@ pub const InstructionSet = enum {
6812 },7953 },
6813 },7954 },
6814 .{7955 .{
6815 .name = "OpOuterProduct",7956 .name = "OpFOrdGreaterThanEqual",
6816 .opcode = 147,7957 .opcode = 190,
6817 .operands = &.{7958 .operands = &.{
6818 .{ .kind = .id_result_type, .quantifier = .required },7959 .{ .kind = .id_result_type, .quantifier = .required },
6819 .{ .kind = .id_result, .quantifier = .required },7960 .{ .kind = .id_result, .quantifier = .required },
...@@ -6822,8 +7963,8 @@ pub const InstructionSet = enum {...@@ -6822,8 +7963,8 @@ pub const InstructionSet = enum {
6822 },7963 },
6823 },7964 },
6824 .{7965 .{
6825 .name = "OpDot",7966 .name = "OpFUnordGreaterThanEqual",
6826 .opcode = 148,7967 .opcode = 191,
6827 .operands = &.{7968 .operands = &.{
6828 .{ .kind = .id_result_type, .quantifier = .required },7969 .{ .kind = .id_result_type, .quantifier = .required },
6829 .{ .kind = .id_result, .quantifier = .required },7970 .{ .kind = .id_result, .quantifier = .required },
...@@ -6832,8 +7973,8 @@ pub const InstructionSet = enum {...@@ -6832,8 +7973,8 @@ pub const InstructionSet = enum {
6832 },7973 },
6833 },7974 },
6834 .{7975 .{
6835 .name = "OpIAddCarry",7976 .name = "OpShiftRightLogical",
6836 .opcode = 149,7977 .opcode = 194,
6837 .operands = &.{7978 .operands = &.{
6838 .{ .kind = .id_result_type, .quantifier = .required },7979 .{ .kind = .id_result_type, .quantifier = .required },
6839 .{ .kind = .id_result, .quantifier = .required },7980 .{ .kind = .id_result, .quantifier = .required },
...@@ -6842,8 +7983,8 @@ pub const InstructionSet = enum {...@@ -6842,8 +7983,8 @@ pub const InstructionSet = enum {
6842 },7983 },
6843 },7984 },
6844 .{7985 .{
6845 .name = "OpISubBorrow",7986 .name = "OpShiftRightArithmetic",
6846 .opcode = 150,7987 .opcode = 195,
6847 .operands = &.{7988 .operands = &.{
6848 .{ .kind = .id_result_type, .quantifier = .required },7989 .{ .kind = .id_result_type, .quantifier = .required },
6849 .{ .kind = .id_result, .quantifier = .required },7990 .{ .kind = .id_result, .quantifier = .required },
...@@ -6852,8 +7993,8 @@ pub const InstructionSet = enum {...@@ -6852,8 +7993,8 @@ pub const InstructionSet = enum {
6852 },7993 },
6853 },7994 },
6854 .{7995 .{
6855 .name = "OpUMulExtended",7996 .name = "OpShiftLeftLogical",
6856 .opcode = 151,7997 .opcode = 196,
6857 .operands = &.{7998 .operands = &.{
6858 .{ .kind = .id_result_type, .quantifier = .required },7999 .{ .kind = .id_result_type, .quantifier = .required },
6859 .{ .kind = .id_result, .quantifier = .required },8000 .{ .kind = .id_result, .quantifier = .required },
...@@ -6862,8 +8003,8 @@ pub const InstructionSet = enum {...@@ -6862,8 +8003,8 @@ pub const InstructionSet = enum {
6862 },8003 },
6863 },8004 },
6864 .{8005 .{
6865 .name = "OpSMulExtended",8006 .name = "OpBitwiseOr",
6866 .opcode = 152,8007 .opcode = 197,
6867 .operands = &.{8008 .operands = &.{
6868 .{ .kind = .id_result_type, .quantifier = .required },8009 .{ .kind = .id_result_type, .quantifier = .required },
6869 .{ .kind = .id_result, .quantifier = .required },8010 .{ .kind = .id_result, .quantifier = .required },
...@@ -6872,26 +8013,28 @@ pub const InstructionSet = enum {...@@ -6872,26 +8013,28 @@ pub const InstructionSet = enum {
6872 },8013 },
6873 },8014 },
6874 .{8015 .{
6875 .name = "OpAny",8016 .name = "OpBitwiseXor",
6876 .opcode = 154,8017 .opcode = 198,
6877 .operands = &.{8018 .operands = &.{
6878 .{ .kind = .id_result_type, .quantifier = .required },8019 .{ .kind = .id_result_type, .quantifier = .required },
6879 .{ .kind = .id_result, .quantifier = .required },8020 .{ .kind = .id_result, .quantifier = .required },
6880 .{ .kind = .id_ref, .quantifier = .required },8021 .{ .kind = .id_ref, .quantifier = .required },
8022 .{ .kind = .id_ref, .quantifier = .required },
6881 },8023 },
6882 },8024 },
6883 .{8025 .{
6884 .name = "OpAll",8026 .name = "OpBitwiseAnd",
6885 .opcode = 155,8027 .opcode = 199,
6886 .operands = &.{8028 .operands = &.{
6887 .{ .kind = .id_result_type, .quantifier = .required },8029 .{ .kind = .id_result_type, .quantifier = .required },
6888 .{ .kind = .id_result, .quantifier = .required },8030 .{ .kind = .id_result, .quantifier = .required },
6889 .{ .kind = .id_ref, .quantifier = .required },8031 .{ .kind = .id_ref, .quantifier = .required },
8032 .{ .kind = .id_ref, .quantifier = .required },
6890 },8033 },
6891 },8034 },
6892 .{8035 .{
6893 .name = "OpIsNan",8036 .name = "OpNot",
6894 .opcode = 156,8037 .opcode = 200,
6895 .operands = &.{8038 .operands = &.{
6896 .{ .kind = .id_result_type, .quantifier = .required },8039 .{ .kind = .id_result_type, .quantifier = .required },
6897 .{ .kind = .id_result, .quantifier = .required },8040 .{ .kind = .id_result, .quantifier = .required },
...@@ -6899,35 +8042,42 @@ pub const InstructionSet = enum {...@@ -6899,35 +8042,42 @@ pub const InstructionSet = enum {
6899 },8042 },
6900 },8043 },
6901 .{8044 .{
6902 .name = "OpIsInf",8045 .name = "OpBitFieldInsert",
6903 .opcode = 157,8046 .opcode = 201,
6904 .operands = &.{8047 .operands = &.{
6905 .{ .kind = .id_result_type, .quantifier = .required },8048 .{ .kind = .id_result_type, .quantifier = .required },
6906 .{ .kind = .id_result, .quantifier = .required },8049 .{ .kind = .id_result, .quantifier = .required },
6907 .{ .kind = .id_ref, .quantifier = .required },8050 .{ .kind = .id_ref, .quantifier = .required },
8051 .{ .kind = .id_ref, .quantifier = .required },
8052 .{ .kind = .id_ref, .quantifier = .required },
8053 .{ .kind = .id_ref, .quantifier = .required },
6908 },8054 },
6909 },8055 },
6910 .{8056 .{
6911 .name = "OpIsFinite",8057 .name = "OpBitFieldSExtract",
6912 .opcode = 158,8058 .opcode = 202,
6913 .operands = &.{8059 .operands = &.{
6914 .{ .kind = .id_result_type, .quantifier = .required },8060 .{ .kind = .id_result_type, .quantifier = .required },
6915 .{ .kind = .id_result, .quantifier = .required },8061 .{ .kind = .id_result, .quantifier = .required },
6916 .{ .kind = .id_ref, .quantifier = .required },8062 .{ .kind = .id_ref, .quantifier = .required },
8063 .{ .kind = .id_ref, .quantifier = .required },
8064 .{ .kind = .id_ref, .quantifier = .required },
6917 },8065 },
6918 },8066 },
6919 .{8067 .{
6920 .name = "OpIsNormal",8068 .name = "OpBitFieldUExtract",
6921 .opcode = 159,8069 .opcode = 203,
6922 .operands = &.{8070 .operands = &.{
6923 .{ .kind = .id_result_type, .quantifier = .required },8071 .{ .kind = .id_result_type, .quantifier = .required },
6924 .{ .kind = .id_result, .quantifier = .required },8072 .{ .kind = .id_result, .quantifier = .required },
6925 .{ .kind = .id_ref, .quantifier = .required },8073 .{ .kind = .id_ref, .quantifier = .required },
8074 .{ .kind = .id_ref, .quantifier = .required },
8075 .{ .kind = .id_ref, .quantifier = .required },
6926 },8076 },
6927 },8077 },
6928 .{8078 .{
6929 .name = "OpSignBitSet",8079 .name = "OpBitReverse",
6930 .opcode = 160,8080 .opcode = 204,
6931 .operands = &.{8081 .operands = &.{
6932 .{ .kind = .id_result_type, .quantifier = .required },8082 .{ .kind = .id_result_type, .quantifier = .required },
6933 .{ .kind = .id_result, .quantifier = .required },8083 .{ .kind = .id_result, .quantifier = .required },
...@@ -6935,78 +8085,71 @@ pub const InstructionSet = enum {...@@ -6935,78 +8085,71 @@ pub const InstructionSet = enum {
6935 },8085 },
6936 },8086 },
6937 .{8087 .{
6938 .name = "OpLessOrGreater",8088 .name = "OpBitCount",
6939 .opcode = 161,8089 .opcode = 205,
6940 .operands = &.{8090 .operands = &.{
6941 .{ .kind = .id_result_type, .quantifier = .required },8091 .{ .kind = .id_result_type, .quantifier = .required },
6942 .{ .kind = .id_result, .quantifier = .required },8092 .{ .kind = .id_result, .quantifier = .required },
6943 .{ .kind = .id_ref, .quantifier = .required },8093 .{ .kind = .id_ref, .quantifier = .required },
6944 .{ .kind = .id_ref, .quantifier = .required },
6945 },8094 },
6946 },8095 },
6947 .{8096 .{
6948 .name = "OpOrdered",8097 .name = "OpDPdx",
6949 .opcode = 162,8098 .opcode = 207,
6950 .operands = &.{8099 .operands = &.{
6951 .{ .kind = .id_result_type, .quantifier = .required },8100 .{ .kind = .id_result_type, .quantifier = .required },
6952 .{ .kind = .id_result, .quantifier = .required },8101 .{ .kind = .id_result, .quantifier = .required },
6953 .{ .kind = .id_ref, .quantifier = .required },8102 .{ .kind = .id_ref, .quantifier = .required },
6954 .{ .kind = .id_ref, .quantifier = .required },
6955 },8103 },
6956 },8104 },
6957 .{8105 .{
6958 .name = "OpUnordered",8106 .name = "OpDPdy",
6959 .opcode = 163,8107 .opcode = 208,
6960 .operands = &.{8108 .operands = &.{
6961 .{ .kind = .id_result_type, .quantifier = .required },8109 .{ .kind = .id_result_type, .quantifier = .required },
6962 .{ .kind = .id_result, .quantifier = .required },8110 .{ .kind = .id_result, .quantifier = .required },
6963 .{ .kind = .id_ref, .quantifier = .required },8111 .{ .kind = .id_ref, .quantifier = .required },
6964 .{ .kind = .id_ref, .quantifier = .required },
6965 },8112 },
6966 },8113 },
6967 .{8114 .{
6968 .name = "OpLogicalEqual",8115 .name = "OpFwidth",
6969 .opcode = 164,8116 .opcode = 209,
6970 .operands = &.{8117 .operands = &.{
6971 .{ .kind = .id_result_type, .quantifier = .required },8118 .{ .kind = .id_result_type, .quantifier = .required },
6972 .{ .kind = .id_result, .quantifier = .required },8119 .{ .kind = .id_result, .quantifier = .required },
6973 .{ .kind = .id_ref, .quantifier = .required },8120 .{ .kind = .id_ref, .quantifier = .required },
6974 .{ .kind = .id_ref, .quantifier = .required },
6975 },8121 },
6976 },8122 },
6977 .{8123 .{
6978 .name = "OpLogicalNotEqual",8124 .name = "OpDPdxFine",
6979 .opcode = 165,8125 .opcode = 210,
6980 .operands = &.{8126 .operands = &.{
6981 .{ .kind = .id_result_type, .quantifier = .required },8127 .{ .kind = .id_result_type, .quantifier = .required },
6982 .{ .kind = .id_result, .quantifier = .required },8128 .{ .kind = .id_result, .quantifier = .required },
6983 .{ .kind = .id_ref, .quantifier = .required },8129 .{ .kind = .id_ref, .quantifier = .required },
6984 .{ .kind = .id_ref, .quantifier = .required },
6985 },8130 },
6986 },8131 },
6987 .{8132 .{
6988 .name = "OpLogicalOr",8133 .name = "OpDPdyFine",
6989 .opcode = 166,8134 .opcode = 211,
6990 .operands = &.{8135 .operands = &.{
6991 .{ .kind = .id_result_type, .quantifier = .required },8136 .{ .kind = .id_result_type, .quantifier = .required },
6992 .{ .kind = .id_result, .quantifier = .required },8137 .{ .kind = .id_result, .quantifier = .required },
6993 .{ .kind = .id_ref, .quantifier = .required },8138 .{ .kind = .id_ref, .quantifier = .required },
6994 .{ .kind = .id_ref, .quantifier = .required },
6995 },8139 },
6996 },8140 },
6997 .{8141 .{
6998 .name = "OpLogicalAnd",8142 .name = "OpFwidthFine",
6999 .opcode = 167,8143 .opcode = 212,
7000 .operands = &.{8144 .operands = &.{
7001 .{ .kind = .id_result_type, .quantifier = .required },8145 .{ .kind = .id_result_type, .quantifier = .required },
7002 .{ .kind = .id_result, .quantifier = .required },8146 .{ .kind = .id_result, .quantifier = .required },
7003 .{ .kind = .id_ref, .quantifier = .required },8147 .{ .kind = .id_ref, .quantifier = .required },
7004 .{ .kind = .id_ref, .quantifier = .required },
7005 },8148 },
7006 },8149 },
7007 .{8150 .{
7008 .name = "OpLogicalNot",8151 .name = "OpDPdxCoarse",
7009 .opcode = 168,8152 .opcode = 213,
7010 .operands = &.{8153 .operands = &.{
7011 .{ .kind = .id_result_type, .quantifier = .required },8154 .{ .kind = .id_result_type, .quantifier = .required },
7012 .{ .kind = .id_result, .quantifier = .required },8155 .{ .kind = .id_result, .quantifier = .required },
...@@ -7014,936 +8157,1028 @@ pub const InstructionSet = enum {...@@ -7014,936 +8157,1028 @@ pub const InstructionSet = enum {
7014 },8157 },
7015 },8158 },
7016 .{8159 .{
7017 .name = "OpSelect",8160 .name = "OpDPdyCoarse",
7018 .opcode = 169,8161 .opcode = 214,
7019 .operands = &.{8162 .operands = &.{
7020 .{ .kind = .id_result_type, .quantifier = .required },8163 .{ .kind = .id_result_type, .quantifier = .required },
7021 .{ .kind = .id_result, .quantifier = .required },8164 .{ .kind = .id_result, .quantifier = .required },
7022 .{ .kind = .id_ref, .quantifier = .required },8165 .{ .kind = .id_ref, .quantifier = .required },
7023 .{ .kind = .id_ref, .quantifier = .required },
7024 .{ .kind = .id_ref, .quantifier = .required },
7025 },8166 },
7026 },8167 },
7027 .{8168 .{
7028 .name = "OpIEqual",8169 .name = "OpFwidthCoarse",
7029 .opcode = 170,8170 .opcode = 215,
7030 .operands = &.{8171 .operands = &.{
7031 .{ .kind = .id_result_type, .quantifier = .required },8172 .{ .kind = .id_result_type, .quantifier = .required },
7032 .{ .kind = .id_result, .quantifier = .required },8173 .{ .kind = .id_result, .quantifier = .required },
7033 .{ .kind = .id_ref, .quantifier = .required },8174 .{ .kind = .id_ref, .quantifier = .required },
7034 .{ .kind = .id_ref, .quantifier = .required },
7035 },8175 },
7036 },8176 },
7037 .{8177 .{
7038 .name = "OpINotEqual",8178 .name = "OpEmitVertex",
7039 .opcode = 171,8179 .opcode = 218,
8180 .operands = &.{},
8181 },
8182 .{
8183 .name = "OpEndPrimitive",
8184 .opcode = 219,
8185 .operands = &.{},
8186 },
8187 .{
8188 .name = "OpEmitStreamVertex",
8189 .opcode = 220,
7040 .operands = &.{8190 .operands = &.{
7041 .{ .kind = .id_result_type, .quantifier = .required },
7042 .{ .kind = .id_result, .quantifier = .required },
7043 .{ .kind = .id_ref, .quantifier = .required },
7044 .{ .kind = .id_ref, .quantifier = .required },8191 .{ .kind = .id_ref, .quantifier = .required },
7045 },8192 },
7046 },8193 },
7047 .{8194 .{
7048 .name = "OpUGreaterThan",8195 .name = "OpEndStreamPrimitive",
7049 .opcode = 172,8196 .opcode = 221,
7050 .operands = &.{8197 .operands = &.{
7051 .{ .kind = .id_result_type, .quantifier = .required },
7052 .{ .kind = .id_result, .quantifier = .required },
7053 .{ .kind = .id_ref, .quantifier = .required },
7054 .{ .kind = .id_ref, .quantifier = .required },8198 .{ .kind = .id_ref, .quantifier = .required },
7055 },8199 },
7056 },8200 },
7057 .{8201 .{
7058 .name = "OpSGreaterThan",8202 .name = "OpControlBarrier",
7059 .opcode = 173,8203 .opcode = 224,
7060 .operands = &.{8204 .operands = &.{
7061 .{ .kind = .id_result_type, .quantifier = .required },8205 .{ .kind = .id_scope, .quantifier = .required },
7062 .{ .kind = .id_result, .quantifier = .required },8206 .{ .kind = .id_scope, .quantifier = .required },
7063 .{ .kind = .id_ref, .quantifier = .required },8207 .{ .kind = .id_memory_semantics, .quantifier = .required },
7064 .{ .kind = .id_ref, .quantifier = .required },
7065 },8208 },
7066 },8209 },
7067 .{8210 .{
7068 .name = "OpUGreaterThanEqual",8211 .name = "OpMemoryBarrier",
7069 .opcode = 174,8212 .opcode = 225,
7070 .operands = &.{8213 .operands = &.{
7071 .{ .kind = .id_result_type, .quantifier = .required },8214 .{ .kind = .id_scope, .quantifier = .required },
7072 .{ .kind = .id_result, .quantifier = .required },8215 .{ .kind = .id_memory_semantics, .quantifier = .required },
7073 .{ .kind = .id_ref, .quantifier = .required },
7074 .{ .kind = .id_ref, .quantifier = .required },
7075 },8216 },
7076 },8217 },
7077 .{8218 .{
7078 .name = "OpSGreaterThanEqual",8219 .name = "OpAtomicLoad",
7079 .opcode = 175,8220 .opcode = 227,
7080 .operands = &.{8221 .operands = &.{
7081 .{ .kind = .id_result_type, .quantifier = .required },8222 .{ .kind = .id_result_type, .quantifier = .required },
7082 .{ .kind = .id_result, .quantifier = .required },8223 .{ .kind = .id_result, .quantifier = .required },
7083 .{ .kind = .id_ref, .quantifier = .required },8224 .{ .kind = .id_ref, .quantifier = .required },
7084 .{ .kind = .id_ref, .quantifier = .required },8225 .{ .kind = .id_scope, .quantifier = .required },
8226 .{ .kind = .id_memory_semantics, .quantifier = .required },
7085 },8227 },
7086 },8228 },
7087 .{8229 .{
7088 .name = "OpULessThan",8230 .name = "OpAtomicStore",
7089 .opcode = 176,8231 .opcode = 228,
7090 .operands = &.{8232 .operands = &.{
7091 .{ .kind = .id_result_type, .quantifier = .required },
7092 .{ .kind = .id_result, .quantifier = .required },
7093 .{ .kind = .id_ref, .quantifier = .required },8233 .{ .kind = .id_ref, .quantifier = .required },
8234 .{ .kind = .id_scope, .quantifier = .required },
8235 .{ .kind = .id_memory_semantics, .quantifier = .required },
7094 .{ .kind = .id_ref, .quantifier = .required },8236 .{ .kind = .id_ref, .quantifier = .required },
7095 },8237 },
7096 },8238 },
7097 .{8239 .{
7098 .name = "OpSLessThan",8240 .name = "OpAtomicExchange",
7099 .opcode = 177,8241 .opcode = 229,
7100 .operands = &.{8242 .operands = &.{
7101 .{ .kind = .id_result_type, .quantifier = .required },8243 .{ .kind = .id_result_type, .quantifier = .required },
7102 .{ .kind = .id_result, .quantifier = .required },8244 .{ .kind = .id_result, .quantifier = .required },
7103 .{ .kind = .id_ref, .quantifier = .required },8245 .{ .kind = .id_ref, .quantifier = .required },
8246 .{ .kind = .id_scope, .quantifier = .required },
8247 .{ .kind = .id_memory_semantics, .quantifier = .required },
7104 .{ .kind = .id_ref, .quantifier = .required },8248 .{ .kind = .id_ref, .quantifier = .required },
7105 },8249 },
7106 },8250 },
7107 .{8251 .{
7108 .name = "OpULessThanEqual",8252 .name = "OpAtomicCompareExchange",
7109 .opcode = 178,8253 .opcode = 230,
7110 .operands = &.{8254 .operands = &.{
7111 .{ .kind = .id_result_type, .quantifier = .required },8255 .{ .kind = .id_result_type, .quantifier = .required },
7112 .{ .kind = .id_result, .quantifier = .required },8256 .{ .kind = .id_result, .quantifier = .required },
7113 .{ .kind = .id_ref, .quantifier = .required },8257 .{ .kind = .id_ref, .quantifier = .required },
8258 .{ .kind = .id_scope, .quantifier = .required },
8259 .{ .kind = .id_memory_semantics, .quantifier = .required },
8260 .{ .kind = .id_memory_semantics, .quantifier = .required },
8261 .{ .kind = .id_ref, .quantifier = .required },
7114 .{ .kind = .id_ref, .quantifier = .required },8262 .{ .kind = .id_ref, .quantifier = .required },
7115 },8263 },
7116 },8264 },
7117 .{8265 .{
7118 .name = "OpSLessThanEqual",8266 .name = "OpAtomicCompareExchangeWeak",
7119 .opcode = 179,8267 .opcode = 231,
7120 .operands = &.{8268 .operands = &.{
7121 .{ .kind = .id_result_type, .quantifier = .required },8269 .{ .kind = .id_result_type, .quantifier = .required },
7122 .{ .kind = .id_result, .quantifier = .required },8270 .{ .kind = .id_result, .quantifier = .required },
7123 .{ .kind = .id_ref, .quantifier = .required },8271 .{ .kind = .id_ref, .quantifier = .required },
8272 .{ .kind = .id_scope, .quantifier = .required },
8273 .{ .kind = .id_memory_semantics, .quantifier = .required },
8274 .{ .kind = .id_memory_semantics, .quantifier = .required },
8275 .{ .kind = .id_ref, .quantifier = .required },
7124 .{ .kind = .id_ref, .quantifier = .required },8276 .{ .kind = .id_ref, .quantifier = .required },
7125 },8277 },
7126 },8278 },
7127 .{8279 .{
7128 .name = "OpFOrdEqual",8280 .name = "OpAtomicIIncrement",
7129 .opcode = 180,8281 .opcode = 232,
7130 .operands = &.{8282 .operands = &.{
7131 .{ .kind = .id_result_type, .quantifier = .required },8283 .{ .kind = .id_result_type, .quantifier = .required },
7132 .{ .kind = .id_result, .quantifier = .required },8284 .{ .kind = .id_result, .quantifier = .required },
7133 .{ .kind = .id_ref, .quantifier = .required },8285 .{ .kind = .id_ref, .quantifier = .required },
7134 .{ .kind = .id_ref, .quantifier = .required },8286 .{ .kind = .id_scope, .quantifier = .required },
8287 .{ .kind = .id_memory_semantics, .quantifier = .required },
7135 },8288 },
7136 },8289 },
7137 .{8290 .{
7138 .name = "OpFUnordEqual",8291 .name = "OpAtomicIDecrement",
7139 .opcode = 181,8292 .opcode = 233,
7140 .operands = &.{8293 .operands = &.{
7141 .{ .kind = .id_result_type, .quantifier = .required },8294 .{ .kind = .id_result_type, .quantifier = .required },
7142 .{ .kind = .id_result, .quantifier = .required },8295 .{ .kind = .id_result, .quantifier = .required },
7143 .{ .kind = .id_ref, .quantifier = .required },8296 .{ .kind = .id_ref, .quantifier = .required },
7144 .{ .kind = .id_ref, .quantifier = .required },8297 .{ .kind = .id_scope, .quantifier = .required },
8298 .{ .kind = .id_memory_semantics, .quantifier = .required },
7145 },8299 },
7146 },8300 },
7147 .{8301 .{
7148 .name = "OpFOrdNotEqual",8302 .name = "OpAtomicIAdd",
7149 .opcode = 182,8303 .opcode = 234,
7150 .operands = &.{8304 .operands = &.{
7151 .{ .kind = .id_result_type, .quantifier = .required },8305 .{ .kind = .id_result_type, .quantifier = .required },
7152 .{ .kind = .id_result, .quantifier = .required },8306 .{ .kind = .id_result, .quantifier = .required },
7153 .{ .kind = .id_ref, .quantifier = .required },8307 .{ .kind = .id_ref, .quantifier = .required },
8308 .{ .kind = .id_scope, .quantifier = .required },
8309 .{ .kind = .id_memory_semantics, .quantifier = .required },
7154 .{ .kind = .id_ref, .quantifier = .required },8310 .{ .kind = .id_ref, .quantifier = .required },
7155 },8311 },
7156 },8312 },
7157 .{8313 .{
7158 .name = "OpFUnordNotEqual",8314 .name = "OpAtomicISub",
7159 .opcode = 183,8315 .opcode = 235,
7160 .operands = &.{8316 .operands = &.{
7161 .{ .kind = .id_result_type, .quantifier = .required },8317 .{ .kind = .id_result_type, .quantifier = .required },
7162 .{ .kind = .id_result, .quantifier = .required },8318 .{ .kind = .id_result, .quantifier = .required },
7163 .{ .kind = .id_ref, .quantifier = .required },8319 .{ .kind = .id_ref, .quantifier = .required },
8320 .{ .kind = .id_scope, .quantifier = .required },
8321 .{ .kind = .id_memory_semantics, .quantifier = .required },
7164 .{ .kind = .id_ref, .quantifier = .required },8322 .{ .kind = .id_ref, .quantifier = .required },
7165 },8323 },
7166 },8324 },
7167 .{8325 .{
7168 .name = "OpFOrdLessThan",8326 .name = "OpAtomicSMin",
7169 .opcode = 184,8327 .opcode = 236,
7170 .operands = &.{8328 .operands = &.{
7171 .{ .kind = .id_result_type, .quantifier = .required },8329 .{ .kind = .id_result_type, .quantifier = .required },
7172 .{ .kind = .id_result, .quantifier = .required },8330 .{ .kind = .id_result, .quantifier = .required },
7173 .{ .kind = .id_ref, .quantifier = .required },8331 .{ .kind = .id_ref, .quantifier = .required },
8332 .{ .kind = .id_scope, .quantifier = .required },
8333 .{ .kind = .id_memory_semantics, .quantifier = .required },
7174 .{ .kind = .id_ref, .quantifier = .required },8334 .{ .kind = .id_ref, .quantifier = .required },
7175 },8335 },
7176 },8336 },
7177 .{8337 .{
7178 .name = "OpFUnordLessThan",8338 .name = "OpAtomicUMin",
7179 .opcode = 185,8339 .opcode = 237,
7180 .operands = &.{8340 .operands = &.{
7181 .{ .kind = .id_result_type, .quantifier = .required },8341 .{ .kind = .id_result_type, .quantifier = .required },
7182 .{ .kind = .id_result, .quantifier = .required },8342 .{ .kind = .id_result, .quantifier = .required },
7183 .{ .kind = .id_ref, .quantifier = .required },8343 .{ .kind = .id_ref, .quantifier = .required },
8344 .{ .kind = .id_scope, .quantifier = .required },
8345 .{ .kind = .id_memory_semantics, .quantifier = .required },
7184 .{ .kind = .id_ref, .quantifier = .required },8346 .{ .kind = .id_ref, .quantifier = .required },
7185 },8347 },
7186 },8348 },
7187 .{8349 .{
7188 .name = "OpFOrdGreaterThan",8350 .name = "OpAtomicSMax",
7189 .opcode = 186,8351 .opcode = 238,
7190 .operands = &.{8352 .operands = &.{
7191 .{ .kind = .id_result_type, .quantifier = .required },8353 .{ .kind = .id_result_type, .quantifier = .required },
7192 .{ .kind = .id_result, .quantifier = .required },8354 .{ .kind = .id_result, .quantifier = .required },
7193 .{ .kind = .id_ref, .quantifier = .required },8355 .{ .kind = .id_ref, .quantifier = .required },
8356 .{ .kind = .id_scope, .quantifier = .required },
8357 .{ .kind = .id_memory_semantics, .quantifier = .required },
7194 .{ .kind = .id_ref, .quantifier = .required },8358 .{ .kind = .id_ref, .quantifier = .required },
7195 },8359 },
7196 },8360 },
7197 .{8361 .{
7198 .name = "OpFUnordGreaterThan",8362 .name = "OpAtomicUMax",
7199 .opcode = 187,8363 .opcode = 239,
7200 .operands = &.{8364 .operands = &.{
7201 .{ .kind = .id_result_type, .quantifier = .required },8365 .{ .kind = .id_result_type, .quantifier = .required },
7202 .{ .kind = .id_result, .quantifier = .required },8366 .{ .kind = .id_result, .quantifier = .required },
7203 .{ .kind = .id_ref, .quantifier = .required },8367 .{ .kind = .id_ref, .quantifier = .required },
8368 .{ .kind = .id_scope, .quantifier = .required },
8369 .{ .kind = .id_memory_semantics, .quantifier = .required },
7204 .{ .kind = .id_ref, .quantifier = .required },8370 .{ .kind = .id_ref, .quantifier = .required },
7205 },8371 },
7206 },8372 },
7207 .{8373 .{
7208 .name = "OpFOrdLessThanEqual",8374 .name = "OpAtomicAnd",
7209 .opcode = 188,8375 .opcode = 240,
7210 .operands = &.{8376 .operands = &.{
7211 .{ .kind = .id_result_type, .quantifier = .required },8377 .{ .kind = .id_result_type, .quantifier = .required },
7212 .{ .kind = .id_result, .quantifier = .required },8378 .{ .kind = .id_result, .quantifier = .required },
7213 .{ .kind = .id_ref, .quantifier = .required },8379 .{ .kind = .id_ref, .quantifier = .required },
8380 .{ .kind = .id_scope, .quantifier = .required },
8381 .{ .kind = .id_memory_semantics, .quantifier = .required },
7214 .{ .kind = .id_ref, .quantifier = .required },8382 .{ .kind = .id_ref, .quantifier = .required },
7215 },8383 },
7216 },8384 },
7217 .{8385 .{
7218 .name = "OpFUnordLessThanEqual",8386 .name = "OpAtomicOr",
7219 .opcode = 189,8387 .opcode = 241,
7220 .operands = &.{8388 .operands = &.{
7221 .{ .kind = .id_result_type, .quantifier = .required },8389 .{ .kind = .id_result_type, .quantifier = .required },
7222 .{ .kind = .id_result, .quantifier = .required },8390 .{ .kind = .id_result, .quantifier = .required },
7223 .{ .kind = .id_ref, .quantifier = .required },8391 .{ .kind = .id_ref, .quantifier = .required },
8392 .{ .kind = .id_scope, .quantifier = .required },
8393 .{ .kind = .id_memory_semantics, .quantifier = .required },
7224 .{ .kind = .id_ref, .quantifier = .required },8394 .{ .kind = .id_ref, .quantifier = .required },
7225 },8395 },
7226 },8396 },
7227 .{8397 .{
7228 .name = "OpFOrdGreaterThanEqual",8398 .name = "OpAtomicXor",
7229 .opcode = 190,8399 .opcode = 242,
7230 .operands = &.{8400 .operands = &.{
7231 .{ .kind = .id_result_type, .quantifier = .required },8401 .{ .kind = .id_result_type, .quantifier = .required },
7232 .{ .kind = .id_result, .quantifier = .required },8402 .{ .kind = .id_result, .quantifier = .required },
7233 .{ .kind = .id_ref, .quantifier = .required },8403 .{ .kind = .id_ref, .quantifier = .required },
8404 .{ .kind = .id_scope, .quantifier = .required },
8405 .{ .kind = .id_memory_semantics, .quantifier = .required },
7234 .{ .kind = .id_ref, .quantifier = .required },8406 .{ .kind = .id_ref, .quantifier = .required },
7235 },8407 },
7236 },8408 },
7237 .{8409 .{
7238 .name = "OpFUnordGreaterThanEqual",8410 .name = "OpPhi",
7239 .opcode = 191,8411 .opcode = 245,
7240 .operands = &.{8412 .operands = &.{
7241 .{ .kind = .id_result_type, .quantifier = .required },8413 .{ .kind = .id_result_type, .quantifier = .required },
7242 .{ .kind = .id_result, .quantifier = .required },8414 .{ .kind = .id_result, .quantifier = .required },
7243 .{ .kind = .id_ref, .quantifier = .required },8415 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },
7244 .{ .kind = .id_ref, .quantifier = .required },
7245 },8416 },
7246 },8417 },
7247 .{8418 .{
7248 .name = "OpShiftRightLogical",8419 .name = "OpLoopMerge",
7249 .opcode = 194,8420 .opcode = 246,
7250 .operands = &.{8421 .operands = &.{
7251 .{ .kind = .id_result_type, .quantifier = .required },
7252 .{ .kind = .id_result, .quantifier = .required },
7253 .{ .kind = .id_ref, .quantifier = .required },8422 .{ .kind = .id_ref, .quantifier = .required },
7254 .{ .kind = .id_ref, .quantifier = .required },8423 .{ .kind = .id_ref, .quantifier = .required },
8424 .{ .kind = .loop_control, .quantifier = .required },
7255 },8425 },
7256 },8426 },
7257 .{8427 .{
7258 .name = "OpShiftRightArithmetic",8428 .name = "OpSelectionMerge",
7259 .opcode = 195,8429 .opcode = 247,
7260 .operands = &.{8430 .operands = &.{
7261 .{ .kind = .id_result_type, .quantifier = .required },
7262 .{ .kind = .id_result, .quantifier = .required },
7263 .{ .kind = .id_ref, .quantifier = .required },
7264 .{ .kind = .id_ref, .quantifier = .required },8431 .{ .kind = .id_ref, .quantifier = .required },
8432 .{ .kind = .selection_control, .quantifier = .required },
7265 },8433 },
7266 },8434 },
7267 .{8435 .{
7268 .name = "OpShiftLeftLogical",8436 .name = "OpLabel",
7269 .opcode = 196,8437 .opcode = 248,
7270 .operands = &.{8438 .operands = &.{
7271 .{ .kind = .id_result_type, .quantifier = .required },
7272 .{ .kind = .id_result, .quantifier = .required },8439 .{ .kind = .id_result, .quantifier = .required },
7273 .{ .kind = .id_ref, .quantifier = .required },
7274 .{ .kind = .id_ref, .quantifier = .required },
7275 },8440 },
7276 },8441 },
7277 .{8442 .{
7278 .name = "OpBitwiseOr",8443 .name = "OpBranch",
7279 .opcode = 197,8444 .opcode = 249,
7280 .operands = &.{8445 .operands = &.{
7281 .{ .kind = .id_result_type, .quantifier = .required },
7282 .{ .kind = .id_result, .quantifier = .required },
7283 .{ .kind = .id_ref, .quantifier = .required },
7284 .{ .kind = .id_ref, .quantifier = .required },8446 .{ .kind = .id_ref, .quantifier = .required },
7285 },8447 },
7286 },8448 },
7287 .{8449 .{
7288 .name = "OpBitwiseXor",8450 .name = "OpBranchConditional",
7289 .opcode = 198,8451 .opcode = 250,
7290 .operands = &.{8452 .operands = &.{
7291 .{ .kind = .id_result_type, .quantifier = .required },
7292 .{ .kind = .id_result, .quantifier = .required },
7293 .{ .kind = .id_ref, .quantifier = .required },8453 .{ .kind = .id_ref, .quantifier = .required },
7294 .{ .kind = .id_ref, .quantifier = .required },8454 .{ .kind = .id_ref, .quantifier = .required },
8455 .{ .kind = .id_ref, .quantifier = .required },
8456 .{ .kind = .literal_integer, .quantifier = .variadic },
7295 },8457 },
7296 },8458 },
7297 .{8459 .{
7298 .name = "OpBitwiseAnd",8460 .name = "OpSwitch",
7299 .opcode = 199,8461 .opcode = 251,
7300 .operands = &.{8462 .operands = &.{
7301 .{ .kind = .id_result_type, .quantifier = .required },
7302 .{ .kind = .id_result, .quantifier = .required },
7303 .{ .kind = .id_ref, .quantifier = .required },8463 .{ .kind = .id_ref, .quantifier = .required },
7304 .{ .kind = .id_ref, .quantifier = .required },8464 .{ .kind = .id_ref, .quantifier = .required },
8465 .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic },
7305 },8466 },
7306 },8467 },
7307 .{8468 .{
7308 .name = "OpNot",8469 .name = "OpKill",
7309 .opcode = 200,8470 .opcode = 252,
8471 .operands = &.{},
8472 },
8473 .{
8474 .name = "OpReturn",
8475 .opcode = 253,
8476 .operands = &.{},
8477 },
8478 .{
8479 .name = "OpReturnValue",
8480 .opcode = 254,
7310 .operands = &.{8481 .operands = &.{
7311 .{ .kind = .id_result_type, .quantifier = .required },
7312 .{ .kind = .id_result, .quantifier = .required },
7313 .{ .kind = .id_ref, .quantifier = .required },8482 .{ .kind = .id_ref, .quantifier = .required },
7314 },8483 },
7315 },8484 },
7316 .{8485 .{
7317 .name = "OpBitFieldInsert",8486 .name = "OpUnreachable",
7318 .opcode = 201,8487 .opcode = 255,
8488 .operands = &.{},
8489 },
8490 .{
8491 .name = "OpLifetimeStart",
8492 .opcode = 256,
7319 .operands = &.{8493 .operands = &.{
7320 .{ .kind = .id_result_type, .quantifier = .required },
7321 .{ .kind = .id_result, .quantifier = .required },
7322 .{ .kind = .id_ref, .quantifier = .required },
7323 .{ .kind = .id_ref, .quantifier = .required },
7324 .{ .kind = .id_ref, .quantifier = .required },
7325 .{ .kind = .id_ref, .quantifier = .required },8494 .{ .kind = .id_ref, .quantifier = .required },
8495 .{ .kind = .literal_integer, .quantifier = .required },
7326 },8496 },
7327 },8497 },
7328 .{8498 .{
7329 .name = "OpBitFieldSExtract",8499 .name = "OpLifetimeStop",
7330 .opcode = 202,8500 .opcode = 257,
7331 .operands = &.{8501 .operands = &.{
7332 .{ .kind = .id_result_type, .quantifier = .required },
7333 .{ .kind = .id_result, .quantifier = .required },
7334 .{ .kind = .id_ref, .quantifier = .required },
7335 .{ .kind = .id_ref, .quantifier = .required },
7336 .{ .kind = .id_ref, .quantifier = .required },8502 .{ .kind = .id_ref, .quantifier = .required },
8503 .{ .kind = .literal_integer, .quantifier = .required },
7337 },8504 },
7338 },8505 },
7339 .{8506 .{
7340 .name = "OpBitFieldUExtract",8507 .name = "OpGroupAsyncCopy",
7341 .opcode = 203,8508 .opcode = 259,
7342 .operands = &.{8509 .operands = &.{
7343 .{ .kind = .id_result_type, .quantifier = .required },8510 .{ .kind = .id_result_type, .quantifier = .required },
7344 .{ .kind = .id_result, .quantifier = .required },8511 .{ .kind = .id_result, .quantifier = .required },
8512 .{ .kind = .id_scope, .quantifier = .required },
8513 .{ .kind = .id_ref, .quantifier = .required },
8514 .{ .kind = .id_ref, .quantifier = .required },
7345 .{ .kind = .id_ref, .quantifier = .required },8515 .{ .kind = .id_ref, .quantifier = .required },
7346 .{ .kind = .id_ref, .quantifier = .required },8516 .{ .kind = .id_ref, .quantifier = .required },
7347 .{ .kind = .id_ref, .quantifier = .required },8517 .{ .kind = .id_ref, .quantifier = .required },
7348 },8518 },
7349 },8519 },
7350 .{8520 .{
7351 .name = "OpBitReverse",8521 .name = "OpGroupWaitEvents",
7352 .opcode = 204,8522 .opcode = 260,
7353 .operands = &.{8523 .operands = &.{
7354 .{ .kind = .id_result_type, .quantifier = .required },8524 .{ .kind = .id_scope, .quantifier = .required },
7355 .{ .kind = .id_result, .quantifier = .required },8525 .{ .kind = .id_ref, .quantifier = .required },
7356 .{ .kind = .id_ref, .quantifier = .required },8526 .{ .kind = .id_ref, .quantifier = .required },
7357 },8527 },
7358 },8528 },
7359 .{8529 .{
7360 .name = "OpBitCount",8530 .name = "OpGroupAll",
7361 .opcode = 205,8531 .opcode = 261,
7362 .operands = &.{8532 .operands = &.{
7363 .{ .kind = .id_result_type, .quantifier = .required },8533 .{ .kind = .id_result_type, .quantifier = .required },
7364 .{ .kind = .id_result, .quantifier = .required },8534 .{ .kind = .id_result, .quantifier = .required },
8535 .{ .kind = .id_scope, .quantifier = .required },
7365 .{ .kind = .id_ref, .quantifier = .required },8536 .{ .kind = .id_ref, .quantifier = .required },
7366 },8537 },
7367 },8538 },
7368 .{8539 .{
7369 .name = "OpDPdx",8540 .name = "OpGroupAny",
7370 .opcode = 207,8541 .opcode = 262,
7371 .operands = &.{8542 .operands = &.{
7372 .{ .kind = .id_result_type, .quantifier = .required },8543 .{ .kind = .id_result_type, .quantifier = .required },
7373 .{ .kind = .id_result, .quantifier = .required },8544 .{ .kind = .id_result, .quantifier = .required },
8545 .{ .kind = .id_scope, .quantifier = .required },
7374 .{ .kind = .id_ref, .quantifier = .required },8546 .{ .kind = .id_ref, .quantifier = .required },
7375 },8547 },
7376 },8548 },
7377 .{8549 .{
7378 .name = "OpDPdy",8550 .name = "OpGroupBroadcast",
7379 .opcode = 208,8551 .opcode = 263,
7380 .operands = &.{8552 .operands = &.{
7381 .{ .kind = .id_result_type, .quantifier = .required },8553 .{ .kind = .id_result_type, .quantifier = .required },
7382 .{ .kind = .id_result, .quantifier = .required },8554 .{ .kind = .id_result, .quantifier = .required },
8555 .{ .kind = .id_scope, .quantifier = .required },
8556 .{ .kind = .id_ref, .quantifier = .required },
7383 .{ .kind = .id_ref, .quantifier = .required },8557 .{ .kind = .id_ref, .quantifier = .required },
7384 },8558 },
7385 },8559 },
7386 .{8560 .{
7387 .name = "OpFwidth",8561 .name = "OpGroupIAdd",
7388 .opcode = 209,8562 .opcode = 264,
7389 .operands = &.{8563 .operands = &.{
7390 .{ .kind = .id_result_type, .quantifier = .required },8564 .{ .kind = .id_result_type, .quantifier = .required },
7391 .{ .kind = .id_result, .quantifier = .required },8565 .{ .kind = .id_result, .quantifier = .required },
8566 .{ .kind = .id_scope, .quantifier = .required },
8567 .{ .kind = .group_operation, .quantifier = .required },
7392 .{ .kind = .id_ref, .quantifier = .required },8568 .{ .kind = .id_ref, .quantifier = .required },
7393 },8569 },
7394 },8570 },
7395 .{8571 .{
7396 .name = "OpDPdxFine",8572 .name = "OpGroupFAdd",
7397 .opcode = 210,8573 .opcode = 265,
7398 .operands = &.{8574 .operands = &.{
7399 .{ .kind = .id_result_type, .quantifier = .required },8575 .{ .kind = .id_result_type, .quantifier = .required },
7400 .{ .kind = .id_result, .quantifier = .required },8576 .{ .kind = .id_result, .quantifier = .required },
8577 .{ .kind = .id_scope, .quantifier = .required },
8578 .{ .kind = .group_operation, .quantifier = .required },
7401 .{ .kind = .id_ref, .quantifier = .required },8579 .{ .kind = .id_ref, .quantifier = .required },
7402 },8580 },
7403 },8581 },
7404 .{8582 .{
7405 .name = "OpDPdyFine",8583 .name = "OpGroupFMin",
7406 .opcode = 211,8584 .opcode = 266,
7407 .operands = &.{8585 .operands = &.{
7408 .{ .kind = .id_result_type, .quantifier = .required },8586 .{ .kind = .id_result_type, .quantifier = .required },
7409 .{ .kind = .id_result, .quantifier = .required },8587 .{ .kind = .id_result, .quantifier = .required },
8588 .{ .kind = .id_scope, .quantifier = .required },
8589 .{ .kind = .group_operation, .quantifier = .required },
7410 .{ .kind = .id_ref, .quantifier = .required },8590 .{ .kind = .id_ref, .quantifier = .required },
7411 },8591 },
7412 },8592 },
7413 .{8593 .{
7414 .name = "OpFwidthFine",8594 .name = "OpGroupUMin",
7415 .opcode = 212,8595 .opcode = 267,
7416 .operands = &.{8596 .operands = &.{
7417 .{ .kind = .id_result_type, .quantifier = .required },8597 .{ .kind = .id_result_type, .quantifier = .required },
7418 .{ .kind = .id_result, .quantifier = .required },8598 .{ .kind = .id_result, .quantifier = .required },
8599 .{ .kind = .id_scope, .quantifier = .required },
8600 .{ .kind = .group_operation, .quantifier = .required },
7419 .{ .kind = .id_ref, .quantifier = .required },8601 .{ .kind = .id_ref, .quantifier = .required },
7420 },8602 },
7421 },8603 },
7422 .{8604 .{
7423 .name = "OpDPdxCoarse",8605 .name = "OpGroupSMin",
7424 .opcode = 213,8606 .opcode = 268,
7425 .operands = &.{8607 .operands = &.{
7426 .{ .kind = .id_result_type, .quantifier = .required },8608 .{ .kind = .id_result_type, .quantifier = .required },
7427 .{ .kind = .id_result, .quantifier = .required },8609 .{ .kind = .id_result, .quantifier = .required },
8610 .{ .kind = .id_scope, .quantifier = .required },
8611 .{ .kind = .group_operation, .quantifier = .required },
7428 .{ .kind = .id_ref, .quantifier = .required },8612 .{ .kind = .id_ref, .quantifier = .required },
7429 },8613 },
7430 },8614 },
7431 .{8615 .{
7432 .name = "OpDPdyCoarse",8616 .name = "OpGroupFMax",
7433 .opcode = 214,8617 .opcode = 269,
7434 .operands = &.{8618 .operands = &.{
7435 .{ .kind = .id_result_type, .quantifier = .required },8619 .{ .kind = .id_result_type, .quantifier = .required },
7436 .{ .kind = .id_result, .quantifier = .required },8620 .{ .kind = .id_result, .quantifier = .required },
8621 .{ .kind = .id_scope, .quantifier = .required },
8622 .{ .kind = .group_operation, .quantifier = .required },
7437 .{ .kind = .id_ref, .quantifier = .required },8623 .{ .kind = .id_ref, .quantifier = .required },
7438 },8624 },
7439 },8625 },
7440 .{8626 .{
7441 .name = "OpFwidthCoarse",8627 .name = "OpGroupUMax",
7442 .opcode = 215,8628 .opcode = 270,
7443 .operands = &.{8629 .operands = &.{
7444 .{ .kind = .id_result_type, .quantifier = .required },8630 .{ .kind = .id_result_type, .quantifier = .required },
7445 .{ .kind = .id_result, .quantifier = .required },8631 .{ .kind = .id_result, .quantifier = .required },
8632 .{ .kind = .id_scope, .quantifier = .required },
8633 .{ .kind = .group_operation, .quantifier = .required },
7446 .{ .kind = .id_ref, .quantifier = .required },8634 .{ .kind = .id_ref, .quantifier = .required },
7447 },8635 },
7448 },8636 },
7449 .{8637 .{
7450 .name = "OpEmitVertex",8638 .name = "OpGroupSMax",
7451 .opcode = 218,8639 .opcode = 271,
7452 .operands = &.{},
7453 },
7454 .{
7455 .name = "OpEndPrimitive",
7456 .opcode = 219,
7457 .operands = &.{},
7458 },
7459 .{
7460 .name = "OpEmitStreamVertex",
7461 .opcode = 220,
7462 .operands = &.{8640 .operands = &.{
8641 .{ .kind = .id_result_type, .quantifier = .required },
8642 .{ .kind = .id_result, .quantifier = .required },
8643 .{ .kind = .id_scope, .quantifier = .required },
8644 .{ .kind = .group_operation, .quantifier = .required },
7463 .{ .kind = .id_ref, .quantifier = .required },8645 .{ .kind = .id_ref, .quantifier = .required },
7464 },8646 },
7465 },8647 },
7466 .{8648 .{
7467 .name = "OpEndStreamPrimitive",8649 .name = "OpReadPipe",
7468 .opcode = 221,8650 .opcode = 274,
7469 .operands = &.{8651 .operands = &.{
8652 .{ .kind = .id_result_type, .quantifier = .required },
8653 .{ .kind = .id_result, .quantifier = .required },
8654 .{ .kind = .id_ref, .quantifier = .required },
8655 .{ .kind = .id_ref, .quantifier = .required },
8656 .{ .kind = .id_ref, .quantifier = .required },
7470 .{ .kind = .id_ref, .quantifier = .required },8657 .{ .kind = .id_ref, .quantifier = .required },
7471 },8658 },
7472 },8659 },
7473 .{8660 .{
7474 .name = "OpControlBarrier",8661 .name = "OpWritePipe",
7475 .opcode = 224,8662 .opcode = 275,
7476 .operands = &.{8663 .operands = &.{
7477 .{ .kind = .id_scope, .quantifier = .required },8664 .{ .kind = .id_result_type, .quantifier = .required },
7478 .{ .kind = .id_scope, .quantifier = .required },8665 .{ .kind = .id_result, .quantifier = .required },
7479 .{ .kind = .id_memory_semantics, .quantifier = .required },8666 .{ .kind = .id_ref, .quantifier = .required },
8667 .{ .kind = .id_ref, .quantifier = .required },
8668 .{ .kind = .id_ref, .quantifier = .required },
8669 .{ .kind = .id_ref, .quantifier = .required },
7480 },8670 },
7481 },8671 },
7482 .{8672 .{
7483 .name = "OpMemoryBarrier",8673 .name = "OpReservedReadPipe",
7484 .opcode = 225,8674 .opcode = 276,
7485 .operands = &.{8675 .operands = &.{
7486 .{ .kind = .id_scope, .quantifier = .required },8676 .{ .kind = .id_result_type, .quantifier = .required },
7487 .{ .kind = .id_memory_semantics, .quantifier = .required },8677 .{ .kind = .id_result, .quantifier = .required },
8678 .{ .kind = .id_ref, .quantifier = .required },
8679 .{ .kind = .id_ref, .quantifier = .required },
8680 .{ .kind = .id_ref, .quantifier = .required },
8681 .{ .kind = .id_ref, .quantifier = .required },
8682 .{ .kind = .id_ref, .quantifier = .required },
8683 .{ .kind = .id_ref, .quantifier = .required },
7488 },8684 },
7489 },8685 },
7490 .{8686 .{
7491 .name = "OpAtomicLoad",8687 .name = "OpReservedWritePipe",
7492 .opcode = 227,8688 .opcode = 277,
7493 .operands = &.{8689 .operands = &.{
7494 .{ .kind = .id_result_type, .quantifier = .required },8690 .{ .kind = .id_result_type, .quantifier = .required },
7495 .{ .kind = .id_result, .quantifier = .required },8691 .{ .kind = .id_result, .quantifier = .required },
7496 .{ .kind = .id_ref, .quantifier = .required },8692 .{ .kind = .id_ref, .quantifier = .required },
7497 .{ .kind = .id_scope, .quantifier = .required },8693 .{ .kind = .id_ref, .quantifier = .required },
7498 .{ .kind = .id_memory_semantics, .quantifier = .required },8694 .{ .kind = .id_ref, .quantifier = .required },
8695 .{ .kind = .id_ref, .quantifier = .required },
8696 .{ .kind = .id_ref, .quantifier = .required },
8697 .{ .kind = .id_ref, .quantifier = .required },
7499 },8698 },
7500 },8699 },
7501 .{8700 .{
7502 .name = "OpAtomicStore",8701 .name = "OpReserveReadPipePackets",
7503 .opcode = 228,8702 .opcode = 278,
7504 .operands = &.{8703 .operands = &.{
8704 .{ .kind = .id_result_type, .quantifier = .required },
8705 .{ .kind = .id_result, .quantifier = .required },
8706 .{ .kind = .id_ref, .quantifier = .required },
8707 .{ .kind = .id_ref, .quantifier = .required },
7505 .{ .kind = .id_ref, .quantifier = .required },8708 .{ .kind = .id_ref, .quantifier = .required },
7506 .{ .kind = .id_scope, .quantifier = .required },
7507 .{ .kind = .id_memory_semantics, .quantifier = .required },
7508 .{ .kind = .id_ref, .quantifier = .required },8709 .{ .kind = .id_ref, .quantifier = .required },
7509 },8710 },
7510 },8711 },
7511 .{8712 .{
7512 .name = "OpAtomicExchange",8713 .name = "OpReserveWritePipePackets",
7513 .opcode = 229,8714 .opcode = 279,
7514 .operands = &.{8715 .operands = &.{
7515 .{ .kind = .id_result_type, .quantifier = .required },8716 .{ .kind = .id_result_type, .quantifier = .required },
7516 .{ .kind = .id_result, .quantifier = .required },8717 .{ .kind = .id_result, .quantifier = .required },
7517 .{ .kind = .id_ref, .quantifier = .required },8718 .{ .kind = .id_ref, .quantifier = .required },
7518 .{ .kind = .id_scope, .quantifier = .required },8719 .{ .kind = .id_ref, .quantifier = .required },
7519 .{ .kind = .id_memory_semantics, .quantifier = .required },8720 .{ .kind = .id_ref, .quantifier = .required },
7520 .{ .kind = .id_ref, .quantifier = .required },8721 .{ .kind = .id_ref, .quantifier = .required },
7521 },8722 },
7522 },8723 },
7523 .{8724 .{
7524 .name = "OpAtomicCompareExchange",8725 .name = "OpCommitReadPipe",
7525 .opcode = 230,8726 .opcode = 280,
7526 .operands = &.{8727 .operands = &.{
7527 .{ .kind = .id_result_type, .quantifier = .required },
7528 .{ .kind = .id_result, .quantifier = .required },
7529 .{ .kind = .id_ref, .quantifier = .required },8728 .{ .kind = .id_ref, .quantifier = .required },
7530 .{ .kind = .id_scope, .quantifier = .required },8729 .{ .kind = .id_ref, .quantifier = .required },
7531 .{ .kind = .id_memory_semantics, .quantifier = .required },
7532 .{ .kind = .id_memory_semantics, .quantifier = .required },
7533 .{ .kind = .id_ref, .quantifier = .required },8730 .{ .kind = .id_ref, .quantifier = .required },
7534 .{ .kind = .id_ref, .quantifier = .required },8731 .{ .kind = .id_ref, .quantifier = .required },
7535 },8732 },
7536 },8733 },
7537 .{8734 .{
7538 .name = "OpAtomicCompareExchangeWeak",8735 .name = "OpCommitWritePipe",
7539 .opcode = 231,8736 .opcode = 281,
7540 .operands = &.{8737 .operands = &.{
7541 .{ .kind = .id_result_type, .quantifier = .required },
7542 .{ .kind = .id_result, .quantifier = .required },
7543 .{ .kind = .id_ref, .quantifier = .required },8738 .{ .kind = .id_ref, .quantifier = .required },
7544 .{ .kind = .id_scope, .quantifier = .required },8739 .{ .kind = .id_ref, .quantifier = .required },
7545 .{ .kind = .id_memory_semantics, .quantifier = .required },
7546 .{ .kind = .id_memory_semantics, .quantifier = .required },
7547 .{ .kind = .id_ref, .quantifier = .required },8740 .{ .kind = .id_ref, .quantifier = .required },
7548 .{ .kind = .id_ref, .quantifier = .required },8741 .{ .kind = .id_ref, .quantifier = .required },
7549 },8742 },
7550 },8743 },
7551 .{8744 .{
7552 .name = "OpAtomicIIncrement",8745 .name = "OpIsValidReserveId",
7553 .opcode = 232,8746 .opcode = 282,
7554 .operands = &.{8747 .operands = &.{
7555 .{ .kind = .id_result_type, .quantifier = .required },8748 .{ .kind = .id_result_type, .quantifier = .required },
7556 .{ .kind = .id_result, .quantifier = .required },8749 .{ .kind = .id_result, .quantifier = .required },
7557 .{ .kind = .id_ref, .quantifier = .required },8750 .{ .kind = .id_ref, .quantifier = .required },
7558 .{ .kind = .id_scope, .quantifier = .required },
7559 .{ .kind = .id_memory_semantics, .quantifier = .required },
7560 },8751 },
7561 },8752 },
7562 .{8753 .{
7563 .name = "OpAtomicIDecrement",8754 .name = "OpGetNumPipePackets",
7564 .opcode = 233,8755 .opcode = 283,
7565 .operands = &.{8756 .operands = &.{
7566 .{ .kind = .id_result_type, .quantifier = .required },8757 .{ .kind = .id_result_type, .quantifier = .required },
7567 .{ .kind = .id_result, .quantifier = .required },8758 .{ .kind = .id_result, .quantifier = .required },
7568 .{ .kind = .id_ref, .quantifier = .required },8759 .{ .kind = .id_ref, .quantifier = .required },
7569 .{ .kind = .id_scope, .quantifier = .required },8760 .{ .kind = .id_ref, .quantifier = .required },
7570 .{ .kind = .id_memory_semantics, .quantifier = .required },8761 .{ .kind = .id_ref, .quantifier = .required },
7571 },8762 },
7572 },8763 },
7573 .{8764 .{
7574 .name = "OpAtomicIAdd",8765 .name = "OpGetMaxPipePackets",
7575 .opcode = 234,8766 .opcode = 284,
7576 .operands = &.{8767 .operands = &.{
7577 .{ .kind = .id_result_type, .quantifier = .required },8768 .{ .kind = .id_result_type, .quantifier = .required },
7578 .{ .kind = .id_result, .quantifier = .required },8769 .{ .kind = .id_result, .quantifier = .required },
7579 .{ .kind = .id_ref, .quantifier = .required },8770 .{ .kind = .id_ref, .quantifier = .required },
7580 .{ .kind = .id_scope, .quantifier = .required },8771 .{ .kind = .id_ref, .quantifier = .required },
7581 .{ .kind = .id_memory_semantics, .quantifier = .required },
7582 .{ .kind = .id_ref, .quantifier = .required },8772 .{ .kind = .id_ref, .quantifier = .required },
7583 },8773 },
7584 },8774 },
7585 .{8775 .{
7586 .name = "OpAtomicISub",8776 .name = "OpGroupReserveReadPipePackets",
7587 .opcode = 235,8777 .opcode = 285,
7588 .operands = &.{8778 .operands = &.{
7589 .{ .kind = .id_result_type, .quantifier = .required },8779 .{ .kind = .id_result_type, .quantifier = .required },
7590 .{ .kind = .id_result, .quantifier = .required },8780 .{ .kind = .id_result, .quantifier = .required },
7591 .{ .kind = .id_ref, .quantifier = .required },
7592 .{ .kind = .id_scope, .quantifier = .required },8781 .{ .kind = .id_scope, .quantifier = .required },
7593 .{ .kind = .id_memory_semantics, .quantifier = .required },8782 .{ .kind = .id_ref, .quantifier = .required },
8783 .{ .kind = .id_ref, .quantifier = .required },
8784 .{ .kind = .id_ref, .quantifier = .required },
7594 .{ .kind = .id_ref, .quantifier = .required },8785 .{ .kind = .id_ref, .quantifier = .required },
7595 },8786 },
7596 },8787 },
7597 .{8788 .{
7598 .name = "OpAtomicSMin",8789 .name = "OpGroupReserveWritePipePackets",
7599 .opcode = 236,8790 .opcode = 286,
7600 .operands = &.{8791 .operands = &.{
7601 .{ .kind = .id_result_type, .quantifier = .required },8792 .{ .kind = .id_result_type, .quantifier = .required },
7602 .{ .kind = .id_result, .quantifier = .required },8793 .{ .kind = .id_result, .quantifier = .required },
7603 .{ .kind = .id_ref, .quantifier = .required },
7604 .{ .kind = .id_scope, .quantifier = .required },8794 .{ .kind = .id_scope, .quantifier = .required },
7605 .{ .kind = .id_memory_semantics, .quantifier = .required },8795 .{ .kind = .id_ref, .quantifier = .required },
8796 .{ .kind = .id_ref, .quantifier = .required },
8797 .{ .kind = .id_ref, .quantifier = .required },
7606 .{ .kind = .id_ref, .quantifier = .required },8798 .{ .kind = .id_ref, .quantifier = .required },
7607 },8799 },
7608 },8800 },
7609 .{8801 .{
7610 .name = "OpAtomicUMin",8802 .name = "OpGroupCommitReadPipe",
7611 .opcode = 237,8803 .opcode = 287,
7612 .operands = &.{8804 .operands = &.{
7613 .{ .kind = .id_result_type, .quantifier = .required },8805 .{ .kind = .id_scope, .quantifier = .required },
7614 .{ .kind = .id_result, .quantifier = .required },8806 .{ .kind = .id_ref, .quantifier = .required },
8807 .{ .kind = .id_ref, .quantifier = .required },
8808 .{ .kind = .id_ref, .quantifier = .required },
7615 .{ .kind = .id_ref, .quantifier = .required },8809 .{ .kind = .id_ref, .quantifier = .required },
8810 },
8811 },
8812 .{
8813 .name = "OpGroupCommitWritePipe",
8814 .opcode = 288,
8815 .operands = &.{
7616 .{ .kind = .id_scope, .quantifier = .required },8816 .{ .kind = .id_scope, .quantifier = .required },
7617 .{ .kind = .id_memory_semantics, .quantifier = .required },8817 .{ .kind = .id_ref, .quantifier = .required },
8818 .{ .kind = .id_ref, .quantifier = .required },
8819 .{ .kind = .id_ref, .quantifier = .required },
7618 .{ .kind = .id_ref, .quantifier = .required },8820 .{ .kind = .id_ref, .quantifier = .required },
7619 },8821 },
7620 },8822 },
7621 .{8823 .{
7622 .name = "OpAtomicSMax",8824 .name = "OpEnqueueMarker",
7623 .opcode = 238,8825 .opcode = 291,
7624 .operands = &.{8826 .operands = &.{
7625 .{ .kind = .id_result_type, .quantifier = .required },8827 .{ .kind = .id_result_type, .quantifier = .required },
7626 .{ .kind = .id_result, .quantifier = .required },8828 .{ .kind = .id_result, .quantifier = .required },
7627 .{ .kind = .id_ref, .quantifier = .required },8829 .{ .kind = .id_ref, .quantifier = .required },
7628 .{ .kind = .id_scope, .quantifier = .required },8830 .{ .kind = .id_ref, .quantifier = .required },
7629 .{ .kind = .id_memory_semantics, .quantifier = .required },8831 .{ .kind = .id_ref, .quantifier = .required },
7630 .{ .kind = .id_ref, .quantifier = .required },8832 .{ .kind = .id_ref, .quantifier = .required },
7631 },8833 },
7632 },8834 },
7633 .{8835 .{
7634 .name = "OpAtomicUMax",8836 .name = "OpEnqueueKernel",
7635 .opcode = 239,8837 .opcode = 292,
7636 .operands = &.{8838 .operands = &.{
7637 .{ .kind = .id_result_type, .quantifier = .required },8839 .{ .kind = .id_result_type, .quantifier = .required },
7638 .{ .kind = .id_result, .quantifier = .required },8840 .{ .kind = .id_result, .quantifier = .required },
7639 .{ .kind = .id_ref, .quantifier = .required },8841 .{ .kind = .id_ref, .quantifier = .required },
7640 .{ .kind = .id_scope, .quantifier = .required },
7641 .{ .kind = .id_memory_semantics, .quantifier = .required },
7642 .{ .kind = .id_ref, .quantifier = .required },8842 .{ .kind = .id_ref, .quantifier = .required },
8843 .{ .kind = .id_ref, .quantifier = .required },
8844 .{ .kind = .id_ref, .quantifier = .required },
8845 .{ .kind = .id_ref, .quantifier = .required },
8846 .{ .kind = .id_ref, .quantifier = .required },
8847 .{ .kind = .id_ref, .quantifier = .required },
8848 .{ .kind = .id_ref, .quantifier = .required },
8849 .{ .kind = .id_ref, .quantifier = .required },
8850 .{ .kind = .id_ref, .quantifier = .required },
8851 .{ .kind = .id_ref, .quantifier = .variadic },
7643 },8852 },
7644 },8853 },
7645 .{8854 .{
7646 .name = "OpAtomicAnd",8855 .name = "OpGetKernelNDrangeSubGroupCount",
7647 .opcode = 240,8856 .opcode = 293,
7648 .operands = &.{8857 .operands = &.{
7649 .{ .kind = .id_result_type, .quantifier = .required },8858 .{ .kind = .id_result_type, .quantifier = .required },
7650 .{ .kind = .id_result, .quantifier = .required },8859 .{ .kind = .id_result, .quantifier = .required },
7651 .{ .kind = .id_ref, .quantifier = .required },8860 .{ .kind = .id_ref, .quantifier = .required },
7652 .{ .kind = .id_scope, .quantifier = .required },8861 .{ .kind = .id_ref, .quantifier = .required },
7653 .{ .kind = .id_memory_semantics, .quantifier = .required },8862 .{ .kind = .id_ref, .quantifier = .required },
8863 .{ .kind = .id_ref, .quantifier = .required },
7654 .{ .kind = .id_ref, .quantifier = .required },8864 .{ .kind = .id_ref, .quantifier = .required },
7655 },8865 },
7656 },8866 },
7657 .{8867 .{
7658 .name = "OpAtomicOr",8868 .name = "OpGetKernelNDrangeMaxSubGroupSize",
7659 .opcode = 241,8869 .opcode = 294,
7660 .operands = &.{8870 .operands = &.{
7661 .{ .kind = .id_result_type, .quantifier = .required },8871 .{ .kind = .id_result_type, .quantifier = .required },
7662 .{ .kind = .id_result, .quantifier = .required },8872 .{ .kind = .id_result, .quantifier = .required },
7663 .{ .kind = .id_ref, .quantifier = .required },8873 .{ .kind = .id_ref, .quantifier = .required },
7664 .{ .kind = .id_scope, .quantifier = .required },8874 .{ .kind = .id_ref, .quantifier = .required },
7665 .{ .kind = .id_memory_semantics, .quantifier = .required },8875 .{ .kind = .id_ref, .quantifier = .required },
8876 .{ .kind = .id_ref, .quantifier = .required },
7666 .{ .kind = .id_ref, .quantifier = .required },8877 .{ .kind = .id_ref, .quantifier = .required },
7667 },8878 },
7668 },8879 },
7669 .{8880 .{
7670 .name = "OpAtomicXor",8881 .name = "OpGetKernelWorkGroupSize",
7671 .opcode = 242,8882 .opcode = 295,
7672 .operands = &.{8883 .operands = &.{
7673 .{ .kind = .id_result_type, .quantifier = .required },8884 .{ .kind = .id_result_type, .quantifier = .required },
7674 .{ .kind = .id_result, .quantifier = .required },8885 .{ .kind = .id_result, .quantifier = .required },
7675 .{ .kind = .id_ref, .quantifier = .required },8886 .{ .kind = .id_ref, .quantifier = .required },
7676 .{ .kind = .id_scope, .quantifier = .required },8887 .{ .kind = .id_ref, .quantifier = .required },
7677 .{ .kind = .id_memory_semantics, .quantifier = .required },8888 .{ .kind = .id_ref, .quantifier = .required },
7678 .{ .kind = .id_ref, .quantifier = .required },8889 .{ .kind = .id_ref, .quantifier = .required },
7679 },8890 },
7680 },8891 },
7681 .{8892 .{
7682 .name = "OpPhi",8893 .name = "OpGetKernelPreferredWorkGroupSizeMultiple",
7683 .opcode = 245,8894 .opcode = 296,
7684 .operands = &.{8895 .operands = &.{
7685 .{ .kind = .id_result_type, .quantifier = .required },8896 .{ .kind = .id_result_type, .quantifier = .required },
7686 .{ .kind = .id_result, .quantifier = .required },8897 .{ .kind = .id_result, .quantifier = .required },
7687 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },8898 .{ .kind = .id_ref, .quantifier = .required },
8899 .{ .kind = .id_ref, .quantifier = .required },
8900 .{ .kind = .id_ref, .quantifier = .required },
8901 .{ .kind = .id_ref, .quantifier = .required },
7688 },8902 },
7689 },8903 },
7690 .{8904 .{
7691 .name = "OpLoopMerge",8905 .name = "OpRetainEvent",
7692 .opcode = 246,8906 .opcode = 297,
7693 .operands = &.{8907 .operands = &.{
7694 .{ .kind = .id_ref, .quantifier = .required },8908 .{ .kind = .id_ref, .quantifier = .required },
7695 .{ .kind = .id_ref, .quantifier = .required },
7696 .{ .kind = .loop_control, .quantifier = .required },
7697 },8909 },
7698 },8910 },
7699 .{8911 .{
7700 .name = "OpSelectionMerge",8912 .name = "OpReleaseEvent",
7701 .opcode = 247,8913 .opcode = 298,
7702 .operands = &.{8914 .operands = &.{
7703 .{ .kind = .id_ref, .quantifier = .required },8915 .{ .kind = .id_ref, .quantifier = .required },
7704 .{ .kind = .selection_control, .quantifier = .required },
7705 },8916 },
7706 },8917 },
7707 .{8918 .{
7708 .name = "OpLabel",8919 .name = "OpCreateUserEvent",
7709 .opcode = 248,8920 .opcode = 299,
7710 .operands = &.{8921 .operands = &.{
8922 .{ .kind = .id_result_type, .quantifier = .required },
7711 .{ .kind = .id_result, .quantifier = .required },8923 .{ .kind = .id_result, .quantifier = .required },
7712 },8924 },
7713 },8925 },
7714 .{8926 .{
7715 .name = "OpBranch",8927 .name = "OpIsValidEvent",
7716 .opcode = 249,8928 .opcode = 300,
7717 .operands = &.{8929 .operands = &.{
8930 .{ .kind = .id_result_type, .quantifier = .required },
8931 .{ .kind = .id_result, .quantifier = .required },
7718 .{ .kind = .id_ref, .quantifier = .required },8932 .{ .kind = .id_ref, .quantifier = .required },
7719 },8933 },
7720 },8934 },
7721 .{8935 .{
7722 .name = "OpBranchConditional",8936 .name = "OpSetUserEventStatus",
7723 .opcode = 250,8937 .opcode = 301,
7724 .operands = &.{8938 .operands = &.{
7725 .{ .kind = .id_ref, .quantifier = .required },8939 .{ .kind = .id_ref, .quantifier = .required },
7726 .{ .kind = .id_ref, .quantifier = .required },8940 .{ .kind = .id_ref, .quantifier = .required },
7727 .{ .kind = .id_ref, .quantifier = .required },
7728 .{ .kind = .literal_integer, .quantifier = .variadic },
7729 },8941 },
7730 },8942 },
7731 .{8943 .{
7732 .name = "OpSwitch",8944 .name = "OpCaptureEventProfilingInfo",
7733 .opcode = 251,8945 .opcode = 302,
7734 .operands = &.{8946 .operands = &.{
7735 .{ .kind = .id_ref, .quantifier = .required },8947 .{ .kind = .id_ref, .quantifier = .required },
7736 .{ .kind = .id_ref, .quantifier = .required },8948 .{ .kind = .id_ref, .quantifier = .required },
7737 .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic },8949 .{ .kind = .id_ref, .quantifier = .required },
7738 },8950 },
7739 },8951 },
7740 .{8952 .{
7741 .name = "OpKill",8953 .name = "OpGetDefaultQueue",
7742 .opcode = 252,8954 .opcode = 303,
7743 .operands = &.{},8955 .operands = &.{
7744 },8956 .{ .kind = .id_result_type, .quantifier = .required },
7745 .{8957 .{ .kind = .id_result, .quantifier = .required },
7746 .name = "OpReturn",8958 },
7747 .opcode = 253,
7748 .operands = &.{},
7749 },8959 },
7750 .{8960 .{
7751 .name = "OpReturnValue",8961 .name = "OpBuildNDRange",
7752 .opcode = 254,8962 .opcode = 304,
7753 .operands = &.{8963 .operands = &.{
8964 .{ .kind = .id_result_type, .quantifier = .required },
8965 .{ .kind = .id_result, .quantifier = .required },
8966 .{ .kind = .id_ref, .quantifier = .required },
8967 .{ .kind = .id_ref, .quantifier = .required },
7754 .{ .kind = .id_ref, .quantifier = .required },8968 .{ .kind = .id_ref, .quantifier = .required },
7755 },8969 },
7756 },8970 },
7757 .{8971 .{
7758 .name = "OpUnreachable",8972 .name = "OpImageSparseSampleImplicitLod",
7759 .opcode = 255,8973 .opcode = 305,
7760 .operands = &.{},8974 .operands = &.{
8975 .{ .kind = .id_result_type, .quantifier = .required },
8976 .{ .kind = .id_result, .quantifier = .required },
8977 .{ .kind = .id_ref, .quantifier = .required },
8978 .{ .kind = .id_ref, .quantifier = .required },
8979 .{ .kind = .image_operands, .quantifier = .optional },
8980 },
7761 },8981 },
7762 .{8982 .{
7763 .name = "OpLifetimeStart",8983 .name = "OpImageSparseSampleExplicitLod",
7764 .opcode = 256,8984 .opcode = 306,
7765 .operands = &.{8985 .operands = &.{
8986 .{ .kind = .id_result_type, .quantifier = .required },
8987 .{ .kind = .id_result, .quantifier = .required },
7766 .{ .kind = .id_ref, .quantifier = .required },8988 .{ .kind = .id_ref, .quantifier = .required },
7767 .{ .kind = .literal_integer, .quantifier = .required },8989 .{ .kind = .id_ref, .quantifier = .required },
8990 .{ .kind = .image_operands, .quantifier = .required },
7768 },8991 },
7769 },8992 },
7770 .{8993 .{
7771 .name = "OpLifetimeStop",8994 .name = "OpImageSparseSampleDrefImplicitLod",
7772 .opcode = 257,8995 .opcode = 307,
7773 .operands = &.{8996 .operands = &.{
8997 .{ .kind = .id_result_type, .quantifier = .required },
8998 .{ .kind = .id_result, .quantifier = .required },
7774 .{ .kind = .id_ref, .quantifier = .required },8999 .{ .kind = .id_ref, .quantifier = .required },
7775 .{ .kind = .literal_integer, .quantifier = .required },9000 .{ .kind = .id_ref, .quantifier = .required },
9001 .{ .kind = .id_ref, .quantifier = .required },
9002 .{ .kind = .image_operands, .quantifier = .optional },
7776 },9003 },
7777 },9004 },
7778 .{9005 .{
7779 .name = "OpGroupAsyncCopy",9006 .name = "OpImageSparseSampleDrefExplicitLod",
7780 .opcode = 259,9007 .opcode = 308,
7781 .operands = &.{9008 .operands = &.{
7782 .{ .kind = .id_result_type, .quantifier = .required },9009 .{ .kind = .id_result_type, .quantifier = .required },
7783 .{ .kind = .id_result, .quantifier = .required },9010 .{ .kind = .id_result, .quantifier = .required },
7784 .{ .kind = .id_scope, .quantifier = .required },
7785 .{ .kind = .id_ref, .quantifier = .required },9011 .{ .kind = .id_ref, .quantifier = .required },
7786 .{ .kind = .id_ref, .quantifier = .required },9012 .{ .kind = .id_ref, .quantifier = .required },
7787 .{ .kind = .id_ref, .quantifier = .required },9013 .{ .kind = .id_ref, .quantifier = .required },
9014 .{ .kind = .image_operands, .quantifier = .required },
9015 },
9016 },
9017 .{
9018 .name = "OpImageSparseSampleProjImplicitLod",
9019 .opcode = 309,
9020 .operands = &.{
9021 .{ .kind = .id_result_type, .quantifier = .required },
9022 .{ .kind = .id_result, .quantifier = .required },
7788 .{ .kind = .id_ref, .quantifier = .required },9023 .{ .kind = .id_ref, .quantifier = .required },
7789 .{ .kind = .id_ref, .quantifier = .required },9024 .{ .kind = .id_ref, .quantifier = .required },
9025 .{ .kind = .image_operands, .quantifier = .optional },
7790 },9026 },
7791 },9027 },
7792 .{9028 .{
7793 .name = "OpGroupWaitEvents",9029 .name = "OpImageSparseSampleProjExplicitLod",
7794 .opcode = 260,9030 .opcode = 310,
7795 .operands = &.{9031 .operands = &.{
7796 .{ .kind = .id_scope, .quantifier = .required },9032 .{ .kind = .id_result_type, .quantifier = .required },
9033 .{ .kind = .id_result, .quantifier = .required },
7797 .{ .kind = .id_ref, .quantifier = .required },9034 .{ .kind = .id_ref, .quantifier = .required },
7798 .{ .kind = .id_ref, .quantifier = .required },9035 .{ .kind = .id_ref, .quantifier = .required },
9036 .{ .kind = .image_operands, .quantifier = .required },
7799 },9037 },
7800 },9038 },
7801 .{9039 .{
7802 .name = "OpGroupAll",9040 .name = "OpImageSparseSampleProjDrefImplicitLod",
7803 .opcode = 261,9041 .opcode = 311,
7804 .operands = &.{9042 .operands = &.{
7805 .{ .kind = .id_result_type, .quantifier = .required },9043 .{ .kind = .id_result_type, .quantifier = .required },
7806 .{ .kind = .id_result, .quantifier = .required },9044 .{ .kind = .id_result, .quantifier = .required },
7807 .{ .kind = .id_scope, .quantifier = .required },
7808 .{ .kind = .id_ref, .quantifier = .required },9045 .{ .kind = .id_ref, .quantifier = .required },
9046 .{ .kind = .id_ref, .quantifier = .required },
9047 .{ .kind = .id_ref, .quantifier = .required },
9048 .{ .kind = .image_operands, .quantifier = .optional },
7809 },9049 },
7810 },9050 },
7811 .{9051 .{
7812 .name = "OpGroupAny",9052 .name = "OpImageSparseSampleProjDrefExplicitLod",
7813 .opcode = 262,9053 .opcode = 312,
7814 .operands = &.{9054 .operands = &.{
7815 .{ .kind = .id_result_type, .quantifier = .required },9055 .{ .kind = .id_result_type, .quantifier = .required },
7816 .{ .kind = .id_result, .quantifier = .required },9056 .{ .kind = .id_result, .quantifier = .required },
7817 .{ .kind = .id_scope, .quantifier = .required },
7818 .{ .kind = .id_ref, .quantifier = .required },9057 .{ .kind = .id_ref, .quantifier = .required },
9058 .{ .kind = .id_ref, .quantifier = .required },
9059 .{ .kind = .id_ref, .quantifier = .required },
9060 .{ .kind = .image_operands, .quantifier = .required },
7819 },9061 },
7820 },9062 },
7821 .{9063 .{
7822 .name = "OpGroupBroadcast",9064 .name = "OpImageSparseFetch",
7823 .opcode = 263,9065 .opcode = 313,
7824 .operands = &.{9066 .operands = &.{
7825 .{ .kind = .id_result_type, .quantifier = .required },9067 .{ .kind = .id_result_type, .quantifier = .required },
7826 .{ .kind = .id_result, .quantifier = .required },9068 .{ .kind = .id_result, .quantifier = .required },
7827 .{ .kind = .id_scope, .quantifier = .required },
7828 .{ .kind = .id_ref, .quantifier = .required },9069 .{ .kind = .id_ref, .quantifier = .required },
7829 .{ .kind = .id_ref, .quantifier = .required },9070 .{ .kind = .id_ref, .quantifier = .required },
9071 .{ .kind = .image_operands, .quantifier = .optional },
7830 },9072 },
7831 },9073 },
7832 .{9074 .{
7833 .name = "OpGroupIAdd",9075 .name = "OpImageSparseGather",
7834 .opcode = 264,9076 .opcode = 314,
7835 .operands = &.{9077 .operands = &.{
7836 .{ .kind = .id_result_type, .quantifier = .required },9078 .{ .kind = .id_result_type, .quantifier = .required },
7837 .{ .kind = .id_result, .quantifier = .required },9079 .{ .kind = .id_result, .quantifier = .required },
7838 .{ .kind = .id_scope, .quantifier = .required },
7839 .{ .kind = .group_operation, .quantifier = .required },
7840 .{ .kind = .id_ref, .quantifier = .required },9080 .{ .kind = .id_ref, .quantifier = .required },
9081 .{ .kind = .id_ref, .quantifier = .required },
9082 .{ .kind = .id_ref, .quantifier = .required },
9083 .{ .kind = .image_operands, .quantifier = .optional },
7841 },9084 },
7842 },9085 },
7843 .{9086 .{
7844 .name = "OpGroupFAdd",9087 .name = "OpImageSparseDrefGather",
7845 .opcode = 265,9088 .opcode = 315,
7846 .operands = &.{9089 .operands = &.{
7847 .{ .kind = .id_result_type, .quantifier = .required },9090 .{ .kind = .id_result_type, .quantifier = .required },
7848 .{ .kind = .id_result, .quantifier = .required },9091 .{ .kind = .id_result, .quantifier = .required },
7849 .{ .kind = .id_scope, .quantifier = .required },
7850 .{ .kind = .group_operation, .quantifier = .required },
7851 .{ .kind = .id_ref, .quantifier = .required },9092 .{ .kind = .id_ref, .quantifier = .required },
9093 .{ .kind = .id_ref, .quantifier = .required },
9094 .{ .kind = .id_ref, .quantifier = .required },
9095 .{ .kind = .image_operands, .quantifier = .optional },
7852 },9096 },
7853 },9097 },
7854 .{9098 .{
7855 .name = "OpGroupFMin",9099 .name = "OpImageSparseTexelsResident",
7856 .opcode = 266,9100 .opcode = 316,
7857 .operands = &.{9101 .operands = &.{
7858 .{ .kind = .id_result_type, .quantifier = .required },9102 .{ .kind = .id_result_type, .quantifier = .required },
7859 .{ .kind = .id_result, .quantifier = .required },9103 .{ .kind = .id_result, .quantifier = .required },
7860 .{ .kind = .id_scope, .quantifier = .required },
7861 .{ .kind = .group_operation, .quantifier = .required },
7862 .{ .kind = .id_ref, .quantifier = .required },9104 .{ .kind = .id_ref, .quantifier = .required },
7863 },9105 },
7864 },9106 },
7865 .{9107 .{
7866 .name = "OpGroupUMin",9108 .name = "OpNoLine",
7867 .opcode = 267,9109 .opcode = 317,
9110 .operands = &.{},
9111 },
9112 .{
9113 .name = "OpAtomicFlagTestAndSet",
9114 .opcode = 318,
7868 .operands = &.{9115 .operands = &.{
7869 .{ .kind = .id_result_type, .quantifier = .required },9116 .{ .kind = .id_result_type, .quantifier = .required },
7870 .{ .kind = .id_result, .quantifier = .required },9117 .{ .kind = .id_result, .quantifier = .required },
7871 .{ .kind = .id_scope, .quantifier = .required },
7872 .{ .kind = .group_operation, .quantifier = .required },
7873 .{ .kind = .id_ref, .quantifier = .required },9118 .{ .kind = .id_ref, .quantifier = .required },
9119 .{ .kind = .id_scope, .quantifier = .required },
9120 .{ .kind = .id_memory_semantics, .quantifier = .required },
7874 },9121 },
7875 },9122 },
7876 .{9123 .{
7877 .name = "OpGroupSMin",9124 .name = "OpAtomicFlagClear",
7878 .opcode = 268,9125 .opcode = 319,
7879 .operands = &.{9126 .operands = &.{
7880 .{ .kind = .id_result_type, .quantifier = .required },
7881 .{ .kind = .id_result, .quantifier = .required },
7882 .{ .kind = .id_scope, .quantifier = .required },
7883 .{ .kind = .group_operation, .quantifier = .required },
7884 .{ .kind = .id_ref, .quantifier = .required },9127 .{ .kind = .id_ref, .quantifier = .required },
9128 .{ .kind = .id_scope, .quantifier = .required },
9129 .{ .kind = .id_memory_semantics, .quantifier = .required },
7885 },9130 },
7886 },9131 },
7887 .{9132 .{
7888 .name = "OpGroupFMax",9133 .name = "OpImageSparseRead",
7889 .opcode = 269,9134 .opcode = 320,
7890 .operands = &.{9135 .operands = &.{
7891 .{ .kind = .id_result_type, .quantifier = .required },9136 .{ .kind = .id_result_type, .quantifier = .required },
7892 .{ .kind = .id_result, .quantifier = .required },9137 .{ .kind = .id_result, .quantifier = .required },
7893 .{ .kind = .id_scope, .quantifier = .required },
7894 .{ .kind = .group_operation, .quantifier = .required },
7895 .{ .kind = .id_ref, .quantifier = .required },9138 .{ .kind = .id_ref, .quantifier = .required },
9139 .{ .kind = .id_ref, .quantifier = .required },
9140 .{ .kind = .image_operands, .quantifier = .optional },
7896 },9141 },
7897 },9142 },
7898 .{9143 .{
7899 .name = "OpGroupUMax",9144 .name = "OpSizeOf",
7900 .opcode = 270,9145 .opcode = 321,
7901 .operands = &.{9146 .operands = &.{
7902 .{ .kind = .id_result_type, .quantifier = .required },9147 .{ .kind = .id_result_type, .quantifier = .required },
7903 .{ .kind = .id_result, .quantifier = .required },9148 .{ .kind = .id_result, .quantifier = .required },
7904 .{ .kind = .id_scope, .quantifier = .required },
7905 .{ .kind = .group_operation, .quantifier = .required },
7906 .{ .kind = .id_ref, .quantifier = .required },9149 .{ .kind = .id_ref, .quantifier = .required },
7907 },9150 },
7908 },9151 },
7909 .{9152 .{
7910 .name = "OpGroupSMax",9153 .name = "OpTypePipeStorage",
7911 .opcode = 271,9154 .opcode = 322,
7912 .operands = &.{9155 .operands = &.{
7913 .{ .kind = .id_result_type, .quantifier = .required },
7914 .{ .kind = .id_result, .quantifier = .required },9156 .{ .kind = .id_result, .quantifier = .required },
7915 .{ .kind = .id_scope, .quantifier = .required },
7916 .{ .kind = .group_operation, .quantifier = .required },
7917 .{ .kind = .id_ref, .quantifier = .required },
7918 },9157 },
7919 },9158 },
7920 .{9159 .{
7921 .name = "OpReadPipe",9160 .name = "OpConstantPipeStorage",
7922 .opcode = 274,9161 .opcode = 323,
7923 .operands = &.{9162 .operands = &.{
7924 .{ .kind = .id_result_type, .quantifier = .required },9163 .{ .kind = .id_result_type, .quantifier = .required },
7925 .{ .kind = .id_result, .quantifier = .required },9164 .{ .kind = .id_result, .quantifier = .required },
7926 .{ .kind = .id_ref, .quantifier = .required },9165 .{ .kind = .literal_integer, .quantifier = .required },
7927 .{ .kind = .id_ref, .quantifier = .required },9166 .{ .kind = .literal_integer, .quantifier = .required },
7928 .{ .kind = .id_ref, .quantifier = .required },9167 .{ .kind = .literal_integer, .quantifier = .required },
7929 .{ .kind = .id_ref, .quantifier = .required },
7930 },9168 },
7931 },9169 },
7932 .{9170 .{
7933 .name = "OpWritePipe",9171 .name = "OpCreatePipeFromPipeStorage",
7934 .opcode = 275,9172 .opcode = 324,
7935 .operands = &.{9173 .operands = &.{
7936 .{ .kind = .id_result_type, .quantifier = .required },9174 .{ .kind = .id_result_type, .quantifier = .required },
7937 .{ .kind = .id_result, .quantifier = .required },9175 .{ .kind = .id_result, .quantifier = .required },
7938 .{ .kind = .id_ref, .quantifier = .required },9176 .{ .kind = .id_ref, .quantifier = .required },
7939 .{ .kind = .id_ref, .quantifier = .required },
7940 .{ .kind = .id_ref, .quantifier = .required },
7941 .{ .kind = .id_ref, .quantifier = .required },
7942 },9177 },
7943 },9178 },
7944 .{9179 .{
7945 .name = "OpReservedReadPipe",9180 .name = "OpGetKernelLocalSizeForSubgroupCount",
7946 .opcode = 276,9181 .opcode = 325,
7947 .operands = &.{9182 .operands = &.{
7948 .{ .kind = .id_result_type, .quantifier = .required },9183 .{ .kind = .id_result_type, .quantifier = .required },
7949 .{ .kind = .id_result, .quantifier = .required },9184 .{ .kind = .id_result, .quantifier = .required },
...@@ -7952,12 +9187,11 @@ pub const InstructionSet = enum {...@@ -7952,12 +9187,11 @@ pub const InstructionSet = enum {
7952 .{ .kind = .id_ref, .quantifier = .required },9187 .{ .kind = .id_ref, .quantifier = .required },
7953 .{ .kind = .id_ref, .quantifier = .required },9188 .{ .kind = .id_ref, .quantifier = .required },
7954 .{ .kind = .id_ref, .quantifier = .required },9189 .{ .kind = .id_ref, .quantifier = .required },
7955 .{ .kind = .id_ref, .quantifier = .required },
7956 },9190 },
7957 },9191 },
7958 .{9192 .{
7959 .name = "OpReservedWritePipe",9193 .name = "OpGetKernelMaxNumSubgroups",
7960 .opcode = 277,9194 .opcode = 326,
7961 .operands = &.{9195 .operands = &.{
7962 .{ .kind = .id_result_type, .quantifier = .required },9196 .{ .kind = .id_result_type, .quantifier = .required },
7963 .{ .kind = .id_result, .quantifier = .required },9197 .{ .kind = .id_result, .quantifier = .required },
...@@ -7965,1158 +9199,1110 @@ pub const InstructionSet = enum {...@@ -7965,1158 +9199,1110 @@ pub const InstructionSet = enum {
7965 .{ .kind = .id_ref, .quantifier = .required },9199 .{ .kind = .id_ref, .quantifier = .required },
7966 .{ .kind = .id_ref, .quantifier = .required },9200 .{ .kind = .id_ref, .quantifier = .required },
7967 .{ .kind = .id_ref, .quantifier = .required },9201 .{ .kind = .id_ref, .quantifier = .required },
7968 .{ .kind = .id_ref, .quantifier = .required },
7969 .{ .kind = .id_ref, .quantifier = .required },
7970 },9202 },
7971 },9203 },
7972 .{9204 .{
7973 .name = "OpReserveReadPipePackets",9205 .name = "OpTypeNamedBarrier",
7974 .opcode = 278,9206 .opcode = 327,
7975 .operands = &.{9207 .operands = &.{
7976 .{ .kind = .id_result_type, .quantifier = .required },
7977 .{ .kind = .id_result, .quantifier = .required },9208 .{ .kind = .id_result, .quantifier = .required },
7978 .{ .kind = .id_ref, .quantifier = .required },
7979 .{ .kind = .id_ref, .quantifier = .required },
7980 .{ .kind = .id_ref, .quantifier = .required },
7981 .{ .kind = .id_ref, .quantifier = .required },
7982 },9209 },
7983 },9210 },
7984 .{9211 .{
7985 .name = "OpReserveWritePipePackets",9212 .name = "OpNamedBarrierInitialize",
7986 .opcode = 279,9213 .opcode = 328,
7987 .operands = &.{9214 .operands = &.{
7988 .{ .kind = .id_result_type, .quantifier = .required },9215 .{ .kind = .id_result_type, .quantifier = .required },
7989 .{ .kind = .id_result, .quantifier = .required },9216 .{ .kind = .id_result, .quantifier = .required },
7990 .{ .kind = .id_ref, .quantifier = .required },9217 .{ .kind = .id_ref, .quantifier = .required },
7991 .{ .kind = .id_ref, .quantifier = .required },
7992 .{ .kind = .id_ref, .quantifier = .required },
7993 .{ .kind = .id_ref, .quantifier = .required },
7994 },9218 },
7995 },9219 },
7996 .{9220 .{
7997 .name = "OpCommitReadPipe",9221 .name = "OpMemoryNamedBarrier",
7998 .opcode = 280,9222 .opcode = 329,
7999 .operands = &.{9223 .operands = &.{
8000 .{ .kind = .id_ref, .quantifier = .required },9224 .{ .kind = .id_ref, .quantifier = .required },
8001 .{ .kind = .id_ref, .quantifier = .required },9225 .{ .kind = .id_scope, .quantifier = .required },
8002 .{ .kind = .id_ref, .quantifier = .required },9226 .{ .kind = .id_memory_semantics, .quantifier = .required },
8003 .{ .kind = .id_ref, .quantifier = .required },
8004 },9227 },
8005 },9228 },
8006 .{9229 .{
8007 .name = "OpCommitWritePipe",9230 .name = "OpModuleProcessed",
8008 .opcode = 281,9231 .opcode = 330,
8009 .operands = &.{9232 .operands = &.{
8010 .{ .kind = .id_ref, .quantifier = .required },9233 .{ .kind = .literal_string, .quantifier = .required },
8011 .{ .kind = .id_ref, .quantifier = .required },
8012 .{ .kind = .id_ref, .quantifier = .required },
8013 .{ .kind = .id_ref, .quantifier = .required },
8014 },9234 },
8015 },9235 },
8016 .{9236 .{
8017 .name = "OpIsValidReserveId",9237 .name = "OpExecutionModeId",
8018 .opcode = 282,9238 .opcode = 331,
8019 .operands = &.{9239 .operands = &.{
8020 .{ .kind = .id_result_type, .quantifier = .required },
8021 .{ .kind = .id_result, .quantifier = .required },
8022 .{ .kind = .id_ref, .quantifier = .required },9240 .{ .kind = .id_ref, .quantifier = .required },
9241 .{ .kind = .execution_mode, .quantifier = .required },
8023 },9242 },
8024 },9243 },
8025 .{9244 .{
8026 .name = "OpGetNumPipePackets",9245 .name = "OpDecorateId",
8027 .opcode = 283,9246 .opcode = 332,
8028 .operands = &.{9247 .operands = &.{
8029 .{ .kind = .id_result_type, .quantifier = .required },
8030 .{ .kind = .id_result, .quantifier = .required },
8031 .{ .kind = .id_ref, .quantifier = .required },
8032 .{ .kind = .id_ref, .quantifier = .required },
8033 .{ .kind = .id_ref, .quantifier = .required },9248 .{ .kind = .id_ref, .quantifier = .required },
9249 .{ .kind = .decoration, .quantifier = .required },
8034 },9250 },
8035 },9251 },
8036 .{9252 .{
8037 .name = "OpGetMaxPipePackets",9253 .name = "OpGroupNonUniformElect",
8038 .opcode = 284,9254 .opcode = 333,
8039 .operands = &.{9255 .operands = &.{
8040 .{ .kind = .id_result_type, .quantifier = .required },9256 .{ .kind = .id_result_type, .quantifier = .required },
8041 .{ .kind = .id_result, .quantifier = .required },9257 .{ .kind = .id_result, .quantifier = .required },
8042 .{ .kind = .id_ref, .quantifier = .required },9258 .{ .kind = .id_scope, .quantifier = .required },
8043 .{ .kind = .id_ref, .quantifier = .required },
8044 .{ .kind = .id_ref, .quantifier = .required },
8045 },9259 },
8046 },9260 },
8047 .{9261 .{
8048 .name = "OpGroupReserveReadPipePackets",9262 .name = "OpGroupNonUniformAll",
8049 .opcode = 285,9263 .opcode = 334,
8050 .operands = &.{9264 .operands = &.{
8051 .{ .kind = .id_result_type, .quantifier = .required },9265 .{ .kind = .id_result_type, .quantifier = .required },
8052 .{ .kind = .id_result, .quantifier = .required },9266 .{ .kind = .id_result, .quantifier = .required },
8053 .{ .kind = .id_scope, .quantifier = .required },9267 .{ .kind = .id_scope, .quantifier = .required },
8054 .{ .kind = .id_ref, .quantifier = .required },9268 .{ .kind = .id_ref, .quantifier = .required },
8055 .{ .kind = .id_ref, .quantifier = .required },
8056 .{ .kind = .id_ref, .quantifier = .required },
8057 .{ .kind = .id_ref, .quantifier = .required },
8058 },9269 },
8059 },9270 },
8060 .{9271 .{
8061 .name = "OpGroupReserveWritePipePackets",9272 .name = "OpGroupNonUniformAny",
8062 .opcode = 286,9273 .opcode = 335,
8063 .operands = &.{9274 .operands = &.{
8064 .{ .kind = .id_result_type, .quantifier = .required },9275 .{ .kind = .id_result_type, .quantifier = .required },
8065 .{ .kind = .id_result, .quantifier = .required },9276 .{ .kind = .id_result, .quantifier = .required },
8066 .{ .kind = .id_scope, .quantifier = .required },9277 .{ .kind = .id_scope, .quantifier = .required },
8067 .{ .kind = .id_ref, .quantifier = .required },9278 .{ .kind = .id_ref, .quantifier = .required },
8068 .{ .kind = .id_ref, .quantifier = .required },
8069 .{ .kind = .id_ref, .quantifier = .required },
8070 .{ .kind = .id_ref, .quantifier = .required },
8071 },
8072 },
8073 .{
8074 .name = "OpGroupCommitReadPipe",
8075 .opcode = 287,
8076 .operands = &.{
8077 .{ .kind = .id_scope, .quantifier = .required },
8078 .{ .kind = .id_ref, .quantifier = .required },
8079 .{ .kind = .id_ref, .quantifier = .required },
8080 .{ .kind = .id_ref, .quantifier = .required },
8081 .{ .kind = .id_ref, .quantifier = .required },
8082 },9279 },
8083 },9280 },
8084 .{9281 .{
8085 .name = "OpGroupCommitWritePipe",9282 .name = "OpGroupNonUniformAllEqual",
8086 .opcode = 288,9283 .opcode = 336,
8087 .operands = &.{9284 .operands = &.{
9285 .{ .kind = .id_result_type, .quantifier = .required },
9286 .{ .kind = .id_result, .quantifier = .required },
8088 .{ .kind = .id_scope, .quantifier = .required },9287 .{ .kind = .id_scope, .quantifier = .required },
8089 .{ .kind = .id_ref, .quantifier = .required },9288 .{ .kind = .id_ref, .quantifier = .required },
8090 .{ .kind = .id_ref, .quantifier = .required },
8091 .{ .kind = .id_ref, .quantifier = .required },
8092 .{ .kind = .id_ref, .quantifier = .required },
8093 },9289 },
8094 },9290 },
8095 .{9291 .{
8096 .name = "OpEnqueueMarker",9292 .name = "OpGroupNonUniformBroadcast",
8097 .opcode = 291,9293 .opcode = 337,
8098 .operands = &.{9294 .operands = &.{
8099 .{ .kind = .id_result_type, .quantifier = .required },9295 .{ .kind = .id_result_type, .quantifier = .required },
8100 .{ .kind = .id_result, .quantifier = .required },9296 .{ .kind = .id_result, .quantifier = .required },
8101 .{ .kind = .id_ref, .quantifier = .required },9297 .{ .kind = .id_scope, .quantifier = .required },
8102 .{ .kind = .id_ref, .quantifier = .required },
8103 .{ .kind = .id_ref, .quantifier = .required },9298 .{ .kind = .id_ref, .quantifier = .required },
8104 .{ .kind = .id_ref, .quantifier = .required },9299 .{ .kind = .id_ref, .quantifier = .required },
8105 },9300 },
8106 },9301 },
8107 .{9302 .{
8108 .name = "OpEnqueueKernel",9303 .name = "OpGroupNonUniformBroadcastFirst",
8109 .opcode = 292,9304 .opcode = 338,
8110 .operands = &.{9305 .operands = &.{
8111 .{ .kind = .id_result_type, .quantifier = .required },9306 .{ .kind = .id_result_type, .quantifier = .required },
8112 .{ .kind = .id_result, .quantifier = .required },9307 .{ .kind = .id_result, .quantifier = .required },
9308 .{ .kind = .id_scope, .quantifier = .required },
8113 .{ .kind = .id_ref, .quantifier = .required },9309 .{ .kind = .id_ref, .quantifier = .required },
8114 .{ .kind = .id_ref, .quantifier = .required },
8115 .{ .kind = .id_ref, .quantifier = .required },
8116 .{ .kind = .id_ref, .quantifier = .required },
8117 .{ .kind = .id_ref, .quantifier = .required },
8118 .{ .kind = .id_ref, .quantifier = .required },
8119 .{ .kind = .id_ref, .quantifier = .required },
8120 .{ .kind = .id_ref, .quantifier = .required },
8121 .{ .kind = .id_ref, .quantifier = .required },
8122 .{ .kind = .id_ref, .quantifier = .required },
8123 .{ .kind = .id_ref, .quantifier = .variadic },
8124 },9310 },
8125 },9311 },
8126 .{9312 .{
8127 .name = "OpGetKernelNDrangeSubGroupCount",9313 .name = "OpGroupNonUniformBallot",
8128 .opcode = 293,9314 .opcode = 339,
8129 .operands = &.{9315 .operands = &.{
8130 .{ .kind = .id_result_type, .quantifier = .required },9316 .{ .kind = .id_result_type, .quantifier = .required },
8131 .{ .kind = .id_result, .quantifier = .required },9317 .{ .kind = .id_result, .quantifier = .required },
8132 .{ .kind = .id_ref, .quantifier = .required },9318 .{ .kind = .id_scope, .quantifier = .required },
8133 .{ .kind = .id_ref, .quantifier = .required },
8134 .{ .kind = .id_ref, .quantifier = .required },
8135 .{ .kind = .id_ref, .quantifier = .required },
8136 .{ .kind = .id_ref, .quantifier = .required },9319 .{ .kind = .id_ref, .quantifier = .required },
8137 },9320 },
8138 },9321 },
8139 .{9322 .{
8140 .name = "OpGetKernelNDrangeMaxSubGroupSize",9323 .name = "OpGroupNonUniformInverseBallot",
8141 .opcode = 294,9324 .opcode = 340,
8142 .operands = &.{9325 .operands = &.{
8143 .{ .kind = .id_result_type, .quantifier = .required },9326 .{ .kind = .id_result_type, .quantifier = .required },
8144 .{ .kind = .id_result, .quantifier = .required },9327 .{ .kind = .id_result, .quantifier = .required },
8145 .{ .kind = .id_ref, .quantifier = .required },9328 .{ .kind = .id_scope, .quantifier = .required },
8146 .{ .kind = .id_ref, .quantifier = .required },
8147 .{ .kind = .id_ref, .quantifier = .required },
8148 .{ .kind = .id_ref, .quantifier = .required },
8149 .{ .kind = .id_ref, .quantifier = .required },9329 .{ .kind = .id_ref, .quantifier = .required },
8150 },9330 },
8151 },9331 },
8152 .{9332 .{
8153 .name = "OpGetKernelWorkGroupSize",9333 .name = "OpGroupNonUniformBallotBitExtract",
8154 .opcode = 295,9334 .opcode = 341,
8155 .operands = &.{9335 .operands = &.{
8156 .{ .kind = .id_result_type, .quantifier = .required },9336 .{ .kind = .id_result_type, .quantifier = .required },
8157 .{ .kind = .id_result, .quantifier = .required },9337 .{ .kind = .id_result, .quantifier = .required },
8158 .{ .kind = .id_ref, .quantifier = .required },9338 .{ .kind = .id_scope, .quantifier = .required },
8159 .{ .kind = .id_ref, .quantifier = .required },
8160 .{ .kind = .id_ref, .quantifier = .required },9339 .{ .kind = .id_ref, .quantifier = .required },
8161 .{ .kind = .id_ref, .quantifier = .required },9340 .{ .kind = .id_ref, .quantifier = .required },
8162 },9341 },
8163 },9342 },
8164 .{9343 .{
8165 .name = "OpGetKernelPreferredWorkGroupSizeMultiple",9344 .name = "OpGroupNonUniformBallotBitCount",
8166 .opcode = 296,9345 .opcode = 342,
8167 .operands = &.{9346 .operands = &.{
8168 .{ .kind = .id_result_type, .quantifier = .required },9347 .{ .kind = .id_result_type, .quantifier = .required },
8169 .{ .kind = .id_result, .quantifier = .required },9348 .{ .kind = .id_result, .quantifier = .required },
8170 .{ .kind = .id_ref, .quantifier = .required },9349 .{ .kind = .id_scope, .quantifier = .required },
8171 .{ .kind = .id_ref, .quantifier = .required },9350 .{ .kind = .group_operation, .quantifier = .required },
8172 .{ .kind = .id_ref, .quantifier = .required },
8173 .{ .kind = .id_ref, .quantifier = .required },9351 .{ .kind = .id_ref, .quantifier = .required },
8174 },9352 },
8175 },9353 },
8176 .{9354 .{
8177 .name = "OpRetainEvent",9355 .name = "OpGroupNonUniformBallotFindLSB",
8178 .opcode = 297,9356 .opcode = 343,
8179 .operands = &.{9357 .operands = &.{
9358 .{ .kind = .id_result_type, .quantifier = .required },
9359 .{ .kind = .id_result, .quantifier = .required },
9360 .{ .kind = .id_scope, .quantifier = .required },
8180 .{ .kind = .id_ref, .quantifier = .required },9361 .{ .kind = .id_ref, .quantifier = .required },
8181 },9362 },
8182 },9363 },
8183 .{9364 .{
8184 .name = "OpReleaseEvent",9365 .name = "OpGroupNonUniformBallotFindMSB",
8185 .opcode = 298,9366 .opcode = 344,
8186 .operands = &.{9367 .operands = &.{
9368 .{ .kind = .id_result_type, .quantifier = .required },
9369 .{ .kind = .id_result, .quantifier = .required },
9370 .{ .kind = .id_scope, .quantifier = .required },
8187 .{ .kind = .id_ref, .quantifier = .required },9371 .{ .kind = .id_ref, .quantifier = .required },
8188 },9372 },
8189 },9373 },
8190 .{9374 .{
8191 .name = "OpCreateUserEvent",9375 .name = "OpGroupNonUniformShuffle",
8192 .opcode = 299,9376 .opcode = 345,
8193 .operands = &.{9377 .operands = &.{
8194 .{ .kind = .id_result_type, .quantifier = .required },9378 .{ .kind = .id_result_type, .quantifier = .required },
8195 .{ .kind = .id_result, .quantifier = .required },9379 .{ .kind = .id_result, .quantifier = .required },
9380 .{ .kind = .id_scope, .quantifier = .required },
9381 .{ .kind = .id_ref, .quantifier = .required },
9382 .{ .kind = .id_ref, .quantifier = .required },
8196 },9383 },
8197 },9384 },
8198 .{9385 .{
8199 .name = "OpIsValidEvent",9386 .name = "OpGroupNonUniformShuffleXor",
8200 .opcode = 300,9387 .opcode = 346,
8201 .operands = &.{9388 .operands = &.{
8202 .{ .kind = .id_result_type, .quantifier = .required },9389 .{ .kind = .id_result_type, .quantifier = .required },
8203 .{ .kind = .id_result, .quantifier = .required },9390 .{ .kind = .id_result, .quantifier = .required },
9391 .{ .kind = .id_scope, .quantifier = .required },
9392 .{ .kind = .id_ref, .quantifier = .required },
8204 .{ .kind = .id_ref, .quantifier = .required },9393 .{ .kind = .id_ref, .quantifier = .required },
8205 },9394 },
8206 },9395 },
8207 .{9396 .{
8208 .name = "OpSetUserEventStatus",9397 .name = "OpGroupNonUniformShuffleUp",
8209 .opcode = 301,9398 .opcode = 347,
8210 .operands = &.{9399 .operands = &.{
9400 .{ .kind = .id_result_type, .quantifier = .required },
9401 .{ .kind = .id_result, .quantifier = .required },
9402 .{ .kind = .id_scope, .quantifier = .required },
8211 .{ .kind = .id_ref, .quantifier = .required },9403 .{ .kind = .id_ref, .quantifier = .required },
8212 .{ .kind = .id_ref, .quantifier = .required },9404 .{ .kind = .id_ref, .quantifier = .required },
8213 },9405 },
8214 },9406 },
8215 .{9407 .{
8216 .name = "OpCaptureEventProfilingInfo",9408 .name = "OpGroupNonUniformShuffleDown",
8217 .opcode = 302,9409 .opcode = 348,
8218 .operands = &.{9410 .operands = &.{
8219 .{ .kind = .id_ref, .quantifier = .required },9411 .{ .kind = .id_result_type, .quantifier = .required },
9412 .{ .kind = .id_result, .quantifier = .required },
9413 .{ .kind = .id_scope, .quantifier = .required },
8220 .{ .kind = .id_ref, .quantifier = .required },9414 .{ .kind = .id_ref, .quantifier = .required },
8221 .{ .kind = .id_ref, .quantifier = .required },9415 .{ .kind = .id_ref, .quantifier = .required },
8222 },9416 },
8223 },9417 },
8224 .{9418 .{
8225 .name = "OpGetDefaultQueue",9419 .name = "OpGroupNonUniformIAdd",
8226 .opcode = 303,9420 .opcode = 349,
8227 .operands = &.{9421 .operands = &.{
8228 .{ .kind = .id_result_type, .quantifier = .required },9422 .{ .kind = .id_result_type, .quantifier = .required },
8229 .{ .kind = .id_result, .quantifier = .required },9423 .{ .kind = .id_result, .quantifier = .required },
9424 .{ .kind = .id_scope, .quantifier = .required },
9425 .{ .kind = .group_operation, .quantifier = .required },
9426 .{ .kind = .id_ref, .quantifier = .required },
9427 .{ .kind = .id_ref, .quantifier = .optional },
8230 },9428 },
8231 },9429 },
8232 .{9430 .{
8233 .name = "OpBuildNDRange",9431 .name = "OpGroupNonUniformFAdd",
8234 .opcode = 304,9432 .opcode = 350,
8235 .operands = &.{9433 .operands = &.{
8236 .{ .kind = .id_result_type, .quantifier = .required },9434 .{ .kind = .id_result_type, .quantifier = .required },
8237 .{ .kind = .id_result, .quantifier = .required },9435 .{ .kind = .id_result, .quantifier = .required },
9436 .{ .kind = .id_scope, .quantifier = .required },
9437 .{ .kind = .group_operation, .quantifier = .required },
8238 .{ .kind = .id_ref, .quantifier = .required },9438 .{ .kind = .id_ref, .quantifier = .required },
8239 .{ .kind = .id_ref, .quantifier = .required },9439 .{ .kind = .id_ref, .quantifier = .optional },
8240 .{ .kind = .id_ref, .quantifier = .required },
8241 },9440 },
8242 },9441 },
8243 .{9442 .{
8244 .name = "OpImageSparseSampleImplicitLod",9443 .name = "OpGroupNonUniformIMul",
8245 .opcode = 305,9444 .opcode = 351,
8246 .operands = &.{9445 .operands = &.{
8247 .{ .kind = .id_result_type, .quantifier = .required },9446 .{ .kind = .id_result_type, .quantifier = .required },
8248 .{ .kind = .id_result, .quantifier = .required },9447 .{ .kind = .id_result, .quantifier = .required },
9448 .{ .kind = .id_scope, .quantifier = .required },
9449 .{ .kind = .group_operation, .quantifier = .required },
8249 .{ .kind = .id_ref, .quantifier = .required },9450 .{ .kind = .id_ref, .quantifier = .required },
8250 .{ .kind = .id_ref, .quantifier = .required },9451 .{ .kind = .id_ref, .quantifier = .optional },
8251 .{ .kind = .image_operands, .quantifier = .optional },
8252 },9452 },
8253 },9453 },
8254 .{9454 .{
8255 .name = "OpImageSparseSampleExplicitLod",9455 .name = "OpGroupNonUniformFMul",
8256 .opcode = 306,9456 .opcode = 352,
8257 .operands = &.{9457 .operands = &.{
8258 .{ .kind = .id_result_type, .quantifier = .required },9458 .{ .kind = .id_result_type, .quantifier = .required },
8259 .{ .kind = .id_result, .quantifier = .required },9459 .{ .kind = .id_result, .quantifier = .required },
9460 .{ .kind = .id_scope, .quantifier = .required },
9461 .{ .kind = .group_operation, .quantifier = .required },
8260 .{ .kind = .id_ref, .quantifier = .required },9462 .{ .kind = .id_ref, .quantifier = .required },
8261 .{ .kind = .id_ref, .quantifier = .required },9463 .{ .kind = .id_ref, .quantifier = .optional },
8262 .{ .kind = .image_operands, .quantifier = .required },
8263 },9464 },
8264 },9465 },
8265 .{9466 .{
8266 .name = "OpImageSparseSampleDrefImplicitLod",9467 .name = "OpGroupNonUniformSMin",
8267 .opcode = 307,9468 .opcode = 353,
8268 .operands = &.{9469 .operands = &.{
8269 .{ .kind = .id_result_type, .quantifier = .required },9470 .{ .kind = .id_result_type, .quantifier = .required },
8270 .{ .kind = .id_result, .quantifier = .required },9471 .{ .kind = .id_result, .quantifier = .required },
9472 .{ .kind = .id_scope, .quantifier = .required },
9473 .{ .kind = .group_operation, .quantifier = .required },
8271 .{ .kind = .id_ref, .quantifier = .required },9474 .{ .kind = .id_ref, .quantifier = .required },
8272 .{ .kind = .id_ref, .quantifier = .required },9475 .{ .kind = .id_ref, .quantifier = .optional },
8273 .{ .kind = .id_ref, .quantifier = .required },
8274 .{ .kind = .image_operands, .quantifier = .optional },
8275 },9476 },
8276 },9477 },
8277 .{9478 .{
8278 .name = "OpImageSparseSampleDrefExplicitLod",9479 .name = "OpGroupNonUniformUMin",
8279 .opcode = 308,9480 .opcode = 354,
8280 .operands = &.{9481 .operands = &.{
8281 .{ .kind = .id_result_type, .quantifier = .required },9482 .{ .kind = .id_result_type, .quantifier = .required },
8282 .{ .kind = .id_result, .quantifier = .required },9483 .{ .kind = .id_result, .quantifier = .required },
9484 .{ .kind = .id_scope, .quantifier = .required },
9485 .{ .kind = .group_operation, .quantifier = .required },
8283 .{ .kind = .id_ref, .quantifier = .required },9486 .{ .kind = .id_ref, .quantifier = .required },
8284 .{ .kind = .id_ref, .quantifier = .required },9487 .{ .kind = .id_ref, .quantifier = .optional },
8285 .{ .kind = .id_ref, .quantifier = .required },
8286 .{ .kind = .image_operands, .quantifier = .required },
8287 },9488 },
8288 },9489 },
8289 .{9490 .{
8290 .name = "OpImageSparseSampleProjImplicitLod",9491 .name = "OpGroupNonUniformFMin",
8291 .opcode = 309,9492 .opcode = 355,
8292 .operands = &.{9493 .operands = &.{
8293 .{ .kind = .id_result_type, .quantifier = .required },9494 .{ .kind = .id_result_type, .quantifier = .required },
8294 .{ .kind = .id_result, .quantifier = .required },9495 .{ .kind = .id_result, .quantifier = .required },
9496 .{ .kind = .id_scope, .quantifier = .required },
9497 .{ .kind = .group_operation, .quantifier = .required },
8295 .{ .kind = .id_ref, .quantifier = .required },9498 .{ .kind = .id_ref, .quantifier = .required },
8296 .{ .kind = .id_ref, .quantifier = .required },9499 .{ .kind = .id_ref, .quantifier = .optional },
8297 .{ .kind = .image_operands, .quantifier = .optional },
8298 },9500 },
8299 },9501 },
8300 .{9502 .{
8301 .name = "OpImageSparseSampleProjExplicitLod",9503 .name = "OpGroupNonUniformSMax",
8302 .opcode = 310,9504 .opcode = 356,
8303 .operands = &.{9505 .operands = &.{
8304 .{ .kind = .id_result_type, .quantifier = .required },9506 .{ .kind = .id_result_type, .quantifier = .required },
8305 .{ .kind = .id_result, .quantifier = .required },9507 .{ .kind = .id_result, .quantifier = .required },
9508 .{ .kind = .id_scope, .quantifier = .required },
9509 .{ .kind = .group_operation, .quantifier = .required },
8306 .{ .kind = .id_ref, .quantifier = .required },9510 .{ .kind = .id_ref, .quantifier = .required },
8307 .{ .kind = .id_ref, .quantifier = .required },9511 .{ .kind = .id_ref, .quantifier = .optional },
8308 .{ .kind = .image_operands, .quantifier = .required },
8309 },9512 },
8310 },9513 },
8311 .{9514 .{
8312 .name = "OpImageSparseSampleProjDrefImplicitLod",9515 .name = "OpGroupNonUniformUMax",
8313 .opcode = 311,9516 .opcode = 357,
8314 .operands = &.{9517 .operands = &.{
8315 .{ .kind = .id_result_type, .quantifier = .required },9518 .{ .kind = .id_result_type, .quantifier = .required },
8316 .{ .kind = .id_result, .quantifier = .required },9519 .{ .kind = .id_result, .quantifier = .required },
9520 .{ .kind = .id_scope, .quantifier = .required },
9521 .{ .kind = .group_operation, .quantifier = .required },
8317 .{ .kind = .id_ref, .quantifier = .required },9522 .{ .kind = .id_ref, .quantifier = .required },
8318 .{ .kind = .id_ref, .quantifier = .required },9523 .{ .kind = .id_ref, .quantifier = .optional },
8319 .{ .kind = .id_ref, .quantifier = .required },
8320 .{ .kind = .image_operands, .quantifier = .optional },
8321 },9524 },
8322 },9525 },
8323 .{9526 .{
8324 .name = "OpImageSparseSampleProjDrefExplicitLod",9527 .name = "OpGroupNonUniformFMax",
8325 .opcode = 312,9528 .opcode = 358,
8326 .operands = &.{9529 .operands = &.{
8327 .{ .kind = .id_result_type, .quantifier = .required },9530 .{ .kind = .id_result_type, .quantifier = .required },
8328 .{ .kind = .id_result, .quantifier = .required },9531 .{ .kind = .id_result, .quantifier = .required },
9532 .{ .kind = .id_scope, .quantifier = .required },
9533 .{ .kind = .group_operation, .quantifier = .required },
8329 .{ .kind = .id_ref, .quantifier = .required },9534 .{ .kind = .id_ref, .quantifier = .required },
8330 .{ .kind = .id_ref, .quantifier = .required },9535 .{ .kind = .id_ref, .quantifier = .optional },
8331 .{ .kind = .id_ref, .quantifier = .required },
8332 .{ .kind = .image_operands, .quantifier = .required },
8333 },9536 },
8334 },9537 },
8335 .{9538 .{
8336 .name = "OpImageSparseFetch",9539 .name = "OpGroupNonUniformBitwiseAnd",
8337 .opcode = 313,9540 .opcode = 359,
8338 .operands = &.{9541 .operands = &.{
8339 .{ .kind = .id_result_type, .quantifier = .required },9542 .{ .kind = .id_result_type, .quantifier = .required },
8340 .{ .kind = .id_result, .quantifier = .required },9543 .{ .kind = .id_result, .quantifier = .required },
9544 .{ .kind = .id_scope, .quantifier = .required },
9545 .{ .kind = .group_operation, .quantifier = .required },
8341 .{ .kind = .id_ref, .quantifier = .required },9546 .{ .kind = .id_ref, .quantifier = .required },
8342 .{ .kind = .id_ref, .quantifier = .required },9547 .{ .kind = .id_ref, .quantifier = .optional },
8343 .{ .kind = .image_operands, .quantifier = .optional },
8344 },9548 },
8345 },9549 },
8346 .{9550 .{
8347 .name = "OpImageSparseGather",9551 .name = "OpGroupNonUniformBitwiseOr",
8348 .opcode = 314,9552 .opcode = 360,
8349 .operands = &.{9553 .operands = &.{
8350 .{ .kind = .id_result_type, .quantifier = .required },9554 .{ .kind = .id_result_type, .quantifier = .required },
8351 .{ .kind = .id_result, .quantifier = .required },9555 .{ .kind = .id_result, .quantifier = .required },
9556 .{ .kind = .id_scope, .quantifier = .required },
9557 .{ .kind = .group_operation, .quantifier = .required },
8352 .{ .kind = .id_ref, .quantifier = .required },9558 .{ .kind = .id_ref, .quantifier = .required },
8353 .{ .kind = .id_ref, .quantifier = .required },9559 .{ .kind = .id_ref, .quantifier = .optional },
8354 .{ .kind = .id_ref, .quantifier = .required },
8355 .{ .kind = .image_operands, .quantifier = .optional },
8356 },9560 },
8357 },9561 },
8358 .{9562 .{
8359 .name = "OpImageSparseDrefGather",9563 .name = "OpGroupNonUniformBitwiseXor",
8360 .opcode = 315,9564 .opcode = 361,
8361 .operands = &.{9565 .operands = &.{
8362 .{ .kind = .id_result_type, .quantifier = .required },9566 .{ .kind = .id_result_type, .quantifier = .required },
8363 .{ .kind = .id_result, .quantifier = .required },9567 .{ .kind = .id_result, .quantifier = .required },
9568 .{ .kind = .id_scope, .quantifier = .required },
9569 .{ .kind = .group_operation, .quantifier = .required },
8364 .{ .kind = .id_ref, .quantifier = .required },9570 .{ .kind = .id_ref, .quantifier = .required },
8365 .{ .kind = .id_ref, .quantifier = .required },9571 .{ .kind = .id_ref, .quantifier = .optional },
8366 .{ .kind = .id_ref, .quantifier = .required },
8367 .{ .kind = .image_operands, .quantifier = .optional },
8368 },9572 },
8369 },9573 },
8370 .{9574 .{
8371 .name = "OpImageSparseTexelsResident",9575 .name = "OpGroupNonUniformLogicalAnd",
8372 .opcode = 316,9576 .opcode = 362,
8373 .operands = &.{9577 .operands = &.{
8374 .{ .kind = .id_result_type, .quantifier = .required },9578 .{ .kind = .id_result_type, .quantifier = .required },
8375 .{ .kind = .id_result, .quantifier = .required },9579 .{ .kind = .id_result, .quantifier = .required },
9580 .{ .kind = .id_scope, .quantifier = .required },
9581 .{ .kind = .group_operation, .quantifier = .required },
8376 .{ .kind = .id_ref, .quantifier = .required },9582 .{ .kind = .id_ref, .quantifier = .required },
9583 .{ .kind = .id_ref, .quantifier = .optional },
8377 },9584 },
8378 },9585 },
8379 .{9586 .{
8380 .name = "OpNoLine",9587 .name = "OpGroupNonUniformLogicalOr",
8381 .opcode = 317,9588 .opcode = 363,
8382 .operands = &.{},
8383 },
8384 .{
8385 .name = "OpAtomicFlagTestAndSet",
8386 .opcode = 318,
8387 .operands = &.{9589 .operands = &.{
8388 .{ .kind = .id_result_type, .quantifier = .required },9590 .{ .kind = .id_result_type, .quantifier = .required },
8389 .{ .kind = .id_result, .quantifier = .required },9591 .{ .kind = .id_result, .quantifier = .required },
8390 .{ .kind = .id_ref, .quantifier = .required },
8391 .{ .kind = .id_scope, .quantifier = .required },9592 .{ .kind = .id_scope, .quantifier = .required },
8392 .{ .kind = .id_memory_semantics, .quantifier = .required },9593 .{ .kind = .group_operation, .quantifier = .required },
9594 .{ .kind = .id_ref, .quantifier = .required },
9595 .{ .kind = .id_ref, .quantifier = .optional },
8393 },9596 },
8394 },9597 },
8395 .{9598 .{
8396 .name = "OpAtomicFlagClear",9599 .name = "OpGroupNonUniformLogicalXor",
8397 .opcode = 319,9600 .opcode = 364,
8398 .operands = &.{9601 .operands = &.{
8399 .{ .kind = .id_ref, .quantifier = .required },9602 .{ .kind = .id_result_type, .quantifier = .required },
9603 .{ .kind = .id_result, .quantifier = .required },
8400 .{ .kind = .id_scope, .quantifier = .required },9604 .{ .kind = .id_scope, .quantifier = .required },
8401 .{ .kind = .id_memory_semantics, .quantifier = .required },9605 .{ .kind = .group_operation, .quantifier = .required },
9606 .{ .kind = .id_ref, .quantifier = .required },
9607 .{ .kind = .id_ref, .quantifier = .optional },
8402 },9608 },
8403 },9609 },
8404 .{9610 .{
8405 .name = "OpImageSparseRead",9611 .name = "OpGroupNonUniformQuadBroadcast",
8406 .opcode = 320,9612 .opcode = 365,
8407 .operands = &.{9613 .operands = &.{
8408 .{ .kind = .id_result_type, .quantifier = .required },9614 .{ .kind = .id_result_type, .quantifier = .required },
8409 .{ .kind = .id_result, .quantifier = .required },9615 .{ .kind = .id_result, .quantifier = .required },
9616 .{ .kind = .id_scope, .quantifier = .required },
8410 .{ .kind = .id_ref, .quantifier = .required },9617 .{ .kind = .id_ref, .quantifier = .required },
8411 .{ .kind = .id_ref, .quantifier = .required },9618 .{ .kind = .id_ref, .quantifier = .required },
8412 .{ .kind = .image_operands, .quantifier = .optional },
8413 },9619 },
8414 },9620 },
8415 .{9621 .{
8416 .name = "OpSizeOf",9622 .name = "OpGroupNonUniformQuadSwap",
8417 .opcode = 321,9623 .opcode = 366,
8418 .operands = &.{9624 .operands = &.{
8419 .{ .kind = .id_result_type, .quantifier = .required },9625 .{ .kind = .id_result_type, .quantifier = .required },
8420 .{ .kind = .id_result, .quantifier = .required },9626 .{ .kind = .id_result, .quantifier = .required },
9627 .{ .kind = .id_scope, .quantifier = .required },
9628 .{ .kind = .id_ref, .quantifier = .required },
8421 .{ .kind = .id_ref, .quantifier = .required },9629 .{ .kind = .id_ref, .quantifier = .required },
8422 },9630 },
8423 },9631 },
8424 .{9632 .{
8425 .name = "OpTypePipeStorage",9633 .name = "OpCopyLogical",
8426 .opcode = 322,9634 .opcode = 400,
8427 .operands = &.{9635 .operands = &.{
9636 .{ .kind = .id_result_type, .quantifier = .required },
8428 .{ .kind = .id_result, .quantifier = .required },9637 .{ .kind = .id_result, .quantifier = .required },
9638 .{ .kind = .id_ref, .quantifier = .required },
8429 },9639 },
8430 },9640 },
8431 .{9641 .{
8432 .name = "OpConstantPipeStorage",9642 .name = "OpPtrEqual",
8433 .opcode = 323,9643 .opcode = 401,
8434 .operands = &.{9644 .operands = &.{
8435 .{ .kind = .id_result_type, .quantifier = .required },9645 .{ .kind = .id_result_type, .quantifier = .required },
8436 .{ .kind = .id_result, .quantifier = .required },9646 .{ .kind = .id_result, .quantifier = .required },
8437 .{ .kind = .literal_integer, .quantifier = .required },9647 .{ .kind = .id_ref, .quantifier = .required },
8438 .{ .kind = .literal_integer, .quantifier = .required },9648 .{ .kind = .id_ref, .quantifier = .required },
8439 .{ .kind = .literal_integer, .quantifier = .required },
8440 },9649 },
8441 },9650 },
8442 .{9651 .{
8443 .name = "OpCreatePipeFromPipeStorage",9652 .name = "OpPtrNotEqual",
8444 .opcode = 324,9653 .opcode = 402,
8445 .operands = &.{9654 .operands = &.{
8446 .{ .kind = .id_result_type, .quantifier = .required },9655 .{ .kind = .id_result_type, .quantifier = .required },
8447 .{ .kind = .id_result, .quantifier = .required },9656 .{ .kind = .id_result, .quantifier = .required },
8448 .{ .kind = .id_ref, .quantifier = .required },9657 .{ .kind = .id_ref, .quantifier = .required },
9658 .{ .kind = .id_ref, .quantifier = .required },
8449 },9659 },
8450 },9660 },
8451 .{9661 .{
8452 .name = "OpGetKernelLocalSizeForSubgroupCount",9662 .name = "OpPtrDiff",
8453 .opcode = 325,9663 .opcode = 403,
8454 .operands = &.{9664 .operands = &.{
8455 .{ .kind = .id_result_type, .quantifier = .required },9665 .{ .kind = .id_result_type, .quantifier = .required },
8456 .{ .kind = .id_result, .quantifier = .required },9666 .{ .kind = .id_result, .quantifier = .required },
8457 .{ .kind = .id_ref, .quantifier = .required },9667 .{ .kind = .id_ref, .quantifier = .required },
8458 .{ .kind = .id_ref, .quantifier = .required },9668 .{ .kind = .id_ref, .quantifier = .required },
8459 .{ .kind = .id_ref, .quantifier = .required },
8460 .{ .kind = .id_ref, .quantifier = .required },
8461 .{ .kind = .id_ref, .quantifier = .required },
8462 },9669 },
8463 },9670 },
8464 .{9671 .{
8465 .name = "OpGetKernelMaxNumSubgroups",9672 .name = "OpColorAttachmentReadEXT",
8466 .opcode = 326,9673 .opcode = 4160,
8467 .operands = &.{9674 .operands = &.{
8468 .{ .kind = .id_result_type, .quantifier = .required },9675 .{ .kind = .id_result_type, .quantifier = .required },
8469 .{ .kind = .id_result, .quantifier = .required },9676 .{ .kind = .id_result, .quantifier = .required },
8470 .{ .kind = .id_ref, .quantifier = .required },9677 .{ .kind = .id_ref, .quantifier = .required },
8471 .{ .kind = .id_ref, .quantifier = .required },9678 .{ .kind = .id_ref, .quantifier = .optional },
8472 .{ .kind = .id_ref, .quantifier = .required },
8473 .{ .kind = .id_ref, .quantifier = .required },
8474 },9679 },
8475 },9680 },
8476 .{9681 .{
8477 .name = "OpTypeNamedBarrier",9682 .name = "OpDepthAttachmentReadEXT",
8478 .opcode = 327,9683 .opcode = 4161,
8479 .operands = &.{9684 .operands = &.{
9685 .{ .kind = .id_result_type, .quantifier = .required },
8480 .{ .kind = .id_result, .quantifier = .required },9686 .{ .kind = .id_result, .quantifier = .required },
9687 .{ .kind = .id_ref, .quantifier = .optional },
8481 },9688 },
8482 },9689 },
8483 .{9690 .{
8484 .name = "OpNamedBarrierInitialize",9691 .name = "OpStencilAttachmentReadEXT",
8485 .opcode = 328,9692 .opcode = 4162,
8486 .operands = &.{9693 .operands = &.{
8487 .{ .kind = .id_result_type, .quantifier = .required },9694 .{ .kind = .id_result_type, .quantifier = .required },
8488 .{ .kind = .id_result, .quantifier = .required },9695 .{ .kind = .id_result, .quantifier = .required },
8489 .{ .kind = .id_ref, .quantifier = .required },9696 .{ .kind = .id_ref, .quantifier = .optional },
8490 },9697 },
8491 },9698 },
8492 .{9699 .{
8493 .name = "OpMemoryNamedBarrier",9700 .name = "OpTypeTensorARM",
8494 .opcode = 329,9701 .opcode = 4163,
8495 .operands = &.{9702 .operands = &.{
9703 .{ .kind = .id_result, .quantifier = .required },
8496 .{ .kind = .id_ref, .quantifier = .required },9704 .{ .kind = .id_ref, .quantifier = .required },
8497 .{ .kind = .id_scope, .quantifier = .required },9705 .{ .kind = .id_ref, .quantifier = .optional },
8498 .{ .kind = .id_memory_semantics, .quantifier = .required },9706 .{ .kind = .id_ref, .quantifier = .optional },
8499 },9707 },
8500 },9708 },
8501 .{9709 .{
8502 .name = "OpModuleProcessed",9710 .name = "OpTensorReadARM",
8503 .opcode = 330,9711 .opcode = 4164,
8504 .operands = &.{9712 .operands = &.{
8505 .{ .kind = .literal_string, .quantifier = .required },9713 .{ .kind = .id_result_type, .quantifier = .required },
9714 .{ .kind = .id_result, .quantifier = .required },
9715 .{ .kind = .id_ref, .quantifier = .required },
9716 .{ .kind = .id_ref, .quantifier = .required },
9717 .{ .kind = .tensor_operands, .quantifier = .optional },
8506 },9718 },
8507 },9719 },
8508 .{9720 .{
8509 .name = "OpExecutionModeId",9721 .name = "OpTensorWriteARM",
8510 .opcode = 331,9722 .opcode = 4165,
8511 .operands = &.{9723 .operands = &.{
8512 .{ .kind = .id_ref, .quantifier = .required },9724 .{ .kind = .id_ref, .quantifier = .required },
8513 .{ .kind = .execution_mode, .quantifier = .required },9725 .{ .kind = .id_ref, .quantifier = .required },
9726 .{ .kind = .id_ref, .quantifier = .required },
9727 .{ .kind = .tensor_operands, .quantifier = .optional },
8514 },9728 },
8515 },9729 },
8516 .{9730 .{
8517 .name = "OpDecorateId",9731 .name = "OpTensorQuerySizeARM",
8518 .opcode = 332,9732 .opcode = 4166,
8519 .operands = &.{9733 .operands = &.{
9734 .{ .kind = .id_result_type, .quantifier = .required },
9735 .{ .kind = .id_result, .quantifier = .required },
9736 .{ .kind = .id_ref, .quantifier = .required },
8520 .{ .kind = .id_ref, .quantifier = .required },9737 .{ .kind = .id_ref, .quantifier = .required },
8521 .{ .kind = .decoration, .quantifier = .required },
8522 },9738 },
8523 },9739 },
8524 .{9740 .{
8525 .name = "OpGroupNonUniformElect",9741 .name = "OpGraphConstantARM",
8526 .opcode = 333,9742 .opcode = 4181,
8527 .operands = &.{9743 .operands = &.{
8528 .{ .kind = .id_result_type, .quantifier = .required },9744 .{ .kind = .id_result_type, .quantifier = .required },
8529 .{ .kind = .id_result, .quantifier = .required },9745 .{ .kind = .id_result, .quantifier = .required },
8530 .{ .kind = .id_scope, .quantifier = .required },9746 .{ .kind = .literal_integer, .quantifier = .required },
8531 },9747 },
8532 },9748 },
8533 .{9749 .{
8534 .name = "OpGroupNonUniformAll",9750 .name = "OpGraphEntryPointARM",
8535 .opcode = 334,9751 .opcode = 4182,
8536 .operands = &.{9752 .operands = &.{
8537 .{ .kind = .id_result_type, .quantifier = .required },
8538 .{ .kind = .id_result, .quantifier = .required },
8539 .{ .kind = .id_scope, .quantifier = .required },
8540 .{ .kind = .id_ref, .quantifier = .required },9753 .{ .kind = .id_ref, .quantifier = .required },
9754 .{ .kind = .literal_string, .quantifier = .required },
9755 .{ .kind = .id_ref, .quantifier = .variadic },
8541 },9756 },
8542 },9757 },
8543 .{9758 .{
8544 .name = "OpGroupNonUniformAny",9759 .name = "OpGraphARM",
8545 .opcode = 335,9760 .opcode = 4183,
8546 .operands = &.{9761 .operands = &.{
8547 .{ .kind = .id_result_type, .quantifier = .required },9762 .{ .kind = .id_result_type, .quantifier = .required },
8548 .{ .kind = .id_result, .quantifier = .required },9763 .{ .kind = .id_result, .quantifier = .required },
8549 .{ .kind = .id_scope, .quantifier = .required },
8550 .{ .kind = .id_ref, .quantifier = .required },
8551 },9764 },
8552 },9765 },
8553 .{9766 .{
8554 .name = "OpGroupNonUniformAllEqual",9767 .name = "OpGraphInputARM",
8555 .opcode = 336,9768 .opcode = 4184,
8556 .operands = &.{9769 .operands = &.{
8557 .{ .kind = .id_result_type, .quantifier = .required },9770 .{ .kind = .id_result_type, .quantifier = .required },
8558 .{ .kind = .id_result, .quantifier = .required },9771 .{ .kind = .id_result, .quantifier = .required },
8559 .{ .kind = .id_scope, .quantifier = .required },
8560 .{ .kind = .id_ref, .quantifier = .required },9772 .{ .kind = .id_ref, .quantifier = .required },
9773 .{ .kind = .id_ref, .quantifier = .variadic },
8561 },9774 },
8562 },9775 },
8563 .{9776 .{
8564 .name = "OpGroupNonUniformBroadcast",9777 .name = "OpGraphSetOutputARM",
8565 .opcode = 337,9778 .opcode = 4185,
8566 .operands = &.{9779 .operands = &.{
8567 .{ .kind = .id_result_type, .quantifier = .required },
8568 .{ .kind = .id_result, .quantifier = .required },
8569 .{ .kind = .id_scope, .quantifier = .required },
8570 .{ .kind = .id_ref, .quantifier = .required },9780 .{ .kind = .id_ref, .quantifier = .required },
8571 .{ .kind = .id_ref, .quantifier = .required },9781 .{ .kind = .id_ref, .quantifier = .required },
9782 .{ .kind = .id_ref, .quantifier = .variadic },
8572 },9783 },
8573 },9784 },
8574 .{9785 .{
8575 .name = "OpGroupNonUniformBroadcastFirst",9786 .name = "OpGraphEndARM",
8576 .opcode = 338,9787 .opcode = 4186,
9788 .operands = &.{},
9789 },
9790 .{
9791 .name = "OpTypeGraphARM",
9792 .opcode = 4190,
8577 .operands = &.{9793 .operands = &.{
8578 .{ .kind = .id_result_type, .quantifier = .required },
8579 .{ .kind = .id_result, .quantifier = .required },9794 .{ .kind = .id_result, .quantifier = .required },
8580 .{ .kind = .id_scope, .quantifier = .required },9795 .{ .kind = .literal_integer, .quantifier = .required },
8581 .{ .kind = .id_ref, .quantifier = .required },9796 .{ .kind = .id_ref, .quantifier = .variadic },
8582 },9797 },
8583 },9798 },
8584 .{9799 .{
8585 .name = "OpGroupNonUniformBallot",9800 .name = "OpTerminateInvocation",
8586 .opcode = 339,9801 .opcode = 4416,
9802 .operands = &.{},
9803 },
9804 .{
9805 .name = "OpTypeUntypedPointerKHR",
9806 .opcode = 4417,
8587 .operands = &.{9807 .operands = &.{
8588 .{ .kind = .id_result_type, .quantifier = .required },
8589 .{ .kind = .id_result, .quantifier = .required },9808 .{ .kind = .id_result, .quantifier = .required },
8590 .{ .kind = .id_scope, .quantifier = .required },9809 .{ .kind = .storage_class, .quantifier = .required },
8591 .{ .kind = .id_ref, .quantifier = .required },
8592 },9810 },
8593 },9811 },
8594 .{9812 .{
8595 .name = "OpGroupNonUniformInverseBallot",9813 .name = "OpUntypedVariableKHR",
8596 .opcode = 340,9814 .opcode = 4418,
8597 .operands = &.{9815 .operands = &.{
8598 .{ .kind = .id_result_type, .quantifier = .required },9816 .{ .kind = .id_result_type, .quantifier = .required },
8599 .{ .kind = .id_result, .quantifier = .required },9817 .{ .kind = .id_result, .quantifier = .required },
8600 .{ .kind = .id_scope, .quantifier = .required },9818 .{ .kind = .storage_class, .quantifier = .required },
8601 .{ .kind = .id_ref, .quantifier = .required },9819 .{ .kind = .id_ref, .quantifier = .optional },
9820 .{ .kind = .id_ref, .quantifier = .optional },
8602 },9821 },
8603 },9822 },
8604 .{9823 .{
8605 .name = "OpGroupNonUniformBallotBitExtract",9824 .name = "OpUntypedAccessChainKHR",
8606 .opcode = 341,9825 .opcode = 4419,
8607 .operands = &.{9826 .operands = &.{
8608 .{ .kind = .id_result_type, .quantifier = .required },9827 .{ .kind = .id_result_type, .quantifier = .required },
8609 .{ .kind = .id_result, .quantifier = .required },9828 .{ .kind = .id_result, .quantifier = .required },
8610 .{ .kind = .id_scope, .quantifier = .required },
8611 .{ .kind = .id_ref, .quantifier = .required },9829 .{ .kind = .id_ref, .quantifier = .required },
8612 .{ .kind = .id_ref, .quantifier = .required },9830 .{ .kind = .id_ref, .quantifier = .required },
9831 .{ .kind = .id_ref, .quantifier = .variadic },
8613 },9832 },
8614 },9833 },
8615 .{9834 .{
8616 .name = "OpGroupNonUniformBallotBitCount",9835 .name = "OpUntypedInBoundsAccessChainKHR",
8617 .opcode = 342,9836 .opcode = 4420,
8618 .operands = &.{9837 .operands = &.{
8619 .{ .kind = .id_result_type, .quantifier = .required },9838 .{ .kind = .id_result_type, .quantifier = .required },
8620 .{ .kind = .id_result, .quantifier = .required },9839 .{ .kind = .id_result, .quantifier = .required },
8621 .{ .kind = .id_scope, .quantifier = .required },
8622 .{ .kind = .group_operation, .quantifier = .required },
8623 .{ .kind = .id_ref, .quantifier = .required },9840 .{ .kind = .id_ref, .quantifier = .required },
9841 .{ .kind = .id_ref, .quantifier = .required },
9842 .{ .kind = .id_ref, .quantifier = .variadic },
8624 },9843 },
8625 },9844 },
8626 .{9845 .{
8627 .name = "OpGroupNonUniformBallotFindLSB",9846 .name = "OpSubgroupBallotKHR",
8628 .opcode = 343,9847 .opcode = 4421,
8629 .operands = &.{9848 .operands = &.{
8630 .{ .kind = .id_result_type, .quantifier = .required },9849 .{ .kind = .id_result_type, .quantifier = .required },
8631 .{ .kind = .id_result, .quantifier = .required },9850 .{ .kind = .id_result, .quantifier = .required },
8632 .{ .kind = .id_scope, .quantifier = .required },
8633 .{ .kind = .id_ref, .quantifier = .required },9851 .{ .kind = .id_ref, .quantifier = .required },
8634 },9852 },
8635 },9853 },
8636 .{9854 .{
8637 .name = "OpGroupNonUniformBallotFindMSB",9855 .name = "OpSubgroupFirstInvocationKHR",
8638 .opcode = 344,9856 .opcode = 4422,
8639 .operands = &.{9857 .operands = &.{
8640 .{ .kind = .id_result_type, .quantifier = .required },9858 .{ .kind = .id_result_type, .quantifier = .required },
8641 .{ .kind = .id_result, .quantifier = .required },9859 .{ .kind = .id_result, .quantifier = .required },
8642 .{ .kind = .id_scope, .quantifier = .required },
8643 .{ .kind = .id_ref, .quantifier = .required },9860 .{ .kind = .id_ref, .quantifier = .required },
8644 },9861 },
8645 },9862 },
8646 .{9863 .{
8647 .name = "OpGroupNonUniformShuffle",9864 .name = "OpUntypedPtrAccessChainKHR",
8648 .opcode = 345,9865 .opcode = 4423,
8649 .operands = &.{9866 .operands = &.{
8650 .{ .kind = .id_result_type, .quantifier = .required },9867 .{ .kind = .id_result_type, .quantifier = .required },
8651 .{ .kind = .id_result, .quantifier = .required },9868 .{ .kind = .id_result, .quantifier = .required },
8652 .{ .kind = .id_scope, .quantifier = .required },
8653 .{ .kind = .id_ref, .quantifier = .required },9869 .{ .kind = .id_ref, .quantifier = .required },
8654 .{ .kind = .id_ref, .quantifier = .required },9870 .{ .kind = .id_ref, .quantifier = .required },
9871 .{ .kind = .id_ref, .quantifier = .required },
9872 .{ .kind = .id_ref, .quantifier = .variadic },
8655 },9873 },
8656 },9874 },
8657 .{9875 .{
8658 .name = "OpGroupNonUniformShuffleXor",9876 .name = "OpUntypedInBoundsPtrAccessChainKHR",
8659 .opcode = 346,9877 .opcode = 4424,
8660 .operands = &.{9878 .operands = &.{
8661 .{ .kind = .id_result_type, .quantifier = .required },9879 .{ .kind = .id_result_type, .quantifier = .required },
8662 .{ .kind = .id_result, .quantifier = .required },9880 .{ .kind = .id_result, .quantifier = .required },
8663 .{ .kind = .id_scope, .quantifier = .required },
8664 .{ .kind = .id_ref, .quantifier = .required },9881 .{ .kind = .id_ref, .quantifier = .required },
8665 .{ .kind = .id_ref, .quantifier = .required },9882 .{ .kind = .id_ref, .quantifier = .required },
9883 .{ .kind = .id_ref, .quantifier = .required },
9884 .{ .kind = .id_ref, .quantifier = .variadic },
8666 },9885 },
8667 },9886 },
8668 .{9887 .{
8669 .name = "OpGroupNonUniformShuffleUp",9888 .name = "OpUntypedArrayLengthKHR",
8670 .opcode = 347,9889 .opcode = 4425,
8671 .operands = &.{9890 .operands = &.{
8672 .{ .kind = .id_result_type, .quantifier = .required },9891 .{ .kind = .id_result_type, .quantifier = .required },
8673 .{ .kind = .id_result, .quantifier = .required },9892 .{ .kind = .id_result, .quantifier = .required },
8674 .{ .kind = .id_scope, .quantifier = .required },
8675 .{ .kind = .id_ref, .quantifier = .required },9893 .{ .kind = .id_ref, .quantifier = .required },
8676 .{ .kind = .id_ref, .quantifier = .required },9894 .{ .kind = .id_ref, .quantifier = .required },
9895 .{ .kind = .literal_integer, .quantifier = .required },
8677 },9896 },
8678 },9897 },
8679 .{9898 .{
8680 .name = "OpGroupNonUniformShuffleDown",9899 .name = "OpUntypedPrefetchKHR",
8681 .opcode = 348,9900 .opcode = 4426,
8682 .operands = &.{9901 .operands = &.{
8683 .{ .kind = .id_result_type, .quantifier = .required },
8684 .{ .kind = .id_result, .quantifier = .required },
8685 .{ .kind = .id_scope, .quantifier = .required },
8686 .{ .kind = .id_ref, .quantifier = .required },9902 .{ .kind = .id_ref, .quantifier = .required },
8687 .{ .kind = .id_ref, .quantifier = .required },9903 .{ .kind = .id_ref, .quantifier = .required },
9904 .{ .kind = .id_ref, .quantifier = .optional },
9905 .{ .kind = .id_ref, .quantifier = .optional },
9906 .{ .kind = .id_ref, .quantifier = .optional },
8688 },9907 },
8689 },9908 },
8690 .{9909 .{
8691 .name = "OpGroupNonUniformIAdd",9910 .name = "OpFmaKHR",
8692 .opcode = 349,9911 .opcode = 4427,
8693 .operands = &.{9912 .operands = &.{
8694 .{ .kind = .id_result_type, .quantifier = .required },9913 .{ .kind = .id_result_type, .quantifier = .required },
8695 .{ .kind = .id_result, .quantifier = .required },9914 .{ .kind = .id_result, .quantifier = .required },
8696 .{ .kind = .id_scope, .quantifier = .required },
8697 .{ .kind = .group_operation, .quantifier = .required },
8698 .{ .kind = .id_ref, .quantifier = .required },9915 .{ .kind = .id_ref, .quantifier = .required },
8699 .{ .kind = .id_ref, .quantifier = .optional },9916 .{ .kind = .id_ref, .quantifier = .required },
9917 .{ .kind = .id_ref, .quantifier = .required },
8700 },9918 },
8701 },9919 },
8702 .{9920 .{
8703 .name = "OpGroupNonUniformFAdd",9921 .name = "OpSubgroupAllKHR",
8704 .opcode = 350,9922 .opcode = 4428,
8705 .operands = &.{9923 .operands = &.{
8706 .{ .kind = .id_result_type, .quantifier = .required },9924 .{ .kind = .id_result_type, .quantifier = .required },
8707 .{ .kind = .id_result, .quantifier = .required },9925 .{ .kind = .id_result, .quantifier = .required },
8708 .{ .kind = .id_scope, .quantifier = .required },
8709 .{ .kind = .group_operation, .quantifier = .required },
8710 .{ .kind = .id_ref, .quantifier = .required },9926 .{ .kind = .id_ref, .quantifier = .required },
8711 .{ .kind = .id_ref, .quantifier = .optional },
8712 },9927 },
8713 },9928 },
8714 .{9929 .{
8715 .name = "OpGroupNonUniformIMul",9930 .name = "OpSubgroupAnyKHR",
8716 .opcode = 351,9931 .opcode = 4429,
8717 .operands = &.{9932 .operands = &.{
8718 .{ .kind = .id_result_type, .quantifier = .required },9933 .{ .kind = .id_result_type, .quantifier = .required },
8719 .{ .kind = .id_result, .quantifier = .required },9934 .{ .kind = .id_result, .quantifier = .required },
8720 .{ .kind = .id_scope, .quantifier = .required },
8721 .{ .kind = .group_operation, .quantifier = .required },
8722 .{ .kind = .id_ref, .quantifier = .required },9935 .{ .kind = .id_ref, .quantifier = .required },
8723 .{ .kind = .id_ref, .quantifier = .optional },
8724 },9936 },
8725 },9937 },
8726 .{9938 .{
8727 .name = "OpGroupNonUniformFMul",9939 .name = "OpSubgroupAllEqualKHR",
8728 .opcode = 352,9940 .opcode = 4430,
8729 .operands = &.{9941 .operands = &.{
8730 .{ .kind = .id_result_type, .quantifier = .required },9942 .{ .kind = .id_result_type, .quantifier = .required },
8731 .{ .kind = .id_result, .quantifier = .required },9943 .{ .kind = .id_result, .quantifier = .required },
8732 .{ .kind = .id_scope, .quantifier = .required },
8733 .{ .kind = .group_operation, .quantifier = .required },
8734 .{ .kind = .id_ref, .quantifier = .required },9944 .{ .kind = .id_ref, .quantifier = .required },
8735 .{ .kind = .id_ref, .quantifier = .optional },
8736 },9945 },
8737 },9946 },
8738 .{9947 .{
8739 .name = "OpGroupNonUniformSMin",9948 .name = "OpGroupNonUniformRotateKHR",
8740 .opcode = 353,9949 .opcode = 4431,
8741 .operands = &.{9950 .operands = &.{
8742 .{ .kind = .id_result_type, .quantifier = .required },9951 .{ .kind = .id_result_type, .quantifier = .required },
8743 .{ .kind = .id_result, .quantifier = .required },9952 .{ .kind = .id_result, .quantifier = .required },
8744 .{ .kind = .id_scope, .quantifier = .required },9953 .{ .kind = .id_scope, .quantifier = .required },
8745 .{ .kind = .group_operation, .quantifier = .required },9954 .{ .kind = .id_ref, .quantifier = .required },
8746 .{ .kind = .id_ref, .quantifier = .required },9955 .{ .kind = .id_ref, .quantifier = .required },
8747 .{ .kind = .id_ref, .quantifier = .optional },9956 .{ .kind = .id_ref, .quantifier = .optional },
8748 },9957 },
8749 },9958 },
8750 .{9959 .{
8751 .name = "OpGroupNonUniformUMin",9960 .name = "OpSubgroupReadInvocationKHR",
8752 .opcode = 354,9961 .opcode = 4432,
8753 .operands = &.{9962 .operands = &.{
8754 .{ .kind = .id_result_type, .quantifier = .required },9963 .{ .kind = .id_result_type, .quantifier = .required },
8755 .{ .kind = .id_result, .quantifier = .required },9964 .{ .kind = .id_result, .quantifier = .required },
8756 .{ .kind = .id_scope, .quantifier = .required },
8757 .{ .kind = .group_operation, .quantifier = .required },
8758 .{ .kind = .id_ref, .quantifier = .required },9965 .{ .kind = .id_ref, .quantifier = .required },
8759 .{ .kind = .id_ref, .quantifier = .optional },9966 .{ .kind = .id_ref, .quantifier = .required },
8760 },9967 },
8761 },9968 },
8762 .{9969 .{
8763 .name = "OpGroupNonUniformFMin",9970 .name = "OpExtInstWithForwardRefsKHR",
8764 .opcode = 355,9971 .opcode = 4433,
8765 .operands = &.{9972 .operands = &.{
8766 .{ .kind = .id_result_type, .quantifier = .required },9973 .{ .kind = .id_result_type, .quantifier = .required },
8767 .{ .kind = .id_result, .quantifier = .required },9974 .{ .kind = .id_result, .quantifier = .required },
8768 .{ .kind = .id_scope, .quantifier = .required },
8769 .{ .kind = .group_operation, .quantifier = .required },
8770 .{ .kind = .id_ref, .quantifier = .required },9975 .{ .kind = .id_ref, .quantifier = .required },
8771 .{ .kind = .id_ref, .quantifier = .optional },9976 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },
9977 .{ .kind = .id_ref, .quantifier = .variadic },
8772 },9978 },
8773 },9979 },
8774 .{9980 .{
8775 .name = "OpGroupNonUniformSMax",9981 .name = "OpUntypedGroupAsyncCopyKHR",
8776 .opcode = 356,9982 .opcode = 4434,
8777 .operands = &.{9983 .operands = &.{
8778 .{ .kind = .id_result_type, .quantifier = .required },9984 .{ .kind = .id_result_type, .quantifier = .required },
8779 .{ .kind = .id_result, .quantifier = .required },9985 .{ .kind = .id_result, .quantifier = .required },
8780 .{ .kind = .id_scope, .quantifier = .required },
8781 .{ .kind = .group_operation, .quantifier = .required },
8782 .{ .kind = .id_ref, .quantifier = .required },9986 .{ .kind = .id_ref, .quantifier = .required },
8783 .{ .kind = .id_ref, .quantifier = .optional },9987 .{ .kind = .id_ref, .quantifier = .required },
9988 .{ .kind = .id_ref, .quantifier = .required },
9989 .{ .kind = .id_ref, .quantifier = .required },
9990 .{ .kind = .id_ref, .quantifier = .required },
9991 .{ .kind = .id_ref, .quantifier = .required },
9992 .{ .kind = .id_ref, .quantifier = .required },
9993 .{ .kind = .memory_access, .quantifier = .optional },
9994 .{ .kind = .memory_access, .quantifier = .optional },
8784 },9995 },
8785 },9996 },
8786 .{9997 .{
8787 .name = "OpGroupNonUniformUMax",9998 .name = "OpTraceRayKHR",
8788 .opcode = 357,9999 .opcode = 4445,
8789 .operands = &.{10000 .operands = &.{
8790 .{ .kind = .id_result_type, .quantifier = .required },
8791 .{ .kind = .id_result, .quantifier = .required },
8792 .{ .kind = .id_scope, .quantifier = .required },
8793 .{ .kind = .group_operation, .quantifier = .required },
8794 .{ .kind = .id_ref, .quantifier = .required },10001 .{ .kind = .id_ref, .quantifier = .required },
8795 .{ .kind = .id_ref, .quantifier = .optional },10002 .{ .kind = .id_ref, .quantifier = .required },
10003 .{ .kind = .id_ref, .quantifier = .required },
10004 .{ .kind = .id_ref, .quantifier = .required },
10005 .{ .kind = .id_ref, .quantifier = .required },
10006 .{ .kind = .id_ref, .quantifier = .required },
10007 .{ .kind = .id_ref, .quantifier = .required },
10008 .{ .kind = .id_ref, .quantifier = .required },
10009 .{ .kind = .id_ref, .quantifier = .required },
10010 .{ .kind = .id_ref, .quantifier = .required },
10011 .{ .kind = .id_ref, .quantifier = .required },
8796 },10012 },
8797 },10013 },
8798 .{10014 .{
8799 .name = "OpGroupNonUniformFMax",10015 .name = "OpExecuteCallableKHR",
8800 .opcode = 358,10016 .opcode = 4446,
8801 .operands = &.{10017 .operands = &.{
8802 .{ .kind = .id_result_type, .quantifier = .required },
8803 .{ .kind = .id_result, .quantifier = .required },
8804 .{ .kind = .id_scope, .quantifier = .required },
8805 .{ .kind = .group_operation, .quantifier = .required },
8806 .{ .kind = .id_ref, .quantifier = .required },10018 .{ .kind = .id_ref, .quantifier = .required },
8807 .{ .kind = .id_ref, .quantifier = .optional },10019 .{ .kind = .id_ref, .quantifier = .required },
8808 },10020 },
8809 },10021 },
8810 .{10022 .{
8811 .name = "OpGroupNonUniformBitwiseAnd",10023 .name = "OpConvertUToAccelerationStructureKHR",
8812 .opcode = 359,10024 .opcode = 4447,
8813 .operands = &.{10025 .operands = &.{
8814 .{ .kind = .id_result_type, .quantifier = .required },10026 .{ .kind = .id_result_type, .quantifier = .required },
8815 .{ .kind = .id_result, .quantifier = .required },10027 .{ .kind = .id_result, .quantifier = .required },
8816 .{ .kind = .id_scope, .quantifier = .required },
8817 .{ .kind = .group_operation, .quantifier = .required },
8818 .{ .kind = .id_ref, .quantifier = .required },10028 .{ .kind = .id_ref, .quantifier = .required },
8819 .{ .kind = .id_ref, .quantifier = .optional },
8820 },10029 },
8821 },10030 },
8822 .{10031 .{
8823 .name = "OpGroupNonUniformBitwiseOr",10032 .name = "OpIgnoreIntersectionKHR",
8824 .opcode = 360,10033 .opcode = 4448,
10034 .operands = &.{},
10035 },
10036 .{
10037 .name = "OpTerminateRayKHR",
10038 .opcode = 4449,
10039 .operands = &.{},
10040 },
10041 .{
10042 .name = "OpSDot",
10043 .opcode = 4450,
8825 .operands = &.{10044 .operands = &.{
8826 .{ .kind = .id_result_type, .quantifier = .required },10045 .{ .kind = .id_result_type, .quantifier = .required },
8827 .{ .kind = .id_result, .quantifier = .required },10046 .{ .kind = .id_result, .quantifier = .required },
8828 .{ .kind = .id_scope, .quantifier = .required },
8829 .{ .kind = .group_operation, .quantifier = .required },
8830 .{ .kind = .id_ref, .quantifier = .required },10047 .{ .kind = .id_ref, .quantifier = .required },
8831 .{ .kind = .id_ref, .quantifier = .optional },10048 .{ .kind = .id_ref, .quantifier = .required },
10049 .{ .kind = .packed_vector_format, .quantifier = .optional },
8832 },10050 },
8833 },10051 },
8834 .{10052 .{
8835 .name = "OpGroupNonUniformBitwiseXor",10053 .name = "OpUDot",
8836 .opcode = 361,10054 .opcode = 4451,
8837 .operands = &.{10055 .operands = &.{
8838 .{ .kind = .id_result_type, .quantifier = .required },10056 .{ .kind = .id_result_type, .quantifier = .required },
8839 .{ .kind = .id_result, .quantifier = .required },10057 .{ .kind = .id_result, .quantifier = .required },
8840 .{ .kind = .id_scope, .quantifier = .required },
8841 .{ .kind = .group_operation, .quantifier = .required },
8842 .{ .kind = .id_ref, .quantifier = .required },10058 .{ .kind = .id_ref, .quantifier = .required },
8843 .{ .kind = .id_ref, .quantifier = .optional },10059 .{ .kind = .id_ref, .quantifier = .required },
10060 .{ .kind = .packed_vector_format, .quantifier = .optional },
8844 },10061 },
8845 },10062 },
8846 .{10063 .{
8847 .name = "OpGroupNonUniformLogicalAnd",10064 .name = "OpSUDot",
8848 .opcode = 362,10065 .opcode = 4452,
8849 .operands = &.{10066 .operands = &.{
8850 .{ .kind = .id_result_type, .quantifier = .required },10067 .{ .kind = .id_result_type, .quantifier = .required },
8851 .{ .kind = .id_result, .quantifier = .required },10068 .{ .kind = .id_result, .quantifier = .required },
8852 .{ .kind = .id_scope, .quantifier = .required },
8853 .{ .kind = .group_operation, .quantifier = .required },
8854 .{ .kind = .id_ref, .quantifier = .required },10069 .{ .kind = .id_ref, .quantifier = .required },
8855 .{ .kind = .id_ref, .quantifier = .optional },10070 .{ .kind = .id_ref, .quantifier = .required },
10071 .{ .kind = .packed_vector_format, .quantifier = .optional },
8856 },10072 },
8857 },10073 },
8858 .{10074 .{
8859 .name = "OpGroupNonUniformLogicalOr",10075 .name = "OpSDotAccSat",
8860 .opcode = 363,10076 .opcode = 4453,
8861 .operands = &.{10077 .operands = &.{
8862 .{ .kind = .id_result_type, .quantifier = .required },10078 .{ .kind = .id_result_type, .quantifier = .required },
8863 .{ .kind = .id_result, .quantifier = .required },10079 .{ .kind = .id_result, .quantifier = .required },
8864 .{ .kind = .id_scope, .quantifier = .required },
8865 .{ .kind = .group_operation, .quantifier = .required },
8866 .{ .kind = .id_ref, .quantifier = .required },10080 .{ .kind = .id_ref, .quantifier = .required },
8867 .{ .kind = .id_ref, .quantifier = .optional },10081 .{ .kind = .id_ref, .quantifier = .required },
10082 .{ .kind = .id_ref, .quantifier = .required },
10083 .{ .kind = .packed_vector_format, .quantifier = .optional },
8868 },10084 },
8869 },10085 },
8870 .{10086 .{
8871 .name = "OpGroupNonUniformLogicalXor",10087 .name = "OpUDotAccSat",
8872 .opcode = 364,10088 .opcode = 4454,
8873 .operands = &.{10089 .operands = &.{
8874 .{ .kind = .id_result_type, .quantifier = .required },10090 .{ .kind = .id_result_type, .quantifier = .required },
8875 .{ .kind = .id_result, .quantifier = .required },10091 .{ .kind = .id_result, .quantifier = .required },
8876 .{ .kind = .id_scope, .quantifier = .required },
8877 .{ .kind = .group_operation, .quantifier = .required },
8878 .{ .kind = .id_ref, .quantifier = .required },10092 .{ .kind = .id_ref, .quantifier = .required },
8879 .{ .kind = .id_ref, .quantifier = .optional },10093 .{ .kind = .id_ref, .quantifier = .required },
10094 .{ .kind = .id_ref, .quantifier = .required },
10095 .{ .kind = .packed_vector_format, .quantifier = .optional },
8880 },10096 },
8881 },10097 },
8882 .{10098 .{
8883 .name = "OpGroupNonUniformQuadBroadcast",10099 .name = "OpSUDotAccSat",
8884 .opcode = 365,10100 .opcode = 4455,
8885 .operands = &.{10101 .operands = &.{
8886 .{ .kind = .id_result_type, .quantifier = .required },10102 .{ .kind = .id_result_type, .quantifier = .required },
8887 .{ .kind = .id_result, .quantifier = .required },10103 .{ .kind = .id_result, .quantifier = .required },
8888 .{ .kind = .id_scope, .quantifier = .required },
8889 .{ .kind = .id_ref, .quantifier = .required },10104 .{ .kind = .id_ref, .quantifier = .required },
8890 .{ .kind = .id_ref, .quantifier = .required },10105 .{ .kind = .id_ref, .quantifier = .required },
10106 .{ .kind = .id_ref, .quantifier = .required },
10107 .{ .kind = .packed_vector_format, .quantifier = .optional },
8891 },10108 },
8892 },10109 },
8893 .{10110 .{
8894 .name = "OpGroupNonUniformQuadSwap",10111 .name = "OpTypeCooperativeMatrixKHR",
8895 .opcode = 366,10112 .opcode = 4456,
8896 .operands = &.{10113 .operands = &.{
8897 .{ .kind = .id_result_type, .quantifier = .required },
8898 .{ .kind = .id_result, .quantifier = .required },10114 .{ .kind = .id_result, .quantifier = .required },
10115 .{ .kind = .id_ref, .quantifier = .required },
8899 .{ .kind = .id_scope, .quantifier = .required },10116 .{ .kind = .id_scope, .quantifier = .required },
8900 .{ .kind = .id_ref, .quantifier = .required },10117 .{ .kind = .id_ref, .quantifier = .required },
8901 .{ .kind = .id_ref, .quantifier = .required },10118 .{ .kind = .id_ref, .quantifier = .required },
10119 .{ .kind = .id_ref, .quantifier = .required },
8902 },10120 },
8903 },10121 },
8904 .{10122 .{
8905 .name = "OpCopyLogical",10123 .name = "OpCooperativeMatrixLoadKHR",
8906 .opcode = 400,10124 .opcode = 4457,
8907 .operands = &.{10125 .operands = &.{
8908 .{ .kind = .id_result_type, .quantifier = .required },10126 .{ .kind = .id_result_type, .quantifier = .required },
8909 .{ .kind = .id_result, .quantifier = .required },10127 .{ .kind = .id_result, .quantifier = .required },
8910 .{ .kind = .id_ref, .quantifier = .required },10128 .{ .kind = .id_ref, .quantifier = .required },
10129 .{ .kind = .id_ref, .quantifier = .required },
10130 .{ .kind = .id_ref, .quantifier = .optional },
10131 .{ .kind = .memory_access, .quantifier = .optional },
8911 },10132 },
8912 },10133 },
8913 .{10134 .{
8914 .name = "OpPtrEqual",10135 .name = "OpCooperativeMatrixStoreKHR",
8915 .opcode = 401,10136 .opcode = 4458,
8916 .operands = &.{10137 .operands = &.{
8917 .{ .kind = .id_result_type, .quantifier = .required },
8918 .{ .kind = .id_result, .quantifier = .required },
8919 .{ .kind = .id_ref, .quantifier = .required },10138 .{ .kind = .id_ref, .quantifier = .required },
8920 .{ .kind = .id_ref, .quantifier = .required },10139 .{ .kind = .id_ref, .quantifier = .required },
10140 .{ .kind = .id_ref, .quantifier = .required },
10141 .{ .kind = .id_ref, .quantifier = .optional },
10142 .{ .kind = .memory_access, .quantifier = .optional },
8921 },10143 },
8922 },10144 },
8923 .{10145 .{
8924 .name = "OpPtrNotEqual",10146 .name = "OpCooperativeMatrixMulAddKHR",
8925 .opcode = 402,10147 .opcode = 4459,
8926 .operands = &.{10148 .operands = &.{
8927 .{ .kind = .id_result_type, .quantifier = .required },10149 .{ .kind = .id_result_type, .quantifier = .required },
8928 .{ .kind = .id_result, .quantifier = .required },10150 .{ .kind = .id_result, .quantifier = .required },
8929 .{ .kind = .id_ref, .quantifier = .required },10151 .{ .kind = .id_ref, .quantifier = .required },
8930 .{ .kind = .id_ref, .quantifier = .required },10152 .{ .kind = .id_ref, .quantifier = .required },
10153 .{ .kind = .id_ref, .quantifier = .required },
10154 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
8931 },10155 },
8932 },10156 },
8933 .{10157 .{
8934 .name = "OpPtrDiff",10158 .name = "OpCooperativeMatrixLengthKHR",
8935 .opcode = 403,10159 .opcode = 4460,
8936 .operands = &.{10160 .operands = &.{
8937 .{ .kind = .id_result_type, .quantifier = .required },10161 .{ .kind = .id_result_type, .quantifier = .required },
8938 .{ .kind = .id_result, .quantifier = .required },10162 .{ .kind = .id_result, .quantifier = .required },
8939 .{ .kind = .id_ref, .quantifier = .required },10163 .{ .kind = .id_ref, .quantifier = .required },
8940 .{ .kind = .id_ref, .quantifier = .required },
8941 },10164 },
8942 },10165 },
8943 .{10166 .{
8944 .name = "OpColorAttachmentReadEXT",10167 .name = "OpConstantCompositeReplicateEXT",
8945 .opcode = 4160,10168 .opcode = 4461,
8946 .operands = &.{10169 .operands = &.{
8947 .{ .kind = .id_result_type, .quantifier = .required },10170 .{ .kind = .id_result_type, .quantifier = .required },
8948 .{ .kind = .id_result, .quantifier = .required },10171 .{ .kind = .id_result, .quantifier = .required },
8949 .{ .kind = .id_ref, .quantifier = .required },10172 .{ .kind = .id_ref, .quantifier = .required },
8950 .{ .kind = .id_ref, .quantifier = .optional },
8951 },10173 },
8952 },10174 },
8953 .{10175 .{
8954 .name = "OpDepthAttachmentReadEXT",10176 .name = "OpSpecConstantCompositeReplicateEXT",
8955 .opcode = 4161,10177 .opcode = 4462,
8956 .operands = &.{10178 .operands = &.{
8957 .{ .kind = .id_result_type, .quantifier = .required },10179 .{ .kind = .id_result_type, .quantifier = .required },
8958 .{ .kind = .id_result, .quantifier = .required },10180 .{ .kind = .id_result, .quantifier = .required },
8959 .{ .kind = .id_ref, .quantifier = .optional },10181 .{ .kind = .id_ref, .quantifier = .required },
8960 },10182 },
8961 },10183 },
8962 .{10184 .{
8963 .name = "OpStencilAttachmentReadEXT",10185 .name = "OpCompositeConstructReplicateEXT",
8964 .opcode = 4162,10186 .opcode = 4463,
8965 .operands = &.{10187 .operands = &.{
8966 .{ .kind = .id_result_type, .quantifier = .required },10188 .{ .kind = .id_result_type, .quantifier = .required },
8967 .{ .kind = .id_result, .quantifier = .required },10189 .{ .kind = .id_result, .quantifier = .required },
8968 .{ .kind = .id_ref, .quantifier = .optional },10190 .{ .kind = .id_ref, .quantifier = .required },
8969 },10191 },
8970 },10192 },
8971 .{10193 .{
8972 .name = "OpTypeTensorARM",10194 .name = "OpTypeRayQueryKHR",
8973 .opcode = 4163,10195 .opcode = 4472,
8974 .operands = &.{10196 .operands = &.{
8975 .{ .kind = .id_result, .quantifier = .required },10197 .{ .kind = .id_result, .quantifier = .required },
8976 .{ .kind = .id_ref, .quantifier = .required },
8977 .{ .kind = .id_ref, .quantifier = .optional },
8978 .{ .kind = .id_ref, .quantifier = .optional },
8979 },10198 },
8980 },10199 },
8981 .{10200 .{
8982 .name = "OpTensorReadARM",10201 .name = "OpRayQueryInitializeKHR",
8983 .opcode = 4164,10202 .opcode = 4473,
8984 .operands = &.{10203 .operands = &.{
8985 .{ .kind = .id_result_type, .quantifier = .required },
8986 .{ .kind = .id_result, .quantifier = .required },
8987 .{ .kind = .id_ref, .quantifier = .required },10204 .{ .kind = .id_ref, .quantifier = .required },
8988 .{ .kind = .id_ref, .quantifier = .required },10205 .{ .kind = .id_ref, .quantifier = .required },
8989 .{ .kind = .tensor_operands, .quantifier = .optional },
8990 },
8991 },
8992 .{
8993 .name = "OpTensorWriteARM",
8994 .opcode = 4165,
8995 .operands = &.{
8996 .{ .kind = .id_ref, .quantifier = .required },10206 .{ .kind = .id_ref, .quantifier = .required },
8997 .{ .kind = .id_ref, .quantifier = .required },10207 .{ .kind = .id_ref, .quantifier = .required },
8998 .{ .kind = .id_ref, .quantifier = .required },10208 .{ .kind = .id_ref, .quantifier = .required },
8999 .{ .kind = .tensor_operands, .quantifier = .optional },10209 .{ .kind = .id_ref, .quantifier = .required },
9000 },
9001 },
9002 .{
9003 .name = "OpTensorQuerySizeARM",
9004 .opcode = 4166,
9005 .operands = &.{
9006 .{ .kind = .id_result_type, .quantifier = .required },
9007 .{ .kind = .id_result, .quantifier = .required },
9008 .{ .kind = .id_ref, .quantifier = .required },10210 .{ .kind = .id_ref, .quantifier = .required },
9009 .{ .kind = .id_ref, .quantifier = .required },10211 .{ .kind = .id_ref, .quantifier = .required },
9010 },10212 },
9011 },10213 },
9012 .{10214 .{
9013 .name = "OpGraphConstantARM",10215 .name = "OpRayQueryTerminateKHR",
9014 .opcode = 4181,10216 .opcode = 4474,
9015 .operands = &.{10217 .operands = &.{
9016 .{ .kind = .id_result_type, .quantifier = .required },10218 .{ .kind = .id_ref, .quantifier = .required },
9017 .{ .kind = .id_result, .quantifier = .required },
9018 .{ .kind = .literal_integer, .quantifier = .required },
9019 },10219 },
9020 },10220 },
9021 .{10221 .{
9022 .name = "OpGraphEntryPointARM",10222 .name = "OpRayQueryGenerateIntersectionKHR",
9023 .opcode = 4182,10223 .opcode = 4475,
9024 .operands = &.{10224 .operands = &.{
9025 .{ .kind = .id_ref, .quantifier = .required },10225 .{ .kind = .id_ref, .quantifier = .required },
9026 .{ .kind = .literal_string, .quantifier = .required },10226 .{ .kind = .id_ref, .quantifier = .required },
9027 .{ .kind = .id_ref, .quantifier = .variadic },
9028 },10227 },
9029 },10228 },
9030 .{10229 .{
9031 .name = "OpGraphARM",10230 .name = "OpRayQueryConfirmIntersectionKHR",
9032 .opcode = 4183,10231 .opcode = 4476,
9033 .operands = &.{10232 .operands = &.{
9034 .{ .kind = .id_result_type, .quantifier = .required },10233 .{ .kind = .id_ref, .quantifier = .required },
9035 .{ .kind = .id_result, .quantifier = .required },
9036 },10234 },
9037 },10235 },
9038 .{10236 .{
9039 .name = "OpGraphInputARM",10237 .name = "OpRayQueryProceedKHR",
9040 .opcode = 4184,10238 .opcode = 4477,
9041 .operands = &.{10239 .operands = &.{
9042 .{ .kind = .id_result_type, .quantifier = .required },10240 .{ .kind = .id_result_type, .quantifier = .required },
9043 .{ .kind = .id_result, .quantifier = .required },10241 .{ .kind = .id_result, .quantifier = .required },
9044 .{ .kind = .id_ref, .quantifier = .required },10242 .{ .kind = .id_ref, .quantifier = .required },
9045 .{ .kind = .id_ref, .quantifier = .variadic },
9046 },10243 },
9047 },10244 },
9048 .{10245 .{
9049 .name = "OpGraphSetOutputARM",10246 .name = "OpRayQueryGetIntersectionTypeKHR",
9050 .opcode = 4185,10247 .opcode = 4479,
9051 .operands = &.{10248 .operands = &.{
10249 .{ .kind = .id_result_type, .quantifier = .required },
10250 .{ .kind = .id_result, .quantifier = .required },
9052 .{ .kind = .id_ref, .quantifier = .required },10251 .{ .kind = .id_ref, .quantifier = .required },
9053 .{ .kind = .id_ref, .quantifier = .required },10252 .{ .kind = .id_ref, .quantifier = .required },
9054 .{ .kind = .id_ref, .quantifier = .variadic },
9055 },
9056 },
9057 .{
9058 .name = "OpGraphEndARM",
9059 .opcode = 4186,
9060 .operands = &.{},
9061 },
9062 .{
9063 .name = "OpTypeGraphARM",
9064 .opcode = 4190,
9065 .operands = &.{
9066 .{ .kind = .id_result, .quantifier = .required },
9067 .{ .kind = .literal_integer, .quantifier = .required },
9068 .{ .kind = .id_ref, .quantifier = .variadic },
9069 },10253 },
9070 },10254 },
9071 .{10255 .{
9072 .name = "OpTerminateInvocation",10256 .name = "OpImageSampleWeightedQCOM",
9073 .opcode = 4416,10257 .opcode = 4480,
9074 .operands = &.{},
9075 },
9076 .{
9077 .name = "OpTypeUntypedPointerKHR",
9078 .opcode = 4417,
9079 .operands = &.{10258 .operands = &.{
10259 .{ .kind = .id_result_type, .quantifier = .required },
9080 .{ .kind = .id_result, .quantifier = .required },10260 .{ .kind = .id_result, .quantifier = .required },
9081 .{ .kind = .storage_class, .quantifier = .required },10261 .{ .kind = .id_ref, .quantifier = .required },
10262 .{ .kind = .id_ref, .quantifier = .required },
10263 .{ .kind = .id_ref, .quantifier = .required },
9082 },10264 },
9083 },10265 },
9084 .{10266 .{
9085 .name = "OpUntypedVariableKHR",10267 .name = "OpImageBoxFilterQCOM",
9086 .opcode = 4418,10268 .opcode = 4481,
9087 .operands = &.{10269 .operands = &.{
9088 .{ .kind = .id_result_type, .quantifier = .required },10270 .{ .kind = .id_result_type, .quantifier = .required },
9089 .{ .kind = .id_result, .quantifier = .required },10271 .{ .kind = .id_result, .quantifier = .required },
9090 .{ .kind = .storage_class, .quantifier = .required },10272 .{ .kind = .id_ref, .quantifier = .required },
9091 .{ .kind = .id_ref, .quantifier = .optional },10273 .{ .kind = .id_ref, .quantifier = .required },
9092 .{ .kind = .id_ref, .quantifier = .optional },10274 .{ .kind = .id_ref, .quantifier = .required },
9093 },10275 },
9094 },10276 },
9095 .{10277 .{
9096 .name = "OpUntypedAccessChainKHR",10278 .name = "OpImageBlockMatchSSDQCOM",
9097 .opcode = 4419,10279 .opcode = 4482,
9098 .operands = &.{10280 .operands = &.{
9099 .{ .kind = .id_result_type, .quantifier = .required },10281 .{ .kind = .id_result_type, .quantifier = .required },
9100 .{ .kind = .id_result, .quantifier = .required },10282 .{ .kind = .id_result, .quantifier = .required },
9101 .{ .kind = .id_ref, .quantifier = .required },10283 .{ .kind = .id_ref, .quantifier = .required },
9102 .{ .kind = .id_ref, .quantifier = .required },10284 .{ .kind = .id_ref, .quantifier = .required },
9103 .{ .kind = .id_ref, .quantifier = .variadic },10285 .{ .kind = .id_ref, .quantifier = .required },
10286 .{ .kind = .id_ref, .quantifier = .required },
10287 .{ .kind = .id_ref, .quantifier = .required },
9104 },10288 },
9105 },10289 },
9106 .{10290 .{
9107 .name = "OpUntypedInBoundsAccessChainKHR",10291 .name = "OpImageBlockMatchSADQCOM",
9108 .opcode = 4420,10292 .opcode = 4483,
9109 .operands = &.{10293 .operands = &.{
9110 .{ .kind = .id_result_type, .quantifier = .required },10294 .{ .kind = .id_result_type, .quantifier = .required },
9111 .{ .kind = .id_result, .quantifier = .required },10295 .{ .kind = .id_result, .quantifier = .required },
9112 .{ .kind = .id_ref, .quantifier = .required },10296 .{ .kind = .id_ref, .quantifier = .required },
9113 .{ .kind = .id_ref, .quantifier = .required },10297 .{ .kind = .id_ref, .quantifier = .required },
9114 .{ .kind = .id_ref, .quantifier = .variadic },10298 .{ .kind = .id_ref, .quantifier = .required },
10299 .{ .kind = .id_ref, .quantifier = .required },
10300 .{ .kind = .id_ref, .quantifier = .required },
9115 },10301 },
9116 },10302 },
9117 .{10303 .{
9118 .name = "OpSubgroupBallotKHR",10304 .name = "OpBitCastArrayQCOM",
9119 .opcode = 4421,10305 .opcode = 4497,
9120 .operands = &.{10306 .operands = &.{
9121 .{ .kind = .id_result_type, .quantifier = .required },10307 .{ .kind = .id_result_type, .quantifier = .required },
9122 .{ .kind = .id_result, .quantifier = .required },10308 .{ .kind = .id_result, .quantifier = .required },
...@@ -9124,63 +10310,60 @@ pub const InstructionSet = enum {...@@ -9124,63 +10310,60 @@ pub const InstructionSet = enum {
9124 },10310 },
9125 },10311 },
9126 .{10312 .{
9127 .name = "OpSubgroupFirstInvocationKHR",10313 .name = "OpImageBlockMatchWindowSSDQCOM",
9128 .opcode = 4422,10314 .opcode = 4500,
9129 .operands = &.{10315 .operands = &.{
9130 .{ .kind = .id_result_type, .quantifier = .required },10316 .{ .kind = .id_result_type, .quantifier = .required },
9131 .{ .kind = .id_result, .quantifier = .required },10317 .{ .kind = .id_result, .quantifier = .required },
9132 .{ .kind = .id_ref, .quantifier = .required },10318 .{ .kind = .id_ref, .quantifier = .required },
10319 .{ .kind = .id_ref, .quantifier = .required },
10320 .{ .kind = .id_ref, .quantifier = .required },
10321 .{ .kind = .id_ref, .quantifier = .required },
10322 .{ .kind = .id_ref, .quantifier = .required },
9133 },10323 },
9134 },10324 },
9135 .{10325 .{
9136 .name = "OpUntypedPtrAccessChainKHR",10326 .name = "OpImageBlockMatchWindowSADQCOM",
9137 .opcode = 4423,10327 .opcode = 4501,
9138 .operands = &.{10328 .operands = &.{
9139 .{ .kind = .id_result_type, .quantifier = .required },10329 .{ .kind = .id_result_type, .quantifier = .required },
9140 .{ .kind = .id_result, .quantifier = .required },10330 .{ .kind = .id_result, .quantifier = .required },
9141 .{ .kind = .id_ref, .quantifier = .required },10331 .{ .kind = .id_ref, .quantifier = .required },
9142 .{ .kind = .id_ref, .quantifier = .required },10332 .{ .kind = .id_ref, .quantifier = .required },
9143 .{ .kind = .id_ref, .quantifier = .required },10333 .{ .kind = .id_ref, .quantifier = .required },
9144 .{ .kind = .id_ref, .quantifier = .variadic },10334 .{ .kind = .id_ref, .quantifier = .required },
10335 .{ .kind = .id_ref, .quantifier = .required },
9145 },10336 },
9146 },10337 },
9147 .{10338 .{
9148 .name = "OpUntypedInBoundsPtrAccessChainKHR",10339 .name = "OpImageBlockMatchGatherSSDQCOM",
9149 .opcode = 4424,10340 .opcode = 4502,
9150 .operands = &.{10341 .operands = &.{
9151 .{ .kind = .id_result_type, .quantifier = .required },10342 .{ .kind = .id_result_type, .quantifier = .required },
9152 .{ .kind = .id_result, .quantifier = .required },10343 .{ .kind = .id_result, .quantifier = .required },
9153 .{ .kind = .id_ref, .quantifier = .required },10344 .{ .kind = .id_ref, .quantifier = .required },
9154 .{ .kind = .id_ref, .quantifier = .required },10345 .{ .kind = .id_ref, .quantifier = .required },
9155 .{ .kind = .id_ref, .quantifier = .required },10346 .{ .kind = .id_ref, .quantifier = .required },
9156 .{ .kind = .id_ref, .quantifier = .variadic },10347 .{ .kind = .id_ref, .quantifier = .required },
10348 .{ .kind = .id_ref, .quantifier = .required },
9157 },10349 },
9158 },10350 },
9159 .{10351 .{
9160 .name = "OpUntypedArrayLengthKHR",10352 .name = "OpImageBlockMatchGatherSADQCOM",
9161 .opcode = 4425,10353 .opcode = 4503,
9162 .operands = &.{10354 .operands = &.{
9163 .{ .kind = .id_result_type, .quantifier = .required },10355 .{ .kind = .id_result_type, .quantifier = .required },
9164 .{ .kind = .id_result, .quantifier = .required },10356 .{ .kind = .id_result, .quantifier = .required },
9165 .{ .kind = .id_ref, .quantifier = .required },10357 .{ .kind = .id_ref, .quantifier = .required },
9166 .{ .kind = .id_ref, .quantifier = .required },10358 .{ .kind = .id_ref, .quantifier = .required },
9167 .{ .kind = .literal_integer, .quantifier = .required },
9168 },
9169 },
9170 .{
9171 .name = "OpUntypedPrefetchKHR",
9172 .opcode = 4426,
9173 .operands = &.{
9174 .{ .kind = .id_ref, .quantifier = .required },10359 .{ .kind = .id_ref, .quantifier = .required },
9175 .{ .kind = .id_ref, .quantifier = .required },10360 .{ .kind = .id_ref, .quantifier = .required },
9176 .{ .kind = .id_ref, .quantifier = .optional },10361 .{ .kind = .id_ref, .quantifier = .required },
9177 .{ .kind = .id_ref, .quantifier = .optional },
9178 .{ .kind = .id_ref, .quantifier = .optional },
9179 },10362 },
9180 },10363 },
9181 .{10364 .{
9182 .name = "OpSubgroupAllKHR",10365 .name = "OpCompositeConstructCoopMatQCOM",
9183 .opcode = 4428,10366 .opcode = 4540,
9184 .operands = &.{10367 .operands = &.{
9185 .{ .kind = .id_result_type, .quantifier = .required },10368 .{ .kind = .id_result_type, .quantifier = .required },
9186 .{ .kind = .id_result, .quantifier = .required },10369 .{ .kind = .id_result, .quantifier = .required },
...@@ -9188,8 +10371,8 @@ pub const InstructionSet = enum {...@@ -9188,8 +10371,8 @@ pub const InstructionSet = enum {
9188 },10371 },
9189 },10372 },
9190 .{10373 .{
9191 .name = "OpSubgroupAnyKHR",10374 .name = "OpCompositeExtractCoopMatQCOM",
9192 .opcode = 4429,10375 .opcode = 4541,
9193 .operands = &.{10376 .operands = &.{
9194 .{ .kind = .id_result_type, .quantifier = .required },10377 .{ .kind = .id_result_type, .quantifier = .required },
9195 .{ .kind = .id_result, .quantifier = .required },10378 .{ .kind = .id_result, .quantifier = .required },
...@@ -9197,228 +10380,206 @@ pub const InstructionSet = enum {...@@ -9197,228 +10380,206 @@ pub const InstructionSet = enum {
9197 },10380 },
9198 },10381 },
9199 .{10382 .{
9200 .name = "OpSubgroupAllEqualKHR",10383 .name = "OpExtractSubArrayQCOM",
9201 .opcode = 4430,10384 .opcode = 4542,
9202 .operands = &.{10385 .operands = &.{
9203 .{ .kind = .id_result_type, .quantifier = .required },10386 .{ .kind = .id_result_type, .quantifier = .required },
9204 .{ .kind = .id_result, .quantifier = .required },10387 .{ .kind = .id_result, .quantifier = .required },
9205 .{ .kind = .id_ref, .quantifier = .required },10388 .{ .kind = .id_ref, .quantifier = .required },
10389 .{ .kind = .id_ref, .quantifier = .required },
9206 },10390 },
9207 },10391 },
9208 .{10392 .{
9209 .name = "OpGroupNonUniformRotateKHR",10393 .name = "OpGroupIAddNonUniformAMD",
9210 .opcode = 4431,10394 .opcode = 5000,
9211 .operands = &.{10395 .operands = &.{
9212 .{ .kind = .id_result_type, .quantifier = .required },10396 .{ .kind = .id_result_type, .quantifier = .required },
9213 .{ .kind = .id_result, .quantifier = .required },10397 .{ .kind = .id_result, .quantifier = .required },
9214 .{ .kind = .id_scope, .quantifier = .required },10398 .{ .kind = .id_scope, .quantifier = .required },
10399 .{ .kind = .group_operation, .quantifier = .required },
9215 .{ .kind = .id_ref, .quantifier = .required },10400 .{ .kind = .id_ref, .quantifier = .required },
9216 .{ .kind = .id_ref, .quantifier = .required },
9217 .{ .kind = .id_ref, .quantifier = .optional },
9218 },10401 },
9219 },10402 },
9220 .{10403 .{
9221 .name = "OpSubgroupReadInvocationKHR",10404 .name = "OpGroupFAddNonUniformAMD",
9222 .opcode = 4432,10405 .opcode = 5001,
9223 .operands = &.{10406 .operands = &.{
9224 .{ .kind = .id_result_type, .quantifier = .required },10407 .{ .kind = .id_result_type, .quantifier = .required },
9225 .{ .kind = .id_result, .quantifier = .required },10408 .{ .kind = .id_result, .quantifier = .required },
9226 .{ .kind = .id_ref, .quantifier = .required },10409 .{ .kind = .id_scope, .quantifier = .required },
10410 .{ .kind = .group_operation, .quantifier = .required },
9227 .{ .kind = .id_ref, .quantifier = .required },10411 .{ .kind = .id_ref, .quantifier = .required },
9228 },10412 },
9229 },10413 },
9230 .{10414 .{
9231 .name = "OpExtInstWithForwardRefsKHR",10415 .name = "OpGroupFMinNonUniformAMD",
9232 .opcode = 4433,10416 .opcode = 5002,
9233 .operands = &.{10417 .operands = &.{
9234 .{ .kind = .id_result_type, .quantifier = .required },10418 .{ .kind = .id_result_type, .quantifier = .required },
9235 .{ .kind = .id_result, .quantifier = .required },10419 .{ .kind = .id_result, .quantifier = .required },
10420 .{ .kind = .id_scope, .quantifier = .required },
10421 .{ .kind = .group_operation, .quantifier = .required },
9236 .{ .kind = .id_ref, .quantifier = .required },10422 .{ .kind = .id_ref, .quantifier = .required },
9237 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },
9238 .{ .kind = .id_ref, .quantifier = .variadic },
9239 },10423 },
9240 },10424 },
9241 .{10425 .{
9242 .name = "OpTraceRayKHR",10426 .name = "OpGroupUMinNonUniformAMD",
9243 .opcode = 4445,10427 .opcode = 5003,
9244 .operands = &.{10428 .operands = &.{
9245 .{ .kind = .id_ref, .quantifier = .required },10429 .{ .kind = .id_result_type, .quantifier = .required },
9246 .{ .kind = .id_ref, .quantifier = .required },10430 .{ .kind = .id_result, .quantifier = .required },
9247 .{ .kind = .id_ref, .quantifier = .required },10431 .{ .kind = .id_scope, .quantifier = .required },
9248 .{ .kind = .id_ref, .quantifier = .required },10432 .{ .kind = .group_operation, .quantifier = .required },
9249 .{ .kind = .id_ref, .quantifier = .required },
9250 .{ .kind = .id_ref, .quantifier = .required },
9251 .{ .kind = .id_ref, .quantifier = .required },
9252 .{ .kind = .id_ref, .quantifier = .required },
9253 .{ .kind = .id_ref, .quantifier = .required },
9254 .{ .kind = .id_ref, .quantifier = .required },
9255 .{ .kind = .id_ref, .quantifier = .required },10433 .{ .kind = .id_ref, .quantifier = .required },
9256 },10434 },
9257 },10435 },
9258 .{10436 .{
9259 .name = "OpExecuteCallableKHR",10437 .name = "OpGroupSMinNonUniformAMD",
9260 .opcode = 4446,10438 .opcode = 5004,
9261 .operands = &.{10439 .operands = &.{
9262 .{ .kind = .id_ref, .quantifier = .required },10440 .{ .kind = .id_result_type, .quantifier = .required },
10441 .{ .kind = .id_result, .quantifier = .required },
10442 .{ .kind = .id_scope, .quantifier = .required },
10443 .{ .kind = .group_operation, .quantifier = .required },
9263 .{ .kind = .id_ref, .quantifier = .required },10444 .{ .kind = .id_ref, .quantifier = .required },
9264 },10445 },
9265 },10446 },
9266 .{10447 .{
9267 .name = "OpConvertUToAccelerationStructureKHR",10448 .name = "OpGroupFMaxNonUniformAMD",
9268 .opcode = 4447,10449 .opcode = 5005,
9269 .operands = &.{10450 .operands = &.{
9270 .{ .kind = .id_result_type, .quantifier = .required },10451 .{ .kind = .id_result_type, .quantifier = .required },
9271 .{ .kind = .id_result, .quantifier = .required },10452 .{ .kind = .id_result, .quantifier = .required },
10453 .{ .kind = .id_scope, .quantifier = .required },
10454 .{ .kind = .group_operation, .quantifier = .required },
9272 .{ .kind = .id_ref, .quantifier = .required },10455 .{ .kind = .id_ref, .quantifier = .required },
9273 },10456 },
9274 },10457 },
9275 .{10458 .{
9276 .name = "OpIgnoreIntersectionKHR",10459 .name = "OpGroupUMaxNonUniformAMD",
9277 .opcode = 4448,10460 .opcode = 5006,
9278 .operands = &.{},
9279 },
9280 .{
9281 .name = "OpTerminateRayKHR",
9282 .opcode = 4449,
9283 .operands = &.{},
9284 },
9285 .{
9286 .name = "OpSDot",
9287 .opcode = 4450,
9288 .operands = &.{10461 .operands = &.{
9289 .{ .kind = .id_result_type, .quantifier = .required },10462 .{ .kind = .id_result_type, .quantifier = .required },
9290 .{ .kind = .id_result, .quantifier = .required },10463 .{ .kind = .id_result, .quantifier = .required },
10464 .{ .kind = .id_scope, .quantifier = .required },
10465 .{ .kind = .group_operation, .quantifier = .required },
9291 .{ .kind = .id_ref, .quantifier = .required },10466 .{ .kind = .id_ref, .quantifier = .required },
9292 .{ .kind = .id_ref, .quantifier = .required },
9293 .{ .kind = .packed_vector_format, .quantifier = .optional },
9294 },10467 },
9295 },10468 },
9296 .{10469 .{
9297 .name = "OpUDot",10470 .name = "OpGroupSMaxNonUniformAMD",
9298 .opcode = 4451,10471 .opcode = 5007,
9299 .operands = &.{10472 .operands = &.{
9300 .{ .kind = .id_result_type, .quantifier = .required },10473 .{ .kind = .id_result_type, .quantifier = .required },
9301 .{ .kind = .id_result, .quantifier = .required },10474 .{ .kind = .id_result, .quantifier = .required },
10475 .{ .kind = .id_scope, .quantifier = .required },
10476 .{ .kind = .group_operation, .quantifier = .required },
9302 .{ .kind = .id_ref, .quantifier = .required },10477 .{ .kind = .id_ref, .quantifier = .required },
9303 .{ .kind = .id_ref, .quantifier = .required },
9304 .{ .kind = .packed_vector_format, .quantifier = .optional },
9305 },10478 },
9306 },10479 },
9307 .{10480 .{
9308 .name = "OpSUDot",10481 .name = "OpFragmentMaskFetchAMD",
9309 .opcode = 4452,10482 .opcode = 5011,
9310 .operands = &.{10483 .operands = &.{
9311 .{ .kind = .id_result_type, .quantifier = .required },10484 .{ .kind = .id_result_type, .quantifier = .required },
9312 .{ .kind = .id_result, .quantifier = .required },10485 .{ .kind = .id_result, .quantifier = .required },
9313 .{ .kind = .id_ref, .quantifier = .required },10486 .{ .kind = .id_ref, .quantifier = .required },
9314 .{ .kind = .id_ref, .quantifier = .required },10487 .{ .kind = .id_ref, .quantifier = .required },
9315 .{ .kind = .packed_vector_format, .quantifier = .optional },
9316 },10488 },
9317 },10489 },
9318 .{10490 .{
9319 .name = "OpSDotAccSat",10491 .name = "OpFragmentFetchAMD",
9320 .opcode = 4453,10492 .opcode = 5012,
9321 .operands = &.{10493 .operands = &.{
9322 .{ .kind = .id_result_type, .quantifier = .required },10494 .{ .kind = .id_result_type, .quantifier = .required },
9323 .{ .kind = .id_result, .quantifier = .required },10495 .{ .kind = .id_result, .quantifier = .required },
9324 .{ .kind = .id_ref, .quantifier = .required },10496 .{ .kind = .id_ref, .quantifier = .required },
9325 .{ .kind = .id_ref, .quantifier = .required },10497 .{ .kind = .id_ref, .quantifier = .required },
9326 .{ .kind = .id_ref, .quantifier = .required },10498 .{ .kind = .id_ref, .quantifier = .required },
9327 .{ .kind = .packed_vector_format, .quantifier = .optional },
9328 },10499 },
9329 },10500 },
9330 .{10501 .{
9331 .name = "OpUDotAccSat",10502 .name = "OpReadClockKHR",
9332 .opcode = 4454,10503 .opcode = 5056,
9333 .operands = &.{10504 .operands = &.{
9334 .{ .kind = .id_result_type, .quantifier = .required },10505 .{ .kind = .id_result_type, .quantifier = .required },
9335 .{ .kind = .id_result, .quantifier = .required },10506 .{ .kind = .id_result, .quantifier = .required },
9336 .{ .kind = .id_ref, .quantifier = .required },10507 .{ .kind = .id_scope, .quantifier = .required },
9337 .{ .kind = .id_ref, .quantifier = .required },
9338 .{ .kind = .id_ref, .quantifier = .required },
9339 .{ .kind = .packed_vector_format, .quantifier = .optional },
9340 },10508 },
9341 },10509 },
9342 .{10510 .{
9343 .name = "OpSUDotAccSat",10511 .name = "OpAllocateNodePayloadsAMDX",
9344 .opcode = 4455,10512 .opcode = 5074,
9345 .operands = &.{10513 .operands = &.{
9346 .{ .kind = .id_result_type, .quantifier = .required },10514 .{ .kind = .id_result_type, .quantifier = .required },
9347 .{ .kind = .id_result, .quantifier = .required },10515 .{ .kind = .id_result, .quantifier = .required },
10516 .{ .kind = .id_scope, .quantifier = .required },
9348 .{ .kind = .id_ref, .quantifier = .required },10517 .{ .kind = .id_ref, .quantifier = .required },
9349 .{ .kind = .id_ref, .quantifier = .required },10518 .{ .kind = .id_ref, .quantifier = .required },
10519 },
10520 },
10521 .{
10522 .name = "OpEnqueueNodePayloadsAMDX",
10523 .opcode = 5075,
10524 .operands = &.{
9350 .{ .kind = .id_ref, .quantifier = .required },10525 .{ .kind = .id_ref, .quantifier = .required },
9351 .{ .kind = .packed_vector_format, .quantifier = .optional },
9352 },10526 },
9353 },10527 },
9354 .{10528 .{
9355 .name = "OpTypeCooperativeMatrixKHR",10529 .name = "OpTypeNodePayloadArrayAMDX",
9356 .opcode = 4456,10530 .opcode = 5076,
9357 .operands = &.{10531 .operands = &.{
9358 .{ .kind = .id_result, .quantifier = .required },10532 .{ .kind = .id_result, .quantifier = .required },
9359 .{ .kind = .id_ref, .quantifier = .required },10533 .{ .kind = .id_ref, .quantifier = .required },
9360 .{ .kind = .id_scope, .quantifier = .required },
9361 .{ .kind = .id_ref, .quantifier = .required },
9362 .{ .kind = .id_ref, .quantifier = .required },
9363 .{ .kind = .id_ref, .quantifier = .required },
9364 },10534 },
9365 },10535 },
9366 .{10536 .{
9367 .name = "OpCooperativeMatrixLoadKHR",10537 .name = "OpFinishWritingNodePayloadAMDX",
9368 .opcode = 4457,10538 .opcode = 5078,
9369 .operands = &.{10539 .operands = &.{
9370 .{ .kind = .id_result_type, .quantifier = .required },10540 .{ .kind = .id_result_type, .quantifier = .required },
9371 .{ .kind = .id_result, .quantifier = .required },10541 .{ .kind = .id_result, .quantifier = .required },
9372 .{ .kind = .id_ref, .quantifier = .required },10542 .{ .kind = .id_ref, .quantifier = .required },
9373 .{ .kind = .id_ref, .quantifier = .required },
9374 .{ .kind = .id_ref, .quantifier = .optional },
9375 .{ .kind = .memory_access, .quantifier = .optional },
9376 },10543 },
9377 },10544 },
9378 .{10545 .{
9379 .name = "OpCooperativeMatrixStoreKHR",10546 .name = "OpNodePayloadArrayLengthAMDX",
9380 .opcode = 4458,10547 .opcode = 5090,
9381 .operands = &.{10548 .operands = &.{
10549 .{ .kind = .id_result_type, .quantifier = .required },
10550 .{ .kind = .id_result, .quantifier = .required },
9382 .{ .kind = .id_ref, .quantifier = .required },10551 .{ .kind = .id_ref, .quantifier = .required },
9383 .{ .kind = .id_ref, .quantifier = .required },
9384 .{ .kind = .id_ref, .quantifier = .required },
9385 .{ .kind = .id_ref, .quantifier = .optional },
9386 .{ .kind = .memory_access, .quantifier = .optional },
9387 },10552 },
9388 },10553 },
9389 .{10554 .{
9390 .name = "OpCooperativeMatrixMulAddKHR",10555 .name = "OpIsNodePayloadValidAMDX",
9391 .opcode = 4459,10556 .opcode = 5101,
9392 .operands = &.{10557 .operands = &.{
9393 .{ .kind = .id_result_type, .quantifier = .required },10558 .{ .kind = .id_result_type, .quantifier = .required },
9394 .{ .kind = .id_result, .quantifier = .required },10559 .{ .kind = .id_result, .quantifier = .required },
9395 .{ .kind = .id_ref, .quantifier = .required },10560 .{ .kind = .id_ref, .quantifier = .required },
9396 .{ .kind = .id_ref, .quantifier = .required },10561 .{ .kind = .id_ref, .quantifier = .required },
9397 .{ .kind = .id_ref, .quantifier = .required },
9398 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
9399 },10562 },
9400 },10563 },
9401 .{10564 .{
9402 .name = "OpCooperativeMatrixLengthKHR",10565 .name = "OpConstantStringAMDX",
9403 .opcode = 4460,10566 .opcode = 5103,
9404 .operands = &.{10567 .operands = &.{
9405 .{ .kind = .id_result_type, .quantifier = .required },
9406 .{ .kind = .id_result, .quantifier = .required },10568 .{ .kind = .id_result, .quantifier = .required },
9407 .{ .kind = .id_ref, .quantifier = .required },10569 .{ .kind = .literal_string, .quantifier = .required },
9408 },10570 },
9409 },10571 },
9410 .{10572 .{
9411 .name = "OpConstantCompositeReplicateEXT",10573 .name = "OpSpecConstantStringAMDX",
9412 .opcode = 4461,10574 .opcode = 5104,
9413 .operands = &.{10575 .operands = &.{
9414 .{ .kind = .id_result_type, .quantifier = .required },
9415 .{ .kind = .id_result, .quantifier = .required },10576 .{ .kind = .id_result, .quantifier = .required },
9416 .{ .kind = .id_ref, .quantifier = .required },10577 .{ .kind = .literal_string, .quantifier = .required },
9417 },10578 },
9418 },10579 },
9419 .{10580 .{
9420 .name = "OpSpecConstantCompositeReplicateEXT",10581 .name = "OpGroupNonUniformQuadAllKHR",
9421 .opcode = 4462,10582 .opcode = 5110,
9422 .operands = &.{10583 .operands = &.{
9423 .{ .kind = .id_result_type, .quantifier = .required },10584 .{ .kind = .id_result_type, .quantifier = .required },
9424 .{ .kind = .id_result, .quantifier = .required },10585 .{ .kind = .id_result, .quantifier = .required },
...@@ -9426,8 +10587,8 @@ pub const InstructionSet = enum {...@@ -9426,8 +10587,8 @@ pub const InstructionSet = enum {
9426 },10587 },
9427 },10588 },
9428 .{10589 .{
9429 .name = "OpCompositeConstructReplicateEXT",10590 .name = "OpGroupNonUniformQuadAnyKHR",
9430 .opcode = 4463,10591 .opcode = 5111,
9431 .operands = &.{10592 .operands = &.{
9432 .{ .kind = .id_result_type, .quantifier = .required },10593 .{ .kind = .id_result_type, .quantifier = .required },
9433 .{ .kind = .id_result, .quantifier = .required },10594 .{ .kind = .id_result, .quantifier = .required },
...@@ -9435,51 +10596,54 @@ pub const InstructionSet = enum {...@@ -9435,51 +10596,54 @@ pub const InstructionSet = enum {
9435 },10596 },
9436 },10597 },
9437 .{10598 .{
9438 .name = "OpTypeRayQueryKHR",10599 .name = "OpTypeBufferEXT",
9439 .opcode = 4472,10600 .opcode = 5115,
9440 .operands = &.{10601 .operands = &.{
9441 .{ .kind = .id_result, .quantifier = .required },10602 .{ .kind = .id_result, .quantifier = .required },
10603 .{ .kind = .storage_class, .quantifier = .required },
9442 },10604 },
9443 },10605 },
9444 .{10606 .{
9445 .name = "OpRayQueryInitializeKHR",10607 .name = "OpBufferPointerEXT",
9446 .opcode = 4473,10608 .opcode = 5119,
9447 .operands = &.{10609 .operands = &.{
9448 .{ .kind = .id_ref, .quantifier = .required },10610 .{ .kind = .id_result_type, .quantifier = .required },
9449 .{ .kind = .id_ref, .quantifier = .required },10611 .{ .kind = .id_result, .quantifier = .required },
9450 .{ .kind = .id_ref, .quantifier = .required },
9451 .{ .kind = .id_ref, .quantifier = .required },
9452 .{ .kind = .id_ref, .quantifier = .required },
9453 .{ .kind = .id_ref, .quantifier = .required },
9454 .{ .kind = .id_ref, .quantifier = .required },
9455 .{ .kind = .id_ref, .quantifier = .required },10612 .{ .kind = .id_ref, .quantifier = .required },
9456 },10613 },
9457 },10614 },
9458 .{10615 .{
9459 .name = "OpRayQueryTerminateKHR",10616 .name = "OpAbortKHR",
9460 .opcode = 4474,10617 .opcode = 5121,
9461 .operands = &.{10618 .operands = &.{
9462 .{ .kind = .id_ref, .quantifier = .required },10619 .{ .kind = .id_ref, .quantifier = .required },
10620 .{ .kind = .id_ref, .quantifier = .required },
9463 },10621 },
9464 },10622 },
9465 .{10623 .{
9466 .name = "OpRayQueryGenerateIntersectionKHR",10624 .name = "OpUntypedImageTexelPointerEXT",
9467 .opcode = 4475,10625 .opcode = 5126,
9468 .operands = &.{10626 .operands = &.{
10627 .{ .kind = .id_result_type, .quantifier = .required },
10628 .{ .kind = .id_result, .quantifier = .required },
10629 .{ .kind = .id_ref, .quantifier = .required },
10630 .{ .kind = .id_ref, .quantifier = .required },
9469 .{ .kind = .id_ref, .quantifier = .required },10631 .{ .kind = .id_ref, .quantifier = .required },
9470 .{ .kind = .id_ref, .quantifier = .required },10632 .{ .kind = .id_ref, .quantifier = .required },
9471 },10633 },
9472 },10634 },
9473 .{10635 .{
9474 .name = "OpRayQueryConfirmIntersectionKHR",10636 .name = "OpMemberDecorateIdEXT",
9475 .opcode = 4476,10637 .opcode = 5127,
9476 .operands = &.{10638 .operands = &.{
9477 .{ .kind = .id_ref, .quantifier = .required },10639 .{ .kind = .id_ref, .quantifier = .required },
10640 .{ .kind = .literal_integer, .quantifier = .required },
10641 .{ .kind = .decoration, .quantifier = .required },
9478 },10642 },
9479 },10643 },
9480 .{10644 .{
9481 .name = "OpRayQueryProceedKHR",10645 .name = "OpConstantSizeOfEXT",
9482 .opcode = 4477,10646 .opcode = 5129,
9483 .operands = &.{10647 .operands = &.{
9484 .{ .kind = .id_result_type, .quantifier = .required },10648 .{ .kind = .id_result_type, .quantifier = .required },
9485 .{ .kind = .id_result, .quantifier = .required },10649 .{ .kind = .id_result, .quantifier = .required },
...@@ -9487,69 +10651,53 @@ pub const InstructionSet = enum {...@@ -9487,69 +10651,53 @@ pub const InstructionSet = enum {
9487 },10651 },
9488 },10652 },
9489 .{10653 .{
9490 .name = "OpRayQueryGetIntersectionTypeKHR",10654 .name = "OpConstantDataKHR",
9491 .opcode = 4479,10655 .opcode = 5147,
9492 .operands = &.{10656 .operands = &.{
9493 .{ .kind = .id_result_type, .quantifier = .required },10657 .{ .kind = .id_result_type, .quantifier = .required },
9494 .{ .kind = .id_result, .quantifier = .required },10658 .{ .kind = .id_result, .quantifier = .required },
9495 .{ .kind = .id_ref, .quantifier = .required },10659 .{ .kind = .literal_integer, .quantifier = .variadic },
9496 .{ .kind = .id_ref, .quantifier = .required },
9497 },10660 },
9498 },10661 },
9499 .{10662 .{
9500 .name = "OpImageSampleWeightedQCOM",10663 .name = "OpSpecConstantDataKHR",
9501 .opcode = 4480,10664 .opcode = 5148,
9502 .operands = &.{10665 .operands = &.{
9503 .{ .kind = .id_result_type, .quantifier = .required },10666 .{ .kind = .id_result_type, .quantifier = .required },
9504 .{ .kind = .id_result, .quantifier = .required },10667 .{ .kind = .id_result, .quantifier = .required },
9505 .{ .kind = .id_ref, .quantifier = .required },10668 .{ .kind = .literal_integer, .quantifier = .variadic },
9506 .{ .kind = .id_ref, .quantifier = .required },
9507 .{ .kind = .id_ref, .quantifier = .required },
9508 },10669 },
9509 },10670 },
9510 .{10671 .{
9511 .name = "OpImageBoxFilterQCOM",10672 .name = "OpPoisonKHR",
9512 .opcode = 4481,10673 .opcode = 5158,
9513 .operands = &.{10674 .operands = &.{
9514 .{ .kind = .id_result_type, .quantifier = .required },10675 .{ .kind = .id_result_type, .quantifier = .required },
9515 .{ .kind = .id_result, .quantifier = .required },10676 .{ .kind = .id_result, .quantifier = .required },
9516 .{ .kind = .id_ref, .quantifier = .required },
9517 .{ .kind = .id_ref, .quantifier = .required },
9518 .{ .kind = .id_ref, .quantifier = .required },
9519 },10677 },
9520 },10678 },
9521 .{10679 .{
9522 .name = "OpImageBlockMatchSSDQCOM",10680 .name = "OpFreezeKHR",
9523 .opcode = 4482,10681 .opcode = 5159,
9524 .operands = &.{10682 .operands = &.{
9525 .{ .kind = .id_result_type, .quantifier = .required },10683 .{ .kind = .id_result_type, .quantifier = .required },
9526 .{ .kind = .id_result, .quantifier = .required },10684 .{ .kind = .id_result, .quantifier = .required },
9527 .{ .kind = .id_ref, .quantifier = .required },10685 .{ .kind = .id_ref, .quantifier = .required },
9528 .{ .kind = .id_ref, .quantifier = .required },
9529 .{ .kind = .id_ref, .quantifier = .required },
9530 .{ .kind = .id_ref, .quantifier = .required },
9531 .{ .kind = .id_ref, .quantifier = .required },
9532 },10686 },
9533 },10687 },
9534 .{10688 .{
9535 .name = "OpImageBlockMatchSADQCOM",10689 .name = "OpHitObjectRecordHitMotionNV",
9536 .opcode = 4483,10690 .opcode = 5249,
9537 .operands = &.{10691 .operands = &.{
9538 .{ .kind = .id_result_type, .quantifier = .required },
9539 .{ .kind = .id_result, .quantifier = .required },
9540 .{ .kind = .id_ref, .quantifier = .required },10692 .{ .kind = .id_ref, .quantifier = .required },
9541 .{ .kind = .id_ref, .quantifier = .required },10693 .{ .kind = .id_ref, .quantifier = .required },
9542 .{ .kind = .id_ref, .quantifier = .required },10694 .{ .kind = .id_ref, .quantifier = .required },
9543 .{ .kind = .id_ref, .quantifier = .required },10695 .{ .kind = .id_ref, .quantifier = .required },
9544 .{ .kind = .id_ref, .quantifier = .required },10696 .{ .kind = .id_ref, .quantifier = .required },
9545 },10697 .{ .kind = .id_ref, .quantifier = .required },
9546 },10698 .{ .kind = .id_ref, .quantifier = .required },
9547 .{10699 .{ .kind = .id_ref, .quantifier = .required },
9548 .name = "OpImageBlockMatchWindowSSDQCOM",10700 .{ .kind = .id_ref, .quantifier = .required },
9549 .opcode = 4500,
9550 .operands = &.{
9551 .{ .kind = .id_result_type, .quantifier = .required },
9552 .{ .kind = .id_result, .quantifier = .required },
9553 .{ .kind = .id_ref, .quantifier = .required },10701 .{ .kind = .id_ref, .quantifier = .required },
9554 .{ .kind = .id_ref, .quantifier = .required },10702 .{ .kind = .id_ref, .quantifier = .required },
9555 .{ .kind = .id_ref, .quantifier = .required },10703 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9558,24 +10706,17 @@ pub const InstructionSet = enum {...@@ -9558,24 +10706,17 @@ pub const InstructionSet = enum {
9558 },10706 },
9559 },10707 },
9560 .{10708 .{
9561 .name = "OpImageBlockMatchWindowSADQCOM",10709 .name = "OpHitObjectRecordHitWithIndexMotionNV",
9562 .opcode = 4501,10710 .opcode = 5250,
9563 .operands = &.{10711 .operands = &.{
9564 .{ .kind = .id_result_type, .quantifier = .required },
9565 .{ .kind = .id_result, .quantifier = .required },
9566 .{ .kind = .id_ref, .quantifier = .required },10712 .{ .kind = .id_ref, .quantifier = .required },
9567 .{ .kind = .id_ref, .quantifier = .required },10713 .{ .kind = .id_ref, .quantifier = .required },
9568 .{ .kind = .id_ref, .quantifier = .required },10714 .{ .kind = .id_ref, .quantifier = .required },
9569 .{ .kind = .id_ref, .quantifier = .required },10715 .{ .kind = .id_ref, .quantifier = .required },
9570 .{ .kind = .id_ref, .quantifier = .required },10716 .{ .kind = .id_ref, .quantifier = .required },
9571 },10717 .{ .kind = .id_ref, .quantifier = .required },
9572 },10718 .{ .kind = .id_ref, .quantifier = .required },
9573 .{10719 .{ .kind = .id_ref, .quantifier = .required },
9574 .name = "OpImageBlockMatchGatherSSDQCOM",
9575 .opcode = 4502,
9576 .operands = &.{
9577 .{ .kind = .id_result_type, .quantifier = .required },
9578 .{ .kind = .id_result, .quantifier = .required },
9579 .{ .kind = .id_ref, .quantifier = .required },10720 .{ .kind = .id_ref, .quantifier = .required },
9580 .{ .kind = .id_ref, .quantifier = .required },10721 .{ .kind = .id_ref, .quantifier = .required },
9581 .{ .kind = .id_ref, .quantifier = .required },10722 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9584,11 +10725,11 @@ pub const InstructionSet = enum {...@@ -9584,11 +10725,11 @@ pub const InstructionSet = enum {
9584 },10725 },
9585 },10726 },
9586 .{10727 .{
9587 .name = "OpImageBlockMatchGatherSADQCOM",10728 .name = "OpHitObjectRecordMissMotionNV",
9588 .opcode = 4503,10729 .opcode = 5251,
9589 .operands = &.{10730 .operands = &.{
9590 .{ .kind = .id_result_type, .quantifier = .required },10731 .{ .kind = .id_ref, .quantifier = .required },
9591 .{ .kind = .id_result, .quantifier = .required },10732 .{ .kind = .id_ref, .quantifier = .required },
9592 .{ .kind = .id_ref, .quantifier = .required },10733 .{ .kind = .id_ref, .quantifier = .required },
9593 .{ .kind = .id_ref, .quantifier = .required },10734 .{ .kind = .id_ref, .quantifier = .required },
9594 .{ .kind = .id_ref, .quantifier = .required },10735 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9597,161 +10738,163 @@ pub const InstructionSet = enum {...@@ -9597,161 +10738,163 @@ pub const InstructionSet = enum {
9597 },10738 },
9598 },10739 },
9599 .{10740 .{
9600 .name = "OpGroupIAddNonUniformAMD",10741 .name = "OpHitObjectGetWorldToObjectNV",
9601 .opcode = 5000,10742 .opcode = 5252,
9602 .operands = &.{10743 .operands = &.{
9603 .{ .kind = .id_result_type, .quantifier = .required },10744 .{ .kind = .id_result_type, .quantifier = .required },
9604 .{ .kind = .id_result, .quantifier = .required },10745 .{ .kind = .id_result, .quantifier = .required },
9605 .{ .kind = .id_scope, .quantifier = .required },
9606 .{ .kind = .group_operation, .quantifier = .required },
9607 .{ .kind = .id_ref, .quantifier = .required },10746 .{ .kind = .id_ref, .quantifier = .required },
9608 },10747 },
9609 },10748 },
9610 .{10749 .{
9611 .name = "OpGroupFAddNonUniformAMD",10750 .name = "OpHitObjectGetObjectToWorldNV",
9612 .opcode = 5001,10751 .opcode = 5253,
9613 .operands = &.{10752 .operands = &.{
9614 .{ .kind = .id_result_type, .quantifier = .required },10753 .{ .kind = .id_result_type, .quantifier = .required },
9615 .{ .kind = .id_result, .quantifier = .required },10754 .{ .kind = .id_result, .quantifier = .required },
9616 .{ .kind = .id_scope, .quantifier = .required },
9617 .{ .kind = .group_operation, .quantifier = .required },
9618 .{ .kind = .id_ref, .quantifier = .required },10755 .{ .kind = .id_ref, .quantifier = .required },
9619 },10756 },
9620 },10757 },
9621 .{10758 .{
9622 .name = "OpGroupFMinNonUniformAMD",10759 .name = "OpHitObjectGetObjectRayDirectionNV",
9623 .opcode = 5002,10760 .opcode = 5254,
9624 .operands = &.{10761 .operands = &.{
9625 .{ .kind = .id_result_type, .quantifier = .required },10762 .{ .kind = .id_result_type, .quantifier = .required },
9626 .{ .kind = .id_result, .quantifier = .required },10763 .{ .kind = .id_result, .quantifier = .required },
9627 .{ .kind = .id_scope, .quantifier = .required },
9628 .{ .kind = .group_operation, .quantifier = .required },
9629 .{ .kind = .id_ref, .quantifier = .required },10764 .{ .kind = .id_ref, .quantifier = .required },
9630 },10765 },
9631 },10766 },
9632 .{10767 .{
9633 .name = "OpGroupUMinNonUniformAMD",10768 .name = "OpHitObjectGetObjectRayOriginNV",
9634 .opcode = 5003,10769 .opcode = 5255,
9635 .operands = &.{10770 .operands = &.{
9636 .{ .kind = .id_result_type, .quantifier = .required },10771 .{ .kind = .id_result_type, .quantifier = .required },
9637 .{ .kind = .id_result, .quantifier = .required },10772 .{ .kind = .id_result, .quantifier = .required },
9638 .{ .kind = .id_scope, .quantifier = .required },
9639 .{ .kind = .group_operation, .quantifier = .required },
9640 .{ .kind = .id_ref, .quantifier = .required },10773 .{ .kind = .id_ref, .quantifier = .required },
9641 },10774 },
9642 },10775 },
9643 .{10776 .{
9644 .name = "OpGroupSMinNonUniformAMD",10777 .name = "OpHitObjectTraceRayMotionNV",
9645 .opcode = 5004,10778 .opcode = 5256,
9646 .operands = &.{10779 .operands = &.{
9647 .{ .kind = .id_result_type, .quantifier = .required },10780 .{ .kind = .id_ref, .quantifier = .required },
9648 .{ .kind = .id_result, .quantifier = .required },10781 .{ .kind = .id_ref, .quantifier = .required },
9649 .{ .kind = .id_scope, .quantifier = .required },10782 .{ .kind = .id_ref, .quantifier = .required },
9650 .{ .kind = .group_operation, .quantifier = .required },10783 .{ .kind = .id_ref, .quantifier = .required },
10784 .{ .kind = .id_ref, .quantifier = .required },
10785 .{ .kind = .id_ref, .quantifier = .required },
10786 .{ .kind = .id_ref, .quantifier = .required },
10787 .{ .kind = .id_ref, .quantifier = .required },
10788 .{ .kind = .id_ref, .quantifier = .required },
10789 .{ .kind = .id_ref, .quantifier = .required },
10790 .{ .kind = .id_ref, .quantifier = .required },
10791 .{ .kind = .id_ref, .quantifier = .required },
9651 .{ .kind = .id_ref, .quantifier = .required },10792 .{ .kind = .id_ref, .quantifier = .required },
9652 },10793 },
9653 },10794 },
9654 .{10795 .{
9655 .name = "OpGroupFMaxNonUniformAMD",10796 .name = "OpHitObjectGetShaderRecordBufferHandleNV",
9656 .opcode = 5005,10797 .opcode = 5257,
9657 .operands = &.{10798 .operands = &.{
9658 .{ .kind = .id_result_type, .quantifier = .required },10799 .{ .kind = .id_result_type, .quantifier = .required },
9659 .{ .kind = .id_result, .quantifier = .required },10800 .{ .kind = .id_result, .quantifier = .required },
9660 .{ .kind = .id_scope, .quantifier = .required },
9661 .{ .kind = .group_operation, .quantifier = .required },
9662 .{ .kind = .id_ref, .quantifier = .required },10801 .{ .kind = .id_ref, .quantifier = .required },
9663 },10802 },
9664 },10803 },
9665 .{10804 .{
9666 .name = "OpGroupUMaxNonUniformAMD",10805 .name = "OpHitObjectGetShaderBindingTableRecordIndexNV",
9667 .opcode = 5006,10806 .opcode = 5258,
9668 .operands = &.{10807 .operands = &.{
9669 .{ .kind = .id_result_type, .quantifier = .required },10808 .{ .kind = .id_result_type, .quantifier = .required },
9670 .{ .kind = .id_result, .quantifier = .required },10809 .{ .kind = .id_result, .quantifier = .required },
9671 .{ .kind = .id_scope, .quantifier = .required },
9672 .{ .kind = .group_operation, .quantifier = .required },
9673 .{ .kind = .id_ref, .quantifier = .required },10810 .{ .kind = .id_ref, .quantifier = .required },
9674 },10811 },
9675 },10812 },
9676 .{10813 .{
9677 .name = "OpGroupSMaxNonUniformAMD",10814 .name = "OpHitObjectRecordEmptyNV",
9678 .opcode = 5007,10815 .opcode = 5259,
9679 .operands = &.{10816 .operands = &.{
9680 .{ .kind = .id_result_type, .quantifier = .required },
9681 .{ .kind = .id_result, .quantifier = .required },
9682 .{ .kind = .id_scope, .quantifier = .required },
9683 .{ .kind = .group_operation, .quantifier = .required },
9684 .{ .kind = .id_ref, .quantifier = .required },10817 .{ .kind = .id_ref, .quantifier = .required },
9685 },10818 },
9686 },10819 },
9687 .{10820 .{
9688 .name = "OpFragmentMaskFetchAMD",10821 .name = "OpHitObjectTraceRayNV",
9689 .opcode = 5011,10822 .opcode = 5260,
9690 .operands = &.{10823 .operands = &.{
9691 .{ .kind = .id_result_type, .quantifier = .required },
9692 .{ .kind = .id_result, .quantifier = .required },
9693 .{ .kind = .id_ref, .quantifier = .required },10824 .{ .kind = .id_ref, .quantifier = .required },
9694 .{ .kind = .id_ref, .quantifier = .required },10825 .{ .kind = .id_ref, .quantifier = .required },
9695 },10826 .{ .kind = .id_ref, .quantifier = .required },
9696 },10827 .{ .kind = .id_ref, .quantifier = .required },
9697 .{10828 .{ .kind = .id_ref, .quantifier = .required },
9698 .name = "OpFragmentFetchAMD",10829 .{ .kind = .id_ref, .quantifier = .required },
9699 .opcode = 5012,10830 .{ .kind = .id_ref, .quantifier = .required },
9700 .operands = &.{10831 .{ .kind = .id_ref, .quantifier = .required },
9701 .{ .kind = .id_result_type, .quantifier = .required },10832 .{ .kind = .id_ref, .quantifier = .required },
9702 .{ .kind = .id_result, .quantifier = .required },
9703 .{ .kind = .id_ref, .quantifier = .required },10833 .{ .kind = .id_ref, .quantifier = .required },
9704 .{ .kind = .id_ref, .quantifier = .required },10834 .{ .kind = .id_ref, .quantifier = .required },
9705 .{ .kind = .id_ref, .quantifier = .required },10835 .{ .kind = .id_ref, .quantifier = .required },
9706 },10836 },
9707 },10837 },
9708 .{10838 .{
9709 .name = "OpReadClockKHR",10839 .name = "OpHitObjectRecordHitNV",
9710 .opcode = 5056,10840 .opcode = 5261,
9711 .operands = &.{
9712 .{ .kind = .id_result_type, .quantifier = .required },
9713 .{ .kind = .id_result, .quantifier = .required },
9714 .{ .kind = .id_scope, .quantifier = .required },
9715 },
9716 },
9717 .{
9718 .name = "OpAllocateNodePayloadsAMDX",
9719 .opcode = 5074,
9720 .operands = &.{10841 .operands = &.{
9721 .{ .kind = .id_result_type, .quantifier = .required },10842 .{ .kind = .id_ref, .quantifier = .required },
9722 .{ .kind = .id_result, .quantifier = .required },10843 .{ .kind = .id_ref, .quantifier = .required },
9723 .{ .kind = .id_scope, .quantifier = .required },10844 .{ .kind = .id_ref, .quantifier = .required },
10845 .{ .kind = .id_ref, .quantifier = .required },
10846 .{ .kind = .id_ref, .quantifier = .required },
10847 .{ .kind = .id_ref, .quantifier = .required },
10848 .{ .kind = .id_ref, .quantifier = .required },
10849 .{ .kind = .id_ref, .quantifier = .required },
10850 .{ .kind = .id_ref, .quantifier = .required },
10851 .{ .kind = .id_ref, .quantifier = .required },
10852 .{ .kind = .id_ref, .quantifier = .required },
9724 .{ .kind = .id_ref, .quantifier = .required },10853 .{ .kind = .id_ref, .quantifier = .required },
9725 .{ .kind = .id_ref, .quantifier = .required },10854 .{ .kind = .id_ref, .quantifier = .required },
9726 },10855 },
9727 },10856 },
9728 .{10857 .{
9729 .name = "OpEnqueueNodePayloadsAMDX",10858 .name = "OpHitObjectRecordHitWithIndexNV",
9730 .opcode = 5075,10859 .opcode = 5262,
9731 .operands = &.{10860 .operands = &.{
9732 .{ .kind = .id_ref, .quantifier = .required },10861 .{ .kind = .id_ref, .quantifier = .required },
10862 .{ .kind = .id_ref, .quantifier = .required },
10863 .{ .kind = .id_ref, .quantifier = .required },
10864 .{ .kind = .id_ref, .quantifier = .required },
10865 .{ .kind = .id_ref, .quantifier = .required },
10866 .{ .kind = .id_ref, .quantifier = .required },
10867 .{ .kind = .id_ref, .quantifier = .required },
10868 .{ .kind = .id_ref, .quantifier = .required },
10869 .{ .kind = .id_ref, .quantifier = .required },
10870 .{ .kind = .id_ref, .quantifier = .required },
10871 .{ .kind = .id_ref, .quantifier = .required },
10872 .{ .kind = .id_ref, .quantifier = .required },
9733 },10873 },
9734 },10874 },
9735 .{10875 .{
9736 .name = "OpTypeNodePayloadArrayAMDX",10876 .name = "OpHitObjectRecordMissNV",
9737 .opcode = 5076,10877 .opcode = 5263,
9738 .operands = &.{10878 .operands = &.{
9739 .{ .kind = .id_result, .quantifier = .required },10879 .{ .kind = .id_ref, .quantifier = .required },
10880 .{ .kind = .id_ref, .quantifier = .required },
10881 .{ .kind = .id_ref, .quantifier = .required },
10882 .{ .kind = .id_ref, .quantifier = .required },
10883 .{ .kind = .id_ref, .quantifier = .required },
9740 .{ .kind = .id_ref, .quantifier = .required },10884 .{ .kind = .id_ref, .quantifier = .required },
9741 },10885 },
9742 },10886 },
9743 .{10887 .{
9744 .name = "OpFinishWritingNodePayloadAMDX",10888 .name = "OpHitObjectExecuteShaderNV",
9745 .opcode = 5078,10889 .opcode = 5264,
9746 .operands = &.{10890 .operands = &.{
9747 .{ .kind = .id_result_type, .quantifier = .required },10891 .{ .kind = .id_ref, .quantifier = .required },
9748 .{ .kind = .id_result, .quantifier = .required },
9749 .{ .kind = .id_ref, .quantifier = .required },10892 .{ .kind = .id_ref, .quantifier = .required },
9750 },10893 },
9751 },10894 },
9752 .{10895 .{
9753 .name = "OpNodePayloadArrayLengthAMDX",10896 .name = "OpHitObjectGetCurrentTimeNV",
9754 .opcode = 5090,10897 .opcode = 5265,
9755 .operands = &.{10898 .operands = &.{
9756 .{ .kind = .id_result_type, .quantifier = .required },10899 .{ .kind = .id_result_type, .quantifier = .required },
9757 .{ .kind = .id_result, .quantifier = .required },10900 .{ .kind = .id_result, .quantifier = .required },
...@@ -9759,34 +10902,25 @@ pub const InstructionSet = enum {...@@ -9759,34 +10902,25 @@ pub const InstructionSet = enum {
9759 },10902 },
9760 },10903 },
9761 .{10904 .{
9762 .name = "OpIsNodePayloadValidAMDX",10905 .name = "OpHitObjectGetAttributesNV",
9763 .opcode = 5101,10906 .opcode = 5266,
9764 .operands = &.{10907 .operands = &.{
9765 .{ .kind = .id_result_type, .quantifier = .required },
9766 .{ .kind = .id_result, .quantifier = .required },
9767 .{ .kind = .id_ref, .quantifier = .required },10908 .{ .kind = .id_ref, .quantifier = .required },
9768 .{ .kind = .id_ref, .quantifier = .required },10909 .{ .kind = .id_ref, .quantifier = .required },
9769 },10910 },
9770 },10911 },
9771 .{10912 .{
9772 .name = "OpConstantStringAMDX",10913 .name = "OpHitObjectGetHitKindNV",
9773 .opcode = 5103,10914 .opcode = 5267,
9774 .operands = &.{
9775 .{ .kind = .id_result, .quantifier = .required },
9776 .{ .kind = .literal_string, .quantifier = .required },
9777 },
9778 },
9779 .{
9780 .name = "OpSpecConstantStringAMDX",
9781 .opcode = 5104,
9782 .operands = &.{10915 .operands = &.{
10916 .{ .kind = .id_result_type, .quantifier = .required },
9783 .{ .kind = .id_result, .quantifier = .required },10917 .{ .kind = .id_result, .quantifier = .required },
9784 .{ .kind = .literal_string, .quantifier = .required },10918 .{ .kind = .id_ref, .quantifier = .required },
9785 },10919 },
9786 },10920 },
9787 .{10921 .{
9788 .name = "OpGroupNonUniformQuadAllKHR",10922 .name = "OpHitObjectGetPrimitiveIndexNV",
9789 .opcode = 5110,10923 .opcode = 5268,
9790 .operands = &.{10924 .operands = &.{
9791 .{ .kind = .id_result_type, .quantifier = .required },10925 .{ .kind = .id_result_type, .quantifier = .required },
9792 .{ .kind = .id_result, .quantifier = .required },10926 .{ .kind = .id_result, .quantifier = .required },
...@@ -9794,8 +10928,8 @@ pub const InstructionSet = enum {...@@ -9794,8 +10928,8 @@ pub const InstructionSet = enum {
9794 },10928 },
9795 },10929 },
9796 .{10930 .{
9797 .name = "OpGroupNonUniformQuadAnyKHR",10931 .name = "OpHitObjectGetGeometryIndexNV",
9798 .opcode = 5111,10932 .opcode = 5269,
9799 .operands = &.{10933 .operands = &.{
9800 .{ .kind = .id_result_type, .quantifier = .required },10934 .{ .kind = .id_result_type, .quantifier = .required },
9801 .{ .kind = .id_result, .quantifier = .required },10935 .{ .kind = .id_result, .quantifier = .required },
...@@ -9803,60 +10937,35 @@ pub const InstructionSet = enum {...@@ -9803,60 +10937,35 @@ pub const InstructionSet = enum {
9803 },10937 },
9804 },10938 },
9805 .{10939 .{
9806 .name = "OpHitObjectRecordHitMotionNV",10940 .name = "OpHitObjectGetInstanceIdNV",
9807 .opcode = 5249,10941 .opcode = 5270,
9808 .operands = &.{10942 .operands = &.{
9809 .{ .kind = .id_ref, .quantifier = .required },10943 .{ .kind = .id_result_type, .quantifier = .required },
9810 .{ .kind = .id_ref, .quantifier = .required },10944 .{ .kind = .id_result, .quantifier = .required },
9811 .{ .kind = .id_ref, .quantifier = .required },
9812 .{ .kind = .id_ref, .quantifier = .required },
9813 .{ .kind = .id_ref, .quantifier = .required },
9814 .{ .kind = .id_ref, .quantifier = .required },
9815 .{ .kind = .id_ref, .quantifier = .required },
9816 .{ .kind = .id_ref, .quantifier = .required },
9817 .{ .kind = .id_ref, .quantifier = .required },
9818 .{ .kind = .id_ref, .quantifier = .required },
9819 .{ .kind = .id_ref, .quantifier = .required },
9820 .{ .kind = .id_ref, .quantifier = .required },
9821 .{ .kind = .id_ref, .quantifier = .required },
9822 .{ .kind = .id_ref, .quantifier = .required },10945 .{ .kind = .id_ref, .quantifier = .required },
9823 },10946 },
9824 },10947 },
9825 .{10948 .{
9826 .name = "OpHitObjectRecordHitWithIndexMotionNV",10949 .name = "OpHitObjectGetInstanceCustomIndexNV",
9827 .opcode = 5250,10950 .opcode = 5271,
9828 .operands = &.{10951 .operands = &.{
9829 .{ .kind = .id_ref, .quantifier = .required },10952 .{ .kind = .id_result_type, .quantifier = .required },
9830 .{ .kind = .id_ref, .quantifier = .required },10953 .{ .kind = .id_result, .quantifier = .required },
9831 .{ .kind = .id_ref, .quantifier = .required },
9832 .{ .kind = .id_ref, .quantifier = .required },
9833 .{ .kind = .id_ref, .quantifier = .required },
9834 .{ .kind = .id_ref, .quantifier = .required },
9835 .{ .kind = .id_ref, .quantifier = .required },
9836 .{ .kind = .id_ref, .quantifier = .required },
9837 .{ .kind = .id_ref, .quantifier = .required },
9838 .{ .kind = .id_ref, .quantifier = .required },
9839 .{ .kind = .id_ref, .quantifier = .required },
9840 .{ .kind = .id_ref, .quantifier = .required },
9841 .{ .kind = .id_ref, .quantifier = .required },10954 .{ .kind = .id_ref, .quantifier = .required },
9842 },10955 },
9843 },10956 },
9844 .{10957 .{
9845 .name = "OpHitObjectRecordMissMotionNV",10958 .name = "OpHitObjectGetWorldRayDirectionNV",
9846 .opcode = 5251,10959 .opcode = 5272,
9847 .operands = &.{10960 .operands = &.{
9848 .{ .kind = .id_ref, .quantifier = .required },10961 .{ .kind = .id_result_type, .quantifier = .required },
9849 .{ .kind = .id_ref, .quantifier = .required },10962 .{ .kind = .id_result, .quantifier = .required },
9850 .{ .kind = .id_ref, .quantifier = .required },
9851 .{ .kind = .id_ref, .quantifier = .required },
9852 .{ .kind = .id_ref, .quantifier = .required },
9853 .{ .kind = .id_ref, .quantifier = .required },
9854 .{ .kind = .id_ref, .quantifier = .required },10963 .{ .kind = .id_ref, .quantifier = .required },
9855 },10964 },
9856 },10965 },
9857 .{10966 .{
9858 .name = "OpHitObjectGetWorldToObjectNV",10967 .name = "OpHitObjectGetWorldRayOriginNV",
9859 .opcode = 5252,10968 .opcode = 5273,
9860 .operands = &.{10969 .operands = &.{
9861 .{ .kind = .id_result_type, .quantifier = .required },10970 .{ .kind = .id_result_type, .quantifier = .required },
9862 .{ .kind = .id_result, .quantifier = .required },10971 .{ .kind = .id_result, .quantifier = .required },
...@@ -9864,8 +10973,8 @@ pub const InstructionSet = enum {...@@ -9864,8 +10973,8 @@ pub const InstructionSet = enum {
9864 },10973 },
9865 },10974 },
9866 .{10975 .{
9867 .name = "OpHitObjectGetObjectToWorldNV",10976 .name = "OpHitObjectGetRayTMaxNV",
9868 .opcode = 5253,10977 .opcode = 5274,
9869 .operands = &.{10978 .operands = &.{
9870 .{ .kind = .id_result_type, .quantifier = .required },10979 .{ .kind = .id_result_type, .quantifier = .required },
9871 .{ .kind = .id_result, .quantifier = .required },10980 .{ .kind = .id_result, .quantifier = .required },
...@@ -9873,8 +10982,8 @@ pub const InstructionSet = enum {...@@ -9873,8 +10982,8 @@ pub const InstructionSet = enum {
9873 },10982 },
9874 },10983 },
9875 .{10984 .{
9876 .name = "OpHitObjectGetObjectRayDirectionNV",10985 .name = "OpHitObjectGetRayTMinNV",
9877 .opcode = 5254,10986 .opcode = 5275,
9878 .operands = &.{10987 .operands = &.{
9879 .{ .kind = .id_result_type, .quantifier = .required },10988 .{ .kind = .id_result_type, .quantifier = .required },
9880 .{ .kind = .id_result, .quantifier = .required },10989 .{ .kind = .id_result, .quantifier = .required },
...@@ -9882,8 +10991,8 @@ pub const InstructionSet = enum {...@@ -9882,8 +10991,8 @@ pub const InstructionSet = enum {
9882 },10991 },
9883 },10992 },
9884 .{10993 .{
9885 .name = "OpHitObjectGetObjectRayOriginNV",10994 .name = "OpHitObjectIsEmptyNV",
9886 .opcode = 5255,10995 .opcode = 5276,
9887 .operands = &.{10996 .operands = &.{
9888 .{ .kind = .id_result_type, .quantifier = .required },10997 .{ .kind = .id_result_type, .quantifier = .required },
9889 .{ .kind = .id_result, .quantifier = .required },10998 .{ .kind = .id_result, .quantifier = .required },
...@@ -9891,53 +11000,75 @@ pub const InstructionSet = enum {...@@ -9891,53 +11000,75 @@ pub const InstructionSet = enum {
9891 },11000 },
9892 },11001 },
9893 .{11002 .{
9894 .name = "OpHitObjectTraceRayMotionNV",11003 .name = "OpHitObjectIsHitNV",
9895 .opcode = 5256,11004 .opcode = 5277,
9896 .operands = &.{11005 .operands = &.{
11006 .{ .kind = .id_result_type, .quantifier = .required },
11007 .{ .kind = .id_result, .quantifier = .required },
9897 .{ .kind = .id_ref, .quantifier = .required },11008 .{ .kind = .id_ref, .quantifier = .required },
11009 },
11010 },
11011 .{
11012 .name = "OpHitObjectIsMissNV",
11013 .opcode = 5278,
11014 .operands = &.{
11015 .{ .kind = .id_result_type, .quantifier = .required },
11016 .{ .kind = .id_result, .quantifier = .required },
9898 .{ .kind = .id_ref, .quantifier = .required },11017 .{ .kind = .id_ref, .quantifier = .required },
11018 },
11019 },
11020 .{
11021 .name = "OpReorderThreadWithHitObjectNV",
11022 .opcode = 5279,
11023 .operands = &.{
9899 .{ .kind = .id_ref, .quantifier = .required },11024 .{ .kind = .id_ref, .quantifier = .required },
9900 .{ .kind = .id_ref, .quantifier = .required },11025 .{ .kind = .id_ref, .quantifier = .optional },
9901 .{ .kind = .id_ref, .quantifier = .required },11026 .{ .kind = .id_ref, .quantifier = .optional },
9902 .{ .kind = .id_ref, .quantifier = .required },11027 },
9903 .{ .kind = .id_ref, .quantifier = .required },11028 },
9904 .{ .kind = .id_ref, .quantifier = .required },11029 .{
9905 .{ .kind = .id_ref, .quantifier = .required },11030 .name = "OpReorderThreadWithHintNV",
9906 .{ .kind = .id_ref, .quantifier = .required },11031 .opcode = 5280,
9907 .{ .kind = .id_ref, .quantifier = .required },11032 .operands = &.{
9908 .{ .kind = .id_ref, .quantifier = .required },11033 .{ .kind = .id_ref, .quantifier = .required },
9909 .{ .kind = .id_ref, .quantifier = .required },11034 .{ .kind = .id_ref, .quantifier = .required },
9910 },11035 },
9911 },11036 },
9912 .{11037 .{
9913 .name = "OpHitObjectGetShaderRecordBufferHandleNV",11038 .name = "OpTypeHitObjectNV",
9914 .opcode = 5257,11039 .opcode = 5281,
9915 .operands = &.{11040 .operands = &.{
9916 .{ .kind = .id_result_type, .quantifier = .required },
9917 .{ .kind = .id_result, .quantifier = .required },11041 .{ .kind = .id_result, .quantifier = .required },
9918 .{ .kind = .id_ref, .quantifier = .required },
9919 },11042 },
9920 },11043 },
9921 .{11044 .{
9922 .name = "OpHitObjectGetShaderBindingTableRecordIndexNV",11045 .name = "OpImageSampleFootprintNV",
9923 .opcode = 5258,11046 .opcode = 5283,
9924 .operands = &.{11047 .operands = &.{
9925 .{ .kind = .id_result_type, .quantifier = .required },11048 .{ .kind = .id_result_type, .quantifier = .required },
9926 .{ .kind = .id_result, .quantifier = .required },11049 .{ .kind = .id_result, .quantifier = .required },
9927 .{ .kind = .id_ref, .quantifier = .required },11050 .{ .kind = .id_ref, .quantifier = .required },
11051 .{ .kind = .id_ref, .quantifier = .required },
11052 .{ .kind = .id_ref, .quantifier = .required },
11053 .{ .kind = .id_ref, .quantifier = .required },
11054 .{ .kind = .image_operands, .quantifier = .optional },
9928 },11055 },
9929 },11056 },
9930 .{11057 .{
9931 .name = "OpHitObjectRecordEmptyNV",11058 .name = "OpTypeVectorIdEXT",
9932 .opcode = 5259,11059 .opcode = 5288,
9933 .operands = &.{11060 .operands = &.{
11061 .{ .kind = .id_result, .quantifier = .required },
11062 .{ .kind = .id_ref, .quantifier = .required },
9934 .{ .kind = .id_ref, .quantifier = .required },11063 .{ .kind = .id_ref, .quantifier = .required },
9935 },11064 },
9936 },11065 },
9937 .{11066 .{
9938 .name = "OpHitObjectTraceRayNV",11067 .name = "OpCooperativeVectorMatrixMulNV",
9939 .opcode = 5260,11068 .opcode = 5289,
9940 .operands = &.{11069 .operands = &.{
11070 .{ .kind = .id_result_type, .quantifier = .required },
11071 .{ .kind = .id_result, .quantifier = .required },
9941 .{ .kind = .id_ref, .quantifier = .required },11072 .{ .kind = .id_ref, .quantifier = .required },
9942 .{ .kind = .id_ref, .quantifier = .required },11073 .{ .kind = .id_ref, .quantifier = .required },
9943 .{ .kind = .id_ref, .quantifier = .required },11074 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9947,14 +11078,13 @@ pub const InstructionSet = enum {...@@ -9947,14 +11078,13 @@ pub const InstructionSet = enum {
9947 .{ .kind = .id_ref, .quantifier = .required },11078 .{ .kind = .id_ref, .quantifier = .required },
9948 .{ .kind = .id_ref, .quantifier = .required },11079 .{ .kind = .id_ref, .quantifier = .required },
9949 .{ .kind = .id_ref, .quantifier = .required },11080 .{ .kind = .id_ref, .quantifier = .required },
9950 .{ .kind = .id_ref, .quantifier = .required },11081 .{ .kind = .id_ref, .quantifier = .optional },
9951 .{ .kind = .id_ref, .quantifier = .required },11082 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
9952 .{ .kind = .id_ref, .quantifier = .required },
9953 },11083 },
9954 },11084 },
9955 .{11085 .{
9956 .name = "OpHitObjectRecordHitNV",11086 .name = "OpCooperativeVectorOuterProductAccumulateNV",
9957 .opcode = 5261,11087 .opcode = 5290,
9958 .operands = &.{11088 .operands = &.{
9959 .{ .kind = .id_ref, .quantifier = .required },11089 .{ .kind = .id_ref, .quantifier = .required },
9960 .{ .kind = .id_ref, .quantifier = .required },11090 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9962,19 +11092,24 @@ pub const InstructionSet = enum {...@@ -9962,19 +11092,24 @@ pub const InstructionSet = enum {
9962 .{ .kind = .id_ref, .quantifier = .required },11092 .{ .kind = .id_ref, .quantifier = .required },
9963 .{ .kind = .id_ref, .quantifier = .required },11093 .{ .kind = .id_ref, .quantifier = .required },
9964 .{ .kind = .id_ref, .quantifier = .required },11094 .{ .kind = .id_ref, .quantifier = .required },
9965 .{ .kind = .id_ref, .quantifier = .required },11095 .{ .kind = .id_ref, .quantifier = .optional },
9966 .{ .kind = .id_ref, .quantifier = .required },11096 },
9967 .{ .kind = .id_ref, .quantifier = .required },11097 },
9968 .{ .kind = .id_ref, .quantifier = .required },11098 .{
11099 .name = "OpCooperativeVectorReduceSumAccumulateNV",
11100 .opcode = 5291,
11101 .operands = &.{
9969 .{ .kind = .id_ref, .quantifier = .required },11102 .{ .kind = .id_ref, .quantifier = .required },
9970 .{ .kind = .id_ref, .quantifier = .required },11103 .{ .kind = .id_ref, .quantifier = .required },
9971 .{ .kind = .id_ref, .quantifier = .required },11104 .{ .kind = .id_ref, .quantifier = .required },
9972 },11105 },
9973 },11106 },
9974 .{11107 .{
9975 .name = "OpHitObjectRecordHitWithIndexNV",11108 .name = "OpCooperativeVectorMatrixMulAddNV",
9976 .opcode = 5262,11109 .opcode = 5292,
9977 .operands = &.{11110 .operands = &.{
11111 .{ .kind = .id_result_type, .quantifier = .required },
11112 .{ .kind = .id_result, .quantifier = .required },
9978 .{ .kind = .id_ref, .quantifier = .required },11113 .{ .kind = .id_ref, .quantifier = .required },
9979 .{ .kind = .id_ref, .quantifier = .required },11114 .{ .kind = .id_ref, .quantifier = .required },
9980 .{ .kind = .id_ref, .quantifier = .required },11115 .{ .kind = .id_ref, .quantifier = .required },
...@@ -9987,31 +11122,40 @@ pub const InstructionSet = enum {...@@ -9987,31 +11122,40 @@ pub const InstructionSet = enum {
9987 .{ .kind = .id_ref, .quantifier = .required },11122 .{ .kind = .id_ref, .quantifier = .required },
9988 .{ .kind = .id_ref, .quantifier = .required },11123 .{ .kind = .id_ref, .quantifier = .required },
9989 .{ .kind = .id_ref, .quantifier = .required },11124 .{ .kind = .id_ref, .quantifier = .required },
11125 .{ .kind = .id_ref, .quantifier = .optional },
11126 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
9990 },11127 },
9991 },11128 },
9992 .{11129 .{
9993 .name = "OpHitObjectRecordMissNV",11130 .name = "OpCooperativeMatrixConvertNV",
9994 .opcode = 5263,11131 .opcode = 5293,
9995 .operands = &.{11132 .operands = &.{
11133 .{ .kind = .id_result_type, .quantifier = .required },
11134 .{ .kind = .id_result, .quantifier = .required },
9996 .{ .kind = .id_ref, .quantifier = .required },11135 .{ .kind = .id_ref, .quantifier = .required },
11136 },
11137 },
11138 .{
11139 .name = "OpEmitMeshTasksEXT",
11140 .opcode = 5294,
11141 .operands = &.{
9997 .{ .kind = .id_ref, .quantifier = .required },11142 .{ .kind = .id_ref, .quantifier = .required },
9998 .{ .kind = .id_ref, .quantifier = .required },11143 .{ .kind = .id_ref, .quantifier = .required },
9999 .{ .kind = .id_ref, .quantifier = .required },11144 .{ .kind = .id_ref, .quantifier = .required },
10000 .{ .kind = .id_ref, .quantifier = .required },11145 .{ .kind = .id_ref, .quantifier = .optional },
10001 .{ .kind = .id_ref, .quantifier = .required },
10002 },11146 },
10003 },11147 },
10004 .{11148 .{
10005 .name = "OpHitObjectExecuteShaderNV",11149 .name = "OpSetMeshOutputsEXT",
10006 .opcode = 5264,11150 .opcode = 5295,
10007 .operands = &.{11151 .operands = &.{
10008 .{ .kind = .id_ref, .quantifier = .required },11152 .{ .kind = .id_ref, .quantifier = .required },
10009 .{ .kind = .id_ref, .quantifier = .required },11153 .{ .kind = .id_ref, .quantifier = .required },
10010 },11154 },
10011 },11155 },
10012 .{11156 .{
10013 .name = "OpHitObjectGetCurrentTimeNV",11157 .name = "OpGroupNonUniformPartitionEXT",
10014 .opcode = 5265,11158 .opcode = 5296,
10015 .operands = &.{11159 .operands = &.{
10016 .{ .kind = .id_result_type, .quantifier = .required },11160 .{ .kind = .id_result_type, .quantifier = .required },
10017 .{ .kind = .id_result, .quantifier = .required },11161 .{ .kind = .id_result, .quantifier = .required },
...@@ -10019,88 +11163,100 @@ pub const InstructionSet = enum {...@@ -10019,88 +11163,100 @@ pub const InstructionSet = enum {
10019 },11163 },
10020 },11164 },
10021 .{11165 .{
10022 .name = "OpHitObjectGetAttributesNV",11166 .name = "OpWritePackedPrimitiveIndices4x8NV",
10023 .opcode = 5266,11167 .opcode = 5299,
10024 .operands = &.{11168 .operands = &.{
10025 .{ .kind = .id_ref, .quantifier = .required },11169 .{ .kind = .id_ref, .quantifier = .required },
10026 .{ .kind = .id_ref, .quantifier = .required },11170 .{ .kind = .id_ref, .quantifier = .required },
10027 },11171 },
10028 },11172 },
10029 .{11173 .{
10030 .name = "OpHitObjectGetHitKindNV",11174 .name = "OpFetchMicroTriangleVertexPositionNV",
10031 .opcode = 5267,11175 .opcode = 5300,
10032 .operands = &.{11176 .operands = &.{
10033 .{ .kind = .id_result_type, .quantifier = .required },11177 .{ .kind = .id_result_type, .quantifier = .required },
10034 .{ .kind = .id_result, .quantifier = .required },11178 .{ .kind = .id_result, .quantifier = .required },
10035 .{ .kind = .id_ref, .quantifier = .required },11179 .{ .kind = .id_ref, .quantifier = .required },
10036 },11180 .{ .kind = .id_ref, .quantifier = .required },
10037 },11181 .{ .kind = .id_ref, .quantifier = .required },
10038 .{11182 .{ .kind = .id_ref, .quantifier = .required },
10039 .name = "OpHitObjectGetPrimitiveIndexNV",
10040 .opcode = 5268,
10041 .operands = &.{
10042 .{ .kind = .id_result_type, .quantifier = .required },
10043 .{ .kind = .id_result, .quantifier = .required },
10044 .{ .kind = .id_ref, .quantifier = .required },11183 .{ .kind = .id_ref, .quantifier = .required },
10045 },11184 },
10046 },11185 },
10047 .{11186 .{
10048 .name = "OpHitObjectGetGeometryIndexNV",11187 .name = "OpFetchMicroTriangleVertexBarycentricNV",
10049 .opcode = 5269,11188 .opcode = 5301,
10050 .operands = &.{11189 .operands = &.{
10051 .{ .kind = .id_result_type, .quantifier = .required },11190 .{ .kind = .id_result_type, .quantifier = .required },
10052 .{ .kind = .id_result, .quantifier = .required },11191 .{ .kind = .id_result, .quantifier = .required },
10053 .{ .kind = .id_ref, .quantifier = .required },11192 .{ .kind = .id_ref, .quantifier = .required },
11193 .{ .kind = .id_ref, .quantifier = .required },
11194 .{ .kind = .id_ref, .quantifier = .required },
11195 .{ .kind = .id_ref, .quantifier = .required },
11196 .{ .kind = .id_ref, .quantifier = .required },
10054 },11197 },
10055 },11198 },
10056 .{11199 .{
10057 .name = "OpHitObjectGetInstanceIdNV",11200 .name = "OpCooperativeVectorLoadNV",
10058 .opcode = 5270,11201 .opcode = 5302,
10059 .operands = &.{11202 .operands = &.{
10060 .{ .kind = .id_result_type, .quantifier = .required },11203 .{ .kind = .id_result_type, .quantifier = .required },
10061 .{ .kind = .id_result, .quantifier = .required },11204 .{ .kind = .id_result, .quantifier = .required },
10062 .{ .kind = .id_ref, .quantifier = .required },11205 .{ .kind = .id_ref, .quantifier = .required },
11206 .{ .kind = .id_ref, .quantifier = .required },
11207 .{ .kind = .memory_access, .quantifier = .optional },
10063 },11208 },
10064 },11209 },
10065 .{11210 .{
10066 .name = "OpHitObjectGetInstanceCustomIndexNV",11211 .name = "OpCooperativeVectorStoreNV",
10067 .opcode = 5271,11212 .opcode = 5303,
10068 .operands = &.{11213 .operands = &.{
10069 .{ .kind = .id_result_type, .quantifier = .required },
10070 .{ .kind = .id_result, .quantifier = .required },
10071 .{ .kind = .id_ref, .quantifier = .required },11214 .{ .kind = .id_ref, .quantifier = .required },
11215 .{ .kind = .id_ref, .quantifier = .required },
11216 .{ .kind = .id_ref, .quantifier = .required },
11217 .{ .kind = .memory_access, .quantifier = .optional },
10072 },11218 },
10073 },11219 },
10074 .{11220 .{
10075 .name = "OpHitObjectGetWorldRayDirectionNV",11221 .name = "OpHitObjectRecordFromQueryEXT",
10076 .opcode = 5272,11222 .opcode = 5304,
10077 .operands = &.{11223 .operands = &.{
10078 .{ .kind = .id_result_type, .quantifier = .required },11224 .{ .kind = .id_ref, .quantifier = .required },
10079 .{ .kind = .id_result, .quantifier = .required },11225 .{ .kind = .id_ref, .quantifier = .required },
11226 .{ .kind = .id_ref, .quantifier = .required },
10080 .{ .kind = .id_ref, .quantifier = .required },11227 .{ .kind = .id_ref, .quantifier = .required },
10081 },11228 },
10082 },11229 },
10083 .{11230 .{
10084 .name = "OpHitObjectGetWorldRayOriginNV",11231 .name = "OpHitObjectRecordMissEXT",
10085 .opcode = 5273,11232 .opcode = 5305,
10086 .operands = &.{11233 .operands = &.{
10087 .{ .kind = .id_result_type, .quantifier = .required },11234 .{ .kind = .id_ref, .quantifier = .required },
10088 .{ .kind = .id_result, .quantifier = .required },11235 .{ .kind = .id_ref, .quantifier = .required },
11236 .{ .kind = .id_ref, .quantifier = .required },
11237 .{ .kind = .id_ref, .quantifier = .required },
11238 .{ .kind = .id_ref, .quantifier = .required },
11239 .{ .kind = .id_ref, .quantifier = .required },
10089 .{ .kind = .id_ref, .quantifier = .required },11240 .{ .kind = .id_ref, .quantifier = .required },
10090 },11241 },
10091 },11242 },
10092 .{11243 .{
10093 .name = "OpHitObjectGetRayTMaxNV",11244 .name = "OpHitObjectRecordMissMotionEXT",
10094 .opcode = 5274,11245 .opcode = 5306,
10095 .operands = &.{11246 .operands = &.{
10096 .{ .kind = .id_result_type, .quantifier = .required },11247 .{ .kind = .id_ref, .quantifier = .required },
10097 .{ .kind = .id_result, .quantifier = .required },11248 .{ .kind = .id_ref, .quantifier = .required },
11249 .{ .kind = .id_ref, .quantifier = .required },
11250 .{ .kind = .id_ref, .quantifier = .required },
11251 .{ .kind = .id_ref, .quantifier = .required },
11252 .{ .kind = .id_ref, .quantifier = .required },
11253 .{ .kind = .id_ref, .quantifier = .required },
10098 .{ .kind = .id_ref, .quantifier = .required },11254 .{ .kind = .id_ref, .quantifier = .required },
10099 },11255 },
10100 },11256 },
10101 .{11257 .{
10102 .name = "OpHitObjectGetRayTMinNV",11258 .name = "OpHitObjectGetIntersectionTriangleVertexPositionsEXT",
10103 .opcode = 5275,11259 .opcode = 5307,
10104 .operands = &.{11260 .operands = &.{
10105 .{ .kind = .id_result_type, .quantifier = .required },11261 .{ .kind = .id_result_type, .quantifier = .required },
10106 .{ .kind = .id_result, .quantifier = .required },11262 .{ .kind = .id_result, .quantifier = .required },
...@@ -10108,8 +11264,8 @@ pub const InstructionSet = enum {...@@ -10108,8 +11264,8 @@ pub const InstructionSet = enum {
10108 },11264 },
10109 },11265 },
10110 .{11266 .{
10111 .name = "OpHitObjectIsEmptyNV",11267 .name = "OpHitObjectGetRayFlagsEXT",
10112 .opcode = 5276,11268 .opcode = 5308,
10113 .operands = &.{11269 .operands = &.{
10114 .{ .kind = .id_result_type, .quantifier = .required },11270 .{ .kind = .id_result_type, .quantifier = .required },
10115 .{ .kind = .id_result, .quantifier = .required },11271 .{ .kind = .id_result, .quantifier = .required },
...@@ -10117,75 +11273,92 @@ pub const InstructionSet = enum {...@@ -10117,75 +11273,92 @@ pub const InstructionSet = enum {
10117 },11273 },
10118 },11274 },
10119 .{11275 .{
10120 .name = "OpHitObjectIsHitNV",11276 .name = "OpHitObjectSetShaderBindingTableRecordIndexEXT",
10121 .opcode = 5277,11277 .opcode = 5309,
10122 .operands = &.{11278 .operands = &.{
10123 .{ .kind = .id_result_type, .quantifier = .required },11279 .{ .kind = .id_ref, .quantifier = .required },
10124 .{ .kind = .id_result, .quantifier = .required },
10125 .{ .kind = .id_ref, .quantifier = .required },11280 .{ .kind = .id_ref, .quantifier = .required },
10126 },11281 },
10127 },11282 },
10128 .{11283 .{
10129 .name = "OpHitObjectIsMissNV",11284 .name = "OpHitObjectReorderExecuteShaderEXT",
10130 .opcode = 5278,11285 .opcode = 5310,
10131 .operands = &.{11286 .operands = &.{
10132 .{ .kind = .id_result_type, .quantifier = .required },
10133 .{ .kind = .id_result, .quantifier = .required },
10134 .{ .kind = .id_ref, .quantifier = .required },11287 .{ .kind = .id_ref, .quantifier = .required },
11288 .{ .kind = .id_ref, .quantifier = .required },
11289 .{ .kind = .id_ref, .quantifier = .optional },
11290 .{ .kind = .id_ref, .quantifier = .optional },
10135 },11291 },
10136 },11292 },
10137 .{11293 .{
10138 .name = "OpReorderThreadWithHitObjectNV",11294 .name = "OpHitObjectTraceReorderExecuteEXT",
10139 .opcode = 5279,11295 .opcode = 5311,
10140 .operands = &.{11296 .operands = &.{
11297 .{ .kind = .id_ref, .quantifier = .required },
11298 .{ .kind = .id_ref, .quantifier = .required },
11299 .{ .kind = .id_ref, .quantifier = .required },
11300 .{ .kind = .id_ref, .quantifier = .required },
11301 .{ .kind = .id_ref, .quantifier = .required },
11302 .{ .kind = .id_ref, .quantifier = .required },
11303 .{ .kind = .id_ref, .quantifier = .required },
11304 .{ .kind = .id_ref, .quantifier = .required },
11305 .{ .kind = .id_ref, .quantifier = .required },
11306 .{ .kind = .id_ref, .quantifier = .required },
11307 .{ .kind = .id_ref, .quantifier = .required },
10141 .{ .kind = .id_ref, .quantifier = .required },11308 .{ .kind = .id_ref, .quantifier = .required },
10142 .{ .kind = .id_ref, .quantifier = .optional },11309 .{ .kind = .id_ref, .quantifier = .optional },
10143 .{ .kind = .id_ref, .quantifier = .optional },11310 .{ .kind = .id_ref, .quantifier = .optional },
10144 },11311 },
10145 },11312 },
10146 .{11313 .{
10147 .name = "OpReorderThreadWithHintNV",11314 .name = "OpHitObjectTraceMotionReorderExecuteEXT",
10148 .opcode = 5280,11315 .opcode = 5312,
10149 .operands = &.{11316 .operands = &.{
10150 .{ .kind = .id_ref, .quantifier = .required },11317 .{ .kind = .id_ref, .quantifier = .required },
10151 .{ .kind = .id_ref, .quantifier = .required },11318 .{ .kind = .id_ref, .quantifier = .required },
11319 .{ .kind = .id_ref, .quantifier = .required },
11320 .{ .kind = .id_ref, .quantifier = .required },
11321 .{ .kind = .id_ref, .quantifier = .required },
11322 .{ .kind = .id_ref, .quantifier = .required },
11323 .{ .kind = .id_ref, .quantifier = .required },
11324 .{ .kind = .id_ref, .quantifier = .required },
11325 .{ .kind = .id_ref, .quantifier = .required },
11326 .{ .kind = .id_ref, .quantifier = .required },
11327 .{ .kind = .id_ref, .quantifier = .required },
11328 .{ .kind = .id_ref, .quantifier = .required },
11329 .{ .kind = .id_ref, .quantifier = .required },
11330 .{ .kind = .id_ref, .quantifier = .optional },
11331 .{ .kind = .id_ref, .quantifier = .optional },
10152 },11332 },
10153 },11333 },
10154 .{11334 .{
10155 .name = "OpTypeHitObjectNV",11335 .name = "OpTypeHitObjectEXT",
10156 .opcode = 5281,11336 .opcode = 5313,
10157 .operands = &.{11337 .operands = &.{
10158 .{ .kind = .id_result, .quantifier = .required },11338 .{ .kind = .id_result, .quantifier = .required },
10159 },11339 },
10160 },11340 },
10161 .{11341 .{
10162 .name = "OpImageSampleFootprintNV",11342 .name = "OpReorderThreadWithHintEXT",
10163 .opcode = 5283,11343 .opcode = 5314,
10164 .operands = &.{11344 .operands = &.{
10165 .{ .kind = .id_result_type, .quantifier = .required },
10166 .{ .kind = .id_result, .quantifier = .required },
10167 .{ .kind = .id_ref, .quantifier = .required },
10168 .{ .kind = .id_ref, .quantifier = .required },
10169 .{ .kind = .id_ref, .quantifier = .required },11345 .{ .kind = .id_ref, .quantifier = .required },
10170 .{ .kind = .id_ref, .quantifier = .required },11346 .{ .kind = .id_ref, .quantifier = .required },
10171 .{ .kind = .image_operands, .quantifier = .optional },
10172 },11347 },
10173 },11348 },
10174 .{11349 .{
10175 .name = "OpTypeCooperativeVectorNV",11350 .name = "OpReorderThreadWithHitObjectEXT",
10176 .opcode = 5288,11351 .opcode = 5315,
10177 .operands = &.{11352 .operands = &.{
10178 .{ .kind = .id_result, .quantifier = .required },
10179 .{ .kind = .id_ref, .quantifier = .required },
10180 .{ .kind = .id_ref, .quantifier = .required },11353 .{ .kind = .id_ref, .quantifier = .required },
11354 .{ .kind = .id_ref, .quantifier = .optional },
11355 .{ .kind = .id_ref, .quantifier = .optional },
10181 },11356 },
10182 },11357 },
10183 .{11358 .{
10184 .name = "OpCooperativeVectorMatrixMulNV",11359 .name = "OpHitObjectTraceRayEXT",
10185 .opcode = 5289,11360 .opcode = 5316,
10186 .operands = &.{11361 .operands = &.{
10187 .{ .kind = .id_result_type, .quantifier = .required },
10188 .{ .kind = .id_result, .quantifier = .required },
10189 .{ .kind = .id_ref, .quantifier = .required },11362 .{ .kind = .id_ref, .quantifier = .required },
10190 .{ .kind = .id_ref, .quantifier = .required },11363 .{ .kind = .id_ref, .quantifier = .required },
10191 .{ .kind = .id_ref, .quantifier = .required },11364 .{ .kind = .id_ref, .quantifier = .required },
...@@ -10195,13 +11368,14 @@ pub const InstructionSet = enum {...@@ -10195,13 +11368,14 @@ pub const InstructionSet = enum {
10195 .{ .kind = .id_ref, .quantifier = .required },11368 .{ .kind = .id_ref, .quantifier = .required },
10196 .{ .kind = .id_ref, .quantifier = .required },11369 .{ .kind = .id_ref, .quantifier = .required },
10197 .{ .kind = .id_ref, .quantifier = .required },11370 .{ .kind = .id_ref, .quantifier = .required },
10198 .{ .kind = .id_ref, .quantifier = .optional },11371 .{ .kind = .id_ref, .quantifier = .required },
10199 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },11372 .{ .kind = .id_ref, .quantifier = .required },
11373 .{ .kind = .id_ref, .quantifier = .required },
10200 },11374 },
10201 },11375 },
10202 .{11376 .{
10203 .name = "OpCooperativeVectorOuterProductAccumulateNV",11377 .name = "OpHitObjectTraceRayMotionEXT",
10204 .opcode = 5290,11378 .opcode = 5317,
10205 .operands = &.{11379 .operands = &.{
10206 .{ .kind = .id_ref, .quantifier = .required },11380 .{ .kind = .id_ref, .quantifier = .required },
10207 .{ .kind = .id_ref, .quantifier = .required },11381 .{ .kind = .id_ref, .quantifier = .required },
...@@ -10209,43 +11383,50 @@ pub const InstructionSet = enum {...@@ -10209,43 +11383,50 @@ pub const InstructionSet = enum {
10209 .{ .kind = .id_ref, .quantifier = .required },11383 .{ .kind = .id_ref, .quantifier = .required },
10210 .{ .kind = .id_ref, .quantifier = .required },11384 .{ .kind = .id_ref, .quantifier = .required },
10211 .{ .kind = .id_ref, .quantifier = .required },11385 .{ .kind = .id_ref, .quantifier = .required },
10212 .{ .kind = .id_ref, .quantifier = .optional },11386 .{ .kind = .id_ref, .quantifier = .required },
11387 .{ .kind = .id_ref, .quantifier = .required },
11388 .{ .kind = .id_ref, .quantifier = .required },
11389 .{ .kind = .id_ref, .quantifier = .required },
11390 .{ .kind = .id_ref, .quantifier = .required },
11391 .{ .kind = .id_ref, .quantifier = .required },
11392 .{ .kind = .id_ref, .quantifier = .required },
10213 },11393 },
10214 },11394 },
10215 .{11395 .{
10216 .name = "OpCooperativeVectorReduceSumAccumulateNV",11396 .name = "OpHitObjectRecordEmptyEXT",
10217 .opcode = 5291,11397 .opcode = 5318,
10218 .operands = &.{11398 .operands = &.{
10219 .{ .kind = .id_ref, .quantifier = .required },11399 .{ .kind = .id_ref, .quantifier = .required },
11400 },
11401 },
11402 .{
11403 .name = "OpHitObjectExecuteShaderEXT",
11404 .opcode = 5319,
11405 .operands = &.{
10220 .{ .kind = .id_ref, .quantifier = .required },11406 .{ .kind = .id_ref, .quantifier = .required },
10221 .{ .kind = .id_ref, .quantifier = .required },11407 .{ .kind = .id_ref, .quantifier = .required },
10222 },11408 },
10223 },11409 },
10224 .{11410 .{
10225 .name = "OpCooperativeVectorMatrixMulAddNV",11411 .name = "OpHitObjectGetCurrentTimeEXT",
10226 .opcode = 5292,11412 .opcode = 5320,
10227 .operands = &.{11413 .operands = &.{
10228 .{ .kind = .id_result_type, .quantifier = .required },11414 .{ .kind = .id_result_type, .quantifier = .required },
10229 .{ .kind = .id_result, .quantifier = .required },11415 .{ .kind = .id_result, .quantifier = .required },
10230 .{ .kind = .id_ref, .quantifier = .required },11416 .{ .kind = .id_ref, .quantifier = .required },
11417 },
11418 },
11419 .{
11420 .name = "OpHitObjectGetAttributesEXT",
11421 .opcode = 5321,
11422 .operands = &.{
10231 .{ .kind = .id_ref, .quantifier = .required },11423 .{ .kind = .id_ref, .quantifier = .required },
10232 .{ .kind = .id_ref, .quantifier = .required },11424 .{ .kind = .id_ref, .quantifier = .required },
10233 .{ .kind = .id_ref, .quantifier = .required },
10234 .{ .kind = .id_ref, .quantifier = .required },
10235 .{ .kind = .id_ref, .quantifier = .required },
10236 .{ .kind = .id_ref, .quantifier = .required },
10237 .{ .kind = .id_ref, .quantifier = .required },
10238 .{ .kind = .id_ref, .quantifier = .required },
10239 .{ .kind = .id_ref, .quantifier = .required },
10240 .{ .kind = .id_ref, .quantifier = .required },
10241 .{ .kind = .id_ref, .quantifier = .required },
10242 .{ .kind = .id_ref, .quantifier = .optional },
10243 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
10244 },11425 },
10245 },11426 },
10246 .{11427 .{
10247 .name = "OpCooperativeMatrixConvertNV",11428 .name = "OpHitObjectGetHitKindEXT",
10248 .opcode = 5293,11429 .opcode = 5322,
10249 .operands = &.{11430 .operands = &.{
10250 .{ .kind = .id_result_type, .quantifier = .required },11431 .{ .kind = .id_result_type, .quantifier = .required },
10251 .{ .kind = .id_result, .quantifier = .required },11432 .{ .kind = .id_result, .quantifier = .required },
...@@ -10253,26 +11434,26 @@ pub const InstructionSet = enum {...@@ -10253,26 +11434,26 @@ pub const InstructionSet = enum {
10253 },11434 },
10254 },11435 },
10255 .{11436 .{
10256 .name = "OpEmitMeshTasksEXT",11437 .name = "OpHitObjectGetPrimitiveIndexEXT",
10257 .opcode = 5294,11438 .opcode = 5323,
10258 .operands = &.{11439 .operands = &.{
11440 .{ .kind = .id_result_type, .quantifier = .required },
11441 .{ .kind = .id_result, .quantifier = .required },
10259 .{ .kind = .id_ref, .quantifier = .required },11442 .{ .kind = .id_ref, .quantifier = .required },
10260 .{ .kind = .id_ref, .quantifier = .required },
10261 .{ .kind = .id_ref, .quantifier = .required },
10262 .{ .kind = .id_ref, .quantifier = .optional },
10263 },11443 },
10264 },11444 },
10265 .{11445 .{
10266 .name = "OpSetMeshOutputsEXT",11446 .name = "OpHitObjectGetGeometryIndexEXT",
10267 .opcode = 5295,11447 .opcode = 5324,
10268 .operands = &.{11448 .operands = &.{
10269 .{ .kind = .id_ref, .quantifier = .required },11449 .{ .kind = .id_result_type, .quantifier = .required },
11450 .{ .kind = .id_result, .quantifier = .required },
10270 .{ .kind = .id_ref, .quantifier = .required },11451 .{ .kind = .id_ref, .quantifier = .required },
10271 },11452 },
10272 },11453 },
10273 .{11454 .{
10274 .name = "OpGroupNonUniformPartitionNV",11455 .name = "OpHitObjectGetInstanceIdEXT",
10275 .opcode = 5296,11456 .opcode = 5325,
10276 .operands = &.{11457 .operands = &.{
10277 .{ .kind = .id_result_type, .quantifier = .required },11458 .{ .kind = .id_result_type, .quantifier = .required },
10278 .{ .kind = .id_result, .quantifier = .required },11459 .{ .kind = .id_result, .quantifier = .required },
...@@ -10280,58 +11461,75 @@ pub const InstructionSet = enum {...@@ -10280,58 +11461,75 @@ pub const InstructionSet = enum {
10280 },11461 },
10281 },11462 },
10282 .{11463 .{
10283 .name = "OpWritePackedPrimitiveIndices4x8NV",11464 .name = "OpHitObjectGetInstanceCustomIndexEXT",
10284 .opcode = 5299,11465 .opcode = 5326,
10285 .operands = &.{11466 .operands = &.{
10286 .{ .kind = .id_ref, .quantifier = .required },11467 .{ .kind = .id_result_type, .quantifier = .required },
11468 .{ .kind = .id_result, .quantifier = .required },
10287 .{ .kind = .id_ref, .quantifier = .required },11469 .{ .kind = .id_ref, .quantifier = .required },
10288 },11470 },
10289 },11471 },
10290 .{11472 .{
10291 .name = "OpFetchMicroTriangleVertexPositionNV",11473 .name = "OpHitObjectGetObjectRayOriginEXT",
10292 .opcode = 5300,11474 .opcode = 5327,
10293 .operands = &.{11475 .operands = &.{
10294 .{ .kind = .id_result_type, .quantifier = .required },11476 .{ .kind = .id_result_type, .quantifier = .required },
10295 .{ .kind = .id_result, .quantifier = .required },11477 .{ .kind = .id_result, .quantifier = .required },
10296 .{ .kind = .id_ref, .quantifier = .required },11478 .{ .kind = .id_ref, .quantifier = .required },
10297 .{ .kind = .id_ref, .quantifier = .required },
10298 .{ .kind = .id_ref, .quantifier = .required },
10299 .{ .kind = .id_ref, .quantifier = .required },
10300 .{ .kind = .id_ref, .quantifier = .required },
10301 },11479 },
10302 },11480 },
10303 .{11481 .{
10304 .name = "OpFetchMicroTriangleVertexBarycentricNV",11482 .name = "OpHitObjectGetObjectRayDirectionEXT",
10305 .opcode = 5301,11483 .opcode = 5328,
10306 .operands = &.{11484 .operands = &.{
10307 .{ .kind = .id_result_type, .quantifier = .required },11485 .{ .kind = .id_result_type, .quantifier = .required },
10308 .{ .kind = .id_result, .quantifier = .required },11486 .{ .kind = .id_result, .quantifier = .required },
10309 .{ .kind = .id_ref, .quantifier = .required },11487 .{ .kind = .id_ref, .quantifier = .required },
10310 .{ .kind = .id_ref, .quantifier = .required },
10311 .{ .kind = .id_ref, .quantifier = .required },
10312 .{ .kind = .id_ref, .quantifier = .required },
10313 .{ .kind = .id_ref, .quantifier = .required },
10314 },11488 },
10315 },11489 },
10316 .{11490 .{
10317 .name = "OpCooperativeVectorLoadNV",11491 .name = "OpHitObjectGetWorldRayDirectionEXT",
10318 .opcode = 5302,11492 .opcode = 5329,
10319 .operands = &.{11493 .operands = &.{
10320 .{ .kind = .id_result_type, .quantifier = .required },11494 .{ .kind = .id_result_type, .quantifier = .required },
10321 .{ .kind = .id_result, .quantifier = .required },11495 .{ .kind = .id_result, .quantifier = .required },
10322 .{ .kind = .id_ref, .quantifier = .required },11496 .{ .kind = .id_ref, .quantifier = .required },
11497 },
11498 },
11499 .{
11500 .name = "OpHitObjectGetWorldRayOriginEXT",
11501 .opcode = 5330,
11502 .operands = &.{
11503 .{ .kind = .id_result_type, .quantifier = .required },
11504 .{ .kind = .id_result, .quantifier = .required },
10323 .{ .kind = .id_ref, .quantifier = .required },11505 .{ .kind = .id_ref, .quantifier = .required },
10324 .{ .kind = .memory_access, .quantifier = .optional },
10325 },11506 },
10326 },11507 },
10327 .{11508 .{
10328 .name = "OpCooperativeVectorStoreNV",11509 .name = "OpHitObjectGetObjectToWorldEXT",
10329 .opcode = 5303,11510 .opcode = 5331,
10330 .operands = &.{11511 .operands = &.{
11512 .{ .kind = .id_result_type, .quantifier = .required },
11513 .{ .kind = .id_result, .quantifier = .required },
10331 .{ .kind = .id_ref, .quantifier = .required },11514 .{ .kind = .id_ref, .quantifier = .required },
11515 },
11516 },
11517 .{
11518 .name = "OpHitObjectGetWorldToObjectEXT",
11519 .opcode = 5332,
11520 .operands = &.{
11521 .{ .kind = .id_result_type, .quantifier = .required },
11522 .{ .kind = .id_result, .quantifier = .required },
10332 .{ .kind = .id_ref, .quantifier = .required },11523 .{ .kind = .id_ref, .quantifier = .required },
11524 },
11525 },
11526 .{
11527 .name = "OpHitObjectGetRayTMaxEXT",
11528 .opcode = 5333,
11529 .operands = &.{
11530 .{ .kind = .id_result_type, .quantifier = .required },
11531 .{ .kind = .id_result, .quantifier = .required },
10333 .{ .kind = .id_ref, .quantifier = .required },11532 .{ .kind = .id_ref, .quantifier = .required },
10334 .{ .kind = .memory_access, .quantifier = .optional },
10335 },11533 },
10336 },11534 },
10337 .{11535 .{
...@@ -10433,7 +11631,7 @@ pub const InstructionSet = enum {...@@ -10433,7 +11631,7 @@ pub const InstructionSet = enum {
10433 },11631 },
10434 },11632 },
10435 .{11633 .{
10436 .name = "OpRayQueryGetClusterIdNV",11634 .name = "OpRayQueryGetIntersectionClusterIdNV",
10437 .opcode = 5345,11635 .opcode = 5345,
10438 .operands = &.{11636 .operands = &.{
10439 .{ .kind = .id_result_type, .quantifier = .required },11637 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -10451,6 +11649,60 @@ pub const InstructionSet = enum {...@@ -10451,6 +11649,60 @@ pub const InstructionSet = enum {
10451 .{ .kind = .id_ref, .quantifier = .required },11649 .{ .kind = .id_ref, .quantifier = .required },
10452 },11650 },
10453 },11651 },
11652 .{
11653 .name = "OpHitObjectGetRayTMinEXT",
11654 .opcode = 5347,
11655 .operands = &.{
11656 .{ .kind = .id_result_type, .quantifier = .required },
11657 .{ .kind = .id_result, .quantifier = .required },
11658 .{ .kind = .id_ref, .quantifier = .required },
11659 },
11660 },
11661 .{
11662 .name = "OpHitObjectGetShaderBindingTableRecordIndexEXT",
11663 .opcode = 5348,
11664 .operands = &.{
11665 .{ .kind = .id_result_type, .quantifier = .required },
11666 .{ .kind = .id_result, .quantifier = .required },
11667 .{ .kind = .id_ref, .quantifier = .required },
11668 },
11669 },
11670 .{
11671 .name = "OpHitObjectGetShaderRecordBufferHandleEXT",
11672 .opcode = 5349,
11673 .operands = &.{
11674 .{ .kind = .id_result_type, .quantifier = .required },
11675 .{ .kind = .id_result, .quantifier = .required },
11676 .{ .kind = .id_ref, .quantifier = .required },
11677 },
11678 },
11679 .{
11680 .name = "OpHitObjectIsEmptyEXT",
11681 .opcode = 5350,
11682 .operands = &.{
11683 .{ .kind = .id_result_type, .quantifier = .required },
11684 .{ .kind = .id_result, .quantifier = .required },
11685 .{ .kind = .id_ref, .quantifier = .required },
11686 },
11687 },
11688 .{
11689 .name = "OpHitObjectIsHitEXT",
11690 .opcode = 5351,
11691 .operands = &.{
11692 .{ .kind = .id_result_type, .quantifier = .required },
11693 .{ .kind = .id_result, .quantifier = .required },
11694 .{ .kind = .id_ref, .quantifier = .required },
11695 },
11696 },
11697 .{
11698 .name = "OpHitObjectIsMissEXT",
11699 .opcode = 5352,
11700 .operands = &.{
11701 .{ .kind = .id_result_type, .quantifier = .required },
11702 .{ .kind = .id_result, .quantifier = .required },
11703 .{ .kind = .id_ref, .quantifier = .required },
11704 },
11705 },
10454 .{11706 .{
10455 .name = "OpTypeCooperativeMatrixNV",11707 .name = "OpTypeCooperativeMatrixNV",
10456 .opcode = 5358,11708 .opcode = 5358,
...@@ -12432,7 +13684,7 @@ pub const InstructionSet = enum {...@@ -12432,7 +13684,7 @@ pub const InstructionSet = enum {
12432 },13684 },
12433 },13685 },
12434 .{13686 .{
12435 .name = "OpArbitraryFloatSinCosPiINTEL",13687 .name = "OpArbitraryFloatSinCosPiALTERA",
12436 .opcode = 5840,13688 .opcode = 5840,
12437 .operands = &.{13689 .operands = &.{
12438 .{ .kind = .id_result_type, .quantifier = .required },13690 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12446,7 +13698,7 @@ pub const InstructionSet = enum {...@@ -12446,7 +13698,7 @@ pub const InstructionSet = enum {
12446 },13698 },
12447 },13699 },
12448 .{13700 .{
12449 .name = "OpArbitraryFloatCastINTEL",13701 .name = "OpArbitraryFloatCastALTERA",
12450 .opcode = 5841,13702 .opcode = 5841,
12451 .operands = &.{13703 .operands = &.{
12452 .{ .kind = .id_result_type, .quantifier = .required },13704 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12460,7 +13712,7 @@ pub const InstructionSet = enum {...@@ -12460,7 +13712,7 @@ pub const InstructionSet = enum {
12460 },13712 },
12461 },13713 },
12462 .{13714 .{
12463 .name = "OpArbitraryFloatCastFromIntINTEL",13715 .name = "OpArbitraryFloatCastFromIntALTERA",
12464 .opcode = 5842,13716 .opcode = 5842,
12465 .operands = &.{13717 .operands = &.{
12466 .{ .kind = .id_result_type, .quantifier = .required },13718 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12474,7 +13726,7 @@ pub const InstructionSet = enum {...@@ -12474,7 +13726,7 @@ pub const InstructionSet = enum {
12474 },13726 },
12475 },13727 },
12476 .{13728 .{
12477 .name = "OpArbitraryFloatCastToIntINTEL",13729 .name = "OpArbitraryFloatCastToIntALTERA",
12478 .opcode = 5843,13730 .opcode = 5843,
12479 .operands = &.{13731 .operands = &.{
12480 .{ .kind = .id_result_type, .quantifier = .required },13732 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12488,7 +13740,7 @@ pub const InstructionSet = enum {...@@ -12488,7 +13740,7 @@ pub const InstructionSet = enum {
12488 },13740 },
12489 },13741 },
12490 .{13742 .{
12491 .name = "OpArbitraryFloatAddINTEL",13743 .name = "OpArbitraryFloatAddALTERA",
12492 .opcode = 5846,13744 .opcode = 5846,
12493 .operands = &.{13745 .operands = &.{
12494 .{ .kind = .id_result_type, .quantifier = .required },13746 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12504,7 +13756,7 @@ pub const InstructionSet = enum {...@@ -12504,7 +13756,7 @@ pub const InstructionSet = enum {
12504 },13756 },
12505 },13757 },
12506 .{13758 .{
12507 .name = "OpArbitraryFloatSubINTEL",13759 .name = "OpArbitraryFloatSubALTERA",
12508 .opcode = 5847,13760 .opcode = 5847,
12509 .operands = &.{13761 .operands = &.{
12510 .{ .kind = .id_result_type, .quantifier = .required },13762 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12520,7 +13772,7 @@ pub const InstructionSet = enum {...@@ -12520,7 +13772,7 @@ pub const InstructionSet = enum {
12520 },13772 },
12521 },13773 },
12522 .{13774 .{
12523 .name = "OpArbitraryFloatMulINTEL",13775 .name = "OpArbitraryFloatMulALTERA",
12524 .opcode = 5848,13776 .opcode = 5848,
12525 .operands = &.{13777 .operands = &.{
12526 .{ .kind = .id_result_type, .quantifier = .required },13778 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12536,7 +13788,7 @@ pub const InstructionSet = enum {...@@ -12536,7 +13788,7 @@ pub const InstructionSet = enum {
12536 },13788 },
12537 },13789 },
12538 .{13790 .{
12539 .name = "OpArbitraryFloatDivINTEL",13791 .name = "OpArbitraryFloatDivALTERA",
12540 .opcode = 5849,13792 .opcode = 5849,
12541 .operands = &.{13793 .operands = &.{
12542 .{ .kind = .id_result_type, .quantifier = .required },13794 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12552,7 +13804,7 @@ pub const InstructionSet = enum {...@@ -12552,7 +13804,7 @@ pub const InstructionSet = enum {
12552 },13804 },
12553 },13805 },
12554 .{13806 .{
12555 .name = "OpArbitraryFloatGTINTEL",13807 .name = "OpArbitraryFloatGTALTERA",
12556 .opcode = 5850,13808 .opcode = 5850,
12557 .operands = &.{13809 .operands = &.{
12558 .{ .kind = .id_result_type, .quantifier = .required },13810 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12564,7 +13816,7 @@ pub const InstructionSet = enum {...@@ -12564,7 +13816,7 @@ pub const InstructionSet = enum {
12564 },13816 },
12565 },13817 },
12566 .{13818 .{
12567 .name = "OpArbitraryFloatGEINTEL",13819 .name = "OpArbitraryFloatGEALTERA",
12568 .opcode = 5851,13820 .opcode = 5851,
12569 .operands = &.{13821 .operands = &.{
12570 .{ .kind = .id_result_type, .quantifier = .required },13822 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12576,7 +13828,7 @@ pub const InstructionSet = enum {...@@ -12576,7 +13828,7 @@ pub const InstructionSet = enum {
12576 },13828 },
12577 },13829 },
12578 .{13830 .{
12579 .name = "OpArbitraryFloatLTINTEL",13831 .name = "OpArbitraryFloatLTALTERA",
12580 .opcode = 5852,13832 .opcode = 5852,
12581 .operands = &.{13833 .operands = &.{
12582 .{ .kind = .id_result_type, .quantifier = .required },13834 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12588,7 +13840,7 @@ pub const InstructionSet = enum {...@@ -12588,7 +13840,7 @@ pub const InstructionSet = enum {
12588 },13840 },
12589 },13841 },
12590 .{13842 .{
12591 .name = "OpArbitraryFloatLEINTEL",13843 .name = "OpArbitraryFloatLEALTERA",
12592 .opcode = 5853,13844 .opcode = 5853,
12593 .operands = &.{13845 .operands = &.{
12594 .{ .kind = .id_result_type, .quantifier = .required },13846 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12600,7 +13852,7 @@ pub const InstructionSet = enum {...@@ -12600,7 +13852,7 @@ pub const InstructionSet = enum {
12600 },13852 },
12601 },13853 },
12602 .{13854 .{
12603 .name = "OpArbitraryFloatEQINTEL",13855 .name = "OpArbitraryFloatEQALTERA",
12604 .opcode = 5854,13856 .opcode = 5854,
12605 .operands = &.{13857 .operands = &.{
12606 .{ .kind = .id_result_type, .quantifier = .required },13858 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12612,7 +13864,7 @@ pub const InstructionSet = enum {...@@ -12612,7 +13864,7 @@ pub const InstructionSet = enum {
12612 },13864 },
12613 },13865 },
12614 .{13866 .{
12615 .name = "OpArbitraryFloatRecipINTEL",13867 .name = "OpArbitraryFloatRecipALTERA",
12616 .opcode = 5855,13868 .opcode = 5855,
12617 .operands = &.{13869 .operands = &.{
12618 .{ .kind = .id_result_type, .quantifier = .required },13870 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12626,7 +13878,7 @@ pub const InstructionSet = enum {...@@ -12626,7 +13878,7 @@ pub const InstructionSet = enum {
12626 },13878 },
12627 },13879 },
12628 .{13880 .{
12629 .name = "OpArbitraryFloatRSqrtINTEL",13881 .name = "OpArbitraryFloatRSqrtALTERA",
12630 .opcode = 5856,13882 .opcode = 5856,
12631 .operands = &.{13883 .operands = &.{
12632 .{ .kind = .id_result_type, .quantifier = .required },13884 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12640,7 +13892,7 @@ pub const InstructionSet = enum {...@@ -12640,7 +13892,7 @@ pub const InstructionSet = enum {
12640 },13892 },
12641 },13893 },
12642 .{13894 .{
12643 .name = "OpArbitraryFloatCbrtINTEL",13895 .name = "OpArbitraryFloatCbrtALTERA",
12644 .opcode = 5857,13896 .opcode = 5857,
12645 .operands = &.{13897 .operands = &.{
12646 .{ .kind = .id_result_type, .quantifier = .required },13898 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12654,7 +13906,7 @@ pub const InstructionSet = enum {...@@ -12654,7 +13906,7 @@ pub const InstructionSet = enum {
12654 },13906 },
12655 },13907 },
12656 .{13908 .{
12657 .name = "OpArbitraryFloatHypotINTEL",13909 .name = "OpArbitraryFloatHypotALTERA",
12658 .opcode = 5858,13910 .opcode = 5858,
12659 .operands = &.{13911 .operands = &.{
12660 .{ .kind = .id_result_type, .quantifier = .required },13912 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -12670,7 +13922,7 @@ pub const InstructionSet = enum {...@@ -12670,7 +13922,7 @@ pub const InstructionSet = enum {
12670 },13922 },
12671 },13923 },
12672 .{13924 .{
12673 .name = "OpArbitraryFloatSqrtINTEL",13925 .name = "OpArbitraryFloatSqrtALTERA",
12674 .opcode = 5859,13926 .opcode = 5859,
12675 .operands = &.{13927 .operands = &.{
12676 .{ .kind = .id_result_type, .quantifier = .required },13928 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13046,7 +14298,7 @@ pub const InstructionSet = enum {...@@ -13046,7 +14298,7 @@ pub const InstructionSet = enum {
13046 },14298 },
13047 },14299 },
13048 .{14300 .{
13049 .name = "OpFixedSqrtINTEL",14301 .name = "OpFixedSqrtALTERA",
13050 .opcode = 5923,14302 .opcode = 5923,
13051 .operands = &.{14303 .operands = &.{
13052 .{ .kind = .id_result_type, .quantifier = .required },14304 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13060,7 +14312,7 @@ pub const InstructionSet = enum {...@@ -13060,7 +14312,7 @@ pub const InstructionSet = enum {
13060 },14312 },
13061 },14313 },
13062 .{14314 .{
13063 .name = "OpFixedRecipINTEL",14315 .name = "OpFixedRecipALTERA",
13064 .opcode = 5924,14316 .opcode = 5924,
13065 .operands = &.{14317 .operands = &.{
13066 .{ .kind = .id_result_type, .quantifier = .required },14318 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13074,7 +14326,7 @@ pub const InstructionSet = enum {...@@ -13074,7 +14326,7 @@ pub const InstructionSet = enum {
13074 },14326 },
13075 },14327 },
13076 .{14328 .{
13077 .name = "OpFixedRsqrtINTEL",14329 .name = "OpFixedRsqrtALTERA",
13078 .opcode = 5925,14330 .opcode = 5925,
13079 .operands = &.{14331 .operands = &.{
13080 .{ .kind = .id_result_type, .quantifier = .required },14332 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13088,7 +14340,7 @@ pub const InstructionSet = enum {...@@ -13088,7 +14340,7 @@ pub const InstructionSet = enum {
13088 },14340 },
13089 },14341 },
13090 .{14342 .{
13091 .name = "OpFixedSinINTEL",14343 .name = "OpFixedSinALTERA",
13092 .opcode = 5926,14344 .opcode = 5926,
13093 .operands = &.{14345 .operands = &.{
13094 .{ .kind = .id_result_type, .quantifier = .required },14346 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13102,7 +14354,7 @@ pub const InstructionSet = enum {...@@ -13102,7 +14354,7 @@ pub const InstructionSet = enum {
13102 },14354 },
13103 },14355 },
13104 .{14356 .{
13105 .name = "OpFixedCosINTEL",14357 .name = "OpFixedCosALTERA",
13106 .opcode = 5927,14358 .opcode = 5927,
13107 .operands = &.{14359 .operands = &.{
13108 .{ .kind = .id_result_type, .quantifier = .required },14360 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13116,7 +14368,7 @@ pub const InstructionSet = enum {...@@ -13116,7 +14368,7 @@ pub const InstructionSet = enum {
13116 },14368 },
13117 },14369 },
13118 .{14370 .{
13119 .name = "OpFixedSinCosINTEL",14371 .name = "OpFixedSinCosALTERA",
13120 .opcode = 5928,14372 .opcode = 5928,
13121 .operands = &.{14373 .operands = &.{
13122 .{ .kind = .id_result_type, .quantifier = .required },14374 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13130,7 +14382,7 @@ pub const InstructionSet = enum {...@@ -13130,7 +14382,7 @@ pub const InstructionSet = enum {
13130 },14382 },
13131 },14383 },
13132 .{14384 .{
13133 .name = "OpFixedSinPiINTEL",14385 .name = "OpFixedSinPiALTERA",
13134 .opcode = 5929,14386 .opcode = 5929,
13135 .operands = &.{14387 .operands = &.{
13136 .{ .kind = .id_result_type, .quantifier = .required },14388 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13144,7 +14396,7 @@ pub const InstructionSet = enum {...@@ -13144,7 +14396,7 @@ pub const InstructionSet = enum {
13144 },14396 },
13145 },14397 },
13146 .{14398 .{
13147 .name = "OpFixedCosPiINTEL",14399 .name = "OpFixedCosPiALTERA",
13148 .opcode = 5930,14400 .opcode = 5930,
13149 .operands = &.{14401 .operands = &.{
13150 .{ .kind = .id_result_type, .quantifier = .required },14402 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13158,7 +14410,7 @@ pub const InstructionSet = enum {...@@ -13158,7 +14410,7 @@ pub const InstructionSet = enum {
13158 },14410 },
13159 },14411 },
13160 .{14412 .{
13161 .name = "OpFixedSinCosPiINTEL",14413 .name = "OpFixedSinCosPiALTERA",
13162 .opcode = 5931,14414 .opcode = 5931,
13163 .operands = &.{14415 .operands = &.{
13164 .{ .kind = .id_result_type, .quantifier = .required },14416 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13172,7 +14424,7 @@ pub const InstructionSet = enum {...@@ -13172,7 +14424,7 @@ pub const InstructionSet = enum {
13172 },14424 },
13173 },14425 },
13174 .{14426 .{
13175 .name = "OpFixedLogINTEL",14427 .name = "OpFixedLogALTERA",
13176 .opcode = 5932,14428 .opcode = 5932,
13177 .operands = &.{14429 .operands = &.{
13178 .{ .kind = .id_result_type, .quantifier = .required },14430 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13186,7 +14438,7 @@ pub const InstructionSet = enum {...@@ -13186,7 +14438,7 @@ pub const InstructionSet = enum {
13186 },14438 },
13187 },14439 },
13188 .{14440 .{
13189 .name = "OpFixedExpINTEL",14441 .name = "OpFixedExpALTERA",
13190 .opcode = 5933,14442 .opcode = 5933,
13191 .operands = &.{14443 .operands = &.{
13192 .{ .kind = .id_result_type, .quantifier = .required },14444 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13200,7 +14452,7 @@ pub const InstructionSet = enum {...@@ -13200,7 +14452,7 @@ pub const InstructionSet = enum {
13200 },14452 },
13201 },14453 },
13202 .{14454 .{
13203 .name = "OpPtrCastToCrossWorkgroupINTEL",14455 .name = "OpPtrCastToCrossWorkgroupALTERA",
13204 .opcode = 5934,14456 .opcode = 5934,
13205 .operands = &.{14457 .operands = &.{
13206 .{ .kind = .id_result_type, .quantifier = .required },14458 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13209,7 +14461,7 @@ pub const InstructionSet = enum {...@@ -13209,7 +14461,7 @@ pub const InstructionSet = enum {
13209 },14461 },
13210 },14462 },
13211 .{14463 .{
13212 .name = "OpCrossWorkgroupCastToPtrINTEL",14464 .name = "OpCrossWorkgroupCastToPtrALTERA",
13213 .opcode = 5938,14465 .opcode = 5938,
13214 .operands = &.{14466 .operands = &.{
13215 .{ .kind = .id_result_type, .quantifier = .required },14467 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13218,7 +14470,7 @@ pub const InstructionSet = enum {...@@ -13218,7 +14470,7 @@ pub const InstructionSet = enum {
13218 },14470 },
13219 },14471 },
13220 .{14472 .{
13221 .name = "OpReadPipeBlockingINTEL",14473 .name = "OpReadPipeBlockingALTERA",
13222 .opcode = 5946,14474 .opcode = 5946,
13223 .operands = &.{14475 .operands = &.{
13224 .{ .kind = .id_result_type, .quantifier = .required },14476 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13228,7 +14480,7 @@ pub const InstructionSet = enum {...@@ -13228,7 +14480,7 @@ pub const InstructionSet = enum {
13228 },14480 },
13229 },14481 },
13230 .{14482 .{
13231 .name = "OpWritePipeBlockingINTEL",14483 .name = "OpWritePipeBlockingALTERA",
13232 .opcode = 5947,14484 .opcode = 5947,
13233 .operands = &.{14485 .operands = &.{
13234 .{ .kind = .id_result_type, .quantifier = .required },14486 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13238,7 +14490,7 @@ pub const InstructionSet = enum {...@@ -13238,7 +14490,7 @@ pub const InstructionSet = enum {
13238 },14490 },
13239 },14491 },
13240 .{14492 .{
13241 .name = "OpFPGARegINTEL",14493 .name = "OpFPGARegALTERA",
13242 .opcode = 5949,14494 .opcode = 5949,
13243 .operands = &.{14495 .operands = &.{
13244 .{ .kind = .id_result_type, .quantifier = .required },14496 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13507,7 +14759,7 @@ pub const InstructionSet = enum {...@@ -13507,7 +14759,7 @@ pub const InstructionSet = enum {
13507 },14759 },
13508 },14760 },
13509 .{14761 .{
13510 .name = "OpTaskSequenceCreateINTEL",14762 .name = "OpTaskSequenceCreateALTERA",
13511 .opcode = 6163,14763 .opcode = 6163,
13512 .operands = &.{14764 .operands = &.{
13513 .{ .kind = .id_result_type, .quantifier = .required },14765 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13520,7 +14772,7 @@ pub const InstructionSet = enum {...@@ -13520,7 +14772,7 @@ pub const InstructionSet = enum {
13520 },14772 },
13521 },14773 },
13522 .{14774 .{
13523 .name = "OpTaskSequenceAsyncINTEL",14775 .name = "OpTaskSequenceAsyncALTERA",
13524 .opcode = 6164,14776 .opcode = 6164,
13525 .operands = &.{14777 .operands = &.{
13526 .{ .kind = .id_ref, .quantifier = .required },14778 .{ .kind = .id_ref, .quantifier = .required },
...@@ -13528,7 +14780,7 @@ pub const InstructionSet = enum {...@@ -13528,7 +14780,7 @@ pub const InstructionSet = enum {
13528 },14780 },
13529 },14781 },
13530 .{14782 .{
13531 .name = "OpTaskSequenceGetINTEL",14783 .name = "OpTaskSequenceGetALTERA",
13532 .opcode = 6165,14784 .opcode = 6165,
13533 .operands = &.{14785 .operands = &.{
13534 .{ .kind = .id_result_type, .quantifier = .required },14786 .{ .kind = .id_result_type, .quantifier = .required },
...@@ -13537,14 +14789,14 @@ pub const InstructionSet = enum {...@@ -13537,14 +14789,14 @@ pub const InstructionSet = enum {
13537 },14789 },
13538 },14790 },
13539 .{14791 .{
13540 .name = "OpTaskSequenceReleaseINTEL",14792 .name = "OpTaskSequenceReleaseALTERA",
13541 .opcode = 6166,14793 .opcode = 6166,
13542 .operands = &.{14794 .operands = &.{
13543 .{ .kind = .id_ref, .quantifier = .required },14795 .{ .kind = .id_ref, .quantifier = .required },
13544 },14796 },
13545 },14797 },
13546 .{14798 .{
13547 .name = "OpTypeTaskSequenceINTEL",14799 .name = "OpTypeTaskSequenceALTERA",
13548 .opcode = 6199,14800 .opcode = 6199,
13549 .operands = &.{14801 .operands = &.{
13550 .{ .kind = .id_result, .quantifier = .required },14802 .{ .kind = .id_result, .quantifier = .required },
...@@ -13663,6 +14915,83 @@ pub const InstructionSet = enum {...@@ -13663,6 +14915,83 @@ pub const InstructionSet = enum {
13663 .{ .kind = .id_ref, .quantifier = .required },14915 .{ .kind = .id_ref, .quantifier = .required },
13664 },14916 },
13665 },14917 },
14918 .{
14919 .name = "OpUntypedVariableLengthArrayINTEL",
14920 .opcode = 6244,
14921 .operands = &.{
14922 .{ .kind = .id_result_type, .quantifier = .required },
14923 .{ .kind = .id_result, .quantifier = .required },
14924 .{ .kind = .id_ref, .quantifier = .required },
14925 .{ .kind = .id_ref, .quantifier = .required },
14926 },
14927 },
14928 .{
14929 .name = "OpConditionalExtensionINTEL",
14930 .opcode = 6248,
14931 .operands = &.{
14932 .{ .kind = .id_ref, .quantifier = .required },
14933 .{ .kind = .literal_string, .quantifier = .required },
14934 },
14935 },
14936 .{
14937 .name = "OpConditionalEntryPointINTEL",
14938 .opcode = 6249,
14939 .operands = &.{
14940 .{ .kind = .id_ref, .quantifier = .required },
14941 .{ .kind = .execution_model, .quantifier = .required },
14942 .{ .kind = .id_ref, .quantifier = .required },
14943 .{ .kind = .literal_string, .quantifier = .required },
14944 .{ .kind = .id_ref, .quantifier = .variadic },
14945 },
14946 },
14947 .{
14948 .name = "OpConditionalCapabilityINTEL",
14949 .opcode = 6250,
14950 .operands = &.{
14951 .{ .kind = .id_ref, .quantifier = .required },
14952 .{ .kind = .capability, .quantifier = .required },
14953 },
14954 },
14955 .{
14956 .name = "OpSpecConstantTargetINTEL",
14957 .opcode = 6251,
14958 .operands = &.{
14959 .{ .kind = .id_result_type, .quantifier = .required },
14960 .{ .kind = .id_result, .quantifier = .required },
14961 .{ .kind = .literal_integer, .quantifier = .required },
14962 .{ .kind = .literal_integer, .quantifier = .variadic },
14963 },
14964 },
14965 .{
14966 .name = "OpSpecConstantArchitectureINTEL",
14967 .opcode = 6252,
14968 .operands = &.{
14969 .{ .kind = .id_result_type, .quantifier = .required },
14970 .{ .kind = .id_result, .quantifier = .required },
14971 .{ .kind = .literal_integer, .quantifier = .required },
14972 .{ .kind = .literal_integer, .quantifier = .required },
14973 .{ .kind = .literal_integer, .quantifier = .required },
14974 .{ .kind = .literal_integer, .quantifier = .required },
14975 },
14976 },
14977 .{
14978 .name = "OpSpecConstantCapabilitiesINTEL",
14979 .opcode = 6253,
14980 .operands = &.{
14981 .{ .kind = .id_result_type, .quantifier = .required },
14982 .{ .kind = .id_result, .quantifier = .required },
14983 .{ .kind = .capability, .quantifier = .variadic },
14984 },
14985 },
14986 .{
14987 .name = "OpConditionalCopyObjectINTEL",
14988 .opcode = 6254,
14989 .operands = &.{
14990 .{ .kind = .id_result_type, .quantifier = .required },
14991 .{ .kind = .id_result, .quantifier = .required },
14992 .{ .kind = .id_ref, .quantifier = .variadic },
14993 },
14994 },
13666 .{14995 .{
13667 .name = "OpGroupIMulKHR",14996 .name = "OpGroupIMulKHR",
13668 .opcode = 6401,14997 .opcode = 6401,
...@@ -13761,406 +15090,447 @@ pub const InstructionSet = enum {...@@ -13761,406 +15090,447 @@ pub const InstructionSet = enum {
13761 },15090 },
13762 },15091 },
13763 .{15092 .{
13764 .name = "OpMaskedGatherINTEL",15093 .name = "OpMaskedGatherINTEL",
13765 .opcode = 6428,15094 .opcode = 6428,
15095 .operands = &.{
15096 .{ .kind = .id_result_type, .quantifier = .required },
15097 .{ .kind = .id_result, .quantifier = .required },
15098 .{ .kind = .id_ref, .quantifier = .required },
15099 .{ .kind = .literal_integer, .quantifier = .required },
15100 .{ .kind = .id_ref, .quantifier = .required },
15101 .{ .kind = .id_ref, .quantifier = .required },
15102 },
15103 },
15104 .{
15105 .name = "OpMaskedScatterINTEL",
15106 .opcode = 6429,
15107 .operands = &.{
15108 .{ .kind = .id_ref, .quantifier = .required },
15109 .{ .kind = .id_ref, .quantifier = .required },
15110 .{ .kind = .literal_integer, .quantifier = .required },
15111 .{ .kind = .id_ref, .quantifier = .required },
15112 },
15113 },
15114 .{
15115 .name = "OpConvertHandleToImageINTEL",
15116 .opcode = 6529,
15117 .operands = &.{
15118 .{ .kind = .id_result_type, .quantifier = .required },
15119 .{ .kind = .id_result, .quantifier = .required },
15120 .{ .kind = .id_ref, .quantifier = .required },
15121 },
15122 },
15123 .{
15124 .name = "OpConvertHandleToSamplerINTEL",
15125 .opcode = 6530,
15126 .operands = &.{
15127 .{ .kind = .id_result_type, .quantifier = .required },
15128 .{ .kind = .id_result, .quantifier = .required },
15129 .{ .kind = .id_ref, .quantifier = .required },
15130 },
15131 },
15132 .{
15133 .name = "OpConvertHandleToSampledImageINTEL",
15134 .opcode = 6531,
13766 .operands = &.{15135 .operands = &.{
13767 .{ .kind = .id_result_type, .quantifier = .required },15136 .{ .kind = .id_result_type, .quantifier = .required },
13768 .{ .kind = .id_result, .quantifier = .required },15137 .{ .kind = .id_result, .quantifier = .required },
13769 .{ .kind = .id_ref, .quantifier = .required },15138 .{ .kind = .id_ref, .quantifier = .required },
13770 .{ .kind = .literal_integer, .quantifier = .required },
13771 .{ .kind = .id_ref, .quantifier = .required },
13772 .{ .kind = .id_ref, .quantifier = .required },
13773 },15139 },
13774 },15140 },
13775 .{15141 .{
13776 .name = "OpMaskedScatterINTEL",15142 .name = "OpFDot2MixAcc32VALVE",
13777 .opcode = 6429,15143 .opcode = 6916,
13778 .operands = &.{15144 .operands = &.{
15145 .{ .kind = .id_result_type, .quantifier = .required },
15146 .{ .kind = .id_result, .quantifier = .required },
13779 .{ .kind = .id_ref, .quantifier = .required },15147 .{ .kind = .id_ref, .quantifier = .required },
13780 .{ .kind = .id_ref, .quantifier = .required },15148 .{ .kind = .id_ref, .quantifier = .required },
13781 .{ .kind = .literal_integer, .quantifier = .required },
13782 .{ .kind = .id_ref, .quantifier = .required },15149 .{ .kind = .id_ref, .quantifier = .required },
13783 },15150 },
13784 },15151 },
13785 .{15152 .{
13786 .name = "OpConvertHandleToImageINTEL",15153 .name = "OpFDot2MixAcc16VALVE",
13787 .opcode = 6529,15154 .opcode = 6917,
13788 .operands = &.{15155 .operands = &.{
13789 .{ .kind = .id_result_type, .quantifier = .required },15156 .{ .kind = .id_result_type, .quantifier = .required },
13790 .{ .kind = .id_result, .quantifier = .required },15157 .{ .kind = .id_result, .quantifier = .required },
13791 .{ .kind = .id_ref, .quantifier = .required },15158 .{ .kind = .id_ref, .quantifier = .required },
15159 .{ .kind = .id_ref, .quantifier = .required },
15160 .{ .kind = .id_ref, .quantifier = .required },
13792 },15161 },
13793 },15162 },
13794 .{15163 .{
13795 .name = "OpConvertHandleToSamplerINTEL",15164 .name = "OpFDot4MixAcc32VALVE",
13796 .opcode = 6530,15165 .opcode = 6918,
13797 .operands = &.{15166 .operands = &.{
13798 .{ .kind = .id_result_type, .quantifier = .required },15167 .{ .kind = .id_result_type, .quantifier = .required },
13799 .{ .kind = .id_result, .quantifier = .required },15168 .{ .kind = .id_result, .quantifier = .required },
13800 .{ .kind = .id_ref, .quantifier = .required },15169 .{ .kind = .id_ref, .quantifier = .required },
15170 .{ .kind = .id_ref, .quantifier = .required },
15171 .{ .kind = .id_ref, .quantifier = .required },
13801 },15172 },
13802 },15173 },
15174 },
15175 .@"OpenCL.std" => &.{
13803 .{15176 .{
13804 .name = "OpConvertHandleToSampledImageINTEL",15177 .name = "acos",
13805 .opcode = 6531,15178 .opcode = 0,
13806 .operands = &.{15179 .operands = &.{
13807 .{ .kind = .id_result_type, .quantifier = .required },
13808 .{ .kind = .id_result, .quantifier = .required },
13809 .{ .kind = .id_ref, .quantifier = .required },15180 .{ .kind = .id_ref, .quantifier = .required },
13810 },15181 },
13811 },15182 },
13812 },
13813 .@"GLSL.std.450" => &.{
13814 .{15183 .{
13815 .name = "Round",15184 .name = "acosh",
13816 .opcode = 1,15185 .opcode = 1,
13817 .operands = &.{15186 .operands = &.{
13818 .{ .kind = .id_ref, .quantifier = .required },15187 .{ .kind = .id_ref, .quantifier = .required },
13819 },15188 },
13820 },15189 },
13821 .{15190 .{
13822 .name = "RoundEven",15191 .name = "acospi",
13823 .opcode = 2,15192 .opcode = 2,
13824 .operands = &.{15193 .operands = &.{
13825 .{ .kind = .id_ref, .quantifier = .required },15194 .{ .kind = .id_ref, .quantifier = .required },
13826 },15195 },
13827 },15196 },
13828 .{15197 .{
13829 .name = "Trunc",15198 .name = "asin",
13830 .opcode = 3,15199 .opcode = 3,
13831 .operands = &.{15200 .operands = &.{
13832 .{ .kind = .id_ref, .quantifier = .required },15201 .{ .kind = .id_ref, .quantifier = .required },
13833 },15202 },
13834 },15203 },
13835 .{15204 .{
13836 .name = "FAbs",15205 .name = "asinh",
13837 .opcode = 4,15206 .opcode = 4,
13838 .operands = &.{15207 .operands = &.{
13839 .{ .kind = .id_ref, .quantifier = .required },15208 .{ .kind = .id_ref, .quantifier = .required },
13840 },15209 },
13841 },15210 },
13842 .{15211 .{
13843 .name = "SAbs",15212 .name = "asinpi",
13844 .opcode = 5,15213 .opcode = 5,
13845 .operands = &.{15214 .operands = &.{
13846 .{ .kind = .id_ref, .quantifier = .required },15215 .{ .kind = .id_ref, .quantifier = .required },
13847 },15216 },
13848 },15217 },
13849 .{15218 .{
13850 .name = "FSign",15219 .name = "atan",
13851 .opcode = 6,15220 .opcode = 6,
13852 .operands = &.{15221 .operands = &.{
13853 .{ .kind = .id_ref, .quantifier = .required },15222 .{ .kind = .id_ref, .quantifier = .required },
13854 },15223 },
13855 },15224 },
13856 .{15225 .{
13857 .name = "SSign",15226 .name = "atan2",
13858 .opcode = 7,15227 .opcode = 7,
13859 .operands = &.{15228 .operands = &.{
13860 .{ .kind = .id_ref, .quantifier = .required },15229 .{ .kind = .id_ref, .quantifier = .required },
15230 .{ .kind = .id_ref, .quantifier = .required },
13861 },15231 },
13862 },15232 },
13863 .{15233 .{
13864 .name = "Floor",15234 .name = "atanh",
13865 .opcode = 8,15235 .opcode = 8,
13866 .operands = &.{15236 .operands = &.{
13867 .{ .kind = .id_ref, .quantifier = .required },15237 .{ .kind = .id_ref, .quantifier = .required },
13868 },15238 },
13869 },15239 },
13870 .{15240 .{
13871 .name = "Ceil",15241 .name = "atanpi",
13872 .opcode = 9,15242 .opcode = 9,
13873 .operands = &.{15243 .operands = &.{
13874 .{ .kind = .id_ref, .quantifier = .required },15244 .{ .kind = .id_ref, .quantifier = .required },
13875 },15245 },
13876 },15246 },
13877 .{15247 .{
13878 .name = "Fract",15248 .name = "atan2pi",
13879 .opcode = 10,15249 .opcode = 10,
13880 .operands = &.{15250 .operands = &.{
13881 .{ .kind = .id_ref, .quantifier = .required },15251 .{ .kind = .id_ref, .quantifier = .required },
15252 .{ .kind = .id_ref, .quantifier = .required },
13882 },15253 },
13883 },15254 },
13884 .{15255 .{
13885 .name = "Radians",15256 .name = "cbrt",
13886 .opcode = 11,15257 .opcode = 11,
13887 .operands = &.{15258 .operands = &.{
13888 .{ .kind = .id_ref, .quantifier = .required },15259 .{ .kind = .id_ref, .quantifier = .required },
13889 },15260 },
13890 },15261 },
13891 .{15262 .{
13892 .name = "Degrees",15263 .name = "ceil",
13893 .opcode = 12,15264 .opcode = 12,
13894 .operands = &.{15265 .operands = &.{
13895 .{ .kind = .id_ref, .quantifier = .required },15266 .{ .kind = .id_ref, .quantifier = .required },
13896 },15267 },
13897 },15268 },
13898 .{15269 .{
13899 .name = "Sin",15270 .name = "copysign",
13900 .opcode = 13,15271 .opcode = 13,
13901 .operands = &.{15272 .operands = &.{
13902 .{ .kind = .id_ref, .quantifier = .required },15273 .{ .kind = .id_ref, .quantifier = .required },
15274 .{ .kind = .id_ref, .quantifier = .required },
13903 },15275 },
13904 },15276 },
13905 .{15277 .{
13906 .name = "Cos",15278 .name = "cos",
13907 .opcode = 14,15279 .opcode = 14,
13908 .operands = &.{15280 .operands = &.{
13909 .{ .kind = .id_ref, .quantifier = .required },15281 .{ .kind = .id_ref, .quantifier = .required },
13910 },15282 },
13911 },15283 },
13912 .{15284 .{
13913 .name = "Tan",15285 .name = "cosh",
13914 .opcode = 15,15286 .opcode = 15,
13915 .operands = &.{15287 .operands = &.{
13916 .{ .kind = .id_ref, .quantifier = .required },15288 .{ .kind = .id_ref, .quantifier = .required },
13917 },15289 },
13918 },15290 },
13919 .{15291 .{
13920 .name = "Asin",15292 .name = "cospi",
13921 .opcode = 16,15293 .opcode = 16,
13922 .operands = &.{15294 .operands = &.{
13923 .{ .kind = .id_ref, .quantifier = .required },15295 .{ .kind = .id_ref, .quantifier = .required },
13924 },15296 },
13925 },15297 },
13926 .{15298 .{
13927 .name = "Acos",15299 .name = "erfc",
13928 .opcode = 17,15300 .opcode = 17,
13929 .operands = &.{15301 .operands = &.{
13930 .{ .kind = .id_ref, .quantifier = .required },15302 .{ .kind = .id_ref, .quantifier = .required },
13931 },15303 },
13932 },15304 },
13933 .{15305 .{
13934 .name = "Atan",15306 .name = "erf",
13935 .opcode = 18,15307 .opcode = 18,
13936 .operands = &.{15308 .operands = &.{
13937 .{ .kind = .id_ref, .quantifier = .required },15309 .{ .kind = .id_ref, .quantifier = .required },
13938 },15310 },
13939 },15311 },
13940 .{15312 .{
13941 .name = "Sinh",15313 .name = "exp",
13942 .opcode = 19,15314 .opcode = 19,
13943 .operands = &.{15315 .operands = &.{
13944 .{ .kind = .id_ref, .quantifier = .required },15316 .{ .kind = .id_ref, .quantifier = .required },
13945 },15317 },
13946 },15318 },
13947 .{15319 .{
13948 .name = "Cosh",15320 .name = "exp2",
13949 .opcode = 20,15321 .opcode = 20,
13950 .operands = &.{15322 .operands = &.{
13951 .{ .kind = .id_ref, .quantifier = .required },15323 .{ .kind = .id_ref, .quantifier = .required },
13952 },15324 },
13953 },15325 },
13954 .{15326 .{
13955 .name = "Tanh",15327 .name = "exp10",
13956 .opcode = 21,15328 .opcode = 21,
13957 .operands = &.{15329 .operands = &.{
13958 .{ .kind = .id_ref, .quantifier = .required },15330 .{ .kind = .id_ref, .quantifier = .required },
13959 },15331 },
13960 },15332 },
13961 .{15333 .{
13962 .name = "Asinh",15334 .name = "expm1",
13963 .opcode = 22,15335 .opcode = 22,
13964 .operands = &.{15336 .operands = &.{
13965 .{ .kind = .id_ref, .quantifier = .required },15337 .{ .kind = .id_ref, .quantifier = .required },
13966 },15338 },
13967 },15339 },
13968 .{15340 .{
13969 .name = "Acosh",15341 .name = "fabs",
13970 .opcode = 23,15342 .opcode = 23,
13971 .operands = &.{15343 .operands = &.{
13972 .{ .kind = .id_ref, .quantifier = .required },15344 .{ .kind = .id_ref, .quantifier = .required },
13973 },15345 },
13974 },15346 },
13975 .{15347 .{
13976 .name = "Atanh",15348 .name = "fdim",
13977 .opcode = 24,15349 .opcode = 24,
13978 .operands = &.{15350 .operands = &.{
13979 .{ .kind = .id_ref, .quantifier = .required },15351 .{ .kind = .id_ref, .quantifier = .required },
15352 .{ .kind = .id_ref, .quantifier = .required },
13980 },15353 },
13981 },15354 },
13982 .{15355 .{
13983 .name = "Atan2",15356 .name = "floor",
13984 .opcode = 25,15357 .opcode = 25,
13985 .operands = &.{15358 .operands = &.{
13986 .{ .kind = .id_ref, .quantifier = .required },15359 .{ .kind = .id_ref, .quantifier = .required },
13987 .{ .kind = .id_ref, .quantifier = .required },
13988 },15360 },
13989 },15361 },
13990 .{15362 .{
13991 .name = "Pow",15363 .name = "fma",
13992 .opcode = 26,15364 .opcode = 26,
13993 .operands = &.{15365 .operands = &.{
13994 .{ .kind = .id_ref, .quantifier = .required },15366 .{ .kind = .id_ref, .quantifier = .required },
13995 .{ .kind = .id_ref, .quantifier = .required },15367 .{ .kind = .id_ref, .quantifier = .required },
15368 .{ .kind = .id_ref, .quantifier = .required },
13996 },15369 },
13997 },15370 },
13998 .{15371 .{
13999 .name = "Exp",15372 .name = "fmax",
14000 .opcode = 27,15373 .opcode = 27,
14001 .operands = &.{15374 .operands = &.{
14002 .{ .kind = .id_ref, .quantifier = .required },15375 .{ .kind = .id_ref, .quantifier = .required },
15376 .{ .kind = .id_ref, .quantifier = .required },
14003 },15377 },
14004 },15378 },
14005 .{15379 .{
14006 .name = "Log",15380 .name = "fmin",
14007 .opcode = 28,15381 .opcode = 28,
14008 .operands = &.{15382 .operands = &.{
14009 .{ .kind = .id_ref, .quantifier = .required },15383 .{ .kind = .id_ref, .quantifier = .required },
15384 .{ .kind = .id_ref, .quantifier = .required },
14010 },15385 },
14011 },15386 },
14012 .{15387 .{
14013 .name = "Exp2",15388 .name = "fmod",
14014 .opcode = 29,15389 .opcode = 29,
14015 .operands = &.{15390 .operands = &.{
14016 .{ .kind = .id_ref, .quantifier = .required },15391 .{ .kind = .id_ref, .quantifier = .required },
15392 .{ .kind = .id_ref, .quantifier = .required },
14017 },15393 },
14018 },15394 },
14019 .{15395 .{
14020 .name = "Log2",15396 .name = "fract",
14021 .opcode = 30,15397 .opcode = 30,
14022 .operands = &.{15398 .operands = &.{
14023 .{ .kind = .id_ref, .quantifier = .required },15399 .{ .kind = .id_ref, .quantifier = .required },
15400 .{ .kind = .id_ref, .quantifier = .required },
14024 },15401 },
14025 },15402 },
14026 .{15403 .{
14027 .name = "Sqrt",15404 .name = "frexp",
14028 .opcode = 31,15405 .opcode = 31,
14029 .operands = &.{15406 .operands = &.{
14030 .{ .kind = .id_ref, .quantifier = .required },15407 .{ .kind = .id_ref, .quantifier = .required },
15408 .{ .kind = .id_ref, .quantifier = .required },
14031 },15409 },
14032 },15410 },
14033 .{15411 .{
14034 .name = "InverseSqrt",15412 .name = "hypot",
14035 .opcode = 32,15413 .opcode = 32,
14036 .operands = &.{15414 .operands = &.{
14037 .{ .kind = .id_ref, .quantifier = .required },15415 .{ .kind = .id_ref, .quantifier = .required },
15416 .{ .kind = .id_ref, .quantifier = .required },
14038 },15417 },
14039 },15418 },
14040 .{15419 .{
14041 .name = "Determinant",15420 .name = "ilogb",
14042 .opcode = 33,15421 .opcode = 33,
14043 .operands = &.{15422 .operands = &.{
14044 .{ .kind = .id_ref, .quantifier = .required },15423 .{ .kind = .id_ref, .quantifier = .required },
14045 },15424 },
14046 },15425 },
14047 .{15426 .{
14048 .name = "MatrixInverse",15427 .name = "ldexp",
14049 .opcode = 34,15428 .opcode = 34,
14050 .operands = &.{15429 .operands = &.{
14051 .{ .kind = .id_ref, .quantifier = .required },15430 .{ .kind = .id_ref, .quantifier = .required },
15431 .{ .kind = .id_ref, .quantifier = .required },
14052 },15432 },
14053 },15433 },
14054 .{15434 .{
14055 .name = "Modf",15435 .name = "lgamma",
14056 .opcode = 35,15436 .opcode = 35,
14057 .operands = &.{15437 .operands = &.{
14058 .{ .kind = .id_ref, .quantifier = .required },15438 .{ .kind = .id_ref, .quantifier = .required },
14059 .{ .kind = .id_ref, .quantifier = .required },
14060 },15439 },
14061 },15440 },
14062 .{15441 .{
14063 .name = "ModfStruct",15442 .name = "lgamma_r",
14064 .opcode = 36,15443 .opcode = 36,
14065 .operands = &.{15444 .operands = &.{
14066 .{ .kind = .id_ref, .quantifier = .required },15445 .{ .kind = .id_ref, .quantifier = .required },
15446 .{ .kind = .id_ref, .quantifier = .required },
14067 },15447 },
14068 },15448 },
14069 .{15449 .{
14070 .name = "FMin",15450 .name = "log",
14071 .opcode = 37,15451 .opcode = 37,
14072 .operands = &.{15452 .operands = &.{
14073 .{ .kind = .id_ref, .quantifier = .required },15453 .{ .kind = .id_ref, .quantifier = .required },
14074 .{ .kind = .id_ref, .quantifier = .required },
14075 },15454 },
14076 },15455 },
14077 .{15456 .{
14078 .name = "UMin",15457 .name = "log2",
14079 .opcode = 38,15458 .opcode = 38,
14080 .operands = &.{15459 .operands = &.{
14081 .{ .kind = .id_ref, .quantifier = .required },15460 .{ .kind = .id_ref, .quantifier = .required },
14082 .{ .kind = .id_ref, .quantifier = .required },
14083 },15461 },
14084 },15462 },
14085 .{15463 .{
14086 .name = "SMin",15464 .name = "log10",
14087 .opcode = 39,15465 .opcode = 39,
14088 .operands = &.{15466 .operands = &.{
14089 .{ .kind = .id_ref, .quantifier = .required },15467 .{ .kind = .id_ref, .quantifier = .required },
14090 .{ .kind = .id_ref, .quantifier = .required },
14091 },15468 },
14092 },15469 },
14093 .{15470 .{
14094 .name = "FMax",15471 .name = "log1p",
14095 .opcode = 40,15472 .opcode = 40,
14096 .operands = &.{15473 .operands = &.{
14097 .{ .kind = .id_ref, .quantifier = .required },15474 .{ .kind = .id_ref, .quantifier = .required },
14098 .{ .kind = .id_ref, .quantifier = .required },
14099 },15475 },
14100 },15476 },
14101 .{15477 .{
14102 .name = "UMax",15478 .name = "logb",
14103 .opcode = 41,15479 .opcode = 41,
14104 .operands = &.{15480 .operands = &.{
14105 .{ .kind = .id_ref, .quantifier = .required },15481 .{ .kind = .id_ref, .quantifier = .required },
14106 .{ .kind = .id_ref, .quantifier = .required },
14107 },15482 },
14108 },15483 },
14109 .{15484 .{
14110 .name = "SMax",15485 .name = "mad",
14111 .opcode = 42,15486 .opcode = 42,
14112 .operands = &.{15487 .operands = &.{
14113 .{ .kind = .id_ref, .quantifier = .required },15488 .{ .kind = .id_ref, .quantifier = .required },
14114 .{ .kind = .id_ref, .quantifier = .required },15489 .{ .kind = .id_ref, .quantifier = .required },
15490 .{ .kind = .id_ref, .quantifier = .required },
14115 },15491 },
14116 },15492 },
14117 .{15493 .{
14118 .name = "FClamp",15494 .name = "maxmag",
14119 .opcode = 43,15495 .opcode = 43,
14120 .operands = &.{15496 .operands = &.{
14121 .{ .kind = .id_ref, .quantifier = .required },15497 .{ .kind = .id_ref, .quantifier = .required },
14122 .{ .kind = .id_ref, .quantifier = .required },15498 .{ .kind = .id_ref, .quantifier = .required },
14123 .{ .kind = .id_ref, .quantifier = .required },
14124 },15499 },
14125 },15500 },
14126 .{15501 .{
14127 .name = "UClamp",15502 .name = "minmag",
14128 .opcode = 44,15503 .opcode = 44,
14129 .operands = &.{15504 .operands = &.{
14130 .{ .kind = .id_ref, .quantifier = .required },15505 .{ .kind = .id_ref, .quantifier = .required },
14131 .{ .kind = .id_ref, .quantifier = .required },15506 .{ .kind = .id_ref, .quantifier = .required },
14132 .{ .kind = .id_ref, .quantifier = .required },
14133 },15507 },
14134 },15508 },
14135 .{15509 .{
14136 .name = "SClamp",15510 .name = "modf",
14137 .opcode = 45,15511 .opcode = 45,
14138 .operands = &.{15512 .operands = &.{
14139 .{ .kind = .id_ref, .quantifier = .required },15513 .{ .kind = .id_ref, .quantifier = .required },
14140 .{ .kind = .id_ref, .quantifier = .required },15514 .{ .kind = .id_ref, .quantifier = .required },
14141 .{ .kind = .id_ref, .quantifier = .required },
14142 },15515 },
14143 },15516 },
14144 .{15517 .{
14145 .name = "FMix",15518 .name = "nan",
14146 .opcode = 46,15519 .opcode = 46,
14147 .operands = &.{15520 .operands = &.{
14148 .{ .kind = .id_ref, .quantifier = .required },15521 .{ .kind = .id_ref, .quantifier = .required },
14149 .{ .kind = .id_ref, .quantifier = .required },
14150 .{ .kind = .id_ref, .quantifier = .required },
14151 },15522 },
14152 },15523 },
14153 .{15524 .{
14154 .name = "IMix",15525 .name = "nextafter",
14155 .opcode = 47,15526 .opcode = 47,
14156 .operands = &.{15527 .operands = &.{
14157 .{ .kind = .id_ref, .quantifier = .required },15528 .{ .kind = .id_ref, .quantifier = .required },
14158 .{ .kind = .id_ref, .quantifier = .required },15529 .{ .kind = .id_ref, .quantifier = .required },
14159 .{ .kind = .id_ref, .quantifier = .required },
14160 },15530 },
14161 },15531 },
14162 .{15532 .{
14163 .name = "Step",15533 .name = "pow",
14164 .opcode = 48,15534 .opcode = 48,
14165 .operands = &.{15535 .operands = &.{
14166 .{ .kind = .id_ref, .quantifier = .required },15536 .{ .kind = .id_ref, .quantifier = .required },
...@@ -14168,25 +15538,23 @@ pub const InstructionSet = enum {...@@ -14168,25 +15538,23 @@ pub const InstructionSet = enum {
14168 },15538 },
14169 },15539 },
14170 .{15540 .{
14171 .name = "SmoothStep",15541 .name = "pown",
14172 .opcode = 49,15542 .opcode = 49,
14173 .operands = &.{15543 .operands = &.{
14174 .{ .kind = .id_ref, .quantifier = .required },15544 .{ .kind = .id_ref, .quantifier = .required },
14175 .{ .kind = .id_ref, .quantifier = .required },15545 .{ .kind = .id_ref, .quantifier = .required },
14176 .{ .kind = .id_ref, .quantifier = .required },
14177 },15546 },
14178 },15547 },
14179 .{15548 .{
14180 .name = "Fma",15549 .name = "powr",
14181 .opcode = 50,15550 .opcode = 50,
14182 .operands = &.{15551 .operands = &.{
14183 .{ .kind = .id_ref, .quantifier = .required },15552 .{ .kind = .id_ref, .quantifier = .required },
14184 .{ .kind = .id_ref, .quantifier = .required },15553 .{ .kind = .id_ref, .quantifier = .required },
14185 .{ .kind = .id_ref, .quantifier = .required },
14186 },15554 },
14187 },15555 },
14188 .{15556 .{
14189 .name = "Frexp",15557 .name = "remainder",
14190 .opcode = 51,15558 .opcode = 51,
14191 .operands = &.{15559 .operands = &.{
14192 .{ .kind = .id_ref, .quantifier = .required },15560 .{ .kind = .id_ref, .quantifier = .required },
...@@ -14194,121 +15562,123 @@ pub const InstructionSet = enum {...@@ -14194,121 +15562,123 @@ pub const InstructionSet = enum {
14194 },15562 },
14195 },15563 },
14196 .{15564 .{
14197 .name = "FrexpStruct",15565 .name = "remquo",
14198 .opcode = 52,15566 .opcode = 52,
14199 .operands = &.{15567 .operands = &.{
14200 .{ .kind = .id_ref, .quantifier = .required },15568 .{ .kind = .id_ref, .quantifier = .required },
15569 .{ .kind = .id_ref, .quantifier = .required },
15570 .{ .kind = .id_ref, .quantifier = .required },
14201 },15571 },
14202 },15572 },
14203 .{15573 .{
14204 .name = "Ldexp",15574 .name = "rint",
14205 .opcode = 53,15575 .opcode = 53,
14206 .operands = &.{15576 .operands = &.{
14207 .{ .kind = .id_ref, .quantifier = .required },15577 .{ .kind = .id_ref, .quantifier = .required },
14208 .{ .kind = .id_ref, .quantifier = .required },
14209 },15578 },
14210 },15579 },
14211 .{15580 .{
14212 .name = "PackSnorm4x8",15581 .name = "rootn",
14213 .opcode = 54,15582 .opcode = 54,
14214 .operands = &.{15583 .operands = &.{
14215 .{ .kind = .id_ref, .quantifier = .required },15584 .{ .kind = .id_ref, .quantifier = .required },
15585 .{ .kind = .id_ref, .quantifier = .required },
14216 },15586 },
14217 },15587 },
14218 .{15588 .{
14219 .name = "PackUnorm4x8",15589 .name = "round",
14220 .opcode = 55,15590 .opcode = 55,
14221 .operands = &.{15591 .operands = &.{
14222 .{ .kind = .id_ref, .quantifier = .required },15592 .{ .kind = .id_ref, .quantifier = .required },
14223 },15593 },
14224 },15594 },
14225 .{15595 .{
14226 .name = "PackSnorm2x16",15596 .name = "rsqrt",
14227 .opcode = 56,15597 .opcode = 56,
14228 .operands = &.{15598 .operands = &.{
14229 .{ .kind = .id_ref, .quantifier = .required },15599 .{ .kind = .id_ref, .quantifier = .required },
14230 },15600 },
14231 },15601 },
14232 .{15602 .{
14233 .name = "PackUnorm2x16",15603 .name = "sin",
14234 .opcode = 57,15604 .opcode = 57,
14235 .operands = &.{15605 .operands = &.{
14236 .{ .kind = .id_ref, .quantifier = .required },15606 .{ .kind = .id_ref, .quantifier = .required },
14237 },15607 },
14238 },15608 },
14239 .{15609 .{
14240 .name = "PackHalf2x16",15610 .name = "sincos",
14241 .opcode = 58,15611 .opcode = 58,
14242 .operands = &.{15612 .operands = &.{
14243 .{ .kind = .id_ref, .quantifier = .required },15613 .{ .kind = .id_ref, .quantifier = .required },
15614 .{ .kind = .id_ref, .quantifier = .required },
14244 },15615 },
14245 },15616 },
14246 .{15617 .{
14247 .name = "PackDouble2x32",15618 .name = "sinh",
14248 .opcode = 59,15619 .opcode = 59,
14249 .operands = &.{15620 .operands = &.{
14250 .{ .kind = .id_ref, .quantifier = .required },15621 .{ .kind = .id_ref, .quantifier = .required },
14251 },15622 },
14252 },15623 },
14253 .{15624 .{
14254 .name = "UnpackSnorm2x16",15625 .name = "sinpi",
14255 .opcode = 60,15626 .opcode = 60,
14256 .operands = &.{15627 .operands = &.{
14257 .{ .kind = .id_ref, .quantifier = .required },15628 .{ .kind = .id_ref, .quantifier = .required },
14258 },15629 },
14259 },15630 },
14260 .{15631 .{
14261 .name = "UnpackUnorm2x16",15632 .name = "sqrt",
14262 .opcode = 61,15633 .opcode = 61,
14263 .operands = &.{15634 .operands = &.{
14264 .{ .kind = .id_ref, .quantifier = .required },15635 .{ .kind = .id_ref, .quantifier = .required },
14265 },15636 },
14266 },15637 },
14267 .{15638 .{
14268 .name = "UnpackHalf2x16",15639 .name = "tan",
14269 .opcode = 62,15640 .opcode = 62,
14270 .operands = &.{15641 .operands = &.{
14271 .{ .kind = .id_ref, .quantifier = .required },15642 .{ .kind = .id_ref, .quantifier = .required },
14272 },15643 },
14273 },15644 },
14274 .{15645 .{
14275 .name = "UnpackSnorm4x8",15646 .name = "tanh",
14276 .opcode = 63,15647 .opcode = 63,
14277 .operands = &.{15648 .operands = &.{
14278 .{ .kind = .id_ref, .quantifier = .required },15649 .{ .kind = .id_ref, .quantifier = .required },
14279 },15650 },
14280 },15651 },
14281 .{15652 .{
14282 .name = "UnpackUnorm4x8",15653 .name = "tanpi",
14283 .opcode = 64,15654 .opcode = 64,
14284 .operands = &.{15655 .operands = &.{
14285 .{ .kind = .id_ref, .quantifier = .required },15656 .{ .kind = .id_ref, .quantifier = .required },
14286 },15657 },
14287 },15658 },
14288 .{15659 .{
14289 .name = "UnpackDouble2x32",15660 .name = "tgamma",
14290 .opcode = 65,15661 .opcode = 65,
14291 .operands = &.{15662 .operands = &.{
14292 .{ .kind = .id_ref, .quantifier = .required },15663 .{ .kind = .id_ref, .quantifier = .required },
14293 },15664 },
14294 },15665 },
14295 .{15666 .{
14296 .name = "Length",15667 .name = "trunc",
14297 .opcode = 66,15668 .opcode = 66,
14298 .operands = &.{15669 .operands = &.{
14299 .{ .kind = .id_ref, .quantifier = .required },15670 .{ .kind = .id_ref, .quantifier = .required },
14300 },15671 },
14301 },15672 },
14302 .{15673 .{
14303 .name = "Distance",15674 .name = "half_cos",
14304 .opcode = 67,15675 .opcode = 67,
14305 .operands = &.{15676 .operands = &.{
14306 .{ .kind = .id_ref, .quantifier = .required },15677 .{ .kind = .id_ref, .quantifier = .required },
14307 .{ .kind = .id_ref, .quantifier = .required },
14308 },15678 },
14309 },15679 },
14310 .{15680 .{
14311 .name = "Cross",15681 .name = "half_divide",
14312 .opcode = 68,15682 .opcode = 68,
14313 .operands = &.{15683 .operands = &.{
14314 .{ .kind = .id_ref, .quantifier = .required },15684 .{ .kind = .id_ref, .quantifier = .required },
...@@ -14316,420 +15686,412 @@ pub const InstructionSet = enum {...@@ -14316,420 +15686,412 @@ pub const InstructionSet = enum {
14316 },15686 },
14317 },15687 },
14318 .{15688 .{
14319 .name = "Normalize",15689 .name = "half_exp",
14320 .opcode = 69,15690 .opcode = 69,
14321 .operands = &.{15691 .operands = &.{
14322 .{ .kind = .id_ref, .quantifier = .required },15692 .{ .kind = .id_ref, .quantifier = .required },
14323 },15693 },
14324 },15694 },
14325 .{15695 .{
14326 .name = "FaceForward",15696 .name = "half_exp2",
14327 .opcode = 70,15697 .opcode = 70,
14328 .operands = &.{15698 .operands = &.{
14329 .{ .kind = .id_ref, .quantifier = .required },15699 .{ .kind = .id_ref, .quantifier = .required },
14330 .{ .kind = .id_ref, .quantifier = .required },
14331 .{ .kind = .id_ref, .quantifier = .required },
14332 },15700 },
14333 },15701 },
14334 .{15702 .{
14335 .name = "Reflect",15703 .name = "half_exp10",
14336 .opcode = 71,15704 .opcode = 71,
14337 .operands = &.{15705 .operands = &.{
14338 .{ .kind = .id_ref, .quantifier = .required },15706 .{ .kind = .id_ref, .quantifier = .required },
14339 .{ .kind = .id_ref, .quantifier = .required },
14340 },15707 },
14341 },15708 },
14342 .{15709 .{
14343 .name = "Refract",15710 .name = "half_log",
14344 .opcode = 72,15711 .opcode = 72,
14345 .operands = &.{15712 .operands = &.{
14346 .{ .kind = .id_ref, .quantifier = .required },15713 .{ .kind = .id_ref, .quantifier = .required },
14347 .{ .kind = .id_ref, .quantifier = .required },
14348 .{ .kind = .id_ref, .quantifier = .required },
14349 },15714 },
14350 },15715 },
14351 .{15716 .{
14352 .name = "FindILsb",15717 .name = "half_log2",
14353 .opcode = 73,15718 .opcode = 73,
14354 .operands = &.{15719 .operands = &.{
14355 .{ .kind = .id_ref, .quantifier = .required },15720 .{ .kind = .id_ref, .quantifier = .required },
14356 },15721 },
14357 },15722 },
14358 .{15723 .{
14359 .name = "FindSMsb",15724 .name = "half_log10",
14360 .opcode = 74,15725 .opcode = 74,
14361 .operands = &.{15726 .operands = &.{
14362 .{ .kind = .id_ref, .quantifier = .required },15727 .{ .kind = .id_ref, .quantifier = .required },
14363 },15728 },
14364 },15729 },
14365 .{15730 .{
14366 .name = "FindUMsb",15731 .name = "half_powr",
14367 .opcode = 75,15732 .opcode = 75,
14368 .operands = &.{15733 .operands = &.{
14369 .{ .kind = .id_ref, .quantifier = .required },15734 .{ .kind = .id_ref, .quantifier = .required },
15735 .{ .kind = .id_ref, .quantifier = .required },
14370 },15736 },
14371 },15737 },
14372 .{15738 .{
14373 .name = "InterpolateAtCentroid",15739 .name = "half_recip",
14374 .opcode = 76,15740 .opcode = 76,
14375 .operands = &.{15741 .operands = &.{
14376 .{ .kind = .id_ref, .quantifier = .required },15742 .{ .kind = .id_ref, .quantifier = .required },
14377 },15743 },
14378 },15744 },
14379 .{15745 .{
14380 .name = "InterpolateAtSample",15746 .name = "half_rsqrt",
14381 .opcode = 77,15747 .opcode = 77,
14382 .operands = &.{15748 .operands = &.{
14383 .{ .kind = .id_ref, .quantifier = .required },15749 .{ .kind = .id_ref, .quantifier = .required },
14384 .{ .kind = .id_ref, .quantifier = .required },
14385 },15750 },
14386 },15751 },
14387 .{15752 .{
14388 .name = "InterpolateAtOffset",15753 .name = "half_sin",
14389 .opcode = 78,15754 .opcode = 78,
14390 .operands = &.{15755 .operands = &.{
14391 .{ .kind = .id_ref, .quantifier = .required },15756 .{ .kind = .id_ref, .quantifier = .required },
14392 .{ .kind = .id_ref, .quantifier = .required },
14393 },15757 },
14394 },15758 },
14395 .{15759 .{
14396 .name = "NMin",15760 .name = "half_sqrt",
14397 .opcode = 79,15761 .opcode = 79,
14398 .operands = &.{15762 .operands = &.{
14399 .{ .kind = .id_ref, .quantifier = .required },15763 .{ .kind = .id_ref, .quantifier = .required },
14400 .{ .kind = .id_ref, .quantifier = .required },
14401 },15764 },
14402 },15765 },
14403 .{15766 .{
14404 .name = "NMax",15767 .name = "half_tan",
14405 .opcode = 80,15768 .opcode = 80,
14406 .operands = &.{15769 .operands = &.{
14407 .{ .kind = .id_ref, .quantifier = .required },15770 .{ .kind = .id_ref, .quantifier = .required },
14408 .{ .kind = .id_ref, .quantifier = .required },
14409 },15771 },
14410 },15772 },
14411 .{15773 .{
14412 .name = "NClamp",15774 .name = "native_cos",
14413 .opcode = 81,15775 .opcode = 81,
14414 .operands = &.{15776 .operands = &.{
14415 .{ .kind = .id_ref, .quantifier = .required },15777 .{ .kind = .id_ref, .quantifier = .required },
14416 .{ .kind = .id_ref, .quantifier = .required },
14417 .{ .kind = .id_ref, .quantifier = .required },
14418 },15778 },
14419 },15779 },
14420 },
14421 .@"OpenCL.std" => &.{
14422 .{15780 .{
14423 .name = "acos",15781 .name = "native_divide",
14424 .opcode = 0,15782 .opcode = 82,
14425 .operands = &.{15783 .operands = &.{
14426 .{ .kind = .id_ref, .quantifier = .required },15784 .{ .kind = .id_ref, .quantifier = .required },
15785 .{ .kind = .id_ref, .quantifier = .required },
14427 },15786 },
14428 },15787 },
14429 .{15788 .{
14430 .name = "acosh",15789 .name = "native_exp",
14431 .opcode = 1,15790 .opcode = 83,
14432 .operands = &.{15791 .operands = &.{
14433 .{ .kind = .id_ref, .quantifier = .required },15792 .{ .kind = .id_ref, .quantifier = .required },
14434 },15793 },
14435 },15794 },
14436 .{15795 .{
14437 .name = "acospi",15796 .name = "native_exp2",
14438 .opcode = 2,15797 .opcode = 84,
14439 .operands = &.{15798 .operands = &.{
14440 .{ .kind = .id_ref, .quantifier = .required },15799 .{ .kind = .id_ref, .quantifier = .required },
14441 },15800 },
14442 },15801 },
14443 .{15802 .{
14444 .name = "asin",15803 .name = "native_exp10",
14445 .opcode = 3,15804 .opcode = 85,
14446 .operands = &.{15805 .operands = &.{
14447 .{ .kind = .id_ref, .quantifier = .required },15806 .{ .kind = .id_ref, .quantifier = .required },
14448 },15807 },
14449 },15808 },
14450 .{15809 .{
14451 .name = "asinh",15810 .name = "native_log",
14452 .opcode = 4,15811 .opcode = 86,
14453 .operands = &.{15812 .operands = &.{
14454 .{ .kind = .id_ref, .quantifier = .required },15813 .{ .kind = .id_ref, .quantifier = .required },
14455 },15814 },
14456 },15815 },
14457 .{15816 .{
14458 .name = "asinpi",15817 .name = "native_log2",
14459 .opcode = 5,15818 .opcode = 87,
14460 .operands = &.{15819 .operands = &.{
14461 .{ .kind = .id_ref, .quantifier = .required },15820 .{ .kind = .id_ref, .quantifier = .required },
14462 },15821 },
14463 },15822 },
14464 .{15823 .{
14465 .name = "atan",15824 .name = "native_log10",
14466 .opcode = 6,15825 .opcode = 88,
14467 .operands = &.{15826 .operands = &.{
14468 .{ .kind = .id_ref, .quantifier = .required },15827 .{ .kind = .id_ref, .quantifier = .required },
14469 },15828 },
14470 },15829 },
14471 .{15830 .{
14472 .name = "atan2",15831 .name = "native_powr",
14473 .opcode = 7,15832 .opcode = 89,
14474 .operands = &.{15833 .operands = &.{
14475 .{ .kind = .id_ref, .quantifier = .required },15834 .{ .kind = .id_ref, .quantifier = .required },
14476 .{ .kind = .id_ref, .quantifier = .required },15835 .{ .kind = .id_ref, .quantifier = .required },
14477 },15836 },
14478 },15837 },
14479 .{15838 .{
14480 .name = "atanh",15839 .name = "native_recip",
14481 .opcode = 8,15840 .opcode = 90,
14482 .operands = &.{15841 .operands = &.{
14483 .{ .kind = .id_ref, .quantifier = .required },15842 .{ .kind = .id_ref, .quantifier = .required },
14484 },15843 },
14485 },15844 },
14486 .{15845 .{
14487 .name = "atanpi",15846 .name = "native_rsqrt",
14488 .opcode = 9,15847 .opcode = 91,
14489 .operands = &.{15848 .operands = &.{
14490 .{ .kind = .id_ref, .quantifier = .required },15849 .{ .kind = .id_ref, .quantifier = .required },
14491 },15850 },
14492 },15851 },
14493 .{15852 .{
14494 .name = "atan2pi",15853 .name = "native_sin",
14495 .opcode = 10,15854 .opcode = 92,
14496 .operands = &.{15855 .operands = &.{
14497 .{ .kind = .id_ref, .quantifier = .required },15856 .{ .kind = .id_ref, .quantifier = .required },
14498 .{ .kind = .id_ref, .quantifier = .required },
14499 },15857 },
14500 },15858 },
14501 .{15859 .{
14502 .name = "cbrt",15860 .name = "native_sqrt",
14503 .opcode = 11,15861 .opcode = 93,
14504 .operands = &.{15862 .operands = &.{
14505 .{ .kind = .id_ref, .quantifier = .required },15863 .{ .kind = .id_ref, .quantifier = .required },
14506 },15864 },
14507 },15865 },
14508 .{15866 .{
14509 .name = "ceil",15867 .name = "native_tan",
14510 .opcode = 12,15868 .opcode = 94,
14511 .operands = &.{15869 .operands = &.{
14512 .{ .kind = .id_ref, .quantifier = .required },15870 .{ .kind = .id_ref, .quantifier = .required },
14513 },15871 },
14514 },15872 },
14515 .{15873 .{
14516 .name = "copysign",15874 .name = "fclamp",
14517 .opcode = 13,15875 .opcode = 95,
14518 .operands = &.{15876 .operands = &.{
14519 .{ .kind = .id_ref, .quantifier = .required },15877 .{ .kind = .id_ref, .quantifier = .required },
14520 .{ .kind = .id_ref, .quantifier = .required },15878 .{ .kind = .id_ref, .quantifier = .required },
14521 },
14522 },
14523 .{
14524 .name = "cos",
14525 .opcode = 14,
14526 .operands = &.{
14527 .{ .kind = .id_ref, .quantifier = .required },15879 .{ .kind = .id_ref, .quantifier = .required },
14528 },15880 },
14529 },15881 },
14530 .{15882 .{
14531 .name = "cosh",15883 .name = "degrees",
14532 .opcode = 15,15884 .opcode = 96,
14533 .operands = &.{15885 .operands = &.{
14534 .{ .kind = .id_ref, .quantifier = .required },15886 .{ .kind = .id_ref, .quantifier = .required },
14535 },15887 },
14536 },15888 },
14537 .{15889 .{
14538 .name = "cospi",15890 .name = "fmax_common",
14539 .opcode = 16,15891 .opcode = 97,
14540 .operands = &.{15892 .operands = &.{
14541 .{ .kind = .id_ref, .quantifier = .required },15893 .{ .kind = .id_ref, .quantifier = .required },
15894 .{ .kind = .id_ref, .quantifier = .required },
14542 },15895 },
14543 },15896 },
14544 .{15897 .{
14545 .name = "erfc",15898 .name = "fmin_common",
14546 .opcode = 17,15899 .opcode = 98,
14547 .operands = &.{15900 .operands = &.{
14548 .{ .kind = .id_ref, .quantifier = .required },15901 .{ .kind = .id_ref, .quantifier = .required },
15902 .{ .kind = .id_ref, .quantifier = .required },
14549 },15903 },
14550 },15904 },
14551 .{15905 .{
14552 .name = "erf",15906 .name = "mix",
14553 .opcode = 18,15907 .opcode = 99,
14554 .operands = &.{15908 .operands = &.{
14555 .{ .kind = .id_ref, .quantifier = .required },15909 .{ .kind = .id_ref, .quantifier = .required },
15910 .{ .kind = .id_ref, .quantifier = .required },
15911 .{ .kind = .id_ref, .quantifier = .required },
14556 },15912 },
14557 },15913 },
14558 .{15914 .{
14559 .name = "exp",15915 .name = "radians",
14560 .opcode = 19,15916 .opcode = 100,
14561 .operands = &.{15917 .operands = &.{
14562 .{ .kind = .id_ref, .quantifier = .required },15918 .{ .kind = .id_ref, .quantifier = .required },
14563 },15919 },
14564 },15920 },
14565 .{15921 .{
14566 .name = "exp2",15922 .name = "step",
14567 .opcode = 20,15923 .opcode = 101,
14568 .operands = &.{15924 .operands = &.{
14569 .{ .kind = .id_ref, .quantifier = .required },15925 .{ .kind = .id_ref, .quantifier = .required },
15926 .{ .kind = .id_ref, .quantifier = .required },
14570 },15927 },
14571 },15928 },
14572 .{15929 .{
14573 .name = "exp10",15930 .name = "smoothstep",
14574 .opcode = 21,15931 .opcode = 102,
14575 .operands = &.{15932 .operands = &.{
14576 .{ .kind = .id_ref, .quantifier = .required },15933 .{ .kind = .id_ref, .quantifier = .required },
15934 .{ .kind = .id_ref, .quantifier = .required },
15935 .{ .kind = .id_ref, .quantifier = .required },
14577 },15936 },
14578 },15937 },
14579 .{15938 .{
14580 .name = "expm1",15939 .name = "sign",
14581 .opcode = 22,15940 .opcode = 103,
14582 .operands = &.{15941 .operands = &.{
14583 .{ .kind = .id_ref, .quantifier = .required },15942 .{ .kind = .id_ref, .quantifier = .required },
14584 },15943 },
14585 },15944 },
14586 .{15945 .{
14587 .name = "fabs",15946 .name = "cross",
14588 .opcode = 23,15947 .opcode = 104,
14589 .operands = &.{15948 .operands = &.{
14590 .{ .kind = .id_ref, .quantifier = .required },15949 .{ .kind = .id_ref, .quantifier = .required },
15950 .{ .kind = .id_ref, .quantifier = .required },
14591 },15951 },
14592 },15952 },
14593 .{15953 .{
14594 .name = "fdim",15954 .name = "distance",
14595 .opcode = 24,15955 .opcode = 105,
14596 .operands = &.{15956 .operands = &.{
14597 .{ .kind = .id_ref, .quantifier = .required },15957 .{ .kind = .id_ref, .quantifier = .required },
14598 .{ .kind = .id_ref, .quantifier = .required },15958 .{ .kind = .id_ref, .quantifier = .required },
14599 },15959 },
14600 },15960 },
14601 .{15961 .{
14602 .name = "floor",15962 .name = "length",
14603 .opcode = 25,15963 .opcode = 106,
14604 .operands = &.{15964 .operands = &.{
14605 .{ .kind = .id_ref, .quantifier = .required },15965 .{ .kind = .id_ref, .quantifier = .required },
14606 },15966 },
14607 },15967 },
14608 .{15968 .{
14609 .name = "fma",15969 .name = "normalize",
14610 .opcode = 26,15970 .opcode = 107,
14611 .operands = &.{15971 .operands = &.{
14612 .{ .kind = .id_ref, .quantifier = .required },15972 .{ .kind = .id_ref, .quantifier = .required },
14613 .{ .kind = .id_ref, .quantifier = .required },
14614 .{ .kind = .id_ref, .quantifier = .required },
14615 },15973 },
14616 },15974 },
14617 .{15975 .{
14618 .name = "fmax",15976 .name = "fast_distance",
14619 .opcode = 27,15977 .opcode = 108,
14620 .operands = &.{15978 .operands = &.{
14621 .{ .kind = .id_ref, .quantifier = .required },15979 .{ .kind = .id_ref, .quantifier = .required },
14622 .{ .kind = .id_ref, .quantifier = .required },15980 .{ .kind = .id_ref, .quantifier = .required },
14623 },15981 },
14624 },15982 },
14625 .{15983 .{
14626 .name = "fmin",15984 .name = "fast_length",
14627 .opcode = 28,15985 .opcode = 109,
14628 .operands = &.{15986 .operands = &.{
14629 .{ .kind = .id_ref, .quantifier = .required },15987 .{ .kind = .id_ref, .quantifier = .required },
14630 .{ .kind = .id_ref, .quantifier = .required },
14631 },15988 },
14632 },15989 },
14633 .{15990 .{
14634 .name = "fmod",15991 .name = "fast_normalize",
14635 .opcode = 29,15992 .opcode = 110,
14636 .operands = &.{15993 .operands = &.{
14637 .{ .kind = .id_ref, .quantifier = .required },15994 .{ .kind = .id_ref, .quantifier = .required },
14638 .{ .kind = .id_ref, .quantifier = .required },
14639 },15995 },
14640 },15996 },
14641 .{15997 .{
14642 .name = "fract",15998 .name = "s_abs",
14643 .opcode = 30,15999 .opcode = 141,
14644 .operands = &.{16000 .operands = &.{
14645 .{ .kind = .id_ref, .quantifier = .required },16001 .{ .kind = .id_ref, .quantifier = .required },
14646 .{ .kind = .id_ref, .quantifier = .required },
14647 },16002 },
14648 },16003 },
14649 .{16004 .{
14650 .name = "frexp",16005 .name = "s_abs_diff",
14651 .opcode = 31,16006 .opcode = 142,
14652 .operands = &.{16007 .operands = &.{
14653 .{ .kind = .id_ref, .quantifier = .required },16008 .{ .kind = .id_ref, .quantifier = .required },
14654 .{ .kind = .id_ref, .quantifier = .required },16009 .{ .kind = .id_ref, .quantifier = .required },
14655 },16010 },
14656 },16011 },
14657 .{16012 .{
14658 .name = "hypot",16013 .name = "s_add_sat",
14659 .opcode = 32,16014 .opcode = 143,
14660 .operands = &.{16015 .operands = &.{
14661 .{ .kind = .id_ref, .quantifier = .required },16016 .{ .kind = .id_ref, .quantifier = .required },
14662 .{ .kind = .id_ref, .quantifier = .required },16017 .{ .kind = .id_ref, .quantifier = .required },
14663 },16018 },
14664 },16019 },
14665 .{16020 .{
14666 .name = "ilogb",16021 .name = "u_add_sat",
14667 .opcode = 33,16022 .opcode = 144,
14668 .operands = &.{16023 .operands = &.{
14669 .{ .kind = .id_ref, .quantifier = .required },16024 .{ .kind = .id_ref, .quantifier = .required },
16025 .{ .kind = .id_ref, .quantifier = .required },
14670 },16026 },
14671 },16027 },
14672 .{16028 .{
14673 .name = "ldexp",16029 .name = "s_hadd",
14674 .opcode = 34,16030 .opcode = 145,
14675 .operands = &.{16031 .operands = &.{
14676 .{ .kind = .id_ref, .quantifier = .required },16032 .{ .kind = .id_ref, .quantifier = .required },
14677 .{ .kind = .id_ref, .quantifier = .required },16033 .{ .kind = .id_ref, .quantifier = .required },
14678 },16034 },
14679 },16035 },
14680 .{16036 .{
14681 .name = "lgamma",16037 .name = "u_hadd",
14682 .opcode = 35,16038 .opcode = 146,
14683 .operands = &.{16039 .operands = &.{
14684 .{ .kind = .id_ref, .quantifier = .required },16040 .{ .kind = .id_ref, .quantifier = .required },
16041 .{ .kind = .id_ref, .quantifier = .required },
14685 },16042 },
14686 },16043 },
14687 .{16044 .{
14688 .name = "lgamma_r",16045 .name = "s_rhadd",
14689 .opcode = 36,16046 .opcode = 147,
14690 .operands = &.{16047 .operands = &.{
14691 .{ .kind = .id_ref, .quantifier = .required },16048 .{ .kind = .id_ref, .quantifier = .required },
14692 .{ .kind = .id_ref, .quantifier = .required },16049 .{ .kind = .id_ref, .quantifier = .required },
14693 },16050 },
14694 },16051 },
14695 .{16052 .{
14696 .name = "log",16053 .name = "u_rhadd",
14697 .opcode = 37,16054 .opcode = 148,
14698 .operands = &.{16055 .operands = &.{
14699 .{ .kind = .id_ref, .quantifier = .required },16056 .{ .kind = .id_ref, .quantifier = .required },
16057 .{ .kind = .id_ref, .quantifier = .required },
14700 },16058 },
14701 },16059 },
14702 .{16060 .{
14703 .name = "log2",16061 .name = "s_clamp",
14704 .opcode = 38,16062 .opcode = 149,
14705 .operands = &.{16063 .operands = &.{
14706 .{ .kind = .id_ref, .quantifier = .required },16064 .{ .kind = .id_ref, .quantifier = .required },
16065 .{ .kind = .id_ref, .quantifier = .required },
16066 .{ .kind = .id_ref, .quantifier = .required },
14707 },16067 },
14708 },16068 },
14709 .{16069 .{
14710 .name = "log10",16070 .name = "u_clamp",
14711 .opcode = 39,16071 .opcode = 150,
14712 .operands = &.{16072 .operands = &.{
14713 .{ .kind = .id_ref, .quantifier = .required },16073 .{ .kind = .id_ref, .quantifier = .required },
16074 .{ .kind = .id_ref, .quantifier = .required },
16075 .{ .kind = .id_ref, .quantifier = .required },
14714 },16076 },
14715 },16077 },
14716 .{16078 .{
14717 .name = "log1p",16079 .name = "clz",
14718 .opcode = 40,16080 .opcode = 151,
14719 .operands = &.{16081 .operands = &.{
14720 .{ .kind = .id_ref, .quantifier = .required },16082 .{ .kind = .id_ref, .quantifier = .required },
14721 },16083 },
14722 },16084 },
14723 .{16085 .{
14724 .name = "logb",16086 .name = "ctz",
14725 .opcode = 41,16087 .opcode = 152,
14726 .operands = &.{16088 .operands = &.{
14727 .{ .kind = .id_ref, .quantifier = .required },16089 .{ .kind = .id_ref, .quantifier = .required },
14728 },16090 },
14729 },16091 },
14730 .{16092 .{
14731 .name = "mad",16093 .name = "s_mad_hi",
14732 .opcode = 42,16094 .opcode = 153,
14733 .operands = &.{16095 .operands = &.{
14734 .{ .kind = .id_ref, .quantifier = .required },16096 .{ .kind = .id_ref, .quantifier = .required },
14735 .{ .kind = .id_ref, .quantifier = .required },16097 .{ .kind = .id_ref, .quantifier = .required },
...@@ -14737,607 +16099,636 @@ pub const InstructionSet = enum {...@@ -14737,607 +16099,636 @@ pub const InstructionSet = enum {
14737 },16099 },
14738 },16100 },
14739 .{16101 .{
14740 .name = "maxmag",16102 .name = "u_mad_sat",
14741 .opcode = 43,16103 .opcode = 154,
14742 .operands = &.{16104 .operands = &.{
14743 .{ .kind = .id_ref, .quantifier = .required },16105 .{ .kind = .id_ref, .quantifier = .required },
14744 .{ .kind = .id_ref, .quantifier = .required },16106 .{ .kind = .id_ref, .quantifier = .required },
16107 .{ .kind = .id_ref, .quantifier = .required },
14745 },16108 },
14746 },16109 },
14747 .{16110 .{
14748 .name = "minmag",16111 .name = "s_mad_sat",
14749 .opcode = 44,16112 .opcode = 155,
14750 .operands = &.{16113 .operands = &.{
14751 .{ .kind = .id_ref, .quantifier = .required },16114 .{ .kind = .id_ref, .quantifier = .required },
14752 .{ .kind = .id_ref, .quantifier = .required },16115 .{ .kind = .id_ref, .quantifier = .required },
16116 .{ .kind = .id_ref, .quantifier = .required },
14753 },16117 },
14754 },16118 },
14755 .{16119 .{
14756 .name = "modf",16120 .name = "s_max",
14757 .opcode = 45,16121 .opcode = 156,
14758 .operands = &.{16122 .operands = &.{
14759 .{ .kind = .id_ref, .quantifier = .required },16123 .{ .kind = .id_ref, .quantifier = .required },
14760 .{ .kind = .id_ref, .quantifier = .required },16124 .{ .kind = .id_ref, .quantifier = .required },
14761 },16125 },
14762 },16126 },
14763 .{16127 .{
14764 .name = "nan",16128 .name = "u_max",
14765 .opcode = 46,16129 .opcode = 157,
14766 .operands = &.{16130 .operands = &.{
14767 .{ .kind = .id_ref, .quantifier = .required },16131 .{ .kind = .id_ref, .quantifier = .required },
16132 .{ .kind = .id_ref, .quantifier = .required },
14768 },16133 },
14769 },16134 },
14770 .{16135 .{
14771 .name = "nextafter",16136 .name = "s_min",
14772 .opcode = 47,16137 .opcode = 158,
14773 .operands = &.{16138 .operands = &.{
14774 .{ .kind = .id_ref, .quantifier = .required },16139 .{ .kind = .id_ref, .quantifier = .required },
14775 .{ .kind = .id_ref, .quantifier = .required },16140 .{ .kind = .id_ref, .quantifier = .required },
14776 },16141 },
14777 },16142 },
14778 .{16143 .{
14779 .name = "pow",16144 .name = "u_min",
14780 .opcode = 48,16145 .opcode = 159,
14781 .operands = &.{16146 .operands = &.{
14782 .{ .kind = .id_ref, .quantifier = .required },16147 .{ .kind = .id_ref, .quantifier = .required },
14783 .{ .kind = .id_ref, .quantifier = .required },16148 .{ .kind = .id_ref, .quantifier = .required },
14784 },16149 },
14785 },16150 },
14786 .{16151 .{
14787 .name = "pown",16152 .name = "s_mul_hi",
14788 .opcode = 49,16153 .opcode = 160,
14789 .operands = &.{16154 .operands = &.{
14790 .{ .kind = .id_ref, .quantifier = .required },16155 .{ .kind = .id_ref, .quantifier = .required },
14791 .{ .kind = .id_ref, .quantifier = .required },16156 .{ .kind = .id_ref, .quantifier = .required },
14792 },16157 },
14793 },16158 },
14794 .{16159 .{
14795 .name = "powr",16160 .name = "rotate",
14796 .opcode = 50,16161 .opcode = 161,
14797 .operands = &.{16162 .operands = &.{
14798 .{ .kind = .id_ref, .quantifier = .required },16163 .{ .kind = .id_ref, .quantifier = .required },
14799 .{ .kind = .id_ref, .quantifier = .required },16164 .{ .kind = .id_ref, .quantifier = .required },
14800 },16165 },
14801 },16166 },
14802 .{16167 .{
14803 .name = "remainder",16168 .name = "s_sub_sat",
14804 .opcode = 51,16169 .opcode = 162,
14805 .operands = &.{16170 .operands = &.{
14806 .{ .kind = .id_ref, .quantifier = .required },16171 .{ .kind = .id_ref, .quantifier = .required },
14807 .{ .kind = .id_ref, .quantifier = .required },16172 .{ .kind = .id_ref, .quantifier = .required },
14808 },16173 },
14809 },16174 },
14810 .{16175 .{
14811 .name = "remquo",16176 .name = "u_sub_sat",
14812 .opcode = 52,16177 .opcode = 163,
14813 .operands = &.{16178 .operands = &.{
14814 .{ .kind = .id_ref, .quantifier = .required },16179 .{ .kind = .id_ref, .quantifier = .required },
14815 .{ .kind = .id_ref, .quantifier = .required },16180 .{ .kind = .id_ref, .quantifier = .required },
14816 .{ .kind = .id_ref, .quantifier = .required },
14817 },16181 },
14818 },16182 },
14819 .{16183 .{
14820 .name = "rint",16184 .name = "u_upsample",
14821 .opcode = 53,16185 .opcode = 164,
14822 .operands = &.{16186 .operands = &.{
14823 .{ .kind = .id_ref, .quantifier = .required },16187 .{ .kind = .id_ref, .quantifier = .required },
16188 .{ .kind = .id_ref, .quantifier = .required },
14824 },16189 },
14825 },16190 },
14826 .{16191 .{
14827 .name = "rootn",16192 .name = "s_upsample",
14828 .opcode = 54,16193 .opcode = 165,
14829 .operands = &.{16194 .operands = &.{
14830 .{ .kind = .id_ref, .quantifier = .required },16195 .{ .kind = .id_ref, .quantifier = .required },
14831 .{ .kind = .id_ref, .quantifier = .required },16196 .{ .kind = .id_ref, .quantifier = .required },
14832 },16197 },
14833 },16198 },
14834 .{16199 .{
14835 .name = "round",16200 .name = "popcount",
14836 .opcode = 55,16201 .opcode = 166,
14837 .operands = &.{16202 .operands = &.{
14838 .{ .kind = .id_ref, .quantifier = .required },16203 .{ .kind = .id_ref, .quantifier = .required },
14839 },16204 },
14840 },16205 },
14841 .{16206 .{
14842 .name = "rsqrt",16207 .name = "s_mad24",
14843 .opcode = 56,16208 .opcode = 167,
14844 .operands = &.{16209 .operands = &.{
14845 .{ .kind = .id_ref, .quantifier = .required },16210 .{ .kind = .id_ref, .quantifier = .required },
16211 .{ .kind = .id_ref, .quantifier = .required },
16212 .{ .kind = .id_ref, .quantifier = .required },
14846 },16213 },
14847 },16214 },
14848 .{16215 .{
14849 .name = "sin",16216 .name = "u_mad24",
14850 .opcode = 57,16217 .opcode = 168,
14851 .operands = &.{16218 .operands = &.{
14852 .{ .kind = .id_ref, .quantifier = .required },16219 .{ .kind = .id_ref, .quantifier = .required },
16220 .{ .kind = .id_ref, .quantifier = .required },
16221 .{ .kind = .id_ref, .quantifier = .required },
14853 },16222 },
14854 },16223 },
14855 .{16224 .{
14856 .name = "sincos",16225 .name = "s_mul24",
14857 .opcode = 58,16226 .opcode = 169,
14858 .operands = &.{16227 .operands = &.{
14859 .{ .kind = .id_ref, .quantifier = .required },16228 .{ .kind = .id_ref, .quantifier = .required },
14860 .{ .kind = .id_ref, .quantifier = .required },16229 .{ .kind = .id_ref, .quantifier = .required },
14861 },16230 },
14862 },16231 },
14863 .{16232 .{
14864 .name = "sinh",16233 .name = "u_mul24",
14865 .opcode = 59,16234 .opcode = 170,
14866 .operands = &.{16235 .operands = &.{
14867 .{ .kind = .id_ref, .quantifier = .required },16236 .{ .kind = .id_ref, .quantifier = .required },
16237 .{ .kind = .id_ref, .quantifier = .required },
14868 },16238 },
14869 },16239 },
14870 .{16240 .{
14871 .name = "sinpi",16241 .name = "vloadn",
14872 .opcode = 60,16242 .opcode = 171,
14873 .operands = &.{16243 .operands = &.{
14874 .{ .kind = .id_ref, .quantifier = .required },16244 .{ .kind = .id_ref, .quantifier = .required },
16245 .{ .kind = .id_ref, .quantifier = .required },
16246 .{ .kind = .literal_integer, .quantifier = .required },
14875 },16247 },
14876 },16248 },
14877 .{16249 .{
14878 .name = "sqrt",16250 .name = "vstoren",
14879 .opcode = 61,16251 .opcode = 172,
14880 .operands = &.{16252 .operands = &.{
14881 .{ .kind = .id_ref, .quantifier = .required },16253 .{ .kind = .id_ref, .quantifier = .required },
16254 .{ .kind = .id_ref, .quantifier = .required },
16255 .{ .kind = .id_ref, .quantifier = .required },
14882 },16256 },
14883 },16257 },
14884 .{16258 .{
14885 .name = "tan",16259 .name = "vload_half",
14886 .opcode = 62,16260 .opcode = 173,
14887 .operands = &.{16261 .operands = &.{
14888 .{ .kind = .id_ref, .quantifier = .required },16262 .{ .kind = .id_ref, .quantifier = .required },
16263 .{ .kind = .id_ref, .quantifier = .required },
14889 },16264 },
14890 },16265 },
14891 .{16266 .{
14892 .name = "tanh",16267 .name = "vload_halfn",
14893 .opcode = 63,16268 .opcode = 174,
14894 .operands = &.{16269 .operands = &.{
14895 .{ .kind = .id_ref, .quantifier = .required },16270 .{ .kind = .id_ref, .quantifier = .required },
16271 .{ .kind = .id_ref, .quantifier = .required },
16272 .{ .kind = .literal_integer, .quantifier = .required },
14896 },16273 },
14897 },16274 },
14898 .{16275 .{
14899 .name = "tanpi",16276 .name = "vstore_half",
14900 .opcode = 64,16277 .opcode = 175,
14901 .operands = &.{16278 .operands = &.{
14902 .{ .kind = .id_ref, .quantifier = .required },16279 .{ .kind = .id_ref, .quantifier = .required },
16280 .{ .kind = .id_ref, .quantifier = .required },
16281 .{ .kind = .id_ref, .quantifier = .required },
14903 },16282 },
14904 },16283 },
14905 .{16284 .{
14906 .name = "tgamma",16285 .name = "vstore_half_r",
14907 .opcode = 65,16286 .opcode = 176,
14908 .operands = &.{16287 .operands = &.{
14909 .{ .kind = .id_ref, .quantifier = .required },16288 .{ .kind = .id_ref, .quantifier = .required },
16289 .{ .kind = .id_ref, .quantifier = .required },
16290 .{ .kind = .id_ref, .quantifier = .required },
16291 .{ .kind = .fp_rounding_mode, .quantifier = .required },
14910 },16292 },
14911 },16293 },
14912 .{16294 .{
14913 .name = "trunc",16295 .name = "vstore_halfn",
14914 .opcode = 66,16296 .opcode = 177,
14915 .operands = &.{16297 .operands = &.{
14916 .{ .kind = .id_ref, .quantifier = .required },16298 .{ .kind = .id_ref, .quantifier = .required },
16299 .{ .kind = .id_ref, .quantifier = .required },
16300 .{ .kind = .id_ref, .quantifier = .required },
14917 },16301 },
14918 },16302 },
14919 .{16303 .{
14920 .name = "half_cos",16304 .name = "vstore_halfn_r",
14921 .opcode = 67,16305 .opcode = 178,
14922 .operands = &.{16306 .operands = &.{
14923 .{ .kind = .id_ref, .quantifier = .required },16307 .{ .kind = .id_ref, .quantifier = .required },
16308 .{ .kind = .id_ref, .quantifier = .required },
16309 .{ .kind = .id_ref, .quantifier = .required },
16310 .{ .kind = .fp_rounding_mode, .quantifier = .required },
14924 },16311 },
14925 },16312 },
14926 .{16313 .{
14927 .name = "half_divide",16314 .name = "vloada_halfn",
14928 .opcode = 68,16315 .opcode = 179,
14929 .operands = &.{16316 .operands = &.{
14930 .{ .kind = .id_ref, .quantifier = .required },16317 .{ .kind = .id_ref, .quantifier = .required },
14931 .{ .kind = .id_ref, .quantifier = .required },16318 .{ .kind = .id_ref, .quantifier = .required },
16319 .{ .kind = .literal_integer, .quantifier = .required },
14932 },16320 },
14933 },16321 },
14934 .{16322 .{
14935 .name = "half_exp",16323 .name = "vstorea_halfn",
14936 .opcode = 69,16324 .opcode = 180,
14937 .operands = &.{16325 .operands = &.{
14938 .{ .kind = .id_ref, .quantifier = .required },16326 .{ .kind = .id_ref, .quantifier = .required },
16327 .{ .kind = .id_ref, .quantifier = .required },
16328 .{ .kind = .id_ref, .quantifier = .required },
14939 },16329 },
14940 },16330 },
14941 .{16331 .{
14942 .name = "half_exp2",16332 .name = "vstorea_halfn_r",
14943 .opcode = 70,16333 .opcode = 181,
14944 .operands = &.{16334 .operands = &.{
14945 .{ .kind = .id_ref, .quantifier = .required },16335 .{ .kind = .id_ref, .quantifier = .required },
16336 .{ .kind = .id_ref, .quantifier = .required },
16337 .{ .kind = .id_ref, .quantifier = .required },
16338 .{ .kind = .fp_rounding_mode, .quantifier = .required },
14946 },16339 },
14947 },16340 },
14948 .{16341 .{
14949 .name = "half_exp10",16342 .name = "shuffle",
14950 .opcode = 71,16343 .opcode = 182,
14951 .operands = &.{16344 .operands = &.{
14952 .{ .kind = .id_ref, .quantifier = .required },16345 .{ .kind = .id_ref, .quantifier = .required },
16346 .{ .kind = .id_ref, .quantifier = .required },
14953 },16347 },
14954 },16348 },
14955 .{16349 .{
14956 .name = "half_log",16350 .name = "shuffle2",
14957 .opcode = 72,16351 .opcode = 183,
14958 .operands = &.{16352 .operands = &.{
14959 .{ .kind = .id_ref, .quantifier = .required },16353 .{ .kind = .id_ref, .quantifier = .required },
16354 .{ .kind = .id_ref, .quantifier = .required },
16355 .{ .kind = .id_ref, .quantifier = .required },
14960 },16356 },
14961 },16357 },
14962 .{16358 .{
14963 .name = "half_log2",16359 .name = "printf",
14964 .opcode = 73,16360 .opcode = 184,
14965 .operands = &.{16361 .operands = &.{
14966 .{ .kind = .id_ref, .quantifier = .required },16362 .{ .kind = .id_ref, .quantifier = .required },
16363 .{ .kind = .id_ref, .quantifier = .variadic },
14967 },16364 },
14968 },16365 },
14969 .{16366 .{
14970 .name = "half_log10",16367 .name = "prefetch",
14971 .opcode = 74,16368 .opcode = 185,
14972 .operands = &.{16369 .operands = &.{
14973 .{ .kind = .id_ref, .quantifier = .required },16370 .{ .kind = .id_ref, .quantifier = .required },
16371 .{ .kind = .id_ref, .quantifier = .required },
14974 },16372 },
14975 },16373 },
14976 .{16374 .{
14977 .name = "half_powr",16375 .name = "bitselect",
14978 .opcode = 75,16376 .opcode = 186,
14979 .operands = &.{16377 .operands = &.{
14980 .{ .kind = .id_ref, .quantifier = .required },16378 .{ .kind = .id_ref, .quantifier = .required },
14981 .{ .kind = .id_ref, .quantifier = .required },16379 .{ .kind = .id_ref, .quantifier = .required },
16380 .{ .kind = .id_ref, .quantifier = .required },
14982 },16381 },
14983 },16382 },
14984 .{16383 .{
14985 .name = "half_recip",16384 .name = "select",
14986 .opcode = 76,16385 .opcode = 187,
14987 .operands = &.{16386 .operands = &.{
14988 .{ .kind = .id_ref, .quantifier = .required },16387 .{ .kind = .id_ref, .quantifier = .required },
16388 .{ .kind = .id_ref, .quantifier = .required },
16389 .{ .kind = .id_ref, .quantifier = .required },
14989 },16390 },
14990 },16391 },
14991 .{16392 .{
14992 .name = "half_rsqrt",16393 .name = "u_abs",
14993 .opcode = 77,16394 .opcode = 201,
14994 .operands = &.{16395 .operands = &.{
14995 .{ .kind = .id_ref, .quantifier = .required },16396 .{ .kind = .id_ref, .quantifier = .required },
14996 },16397 },
14997 },16398 },
14998 .{16399 .{
14999 .name = "half_sin",16400 .name = "u_abs_diff",
15000 .opcode = 78,16401 .opcode = 202,
15001 .operands = &.{16402 .operands = &.{
15002 .{ .kind = .id_ref, .quantifier = .required },16403 .{ .kind = .id_ref, .quantifier = .required },
16404 .{ .kind = .id_ref, .quantifier = .required },
15003 },16405 },
15004 },16406 },
15005 .{16407 .{
15006 .name = "half_sqrt",16408 .name = "u_mul_hi",
15007 .opcode = 79,16409 .opcode = 203,
15008 .operands = &.{16410 .operands = &.{
15009 .{ .kind = .id_ref, .quantifier = .required },16411 .{ .kind = .id_ref, .quantifier = .required },
16412 .{ .kind = .id_ref, .quantifier = .required },
15010 },16413 },
15011 },16414 },
15012 .{16415 .{
15013 .name = "half_tan",16416 .name = "u_mad_hi",
15014 .opcode = 80,16417 .opcode = 204,
15015 .operands = &.{16418 .operands = &.{
15016 .{ .kind = .id_ref, .quantifier = .required },16419 .{ .kind = .id_ref, .quantifier = .required },
16420 .{ .kind = .id_ref, .quantifier = .required },
16421 .{ .kind = .id_ref, .quantifier = .required },
15017 },16422 },
15018 },16423 },
16424 },
16425 .@"GLSL.std.450" => &.{
15019 .{16426 .{
15020 .name = "native_cos",16427 .name = "Round",
15021 .opcode = 81,16428 .opcode = 1,
15022 .operands = &.{16429 .operands = &.{
15023 .{ .kind = .id_ref, .quantifier = .required },16430 .{ .kind = .id_ref, .quantifier = .required },
15024 },16431 },
15025 },16432 },
15026 .{16433 .{
15027 .name = "native_divide",16434 .name = "RoundEven",
15028 .opcode = 82,16435 .opcode = 2,
15029 .operands = &.{16436 .operands = &.{
15030 .{ .kind = .id_ref, .quantifier = .required },16437 .{ .kind = .id_ref, .quantifier = .required },
15031 .{ .kind = .id_ref, .quantifier = .required },
15032 },16438 },
15033 },16439 },
15034 .{16440 .{
15035 .name = "native_exp",16441 .name = "Trunc",
15036 .opcode = 83,16442 .opcode = 3,
15037 .operands = &.{16443 .operands = &.{
15038 .{ .kind = .id_ref, .quantifier = .required },16444 .{ .kind = .id_ref, .quantifier = .required },
15039 },16445 },
15040 },16446 },
15041 .{16447 .{
15042 .name = "native_exp2",16448 .name = "FAbs",
15043 .opcode = 84,16449 .opcode = 4,
15044 .operands = &.{16450 .operands = &.{
15045 .{ .kind = .id_ref, .quantifier = .required },16451 .{ .kind = .id_ref, .quantifier = .required },
15046 },16452 },
15047 },16453 },
15048 .{16454 .{
15049 .name = "native_exp10",16455 .name = "SAbs",
15050 .opcode = 85,16456 .opcode = 5,
15051 .operands = &.{16457 .operands = &.{
15052 .{ .kind = .id_ref, .quantifier = .required },16458 .{ .kind = .id_ref, .quantifier = .required },
15053 },16459 },
15054 },16460 },
15055 .{16461 .{
15056 .name = "native_log",16462 .name = "FSign",
15057 .opcode = 86,16463 .opcode = 6,
15058 .operands = &.{16464 .operands = &.{
15059 .{ .kind = .id_ref, .quantifier = .required },16465 .{ .kind = .id_ref, .quantifier = .required },
15060 },16466 },
15061 },16467 },
15062 .{16468 .{
15063 .name = "native_log2",16469 .name = "SSign",
15064 .opcode = 87,16470 .opcode = 7,
15065 .operands = &.{16471 .operands = &.{
15066 .{ .kind = .id_ref, .quantifier = .required },16472 .{ .kind = .id_ref, .quantifier = .required },
15067 },16473 },
15068 },16474 },
15069 .{16475 .{
15070 .name = "native_log10",16476 .name = "Floor",
15071 .opcode = 88,16477 .opcode = 8,
15072 .operands = &.{16478 .operands = &.{
15073 .{ .kind = .id_ref, .quantifier = .required },16479 .{ .kind = .id_ref, .quantifier = .required },
15074 },16480 },
15075 },16481 },
15076 .{16482 .{
15077 .name = "native_powr",16483 .name = "Ceil",
15078 .opcode = 89,16484 .opcode = 9,
15079 .operands = &.{16485 .operands = &.{
15080 .{ .kind = .id_ref, .quantifier = .required },16486 .{ .kind = .id_ref, .quantifier = .required },
15081 .{ .kind = .id_ref, .quantifier = .required },
15082 },16487 },
15083 },16488 },
15084 .{16489 .{
15085 .name = "native_recip",16490 .name = "Fract",
15086 .opcode = 90,16491 .opcode = 10,
15087 .operands = &.{16492 .operands = &.{
15088 .{ .kind = .id_ref, .quantifier = .required },16493 .{ .kind = .id_ref, .quantifier = .required },
15089 },16494 },
15090 },16495 },
15091 .{16496 .{
15092 .name = "native_rsqrt",16497 .name = "Radians",
15093 .opcode = 91,16498 .opcode = 11,
15094 .operands = &.{16499 .operands = &.{
15095 .{ .kind = .id_ref, .quantifier = .required },16500 .{ .kind = .id_ref, .quantifier = .required },
15096 },16501 },
15097 },16502 },
15098 .{16503 .{
15099 .name = "native_sin",16504 .name = "Degrees",
15100 .opcode = 92,16505 .opcode = 12,
15101 .operands = &.{16506 .operands = &.{
15102 .{ .kind = .id_ref, .quantifier = .required },16507 .{ .kind = .id_ref, .quantifier = .required },
15103 },16508 },
15104 },16509 },
15105 .{16510 .{
15106 .name = "native_sqrt",16511 .name = "Sin",
15107 .opcode = 93,16512 .opcode = 13,
15108 .operands = &.{16513 .operands = &.{
15109 .{ .kind = .id_ref, .quantifier = .required },16514 .{ .kind = .id_ref, .quantifier = .required },
15110 },16515 },
15111 },16516 },
15112 .{16517 .{
15113 .name = "native_tan",16518 .name = "Cos",
15114 .opcode = 94,16519 .opcode = 14,
15115 .operands = &.{16520 .operands = &.{
15116 .{ .kind = .id_ref, .quantifier = .required },16521 .{ .kind = .id_ref, .quantifier = .required },
15117 },16522 },
15118 },16523 },
15119 .{16524 .{
15120 .name = "fclamp",16525 .name = "Tan",
15121 .opcode = 95,16526 .opcode = 15,
15122 .operands = &.{16527 .operands = &.{
15123 .{ .kind = .id_ref, .quantifier = .required },16528 .{ .kind = .id_ref, .quantifier = .required },
15124 .{ .kind = .id_ref, .quantifier = .required },
15125 .{ .kind = .id_ref, .quantifier = .required },
15126 },16529 },
15127 },16530 },
15128 .{16531 .{
15129 .name = "degrees",16532 .name = "Asin",
15130 .opcode = 96,16533 .opcode = 16,
15131 .operands = &.{16534 .operands = &.{
15132 .{ .kind = .id_ref, .quantifier = .required },16535 .{ .kind = .id_ref, .quantifier = .required },
15133 },16536 },
15134 },16537 },
15135 .{16538 .{
15136 .name = "fmax_common",16539 .name = "Acos",
15137 .opcode = 97,16540 .opcode = 17,
15138 .operands = &.{16541 .operands = &.{
15139 .{ .kind = .id_ref, .quantifier = .required },16542 .{ .kind = .id_ref, .quantifier = .required },
15140 .{ .kind = .id_ref, .quantifier = .required },
15141 },16543 },
15142 },16544 },
15143 .{16545 .{
15144 .name = "fmin_common",16546 .name = "Atan",
15145 .opcode = 98,16547 .opcode = 18,
15146 .operands = &.{16548 .operands = &.{
15147 .{ .kind = .id_ref, .quantifier = .required },16549 .{ .kind = .id_ref, .quantifier = .required },
15148 .{ .kind = .id_ref, .quantifier = .required },
15149 },16550 },
15150 },16551 },
15151 .{16552 .{
15152 .name = "mix",16553 .name = "Sinh",
15153 .opcode = 99,16554 .opcode = 19,
15154 .operands = &.{16555 .operands = &.{
15155 .{ .kind = .id_ref, .quantifier = .required },16556 .{ .kind = .id_ref, .quantifier = .required },
15156 .{ .kind = .id_ref, .quantifier = .required },
15157 .{ .kind = .id_ref, .quantifier = .required },
15158 },16557 },
15159 },16558 },
15160 .{16559 .{
15161 .name = "radians",16560 .name = "Cosh",
15162 .opcode = 100,16561 .opcode = 20,
15163 .operands = &.{16562 .operands = &.{
15164 .{ .kind = .id_ref, .quantifier = .required },16563 .{ .kind = .id_ref, .quantifier = .required },
15165 },16564 },
15166 },16565 },
15167 .{16566 .{
15168 .name = "step",16567 .name = "Tanh",
15169 .opcode = 101,16568 .opcode = 21,
15170 .operands = &.{16569 .operands = &.{
15171 .{ .kind = .id_ref, .quantifier = .required },16570 .{ .kind = .id_ref, .quantifier = .required },
15172 .{ .kind = .id_ref, .quantifier = .required },
15173 },16571 },
15174 },16572 },
15175 .{16573 .{
15176 .name = "smoothstep",16574 .name = "Asinh",
15177 .opcode = 102,16575 .opcode = 22,
15178 .operands = &.{16576 .operands = &.{
15179 .{ .kind = .id_ref, .quantifier = .required },16577 .{ .kind = .id_ref, .quantifier = .required },
15180 .{ .kind = .id_ref, .quantifier = .required },
15181 .{ .kind = .id_ref, .quantifier = .required },
15182 },16578 },
15183 },16579 },
15184 .{16580 .{
15185 .name = "sign",16581 .name = "Acosh",
15186 .opcode = 103,16582 .opcode = 23,
15187 .operands = &.{16583 .operands = &.{
15188 .{ .kind = .id_ref, .quantifier = .required },16584 .{ .kind = .id_ref, .quantifier = .required },
15189 },16585 },
15190 },16586 },
15191 .{16587 .{
15192 .name = "cross",16588 .name = "Atanh",
15193 .opcode = 104,16589 .opcode = 24,
15194 .operands = &.{16590 .operands = &.{
15195 .{ .kind = .id_ref, .quantifier = .required },16591 .{ .kind = .id_ref, .quantifier = .required },
15196 .{ .kind = .id_ref, .quantifier = .required },
15197 },16592 },
15198 },16593 },
15199 .{16594 .{
15200 .name = "distance",16595 .name = "Atan2",
15201 .opcode = 105,16596 .opcode = 25,
15202 .operands = &.{16597 .operands = &.{
15203 .{ .kind = .id_ref, .quantifier = .required },16598 .{ .kind = .id_ref, .quantifier = .required },
15204 .{ .kind = .id_ref, .quantifier = .required },16599 .{ .kind = .id_ref, .quantifier = .required },
15205 },16600 },
15206 },16601 },
15207 .{16602 .{
15208 .name = "length",16603 .name = "Pow",
15209 .opcode = 106,16604 .opcode = 26,
15210 .operands = &.{16605 .operands = &.{
15211 .{ .kind = .id_ref, .quantifier = .required },16606 .{ .kind = .id_ref, .quantifier = .required },
16607 .{ .kind = .id_ref, .quantifier = .required },
15212 },16608 },
15213 },16609 },
15214 .{16610 .{
15215 .name = "normalize",16611 .name = "Exp",
15216 .opcode = 107,16612 .opcode = 27,
15217 .operands = &.{16613 .operands = &.{
15218 .{ .kind = .id_ref, .quantifier = .required },16614 .{ .kind = .id_ref, .quantifier = .required },
15219 },16615 },
15220 },16616 },
15221 .{16617 .{
15222 .name = "fast_distance",16618 .name = "Log",
15223 .opcode = 108,16619 .opcode = 28,
15224 .operands = &.{16620 .operands = &.{
15225 .{ .kind = .id_ref, .quantifier = .required },16621 .{ .kind = .id_ref, .quantifier = .required },
15226 .{ .kind = .id_ref, .quantifier = .required },
15227 },16622 },
15228 },16623 },
15229 .{16624 .{
15230 .name = "fast_length",16625 .name = "Exp2",
15231 .opcode = 109,16626 .opcode = 29,
15232 .operands = &.{16627 .operands = &.{
15233 .{ .kind = .id_ref, .quantifier = .required },16628 .{ .kind = .id_ref, .quantifier = .required },
15234 },16629 },
15235 },16630 },
15236 .{16631 .{
15237 .name = "fast_normalize",16632 .name = "Log2",
15238 .opcode = 110,16633 .opcode = 30,
15239 .operands = &.{16634 .operands = &.{
15240 .{ .kind = .id_ref, .quantifier = .required },16635 .{ .kind = .id_ref, .quantifier = .required },
15241 },16636 },
15242 },16637 },
15243 .{16638 .{
15244 .name = "s_abs",16639 .name = "Sqrt",
15245 .opcode = 141,16640 .opcode = 31,
15246 .operands = &.{16641 .operands = &.{
15247 .{ .kind = .id_ref, .quantifier = .required },16642 .{ .kind = .id_ref, .quantifier = .required },
15248 },16643 },
15249 },16644 },
15250 .{16645 .{
15251 .name = "s_abs_diff",16646 .name = "InverseSqrt",
15252 .opcode = 142,16647 .opcode = 32,
15253 .operands = &.{16648 .operands = &.{
15254 .{ .kind = .id_ref, .quantifier = .required },16649 .{ .kind = .id_ref, .quantifier = .required },
15255 .{ .kind = .id_ref, .quantifier = .required },
15256 },16650 },
15257 },16651 },
15258 .{16652 .{
15259 .name = "s_add_sat",16653 .name = "Determinant",
15260 .opcode = 143,16654 .opcode = 33,
15261 .operands = &.{16655 .operands = &.{
15262 .{ .kind = .id_ref, .quantifier = .required },16656 .{ .kind = .id_ref, .quantifier = .required },
15263 .{ .kind = .id_ref, .quantifier = .required },
15264 },16657 },
15265 },16658 },
15266 .{16659 .{
15267 .name = "u_add_sat",16660 .name = "MatrixInverse",
15268 .opcode = 144,16661 .opcode = 34,
15269 .operands = &.{16662 .operands = &.{
15270 .{ .kind = .id_ref, .quantifier = .required },16663 .{ .kind = .id_ref, .quantifier = .required },
15271 .{ .kind = .id_ref, .quantifier = .required },
15272 },16664 },
15273 },16665 },
15274 .{16666 .{
15275 .name = "s_hadd",16667 .name = "Modf",
15276 .opcode = 145,16668 .opcode = 35,
15277 .operands = &.{16669 .operands = &.{
15278 .{ .kind = .id_ref, .quantifier = .required },16670 .{ .kind = .id_ref, .quantifier = .required },
15279 .{ .kind = .id_ref, .quantifier = .required },16671 .{ .kind = .id_ref, .quantifier = .required },
15280 },16672 },
15281 },16673 },
15282 .{16674 .{
15283 .name = "u_hadd",16675 .name = "ModfStruct",
15284 .opcode = 146,16676 .opcode = 36,
15285 .operands = &.{16677 .operands = &.{
15286 .{ .kind = .id_ref, .quantifier = .required },16678 .{ .kind = .id_ref, .quantifier = .required },
15287 .{ .kind = .id_ref, .quantifier = .required },
15288 },16679 },
15289 },16680 },
15290 .{16681 .{
15291 .name = "s_rhadd",16682 .name = "FMin",
15292 .opcode = 147,16683 .opcode = 37,
15293 .operands = &.{16684 .operands = &.{
15294 .{ .kind = .id_ref, .quantifier = .required },16685 .{ .kind = .id_ref, .quantifier = .required },
15295 .{ .kind = .id_ref, .quantifier = .required },16686 .{ .kind = .id_ref, .quantifier = .required },
15296 },16687 },
15297 },16688 },
15298 .{16689 .{
15299 .name = "u_rhadd",16690 .name = "UMin",
15300 .opcode = 148,16691 .opcode = 38,
15301 .operands = &.{16692 .operands = &.{
15302 .{ .kind = .id_ref, .quantifier = .required },16693 .{ .kind = .id_ref, .quantifier = .required },
15303 .{ .kind = .id_ref, .quantifier = .required },16694 .{ .kind = .id_ref, .quantifier = .required },
15304 },16695 },
15305 },16696 },
15306 .{16697 .{
15307 .name = "s_clamp",16698 .name = "SMin",
15308 .opcode = 149,16699 .opcode = 39,
15309 .operands = &.{16700 .operands = &.{
15310 .{ .kind = .id_ref, .quantifier = .required },16701 .{ .kind = .id_ref, .quantifier = .required },
15311 .{ .kind = .id_ref, .quantifier = .required },16702 .{ .kind = .id_ref, .quantifier = .required },
15312 .{ .kind = .id_ref, .quantifier = .required },
15313 },16703 },
15314 },16704 },
15315 .{16705 .{
15316 .name = "u_clamp",16706 .name = "FMax",
15317 .opcode = 150,16707 .opcode = 40,
15318 .operands = &.{16708 .operands = &.{
15319 .{ .kind = .id_ref, .quantifier = .required },16709 .{ .kind = .id_ref, .quantifier = .required },
15320 .{ .kind = .id_ref, .quantifier = .required },16710 .{ .kind = .id_ref, .quantifier = .required },
15321 .{ .kind = .id_ref, .quantifier = .required },
15322 },16711 },
15323 },16712 },
15324 .{16713 .{
15325 .name = "clz",16714 .name = "UMax",
15326 .opcode = 151,16715 .opcode = 41,
15327 .operands = &.{16716 .operands = &.{
15328 .{ .kind = .id_ref, .quantifier = .required },16717 .{ .kind = .id_ref, .quantifier = .required },
16718 .{ .kind = .id_ref, .quantifier = .required },
15329 },16719 },
15330 },16720 },
15331 .{16721 .{
15332 .name = "ctz",16722 .name = "SMax",
15333 .opcode = 152,16723 .opcode = 42,
15334 .operands = &.{16724 .operands = &.{
15335 .{ .kind = .id_ref, .quantifier = .required },16725 .{ .kind = .id_ref, .quantifier = .required },
16726 .{ .kind = .id_ref, .quantifier = .required },
15336 },16727 },
15337 },16728 },
15338 .{16729 .{
15339 .name = "s_mad_hi",16730 .name = "FClamp",
15340 .opcode = 153,16731 .opcode = 43,
15341 .operands = &.{16732 .operands = &.{
15342 .{ .kind = .id_ref, .quantifier = .required },16733 .{ .kind = .id_ref, .quantifier = .required },
15343 .{ .kind = .id_ref, .quantifier = .required },16734 .{ .kind = .id_ref, .quantifier = .required },
...@@ -15345,8 +16736,8 @@ pub const InstructionSet = enum {...@@ -15345,8 +16736,8 @@ pub const InstructionSet = enum {
15345 },16736 },
15346 },16737 },
15347 .{16738 .{
15348 .name = "u_mad_sat",16739 .name = "UClamp",
15349 .opcode = 154,16740 .opcode = 44,
15350 .operands = &.{16741 .operands = &.{
15351 .{ .kind = .id_ref, .quantifier = .required },16742 .{ .kind = .id_ref, .quantifier = .required },
15352 .{ .kind = .id_ref, .quantifier = .required },16743 .{ .kind = .id_ref, .quantifier = .required },
...@@ -15354,8 +16745,8 @@ pub const InstructionSet = enum {...@@ -15354,8 +16745,8 @@ pub const InstructionSet = enum {
15354 },16745 },
15355 },16746 },
15356 .{16747 .{
15357 .name = "s_mad_sat",16748 .name = "SClamp",
15358 .opcode = 155,16749 .opcode = 45,
15359 .operands = &.{16750 .operands = &.{
15360 .{ .kind = .id_ref, .quantifier = .required },16751 .{ .kind = .id_ref, .quantifier = .required },
15361 .{ .kind = .id_ref, .quantifier = .required },16752 .{ .kind = .id_ref, .quantifier = .required },
...@@ -15363,211 +16754,189 @@ pub const InstructionSet = enum {...@@ -15363,211 +16754,189 @@ pub const InstructionSet = enum {
15363 },16754 },
15364 },16755 },
15365 .{16756 .{
15366 .name = "s_max",16757 .name = "FMix",
15367 .opcode = 156,16758 .opcode = 46,
15368 .operands = &.{16759 .operands = &.{
15369 .{ .kind = .id_ref, .quantifier = .required },16760 .{ .kind = .id_ref, .quantifier = .required },
15370 .{ .kind = .id_ref, .quantifier = .required },16761 .{ .kind = .id_ref, .quantifier = .required },
16762 .{ .kind = .id_ref, .quantifier = .required },
15371 },16763 },
15372 },16764 },
15373 .{16765 .{
15374 .name = "u_max",16766 .name = "IMix",
15375 .opcode = 157,16767 .opcode = 47,
15376 .operands = &.{16768 .operands = &.{
15377 .{ .kind = .id_ref, .quantifier = .required },16769 .{ .kind = .id_ref, .quantifier = .required },
15378 .{ .kind = .id_ref, .quantifier = .required },16770 .{ .kind = .id_ref, .quantifier = .required },
16771 .{ .kind = .id_ref, .quantifier = .required },
15379 },16772 },
15380 },16773 },
15381 .{16774 .{
15382 .name = "s_min",16775 .name = "Step",
15383 .opcode = 158,16776 .opcode = 48,
15384 .operands = &.{16777 .operands = &.{
15385 .{ .kind = .id_ref, .quantifier = .required },16778 .{ .kind = .id_ref, .quantifier = .required },
15386 .{ .kind = .id_ref, .quantifier = .required },16779 .{ .kind = .id_ref, .quantifier = .required },
15387 },16780 },
15388 },16781 },
15389 .{16782 .{
15390 .name = "u_min",16783 .name = "SmoothStep",
15391 .opcode = 159,16784 .opcode = 49,
15392 .operands = &.{16785 .operands = &.{
15393 .{ .kind = .id_ref, .quantifier = .required },16786 .{ .kind = .id_ref, .quantifier = .required },
15394 .{ .kind = .id_ref, .quantifier = .required },16787 .{ .kind = .id_ref, .quantifier = .required },
16788 .{ .kind = .id_ref, .quantifier = .required },
15395 },16789 },
15396 },16790 },
15397 .{16791 .{
15398 .name = "s_mul_hi",16792 .name = "Fma",
15399 .opcode = 160,16793 .opcode = 50,
15400 .operands = &.{16794 .operands = &.{
15401 .{ .kind = .id_ref, .quantifier = .required },16795 .{ .kind = .id_ref, .quantifier = .required },
15402 .{ .kind = .id_ref, .quantifier = .required },16796 .{ .kind = .id_ref, .quantifier = .required },
16797 .{ .kind = .id_ref, .quantifier = .required },
15403 },16798 },
15404 },16799 },
15405 .{16800 .{
15406 .name = "rotate",16801 .name = "Frexp",
15407 .opcode = 161,16802 .opcode = 51,
15408 .operands = &.{16803 .operands = &.{
15409 .{ .kind = .id_ref, .quantifier = .required },16804 .{ .kind = .id_ref, .quantifier = .required },
15410 .{ .kind = .id_ref, .quantifier = .required },16805 .{ .kind = .id_ref, .quantifier = .required },
15411 },16806 },
15412 },16807 },
15413 .{16808 .{
15414 .name = "s_sub_sat",16809 .name = "FrexpStruct",
15415 .opcode = 162,16810 .opcode = 52,
15416 .operands = &.{16811 .operands = &.{
15417 .{ .kind = .id_ref, .quantifier = .required },16812 .{ .kind = .id_ref, .quantifier = .required },
15418 .{ .kind = .id_ref, .quantifier = .required },
15419 },16813 },
15420 },16814 },
15421 .{16815 .{
15422 .name = "u_sub_sat",16816 .name = "Ldexp",
15423 .opcode = 163,16817 .opcode = 53,
15424 .operands = &.{16818 .operands = &.{
15425 .{ .kind = .id_ref, .quantifier = .required },16819 .{ .kind = .id_ref, .quantifier = .required },
15426 .{ .kind = .id_ref, .quantifier = .required },16820 .{ .kind = .id_ref, .quantifier = .required },
15427 },16821 },
15428 },16822 },
15429 .{16823 .{
15430 .name = "u_upsample",16824 .name = "PackSnorm4x8",
15431 .opcode = 164,16825 .opcode = 54,
15432 .operands = &.{16826 .operands = &.{
15433 .{ .kind = .id_ref, .quantifier = .required },16827 .{ .kind = .id_ref, .quantifier = .required },
15434 .{ .kind = .id_ref, .quantifier = .required },
15435 },16828 },
15436 },16829 },
15437 .{16830 .{
15438 .name = "s_upsample",16831 .name = "PackUnorm4x8",
15439 .opcode = 165,16832 .opcode = 55,
15440 .operands = &.{16833 .operands = &.{
15441 .{ .kind = .id_ref, .quantifier = .required },16834 .{ .kind = .id_ref, .quantifier = .required },
15442 .{ .kind = .id_ref, .quantifier = .required },
15443 },16835 },
15444 },16836 },
15445 .{16837 .{
15446 .name = "popcount",16838 .name = "PackSnorm2x16",
15447 .opcode = 166,16839 .opcode = 56,
15448 .operands = &.{16840 .operands = &.{
15449 .{ .kind = .id_ref, .quantifier = .required },16841 .{ .kind = .id_ref, .quantifier = .required },
15450 },16842 },
15451 },16843 },
15452 .{16844 .{
15453 .name = "s_mad24",16845 .name = "PackUnorm2x16",
15454 .opcode = 167,16846 .opcode = 57,
15455 .operands = &.{16847 .operands = &.{
15456 .{ .kind = .id_ref, .quantifier = .required },16848 .{ .kind = .id_ref, .quantifier = .required },
15457 .{ .kind = .id_ref, .quantifier = .required },
15458 .{ .kind = .id_ref, .quantifier = .required },
15459 },16849 },
15460 },16850 },
15461 .{16851 .{
15462 .name = "u_mad24",16852 .name = "PackHalf2x16",
15463 .opcode = 168,16853 .opcode = 58,
15464 .operands = &.{16854 .operands = &.{
15465 .{ .kind = .id_ref, .quantifier = .required },16855 .{ .kind = .id_ref, .quantifier = .required },
15466 .{ .kind = .id_ref, .quantifier = .required },
15467 .{ .kind = .id_ref, .quantifier = .required },
15468 },16856 },
15469 },16857 },
15470 .{16858 .{
15471 .name = "s_mul24",16859 .name = "PackDouble2x32",
15472 .opcode = 169,16860 .opcode = 59,
15473 .operands = &.{16861 .operands = &.{
15474 .{ .kind = .id_ref, .quantifier = .required },16862 .{ .kind = .id_ref, .quantifier = .required },
15475 .{ .kind = .id_ref, .quantifier = .required },
15476 },16863 },
15477 },16864 },
15478 .{16865 .{
15479 .name = "u_mul24",16866 .name = "UnpackSnorm2x16",
15480 .opcode = 170,16867 .opcode = 60,
15481 .operands = &.{16868 .operands = &.{
15482 .{ .kind = .id_ref, .quantifier = .required },16869 .{ .kind = .id_ref, .quantifier = .required },
15483 .{ .kind = .id_ref, .quantifier = .required },
15484 },16870 },
15485 },16871 },
15486 .{16872 .{
15487 .name = "vloadn",16873 .name = "UnpackUnorm2x16",
15488 .opcode = 171,16874 .opcode = 61,
15489 .operands = &.{16875 .operands = &.{
15490 .{ .kind = .id_ref, .quantifier = .required },16876 .{ .kind = .id_ref, .quantifier = .required },
15491 .{ .kind = .id_ref, .quantifier = .required },
15492 .{ .kind = .literal_integer, .quantifier = .required },
15493 },16877 },
15494 },16878 },
15495 .{16879 .{
15496 .name = "vstoren",16880 .name = "UnpackHalf2x16",
15497 .opcode = 172,16881 .opcode = 62,
15498 .operands = &.{16882 .operands = &.{
15499 .{ .kind = .id_ref, .quantifier = .required },16883 .{ .kind = .id_ref, .quantifier = .required },
15500 .{ .kind = .id_ref, .quantifier = .required },
15501 .{ .kind = .id_ref, .quantifier = .required },
15502 },16884 },
15503 },16885 },
15504 .{16886 .{
15505 .name = "vload_half",16887 .name = "UnpackSnorm4x8",
15506 .opcode = 173,16888 .opcode = 63,
15507 .operands = &.{16889 .operands = &.{
15508 .{ .kind = .id_ref, .quantifier = .required },16890 .{ .kind = .id_ref, .quantifier = .required },
15509 .{ .kind = .id_ref, .quantifier = .required },
15510 },16891 },
15511 },16892 },
15512 .{16893 .{
15513 .name = "vload_halfn",16894 .name = "UnpackUnorm4x8",
15514 .opcode = 174,16895 .opcode = 64,
15515 .operands = &.{16896 .operands = &.{
15516 .{ .kind = .id_ref, .quantifier = .required },16897 .{ .kind = .id_ref, .quantifier = .required },
15517 .{ .kind = .id_ref, .quantifier = .required },
15518 .{ .kind = .literal_integer, .quantifier = .required },
15519 },16898 },
15520 },16899 },
15521 .{16900 .{
15522 .name = "vstore_half",16901 .name = "UnpackDouble2x32",
15523 .opcode = 175,16902 .opcode = 65,
15524 .operands = &.{16903 .operands = &.{
15525 .{ .kind = .id_ref, .quantifier = .required },16904 .{ .kind = .id_ref, .quantifier = .required },
15526 .{ .kind = .id_ref, .quantifier = .required },
15527 .{ .kind = .id_ref, .quantifier = .required },
15528 },16905 },
15529 },16906 },
15530 .{16907 .{
15531 .name = "vstore_half_r",16908 .name = "Length",
15532 .opcode = 176,16909 .opcode = 66,
15533 .operands = &.{16910 .operands = &.{
15534 .{ .kind = .id_ref, .quantifier = .required },16911 .{ .kind = .id_ref, .quantifier = .required },
15535 .{ .kind = .id_ref, .quantifier = .required },
15536 .{ .kind = .id_ref, .quantifier = .required },
15537 .{ .kind = .fp_rounding_mode, .quantifier = .required },
15538 },16912 },
15539 },16913 },
15540 .{16914 .{
15541 .name = "vstore_halfn",16915 .name = "Distance",
15542 .opcode = 177,16916 .opcode = 67,
15543 .operands = &.{16917 .operands = &.{
15544 .{ .kind = .id_ref, .quantifier = .required },16918 .{ .kind = .id_ref, .quantifier = .required },
15545 .{ .kind = .id_ref, .quantifier = .required },16919 .{ .kind = .id_ref, .quantifier = .required },
15546 .{ .kind = .id_ref, .quantifier = .required },
15547 },16920 },
15548 },16921 },
15549 .{16922 .{
15550 .name = "vstore_halfn_r",16923 .name = "Cross",
15551 .opcode = 178,16924 .opcode = 68,
15552 .operands = &.{16925 .operands = &.{
15553 .{ .kind = .id_ref, .quantifier = .required },16926 .{ .kind = .id_ref, .quantifier = .required },
15554 .{ .kind = .id_ref, .quantifier = .required },16927 .{ .kind = .id_ref, .quantifier = .required },
15555 .{ .kind = .id_ref, .quantifier = .required },
15556 .{ .kind = .fp_rounding_mode, .quantifier = .required },
15557 },16928 },
15558 },16929 },
15559 .{16930 .{
15560 .name = "vloada_halfn",16931 .name = "Normalize",
15561 .opcode = 179,16932 .opcode = 69,
15562 .operands = &.{16933 .operands = &.{
15563 .{ .kind = .id_ref, .quantifier = .required },16934 .{ .kind = .id_ref, .quantifier = .required },
15564 .{ .kind = .id_ref, .quantifier = .required },
15565 .{ .kind = .literal_integer, .quantifier = .required },
15566 },16935 },
15567 },16936 },
15568 .{16937 .{
15569 .name = "vstorea_halfn",16938 .name = "FaceForward",
15570 .opcode = 180,16939 .opcode = 70,
15571 .operands = &.{16940 .operands = &.{
15572 .{ .kind = .id_ref, .quantifier = .required },16941 .{ .kind = .id_ref, .quantifier = .required },
15573 .{ .kind = .id_ref, .quantifier = .required },16942 .{ .kind = .id_ref, .quantifier = .required },
...@@ -15575,92 +16944,85 @@ pub const InstructionSet = enum {...@@ -15575,92 +16944,85 @@ pub const InstructionSet = enum {
15575 },16944 },
15576 },16945 },
15577 .{16946 .{
15578 .name = "vstorea_halfn_r",16947 .name = "Reflect",
15579 .opcode = 181,16948 .opcode = 71,
15580 .operands = &.{16949 .operands = &.{
15581 .{ .kind = .id_ref, .quantifier = .required },16950 .{ .kind = .id_ref, .quantifier = .required },
15582 .{ .kind = .id_ref, .quantifier = .required },16951 .{ .kind = .id_ref, .quantifier = .required },
15583 .{ .kind = .id_ref, .quantifier = .required },
15584 .{ .kind = .fp_rounding_mode, .quantifier = .required },
15585 },16952 },
15586 },16953 },
15587 .{16954 .{
15588 .name = "shuffle",16955 .name = "Refract",
15589 .opcode = 182,16956 .opcode = 72,
15590 .operands = &.{16957 .operands = &.{
15591 .{ .kind = .id_ref, .quantifier = .required },16958 .{ .kind = .id_ref, .quantifier = .required },
15592 .{ .kind = .id_ref, .quantifier = .required },16959 .{ .kind = .id_ref, .quantifier = .required },
16960 .{ .kind = .id_ref, .quantifier = .required },
15593 },16961 },
15594 },16962 },
15595 .{16963 .{
15596 .name = "shuffle2",16964 .name = "FindILsb",
15597 .opcode = 183,16965 .opcode = 73,
15598 .operands = &.{16966 .operands = &.{
15599 .{ .kind = .id_ref, .quantifier = .required },16967 .{ .kind = .id_ref, .quantifier = .required },
15600 .{ .kind = .id_ref, .quantifier = .required },
15601 .{ .kind = .id_ref, .quantifier = .required },
15602 },16968 },
15603 },16969 },
15604 .{16970 .{
15605 .name = "printf",16971 .name = "FindSMsb",
15606 .opcode = 184,16972 .opcode = 74,
15607 .operands = &.{16973 .operands = &.{
15608 .{ .kind = .id_ref, .quantifier = .required },16974 .{ .kind = .id_ref, .quantifier = .required },
15609 .{ .kind = .id_ref, .quantifier = .variadic },
15610 },16975 },
15611 },16976 },
15612 .{16977 .{
15613 .name = "prefetch",16978 .name = "FindUMsb",
15614 .opcode = 185,16979 .opcode = 75,
15615 .operands = &.{16980 .operands = &.{
15616 .{ .kind = .id_ref, .quantifier = .required },16981 .{ .kind = .id_ref, .quantifier = .required },
15617 .{ .kind = .id_ref, .quantifier = .required },
15618 },16982 },
15619 },16983 },
15620 .{16984 .{
15621 .name = "bitselect",16985 .name = "InterpolateAtCentroid",
15622 .opcode = 186,16986 .opcode = 76,
15623 .operands = &.{16987 .operands = &.{
15624 .{ .kind = .id_ref, .quantifier = .required },16988 .{ .kind = .id_ref, .quantifier = .required },
15625 .{ .kind = .id_ref, .quantifier = .required },
15626 .{ .kind = .id_ref, .quantifier = .required },
15627 },16989 },
15628 },16990 },
15629 .{16991 .{
15630 .name = "select",16992 .name = "InterpolateAtSample",
15631 .opcode = 187,16993 .opcode = 77,
15632 .operands = &.{16994 .operands = &.{
15633 .{ .kind = .id_ref, .quantifier = .required },16995 .{ .kind = .id_ref, .quantifier = .required },
15634 .{ .kind = .id_ref, .quantifier = .required },16996 .{ .kind = .id_ref, .quantifier = .required },
15635 .{ .kind = .id_ref, .quantifier = .required },
15636 },16997 },
15637 },16998 },
15638 .{16999 .{
15639 .name = "u_abs",17000 .name = "InterpolateAtOffset",
15640 .opcode = 201,17001 .opcode = 78,
15641 .operands = &.{17002 .operands = &.{
15642 .{ .kind = .id_ref, .quantifier = .required },17003 .{ .kind = .id_ref, .quantifier = .required },
17004 .{ .kind = .id_ref, .quantifier = .required },
15643 },17005 },
15644 },17006 },
15645 .{17007 .{
15646 .name = "u_abs_diff",17008 .name = "NMin",
15647 .opcode = 202,17009 .opcode = 79,
15648 .operands = &.{17010 .operands = &.{
15649 .{ .kind = .id_ref, .quantifier = .required },17011 .{ .kind = .id_ref, .quantifier = .required },
15650 .{ .kind = .id_ref, .quantifier = .required },17012 .{ .kind = .id_ref, .quantifier = .required },
15651 },17013 },
15652 },17014 },
15653 .{17015 .{
15654 .name = "u_mul_hi",17016 .name = "NMax",
15655 .opcode = 203,17017 .opcode = 80,
15656 .operands = &.{17018 .operands = &.{
15657 .{ .kind = .id_ref, .quantifier = .required },17019 .{ .kind = .id_ref, .quantifier = .required },
15658 .{ .kind = .id_ref, .quantifier = .required },17020 .{ .kind = .id_ref, .quantifier = .required },
15659 },17021 },
15660 },17022 },
15661 .{17023 .{
15662 .name = "u_mad_hi",17024 .name = "NClamp",
15663 .opcode = 204,17025 .opcode = 81,
15664 .operands = &.{17026 .operands = &.{
15665 .{ .kind = .id_ref, .quantifier = .required },17027 .{ .kind = .id_ref, .quantifier = .required },
15666 .{ .kind = .id_ref, .quantifier = .required },17028 .{ .kind = .id_ref, .quantifier = .required },
...@@ -15680,3 +17042,72 @@ pub const InstructionSet = enum {...@@ -15680,3 +17042,72 @@ pub const InstructionSet = enum {
15680 };17042 };
15681 }17043 }
15682};17044};
17045pub const Extension = enum {
17046 v1_0,
17047 v1_1,
17048 v1_2,
17049 v1_3,
17050 v1_4,
17051 v1_5,
17052 v1_6,
17053 SPV_EXT_shader_tile_image,
17054 SPV_EXT_float8,
17055 SPV_KHR_fragment_shading_rate,
17056 SPV_KHR_shader_ballot,
17057 SPV_KHR_shader_draw_parameters,
17058 SPV_KHR_workgroup_memory_explicit_layout,
17059 SPV_KHR_subgroup_vote,
17060 SPV_KHR_16bit_storage,
17061 SPV_KHR_device_group,
17062 SPV_KHR_multiview,
17063 SPV_KHR_variable_pointers,
17064 SPV_KHR_shader_atomic_counter_ops,
17065 SPV_KHR_post_depth_coverage,
17066 SPV_KHR_8bit_storage,
17067 SPV_KHR_float_controls,
17068 SPV_KHR_ray_query,
17069 SPV_KHR_untyped_pointers,
17070 SPV_KHR_ray_tracing,
17071 SPV_EXT_shader_stencil_export,
17072 SPV_EXT_shader_image_int64,
17073 SPV_KHR_shader_clock,
17074 SPV_KHR_quad_control,
17075 SPV_KHR_bfloat16,
17076 SPV_KHR_abort,
17077 SPV_EXT_descriptor_heap,
17078 SPV_KHR_constant_data,
17079 SPV_KHR_poison_freeze,
17080 SPV_EXT_shader_viewport_index_layer,
17081 SPV_EXT_fragment_fully_covered,
17082 SPV_EXT_mesh_shader,
17083 SPV_KHR_fragment_shader_barycentric,
17084 SPV_KHR_compute_shader_derivatives,
17085 SPV_EXT_fragment_invocation_density,
17086 SPV_EXT_shader_subgroup_partitioned,
17087 SPV_EXT_descriptor_indexing,
17088 SPV_KHR_ray_tracing_position_fetch,
17089 SPV_KHR_vulkan_memory_model,
17090 SPV_EXT_physical_storage_buffer,
17091 SPV_KHR_physical_storage_buffer,
17092 SPV_EXT_fragment_shader_interlock,
17093 SPV_EXT_demote_to_helper_invocation,
17094 SPV_EXT_opacity_micromap,
17095 SPV_EXT_shader_invocation_reorder,
17096 SPV_EXT_long_vector,
17097 SPV_EXT_shader_64bit_indexing,
17098 SPV_EXT_shader_atomic_float_min_max,
17099 SPV_KHR_expect_assume,
17100 SPV_KHR_integer_dot_product,
17101 SPV_KHR_ray_cull_mask,
17102 SPV_KHR_cooperative_matrix,
17103 SPV_EXT_replicated_composites,
17104 SPV_KHR_bit_instructions,
17105 SPV_KHR_subgroup_rotate,
17106 SPV_KHR_float_controls2,
17107 SPV_KHR_fma,
17108 SPV_EXT_shader_atomic_float_add,
17109 SPV_EXT_optnone,
17110 SPV_EXT_shader_atomic_float16_add,
17111 SPV_EXT_arithmetic_fence,
17112 SPV_KHR_uniform_group_instructions,
17113};
src/link/SpirV.zig+52-46
...@@ -12,7 +12,6 @@ const Air = @import("../Air.zig");...@@ -12,7 +12,6 @@ const Air = @import("../Air.zig");
12const Type = @import("../Type.zig");12const Type = @import("../Type.zig");
13const codegen = @import("../codegen.zig");13const codegen = @import("../codegen.zig");
14const CodeGen = @import("../codegen/spirv/CodeGen.zig");14const CodeGen = @import("../codegen/spirv/CodeGen.zig");
15const Module = @import("../codegen/spirv/Module.zig");
16const BinaryModule = @import("SpirV/BinaryModule.zig");15const BinaryModule = @import("SpirV/BinaryModule.zig");
17const lower_invocation_globals = @import("SpirV/lower_invocation_globals.zig");16const lower_invocation_globals = @import("SpirV/lower_invocation_globals.zig");
18const dedup_types = @import("SpirV/dedup_types.zig");17const dedup_types = @import("SpirV/dedup_types.zig");
...@@ -147,6 +146,21 @@ pub fn loadInput(linker: *Linker, input: link.Input) !void {...@@ -147,6 +146,21 @@ pub fn loadInput(linker: *Linker, input: link.Input) !void {
147146
148 const id_bound = all_words[3];147 const id_bound = all_words[3];
149 const instructions = try gpa.dupe(Word, all_words[5..]);148 const instructions = try gpa.dupe(Word, all_words[5..]);
149 errdefer gpa.free(instructions);
150
151 // OpCapability instructions appear at the top of the module
152 // so we can stop scanning as soon as we hit anything else.
153 var it: BinaryModule.Instruction.Iterator = .init(instructions, 0);
154 const has_linkage = while (it.next()) |inst| switch (inst.opcode) {
155 .OpCapability => {
156 const cap: spec.Capability = @enumFromInt(inst.operands[0]);
157 if (cap == .linkage) break true;
158 },
159 else => break false,
160 } else false;
161 if (!has_linkage) {
162 return diags.fail("SPIR-V object '{f}' is missing the Linkage capability and cannot be linked", .{obj.path});
163 }
150164
151 try linker.external_objects.append(gpa, .{165 try linker.external_objects.append(gpa, .{
152 .instructions = instructions,166 .instructions = instructions,
...@@ -594,63 +608,54 @@ fn emitPreamble(...@@ -594,63 +608,54 @@ fn emitPreamble(
594 capabilities: *Section,608 capabilities: *Section,
595 extensions: *Section,609 extensions: *Section,
596 memory_model: *Section,610 memory_model: *Section,
597) error{OutOfMemory}!void {611) !void {
598 try capabilities.emit(gpa, .OpCapability, .{ .capability = .int8 });612 var caps: std.EnumSet(spec.Capability) = .empty;
599 try capabilities.emit(gpa, .OpCapability, .{ .capability = .int16 });613 var exts: std.StringHashMapUnmanaged(void) = .empty;
614 defer exts.deinit(gpa);
600615
601 switch (target.os.tag) {616 switch (target.os.tag) {
602 .opengl => {617 .opengl, .vulkan => caps.insert(.shader),
603 try capabilities.emit(gpa, .OpCapability, .{ .capability = .shader });
604 try capabilities.emit(gpa, .OpCapability, .{ .capability = .matrix });
605 },
606 .vulkan => {
607 try capabilities.emit(gpa, .OpCapability, .{ .capability = .shader });
608 try capabilities.emit(gpa, .OpCapability, .{ .capability = .matrix });
609 if (target.cpu.arch == .spirv64) {
610 try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_physical_storage_buffer" });
611 try capabilities.emit(gpa, .OpCapability, .{ .capability = .physical_storage_buffer_addresses });
612 }
613 },
614 .opencl, .amdhsa => {618 .opencl, .amdhsa => {
615 try capabilities.emit(gpa, .OpCapability, .{ .capability = .kernel });619 caps.insert(.kernel);
616 try capabilities.emit(gpa, .OpCapability, .{ .capability = .addresses });620 caps.insert(.addresses);
617 },621 },
618 else => unreachable,622 else => unreachable,
619 }623 }
620 if (target.cpu.arch == .spirv64)624 if (target.os.tag == .vulkan and target.cpu.arch == .spirv64) {
621 try capabilities.emit(gpa, .OpCapability, .{ .capability = .int64 });625 caps.insert(.physical_storage_buffer_addresses);
622 if (target.cpu.has(.spirv, .int64))626 try exts.put(gpa, "SPV_KHR_physical_storage_buffer", {});
623 try capabilities.emit(gpa, .OpCapability, .{ .capability = .int64 });
624 if (target.cpu.has(.spirv, .float16)) {
625 if (target.os.tag == .opencl) try extensions.emit(gpa, .OpExtension, .{ .name = "cl_khr_fp16" });
626 try capabilities.emit(gpa, .OpCapability, .{ .capability = .float16 });
627 }
628 if (target.cpu.has(.spirv, .float64))
629 try capabilities.emit(gpa, .OpCapability, .{ .capability = .float64 });
630 if (target.cpu.has(.spirv, .generic_pointer))
631 try capabilities.emit(gpa, .OpCapability, .{ .capability = .generic_pointer });
632 if (target.cpu.has(.spirv, .vector16))
633 try capabilities.emit(gpa, .OpCapability, .{ .capability = .vector16 });
634 if (target.cpu.has(.spirv, .storage_push_constant16)) {
635 try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_16bit_storage" });
636 try capabilities.emit(gpa, .OpCapability, .{ .capability = .storage_push_constant16 });
637 }627 }
638 if (target.cpu.has(.spirv, .arbitrary_precision_integers)) {628 if (has_linkage) caps.insert(.linkage);
639 try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_INTEL_arbitrary_precision_integers" });629
640 try capabilities.emit(gpa, .OpCapability, .{ .capability = .arbitrary_precision_integers_intel });630 inline for (@typeInfo(spec.Capability).@"enum".field_names) |cap_name| {
631 if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, cap_name)))
632 caps.insert(@field(spec.Capability, cap_name));
641 }633 }
642 if (target.cpu.has(.spirv, .variable_pointers)) {634 inline for (@typeInfo(spec.Extension).@"enum".field_names) |ext_name| {
643 try extensions.emit(gpa, .OpExtension, .{ .name = "SPV_KHR_variable_pointers" });635 switch (@field(spec.Extension, ext_name)) {
644 try capabilities.emit(gpa, .OpCapability, .{ .capability = .variable_pointers_storage_buffer });636 .v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {},
645 try capabilities.emit(gpa, .OpCapability, .{ .capability = .variable_pointers });637 else => if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, ext_name)))
638 try exts.put(gpa, ext_name, {}),
639 }
646 }640 }
647 if (has_linkage)641
648 try capabilities.emit(gpa, .OpCapability, .{ .capability = .linkage });642 var cit = caps.iterator();
643 while (cit.next()) |cap| try capabilities.emit(gpa, .OpCapability, .{ .capability = cap });
644 var eit = exts.iterator();
645 while (eit.next()) |e| try extensions.emit(gpa, .OpExtension, .{ .name = e.key_ptr.* });
649646
650 const addressing_model: spec.AddressingModel = switch (target.os.tag) {647 const addressing_model: spec.AddressingModel = switch (target.os.tag) {
651 .opengl => .logical,648 .opengl => .logical,
652 .vulkan => if (target.cpu.arch == .spirv32) .logical else .physical_storage_buffer64,649 .vulkan => switch (target.cpu.arch) {
653 .opencl => if (target.cpu.arch == .spirv32) .physical32 else .physical64,650 .spirv32 => .logical,
651 .spirv64 => .physical_storage_buffer64,
652 else => unreachable,
653 },
654 .opencl => switch (target.cpu.arch) {
655 .spirv32 => .physical32,
656 .spirv64 => .physical64,
657 else => unreachable,
658 },
654 .amdhsa => .physical64,659 .amdhsa => .physical64,
655 else => unreachable,660 else => unreachable,
656 };661 };
...@@ -659,6 +664,7 @@ fn emitPreamble(...@@ -659,6 +664,7 @@ fn emitPreamble(
659 .memory_model = switch (target.os.tag) {664 .memory_model = switch (target.os.tag) {
660 .opencl => .open_cl,665 .opencl => .open_cl,
661 .vulkan, .opengl => .glsl450,666 .vulkan, .opengl => .glsl450,
667 .amdhsa => unreachable, // TODO
662 else => unreachable,668 else => unreachable,
663 },669 },
664 });670 });
test/standalone/build.zig+7
...@@ -69,6 +69,13 @@ pub fn build(b: *std.Build) void {...@@ -69,6 +69,13 @@ pub fn build(b: *std.Build) void {
69 });69 });
70 tool.root_module.addImport("preprocessor", mingw_preprocessor_mod);70 tool.root_module.addImport("preprocessor", mingw_preprocessor_mod);
71 }71 }
72 if (std.mem.endsWith(u8, tool_src_path, "update_cpu_features.zig")) {
73 const spirv_spec = b.createModule(.{
74 .root_source_file = b.path("../../src/codegen/spirv/spec.zig"),
75 .target = tools_target,
76 });
77 tool.root_module.addImport("spirv_spec", spirv_spec);
78 }
7279
73 tools_tests_step.dependOn(&tool.step);80 tools_tests_step.dependOn(&tool.step);
74 }81 }
tools/gen_spirv_spec.zig+104
...@@ -13,6 +13,33 @@ const Operand = g.Operand;...@@ -13,6 +13,33 @@ const Operand = g.Operand;
1313
14const ExtendedStructSet = std.StringHashMap(void);14const ExtendedStructSet = std.StringHashMap(void);
1515
16const allowed_vendors = [_][]const u8{
17 "KHR",
18 "EXT",
19};
20
21fn isAllowedCapability(name: []const u8) bool {
22 // core capabilities (no vendor suffix) end in a lowercase letter or digit.
23 const last = name[name.len - 1];
24 if (std.ascii.isLower(last) or std.ascii.isDigit(last)) return true;
25 for (allowed_vendors) |vendor| {
26 if (std.mem.endsWith(u8, name, vendor)) return true;
27 }
28 return false;
29}
30
31fn isAllowedExtension(name: []const u8) bool {
32 const spv_prefix = "SPV_";
33 if (!std.mem.startsWith(u8, name, spv_prefix)) return false;
34 const tail = name[spv_prefix.len..];
35 for (allowed_vendors) |vendor| {
36 if (std.mem.startsWith(u8, tail, vendor) and
37 tail.len > vendor.len and tail[vendor.len] == '_')
38 return true;
39 }
40 return false;
41}
42
16const Extension = struct {43const Extension = struct {
17 name: []const u8,44 name: []const u8,
18 opcode_name: []const u8,45 opcode_name: []const u8,
...@@ -325,6 +352,43 @@ fn render(...@@ -325,6 +352,43 @@ fn render(
325352
326 try renderOperandKinds(arena, writer, all_operand_kinds.values(), extended_structs);353 try renderOperandKinds(arena, writer, all_operand_kinds.values(), extended_structs);
327 try renderInstructionSet(writer, registry, extensions, all_operand_kinds);354 try renderInstructionSet(writer, registry, extensions, all_operand_kinds);
355 try renderExtension(arena, writer, all_operand_kinds.values());
356}
357
358fn renderExtension(
359 arena: Allocator,
360 writer: *std.Io.Writer,
361 kinds: []const OperandKind,
362) !void {
363 try writer.writeAll(
364 \\pub const Extension = enum {
365 \\v1_0,
366 \\v1_1,
367 \\v1_2,
368 \\v1_3,
369 \\v1_4,
370 \\v1_5,
371 \\v1_6,
372 \\
373 );
374
375 var seen_extensions: std.StringHashMapUnmanaged(void) = .empty;
376 defer seen_extensions.deinit(arena);
377
378 for (kinds) |kind| {
379 if (std.mem.eql(u8, "Capability", kind.kind)) {
380 for (kind.enumerants.?) |enumerant| {
381 if (!isAllowedCapability(enumerant.enumerant)) continue;
382 for (enumerant.extensions) |ext| {
383 if (!isAllowedExtension(ext)) continue;
384 if (seen_extensions.contains(ext)) continue;
385 try seen_extensions.put(arena, ext, {});
386 try writer.print("{s},\n", .{ext});
387 }
388 }
389 }
390 }
391 try writer.writeAll("};\n");
328}392}
329393
330fn renderInstructionSet(394fn renderInstructionSet(
...@@ -687,10 +751,13 @@ fn renderValueEnum(...@@ -687,10 +751,13 @@ fn renderValueEnum(
687751
688 const enum_indices = enum_map.values();752 const enum_indices = enum_map.values();
689753
754 const is_capability = std.mem.eql(u8, "Capability", enumeration.kind);
755
690 try writer.print("pub const {f} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)});756 try writer.print("pub const {f} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)});
691757
692 for (enum_indices) |i| {758 for (enum_indices) |i| {
693 const enumerant = enumerants[i];759 const enumerant = enumerants[i];
760 if (is_capability and !isAllowedCapability(enumerant.enumerant)) continue;
694 // if (enumerant.value != .int) return error.InvalidRegistry;761 // if (enumerant.value != .int) return error.InvalidRegistry;
695762
696 switch (enumerant.value) {763 switch (enumerant.value) {
...@@ -702,6 +769,8 @@ fn renderValueEnum(...@@ -702,6 +769,8 @@ fn renderValueEnum(
702 try writer.writeByte('\n');769 try writer.writeByte('\n');
703770
704 for (aliases.items) |alias| {771 for (aliases.items) |alias| {
772 if (is_capability and (!isAllowedCapability(enumerants[alias.enumerant].enumerant) or
773 !isAllowedCapability(enumerants[alias.alias].enumerant))) continue;
705 try writer.print("pub const {f} = {f}.{f};\n", .{774 try writer.print("pub const {f} = {f}.{f};\n", .{
706 formatId(enumerants[alias.enumerant].enumerant),775 formatId(enumerants[alias.enumerant].enumerant),
707 std.zig.fmtId(enumeration.kind),776 std.zig.fmtId(enumeration.kind),
...@@ -709,6 +778,41 @@ fn renderValueEnum(...@@ -709,6 +778,41 @@ fn renderValueEnum(
709 });778 });
710 }779 }
711780
781 if (is_capability) {
782 try writer.writeAll(
783 \\
784 \\pub fn dependencies(self: Capability) []const Extension {
785 \\ return switch (self) {
786 );
787
788 for (enum_indices) |i| {
789 const enumerant = enumerants[i];
790 if (!isAllowedCapability(enumerant.enumerant)) continue;
791
792 // Convert version to enum.
793 // None is for reserved
794 // Example: "None" -> .v1_0
795 // Example: "1.5" -> .v1_5
796 const enum_version = enumerant.version.?;
797 const version: [4]u8 = .{ 'v', '1', '_', if (enum_version[0] == 'N') '0' else enum_version[2] };
798
799 try writer.print("\n.{f} => &.{{.{s},", .{ formatId(enumerant.enumerant), version });
800 for (enumerant.extensions) |extension| {
801 if (!isAllowedExtension(extension)) continue;
802 try writer.print(".{s},", .{extension});
803 }
804 try writer.writeAll("},");
805 }
806
807 try writer.writeAll(
808 \\};
809 \\}
810 \\};
811 \\
812 );
813 return;
814 }
815
712 if (!extended_structs.contains(enumeration.kind)) {816 if (!extended_structs.contains(enumeration.kind)) {
713 try writer.writeAll("};\n");817 try writer.writeAll("};\n");
714 return;818 return;
tools/update_cpu_features.zig+39-77
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1const builtin = @import("builtin");1const builtin = @import("builtin");
2const spirv_spec = @import("spirv_spec");
23
3const std = @import("std");4const std = @import("std");
4const Io = std.Io;5const Io = std.Io;
...@@ -49,6 +50,43 @@ const ArchTarget = struct {...@@ -49,6 +50,43 @@ const ArchTarget = struct {
49 branch_quota: ?usize = null,50 branch_quota: ?usize = null,
50};51};
5152
53const spirv_extra_features = blk: {
54 const caps_info = @typeInfo(spirv_spec.Capability).@"enum";
55 const exts_info = @typeInfo(spirv_spec.Extension).@"enum";
56 const caps_len = caps_info.field_names.len;
57 const exts_len = exts_info.field_names.len;
58
59 var features: [caps_len + exts_len]Feature = undefined;
60 for (
61 caps_info.field_names,
62 caps_info.field_values,
63 features[0..caps_len],
64 ) |name, value, *feature| {
65 feature.* = .{
66 .zig_name = name,
67 .desc = "Enable " ++ name ++ " capability",
68 .deps = &struct {
69 const extensions = spirv_spec.Capability.dependencies(@enumFromInt(value));
70 const deps: [extensions.len][]const u8 = inner: {
71 var out: [extensions.len][]const u8 = undefined;
72 for (extensions, 0..) |ext, i| out[i] = @tagName(ext);
73 break :inner out;
74 };
75 }.deps,
76 };
77 }
78
79 for (exts_info.field_names, features[caps_len..]) |name, *feature| {
80 feature.* = .{
81 .zig_name = name,
82 .desc = "Enable " ++ name ++ " extension",
83 .deps = &.{},
84 };
85 }
86
87 break :blk features;
88};
89
52const targets = [_]ArchTarget{90const targets = [_]ArchTarget{
53 .{91 .{
54 .zig_name = "aarch64",92 .zig_name = "aarch64",
...@@ -1443,83 +1481,7 @@ const targets = [_]ArchTarget{...@@ -1443,83 +1481,7 @@ const targets = [_]ArchTarget{
1443 .td_name = "SPIRV",1481 .td_name = "SPIRV",
1444 },1482 },
1445 .branch_quota = 2000,1483 .branch_quota = 2000,
1446 .extra_features = &.{1484 .extra_features = &spirv_extra_features,
1447 .{
1448 .zig_name = "v1_0",
1449 .desc = "Enable version 1.0",
1450 .deps = &.{},
1451 },
1452 .{
1453 .zig_name = "v1_1",
1454 .desc = "Enable version 1.1",
1455 .deps = &.{"v1_0"},
1456 },
1457 .{
1458 .zig_name = "v1_2",
1459 .desc = "Enable version 1.2",
1460 .deps = &.{"v1_1"},
1461 },
1462 .{
1463 .zig_name = "v1_3",
1464 .desc = "Enable version 1.3",
1465 .deps = &.{"v1_2"},
1466 },
1467 .{
1468 .zig_name = "v1_4",
1469 .desc = "Enable version 1.4",
1470 .deps = &.{"v1_3"},
1471 },
1472 .{
1473 .zig_name = "v1_5",
1474 .desc = "Enable version 1.5",
1475 .deps = &.{"v1_4"},
1476 },
1477 .{
1478 .zig_name = "v1_6",
1479 .desc = "Enable version 1.6",
1480 .deps = &.{"v1_5"},
1481 },
1482 .{
1483 .zig_name = "int64",
1484 .desc = "Enable Int64 capability",
1485 .deps = &.{"v1_0"},
1486 },
1487 .{
1488 .zig_name = "float16",
1489 .desc = "Enable Float16 capability",
1490 .deps = &.{"v1_0"},
1491 },
1492 .{
1493 .zig_name = "float64",
1494 .desc = "Enable Float64 capability",
1495 .deps = &.{"v1_0"},
1496 },
1497 .{
1498 .zig_name = "storage_push_constant16",
1499 .desc = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",
1500 .deps = &.{"v1_3"},
1501 },
1502 .{
1503 .zig_name = "arbitrary_precision_integers",
1504 .desc = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability",
1505 .deps = &.{"v1_5"},
1506 },
1507 .{
1508 .zig_name = "generic_pointer",
1509 .desc = "Enable GenericPointer capability",
1510 .deps = &.{"v1_0"},
1511 },
1512 .{
1513 .zig_name = "vector16",
1514 .desc = "Enable Vector16 capability",
1515 .deps = &.{"v1_0"},
1516 },
1517 .{
1518 .zig_name = "variable_pointers",
1519 .desc = "Enable SPV_KHR_variable_pointers extension and the VariablePointers capability",
1520 .deps = &.{"v1_0"},
1521 },
1522 },
1523 .extra_cpus = &.{1485 .extra_cpus = &.{
1524 .{1486 .{
1525 .llvm_name = null,1487 .llvm_name = null,