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};