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    bool,
  9    clamps,
 10    coprocessor,
 11    dcache,
 12    debug,
 13    density,
 14    dfpaccel,
 15    div32,
 16    exception,
 17    extendedl32r,
 18    fp,
 19    highpriinterrupts,
 20    highpriinterrupts_level3,
 21    highpriinterrupts_level4,
 22    highpriinterrupts_level5,
 23    highpriinterrupts_level6,
 24    highpriinterrupts_level7,
 25    interrupt,
 26    loop,
 27    mac16,
 28    minmax,
 29    miscsr,
 30    mul16,
 31    mul32,
 32    mul32high,
 33    nsa,
 34    prid,
 35    regprotect,
 36    rvector,
 37    sext,
 38    threadptr,
 39    timers1,
 40    timers2,
 41    timers3,
 42    windowed,
 43};
 44
 45pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
 46pub const featureSetHas = CpuFeature.FeatureSetFns(Feature).featureSetHas;
 47pub const featureSetHasAny = CpuFeature.FeatureSetFns(Feature).featureSetHasAny;
 48pub const featureSetHasAll = CpuFeature.FeatureSetFns(Feature).featureSetHasAll;
 49
 50pub const all_features = blk: {
 51    const len = @typeInfo(Feature).@"enum".fields.len;
 52    std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
 53    var result: [len]CpuFeature = undefined;
 54    result[@intFromEnum(Feature.bool)] = .{
 55        .llvm_name = "bool",
 56        .description = "Enable Xtensa Boolean extension",
 57        .dependencies = featureSet(&[_]Feature{}),
 58    };
 59    result[@intFromEnum(Feature.clamps)] = .{
 60        .llvm_name = "clamps",
 61        .description = "Enable Xtensa CLAMPS option",
 62        .dependencies = featureSet(&[_]Feature{}),
 63    };
 64    result[@intFromEnum(Feature.coprocessor)] = .{
 65        .llvm_name = "coprocessor",
 66        .description = "Enable Xtensa Coprocessor option",
 67        .dependencies = featureSet(&[_]Feature{}),
 68    };
 69    result[@intFromEnum(Feature.dcache)] = .{
 70        .llvm_name = "dcache",
 71        .description = "Enable Xtensa Data Cache option",
 72        .dependencies = featureSet(&[_]Feature{}),
 73    };
 74    result[@intFromEnum(Feature.debug)] = .{
 75        .llvm_name = "debug",
 76        .description = "Enable Xtensa Debug option",
 77        .dependencies = featureSet(&[_]Feature{}),
 78    };
 79    result[@intFromEnum(Feature.density)] = .{
 80        .llvm_name = "density",
 81        .description = "Enable Density instructions",
 82        .dependencies = featureSet(&[_]Feature{}),
 83    };
 84    result[@intFromEnum(Feature.dfpaccel)] = .{
 85        .llvm_name = "dfpaccel",
 86        .description = "Enable Xtensa Double Precision FP acceleration",
 87        .dependencies = featureSet(&[_]Feature{}),
 88    };
 89    result[@intFromEnum(Feature.div32)] = .{
 90        .llvm_name = "div32",
 91        .description = "Enable Xtensa Div32 option",
 92        .dependencies = featureSet(&[_]Feature{}),
 93    };
 94    result[@intFromEnum(Feature.exception)] = .{
 95        .llvm_name = "exception",
 96        .description = "Enable Xtensa Exception option",
 97        .dependencies = featureSet(&[_]Feature{}),
 98    };
 99    result[@intFromEnum(Feature.extendedl32r)] = .{
100        .llvm_name = "extendedl32r",
101        .description = "Enable Xtensa Extended L32R option",
102        .dependencies = featureSet(&[_]Feature{}),
103    };
104    result[@intFromEnum(Feature.fp)] = .{
105        .llvm_name = "fp",
106        .description = "Enable Xtensa Single FP instructions",
107        .dependencies = featureSet(&[_]Feature{}),
108    };
109    result[@intFromEnum(Feature.highpriinterrupts)] = .{
110        .llvm_name = "highpriinterrupts",
111        .description = "Enable Xtensa HighPriInterrupts option",
112        .dependencies = featureSet(&[_]Feature{}),
113    };
114    result[@intFromEnum(Feature.highpriinterrupts_level3)] = .{
115        .llvm_name = "highpriinterrupts-level3",
116        .description = "Enable Xtensa HighPriInterrupts Level3",
117        .dependencies = featureSet(&[_]Feature{
118            .highpriinterrupts,
119        }),
120    };
121    result[@intFromEnum(Feature.highpriinterrupts_level4)] = .{
122        .llvm_name = "highpriinterrupts-level4",
123        .description = "Enable Xtensa HighPriInterrupts Level4",
124        .dependencies = featureSet(&[_]Feature{
125            .highpriinterrupts,
126        }),
127    };
128    result[@intFromEnum(Feature.highpriinterrupts_level5)] = .{
129        .llvm_name = "highpriinterrupts-level5",
130        .description = "Enable Xtensa HighPriInterrupts Level5",
131        .dependencies = featureSet(&[_]Feature{
132            .highpriinterrupts,
133        }),
134    };
135    result[@intFromEnum(Feature.highpriinterrupts_level6)] = .{
136        .llvm_name = "highpriinterrupts-level6",
137        .description = "Enable Xtensa HighPriInterrupts Level6",
138        .dependencies = featureSet(&[_]Feature{
139            .highpriinterrupts,
140        }),
141    };
142    result[@intFromEnum(Feature.highpriinterrupts_level7)] = .{
143        .llvm_name = "highpriinterrupts-level7",
144        .description = "Enable Xtensa HighPriInterrupts Level7",
145        .dependencies = featureSet(&[_]Feature{
146            .highpriinterrupts,
147        }),
148    };
149    result[@intFromEnum(Feature.interrupt)] = .{
150        .llvm_name = "interrupt",
151        .description = "Enable Xtensa Interrupt option",
152        .dependencies = featureSet(&[_]Feature{}),
153    };
154    result[@intFromEnum(Feature.loop)] = .{
155        .llvm_name = "loop",
156        .description = "Enable Xtensa Loop extension",
157        .dependencies = featureSet(&[_]Feature{}),
158    };
159    result[@intFromEnum(Feature.mac16)] = .{
160        .llvm_name = "mac16",
161        .description = "Enable Xtensa MAC16 instructions",
162        .dependencies = featureSet(&[_]Feature{}),
163    };
164    result[@intFromEnum(Feature.minmax)] = .{
165        .llvm_name = "minmax",
166        .description = "Enable Xtensa MINMAX option",
167        .dependencies = featureSet(&[_]Feature{}),
168    };
169    result[@intFromEnum(Feature.miscsr)] = .{
170        .llvm_name = "miscsr",
171        .description = "Enable Xtensa Miscellaneous SR option",
172        .dependencies = featureSet(&[_]Feature{}),
173    };
174    result[@intFromEnum(Feature.mul16)] = .{
175        .llvm_name = "mul16",
176        .description = "Enable Xtensa Mul16 option",
177        .dependencies = featureSet(&[_]Feature{}),
178    };
179    result[@intFromEnum(Feature.mul32)] = .{
180        .llvm_name = "mul32",
181        .description = "Enable Xtensa Mul32 option",
182        .dependencies = featureSet(&[_]Feature{}),
183    };
184    result[@intFromEnum(Feature.mul32high)] = .{
185        .llvm_name = "mul32high",
186        .description = "Enable Xtensa Mul32High option",
187        .dependencies = featureSet(&[_]Feature{}),
188    };
189    result[@intFromEnum(Feature.nsa)] = .{
190        .llvm_name = "nsa",
191        .description = "Enable Xtensa NSA option",
192        .dependencies = featureSet(&[_]Feature{}),
193    };
194    result[@intFromEnum(Feature.prid)] = .{
195        .llvm_name = "prid",
196        .description = "Enable Xtensa Processor ID option",
197        .dependencies = featureSet(&[_]Feature{}),
198    };
199    result[@intFromEnum(Feature.regprotect)] = .{
200        .llvm_name = "regprotect",
201        .description = "Enable Xtensa Region Protection option",
202        .dependencies = featureSet(&[_]Feature{}),
203    };
204    result[@intFromEnum(Feature.rvector)] = .{
205        .llvm_name = "rvector",
206        .description = "Enable Xtensa Relocatable Vector option",
207        .dependencies = featureSet(&[_]Feature{}),
208    };
209    result[@intFromEnum(Feature.sext)] = .{
210        .llvm_name = "sext",
211        .description = "Enable Xtensa Sign Extend option",
212        .dependencies = featureSet(&[_]Feature{}),
213    };
214    result[@intFromEnum(Feature.threadptr)] = .{
215        .llvm_name = "threadptr",
216        .description = "Enable Xtensa THREADPTR option",
217        .dependencies = featureSet(&[_]Feature{}),
218    };
219    result[@intFromEnum(Feature.timers1)] = .{
220        .llvm_name = "timers1",
221        .description = "Enable Xtensa Timers 1",
222        .dependencies = featureSet(&[_]Feature{}),
223    };
224    result[@intFromEnum(Feature.timers2)] = .{
225        .llvm_name = "timers2",
226        .description = "Enable Xtensa Timers 2",
227        .dependencies = featureSet(&[_]Feature{}),
228    };
229    result[@intFromEnum(Feature.timers3)] = .{
230        .llvm_name = "timers3",
231        .description = "Enable Xtensa Timers 3",
232        .dependencies = featureSet(&[_]Feature{}),
233    };
234    result[@intFromEnum(Feature.windowed)] = .{
235        .llvm_name = "windowed",
236        .description = "Enable Xtensa Windowed Register option",
237        .dependencies = featureSet(&[_]Feature{}),
238    };
239    const ti = @typeInfo(Feature);
240    for (&result, 0..) |*elem, i| {
241        elem.index = i;
242        elem.name = ti.@"enum".fields[i].name;
243    }
244    break :blk result;
245};
246
247pub const cpu = struct {
248    pub const generic: CpuModel = .{
249        .name = "generic",
250        .llvm_name = "generic",
251        .features = featureSet(&[_]Feature{}),
252    };
253};