master
  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    arbitrary_precision_integers,
  9    float16,
 10    float64,
 11    generic_pointer,
 12    int64,
 13    storage_push_constant16,
 14    v1_0,
 15    v1_1,
 16    v1_2,
 17    v1_3,
 18    v1_4,
 19    v1_5,
 20    v1_6,
 21    variable_pointers,
 22    vector16,
 23};
 24
 25pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
 26pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
 27pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
 28pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
 29
 30pub const all_features = blk: {
 31    @setEvalBranchQuota(2000);
 32    const len = @typeInfo(Feature).@"enum".fields.len;
 33    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
 34    var result: [len]CpuFeature = undefined;
 35    result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{
 36        .llvm_name = null,
 37        .description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability",
 38        .dependencies = featureSet(&[_]Feature{
 39            .v1_5,
 40        }),
 41    };
 42    result[@intFromEnum(Feature.float16)] = .{
 43        .llvm_name = null,
 44        .description = "Enable Float16 capability",
 45        .dependencies = featureSet(&[_]Feature{
 46            .v1_0,
 47        }),
 48    };
 49    result[@intFromEnum(Feature.float64)] = .{
 50        .llvm_name = null,
 51        .description = "Enable Float64 capability",
 52        .dependencies = featureSet(&[_]Feature{
 53            .v1_0,
 54        }),
 55    };
 56    result[@intFromEnum(Feature.generic_pointer)] = .{
 57        .llvm_name = null,
 58        .description = "Enable GenericPointer capability",
 59        .dependencies = featureSet(&[_]Feature{
 60            .v1_0,
 61        }),
 62    };
 63    result[@intFromEnum(Feature.int64)] = .{
 64        .llvm_name = null,
 65        .description = "Enable Int64 capability",
 66        .dependencies = featureSet(&[_]Feature{
 67            .v1_0,
 68        }),
 69    };
 70    result[@intFromEnum(Feature.storage_push_constant16)] = .{
 71        .llvm_name = null,
 72        .description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",
 73        .dependencies = featureSet(&[_]Feature{
 74            .v1_3,
 75        }),
 76    };
 77    result[@intFromEnum(Feature.v1_0)] = .{
 78        .llvm_name = null,
 79        .description = "Enable version 1.0",
 80        .dependencies = featureSet(&[_]Feature{}),
 81    };
 82    result[@intFromEnum(Feature.v1_1)] = .{
 83        .llvm_name = null,
 84        .description = "Enable version 1.1",
 85        .dependencies = featureSet(&[_]Feature{
 86            .v1_0,
 87        }),
 88    };
 89    result[@intFromEnum(Feature.v1_2)] = .{
 90        .llvm_name = null,
 91        .description = "Enable version 1.2",
 92        .dependencies = featureSet(&[_]Feature{
 93            .v1_1,
 94        }),
 95    };
 96    result[@intFromEnum(Feature.v1_3)] = .{
 97        .llvm_name = null,
 98        .description = "Enable version 1.3",
 99        .dependencies = featureSet(&[_]Feature{
100            .v1_2,
101        }),
102    };
103    result[@intFromEnum(Feature.v1_4)] = .{
104        .llvm_name = null,
105        .description = "Enable version 1.4",
106        .dependencies = featureSet(&[_]Feature{
107            .v1_3,
108        }),
109    };
110    result[@intFromEnum(Feature.v1_5)] = .{
111        .llvm_name = null,
112        .description = "Enable version 1.5",
113        .dependencies = featureSet(&[_]Feature{
114            .v1_4,
115        }),
116    };
117    result[@intFromEnum(Feature.v1_6)] = .{
118        .llvm_name = null,
119        .description = "Enable version 1.6",
120        .dependencies = featureSet(&[_]Feature{
121            .v1_5,
122        }),
123    };
124    result[@intFromEnum(Feature.variable_pointers)] = .{
125        .llvm_name = null,
126        .description = "Enable SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
127        .dependencies = featureSet(&[_]Feature{
128            .v1_0,
129        }),
130    };
131    result[@intFromEnum(Feature.vector16)] = .{
132        .llvm_name = null,
133        .description = "Enable Vector16 capability",
134        .dependencies = featureSet(&[_]Feature{
135            .v1_0,
136        }),
137    };
138    const ti = @typeInfo(Feature);
139    for (&result, 0..) |*elem, i| {
140        elem.index = i;
141        elem.name = ti.@"enum".fields[i].name;
142    }
143    break :blk result;
144};
145
146pub const cpu = struct {
147    pub const generic: CpuModel = .{
148        .name = "generic",
149        .llvm_name = "generic",
150        .features = featureSet(&[_]Feature{}),
151    };
152    pub const opencl_v2: CpuModel = .{
153        .name = "opencl_v2",
154        .llvm_name = null,
155        .features = featureSet(&[_]Feature{
156            .v1_2,
157        }),
158    };
159    pub const vulkan_v1_2: CpuModel = .{
160        .name = "vulkan_v1_2",
161        .llvm_name = null,
162        .features = featureSet(&[_]Feature{
163            .v1_5,
164        }),
165    };
166};