1//! This file is auto-generated by tools/update_cpu_features.zig.
2
3const std = @import("../std.zig");
4const CpuFeature = std.Target.Cpu.Feature;
5const CpuModel = std.Target.Cpu.Model;
6
7pub const Feature = enum {
8 abort_khr,
9 arithmetic_fence_ext,
10 atomic_float16add_ext,
11 atomic_float16min_max_ext,
12 atomic_float32add_ext,
13 atomic_float32min_max_ext,
14 atomic_float64add_ext,
15 atomic_float64min_max_ext,
16 atomic_storage,
17 atomic_storage_ops,
18 b_float16cooperative_matrix_khr,
19 b_float16dot_product_khr,
20 b_float16type_khr,
21 bit_instructions,
22 clip_distance,
23 compute_derivative_group_linear_khr,
24 compute_derivative_group_quads_khr,
25 constant_data_khr,
26 cooperative_matrix_khr,
27 cull_distance,
28 demote_to_helper_invocation,
29 denorm_flush_to_zero,
30 denorm_preserve,
31 derivative_control,
32 descriptor_heap_ext,
33 device_enqueue,
34 device_group,
35 dot_product,
36 dot_product_input4x8bit,
37 dot_product_input4x8bit_packed,
38 dot_product_input_all,
39 draw_parameters,
40 expect_assume_khr,
41 float16,
42 float16buffer,
43 float64,
44 float8cooperative_matrix_ext,
45 float8ext,
46 float_controls2,
47 fmakhr,
48 fragment_barycentric_khr,
49 fragment_density_ext,
50 fragment_fully_covered_ext,
51 fragment_shader_pixel_interlock_ext,
52 fragment_shader_sample_interlock_ext,
53 fragment_shader_shading_rate_interlock_ext,
54 fragment_shading_rate_khr,
55 generic_pointer,
56 geometry,
57 geometry_point_size,
58 geometry_streams,
59 group_non_uniform,
60 group_non_uniform_arithmetic,
61 group_non_uniform_ballot,
62 group_non_uniform_clustered,
63 group_non_uniform_partitioned_ext,
64 group_non_uniform_quad,
65 group_non_uniform_rotate_khr,
66 group_non_uniform_shuffle,
67 group_non_uniform_shuffle_relative,
68 group_non_uniform_vote,
69 group_uniform_arithmetic_khr,
70 groups,
71 image_basic,
72 image_buffer,
73 image_cube_array,
74 image_gather_extended,
75 image_mipmap,
76 image_ms_array,
77 image_query,
78 image_read_write,
79 image_rect,
80 input_attachment,
81 input_attachment_array_dynamic_indexing,
82 input_attachment_array_non_uniform_indexing,
83 int16,
84 int64,
85 int64atomics,
86 int64image_ext,
87 int8,
88 interpolation_function,
89 literal_sampler,
90 long_vector_ext,
91 matrix,
92 mesh_shading_ext,
93 min_lod,
94 multi_view,
95 multi_viewport,
96 named_barrier,
97 opt_none_ext,
98 pipe_storage,
99 pipes,
100 poison_freeze_khr,
101 quad_control_khr,
102 ray_cull_mask_khr,
103 ray_query_khr,
104 ray_query_position_fetch_khr,
105 ray_query_provisional_khr,
106 ray_tracing_khr,
107 ray_tracing_opacity_micromap_ext,
108 ray_tracing_position_fetch_khr,
109 ray_tracing_provisional_khr,
110 ray_traversal_primitive_culling_khr,
111 replicated_composites_ext,
112 runtime_descriptor_array,
113 sample_mask_post_depth_coverage,
114 sample_rate_shading,
115 sampled_buffer,
116 sampled_cube_array,
117 sampled_image_array_dynamic_indexing,
118 sampled_image_array_non_uniform_indexing,
119 sampled_rect,
120 shader64bit_indexing_ext,
121 shader_clock_khr,
122 shader_invocation_reorder_ext,
123 shader_layer,
124 shader_non_uniform,
125 shader_viewport_index,
126 shader_viewport_index_layer_ext,
127 signed_zero_inf_nan_preserve,
128 sparse_residency,
129 SPV_EXT_arithmetic_fence,
130 SPV_EXT_demote_to_helper_invocation,
131 SPV_EXT_descriptor_heap,
132 SPV_EXT_descriptor_indexing,
133 SPV_EXT_float8,
134 SPV_EXT_fragment_fully_covered,
135 SPV_EXT_fragment_invocation_density,
136 SPV_EXT_fragment_shader_interlock,
137 SPV_EXT_long_vector,
138 SPV_EXT_mesh_shader,
139 SPV_EXT_opacity_micromap,
140 SPV_EXT_optnone,
141 SPV_EXT_physical_storage_buffer,
142 SPV_EXT_replicated_composites,
143 SPV_EXT_shader_64bit_indexing,
144 SPV_EXT_shader_atomic_float16_add,
145 SPV_EXT_shader_atomic_float_add,
146 SPV_EXT_shader_atomic_float_min_max,
147 SPV_EXT_shader_image_int64,
148 SPV_EXT_shader_invocation_reorder,
149 SPV_EXT_shader_stencil_export,
150 SPV_EXT_shader_subgroup_partitioned,
151 SPV_EXT_shader_tile_image,
152 SPV_EXT_shader_viewport_index_layer,
153 SPV_KHR_16bit_storage,
154 SPV_KHR_8bit_storage,
155 SPV_KHR_abort,
156 SPV_KHR_bfloat16,
157 SPV_KHR_bit_instructions,
158 SPV_KHR_compute_shader_derivatives,
159 SPV_KHR_constant_data,
160 SPV_KHR_cooperative_matrix,
161 SPV_KHR_device_group,
162 SPV_KHR_expect_assume,
163 SPV_KHR_float_controls,
164 SPV_KHR_float_controls2,
165 SPV_KHR_fma,
166 SPV_KHR_fragment_shader_barycentric,
167 SPV_KHR_fragment_shading_rate,
168 SPV_KHR_integer_dot_product,
169 SPV_KHR_multiview,
170 SPV_KHR_poison_freeze,
171 SPV_KHR_post_depth_coverage,
172 SPV_KHR_quad_control,
173 SPV_KHR_ray_cull_mask,
174 SPV_KHR_ray_query,
175 SPV_KHR_ray_tracing,
176 SPV_KHR_ray_tracing_position_fetch,
177 SPV_KHR_shader_atomic_counter_ops,
178 SPV_KHR_shader_ballot,
179 SPV_KHR_shader_clock,
180 SPV_KHR_shader_draw_parameters,
181 SPV_KHR_subgroup_rotate,
182 SPV_KHR_subgroup_vote,
183 SPV_KHR_uniform_group_instructions,
184 SPV_KHR_untyped_pointers,
185 SPV_KHR_variable_pointers,
186 SPV_KHR_vulkan_memory_model,
187 SPV_KHR_workgroup_memory_explicit_layout,
188 stencil_export_ext,
189 storage_buffer16bit_access,
190 storage_buffer8bit_access,
191 storage_buffer_array_dynamic_indexing,
192 storage_buffer_array_non_uniform_indexing,
193 storage_image_array_dynamic_indexing,
194 storage_image_array_non_uniform_indexing,
195 storage_image_extended_formats,
196 storage_image_multisample,
197 storage_image_read_without_format,
198 storage_image_write_without_format,
199 storage_input_output16,
200 storage_push_constant16,
201 storage_push_constant8,
202 storage_texel_buffer_array_dynamic_indexing,
203 storage_texel_buffer_array_non_uniform_indexing,
204 subgroup_ballot_khr,
205 subgroup_dispatch,
206 subgroup_vote_khr,
207 tessellation,
208 tessellation_point_size,
209 tile_image_color_read_access_ext,
210 tile_image_depth_read_access_ext,
211 tile_image_stencil_read_access_ext,
212 transform_feedback,
213 uniform_and_storage_buffer16bit_access,
214 uniform_and_storage_buffer8bit_access,
215 uniform_buffer_array_dynamic_indexing,
216 uniform_buffer_array_non_uniform_indexing,
217 uniform_decoration,
218 uniform_texel_buffer_array_dynamic_indexing,
219 uniform_texel_buffer_array_non_uniform_indexing,
220 untyped_pointers_khr,
221 v1_0,
222 v1_1,
223 v1_2,
224 v1_3,
225 v1_4,
226 v1_5,
227 v1_6,
228 variable_pointers,
229 variable_pointers_storage_buffer,
230 vector16,
231 vulkan_memory_model,
232 vulkan_memory_model_device_scope,
233 workgroup_memory_explicit_layout16bit_access_khr,
234 workgroup_memory_explicit_layout8bit_access_khr,
235 workgroup_memory_explicit_layout_khr,
236};
237
238pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
239pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
240pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
241pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
242
243pub const all_features = blk: {
244 @setEvalBranchQuota(2000);
245 const len = @typeInfo(Feature).@"enum".field_names.len;
246 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
247 var result: [len]CpuFeature = undefined;
248 result[@backingInt(Feature.abort_khr)] = .{
249 .llvm_name = null,
250 .description = "Enable abort_khr capability",
251 .dependencies = featureSet(&[_]Feature{
252 .SPV_KHR_abort,
253 .v1_0,
254 }),
255 };
256 result[@backingInt(Feature.arithmetic_fence_ext)] = .{
257 .llvm_name = null,
258 .description = "Enable arithmetic_fence_ext capability",
259 .dependencies = featureSet(&[_]Feature{
260 .SPV_EXT_arithmetic_fence,
261 .v1_0,
262 }),
263 };
264 result[@backingInt(Feature.atomic_float16add_ext)] = .{
265 .llvm_name = null,
266 .description = "Enable atomic_float16add_ext capability",
267 .dependencies = featureSet(&[_]Feature{
268 .SPV_EXT_shader_atomic_float16_add,
269 .v1_0,
270 }),
271 };
272 result[@backingInt(Feature.atomic_float16min_max_ext)] = .{
273 .llvm_name = null,
274 .description = "Enable atomic_float16min_max_ext capability",
275 .dependencies = featureSet(&[_]Feature{
276 .SPV_EXT_shader_atomic_float_min_max,
277 .v1_0,
278 }),
279 };
280 result[@backingInt(Feature.atomic_float32add_ext)] = .{
281 .llvm_name = null,
282 .description = "Enable atomic_float32add_ext capability",
283 .dependencies = featureSet(&[_]Feature{
284 .SPV_EXT_shader_atomic_float_add,
285 .v1_0,
286 }),
287 };
288 result[@backingInt(Feature.atomic_float32min_max_ext)] = .{
289 .llvm_name = null,
290 .description = "Enable atomic_float32min_max_ext capability",
291 .dependencies = featureSet(&[_]Feature{
292 .SPV_EXT_shader_atomic_float_min_max,
293 .v1_0,
294 }),
295 };
296 result[@backingInt(Feature.atomic_float64add_ext)] = .{
297 .llvm_name = null,
298 .description = "Enable atomic_float64add_ext capability",
299 .dependencies = featureSet(&[_]Feature{
300 .SPV_EXT_shader_atomic_float_add,
301 .v1_0,
302 }),
303 };
304 result[@backingInt(Feature.atomic_float64min_max_ext)] = .{
305 .llvm_name = null,
306 .description = "Enable atomic_float64min_max_ext capability",
307 .dependencies = featureSet(&[_]Feature{
308 .SPV_EXT_shader_atomic_float_min_max,
309 .v1_0,
310 }),
311 };
312 result[@backingInt(Feature.atomic_storage)] = .{
313 .llvm_name = null,
314 .description = "Enable atomic_storage capability",
315 .dependencies = featureSet(&[_]Feature{
316 .v1_0,
317 }),
318 };
319 result[@backingInt(Feature.atomic_storage_ops)] = .{
320 .llvm_name = null,
321 .description = "Enable atomic_storage_ops capability",
322 .dependencies = featureSet(&[_]Feature{
323 .SPV_KHR_shader_atomic_counter_ops,
324 .v1_0,
325 }),
326 };
327 result[@backingInt(Feature.b_float16cooperative_matrix_khr)] = .{
328 .llvm_name = null,
329 .description = "Enable b_float16cooperative_matrix_khr capability",
330 .dependencies = featureSet(&[_]Feature{
331 .SPV_KHR_bfloat16,
332 .v1_0,
333 }),
334 };
335 result[@backingInt(Feature.b_float16dot_product_khr)] = .{
336 .llvm_name = null,
337 .description = "Enable b_float16dot_product_khr capability",
338 .dependencies = featureSet(&[_]Feature{
339 .SPV_KHR_bfloat16,
340 .v1_0,
341 }),
342 };
343 result[@backingInt(Feature.b_float16type_khr)] = .{
344 .llvm_name = null,
345 .description = "Enable b_float16type_khr capability",
346 .dependencies = featureSet(&[_]Feature{
347 .SPV_KHR_bfloat16,
348 .v1_0,
349 }),
350 };
351 result[@backingInt(Feature.bit_instructions)] = .{
352 .llvm_name = null,
353 .description = "Enable bit_instructions capability",
354 .dependencies = featureSet(&[_]Feature{
355 .SPV_KHR_bit_instructions,
356 .v1_0,
357 }),
358 };
359 result[@backingInt(Feature.clip_distance)] = .{
360 .llvm_name = null,
361 .description = "Enable clip_distance capability",
362 .dependencies = featureSet(&[_]Feature{
363 .v1_0,
364 }),
365 };
366 result[@backingInt(Feature.compute_derivative_group_linear_khr)] = .{
367 .llvm_name = null,
368 .description = "Enable compute_derivative_group_linear_khr capability",
369 .dependencies = featureSet(&[_]Feature{
370 .SPV_KHR_compute_shader_derivatives,
371 .v1_0,
372 }),
373 };
374 result[@backingInt(Feature.compute_derivative_group_quads_khr)] = .{
375 .llvm_name = null,
376 .description = "Enable compute_derivative_group_quads_khr capability",
377 .dependencies = featureSet(&[_]Feature{
378 .SPV_KHR_compute_shader_derivatives,
379 .v1_0,
380 }),
381 };
382 result[@backingInt(Feature.constant_data_khr)] = .{
383 .llvm_name = null,
384 .description = "Enable constant_data_khr capability",
385 .dependencies = featureSet(&[_]Feature{
386 .SPV_KHR_constant_data,
387 .v1_0,
388 }),
389 };
390 result[@backingInt(Feature.cooperative_matrix_khr)] = .{
391 .llvm_name = null,
392 .description = "Enable cooperative_matrix_khr capability",
393 .dependencies = featureSet(&[_]Feature{
394 .SPV_KHR_cooperative_matrix,
395 .v1_0,
396 }),
397 };
398 result[@backingInt(Feature.cull_distance)] = .{
399 .llvm_name = null,
400 .description = "Enable cull_distance capability",
401 .dependencies = featureSet(&[_]Feature{
402 .v1_0,
403 }),
404 };
405 result[@backingInt(Feature.demote_to_helper_invocation)] = .{
406 .llvm_name = null,
407 .description = "Enable demote_to_helper_invocation capability",
408 .dependencies = featureSet(&[_]Feature{
409 .SPV_EXT_demote_to_helper_invocation,
410 .v1_6,
411 }),
412 };
413 result[@backingInt(Feature.denorm_flush_to_zero)] = .{
414 .llvm_name = null,
415 .description = "Enable denorm_flush_to_zero capability",
416 .dependencies = featureSet(&[_]Feature{
417 .SPV_KHR_float_controls,
418 .v1_4,
419 }),
420 };
421 result[@backingInt(Feature.denorm_preserve)] = .{
422 .llvm_name = null,
423 .description = "Enable denorm_preserve capability",
424 .dependencies = featureSet(&[_]Feature{
425 .SPV_KHR_float_controls,
426 .v1_4,
427 }),
428 };
429 result[@backingInt(Feature.derivative_control)] = .{
430 .llvm_name = null,
431 .description = "Enable derivative_control capability",
432 .dependencies = featureSet(&[_]Feature{
433 .v1_0,
434 }),
435 };
436 result[@backingInt(Feature.descriptor_heap_ext)] = .{
437 .llvm_name = null,
438 .description = "Enable descriptor_heap_ext capability",
439 .dependencies = featureSet(&[_]Feature{
440 .SPV_EXT_descriptor_heap,
441 .v1_0,
442 }),
443 };
444 result[@backingInt(Feature.device_enqueue)] = .{
445 .llvm_name = null,
446 .description = "Enable device_enqueue capability",
447 .dependencies = featureSet(&[_]Feature{
448 .v1_0,
449 }),
450 };
451 result[@backingInt(Feature.device_group)] = .{
452 .llvm_name = null,
453 .description = "Enable device_group capability",
454 .dependencies = featureSet(&[_]Feature{
455 .SPV_KHR_device_group,
456 .v1_3,
457 }),
458 };
459 result[@backingInt(Feature.dot_product)] = .{
460 .llvm_name = null,
461 .description = "Enable dot_product capability",
462 .dependencies = featureSet(&[_]Feature{
463 .SPV_KHR_integer_dot_product,
464 .v1_6,
465 }),
466 };
467 result[@backingInt(Feature.dot_product_input4x8bit)] = .{
468 .llvm_name = null,
469 .description = "Enable dot_product_input4x8bit capability",
470 .dependencies = featureSet(&[_]Feature{
471 .SPV_KHR_integer_dot_product,
472 .v1_6,
473 }),
474 };
475 result[@backingInt(Feature.dot_product_input4x8bit_packed)] = .{
476 .llvm_name = null,
477 .description = "Enable dot_product_input4x8bit_packed capability",
478 .dependencies = featureSet(&[_]Feature{
479 .SPV_KHR_integer_dot_product,
480 .v1_6,
481 }),
482 };
483 result[@backingInt(Feature.dot_product_input_all)] = .{
484 .llvm_name = null,
485 .description = "Enable dot_product_input_all capability",
486 .dependencies = featureSet(&[_]Feature{
487 .SPV_KHR_integer_dot_product,
488 .v1_6,
489 }),
490 };
491 result[@backingInt(Feature.draw_parameters)] = .{
492 .llvm_name = null,
493 .description = "Enable draw_parameters capability",
494 .dependencies = featureSet(&[_]Feature{
495 .SPV_KHR_shader_draw_parameters,
496 .v1_3,
497 }),
498 };
499 result[@backingInt(Feature.expect_assume_khr)] = .{
500 .llvm_name = null,
501 .description = "Enable expect_assume_khr capability",
502 .dependencies = featureSet(&[_]Feature{
503 .SPV_KHR_expect_assume,
504 .v1_0,
505 }),
506 };
507 result[@backingInt(Feature.float16)] = .{
508 .llvm_name = null,
509 .description = "Enable float16 capability",
510 .dependencies = featureSet(&[_]Feature{
511 .v1_0,
512 }),
513 };
514 result[@backingInt(Feature.float16buffer)] = .{
515 .llvm_name = null,
516 .description = "Enable float16buffer capability",
517 .dependencies = featureSet(&[_]Feature{
518 .v1_0,
519 }),
520 };
521 result[@backingInt(Feature.float64)] = .{
522 .llvm_name = null,
523 .description = "Enable float64 capability",
524 .dependencies = featureSet(&[_]Feature{
525 .v1_0,
526 }),
527 };
528 result[@backingInt(Feature.float8cooperative_matrix_ext)] = .{
529 .llvm_name = null,
530 .description = "Enable float8cooperative_matrix_ext capability",
531 .dependencies = featureSet(&[_]Feature{
532 .SPV_EXT_float8,
533 .v1_0,
534 }),
535 };
536 result[@backingInt(Feature.float8ext)] = .{
537 .llvm_name = null,
538 .description = "Enable float8ext capability",
539 .dependencies = featureSet(&[_]Feature{
540 .SPV_EXT_float8,
541 .v1_0,
542 }),
543 };
544 result[@backingInt(Feature.float_controls2)] = .{
545 .llvm_name = null,
546 .description = "Enable float_controls2 capability",
547 .dependencies = featureSet(&[_]Feature{
548 .SPV_KHR_float_controls2,
549 .v1_0,
550 }),
551 };
552 result[@backingInt(Feature.fmakhr)] = .{
553 .llvm_name = null,
554 .description = "Enable fmakhr capability",
555 .dependencies = featureSet(&[_]Feature{
556 .SPV_KHR_fma,
557 .v1_0,
558 }),
559 };
560 result[@backingInt(Feature.fragment_barycentric_khr)] = .{
561 .llvm_name = null,
562 .description = "Enable fragment_barycentric_khr capability",
563 .dependencies = featureSet(&[_]Feature{
564 .SPV_KHR_fragment_shader_barycentric,
565 .v1_0,
566 }),
567 };
568 result[@backingInt(Feature.fragment_density_ext)] = .{
569 .llvm_name = null,
570 .description = "Enable fragment_density_ext capability",
571 .dependencies = featureSet(&[_]Feature{
572 .SPV_EXT_fragment_invocation_density,
573 .v1_0,
574 }),
575 };
576 result[@backingInt(Feature.fragment_fully_covered_ext)] = .{
577 .llvm_name = null,
578 .description = "Enable fragment_fully_covered_ext capability",
579 .dependencies = featureSet(&[_]Feature{
580 .SPV_EXT_fragment_fully_covered,
581 .v1_0,
582 }),
583 };
584 result[@backingInt(Feature.fragment_shader_pixel_interlock_ext)] = .{
585 .llvm_name = null,
586 .description = "Enable fragment_shader_pixel_interlock_ext capability",
587 .dependencies = featureSet(&[_]Feature{
588 .SPV_EXT_fragment_shader_interlock,
589 .v1_0,
590 }),
591 };
592 result[@backingInt(Feature.fragment_shader_sample_interlock_ext)] = .{
593 .llvm_name = null,
594 .description = "Enable fragment_shader_sample_interlock_ext capability",
595 .dependencies = featureSet(&[_]Feature{
596 .SPV_EXT_fragment_shader_interlock,
597 .v1_0,
598 }),
599 };
600 result[@backingInt(Feature.fragment_shader_shading_rate_interlock_ext)] = .{
601 .llvm_name = null,
602 .description = "Enable fragment_shader_shading_rate_interlock_ext capability",
603 .dependencies = featureSet(&[_]Feature{
604 .SPV_EXT_fragment_shader_interlock,
605 .v1_0,
606 }),
607 };
608 result[@backingInt(Feature.fragment_shading_rate_khr)] = .{
609 .llvm_name = null,
610 .description = "Enable fragment_shading_rate_khr capability",
611 .dependencies = featureSet(&[_]Feature{
612 .SPV_KHR_fragment_shading_rate,
613 .v1_0,
614 }),
615 };
616 result[@backingInt(Feature.generic_pointer)] = .{
617 .llvm_name = null,
618 .description = "Enable generic_pointer capability",
619 .dependencies = featureSet(&[_]Feature{
620 .v1_0,
621 }),
622 };
623 result[@backingInt(Feature.geometry)] = .{
624 .llvm_name = null,
625 .description = "Enable geometry capability",
626 .dependencies = featureSet(&[_]Feature{
627 .v1_0,
628 }),
629 };
630 result[@backingInt(Feature.geometry_point_size)] = .{
631 .llvm_name = null,
632 .description = "Enable geometry_point_size capability",
633 .dependencies = featureSet(&[_]Feature{
634 .v1_0,
635 }),
636 };
637 result[@backingInt(Feature.geometry_streams)] = .{
638 .llvm_name = null,
639 .description = "Enable geometry_streams capability",
640 .dependencies = featureSet(&[_]Feature{
641 .v1_0,
642 }),
643 };
644 result[@backingInt(Feature.group_non_uniform)] = .{
645 .llvm_name = null,
646 .description = "Enable group_non_uniform capability",
647 .dependencies = featureSet(&[_]Feature{
648 .v1_3,
649 }),
650 };
651 result[@backingInt(Feature.group_non_uniform_arithmetic)] = .{
652 .llvm_name = null,
653 .description = "Enable group_non_uniform_arithmetic capability",
654 .dependencies = featureSet(&[_]Feature{
655 .v1_3,
656 }),
657 };
658 result[@backingInt(Feature.group_non_uniform_ballot)] = .{
659 .llvm_name = null,
660 .description = "Enable group_non_uniform_ballot capability",
661 .dependencies = featureSet(&[_]Feature{
662 .v1_3,
663 }),
664 };
665 result[@backingInt(Feature.group_non_uniform_clustered)] = .{
666 .llvm_name = null,
667 .description = "Enable group_non_uniform_clustered capability",
668 .dependencies = featureSet(&[_]Feature{
669 .v1_3,
670 }),
671 };
672 result[@backingInt(Feature.group_non_uniform_partitioned_ext)] = .{
673 .llvm_name = null,
674 .description = "Enable group_non_uniform_partitioned_ext capability",
675 .dependencies = featureSet(&[_]Feature{
676 .SPV_EXT_shader_subgroup_partitioned,
677 .v1_0,
678 }),
679 };
680 result[@backingInt(Feature.group_non_uniform_quad)] = .{
681 .llvm_name = null,
682 .description = "Enable group_non_uniform_quad capability",
683 .dependencies = featureSet(&[_]Feature{
684 .v1_3,
685 }),
686 };
687 result[@backingInt(Feature.group_non_uniform_rotate_khr)] = .{
688 .llvm_name = null,
689 .description = "Enable group_non_uniform_rotate_khr capability",
690 .dependencies = featureSet(&[_]Feature{
691 .SPV_KHR_subgroup_rotate,
692 .v1_0,
693 }),
694 };
695 result[@backingInt(Feature.group_non_uniform_shuffle)] = .{
696 .llvm_name = null,
697 .description = "Enable group_non_uniform_shuffle capability",
698 .dependencies = featureSet(&[_]Feature{
699 .v1_3,
700 }),
701 };
702 result[@backingInt(Feature.group_non_uniform_shuffle_relative)] = .{
703 .llvm_name = null,
704 .description = "Enable group_non_uniform_shuffle_relative capability",
705 .dependencies = featureSet(&[_]Feature{
706 .v1_3,
707 }),
708 };
709 result[@backingInt(Feature.group_non_uniform_vote)] = .{
710 .llvm_name = null,
711 .description = "Enable group_non_uniform_vote capability",
712 .dependencies = featureSet(&[_]Feature{
713 .v1_3,
714 }),
715 };
716 result[@backingInt(Feature.group_uniform_arithmetic_khr)] = .{
717 .llvm_name = null,
718 .description = "Enable group_uniform_arithmetic_khr capability",
719 .dependencies = featureSet(&[_]Feature{
720 .SPV_KHR_uniform_group_instructions,
721 .v1_0,
722 }),
723 };
724 result[@backingInt(Feature.groups)] = .{
725 .llvm_name = null,
726 .description = "Enable groups capability",
727 .dependencies = featureSet(&[_]Feature{
728 .v1_0,
729 }),
730 };
731 result[@backingInt(Feature.image_basic)] = .{
732 .llvm_name = null,
733 .description = "Enable image_basic capability",
734 .dependencies = featureSet(&[_]Feature{
735 .v1_0,
736 }),
737 };
738 result[@backingInt(Feature.image_buffer)] = .{
739 .llvm_name = null,
740 .description = "Enable image_buffer capability",
741 .dependencies = featureSet(&[_]Feature{
742 .v1_0,
743 }),
744 };
745 result[@backingInt(Feature.image_cube_array)] = .{
746 .llvm_name = null,
747 .description = "Enable image_cube_array capability",
748 .dependencies = featureSet(&[_]Feature{
749 .v1_0,
750 }),
751 };
752 result[@backingInt(Feature.image_gather_extended)] = .{
753 .llvm_name = null,
754 .description = "Enable image_gather_extended capability",
755 .dependencies = featureSet(&[_]Feature{
756 .v1_0,
757 }),
758 };
759 result[@backingInt(Feature.image_mipmap)] = .{
760 .llvm_name = null,
761 .description = "Enable image_mipmap capability",
762 .dependencies = featureSet(&[_]Feature{
763 .v1_0,
764 }),
765 };
766 result[@backingInt(Feature.image_ms_array)] = .{
767 .llvm_name = null,
768 .description = "Enable image_ms_array capability",
769 .dependencies = featureSet(&[_]Feature{
770 .v1_0,
771 }),
772 };
773 result[@backingInt(Feature.image_query)] = .{
774 .llvm_name = null,
775 .description = "Enable image_query capability",
776 .dependencies = featureSet(&[_]Feature{
777 .v1_0,
778 }),
779 };
780 result[@backingInt(Feature.image_read_write)] = .{
781 .llvm_name = null,
782 .description = "Enable image_read_write capability",
783 .dependencies = featureSet(&[_]Feature{
784 .v1_0,
785 }),
786 };
787 result[@backingInt(Feature.image_rect)] = .{
788 .llvm_name = null,
789 .description = "Enable image_rect capability",
790 .dependencies = featureSet(&[_]Feature{
791 .v1_0,
792 }),
793 };
794 result[@backingInt(Feature.input_attachment)] = .{
795 .llvm_name = null,
796 .description = "Enable input_attachment capability",
797 .dependencies = featureSet(&[_]Feature{
798 .v1_0,
799 }),
800 };
801 result[@backingInt(Feature.input_attachment_array_dynamic_indexing)] = .{
802 .llvm_name = null,
803 .description = "Enable input_attachment_array_dynamic_indexing capability",
804 .dependencies = featureSet(&[_]Feature{
805 .SPV_EXT_descriptor_indexing,
806 .v1_5,
807 }),
808 };
809 result[@backingInt(Feature.input_attachment_array_non_uniform_indexing)] = .{
810 .llvm_name = null,
811 .description = "Enable input_attachment_array_non_uniform_indexing capability",
812 .dependencies = featureSet(&[_]Feature{
813 .SPV_EXT_descriptor_indexing,
814 .v1_5,
815 }),
816 };
817 result[@backingInt(Feature.int16)] = .{
818 .llvm_name = null,
819 .description = "Enable int16 capability",
820 .dependencies = featureSet(&[_]Feature{
821 .v1_0,
822 }),
823 };
824 result[@backingInt(Feature.int64)] = .{
825 .llvm_name = null,
826 .description = "Enable int64 capability",
827 .dependencies = featureSet(&[_]Feature{
828 .v1_0,
829 }),
830 };
831 result[@backingInt(Feature.int64atomics)] = .{
832 .llvm_name = null,
833 .description = "Enable int64atomics capability",
834 .dependencies = featureSet(&[_]Feature{
835 .v1_0,
836 }),
837 };
838 result[@backingInt(Feature.int64image_ext)] = .{
839 .llvm_name = null,
840 .description = "Enable int64image_ext capability",
841 .dependencies = featureSet(&[_]Feature{
842 .SPV_EXT_shader_image_int64,
843 .v1_0,
844 }),
845 };
846 result[@backingInt(Feature.int8)] = .{
847 .llvm_name = null,
848 .description = "Enable int8 capability",
849 .dependencies = featureSet(&[_]Feature{
850 .v1_0,
851 }),
852 };
853 result[@backingInt(Feature.interpolation_function)] = .{
854 .llvm_name = null,
855 .description = "Enable interpolation_function capability",
856 .dependencies = featureSet(&[_]Feature{
857 .v1_0,
858 }),
859 };
860 result[@backingInt(Feature.literal_sampler)] = .{
861 .llvm_name = null,
862 .description = "Enable literal_sampler capability",
863 .dependencies = featureSet(&[_]Feature{
864 .v1_0,
865 }),
866 };
867 result[@backingInt(Feature.long_vector_ext)] = .{
868 .llvm_name = null,
869 .description = "Enable long_vector_ext capability",
870 .dependencies = featureSet(&[_]Feature{
871 .SPV_EXT_long_vector,
872 .v1_0,
873 }),
874 };
875 result[@backingInt(Feature.matrix)] = .{
876 .llvm_name = null,
877 .description = "Enable matrix capability",
878 .dependencies = featureSet(&[_]Feature{
879 .v1_0,
880 }),
881 };
882 result[@backingInt(Feature.mesh_shading_ext)] = .{
883 .llvm_name = null,
884 .description = "Enable mesh_shading_ext capability",
885 .dependencies = featureSet(&[_]Feature{
886 .SPV_EXT_mesh_shader,
887 .v1_0,
888 }),
889 };
890 result[@backingInt(Feature.min_lod)] = .{
891 .llvm_name = null,
892 .description = "Enable min_lod capability",
893 .dependencies = featureSet(&[_]Feature{
894 .v1_0,
895 }),
896 };
897 result[@backingInt(Feature.multi_view)] = .{
898 .llvm_name = null,
899 .description = "Enable multi_view capability",
900 .dependencies = featureSet(&[_]Feature{
901 .SPV_KHR_multiview,
902 .v1_3,
903 }),
904 };
905 result[@backingInt(Feature.multi_viewport)] = .{
906 .llvm_name = null,
907 .description = "Enable multi_viewport capability",
908 .dependencies = featureSet(&[_]Feature{
909 .v1_0,
910 }),
911 };
912 result[@backingInt(Feature.named_barrier)] = .{
913 .llvm_name = null,
914 .description = "Enable named_barrier capability",
915 .dependencies = featureSet(&[_]Feature{
916 .v1_1,
917 }),
918 };
919 result[@backingInt(Feature.opt_none_ext)] = .{
920 .llvm_name = null,
921 .description = "Enable opt_none_ext capability",
922 .dependencies = featureSet(&[_]Feature{
923 .SPV_EXT_optnone,
924 .v1_0,
925 }),
926 };
927 result[@backingInt(Feature.pipe_storage)] = .{
928 .llvm_name = null,
929 .description = "Enable pipe_storage capability",
930 .dependencies = featureSet(&[_]Feature{
931 .v1_1,
932 }),
933 };
934 result[@backingInt(Feature.pipes)] = .{
935 .llvm_name = null,
936 .description = "Enable pipes capability",
937 .dependencies = featureSet(&[_]Feature{
938 .v1_0,
939 }),
940 };
941 result[@backingInt(Feature.poison_freeze_khr)] = .{
942 .llvm_name = null,
943 .description = "Enable poison_freeze_khr capability",
944 .dependencies = featureSet(&[_]Feature{
945 .SPV_KHR_poison_freeze,
946 .v1_0,
947 }),
948 };
949 result[@backingInt(Feature.quad_control_khr)] = .{
950 .llvm_name = null,
951 .description = "Enable quad_control_khr capability",
952 .dependencies = featureSet(&[_]Feature{
953 .SPV_KHR_quad_control,
954 .v1_0,
955 }),
956 };
957 result[@backingInt(Feature.ray_cull_mask_khr)] = .{
958 .llvm_name = null,
959 .description = "Enable ray_cull_mask_khr capability",
960 .dependencies = featureSet(&[_]Feature{
961 .SPV_KHR_ray_cull_mask,
962 .v1_0,
963 }),
964 };
965 result[@backingInt(Feature.ray_query_khr)] = .{
966 .llvm_name = null,
967 .description = "Enable ray_query_khr capability",
968 .dependencies = featureSet(&[_]Feature{
969 .SPV_KHR_ray_query,
970 .v1_0,
971 }),
972 };
973 result[@backingInt(Feature.ray_query_position_fetch_khr)] = .{
974 .llvm_name = null,
975 .description = "Enable ray_query_position_fetch_khr capability",
976 .dependencies = featureSet(&[_]Feature{
977 .SPV_KHR_ray_tracing_position_fetch,
978 .v1_0,
979 }),
980 };
981 result[@backingInt(Feature.ray_query_provisional_khr)] = .{
982 .llvm_name = null,
983 .description = "Enable ray_query_provisional_khr capability",
984 .dependencies = featureSet(&[_]Feature{
985 .SPV_KHR_ray_query,
986 .v1_0,
987 }),
988 };
989 result[@backingInt(Feature.ray_tracing_khr)] = .{
990 .llvm_name = null,
991 .description = "Enable ray_tracing_khr capability",
992 .dependencies = featureSet(&[_]Feature{
993 .SPV_KHR_ray_tracing,
994 .v1_0,
995 }),
996 };
997 result[@backingInt(Feature.ray_tracing_opacity_micromap_ext)] = .{
998 .llvm_name = null,
999 .description = "Enable ray_tracing_opacity_micromap_ext capability",
1000 .dependencies = featureSet(&[_]Feature{
1001 .SPV_EXT_opacity_micromap,
1002 .v1_0,
1003 }),
1004 };
1005 result[@backingInt(Feature.ray_tracing_position_fetch_khr)] = .{
1006 .llvm_name = null,
1007 .description = "Enable ray_tracing_position_fetch_khr capability",
1008 .dependencies = featureSet(&[_]Feature{
1009 .SPV_KHR_ray_tracing_position_fetch,
1010 .v1_0,
1011 }),
1012 };
1013 result[@backingInt(Feature.ray_tracing_provisional_khr)] = .{
1014 .llvm_name = null,
1015 .description = "Enable ray_tracing_provisional_khr capability",
1016 .dependencies = featureSet(&[_]Feature{
1017 .SPV_KHR_ray_tracing,
1018 .v1_0,
1019 }),
1020 };
1021 result[@backingInt(Feature.ray_traversal_primitive_culling_khr)] = .{
1022 .llvm_name = null,
1023 .description = "Enable ray_traversal_primitive_culling_khr capability",
1024 .dependencies = featureSet(&[_]Feature{
1025 .SPV_KHR_ray_query,
1026 .SPV_KHR_ray_tracing,
1027 .v1_0,
1028 }),
1029 };
1030 result[@backingInt(Feature.replicated_composites_ext)] = .{
1031 .llvm_name = null,
1032 .description = "Enable replicated_composites_ext capability",
1033 .dependencies = featureSet(&[_]Feature{
1034 .SPV_EXT_replicated_composites,
1035 .v1_0,
1036 }),
1037 };
1038 result[@backingInt(Feature.runtime_descriptor_array)] = .{
1039 .llvm_name = null,
1040 .description = "Enable runtime_descriptor_array capability",
1041 .dependencies = featureSet(&[_]Feature{
1042 .SPV_EXT_descriptor_indexing,
1043 .v1_5,
1044 }),
1045 };
1046 result[@backingInt(Feature.sample_mask_post_depth_coverage)] = .{
1047 .llvm_name = null,
1048 .description = "Enable sample_mask_post_depth_coverage capability",
1049 .dependencies = featureSet(&[_]Feature{
1050 .SPV_KHR_post_depth_coverage,
1051 .v1_0,
1052 }),
1053 };
1054 result[@backingInt(Feature.sample_rate_shading)] = .{
1055 .llvm_name = null,
1056 .description = "Enable sample_rate_shading capability",
1057 .dependencies = featureSet(&[_]Feature{
1058 .v1_0,
1059 }),
1060 };
1061 result[@backingInt(Feature.sampled_buffer)] = .{
1062 .llvm_name = null,
1063 .description = "Enable sampled_buffer capability",
1064 .dependencies = featureSet(&[_]Feature{
1065 .v1_0,
1066 }),
1067 };
1068 result[@backingInt(Feature.sampled_cube_array)] = .{
1069 .llvm_name = null,
1070 .description = "Enable sampled_cube_array capability",
1071 .dependencies = featureSet(&[_]Feature{
1072 .v1_0,
1073 }),
1074 };
1075 result[@backingInt(Feature.sampled_image_array_dynamic_indexing)] = .{
1076 .llvm_name = null,
1077 .description = "Enable sampled_image_array_dynamic_indexing capability",
1078 .dependencies = featureSet(&[_]Feature{
1079 .v1_0,
1080 }),
1081 };
1082 result[@backingInt(Feature.sampled_image_array_non_uniform_indexing)] = .{
1083 .llvm_name = null,
1084 .description = "Enable sampled_image_array_non_uniform_indexing capability",
1085 .dependencies = featureSet(&[_]Feature{
1086 .SPV_EXT_descriptor_indexing,
1087 .v1_5,
1088 }),
1089 };
1090 result[@backingInt(Feature.sampled_rect)] = .{
1091 .llvm_name = null,
1092 .description = "Enable sampled_rect capability",
1093 .dependencies = featureSet(&[_]Feature{
1094 .v1_0,
1095 }),
1096 };
1097 result[@backingInt(Feature.shader64bit_indexing_ext)] = .{
1098 .llvm_name = null,
1099 .description = "Enable shader64bit_indexing_ext capability",
1100 .dependencies = featureSet(&[_]Feature{
1101 .SPV_EXT_shader_64bit_indexing,
1102 .v1_0,
1103 }),
1104 };
1105 result[@backingInt(Feature.shader_clock_khr)] = .{
1106 .llvm_name = null,
1107 .description = "Enable shader_clock_khr capability",
1108 .dependencies = featureSet(&[_]Feature{
1109 .SPV_KHR_shader_clock,
1110 .v1_0,
1111 }),
1112 };
1113 result[@backingInt(Feature.shader_invocation_reorder_ext)] = .{
1114 .llvm_name = null,
1115 .description = "Enable shader_invocation_reorder_ext capability",
1116 .dependencies = featureSet(&[_]Feature{
1117 .SPV_EXT_shader_invocation_reorder,
1118 .v1_0,
1119 }),
1120 };
1121 result[@backingInt(Feature.shader_layer)] = .{
1122 .llvm_name = null,
1123 .description = "Enable shader_layer capability",
1124 .dependencies = featureSet(&[_]Feature{
1125 .v1_5,
1126 }),
1127 };
1128 result[@backingInt(Feature.shader_non_uniform)] = .{
1129 .llvm_name = null,
1130 .description = "Enable shader_non_uniform capability",
1131 .dependencies = featureSet(&[_]Feature{
1132 .SPV_EXT_descriptor_indexing,
1133 .v1_5,
1134 }),
1135 };
1136 result[@backingInt(Feature.shader_viewport_index)] = .{
1137 .llvm_name = null,
1138 .description = "Enable shader_viewport_index capability",
1139 .dependencies = featureSet(&[_]Feature{
1140 .v1_5,
1141 }),
1142 };
1143 result[@backingInt(Feature.shader_viewport_index_layer_ext)] = .{
1144 .llvm_name = null,
1145 .description = "Enable shader_viewport_index_layer_ext capability",
1146 .dependencies = featureSet(&[_]Feature{
1147 .SPV_EXT_shader_viewport_index_layer,
1148 .v1_0,
1149 }),
1150 };
1151 result[@backingInt(Feature.signed_zero_inf_nan_preserve)] = .{
1152 .llvm_name = null,
1153 .description = "Enable signed_zero_inf_nan_preserve capability",
1154 .dependencies = featureSet(&[_]Feature{
1155 .SPV_KHR_float_controls,
1156 .v1_4,
1157 }),
1158 };
1159 result[@backingInt(Feature.sparse_residency)] = .{
1160 .llvm_name = null,
1161 .description = "Enable sparse_residency capability",
1162 .dependencies = featureSet(&[_]Feature{
1163 .v1_0,
1164 }),
1165 };
1166 result[@backingInt(Feature.SPV_EXT_arithmetic_fence)] = .{
1167 .llvm_name = null,
1168 .description = "Enable SPV_EXT_arithmetic_fence extension",
1169 .dependencies = featureSet(&[_]Feature{}),
1170 };
1171 result[@backingInt(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
1172 .llvm_name = null,
1173 .description = "Enable SPV_EXT_demote_to_helper_invocation extension",
1174 .dependencies = featureSet(&[_]Feature{}),
1175 };
1176 result[@backingInt(Feature.SPV_EXT_descriptor_heap)] = .{
1177 .llvm_name = null,
1178 .description = "Enable SPV_EXT_descriptor_heap extension",
1179 .dependencies = featureSet(&[_]Feature{}),
1180 };
1181 result[@backingInt(Feature.SPV_EXT_descriptor_indexing)] = .{
1182 .llvm_name = null,
1183 .description = "Enable SPV_EXT_descriptor_indexing extension",
1184 .dependencies = featureSet(&[_]Feature{}),
1185 };
1186 result[@backingInt(Feature.SPV_EXT_float8)] = .{
1187 .llvm_name = null,
1188 .description = "Enable SPV_EXT_float8 extension",
1189 .dependencies = featureSet(&[_]Feature{}),
1190 };
1191 result[@backingInt(Feature.SPV_EXT_fragment_fully_covered)] = .{
1192 .llvm_name = null,
1193 .description = "Enable SPV_EXT_fragment_fully_covered extension",
1194 .dependencies = featureSet(&[_]Feature{}),
1195 };
1196 result[@backingInt(Feature.SPV_EXT_fragment_invocation_density)] = .{
1197 .llvm_name = null,
1198 .description = "Enable SPV_EXT_fragment_invocation_density extension",
1199 .dependencies = featureSet(&[_]Feature{}),
1200 };
1201 result[@backingInt(Feature.SPV_EXT_fragment_shader_interlock)] = .{
1202 .llvm_name = null,
1203 .description = "Enable SPV_EXT_fragment_shader_interlock extension",
1204 .dependencies = featureSet(&[_]Feature{}),
1205 };
1206 result[@backingInt(Feature.SPV_EXT_long_vector)] = .{
1207 .llvm_name = null,
1208 .description = "Enable SPV_EXT_long_vector extension",
1209 .dependencies = featureSet(&[_]Feature{}),
1210 };
1211 result[@backingInt(Feature.SPV_EXT_mesh_shader)] = .{
1212 .llvm_name = null,
1213 .description = "Enable SPV_EXT_mesh_shader extension",
1214 .dependencies = featureSet(&[_]Feature{}),
1215 };
1216 result[@backingInt(Feature.SPV_EXT_opacity_micromap)] = .{
1217 .llvm_name = null,
1218 .description = "Enable SPV_EXT_opacity_micromap extension",
1219 .dependencies = featureSet(&[_]Feature{}),
1220 };
1221 result[@backingInt(Feature.SPV_EXT_optnone)] = .{
1222 .llvm_name = null,
1223 .description = "Enable SPV_EXT_optnone extension",
1224 .dependencies = featureSet(&[_]Feature{}),
1225 };
1226 result[@backingInt(Feature.SPV_EXT_physical_storage_buffer)] = .{
1227 .llvm_name = null,
1228 .description = "Enable SPV_EXT_physical_storage_buffer extension",
1229 .dependencies = featureSet(&[_]Feature{}),
1230 };
1231 result[@backingInt(Feature.SPV_EXT_replicated_composites)] = .{
1232 .llvm_name = null,
1233 .description = "Enable SPV_EXT_replicated_composites extension",
1234 .dependencies = featureSet(&[_]Feature{}),
1235 };
1236 result[@backingInt(Feature.SPV_EXT_shader_64bit_indexing)] = .{
1237 .llvm_name = null,
1238 .description = "Enable SPV_EXT_shader_64bit_indexing extension",
1239 .dependencies = featureSet(&[_]Feature{}),
1240 };
1241 result[@backingInt(Feature.SPV_EXT_shader_atomic_float16_add)] = .{
1242 .llvm_name = null,
1243 .description = "Enable SPV_EXT_shader_atomic_float16_add extension",
1244 .dependencies = featureSet(&[_]Feature{}),
1245 };
1246 result[@backingInt(Feature.SPV_EXT_shader_atomic_float_add)] = .{
1247 .llvm_name = null,
1248 .description = "Enable SPV_EXT_shader_atomic_float_add extension",
1249 .dependencies = featureSet(&[_]Feature{}),
1250 };
1251 result[@backingInt(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
1252 .llvm_name = null,
1253 .description = "Enable SPV_EXT_shader_atomic_float_min_max extension",
1254 .dependencies = featureSet(&[_]Feature{}),
1255 };
1256 result[@backingInt(Feature.SPV_EXT_shader_image_int64)] = .{
1257 .llvm_name = null,
1258 .description = "Enable SPV_EXT_shader_image_int64 extension",
1259 .dependencies = featureSet(&[_]Feature{}),
1260 };
1261 result[@backingInt(Feature.SPV_EXT_shader_invocation_reorder)] = .{
1262 .llvm_name = null,
1263 .description = "Enable SPV_EXT_shader_invocation_reorder extension",
1264 .dependencies = featureSet(&[_]Feature{}),
1265 };
1266 result[@backingInt(Feature.SPV_EXT_shader_stencil_export)] = .{
1267 .llvm_name = null,
1268 .description = "Enable SPV_EXT_shader_stencil_export extension",
1269 .dependencies = featureSet(&[_]Feature{}),
1270 };
1271 result[@backingInt(Feature.SPV_EXT_shader_subgroup_partitioned)] = .{
1272 .llvm_name = null,
1273 .description = "Enable SPV_EXT_shader_subgroup_partitioned extension",
1274 .dependencies = featureSet(&[_]Feature{}),
1275 };
1276 result[@backingInt(Feature.SPV_EXT_shader_tile_image)] = .{
1277 .llvm_name = null,
1278 .description = "Enable SPV_EXT_shader_tile_image extension",
1279 .dependencies = featureSet(&[_]Feature{}),
1280 };
1281 result[@backingInt(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
1282 .llvm_name = null,
1283 .description = "Enable SPV_EXT_shader_viewport_index_layer extension",
1284 .dependencies = featureSet(&[_]Feature{}),
1285 };
1286 result[@backingInt(Feature.SPV_KHR_16bit_storage)] = .{
1287 .llvm_name = null,
1288 .description = "Enable SPV_KHR_16bit_storage extension",
1289 .dependencies = featureSet(&[_]Feature{}),
1290 };
1291 result[@backingInt(Feature.SPV_KHR_8bit_storage)] = .{
1292 .llvm_name = null,
1293 .description = "Enable SPV_KHR_8bit_storage extension",
1294 .dependencies = featureSet(&[_]Feature{}),
1295 };
1296 result[@backingInt(Feature.SPV_KHR_abort)] = .{
1297 .llvm_name = null,
1298 .description = "Enable SPV_KHR_abort extension",
1299 .dependencies = featureSet(&[_]Feature{}),
1300 };
1301 result[@backingInt(Feature.SPV_KHR_bfloat16)] = .{
1302 .llvm_name = null,
1303 .description = "Enable SPV_KHR_bfloat16 extension",
1304 .dependencies = featureSet(&[_]Feature{}),
1305 };
1306 result[@backingInt(Feature.SPV_KHR_bit_instructions)] = .{
1307 .llvm_name = null,
1308 .description = "Enable SPV_KHR_bit_instructions extension",
1309 .dependencies = featureSet(&[_]Feature{}),
1310 };
1311 result[@backingInt(Feature.SPV_KHR_compute_shader_derivatives)] = .{
1312 .llvm_name = null,
1313 .description = "Enable SPV_KHR_compute_shader_derivatives extension",
1314 .dependencies = featureSet(&[_]Feature{}),
1315 };
1316 result[@backingInt(Feature.SPV_KHR_constant_data)] = .{
1317 .llvm_name = null,
1318 .description = "Enable SPV_KHR_constant_data extension",
1319 .dependencies = featureSet(&[_]Feature{}),
1320 };
1321 result[@backingInt(Feature.SPV_KHR_cooperative_matrix)] = .{
1322 .llvm_name = null,
1323 .description = "Enable SPV_KHR_cooperative_matrix extension",
1324 .dependencies = featureSet(&[_]Feature{}),
1325 };
1326 result[@backingInt(Feature.SPV_KHR_device_group)] = .{
1327 .llvm_name = null,
1328 .description = "Enable SPV_KHR_device_group extension",
1329 .dependencies = featureSet(&[_]Feature{}),
1330 };
1331 result[@backingInt(Feature.SPV_KHR_expect_assume)] = .{
1332 .llvm_name = null,
1333 .description = "Enable SPV_KHR_expect_assume extension",
1334 .dependencies = featureSet(&[_]Feature{}),
1335 };
1336 result[@backingInt(Feature.SPV_KHR_float_controls)] = .{
1337 .llvm_name = null,
1338 .description = "Enable SPV_KHR_float_controls extension",
1339 .dependencies = featureSet(&[_]Feature{}),
1340 };
1341 result[@backingInt(Feature.SPV_KHR_float_controls2)] = .{
1342 .llvm_name = null,
1343 .description = "Enable SPV_KHR_float_controls2 extension",
1344 .dependencies = featureSet(&[_]Feature{}),
1345 };
1346 result[@backingInt(Feature.SPV_KHR_fma)] = .{
1347 .llvm_name = null,
1348 .description = "Enable SPV_KHR_fma extension",
1349 .dependencies = featureSet(&[_]Feature{}),
1350 };
1351 result[@backingInt(Feature.SPV_KHR_fragment_shader_barycentric)] = .{
1352 .llvm_name = null,
1353 .description = "Enable SPV_KHR_fragment_shader_barycentric extension",
1354 .dependencies = featureSet(&[_]Feature{}),
1355 };
1356 result[@backingInt(Feature.SPV_KHR_fragment_shading_rate)] = .{
1357 .llvm_name = null,
1358 .description = "Enable SPV_KHR_fragment_shading_rate extension",
1359 .dependencies = featureSet(&[_]Feature{}),
1360 };
1361 result[@backingInt(Feature.SPV_KHR_integer_dot_product)] = .{
1362 .llvm_name = null,
1363 .description = "Enable SPV_KHR_integer_dot_product extension",
1364 .dependencies = featureSet(&[_]Feature{}),
1365 };
1366 result[@backingInt(Feature.SPV_KHR_multiview)] = .{
1367 .llvm_name = null,
1368 .description = "Enable SPV_KHR_multiview extension",
1369 .dependencies = featureSet(&[_]Feature{}),
1370 };
1371 result[@backingInt(Feature.SPV_KHR_poison_freeze)] = .{
1372 .llvm_name = null,
1373 .description = "Enable SPV_KHR_poison_freeze extension",
1374 .dependencies = featureSet(&[_]Feature{}),
1375 };
1376 result[@backingInt(Feature.SPV_KHR_post_depth_coverage)] = .{
1377 .llvm_name = null,
1378 .description = "Enable SPV_KHR_post_depth_coverage extension",
1379 .dependencies = featureSet(&[_]Feature{}),
1380 };
1381 result[@backingInt(Feature.SPV_KHR_quad_control)] = .{
1382 .llvm_name = null,
1383 .description = "Enable SPV_KHR_quad_control extension",
1384 .dependencies = featureSet(&[_]Feature{}),
1385 };
1386 result[@backingInt(Feature.SPV_KHR_ray_cull_mask)] = .{
1387 .llvm_name = null,
1388 .description = "Enable SPV_KHR_ray_cull_mask extension",
1389 .dependencies = featureSet(&[_]Feature{}),
1390 };
1391 result[@backingInt(Feature.SPV_KHR_ray_query)] = .{
1392 .llvm_name = null,
1393 .description = "Enable SPV_KHR_ray_query extension",
1394 .dependencies = featureSet(&[_]Feature{}),
1395 };
1396 result[@backingInt(Feature.SPV_KHR_ray_tracing)] = .{
1397 .llvm_name = null,
1398 .description = "Enable SPV_KHR_ray_tracing extension",
1399 .dependencies = featureSet(&[_]Feature{}),
1400 };
1401 result[@backingInt(Feature.SPV_KHR_ray_tracing_position_fetch)] = .{
1402 .llvm_name = null,
1403 .description = "Enable SPV_KHR_ray_tracing_position_fetch extension",
1404 .dependencies = featureSet(&[_]Feature{}),
1405 };
1406 result[@backingInt(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
1407 .llvm_name = null,
1408 .description = "Enable SPV_KHR_shader_atomic_counter_ops extension",
1409 .dependencies = featureSet(&[_]Feature{}),
1410 };
1411 result[@backingInt(Feature.SPV_KHR_shader_ballot)] = .{
1412 .llvm_name = null,
1413 .description = "Enable SPV_KHR_shader_ballot extension",
1414 .dependencies = featureSet(&[_]Feature{}),
1415 };
1416 result[@backingInt(Feature.SPV_KHR_shader_clock)] = .{
1417 .llvm_name = null,
1418 .description = "Enable SPV_KHR_shader_clock extension",
1419 .dependencies = featureSet(&[_]Feature{}),
1420 };
1421 result[@backingInt(Feature.SPV_KHR_shader_draw_parameters)] = .{
1422 .llvm_name = null,
1423 .description = "Enable SPV_KHR_shader_draw_parameters extension",
1424 .dependencies = featureSet(&[_]Feature{}),
1425 };
1426 result[@backingInt(Feature.SPV_KHR_subgroup_rotate)] = .{
1427 .llvm_name = null,
1428 .description = "Enable SPV_KHR_subgroup_rotate extension",
1429 .dependencies = featureSet(&[_]Feature{}),
1430 };
1431 result[@backingInt(Feature.SPV_KHR_subgroup_vote)] = .{
1432 .llvm_name = null,
1433 .description = "Enable SPV_KHR_subgroup_vote extension",
1434 .dependencies = featureSet(&[_]Feature{}),
1435 };
1436 result[@backingInt(Feature.SPV_KHR_uniform_group_instructions)] = .{
1437 .llvm_name = null,
1438 .description = "Enable SPV_KHR_uniform_group_instructions extension",
1439 .dependencies = featureSet(&[_]Feature{}),
1440 };
1441 result[@backingInt(Feature.SPV_KHR_untyped_pointers)] = .{
1442 .llvm_name = null,
1443 .description = "Enable SPV_KHR_untyped_pointers extension",
1444 .dependencies = featureSet(&[_]Feature{}),
1445 };
1446 result[@backingInt(Feature.SPV_KHR_variable_pointers)] = .{
1447 .llvm_name = null,
1448 .description = "Enable SPV_KHR_variable_pointers extension",
1449 .dependencies = featureSet(&[_]Feature{}),
1450 };
1451 result[@backingInt(Feature.SPV_KHR_vulkan_memory_model)] = .{
1452 .llvm_name = null,
1453 .description = "Enable SPV_KHR_vulkan_memory_model extension",
1454 .dependencies = featureSet(&[_]Feature{}),
1455 };
1456 result[@backingInt(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
1457 .llvm_name = null,
1458 .description = "Enable SPV_KHR_workgroup_memory_explicit_layout extension",
1459 .dependencies = featureSet(&[_]Feature{}),
1460 };
1461 result[@backingInt(Feature.stencil_export_ext)] = .{
1462 .llvm_name = null,
1463 .description = "Enable stencil_export_ext capability",
1464 .dependencies = featureSet(&[_]Feature{
1465 .SPV_EXT_shader_stencil_export,
1466 .v1_0,
1467 }),
1468 };
1469 result[@backingInt(Feature.storage_buffer16bit_access)] = .{
1470 .llvm_name = null,
1471 .description = "Enable storage_buffer16bit_access capability",
1472 .dependencies = featureSet(&[_]Feature{
1473 .SPV_KHR_16bit_storage,
1474 .v1_3,
1475 }),
1476 };
1477 result[@backingInt(Feature.storage_buffer8bit_access)] = .{
1478 .llvm_name = null,
1479 .description = "Enable storage_buffer8bit_access capability",
1480 .dependencies = featureSet(&[_]Feature{
1481 .SPV_KHR_8bit_storage,
1482 .v1_5,
1483 }),
1484 };
1485 result[@backingInt(Feature.storage_buffer_array_dynamic_indexing)] = .{
1486 .llvm_name = null,
1487 .description = "Enable storage_buffer_array_dynamic_indexing capability",
1488 .dependencies = featureSet(&[_]Feature{
1489 .v1_0,
1490 }),
1491 };
1492 result[@backingInt(Feature.storage_buffer_array_non_uniform_indexing)] = .{
1493 .llvm_name = null,
1494 .description = "Enable storage_buffer_array_non_uniform_indexing capability",
1495 .dependencies = featureSet(&[_]Feature{
1496 .SPV_EXT_descriptor_indexing,
1497 .v1_5,
1498 }),
1499 };
1500 result[@backingInt(Feature.storage_image_array_dynamic_indexing)] = .{
1501 .llvm_name = null,
1502 .description = "Enable storage_image_array_dynamic_indexing capability",
1503 .dependencies = featureSet(&[_]Feature{
1504 .v1_0,
1505 }),
1506 };
1507 result[@backingInt(Feature.storage_image_array_non_uniform_indexing)] = .{
1508 .llvm_name = null,
1509 .description = "Enable storage_image_array_non_uniform_indexing capability",
1510 .dependencies = featureSet(&[_]Feature{
1511 .SPV_EXT_descriptor_indexing,
1512 .v1_5,
1513 }),
1514 };
1515 result[@backingInt(Feature.storage_image_extended_formats)] = .{
1516 .llvm_name = null,
1517 .description = "Enable storage_image_extended_formats capability",
1518 .dependencies = featureSet(&[_]Feature{
1519 .v1_0,
1520 }),
1521 };
1522 result[@backingInt(Feature.storage_image_multisample)] = .{
1523 .llvm_name = null,
1524 .description = "Enable storage_image_multisample capability",
1525 .dependencies = featureSet(&[_]Feature{
1526 .v1_0,
1527 }),
1528 };
1529 result[@backingInt(Feature.storage_image_read_without_format)] = .{
1530 .llvm_name = null,
1531 .description = "Enable storage_image_read_without_format capability",
1532 .dependencies = featureSet(&[_]Feature{
1533 .v1_0,
1534 }),
1535 };
1536 result[@backingInt(Feature.storage_image_write_without_format)] = .{
1537 .llvm_name = null,
1538 .description = "Enable storage_image_write_without_format capability",
1539 .dependencies = featureSet(&[_]Feature{
1540 .v1_0,
1541 }),
1542 };
1543 result[@backingInt(Feature.storage_input_output16)] = .{
1544 .llvm_name = null,
1545 .description = "Enable storage_input_output16 capability",
1546 .dependencies = featureSet(&[_]Feature{
1547 .SPV_KHR_16bit_storage,
1548 .v1_3,
1549 }),
1550 };
1551 result[@backingInt(Feature.storage_push_constant16)] = .{
1552 .llvm_name = null,
1553 .description = "Enable storage_push_constant16 capability",
1554 .dependencies = featureSet(&[_]Feature{
1555 .SPV_KHR_16bit_storage,
1556 .v1_3,
1557 }),
1558 };
1559 result[@backingInt(Feature.storage_push_constant8)] = .{
1560 .llvm_name = null,
1561 .description = "Enable storage_push_constant8 capability",
1562 .dependencies = featureSet(&[_]Feature{
1563 .SPV_KHR_8bit_storage,
1564 .v1_5,
1565 }),
1566 };
1567 result[@backingInt(Feature.storage_texel_buffer_array_dynamic_indexing)] = .{
1568 .llvm_name = null,
1569 .description = "Enable storage_texel_buffer_array_dynamic_indexing capability",
1570 .dependencies = featureSet(&[_]Feature{
1571 .SPV_EXT_descriptor_indexing,
1572 .v1_5,
1573 }),
1574 };
1575 result[@backingInt(Feature.storage_texel_buffer_array_non_uniform_indexing)] = .{
1576 .llvm_name = null,
1577 .description = "Enable storage_texel_buffer_array_non_uniform_indexing capability",
1578 .dependencies = featureSet(&[_]Feature{
1579 .SPV_EXT_descriptor_indexing,
1580 .v1_5,
1581 }),
1582 };
1583 result[@backingInt(Feature.subgroup_ballot_khr)] = .{
1584 .llvm_name = null,
1585 .description = "Enable subgroup_ballot_khr capability",
1586 .dependencies = featureSet(&[_]Feature{
1587 .SPV_KHR_shader_ballot,
1588 .v1_0,
1589 }),
1590 };
1591 result[@backingInt(Feature.subgroup_dispatch)] = .{
1592 .llvm_name = null,
1593 .description = "Enable subgroup_dispatch capability",
1594 .dependencies = featureSet(&[_]Feature{
1595 .v1_1,
1596 }),
1597 };
1598 result[@backingInt(Feature.subgroup_vote_khr)] = .{
1599 .llvm_name = null,
1600 .description = "Enable subgroup_vote_khr capability",
1601 .dependencies = featureSet(&[_]Feature{
1602 .SPV_KHR_subgroup_vote,
1603 .v1_0,
1604 }),
1605 };
1606 result[@backingInt(Feature.tessellation)] = .{
1607 .llvm_name = null,
1608 .description = "Enable tessellation capability",
1609 .dependencies = featureSet(&[_]Feature{
1610 .v1_0,
1611 }),
1612 };
1613 result[@backingInt(Feature.tessellation_point_size)] = .{
1614 .llvm_name = null,
1615 .description = "Enable tessellation_point_size capability",
1616 .dependencies = featureSet(&[_]Feature{
1617 .v1_0,
1618 }),
1619 };
1620 result[@backingInt(Feature.tile_image_color_read_access_ext)] = .{
1621 .llvm_name = null,
1622 .description = "Enable tile_image_color_read_access_ext capability",
1623 .dependencies = featureSet(&[_]Feature{
1624 .SPV_EXT_shader_tile_image,
1625 .v1_0,
1626 }),
1627 };
1628 result[@backingInt(Feature.tile_image_depth_read_access_ext)] = .{
1629 .llvm_name = null,
1630 .description = "Enable tile_image_depth_read_access_ext capability",
1631 .dependencies = featureSet(&[_]Feature{
1632 .SPV_EXT_shader_tile_image,
1633 .v1_0,
1634 }),
1635 };
1636 result[@backingInt(Feature.tile_image_stencil_read_access_ext)] = .{
1637 .llvm_name = null,
1638 .description = "Enable tile_image_stencil_read_access_ext capability",
1639 .dependencies = featureSet(&[_]Feature{
1640 .SPV_EXT_shader_tile_image,
1641 .v1_0,
1642 }),
1643 };
1644 result[@backingInt(Feature.transform_feedback)] = .{
1645 .llvm_name = null,
1646 .description = "Enable transform_feedback capability",
1647 .dependencies = featureSet(&[_]Feature{
1648 .v1_0,
1649 }),
1650 };
1651 result[@backingInt(Feature.uniform_and_storage_buffer16bit_access)] = .{
1652 .llvm_name = null,
1653 .description = "Enable uniform_and_storage_buffer16bit_access capability",
1654 .dependencies = featureSet(&[_]Feature{
1655 .SPV_KHR_16bit_storage,
1656 .v1_3,
1657 }),
1658 };
1659 result[@backingInt(Feature.uniform_and_storage_buffer8bit_access)] = .{
1660 .llvm_name = null,
1661 .description = "Enable uniform_and_storage_buffer8bit_access capability",
1662 .dependencies = featureSet(&[_]Feature{
1663 .SPV_KHR_8bit_storage,
1664 .v1_5,
1665 }),
1666 };
1667 result[@backingInt(Feature.uniform_buffer_array_dynamic_indexing)] = .{
1668 .llvm_name = null,
1669 .description = "Enable uniform_buffer_array_dynamic_indexing capability",
1670 .dependencies = featureSet(&[_]Feature{
1671 .v1_0,
1672 }),
1673 };
1674 result[@backingInt(Feature.uniform_buffer_array_non_uniform_indexing)] = .{
1675 .llvm_name = null,
1676 .description = "Enable uniform_buffer_array_non_uniform_indexing capability",
1677 .dependencies = featureSet(&[_]Feature{
1678 .SPV_EXT_descriptor_indexing,
1679 .v1_5,
1680 }),
1681 };
1682 result[@backingInt(Feature.uniform_decoration)] = .{
1683 .llvm_name = null,
1684 .description = "Enable uniform_decoration capability",
1685 .dependencies = featureSet(&[_]Feature{
1686 .v1_6,
1687 }),
1688 };
1689 result[@backingInt(Feature.uniform_texel_buffer_array_dynamic_indexing)] = .{
1690 .llvm_name = null,
1691 .description = "Enable uniform_texel_buffer_array_dynamic_indexing capability",
1692 .dependencies = featureSet(&[_]Feature{
1693 .SPV_EXT_descriptor_indexing,
1694 .v1_5,
1695 }),
1696 };
1697 result[@backingInt(Feature.uniform_texel_buffer_array_non_uniform_indexing)] = .{
1698 .llvm_name = null,
1699 .description = "Enable uniform_texel_buffer_array_non_uniform_indexing capability",
1700 .dependencies = featureSet(&[_]Feature{
1701 .SPV_EXT_descriptor_indexing,
1702 .v1_5,
1703 }),
1704 };
1705 result[@backingInt(Feature.untyped_pointers_khr)] = .{
1706 .llvm_name = null,
1707 .description = "Enable untyped_pointers_khr capability",
1708 .dependencies = featureSet(&[_]Feature{
1709 .SPV_KHR_untyped_pointers,
1710 .v1_0,
1711 }),
1712 };
1713 result[@backingInt(Feature.v1_0)] = .{
1714 .llvm_name = null,
1715 .description = "Enable v1_0 extension",
1716 .dependencies = featureSet(&[_]Feature{}),
1717 };
1718 result[@backingInt(Feature.v1_1)] = .{
1719 .llvm_name = null,
1720 .description = "Enable v1_1 extension",
1721 .dependencies = featureSet(&[_]Feature{
1722 .v1_0,
1723 }),
1724 };
1725 result[@backingInt(Feature.v1_2)] = .{
1726 .llvm_name = null,
1727 .description = "Enable v1_2 extension",
1728 .dependencies = featureSet(&[_]Feature{
1729 .v1_1,
1730 }),
1731 };
1732 result[@backingInt(Feature.v1_3)] = .{
1733 .llvm_name = null,
1734 .description = "Enable v1_3 extension",
1735 .dependencies = featureSet(&[_]Feature{
1736 .v1_2,
1737 }),
1738 };
1739 result[@backingInt(Feature.v1_4)] = .{
1740 .llvm_name = null,
1741 .description = "Enable v1_4 extension",
1742 .dependencies = featureSet(&[_]Feature{
1743 .v1_3,
1744 }),
1745 };
1746 result[@backingInt(Feature.v1_5)] = .{
1747 .llvm_name = null,
1748 .description = "Enable v1_5 extension",
1749 .dependencies = featureSet(&[_]Feature{
1750 .v1_4,
1751 }),
1752 };
1753 result[@backingInt(Feature.v1_6)] = .{
1754 .llvm_name = null,
1755 .description = "Enable v1_6 extension",
1756 .dependencies = featureSet(&[_]Feature{
1757 .v1_5,
1758 }),
1759 };
1760 result[@backingInt(Feature.variable_pointers)] = .{
1761 .llvm_name = null,
1762 .description = "Enable variable_pointers capability",
1763 .dependencies = featureSet(&[_]Feature{
1764 .SPV_KHR_variable_pointers,
1765 .v1_3,
1766 }),
1767 };
1768 result[@backingInt(Feature.variable_pointers_storage_buffer)] = .{
1769 .llvm_name = null,
1770 .description = "Enable variable_pointers_storage_buffer capability",
1771 .dependencies = featureSet(&[_]Feature{
1772 .SPV_KHR_variable_pointers,
1773 .v1_3,
1774 }),
1775 };
1776 result[@backingInt(Feature.vector16)] = .{
1777 .llvm_name = null,
1778 .description = "Enable vector16 capability",
1779 .dependencies = featureSet(&[_]Feature{
1780 .v1_0,
1781 }),
1782 };
1783 result[@backingInt(Feature.vulkan_memory_model)] = .{
1784 .llvm_name = null,
1785 .description = "Enable vulkan_memory_model capability",
1786 .dependencies = featureSet(&[_]Feature{
1787 .SPV_KHR_vulkan_memory_model,
1788 .v1_5,
1789 }),
1790 };
1791 result[@backingInt(Feature.vulkan_memory_model_device_scope)] = .{
1792 .llvm_name = null,
1793 .description = "Enable vulkan_memory_model_device_scope capability",
1794 .dependencies = featureSet(&[_]Feature{
1795 .SPV_KHR_vulkan_memory_model,
1796 .v1_5,
1797 }),
1798 };
1799 result[@backingInt(Feature.workgroup_memory_explicit_layout16bit_access_khr)] = .{
1800 .llvm_name = null,
1801 .description = "Enable workgroup_memory_explicit_layout16bit_access_khr capability",
1802 .dependencies = featureSet(&[_]Feature{
1803 .SPV_KHR_workgroup_memory_explicit_layout,
1804 .v1_0,
1805 }),
1806 };
1807 result[@backingInt(Feature.workgroup_memory_explicit_layout8bit_access_khr)] = .{
1808 .llvm_name = null,
1809 .description = "Enable workgroup_memory_explicit_layout8bit_access_khr capability",
1810 .dependencies = featureSet(&[_]Feature{
1811 .SPV_KHR_workgroup_memory_explicit_layout,
1812 .v1_0,
1813 }),
1814 };
1815 result[@backingInt(Feature.workgroup_memory_explicit_layout_khr)] = .{
1816 .llvm_name = null,
1817 .description = "Enable workgroup_memory_explicit_layout_khr capability",
1818 .dependencies = featureSet(&[_]Feature{
1819 .SPV_KHR_workgroup_memory_explicit_layout,
1820 .v1_0,
1821 }),
1822 };
1823 const ti = @typeInfo(Feature);
1824 for (&result, 0..) |*elem, i| {
1825 elem.index = i;
1826 elem.name = ti.@"enum".field_names[i];
1827 }
1828 break :blk result;
1829};
1830
1831pub const cpu = struct {
1832 pub const generic: CpuModel = .{
1833 .name = "generic",
1834 .llvm_name = "generic",
1835 .features = featureSet(&[_]Feature{}),
1836 };
1837 pub const opencl_v2: CpuModel = .{
1838 .name = "opencl_v2",
1839 .llvm_name = null,
1840 .features = featureSet(&[_]Feature{
1841 .v1_2,
1842 }),
1843 };
1844 pub const vulkan_v1_2: CpuModel = .{
1845 .name = "vulkan_v1_2",
1846 .llvm_name = null,
1847 .features = featureSet(&[_]Feature{
1848 .v1_5,
1849 }),
1850 };
1851};