//! This file is auto-generated by tools/update_cpu_features.zig.

const std = @import("../std.zig");
const CpuFeature = std.Target.Cpu.Feature;
const CpuModel = std.Target.Cpu.Model;

pub const Feature = enum {
    abort_khr,
    arithmetic_fence_ext,
    atomic_float16add_ext,
    atomic_float16min_max_ext,
    atomic_float32add_ext,
    atomic_float32min_max_ext,
    atomic_float64add_ext,
    atomic_float64min_max_ext,
    atomic_storage,
    atomic_storage_ops,
    b_float16cooperative_matrix_khr,
    b_float16dot_product_khr,
    b_float16type_khr,
    bit_instructions,
    clip_distance,
    compute_derivative_group_linear_khr,
    compute_derivative_group_quads_khr,
    constant_data_khr,
    cooperative_matrix_khr,
    cull_distance,
    demote_to_helper_invocation,
    denorm_flush_to_zero,
    denorm_preserve,
    derivative_control,
    descriptor_heap_ext,
    device_enqueue,
    device_group,
    dot_product,
    dot_product_input4x8bit,
    dot_product_input4x8bit_packed,
    dot_product_input_all,
    draw_parameters,
    expect_assume_khr,
    float16,
    float16buffer,
    float64,
    float8cooperative_matrix_ext,
    float8ext,
    float_controls2,
    fmakhr,
    fragment_barycentric_khr,
    fragment_density_ext,
    fragment_fully_covered_ext,
    fragment_shader_pixel_interlock_ext,
    fragment_shader_sample_interlock_ext,
    fragment_shader_shading_rate_interlock_ext,
    fragment_shading_rate_khr,
    generic_pointer,
    geometry,
    geometry_point_size,
    geometry_streams,
    group_non_uniform,
    group_non_uniform_arithmetic,
    group_non_uniform_ballot,
    group_non_uniform_clustered,
    group_non_uniform_partitioned_ext,
    group_non_uniform_quad,
    group_non_uniform_rotate_khr,
    group_non_uniform_shuffle,
    group_non_uniform_shuffle_relative,
    group_non_uniform_vote,
    group_uniform_arithmetic_khr,
    groups,
    image_basic,
    image_buffer,
    image_cube_array,
    image_gather_extended,
    image_mipmap,
    image_ms_array,
    image_query,
    image_read_write,
    image_rect,
    input_attachment,
    input_attachment_array_dynamic_indexing,
    input_attachment_array_non_uniform_indexing,
    int16,
    int64,
    int64atomics,
    int64image_ext,
    int8,
    interpolation_function,
    literal_sampler,
    long_vector_ext,
    matrix,
    mesh_shading_ext,
    min_lod,
    multi_view,
    multi_viewport,
    named_barrier,
    opt_none_ext,
    pipe_storage,
    pipes,
    poison_freeze_khr,
    quad_control_khr,
    ray_cull_mask_khr,
    ray_query_khr,
    ray_query_position_fetch_khr,
    ray_query_provisional_khr,
    ray_tracing_khr,
    ray_tracing_opacity_micromap_ext,
    ray_tracing_position_fetch_khr,
    ray_tracing_provisional_khr,
    ray_traversal_primitive_culling_khr,
    replicated_composites_ext,
    runtime_descriptor_array,
    sample_mask_post_depth_coverage,
    sample_rate_shading,
    sampled_buffer,
    sampled_cube_array,
    sampled_image_array_dynamic_indexing,
    sampled_image_array_non_uniform_indexing,
    sampled_rect,
    shader64bit_indexing_ext,
    shader_clock_khr,
    shader_invocation_reorder_ext,
    shader_layer,
    shader_non_uniform,
    shader_viewport_index,
    shader_viewport_index_layer_ext,
    signed_zero_inf_nan_preserve,
    sparse_residency,
    SPV_EXT_arithmetic_fence,
    SPV_EXT_demote_to_helper_invocation,
    SPV_EXT_descriptor_heap,
    SPV_EXT_descriptor_indexing,
    SPV_EXT_float8,
    SPV_EXT_fragment_fully_covered,
    SPV_EXT_fragment_invocation_density,
    SPV_EXT_fragment_shader_interlock,
    SPV_EXT_long_vector,
    SPV_EXT_mesh_shader,
    SPV_EXT_opacity_micromap,
    SPV_EXT_optnone,
    SPV_EXT_physical_storage_buffer,
    SPV_EXT_replicated_composites,
    SPV_EXT_shader_64bit_indexing,
    SPV_EXT_shader_atomic_float16_add,
    SPV_EXT_shader_atomic_float_add,
    SPV_EXT_shader_atomic_float_min_max,
    SPV_EXT_shader_image_int64,
    SPV_EXT_shader_invocation_reorder,
    SPV_EXT_shader_stencil_export,
    SPV_EXT_shader_subgroup_partitioned,
    SPV_EXT_shader_tile_image,
    SPV_EXT_shader_viewport_index_layer,
    SPV_KHR_16bit_storage,
    SPV_KHR_8bit_storage,
    SPV_KHR_abort,
    SPV_KHR_bfloat16,
    SPV_KHR_bit_instructions,
    SPV_KHR_compute_shader_derivatives,
    SPV_KHR_constant_data,
    SPV_KHR_cooperative_matrix,
    SPV_KHR_device_group,
    SPV_KHR_expect_assume,
    SPV_KHR_float_controls,
    SPV_KHR_float_controls2,
    SPV_KHR_fma,
    SPV_KHR_fragment_shader_barycentric,
    SPV_KHR_fragment_shading_rate,
    SPV_KHR_integer_dot_product,
    SPV_KHR_multiview,
    SPV_KHR_poison_freeze,
    SPV_KHR_post_depth_coverage,
    SPV_KHR_quad_control,
    SPV_KHR_ray_cull_mask,
    SPV_KHR_ray_query,
    SPV_KHR_ray_tracing,
    SPV_KHR_ray_tracing_position_fetch,
    SPV_KHR_shader_atomic_counter_ops,
    SPV_KHR_shader_ballot,
    SPV_KHR_shader_clock,
    SPV_KHR_shader_draw_parameters,
    SPV_KHR_subgroup_rotate,
    SPV_KHR_subgroup_vote,
    SPV_KHR_uniform_group_instructions,
    SPV_KHR_untyped_pointers,
    SPV_KHR_variable_pointers,
    SPV_KHR_vulkan_memory_model,
    SPV_KHR_workgroup_memory_explicit_layout,
    stencil_export_ext,
    storage_buffer16bit_access,
    storage_buffer8bit_access,
    storage_buffer_array_dynamic_indexing,
    storage_buffer_array_non_uniform_indexing,
    storage_image_array_dynamic_indexing,
    storage_image_array_non_uniform_indexing,
    storage_image_extended_formats,
    storage_image_multisample,
    storage_image_read_without_format,
    storage_image_write_without_format,
    storage_input_output16,
    storage_push_constant16,
    storage_push_constant8,
    storage_texel_buffer_array_dynamic_indexing,
    storage_texel_buffer_array_non_uniform_indexing,
    subgroup_ballot_khr,
    subgroup_dispatch,
    subgroup_vote_khr,
    tessellation,
    tessellation_point_size,
    tile_image_color_read_access_ext,
    tile_image_depth_read_access_ext,
    tile_image_stencil_read_access_ext,
    transform_feedback,
    uniform_and_storage_buffer16bit_access,
    uniform_and_storage_buffer8bit_access,
    uniform_buffer_array_dynamic_indexing,
    uniform_buffer_array_non_uniform_indexing,
    uniform_decoration,
    uniform_texel_buffer_array_dynamic_indexing,
    uniform_texel_buffer_array_non_uniform_indexing,
    untyped_pointers_khr,
    v1_0,
    v1_1,
    v1_2,
    v1_3,
    v1_4,
    v1_5,
    v1_6,
    variable_pointers,
    variable_pointers_storage_buffer,
    vector16,
    vulkan_memory_model,
    vulkan_memory_model_device_scope,
    workgroup_memory_explicit_layout16bit_access_khr,
    workgroup_memory_explicit_layout8bit_access_khr,
    workgroup_memory_explicit_layout_khr,
};

pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;

pub const all_features = blk: {
    @setEvalBranchQuota(2000);
    const len = @typeInfo(Feature).@"enum".field_names.len;
    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
    var result: [len]CpuFeature = undefined;
    result[@backingInt(Feature.abort_khr)] = .{
        .llvm_name = null,
        .description = "Enable abort_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_abort,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.arithmetic_fence_ext)] = .{
        .llvm_name = null,
        .description = "Enable arithmetic_fence_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_arithmetic_fence,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float16add_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float16add_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float16_add,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float16min_max_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float16min_max_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float_min_max,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float32add_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float32add_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float_add,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float32min_max_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float32min_max_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float_min_max,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float64add_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float64add_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float_add,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_float64min_max_ext)] = .{
        .llvm_name = null,
        .description = "Enable atomic_float64min_max_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_atomic_float_min_max,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_storage)] = .{
        .llvm_name = null,
        .description = "Enable atomic_storage capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.atomic_storage_ops)] = .{
        .llvm_name = null,
        .description = "Enable atomic_storage_ops capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_shader_atomic_counter_ops,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.b_float16cooperative_matrix_khr)] = .{
        .llvm_name = null,
        .description = "Enable b_float16cooperative_matrix_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_bfloat16,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.b_float16dot_product_khr)] = .{
        .llvm_name = null,
        .description = "Enable b_float16dot_product_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_bfloat16,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.b_float16type_khr)] = .{
        .llvm_name = null,
        .description = "Enable b_float16type_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_bfloat16,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.bit_instructions)] = .{
        .llvm_name = null,
        .description = "Enable bit_instructions capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_bit_instructions,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.clip_distance)] = .{
        .llvm_name = null,
        .description = "Enable clip_distance capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.compute_derivative_group_linear_khr)] = .{
        .llvm_name = null,
        .description = "Enable compute_derivative_group_linear_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_compute_shader_derivatives,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.compute_derivative_group_quads_khr)] = .{
        .llvm_name = null,
        .description = "Enable compute_derivative_group_quads_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_compute_shader_derivatives,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.constant_data_khr)] = .{
        .llvm_name = null,
        .description = "Enable constant_data_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_constant_data,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.cooperative_matrix_khr)] = .{
        .llvm_name = null,
        .description = "Enable cooperative_matrix_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_cooperative_matrix,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.cull_distance)] = .{
        .llvm_name = null,
        .description = "Enable cull_distance capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.demote_to_helper_invocation)] = .{
        .llvm_name = null,
        .description = "Enable demote_to_helper_invocation capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_demote_to_helper_invocation,
            .v1_6,
        }),
    };
    result[@backingInt(Feature.denorm_flush_to_zero)] = .{
        .llvm_name = null,
        .description = "Enable denorm_flush_to_zero capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_float_controls,
            .v1_4,
        }),
    };
    result[@backingInt(Feature.denorm_preserve)] = .{
        .llvm_name = null,
        .description = "Enable denorm_preserve capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_float_controls,
            .v1_4,
        }),
    };
    result[@backingInt(Feature.derivative_control)] = .{
        .llvm_name = null,
        .description = "Enable derivative_control capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.descriptor_heap_ext)] = .{
        .llvm_name = null,
        .description = "Enable descriptor_heap_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_heap,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.device_enqueue)] = .{
        .llvm_name = null,
        .description = "Enable device_enqueue capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.device_group)] = .{
        .llvm_name = null,
        .description = "Enable device_group capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_device_group,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.dot_product)] = .{
        .llvm_name = null,
        .description = "Enable dot_product capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_integer_dot_product,
            .v1_6,
        }),
    };
    result[@backingInt(Feature.dot_product_input4x8bit)] = .{
        .llvm_name = null,
        .description = "Enable dot_product_input4x8bit capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_integer_dot_product,
            .v1_6,
        }),
    };
    result[@backingInt(Feature.dot_product_input4x8bit_packed)] = .{
        .llvm_name = null,
        .description = "Enable dot_product_input4x8bit_packed capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_integer_dot_product,
            .v1_6,
        }),
    };
    result[@backingInt(Feature.dot_product_input_all)] = .{
        .llvm_name = null,
        .description = "Enable dot_product_input_all capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_integer_dot_product,
            .v1_6,
        }),
    };
    result[@backingInt(Feature.draw_parameters)] = .{
        .llvm_name = null,
        .description = "Enable draw_parameters capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_shader_draw_parameters,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.expect_assume_khr)] = .{
        .llvm_name = null,
        .description = "Enable expect_assume_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_expect_assume,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float16)] = .{
        .llvm_name = null,
        .description = "Enable float16 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float16buffer)] = .{
        .llvm_name = null,
        .description = "Enable float16buffer capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float64)] = .{
        .llvm_name = null,
        .description = "Enable float64 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float8cooperative_matrix_ext)] = .{
        .llvm_name = null,
        .description = "Enable float8cooperative_matrix_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_float8,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float8ext)] = .{
        .llvm_name = null,
        .description = "Enable float8ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_float8,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.float_controls2)] = .{
        .llvm_name = null,
        .description = "Enable float_controls2 capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_float_controls2,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fmakhr)] = .{
        .llvm_name = null,
        .description = "Enable fmakhr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_fma,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_barycentric_khr)] = .{
        .llvm_name = null,
        .description = "Enable fragment_barycentric_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_fragment_shader_barycentric,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_density_ext)] = .{
        .llvm_name = null,
        .description = "Enable fragment_density_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_fragment_invocation_density,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_fully_covered_ext)] = .{
        .llvm_name = null,
        .description = "Enable fragment_fully_covered_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_fragment_fully_covered,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_shader_pixel_interlock_ext)] = .{
        .llvm_name = null,
        .description = "Enable fragment_shader_pixel_interlock_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_fragment_shader_interlock,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_shader_sample_interlock_ext)] = .{
        .llvm_name = null,
        .description = "Enable fragment_shader_sample_interlock_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_fragment_shader_interlock,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_shader_shading_rate_interlock_ext)] = .{
        .llvm_name = null,
        .description = "Enable fragment_shader_shading_rate_interlock_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_fragment_shader_interlock,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.fragment_shading_rate_khr)] = .{
        .llvm_name = null,
        .description = "Enable fragment_shading_rate_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_fragment_shading_rate,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.generic_pointer)] = .{
        .llvm_name = null,
        .description = "Enable generic_pointer capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.geometry)] = .{
        .llvm_name = null,
        .description = "Enable geometry capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.geometry_point_size)] = .{
        .llvm_name = null,
        .description = "Enable geometry_point_size capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.geometry_streams)] = .{
        .llvm_name = null,
        .description = "Enable geometry_streams capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.group_non_uniform)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_arithmetic)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_arithmetic capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_ballot)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_ballot capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_clustered)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_clustered capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_partitioned_ext)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_partitioned_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_subgroup_partitioned,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_quad)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_quad capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_rotate_khr)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_rotate_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_subgroup_rotate,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_shuffle)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_shuffle capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_shuffle_relative)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_shuffle_relative capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_non_uniform_vote)] = .{
        .llvm_name = null,
        .description = "Enable group_non_uniform_vote capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.group_uniform_arithmetic_khr)] = .{
        .llvm_name = null,
        .description = "Enable group_uniform_arithmetic_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_uniform_group_instructions,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.groups)] = .{
        .llvm_name = null,
        .description = "Enable groups capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_basic)] = .{
        .llvm_name = null,
        .description = "Enable image_basic capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_buffer)] = .{
        .llvm_name = null,
        .description = "Enable image_buffer capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_cube_array)] = .{
        .llvm_name = null,
        .description = "Enable image_cube_array capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_gather_extended)] = .{
        .llvm_name = null,
        .description = "Enable image_gather_extended capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_mipmap)] = .{
        .llvm_name = null,
        .description = "Enable image_mipmap capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_ms_array)] = .{
        .llvm_name = null,
        .description = "Enable image_ms_array capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_query)] = .{
        .llvm_name = null,
        .description = "Enable image_query capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_read_write)] = .{
        .llvm_name = null,
        .description = "Enable image_read_write capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.image_rect)] = .{
        .llvm_name = null,
        .description = "Enable image_rect capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.input_attachment)] = .{
        .llvm_name = null,
        .description = "Enable input_attachment capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.input_attachment_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable input_attachment_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.input_attachment_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable input_attachment_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.int16)] = .{
        .llvm_name = null,
        .description = "Enable int16 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.int64)] = .{
        .llvm_name = null,
        .description = "Enable int64 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.int64atomics)] = .{
        .llvm_name = null,
        .description = "Enable int64atomics capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.int64image_ext)] = .{
        .llvm_name = null,
        .description = "Enable int64image_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_image_int64,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.int8)] = .{
        .llvm_name = null,
        .description = "Enable int8 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.interpolation_function)] = .{
        .llvm_name = null,
        .description = "Enable interpolation_function capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.literal_sampler)] = .{
        .llvm_name = null,
        .description = "Enable literal_sampler capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.long_vector_ext)] = .{
        .llvm_name = null,
        .description = "Enable long_vector_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_long_vector,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.matrix)] = .{
        .llvm_name = null,
        .description = "Enable matrix capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.mesh_shading_ext)] = .{
        .llvm_name = null,
        .description = "Enable mesh_shading_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_mesh_shader,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.min_lod)] = .{
        .llvm_name = null,
        .description = "Enable min_lod capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.multi_view)] = .{
        .llvm_name = null,
        .description = "Enable multi_view capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_multiview,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.multi_viewport)] = .{
        .llvm_name = null,
        .description = "Enable multi_viewport capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.named_barrier)] = .{
        .llvm_name = null,
        .description = "Enable named_barrier capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_1,
        }),
    };
    result[@backingInt(Feature.opt_none_ext)] = .{
        .llvm_name = null,
        .description = "Enable opt_none_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_optnone,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.pipe_storage)] = .{
        .llvm_name = null,
        .description = "Enable pipe_storage capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_1,
        }),
    };
    result[@backingInt(Feature.pipes)] = .{
        .llvm_name = null,
        .description = "Enable pipes capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.poison_freeze_khr)] = .{
        .llvm_name = null,
        .description = "Enable poison_freeze_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_poison_freeze,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.quad_control_khr)] = .{
        .llvm_name = null,
        .description = "Enable quad_control_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_quad_control,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_cull_mask_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_cull_mask_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_cull_mask,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_query_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_query_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_query,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_query_position_fetch_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_query_position_fetch_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_tracing_position_fetch,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_query_provisional_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_query_provisional_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_query,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_tracing_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_tracing_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_tracing,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_tracing_opacity_micromap_ext)] = .{
        .llvm_name = null,
        .description = "Enable ray_tracing_opacity_micromap_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_opacity_micromap,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_tracing_position_fetch_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_tracing_position_fetch_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_tracing_position_fetch,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_tracing_provisional_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_tracing_provisional_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_tracing,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.ray_traversal_primitive_culling_khr)] = .{
        .llvm_name = null,
        .description = "Enable ray_traversal_primitive_culling_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_ray_query,
            .SPV_KHR_ray_tracing,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.replicated_composites_ext)] = .{
        .llvm_name = null,
        .description = "Enable replicated_composites_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_replicated_composites,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.runtime_descriptor_array)] = .{
        .llvm_name = null,
        .description = "Enable runtime_descriptor_array capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.sample_mask_post_depth_coverage)] = .{
        .llvm_name = null,
        .description = "Enable sample_mask_post_depth_coverage capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_post_depth_coverage,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.sample_rate_shading)] = .{
        .llvm_name = null,
        .description = "Enable sample_rate_shading capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.sampled_buffer)] = .{
        .llvm_name = null,
        .description = "Enable sampled_buffer capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.sampled_cube_array)] = .{
        .llvm_name = null,
        .description = "Enable sampled_cube_array capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.sampled_image_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable sampled_image_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.sampled_image_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable sampled_image_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.sampled_rect)] = .{
        .llvm_name = null,
        .description = "Enable sampled_rect capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.shader64bit_indexing_ext)] = .{
        .llvm_name = null,
        .description = "Enable shader64bit_indexing_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_64bit_indexing,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.shader_clock_khr)] = .{
        .llvm_name = null,
        .description = "Enable shader_clock_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_shader_clock,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.shader_invocation_reorder_ext)] = .{
        .llvm_name = null,
        .description = "Enable shader_invocation_reorder_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_invocation_reorder,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.shader_layer)] = .{
        .llvm_name = null,
        .description = "Enable shader_layer capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_5,
        }),
    };
    result[@backingInt(Feature.shader_non_uniform)] = .{
        .llvm_name = null,
        .description = "Enable shader_non_uniform capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.shader_viewport_index)] = .{
        .llvm_name = null,
        .description = "Enable shader_viewport_index capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_5,
        }),
    };
    result[@backingInt(Feature.shader_viewport_index_layer_ext)] = .{
        .llvm_name = null,
        .description = "Enable shader_viewport_index_layer_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_viewport_index_layer,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.signed_zero_inf_nan_preserve)] = .{
        .llvm_name = null,
        .description = "Enable signed_zero_inf_nan_preserve capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_float_controls,
            .v1_4,
        }),
    };
    result[@backingInt(Feature.sparse_residency)] = .{
        .llvm_name = null,
        .description = "Enable sparse_residency capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.SPV_EXT_arithmetic_fence)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_arithmetic_fence extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_demote_to_helper_invocation extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_descriptor_heap)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_descriptor_heap extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_descriptor_indexing)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_descriptor_indexing extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_float8)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_float8 extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_fragment_fully_covered)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_fragment_fully_covered extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_fragment_invocation_density)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_fragment_invocation_density extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_fragment_shader_interlock)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_fragment_shader_interlock extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_long_vector)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_long_vector extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_mesh_shader)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_mesh_shader extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_opacity_micromap)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_opacity_micromap extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_optnone)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_optnone extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_physical_storage_buffer)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_physical_storage_buffer extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_replicated_composites)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_replicated_composites extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_64bit_indexing)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_64bit_indexing extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_atomic_float16_add)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_atomic_float16_add extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_atomic_float_add)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_atomic_float_add extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_atomic_float_min_max extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_image_int64)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_image_int64 extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_invocation_reorder)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_invocation_reorder extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_stencil_export)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_stencil_export extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_subgroup_partitioned)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_subgroup_partitioned extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_tile_image)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_tile_image extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
        .llvm_name = null,
        .description = "Enable SPV_EXT_shader_viewport_index_layer extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_16bit_storage)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_16bit_storage extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_8bit_storage)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_8bit_storage extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_abort)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_abort extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_bfloat16)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_bfloat16 extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_bit_instructions)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_bit_instructions extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_compute_shader_derivatives)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_compute_shader_derivatives extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_constant_data)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_constant_data extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_cooperative_matrix)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_cooperative_matrix extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_device_group)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_device_group extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_expect_assume)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_expect_assume extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_float_controls)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_float_controls extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_float_controls2)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_float_controls2 extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_fma)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_fma extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_fragment_shader_barycentric)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_fragment_shader_barycentric extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_fragment_shading_rate)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_fragment_shading_rate extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_integer_dot_product)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_integer_dot_product extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_multiview)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_multiview extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_poison_freeze)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_poison_freeze extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_post_depth_coverage)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_post_depth_coverage extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_quad_control)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_quad_control extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_ray_cull_mask)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_ray_cull_mask extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_ray_query)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_ray_query extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_ray_tracing)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_ray_tracing extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_ray_tracing_position_fetch)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_ray_tracing_position_fetch extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_shader_atomic_counter_ops extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_shader_ballot)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_shader_ballot extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_shader_clock)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_shader_clock extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_shader_draw_parameters)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_shader_draw_parameters extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_subgroup_rotate)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_subgroup_rotate extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_subgroup_vote)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_subgroup_vote extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_uniform_group_instructions)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_uniform_group_instructions extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_untyped_pointers)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_untyped_pointers extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_variable_pointers)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_variable_pointers extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_vulkan_memory_model)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_vulkan_memory_model extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
        .llvm_name = null,
        .description = "Enable SPV_KHR_workgroup_memory_explicit_layout extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.stencil_export_ext)] = .{
        .llvm_name = null,
        .description = "Enable stencil_export_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_stencil_export,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_buffer16bit_access)] = .{
        .llvm_name = null,
        .description = "Enable storage_buffer16bit_access capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_16bit_storage,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.storage_buffer8bit_access)] = .{
        .llvm_name = null,
        .description = "Enable storage_buffer8bit_access capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_8bit_storage,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.storage_buffer_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_buffer_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_buffer_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_buffer_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.storage_image_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_image_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.storage_image_extended_formats)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_extended_formats capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_image_multisample)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_multisample capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_image_read_without_format)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_read_without_format capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_image_write_without_format)] = .{
        .llvm_name = null,
        .description = "Enable storage_image_write_without_format capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.storage_input_output16)] = .{
        .llvm_name = null,
        .description = "Enable storage_input_output16 capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_16bit_storage,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.storage_push_constant16)] = .{
        .llvm_name = null,
        .description = "Enable storage_push_constant16 capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_16bit_storage,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.storage_push_constant8)] = .{
        .llvm_name = null,
        .description = "Enable storage_push_constant8 capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_8bit_storage,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.storage_texel_buffer_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_texel_buffer_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.storage_texel_buffer_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable storage_texel_buffer_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.subgroup_ballot_khr)] = .{
        .llvm_name = null,
        .description = "Enable subgroup_ballot_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_shader_ballot,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.subgroup_dispatch)] = .{
        .llvm_name = null,
        .description = "Enable subgroup_dispatch capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_1,
        }),
    };
    result[@backingInt(Feature.subgroup_vote_khr)] = .{
        .llvm_name = null,
        .description = "Enable subgroup_vote_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_subgroup_vote,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.tessellation)] = .{
        .llvm_name = null,
        .description = "Enable tessellation capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.tessellation_point_size)] = .{
        .llvm_name = null,
        .description = "Enable tessellation_point_size capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.tile_image_color_read_access_ext)] = .{
        .llvm_name = null,
        .description = "Enable tile_image_color_read_access_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_tile_image,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.tile_image_depth_read_access_ext)] = .{
        .llvm_name = null,
        .description = "Enable tile_image_depth_read_access_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_tile_image,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.tile_image_stencil_read_access_ext)] = .{
        .llvm_name = null,
        .description = "Enable tile_image_stencil_read_access_ext capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_shader_tile_image,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.transform_feedback)] = .{
        .llvm_name = null,
        .description = "Enable transform_feedback capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.uniform_and_storage_buffer16bit_access)] = .{
        .llvm_name = null,
        .description = "Enable uniform_and_storage_buffer16bit_access capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_16bit_storage,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.uniform_and_storage_buffer8bit_access)] = .{
        .llvm_name = null,
        .description = "Enable uniform_and_storage_buffer8bit_access capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_8bit_storage,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.uniform_buffer_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable uniform_buffer_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.uniform_buffer_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable uniform_buffer_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.uniform_decoration)] = .{
        .llvm_name = null,
        .description = "Enable uniform_decoration capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_6,
        }),
    };
    result[@backingInt(Feature.uniform_texel_buffer_array_dynamic_indexing)] = .{
        .llvm_name = null,
        .description = "Enable uniform_texel_buffer_array_dynamic_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.uniform_texel_buffer_array_non_uniform_indexing)] = .{
        .llvm_name = null,
        .description = "Enable uniform_texel_buffer_array_non_uniform_indexing capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_EXT_descriptor_indexing,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.untyped_pointers_khr)] = .{
        .llvm_name = null,
        .description = "Enable untyped_pointers_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_untyped_pointers,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.v1_0)] = .{
        .llvm_name = null,
        .description = "Enable v1_0 extension",
        .dependencies = featureSet(&[_]Feature{}),
    };
    result[@backingInt(Feature.v1_1)] = .{
        .llvm_name = null,
        .description = "Enable v1_1 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.v1_2)] = .{
        .llvm_name = null,
        .description = "Enable v1_2 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_1,
        }),
    };
    result[@backingInt(Feature.v1_3)] = .{
        .llvm_name = null,
        .description = "Enable v1_3 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_2,
        }),
    };
    result[@backingInt(Feature.v1_4)] = .{
        .llvm_name = null,
        .description = "Enable v1_4 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_3,
        }),
    };
    result[@backingInt(Feature.v1_5)] = .{
        .llvm_name = null,
        .description = "Enable v1_5 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_4,
        }),
    };
    result[@backingInt(Feature.v1_6)] = .{
        .llvm_name = null,
        .description = "Enable v1_6 extension",
        .dependencies = featureSet(&[_]Feature{
            .v1_5,
        }),
    };
    result[@backingInt(Feature.variable_pointers)] = .{
        .llvm_name = null,
        .description = "Enable variable_pointers capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_variable_pointers,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.variable_pointers_storage_buffer)] = .{
        .llvm_name = null,
        .description = "Enable variable_pointers_storage_buffer capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_variable_pointers,
            .v1_3,
        }),
    };
    result[@backingInt(Feature.vector16)] = .{
        .llvm_name = null,
        .description = "Enable vector16 capability",
        .dependencies = featureSet(&[_]Feature{
            .v1_0,
        }),
    };
    result[@backingInt(Feature.vulkan_memory_model)] = .{
        .llvm_name = null,
        .description = "Enable vulkan_memory_model capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_vulkan_memory_model,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.vulkan_memory_model_device_scope)] = .{
        .llvm_name = null,
        .description = "Enable vulkan_memory_model_device_scope capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_vulkan_memory_model,
            .v1_5,
        }),
    };
    result[@backingInt(Feature.workgroup_memory_explicit_layout16bit_access_khr)] = .{
        .llvm_name = null,
        .description = "Enable workgroup_memory_explicit_layout16bit_access_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_workgroup_memory_explicit_layout,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.workgroup_memory_explicit_layout8bit_access_khr)] = .{
        .llvm_name = null,
        .description = "Enable workgroup_memory_explicit_layout8bit_access_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_workgroup_memory_explicit_layout,
            .v1_0,
        }),
    };
    result[@backingInt(Feature.workgroup_memory_explicit_layout_khr)] = .{
        .llvm_name = null,
        .description = "Enable workgroup_memory_explicit_layout_khr capability",
        .dependencies = featureSet(&[_]Feature{
            .SPV_KHR_workgroup_memory_explicit_layout,
            .v1_0,
        }),
    };
    const ti = @typeInfo(Feature);
    for (&result, 0..) |*elem, i| {
        elem.index = i;
        elem.name = ti.@"enum".field_names[i];
    }
    break :blk result;
};

pub const cpu = struct {
    pub const generic: CpuModel = .{
        .name = "generic",
        .llvm_name = "generic",
        .features = featureSet(&[_]Feature{}),
    };
    pub const opencl_v2: CpuModel = .{
        .name = "opencl_v2",
        .llvm_name = null,
        .features = featureSet(&[_]Feature{
            .v1_2,
        }),
    };
    pub const vulkan_v1_2: CpuModel = .{
        .name = "vulkan_v1_2",
        .llvm_name = null,
        .features = featureSet(&[_]Feature{
            .v1_5,
        }),
    };
};
