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    bwx,
  9    cix,
 10    fix,
 11    max,
 12};
 13
 14pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
 15pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
 16pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
 17pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
 18
 19pub const all_features = blk: {
 20    const len = @typeInfo(Feature).@"enum".fields.len;
 21    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
 22    var result: [len]CpuFeature = undefined;
 23    result[@intFromEnum(Feature.bwx)] = .{
 24        .llvm_name = null,
 25        .description = "Enable byte/word extensions",
 26        .dependencies = featureSet(&[_]Feature{}),
 27    };
 28    result[@intFromEnum(Feature.cix)] = .{
 29        .llvm_name = null,
 30        .description = "Enable counting extensions",
 31        .dependencies = featureSet(&[_]Feature{}),
 32    };
 33    result[@intFromEnum(Feature.fix)] = .{
 34        .llvm_name = null,
 35        .description = "Enable floating point move and square root extensions",
 36        .dependencies = featureSet(&[_]Feature{}),
 37    };
 38    result[@intFromEnum(Feature.max)] = .{
 39        .llvm_name = null,
 40        .description = "Enable motion video extensions",
 41        .dependencies = featureSet(&[_]Feature{}),
 42    };
 43    const ti = @typeInfo(Feature);
 44    for (&result, 0..) |*elem, i| {
 45        elem.index = i;
 46        elem.name = ti.@"enum".fields[i].name;
 47    }
 48    break :blk result;
 49};
 50
 51pub const cpu = struct {
 52    pub const ev4: CpuModel = .{
 53        .name = "ev4",
 54        .llvm_name = null,
 55        .features = featureSet(&[_]Feature{}),
 56    };
 57    pub const ev45: CpuModel = .{
 58        .name = "ev45",
 59        .llvm_name = null,
 60        .features = featureSet(&[_]Feature{}),
 61    };
 62    pub const ev5: CpuModel = .{
 63        .name = "ev5",
 64        .llvm_name = null,
 65        .features = featureSet(&[_]Feature{}),
 66    };
 67    pub const ev56: CpuModel = .{
 68        .name = "ev56",
 69        .llvm_name = null,
 70        .features = featureSet(&[_]Feature{
 71            .bwx,
 72        }),
 73    };
 74    pub const ev6: CpuModel = .{
 75        .name = "ev6",
 76        .llvm_name = null,
 77        .features = featureSet(&[_]Feature{
 78            .bwx,
 79            .fix,
 80            .max,
 81        }),
 82    };
 83    pub const ev67: CpuModel = .{
 84        .name = "ev67",
 85        .llvm_name = null,
 86        .features = featureSet(&[_]Feature{
 87            .bwx,
 88            .cix,
 89            .fix,
 90            .max,
 91        }),
 92    };
 93    pub const pca56: CpuModel = .{
 94        .name = "pca56",
 95        .llvm_name = null,
 96        .features = featureSet(&[_]Feature{
 97            .bwx,
 98            .max,
 99        }),
100    };
101};