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    alu32,
 9    dummy,
10    dwarfris,
11};
12
13pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
14pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
15pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
16pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
17
18pub const all_features = blk: {
19    const len = @typeInfo(Feature).@"enum".fields.len;
20    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
21    var result: [len]CpuFeature = undefined;
22    result[@intFromEnum(Feature.alu32)] = .{
23        .llvm_name = "alu32",
24        .description = "Enable ALU32 instructions",
25        .dependencies = featureSet(&[_]Feature{}),
26    };
27    result[@intFromEnum(Feature.dummy)] = .{
28        .llvm_name = "dummy",
29        .description = "unused feature",
30        .dependencies = featureSet(&[_]Feature{}),
31    };
32    result[@intFromEnum(Feature.dwarfris)] = .{
33        .llvm_name = "dwarfris",
34        .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
35        .dependencies = featureSet(&[_]Feature{}),
36    };
37    const ti = @typeInfo(Feature);
38    for (&result, 0..) |*elem, i| {
39        elem.index = i;
40        elem.name = ti.@"enum".fields[i].name;
41    }
42    break :blk result;
43};
44
45pub const cpu = struct {
46    pub const generic: CpuModel = .{
47        .name = "generic",
48        .llvm_name = "generic",
49        .features = featureSet(&[_]Feature{}),
50    };
51    pub const probe: CpuModel = .{
52        .name = "probe",
53        .llvm_name = "probe",
54        .features = featureSet(&[_]Feature{}),
55    };
56    pub const v1: CpuModel = .{
57        .name = "v1",
58        .llvm_name = "v1",
59        .features = featureSet(&[_]Feature{}),
60    };
61    pub const v2: CpuModel = .{
62        .name = "v2",
63        .llvm_name = "v2",
64        .features = featureSet(&[_]Feature{}),
65    };
66    pub const v3: CpuModel = .{
67        .name = "v3",
68        .llvm_name = "v3",
69        .features = featureSet(&[_]Feature{
70            .alu32,
71        }),
72    };
73    pub const v4: CpuModel = .{
74        .name = "v4",
75        .llvm_name = "v4",
76        .features = featureSet(&[_]Feature{
77            .alu32,
78        }),
79    };
80};