authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2020-01-07 10:36:06-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
loge4ecdefa9a668d34c830816eea242b110c30c475
tree9dcae1840100dc1366c16ce8ac55aefe1dfff44f
parent51372200d36ee0f78d32a5f7c7f8d4faf6dc9a35
signature Commit is signed but in an unrecognized format.

Rename subfeatures -> dependencies


17 files changed, 3764 insertions(+), 3764 deletions(-)

lib/std/target.zig+2-2
...@@ -862,14 +862,14 @@ pub const Feature = struct {...@@ -862,14 +862,14 @@ pub const Feature = struct {
862 name: []const u8,862 name: []const u8,
863 description: []const u8,863 description: []const u8,
864864
865 subfeatures: []*const Feature,865 dependencies: []*const Feature,
866};866};
867867
868pub const Cpu = struct {868pub const Cpu = struct {
869 name: []const u8,869 name: []const u8,
870 llvm_name: []const u8,870 llvm_name: []const u8,
871871
872 subfeatures: []*const Feature,872 dependencies: []*const Feature,
873};873};
874874
875pub fn getFeaturesForArch(arch: @TagType(Target.Arch)) []*const Feature {875pub fn getFeaturesForArch(arch: @TagType(Target.Arch)) []*const Feature {
lib/std/target/aarch64.zig+372-372
...@@ -4,7 +4,7 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,7 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_aes = Feature{4pub const feature_aes = Feature{
5 .name = "aes",5 .name = "aes",
6 .description = "Enable AES support",6 .description = "Enable AES support",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 &feature_fpArmv8,8 &feature_fpArmv8,
9 },9 },
10};10};
...@@ -12,154 +12,154 @@ pub const feature_aes = Feature{...@@ -12,154 +12,154 @@ pub const feature_aes = Feature{
12pub const feature_am = Feature{12pub const feature_am = Feature{
13 .name = "am",13 .name = "am",
14 .description = "Enable v8.4-A Activity Monitors extension",14 .description = "Enable v8.4-A Activity Monitors extension",
15 .subfeatures = &[_]*const Feature {15 .dependencies = &[_]*const Feature {
16 },16 },
17};17};
1818
19pub const feature_aggressiveFma = Feature{19pub const feature_aggressiveFma = Feature{
20 .name = "aggressive-fma",20 .name = "aggressive-fma",
21 .description = "Enable Aggressive FMA for floating-point.",21 .description = "Enable Aggressive FMA for floating-point.",
22 .subfeatures = &[_]*const Feature {22 .dependencies = &[_]*const Feature {
23 },23 },
24};24};
2525
26pub const feature_altnzcv = Feature{26pub const feature_altnzcv = Feature{
27 .name = "altnzcv",27 .name = "altnzcv",
28 .description = "Enable alternative NZCV format for floating point comparisons",28 .description = "Enable alternative NZCV format for floating point comparisons",
29 .subfeatures = &[_]*const Feature {29 .dependencies = &[_]*const Feature {
30 },30 },
31};31};
3232
33pub const feature_alternateSextloadCvtF32Pattern = Feature{33pub const feature_alternateSextloadCvtF32Pattern = Feature{
34 .name = "alternate-sextload-cvt-f32-pattern",34 .name = "alternate-sextload-cvt-f32-pattern",
35 .description = "Use alternative pattern for sextload convert to f32",35 .description = "Use alternative pattern for sextload convert to f32",
36 .subfeatures = &[_]*const Feature {36 .dependencies = &[_]*const Feature {
37 },37 },
38};38};
3939
40pub const feature_arithBccFusion = Feature{40pub const feature_arithBccFusion = Feature{
41 .name = "arith-bcc-fusion",41 .name = "arith-bcc-fusion",
42 .description = "CPU fuses arithmetic+bcc operations",42 .description = "CPU fuses arithmetic+bcc operations",
43 .subfeatures = &[_]*const Feature {43 .dependencies = &[_]*const Feature {
44 },44 },
45};45};
4646
47pub const feature_arithCbzFusion = Feature{47pub const feature_arithCbzFusion = Feature{
48 .name = "arith-cbz-fusion",48 .name = "arith-cbz-fusion",
49 .description = "CPU fuses arithmetic + cbz/cbnz operations",49 .description = "CPU fuses arithmetic + cbz/cbnz operations",
50 .subfeatures = &[_]*const Feature {50 .dependencies = &[_]*const Feature {
51 },51 },
52};52};
5353
54pub const feature_balanceFpOps = Feature{54pub const feature_balanceFpOps = Feature{
55 .name = "balance-fp-ops",55 .name = "balance-fp-ops",
56 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",56 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
57 .subfeatures = &[_]*const Feature {57 .dependencies = &[_]*const Feature {
58 },58 },
59};59};
6060
61pub const feature_bti = Feature{61pub const feature_bti = Feature{
62 .name = "bti",62 .name = "bti",
63 .description = "Enable Branch Target Identification",63 .description = "Enable Branch Target Identification",
64 .subfeatures = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
65 },65 },
66};66};
6767
68pub const feature_ccidx = Feature{68pub const feature_ccidx = Feature{
69 .name = "ccidx",69 .name = "ccidx",
70 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",70 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
71 .subfeatures = &[_]*const Feature {71 .dependencies = &[_]*const Feature {
72 },72 },
73};73};
7474
75pub const feature_ccpp = Feature{75pub const feature_ccpp = Feature{
76 .name = "ccpp",76 .name = "ccpp",
77 .description = "Enable v8.2 data Cache Clean to Point of Persistence",77 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
78 .subfeatures = &[_]*const Feature {78 .dependencies = &[_]*const Feature {
79 },79 },
80};80};
8181
82pub const feature_crc = Feature{82pub const feature_crc = Feature{
83 .name = "crc",83 .name = "crc",
84 .description = "Enable ARMv8 CRC-32 checksum instructions",84 .description = "Enable ARMv8 CRC-32 checksum instructions",
85 .subfeatures = &[_]*const Feature {85 .dependencies = &[_]*const Feature {
86 },86 },
87};87};
8888
89pub const feature_ccdp = Feature{89pub const feature_ccdp = Feature{
90 .name = "ccdp",90 .name = "ccdp",
91 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",91 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
92 .subfeatures = &[_]*const Feature {92 .dependencies = &[_]*const Feature {
93 },93 },
94};94};
9595
96pub const feature_callSavedX8 = Feature{96pub const feature_callSavedX8 = Feature{
97 .name = "call-saved-x8",97 .name = "call-saved-x8",
98 .description = "Make X8 callee saved.",98 .description = "Make X8 callee saved.",
99 .subfeatures = &[_]*const Feature {99 .dependencies = &[_]*const Feature {
100 },100 },
101};101};
102102
103pub const feature_callSavedX9 = Feature{103pub const feature_callSavedX9 = Feature{
104 .name = "call-saved-x9",104 .name = "call-saved-x9",
105 .description = "Make X9 callee saved.",105 .description = "Make X9 callee saved.",
106 .subfeatures = &[_]*const Feature {106 .dependencies = &[_]*const Feature {
107 },107 },
108};108};
109109
110pub const feature_callSavedX10 = Feature{110pub const feature_callSavedX10 = Feature{
111 .name = "call-saved-x10",111 .name = "call-saved-x10",
112 .description = "Make X10 callee saved.",112 .description = "Make X10 callee saved.",
113 .subfeatures = &[_]*const Feature {113 .dependencies = &[_]*const Feature {
114 },114 },
115};115};
116116
117pub const feature_callSavedX11 = Feature{117pub const feature_callSavedX11 = Feature{
118 .name = "call-saved-x11",118 .name = "call-saved-x11",
119 .description = "Make X11 callee saved.",119 .description = "Make X11 callee saved.",
120 .subfeatures = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
121 },121 },
122};122};
123123
124pub const feature_callSavedX12 = Feature{124pub const feature_callSavedX12 = Feature{
125 .name = "call-saved-x12",125 .name = "call-saved-x12",
126 .description = "Make X12 callee saved.",126 .description = "Make X12 callee saved.",
127 .subfeatures = &[_]*const Feature {127 .dependencies = &[_]*const Feature {
128 },128 },
129};129};
130130
131pub const feature_callSavedX13 = Feature{131pub const feature_callSavedX13 = Feature{
132 .name = "call-saved-x13",132 .name = "call-saved-x13",
133 .description = "Make X13 callee saved.",133 .description = "Make X13 callee saved.",
134 .subfeatures = &[_]*const Feature {134 .dependencies = &[_]*const Feature {
135 },135 },
136};136};
137137
138pub const feature_callSavedX14 = Feature{138pub const feature_callSavedX14 = Feature{
139 .name = "call-saved-x14",139 .name = "call-saved-x14",
140 .description = "Make X14 callee saved.",140 .description = "Make X14 callee saved.",
141 .subfeatures = &[_]*const Feature {141 .dependencies = &[_]*const Feature {
142 },142 },
143};143};
144144
145pub const feature_callSavedX15 = Feature{145pub const feature_callSavedX15 = Feature{
146 .name = "call-saved-x15",146 .name = "call-saved-x15",
147 .description = "Make X15 callee saved.",147 .description = "Make X15 callee saved.",
148 .subfeatures = &[_]*const Feature {148 .dependencies = &[_]*const Feature {
149 },149 },
150};150};
151151
152pub const feature_callSavedX18 = Feature{152pub const feature_callSavedX18 = Feature{
153 .name = "call-saved-x18",153 .name = "call-saved-x18",
154 .description = "Make X18 callee saved.",154 .description = "Make X18 callee saved.",
155 .subfeatures = &[_]*const Feature {155 .dependencies = &[_]*const Feature {
156 },156 },
157};157};
158158
159pub const feature_complxnum = Feature{159pub const feature_complxnum = Feature{
160 .name = "complxnum",160 .name = "complxnum",
161 .description = "Enable v8.3-A Floating-point complex number support",161 .description = "Enable v8.3-A Floating-point complex number support",
162 .subfeatures = &[_]*const Feature {162 .dependencies = &[_]*const Feature {
163 &feature_fpArmv8,163 &feature_fpArmv8,
164 },164 },
165};165};
...@@ -167,7 +167,7 @@ pub const feature_complxnum = Feature{...@@ -167,7 +167,7 @@ pub const feature_complxnum = Feature{
167pub const feature_crypto = Feature{167pub const feature_crypto = Feature{
168 .name = "crypto",168 .name = "crypto",
169 .description = "Enable cryptographic instructions",169 .description = "Enable cryptographic instructions",
170 .subfeatures = &[_]*const Feature {170 .dependencies = &[_]*const Feature {
171 &feature_fpArmv8,171 &feature_fpArmv8,
172 },172 },
173};173};
...@@ -175,35 +175,35 @@ pub const feature_crypto = Feature{...@@ -175,35 +175,35 @@ pub const feature_crypto = Feature{
175pub const feature_customCheapAsMove = Feature{175pub const feature_customCheapAsMove = Feature{
176 .name = "custom-cheap-as-move",176 .name = "custom-cheap-as-move",
177 .description = "Use custom handling of cheap instructions",177 .description = "Use custom handling of cheap instructions",
178 .subfeatures = &[_]*const Feature {178 .dependencies = &[_]*const Feature {
179 },179 },
180};180};
181181
182pub const feature_dit = Feature{182pub const feature_dit = Feature{
183 .name = "dit",183 .name = "dit",
184 .description = "Enable v8.4-A Data Independent Timing instructions",184 .description = "Enable v8.4-A Data Independent Timing instructions",
185 .subfeatures = &[_]*const Feature {185 .dependencies = &[_]*const Feature {
186 },186 },
187};187};
188188
189pub const feature_disableLatencySchedHeuristic = Feature{189pub const feature_disableLatencySchedHeuristic = Feature{
190 .name = "disable-latency-sched-heuristic",190 .name = "disable-latency-sched-heuristic",
191 .description = "Disable latency scheduling heuristic",191 .description = "Disable latency scheduling heuristic",
192 .subfeatures = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
193 },193 },
194};194};
195195
196pub const feature_dotprod = Feature{196pub const feature_dotprod = Feature{
197 .name = "dotprod",197 .name = "dotprod",
198 .description = "Enable dot product support",198 .description = "Enable dot product support",
199 .subfeatures = &[_]*const Feature {199 .dependencies = &[_]*const Feature {
200 },200 },
201};201};
202202
203pub const feature_ete = Feature{203pub const feature_ete = Feature{
204 .name = "ete",204 .name = "ete",
205 .description = "Enable Embedded Trace Extension",205 .description = "Enable Embedded Trace Extension",
206 .subfeatures = &[_]*const Feature {206 .dependencies = &[_]*const Feature {
207 &feature_trbe,207 &feature_trbe,
208 },208 },
209};209};
...@@ -211,7 +211,7 @@ pub const feature_ete = Feature{...@@ -211,7 +211,7 @@ pub const feature_ete = Feature{
211pub const feature_exynosCheapAsMove = Feature{211pub const feature_exynosCheapAsMove = Feature{
212 .name = "exynos-cheap-as-move",212 .name = "exynos-cheap-as-move",
213 .description = "Use Exynos specific handling of cheap instructions",213 .description = "Use Exynos specific handling of cheap instructions",
214 .subfeatures = &[_]*const Feature {214 .dependencies = &[_]*const Feature {
215 &feature_customCheapAsMove,215 &feature_customCheapAsMove,
216 },216 },
217};217};
...@@ -219,14 +219,14 @@ pub const feature_exynosCheapAsMove = Feature{...@@ -219,14 +219,14 @@ pub const feature_exynosCheapAsMove = Feature{
219pub const feature_fmi = Feature{219pub const feature_fmi = Feature{
220 .name = "fmi",220 .name = "fmi",
221 .description = "Enable v8.4-A Flag Manipulation Instructions",221 .description = "Enable v8.4-A Flag Manipulation Instructions",
222 .subfeatures = &[_]*const Feature {222 .dependencies = &[_]*const Feature {
223 },223 },
224};224};
225225
226pub const feature_fp16fml = Feature{226pub const feature_fp16fml = Feature{
227 .name = "fp16fml",227 .name = "fp16fml",
228 .description = "Enable FP16 FML instructions",228 .description = "Enable FP16 FML instructions",
229 .subfeatures = &[_]*const Feature {229 .dependencies = &[_]*const Feature {
230 &feature_fpArmv8,230 &feature_fpArmv8,
231 },231 },
232};232};
...@@ -234,28 +234,28 @@ pub const feature_fp16fml = Feature{...@@ -234,28 +234,28 @@ pub const feature_fp16fml = Feature{
234pub const feature_fpArmv8 = Feature{234pub const feature_fpArmv8 = Feature{
235 .name = "fp-armv8",235 .name = "fp-armv8",
236 .description = "Enable ARMv8 FP",236 .description = "Enable ARMv8 FP",
237 .subfeatures = &[_]*const Feature {237 .dependencies = &[_]*const Feature {
238 },238 },
239};239};
240240
241pub const feature_fptoint = Feature{241pub const feature_fptoint = Feature{
242 .name = "fptoint",242 .name = "fptoint",
243 .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int",243 .description = "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int",
244 .subfeatures = &[_]*const Feature {244 .dependencies = &[_]*const Feature {
245 },245 },
246};246};
247247
248pub const feature_force32bitJumpTables = Feature{248pub const feature_force32bitJumpTables = Feature{
249 .name = "force-32bit-jump-tables",249 .name = "force-32bit-jump-tables",
250 .description = "Force jump table entries to be 32-bits wide except at MinSize",250 .description = "Force jump table entries to be 32-bits wide except at MinSize",
251 .subfeatures = &[_]*const Feature {251 .dependencies = &[_]*const Feature {
252 },252 },
253};253};
254254
255pub const feature_fullfp16 = Feature{255pub const feature_fullfp16 = Feature{
256 .name = "fullfp16",256 .name = "fullfp16",
257 .description = "Full FP16",257 .description = "Full FP16",
258 .subfeatures = &[_]*const Feature {258 .dependencies = &[_]*const Feature {
259 &feature_fpArmv8,259 &feature_fpArmv8,
260 },260 },
261};261};
...@@ -263,49 +263,49 @@ pub const feature_fullfp16 = Feature{...@@ -263,49 +263,49 @@ pub const feature_fullfp16 = Feature{
263pub const feature_fuseAes = Feature{263pub const feature_fuseAes = Feature{
264 .name = "fuse-aes",264 .name = "fuse-aes",
265 .description = "CPU fuses AES crypto operations",265 .description = "CPU fuses AES crypto operations",
266 .subfeatures = &[_]*const Feature {266 .dependencies = &[_]*const Feature {
267 },267 },
268};268};
269269
270pub const feature_fuseAddress = Feature{270pub const feature_fuseAddress = Feature{
271 .name = "fuse-address",271 .name = "fuse-address",
272 .description = "CPU fuses address generation and memory operations",272 .description = "CPU fuses address generation and memory operations",
273 .subfeatures = &[_]*const Feature {273 .dependencies = &[_]*const Feature {
274 },274 },
275};275};
276276
277pub const feature_fuseArithLogic = Feature{277pub const feature_fuseArithLogic = Feature{
278 .name = "fuse-arith-logic",278 .name = "fuse-arith-logic",
279 .description = "CPU fuses arithmetic and logic operations",279 .description = "CPU fuses arithmetic and logic operations",
280 .subfeatures = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
281 },281 },
282};282};
283283
284pub const feature_fuseCsel = Feature{284pub const feature_fuseCsel = Feature{
285 .name = "fuse-csel",285 .name = "fuse-csel",
286 .description = "CPU fuses conditional select operations",286 .description = "CPU fuses conditional select operations",
287 .subfeatures = &[_]*const Feature {287 .dependencies = &[_]*const Feature {
288 },288 },
289};289};
290290
291pub const feature_fuseCryptoEor = Feature{291pub const feature_fuseCryptoEor = Feature{
292 .name = "fuse-crypto-eor",292 .name = "fuse-crypto-eor",
293 .description = "CPU fuses AES/PMULL and EOR operations",293 .description = "CPU fuses AES/PMULL and EOR operations",
294 .subfeatures = &[_]*const Feature {294 .dependencies = &[_]*const Feature {
295 },295 },
296};296};
297297
298pub const feature_fuseLiterals = Feature{298pub const feature_fuseLiterals = Feature{
299 .name = "fuse-literals",299 .name = "fuse-literals",
300 .description = "CPU fuses literal generation operations",300 .description = "CPU fuses literal generation operations",
301 .subfeatures = &[_]*const Feature {301 .dependencies = &[_]*const Feature {
302 },302 },
303};303};
304304
305pub const feature_jsconv = Feature{305pub const feature_jsconv = Feature{
306 .name = "jsconv",306 .name = "jsconv",
307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
308 .subfeatures = &[_]*const Feature {308 .dependencies = &[_]*const Feature {
309 &feature_fpArmv8,309 &feature_fpArmv8,
310 },310 },
311};311};
...@@ -313,42 +313,42 @@ pub const feature_jsconv = Feature{...@@ -313,42 +313,42 @@ pub const feature_jsconv = Feature{
313pub const feature_lor = Feature{313pub const feature_lor = Feature{
314 .name = "lor",314 .name = "lor",
315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
316 .subfeatures = &[_]*const Feature {316 .dependencies = &[_]*const Feature {
317 },317 },
318};318};
319319
320pub const feature_lse = Feature{320pub const feature_lse = Feature{
321 .name = "lse",321 .name = "lse",
322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
323 .subfeatures = &[_]*const Feature {323 .dependencies = &[_]*const Feature {
324 },324 },
325};325};
326326
327pub const feature_lslFast = Feature{327pub const feature_lslFast = Feature{
328 .name = "lsl-fast",328 .name = "lsl-fast",
329 .description = "CPU has a fastpath logical shift of up to 3 places",329 .description = "CPU has a fastpath logical shift of up to 3 places",
330 .subfeatures = &[_]*const Feature {330 .dependencies = &[_]*const Feature {
331 },331 },
332};332};
333333
334pub const feature_mpam = Feature{334pub const feature_mpam = Feature{
335 .name = "mpam",335 .name = "mpam",
336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
337 .subfeatures = &[_]*const Feature {337 .dependencies = &[_]*const Feature {
338 },338 },
339};339};
340340
341pub const feature_mte = Feature{341pub const feature_mte = Feature{
342 .name = "mte",342 .name = "mte",
343 .description = "Enable Memory Tagging Extension",343 .description = "Enable Memory Tagging Extension",
344 .subfeatures = &[_]*const Feature {344 .dependencies = &[_]*const Feature {
345 },345 },
346};346};
347347
348pub const feature_neon = Feature{348pub const feature_neon = Feature{
349 .name = "neon",349 .name = "neon",
350 .description = "Enable Advanced SIMD instructions",350 .description = "Enable Advanced SIMD instructions",
351 .subfeatures = &[_]*const Feature {351 .dependencies = &[_]*const Feature {
352 &feature_fpArmv8,352 &feature_fpArmv8,
353 },353 },
354};354};
...@@ -356,35 +356,35 @@ pub const feature_neon = Feature{...@@ -356,35 +356,35 @@ pub const feature_neon = Feature{
356pub const feature_nv = Feature{356pub const feature_nv = Feature{
357 .name = "nv",357 .name = "nv",
358 .description = "Enable v8.4-A Nested Virtualization Enchancement",358 .description = "Enable v8.4-A Nested Virtualization Enchancement",
359 .subfeatures = &[_]*const Feature {359 .dependencies = &[_]*const Feature {
360 },360 },
361};361};
362362
363pub const feature_noNegImmediates = Feature{363pub const feature_noNegImmediates = Feature{
364 .name = "no-neg-immediates",364 .name = "no-neg-immediates",
365 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",365 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
366 .subfeatures = &[_]*const Feature {366 .dependencies = &[_]*const Feature {
367 },367 },
368};368};
369369
370pub const feature_pa = Feature{370pub const feature_pa = Feature{
371 .name = "pa",371 .name = "pa",
372 .description = "Enable v8.3-A Pointer Authentication enchancement",372 .description = "Enable v8.3-A Pointer Authentication enchancement",
373 .subfeatures = &[_]*const Feature {373 .dependencies = &[_]*const Feature {
374 },374 },
375};375};
376376
377pub const feature_pan = Feature{377pub const feature_pan = Feature{
378 .name = "pan",378 .name = "pan",
379 .description = "Enables ARM v8.1 Privileged Access-Never extension",379 .description = "Enables ARM v8.1 Privileged Access-Never extension",
380 .subfeatures = &[_]*const Feature {380 .dependencies = &[_]*const Feature {
381 },381 },
382};382};
383383
384pub const feature_panRwv = Feature{384pub const feature_panRwv = Feature{
385 .name = "pan-rwv",385 .name = "pan-rwv",
386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
387 .subfeatures = &[_]*const Feature {387 .dependencies = &[_]*const Feature {
388 &feature_pan,388 &feature_pan,
389 },389 },
390};390};
...@@ -392,49 +392,49 @@ pub const feature_panRwv = Feature{...@@ -392,49 +392,49 @@ pub const feature_panRwv = Feature{
392pub const feature_perfmon = Feature{392pub const feature_perfmon = Feature{
393 .name = "perfmon",393 .name = "perfmon",
394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
395 .subfeatures = &[_]*const Feature {395 .dependencies = &[_]*const Feature {
396 },396 },
397};397};
398398
399pub const feature_usePostraScheduler = Feature{399pub const feature_usePostraScheduler = Feature{
400 .name = "use-postra-scheduler",400 .name = "use-postra-scheduler",
401 .description = "Schedule again after register allocation",401 .description = "Schedule again after register allocation",
402 .subfeatures = &[_]*const Feature {402 .dependencies = &[_]*const Feature {
403 },403 },
404};404};
405405
406pub const feature_predres = Feature{406pub const feature_predres = Feature{
407 .name = "predres",407 .name = "predres",
408 .description = "Enable v8.5a execution and data prediction invalidation instructions",408 .description = "Enable v8.5a execution and data prediction invalidation instructions",
409 .subfeatures = &[_]*const Feature {409 .dependencies = &[_]*const Feature {
410 },410 },
411};411};
412412
413pub const feature_predictableSelectExpensive = Feature{413pub const feature_predictableSelectExpensive = Feature{
414 .name = "predictable-select-expensive",414 .name = "predictable-select-expensive",
415 .description = "Prefer likely predicted branches over selects",415 .description = "Prefer likely predicted branches over selects",
416 .subfeatures = &[_]*const Feature {416 .dependencies = &[_]*const Feature {
417 },417 },
418};418};
419419
420pub const feature_uaops = Feature{420pub const feature_uaops = Feature{
421 .name = "uaops",421 .name = "uaops",
422 .description = "Enable v8.2 UAO PState",422 .description = "Enable v8.2 UAO PState",
423 .subfeatures = &[_]*const Feature {423 .dependencies = &[_]*const Feature {
424 },424 },
425};425};
426426
427pub const feature_ras = Feature{427pub const feature_ras = Feature{
428 .name = "ras",428 .name = "ras",
429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
430 .subfeatures = &[_]*const Feature {430 .dependencies = &[_]*const Feature {
431 },431 },
432};432};
433433
434pub const feature_rasv8_4 = Feature{434pub const feature_rasv8_4 = Feature{
435 .name = "rasv8_4",435 .name = "rasv8_4",
436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
437 .subfeatures = &[_]*const Feature {437 .dependencies = &[_]*const Feature {
438 &feature_ras,438 &feature_ras,
439 },439 },
440};440};
...@@ -442,14 +442,14 @@ pub const feature_rasv8_4 = Feature{...@@ -442,14 +442,14 @@ pub const feature_rasv8_4 = Feature{
442pub const feature_rcpc = Feature{442pub const feature_rcpc = Feature{
443 .name = "rcpc",443 .name = "rcpc",
444 .description = "Enable support for RCPC extension",444 .description = "Enable support for RCPC extension",
445 .subfeatures = &[_]*const Feature {445 .dependencies = &[_]*const Feature {
446 },446 },
447};447};
448448
449pub const feature_rcpcImmo = Feature{449pub const feature_rcpcImmo = Feature{
450 .name = "rcpc-immo",450 .name = "rcpc-immo",
451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
452 .subfeatures = &[_]*const Feature {452 .dependencies = &[_]*const Feature {
453 &feature_rcpc,453 &feature_rcpc,
454 },454 },
455};455};
...@@ -457,203 +457,203 @@ pub const feature_rcpcImmo = Feature{...@@ -457,203 +457,203 @@ pub const feature_rcpcImmo = Feature{
457pub const feature_rdm = Feature{457pub const feature_rdm = Feature{
458 .name = "rdm",458 .name = "rdm",
459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
460 .subfeatures = &[_]*const Feature {460 .dependencies = &[_]*const Feature {
461 },461 },
462};462};
463463
464pub const feature_rand = Feature{464pub const feature_rand = Feature{
465 .name = "rand",465 .name = "rand",
466 .description = "Enable Random Number generation instructions",466 .description = "Enable Random Number generation instructions",
467 .subfeatures = &[_]*const Feature {467 .dependencies = &[_]*const Feature {
468 },468 },
469};469};
470470
471pub const feature_reserveX1 = Feature{471pub const feature_reserveX1 = Feature{
472 .name = "reserve-x1",472 .name = "reserve-x1",
473 .description = "Reserve X1, making it unavailable as a GPR",473 .description = "Reserve X1, making it unavailable as a GPR",
474 .subfeatures = &[_]*const Feature {474 .dependencies = &[_]*const Feature {
475 },475 },
476};476};
477477
478pub const feature_reserveX2 = Feature{478pub const feature_reserveX2 = Feature{
479 .name = "reserve-x2",479 .name = "reserve-x2",
480 .description = "Reserve X2, making it unavailable as a GPR",480 .description = "Reserve X2, making it unavailable as a GPR",
481 .subfeatures = &[_]*const Feature {481 .dependencies = &[_]*const Feature {
482 },482 },
483};483};
484484
485pub const feature_reserveX3 = Feature{485pub const feature_reserveX3 = Feature{
486 .name = "reserve-x3",486 .name = "reserve-x3",
487 .description = "Reserve X3, making it unavailable as a GPR",487 .description = "Reserve X3, making it unavailable as a GPR",
488 .subfeatures = &[_]*const Feature {488 .dependencies = &[_]*const Feature {
489 },489 },
490};490};
491491
492pub const feature_reserveX4 = Feature{492pub const feature_reserveX4 = Feature{
493 .name = "reserve-x4",493 .name = "reserve-x4",
494 .description = "Reserve X4, making it unavailable as a GPR",494 .description = "Reserve X4, making it unavailable as a GPR",
495 .subfeatures = &[_]*const Feature {495 .dependencies = &[_]*const Feature {
496 },496 },
497};497};
498498
499pub const feature_reserveX5 = Feature{499pub const feature_reserveX5 = Feature{
500 .name = "reserve-x5",500 .name = "reserve-x5",
501 .description = "Reserve X5, making it unavailable as a GPR",501 .description = "Reserve X5, making it unavailable as a GPR",
502 .subfeatures = &[_]*const Feature {502 .dependencies = &[_]*const Feature {
503 },503 },
504};504};
505505
506pub const feature_reserveX6 = Feature{506pub const feature_reserveX6 = Feature{
507 .name = "reserve-x6",507 .name = "reserve-x6",
508 .description = "Reserve X6, making it unavailable as a GPR",508 .description = "Reserve X6, making it unavailable as a GPR",
509 .subfeatures = &[_]*const Feature {509 .dependencies = &[_]*const Feature {
510 },510 },
511};511};
512512
513pub const feature_reserveX7 = Feature{513pub const feature_reserveX7 = Feature{
514 .name = "reserve-x7",514 .name = "reserve-x7",
515 .description = "Reserve X7, making it unavailable as a GPR",515 .description = "Reserve X7, making it unavailable as a GPR",
516 .subfeatures = &[_]*const Feature {516 .dependencies = &[_]*const Feature {
517 },517 },
518};518};
519519
520pub const feature_reserveX9 = Feature{520pub const feature_reserveX9 = Feature{
521 .name = "reserve-x9",521 .name = "reserve-x9",
522 .description = "Reserve X9, making it unavailable as a GPR",522 .description = "Reserve X9, making it unavailable as a GPR",
523 .subfeatures = &[_]*const Feature {523 .dependencies = &[_]*const Feature {
524 },524 },
525};525};
526526
527pub const feature_reserveX10 = Feature{527pub const feature_reserveX10 = Feature{
528 .name = "reserve-x10",528 .name = "reserve-x10",
529 .description = "Reserve X10, making it unavailable as a GPR",529 .description = "Reserve X10, making it unavailable as a GPR",
530 .subfeatures = &[_]*const Feature {530 .dependencies = &[_]*const Feature {
531 },531 },
532};532};
533533
534pub const feature_reserveX11 = Feature{534pub const feature_reserveX11 = Feature{
535 .name = "reserve-x11",535 .name = "reserve-x11",
536 .description = "Reserve X11, making it unavailable as a GPR",536 .description = "Reserve X11, making it unavailable as a GPR",
537 .subfeatures = &[_]*const Feature {537 .dependencies = &[_]*const Feature {
538 },538 },
539};539};
540540
541pub const feature_reserveX12 = Feature{541pub const feature_reserveX12 = Feature{
542 .name = "reserve-x12",542 .name = "reserve-x12",
543 .description = "Reserve X12, making it unavailable as a GPR",543 .description = "Reserve X12, making it unavailable as a GPR",
544 .subfeatures = &[_]*const Feature {544 .dependencies = &[_]*const Feature {
545 },545 },
546};546};
547547
548pub const feature_reserveX13 = Feature{548pub const feature_reserveX13 = Feature{
549 .name = "reserve-x13",549 .name = "reserve-x13",
550 .description = "Reserve X13, making it unavailable as a GPR",550 .description = "Reserve X13, making it unavailable as a GPR",
551 .subfeatures = &[_]*const Feature {551 .dependencies = &[_]*const Feature {
552 },552 },
553};553};
554554
555pub const feature_reserveX14 = Feature{555pub const feature_reserveX14 = Feature{
556 .name = "reserve-x14",556 .name = "reserve-x14",
557 .description = "Reserve X14, making it unavailable as a GPR",557 .description = "Reserve X14, making it unavailable as a GPR",
558 .subfeatures = &[_]*const Feature {558 .dependencies = &[_]*const Feature {
559 },559 },
560};560};
561561
562pub const feature_reserveX15 = Feature{562pub const feature_reserveX15 = Feature{
563 .name = "reserve-x15",563 .name = "reserve-x15",
564 .description = "Reserve X15, making it unavailable as a GPR",564 .description = "Reserve X15, making it unavailable as a GPR",
565 .subfeatures = &[_]*const Feature {565 .dependencies = &[_]*const Feature {
566 },566 },
567};567};
568568
569pub const feature_reserveX18 = Feature{569pub const feature_reserveX18 = Feature{
570 .name = "reserve-x18",570 .name = "reserve-x18",
571 .description = "Reserve X18, making it unavailable as a GPR",571 .description = "Reserve X18, making it unavailable as a GPR",
572 .subfeatures = &[_]*const Feature {572 .dependencies = &[_]*const Feature {
573 },573 },
574};574};
575575
576pub const feature_reserveX20 = Feature{576pub const feature_reserveX20 = Feature{
577 .name = "reserve-x20",577 .name = "reserve-x20",
578 .description = "Reserve X20, making it unavailable as a GPR",578 .description = "Reserve X20, making it unavailable as a GPR",
579 .subfeatures = &[_]*const Feature {579 .dependencies = &[_]*const Feature {
580 },580 },
581};581};
582582
583pub const feature_reserveX21 = Feature{583pub const feature_reserveX21 = Feature{
584 .name = "reserve-x21",584 .name = "reserve-x21",
585 .description = "Reserve X21, making it unavailable as a GPR",585 .description = "Reserve X21, making it unavailable as a GPR",
586 .subfeatures = &[_]*const Feature {586 .dependencies = &[_]*const Feature {
587 },587 },
588};588};
589589
590pub const feature_reserveX22 = Feature{590pub const feature_reserveX22 = Feature{
591 .name = "reserve-x22",591 .name = "reserve-x22",
592 .description = "Reserve X22, making it unavailable as a GPR",592 .description = "Reserve X22, making it unavailable as a GPR",
593 .subfeatures = &[_]*const Feature {593 .dependencies = &[_]*const Feature {
594 },594 },
595};595};
596596
597pub const feature_reserveX23 = Feature{597pub const feature_reserveX23 = Feature{
598 .name = "reserve-x23",598 .name = "reserve-x23",
599 .description = "Reserve X23, making it unavailable as a GPR",599 .description = "Reserve X23, making it unavailable as a GPR",
600 .subfeatures = &[_]*const Feature {600 .dependencies = &[_]*const Feature {
601 },601 },
602};602};
603603
604pub const feature_reserveX24 = Feature{604pub const feature_reserveX24 = Feature{
605 .name = "reserve-x24",605 .name = "reserve-x24",
606 .description = "Reserve X24, making it unavailable as a GPR",606 .description = "Reserve X24, making it unavailable as a GPR",
607 .subfeatures = &[_]*const Feature {607 .dependencies = &[_]*const Feature {
608 },608 },
609};609};
610610
611pub const feature_reserveX25 = Feature{611pub const feature_reserveX25 = Feature{
612 .name = "reserve-x25",612 .name = "reserve-x25",
613 .description = "Reserve X25, making it unavailable as a GPR",613 .description = "Reserve X25, making it unavailable as a GPR",
614 .subfeatures = &[_]*const Feature {614 .dependencies = &[_]*const Feature {
615 },615 },
616};616};
617617
618pub const feature_reserveX26 = Feature{618pub const feature_reserveX26 = Feature{
619 .name = "reserve-x26",619 .name = "reserve-x26",
620 .description = "Reserve X26, making it unavailable as a GPR",620 .description = "Reserve X26, making it unavailable as a GPR",
621 .subfeatures = &[_]*const Feature {621 .dependencies = &[_]*const Feature {
622 },622 },
623};623};
624624
625pub const feature_reserveX27 = Feature{625pub const feature_reserveX27 = Feature{
626 .name = "reserve-x27",626 .name = "reserve-x27",
627 .description = "Reserve X27, making it unavailable as a GPR",627 .description = "Reserve X27, making it unavailable as a GPR",
628 .subfeatures = &[_]*const Feature {628 .dependencies = &[_]*const Feature {
629 },629 },
630};630};
631631
632pub const feature_reserveX28 = Feature{632pub const feature_reserveX28 = Feature{
633 .name = "reserve-x28",633 .name = "reserve-x28",
634 .description = "Reserve X28, making it unavailable as a GPR",634 .description = "Reserve X28, making it unavailable as a GPR",
635 .subfeatures = &[_]*const Feature {635 .dependencies = &[_]*const Feature {
636 },636 },
637};637};
638638
639pub const feature_sb = Feature{639pub const feature_sb = Feature{
640 .name = "sb",640 .name = "sb",
641 .description = "Enable v8.5 Speculation Barrier",641 .description = "Enable v8.5 Speculation Barrier",
642 .subfeatures = &[_]*const Feature {642 .dependencies = &[_]*const Feature {
643 },643 },
644};644};
645645
646pub const feature_sel2 = Feature{646pub const feature_sel2 = Feature{
647 .name = "sel2",647 .name = "sel2",
648 .description = "Enable v8.4-A Secure Exception Level 2 extension",648 .description = "Enable v8.4-A Secure Exception Level 2 extension",
649 .subfeatures = &[_]*const Feature {649 .dependencies = &[_]*const Feature {
650 },650 },
651};651};
652652
653pub const feature_sha2 = Feature{653pub const feature_sha2 = Feature{
654 .name = "sha2",654 .name = "sha2",
655 .description = "Enable SHA1 and SHA256 support",655 .description = "Enable SHA1 and SHA256 support",
656 .subfeatures = &[_]*const Feature {656 .dependencies = &[_]*const Feature {
657 &feature_fpArmv8,657 &feature_fpArmv8,
658 },658 },
659};659};
...@@ -661,7 +661,7 @@ pub const feature_sha2 = Feature{...@@ -661,7 +661,7 @@ pub const feature_sha2 = Feature{
661pub const feature_sha3 = Feature{661pub const feature_sha3 = Feature{
662 .name = "sha3",662 .name = "sha3",
663 .description = "Enable SHA512 and SHA3 support",663 .description = "Enable SHA512 and SHA3 support",
664 .subfeatures = &[_]*const Feature {664 .dependencies = &[_]*const Feature {
665 &feature_fpArmv8,665 &feature_fpArmv8,
666 },666 },
667};667};
...@@ -669,7 +669,7 @@ pub const feature_sha3 = Feature{...@@ -669,7 +669,7 @@ pub const feature_sha3 = Feature{
669pub const feature_sm4 = Feature{669pub const feature_sm4 = Feature{
670 .name = "sm4",670 .name = "sm4",
671 .description = "Enable SM3 and SM4 support",671 .description = "Enable SM3 and SM4 support",
672 .subfeatures = &[_]*const Feature {672 .dependencies = &[_]*const Feature {
673 &feature_fpArmv8,673 &feature_fpArmv8,
674 },674 },
675};675};
...@@ -677,28 +677,28 @@ pub const feature_sm4 = Feature{...@@ -677,28 +677,28 @@ pub const feature_sm4 = Feature{
677pub const feature_spe = Feature{677pub const feature_spe = Feature{
678 .name = "spe",678 .name = "spe",
679 .description = "Enable Statistical Profiling extension",679 .description = "Enable Statistical Profiling extension",
680 .subfeatures = &[_]*const Feature {680 .dependencies = &[_]*const Feature {
681 },681 },
682};682};
683683
684pub const feature_ssbs = Feature{684pub const feature_ssbs = Feature{
685 .name = "ssbs",685 .name = "ssbs",
686 .description = "Enable Speculative Store Bypass Safe bit",686 .description = "Enable Speculative Store Bypass Safe bit",
687 .subfeatures = &[_]*const Feature {687 .dependencies = &[_]*const Feature {
688 },688 },
689};689};
690690
691pub const feature_sve = Feature{691pub const feature_sve = Feature{
692 .name = "sve",692 .name = "sve",
693 .description = "Enable Scalable Vector Extension (SVE) instructions",693 .description = "Enable Scalable Vector Extension (SVE) instructions",
694 .subfeatures = &[_]*const Feature {694 .dependencies = &[_]*const Feature {
695 },695 },
696};696};
697697
698pub const feature_sve2 = Feature{698pub const feature_sve2 = Feature{
699 .name = "sve2",699 .name = "sve2",
700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
701 .subfeatures = &[_]*const Feature {701 .dependencies = &[_]*const Feature {
702 &feature_sve,702 &feature_sve,
703 },703 },
704};704};
...@@ -706,7 +706,7 @@ pub const feature_sve2 = Feature{...@@ -706,7 +706,7 @@ pub const feature_sve2 = Feature{
706pub const feature_sve2Aes = Feature{706pub const feature_sve2Aes = Feature{
707 .name = "sve2-aes",707 .name = "sve2-aes",
708 .description = "Enable AES SVE2 instructions",708 .description = "Enable AES SVE2 instructions",
709 .subfeatures = &[_]*const Feature {709 .dependencies = &[_]*const Feature {
710 &feature_fpArmv8,710 &feature_fpArmv8,
711 &feature_sve,711 &feature_sve,
712 },712 },
...@@ -715,7 +715,7 @@ pub const feature_sve2Aes = Feature{...@@ -715,7 +715,7 @@ pub const feature_sve2Aes = Feature{
715pub const feature_sve2Bitperm = Feature{715pub const feature_sve2Bitperm = Feature{
716 .name = "sve2-bitperm",716 .name = "sve2-bitperm",
717 .description = "Enable bit permutation SVE2 instructions",717 .description = "Enable bit permutation SVE2 instructions",
718 .subfeatures = &[_]*const Feature {718 .dependencies = &[_]*const Feature {
719 &feature_sve,719 &feature_sve,
720 },720 },
721};721};
...@@ -723,7 +723,7 @@ pub const feature_sve2Bitperm = Feature{...@@ -723,7 +723,7 @@ pub const feature_sve2Bitperm = Feature{
723pub const feature_sve2Sha3 = Feature{723pub const feature_sve2Sha3 = Feature{
724 .name = "sve2-sha3",724 .name = "sve2-sha3",
725 .description = "Enable SHA3 SVE2 instructions",725 .description = "Enable SHA3 SVE2 instructions",
726 .subfeatures = &[_]*const Feature {726 .dependencies = &[_]*const Feature {
727 &feature_fpArmv8,727 &feature_fpArmv8,
728 &feature_sve,728 &feature_sve,
729 },729 },
...@@ -732,7 +732,7 @@ pub const feature_sve2Sha3 = Feature{...@@ -732,7 +732,7 @@ pub const feature_sve2Sha3 = Feature{
732pub const feature_sve2Sm4 = Feature{732pub const feature_sve2Sm4 = Feature{
733 .name = "sve2-sm4",733 .name = "sve2-sm4",
734 .description = "Enable SM4 SVE2 instructions",734 .description = "Enable SM4 SVE2 instructions",
735 .subfeatures = &[_]*const Feature {735 .dependencies = &[_]*const Feature {
736 &feature_fpArmv8,736 &feature_fpArmv8,
737 &feature_sve,737 &feature_sve,
738 },738 },
...@@ -741,126 +741,126 @@ pub const feature_sve2Sm4 = Feature{...@@ -741,126 +741,126 @@ pub const feature_sve2Sm4 = Feature{
741pub const feature_slowMisaligned128store = Feature{741pub const feature_slowMisaligned128store = Feature{
742 .name = "slow-misaligned-128store",742 .name = "slow-misaligned-128store",
743 .description = "Misaligned 128 bit stores are slow",743 .description = "Misaligned 128 bit stores are slow",
744 .subfeatures = &[_]*const Feature {744 .dependencies = &[_]*const Feature {
745 },745 },
746};746};
747747
748pub const feature_slowPaired128 = Feature{748pub const feature_slowPaired128 = Feature{
749 .name = "slow-paired-128",749 .name = "slow-paired-128",
750 .description = "Paired 128 bit loads and stores are slow",750 .description = "Paired 128 bit loads and stores are slow",
751 .subfeatures = &[_]*const Feature {751 .dependencies = &[_]*const Feature {
752 },752 },
753};753};
754754
755pub const feature_slowStrqroStore = Feature{755pub const feature_slowStrqroStore = Feature{
756 .name = "slow-strqro-store",756 .name = "slow-strqro-store",
757 .description = "STR of Q register with register offset is slow",757 .description = "STR of Q register with register offset is slow",
758 .subfeatures = &[_]*const Feature {758 .dependencies = &[_]*const Feature {
759 },759 },
760};760};
761761
762pub const feature_specrestrict = Feature{762pub const feature_specrestrict = Feature{
763 .name = "specrestrict",763 .name = "specrestrict",
764 .description = "Enable architectural speculation restriction",764 .description = "Enable architectural speculation restriction",
765 .subfeatures = &[_]*const Feature {765 .dependencies = &[_]*const Feature {
766 },766 },
767};767};
768768
769pub const feature_strictAlign = Feature{769pub const feature_strictAlign = Feature{
770 .name = "strict-align",770 .name = "strict-align",
771 .description = "Disallow all unaligned memory access",771 .description = "Disallow all unaligned memory access",
772 .subfeatures = &[_]*const Feature {772 .dependencies = &[_]*const Feature {
773 },773 },
774};774};
775775
776pub const feature_tlbRmi = Feature{776pub const feature_tlbRmi = Feature{
777 .name = "tlb-rmi",777 .name = "tlb-rmi",
778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
779 .subfeatures = &[_]*const Feature {779 .dependencies = &[_]*const Feature {
780 },780 },
781};781};
782782
783pub const feature_tme = Feature{783pub const feature_tme = Feature{
784 .name = "tme",784 .name = "tme",
785 .description = "Enable Transactional Memory Extension",785 .description = "Enable Transactional Memory Extension",
786 .subfeatures = &[_]*const Feature {786 .dependencies = &[_]*const Feature {
787 },787 },
788};788};
789789
790pub const feature_tracev84 = Feature{790pub const feature_tracev84 = Feature{
791 .name = "tracev8.4",791 .name = "tracev8.4",
792 .description = "Enable v8.4-A Trace extension",792 .description = "Enable v8.4-A Trace extension",
793 .subfeatures = &[_]*const Feature {793 .dependencies = &[_]*const Feature {
794 },794 },
795};795};
796796
797pub const feature_trbe = Feature{797pub const feature_trbe = Feature{
798 .name = "trbe",798 .name = "trbe",
799 .description = "Enable Trace Buffer Extension",799 .description = "Enable Trace Buffer Extension",
800 .subfeatures = &[_]*const Feature {800 .dependencies = &[_]*const Feature {
801 },801 },
802};802};
803803
804pub const feature_taggedGlobals = Feature{804pub const feature_taggedGlobals = Feature{
805 .name = "tagged-globals",805 .name = "tagged-globals",
806 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",806 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
807 .subfeatures = &[_]*const Feature {807 .dependencies = &[_]*const Feature {
808 },808 },
809};809};
810810
811pub const feature_useAa = Feature{811pub const feature_useAa = Feature{
812 .name = "use-aa",812 .name = "use-aa",
813 .description = "Use alias analysis during codegen",813 .description = "Use alias analysis during codegen",
814 .subfeatures = &[_]*const Feature {814 .dependencies = &[_]*const Feature {
815 },815 },
816};816};
817817
818pub const feature_tpidrEl1 = Feature{818pub const feature_tpidrEl1 = Feature{
819 .name = "tpidr-el1",819 .name = "tpidr-el1",
820 .description = "Permit use of TPIDR_EL1 for the TLS base",820 .description = "Permit use of TPIDR_EL1 for the TLS base",
821 .subfeatures = &[_]*const Feature {821 .dependencies = &[_]*const Feature {
822 },822 },
823};823};
824824
825pub const feature_tpidrEl2 = Feature{825pub const feature_tpidrEl2 = Feature{
826 .name = "tpidr-el2",826 .name = "tpidr-el2",
827 .description = "Permit use of TPIDR_EL2 for the TLS base",827 .description = "Permit use of TPIDR_EL2 for the TLS base",
828 .subfeatures = &[_]*const Feature {828 .dependencies = &[_]*const Feature {
829 },829 },
830};830};
831831
832pub const feature_tpidrEl3 = Feature{832pub const feature_tpidrEl3 = Feature{
833 .name = "tpidr-el3",833 .name = "tpidr-el3",
834 .description = "Permit use of TPIDR_EL3 for the TLS base",834 .description = "Permit use of TPIDR_EL3 for the TLS base",
835 .subfeatures = &[_]*const Feature {835 .dependencies = &[_]*const Feature {
836 },836 },
837};837};
838838
839pub const feature_useReciprocalSquareRoot = Feature{839pub const feature_useReciprocalSquareRoot = Feature{
840 .name = "use-reciprocal-square-root",840 .name = "use-reciprocal-square-root",
841 .description = "Use the reciprocal square root approximation",841 .description = "Use the reciprocal square root approximation",
842 .subfeatures = &[_]*const Feature {842 .dependencies = &[_]*const Feature {
843 },843 },
844};844};
845845
846pub const feature_vh = Feature{846pub const feature_vh = Feature{
847 .name = "vh",847 .name = "vh",
848 .description = "Enables ARM v8.1 Virtual Host extension",848 .description = "Enables ARM v8.1 Virtual Host extension",
849 .subfeatures = &[_]*const Feature {849 .dependencies = &[_]*const Feature {
850 },850 },
851};851};
852852
853pub const feature_zcm = Feature{853pub const feature_zcm = Feature{
854 .name = "zcm",854 .name = "zcm",
855 .description = "Has zero-cycle register moves",855 .description = "Has zero-cycle register moves",
856 .subfeatures = &[_]*const Feature {856 .dependencies = &[_]*const Feature {
857 },857 },
858};858};
859859
860pub const feature_zcz = Feature{860pub const feature_zcz = Feature{
861 .name = "zcz",861 .name = "zcz",
862 .description = "Has zero-cycle zeroing instructions",862 .description = "Has zero-cycle zeroing instructions",
863 .subfeatures = &[_]*const Feature {863 .dependencies = &[_]*const Feature {
864 &feature_zczGp,864 &feature_zczGp,
865 &feature_zczFp,865 &feature_zczFp,
866 },866 },
...@@ -869,21 +869,21 @@ pub const feature_zcz = Feature{...@@ -869,21 +869,21 @@ pub const feature_zcz = Feature{
869pub const feature_zczFp = Feature{869pub const feature_zczFp = Feature{
870 .name = "zcz-fp",870 .name = "zcz-fp",
871 .description = "Has zero-cycle zeroing instructions for FP registers",871 .description = "Has zero-cycle zeroing instructions for FP registers",
872 .subfeatures = &[_]*const Feature {872 .dependencies = &[_]*const Feature {
873 },873 },
874};874};
875875
876pub const feature_zczFpWorkaround = Feature{876pub const feature_zczFpWorkaround = Feature{
877 .name = "zcz-fp-workaround",877 .name = "zcz-fp-workaround",
878 .description = "The zero-cycle floating-point zeroing instruction has a bug",878 .description = "The zero-cycle floating-point zeroing instruction has a bug",
879 .subfeatures = &[_]*const Feature {879 .dependencies = &[_]*const Feature {
880 },880 },
881};881};
882882
883pub const feature_zczGp = Feature{883pub const feature_zczGp = Feature{
884 .name = "zcz-gp",884 .name = "zcz-gp",
885 .description = "Has zero-cycle zeroing instructions for generic registers",885 .description = "Has zero-cycle zeroing instructions for generic registers",
886 .subfeatures = &[_]*const Feature {886 .dependencies = &[_]*const Feature {
887 },887 },
888};888};
889889
...@@ -1016,80 +1016,80 @@ pub const features = &[_]*const Feature {...@@ -1016,80 +1016,80 @@ pub const features = &[_]*const Feature {
1016pub const cpu_appleLatest = Cpu{1016pub const cpu_appleLatest = Cpu{
1017 .name = "apple-latest",1017 .name = "apple-latest",
1018 .llvm_name = "apple-latest",1018 .llvm_name = "apple-latest",
1019 .subfeatures = &[_]*const Feature {1019 .dependencies = &[_]*const Feature {
1020 &feature_arithCbzFusion,
1021 &feature_alternateSextloadCvtF32Pattern,1020 &feature_alternateSextloadCvtF32Pattern,
1022 &feature_zczFpWorkaround,
1023 &feature_fuseCryptoEor,1021 &feature_fuseCryptoEor,
1022 &feature_fuseAes,
1023 &feature_zczGp,
1024 &feature_zczFpWorkaround,
1024 &feature_disableLatencySchedHeuristic,1025 &feature_disableLatencySchedHeuristic,
1025 &feature_zcm,
1026 &feature_zczFp,
1027 &feature_perfmon,1026 &feature_perfmon,
1028 &feature_fpArmv8,1027 &feature_fpArmv8,
1029 &feature_fuseAes,
1030 &feature_arithBccFusion,1028 &feature_arithBccFusion,
1031 &feature_zczGp,1029 &feature_arithCbzFusion,
1030 &feature_zczFp,
1031 &feature_zcm,
1032 },1032 },
1033};1033};
10341034
1035pub const cpu_cortexA35 = Cpu{1035pub const cpu_cortexA35 = Cpu{
1036 .name = "cortex-a35",1036 .name = "cortex-a35",
1037 .llvm_name = "cortex-a35",1037 .llvm_name = "cortex-a35",
1038 .subfeatures = &[_]*const Feature {1038 .dependencies = &[_]*const Feature {
1039 &feature_crc,
1039 &feature_fpArmv8,1040 &feature_fpArmv8,
1040 &feature_perfmon,1041 &feature_perfmon,
1041 &feature_crc,
1042 },1042 },
1043};1043};
10441044
1045pub const cpu_cortexA53 = Cpu{1045pub const cpu_cortexA53 = Cpu{
1046 .name = "cortex-a53",1046 .name = "cortex-a53",
1047 .llvm_name = "cortex-a53",1047 .llvm_name = "cortex-a53",
1048 .subfeatures = &[_]*const Feature {1048 .dependencies = &[_]*const Feature {
1049 &feature_customCheapAsMove,
1050 &feature_fuseAes,
1049 &feature_usePostraScheduler,1051 &feature_usePostraScheduler,
1050 &feature_crc,
1051 &feature_perfmon,1052 &feature_perfmon,
1052 &feature_fuseAes,
1053 &feature_useAa,
1054 &feature_fpArmv8,1053 &feature_fpArmv8,
1054 &feature_crc,
1055 &feature_balanceFpOps,1055 &feature_balanceFpOps,
1056 &feature_customCheapAsMove,1056 &feature_useAa,
1057 },1057 },
1058};1058};
10591059
1060pub const cpu_cortexA55 = Cpu{1060pub const cpu_cortexA55 = Cpu{
1061 .name = "cortex-a55",1061 .name = "cortex-a55",
1062 .llvm_name = "cortex-a55",1062 .llvm_name = "cortex-a55",
1063 .subfeatures = &[_]*const Feature {1063 .dependencies = &[_]*const Feature {
1064 &feature_crc,1064 &feature_rdm,
1065 &feature_dotprod,
1066 &feature_ccpp,1065 &feature_ccpp,
1067 &feature_uaops,1066 &feature_fuseAes,
1068 &feature_rcpc,
1069 &feature_lse,1067 &feature_lse,
1070 &feature_lor,
1071 &feature_pan,
1072 &feature_rdm,
1073 &feature_perfmon,1068 &feature_perfmon,
1069 &feature_fpArmv8,
1070 &feature_lor,
1074 &feature_ras,1071 &feature_ras,
1075 &feature_vh,1072 &feature_vh,
1076 &feature_fpArmv8,1073 &feature_rcpc,
1077 &feature_fuseAes,1074 &feature_dotprod,
1075 &feature_uaops,
1076 &feature_crc,
1077 &feature_pan,
1078 },1078 },
1079};1079};
10801080
1081pub const cpu_cortexA57 = Cpu{1081pub const cpu_cortexA57 = Cpu{
1082 .name = "cortex-a57",1082 .name = "cortex-a57",
1083 .llvm_name = "cortex-a57",1083 .llvm_name = "cortex-a57",
1084 .subfeatures = &[_]*const Feature {1084 .dependencies = &[_]*const Feature {
1085 &feature_customCheapAsMove,
1086 &feature_fuseAes,
1085 &feature_usePostraScheduler,1087 &feature_usePostraScheduler,
1086 &feature_crc,
1087 &feature_fuseLiterals,
1088 &feature_perfmon,1088 &feature_perfmon,
1089 &feature_fuseAes,
1090 &feature_fpArmv8,1089 &feature_fpArmv8,
1090 &feature_crc,
1091 &feature_balanceFpOps,1091 &feature_balanceFpOps,
1092 &feature_customCheapAsMove,1092 &feature_fuseLiterals,
1093 &feature_predictableSelectExpensive,1093 &feature_predictableSelectExpensive,
1094 },1094 },
1095};1095};
...@@ -1097,196 +1097,196 @@ pub const cpu_cortexA57 = Cpu{...@@ -1097,196 +1097,196 @@ pub const cpu_cortexA57 = Cpu{
1097pub const cpu_cortexA65 = Cpu{1097pub const cpu_cortexA65 = Cpu{
1098 .name = "cortex-a65",1098 .name = "cortex-a65",
1099 .llvm_name = "cortex-a65",1099 .llvm_name = "cortex-a65",
1100 .subfeatures = &[_]*const Feature {1100 .dependencies = &[_]*const Feature {
1101 &feature_ssbs,
1102 &feature_dotprod,
1103 &feature_crc,
1104 &feature_uaops,
1105 &feature_rcpc,
1106 &feature_lse,
1107 &feature_lor,
1108 &feature_pan,
1109 &feature_rdm,1101 &feature_rdm,
1102 &feature_ccpp,
1103 &feature_lse,
1104 &feature_fpArmv8,
1110 &feature_ras,1105 &feature_ras,
1106 &feature_lor,
1111 &feature_vh,1107 &feature_vh,
1112 &feature_fpArmv8,1108 &feature_rcpc,
1113 &feature_ccpp,1109 &feature_dotprod,
1110 &feature_ssbs,
1111 &feature_uaops,
1112 &feature_crc,
1113 &feature_pan,
1114 },1114 },
1115};1115};
11161116
1117pub const cpu_cortexA65ae = Cpu{1117pub const cpu_cortexA65ae = Cpu{
1118 .name = "cortex-a65ae",1118 .name = "cortex-a65ae",
1119 .llvm_name = "cortex-a65ae",1119 .llvm_name = "cortex-a65ae",
1120 .subfeatures = &[_]*const Feature {1120 .dependencies = &[_]*const Feature {
1121 &feature_ssbs,
1122 &feature_dotprod,
1123 &feature_crc,
1124 &feature_uaops,
1125 &feature_rcpc,
1126 &feature_lse,
1127 &feature_lor,
1128 &feature_pan,
1129 &feature_rdm,1121 &feature_rdm,
1122 &feature_ccpp,
1123 &feature_lse,
1124 &feature_fpArmv8,
1130 &feature_ras,1125 &feature_ras,
1126 &feature_lor,
1131 &feature_vh,1127 &feature_vh,
1132 &feature_fpArmv8,1128 &feature_rcpc,
1133 &feature_ccpp,1129 &feature_dotprod,
1130 &feature_ssbs,
1131 &feature_uaops,
1132 &feature_crc,
1133 &feature_pan,
1134 },1134 },
1135};1135};
11361136
1137pub const cpu_cortexA72 = Cpu{1137pub const cpu_cortexA72 = Cpu{
1138 .name = "cortex-a72",1138 .name = "cortex-a72",
1139 .llvm_name = "cortex-a72",1139 .llvm_name = "cortex-a72",
1140 .subfeatures = &[_]*const Feature {1140 .dependencies = &[_]*const Feature {
1141 &feature_fpArmv8,1141 &feature_crc,
1142 &feature_fuseAes,1142 &feature_fuseAes,
1143 &feature_fpArmv8,
1143 &feature_perfmon,1144 &feature_perfmon,
1144 &feature_crc,
1145 },1145 },
1146};1146};
11471147
1148pub const cpu_cortexA73 = Cpu{1148pub const cpu_cortexA73 = Cpu{
1149 .name = "cortex-a73",1149 .name = "cortex-a73",
1150 .llvm_name = "cortex-a73",1150 .llvm_name = "cortex-a73",
1151 .subfeatures = &[_]*const Feature {1151 .dependencies = &[_]*const Feature {
1152 &feature_fpArmv8,1152 &feature_crc,
1153 &feature_fuseAes,1153 &feature_fuseAes,
1154 &feature_fpArmv8,
1154 &feature_perfmon,1155 &feature_perfmon,
1155 &feature_crc,
1156 },1156 },
1157};1157};
11581158
1159pub const cpu_cortexA75 = Cpu{1159pub const cpu_cortexA75 = Cpu{
1160 .name = "cortex-a75",1160 .name = "cortex-a75",
1161 .llvm_name = "cortex-a75",1161 .llvm_name = "cortex-a75",
1162 .subfeatures = &[_]*const Feature {1162 .dependencies = &[_]*const Feature {
1163 &feature_crc,1163 &feature_rdm,
1164 &feature_dotprod,
1165 &feature_ccpp,1164 &feature_ccpp,
1166 &feature_uaops,1165 &feature_fuseAes,
1167 &feature_rcpc,
1168 &feature_lse,1166 &feature_lse,
1169 &feature_lor,
1170 &feature_pan,
1171 &feature_rdm,
1172 &feature_perfmon,1167 &feature_perfmon,
1168 &feature_fpArmv8,
1169 &feature_lor,
1173 &feature_ras,1170 &feature_ras,
1174 &feature_vh,1171 &feature_vh,
1175 &feature_fpArmv8,1172 &feature_rcpc,
1176 &feature_fuseAes,1173 &feature_dotprod,
1174 &feature_uaops,
1175 &feature_crc,
1176 &feature_pan,
1177 },1177 },
1178};1178};
11791179
1180pub const cpu_cortexA76 = Cpu{1180pub const cpu_cortexA76 = Cpu{
1181 .name = "cortex-a76",1181 .name = "cortex-a76",
1182 .llvm_name = "cortex-a76",1182 .llvm_name = "cortex-a76",
1183 .subfeatures = &[_]*const Feature {1183 .dependencies = &[_]*const Feature {
1184 &feature_crc,1184 &feature_rdm,
1185 &feature_ssbs,1185 &feature_ccpp,
1186 &feature_dotprod,
1187 &feature_uaops,
1188 &feature_rcpc,
1189 &feature_lse,1186 &feature_lse,
1187 &feature_fpArmv8,
1190 &feature_lor,1188 &feature_lor,
1191 &feature_pan,
1192 &feature_rdm,
1193 &feature_ras,1189 &feature_ras,
1194 &feature_vh,1190 &feature_vh,
1195 &feature_fpArmv8,1191 &feature_rcpc,
1196 &feature_ccpp,1192 &feature_dotprod,
1193 &feature_ssbs,
1194 &feature_uaops,
1195 &feature_crc,
1196 &feature_pan,
1197 },1197 },
1198};1198};
11991199
1200pub const cpu_cortexA76ae = Cpu{1200pub const cpu_cortexA76ae = Cpu{
1201 .name = "cortex-a76ae",1201 .name = "cortex-a76ae",
1202 .llvm_name = "cortex-a76ae",1202 .llvm_name = "cortex-a76ae",
1203 .subfeatures = &[_]*const Feature {1203 .dependencies = &[_]*const Feature {
1204 &feature_crc,1204 &feature_rdm,
1205 &feature_ssbs,1205 &feature_ccpp,
1206 &feature_dotprod,
1207 &feature_uaops,
1208 &feature_rcpc,
1209 &feature_lse,1206 &feature_lse,
1207 &feature_fpArmv8,
1210 &feature_lor,1208 &feature_lor,
1211 &feature_pan,
1212 &feature_rdm,
1213 &feature_ras,1209 &feature_ras,
1214 &feature_vh,1210 &feature_vh,
1215 &feature_fpArmv8,1211 &feature_rcpc,
1216 &feature_ccpp,1212 &feature_dotprod,
1213 &feature_ssbs,
1214 &feature_uaops,
1215 &feature_crc,
1216 &feature_pan,
1217 },1217 },
1218};1218};
12191219
1220pub const cpu_cyclone = Cpu{1220pub const cpu_cyclone = Cpu{
1221 .name = "cyclone",1221 .name = "cyclone",
1222 .llvm_name = "cyclone",1222 .llvm_name = "cyclone",
1223 .subfeatures = &[_]*const Feature {1223 .dependencies = &[_]*const Feature {
1224 &feature_arithCbzFusion,
1225 &feature_alternateSextloadCvtF32Pattern,1224 &feature_alternateSextloadCvtF32Pattern,
1226 &feature_zczFpWorkaround,
1227 &feature_fuseCryptoEor,1225 &feature_fuseCryptoEor,
1226 &feature_fuseAes,
1227 &feature_zczGp,
1228 &feature_zczFpWorkaround,
1228 &feature_disableLatencySchedHeuristic,1229 &feature_disableLatencySchedHeuristic,
1229 &feature_zcm,
1230 &feature_zczFp,
1231 &feature_perfmon,1230 &feature_perfmon,
1232 &feature_fpArmv8,1231 &feature_fpArmv8,
1233 &feature_fuseAes,
1234 &feature_arithBccFusion,1232 &feature_arithBccFusion,
1235 &feature_zczGp,1233 &feature_arithCbzFusion,
1234 &feature_zczFp,
1235 &feature_zcm,
1236 },1236 },
1237};1237};
12381238
1239pub const cpu_exynosM1 = Cpu{1239pub const cpu_exynosM1 = Cpu{
1240 .name = "exynos-m1",1240 .name = "exynos-m1",
1241 .llvm_name = "exynos-m1",1241 .llvm_name = "exynos-m1",
1242 .subfeatures = &[_]*const Feature {1242 .dependencies = &[_]*const Feature {
1243 &feature_useReciprocalSquareRoot,1243 &feature_customCheapAsMove,
1244 &feature_usePostraScheduler,1244 &feature_fuseAes,
1245 &feature_crc,
1246 &feature_zczFp,
1247 &feature_slowPaired128,
1248 &feature_force32bitJumpTables,1245 &feature_force32bitJumpTables,
1249 &feature_slowMisaligned128store,1246 &feature_usePostraScheduler,
1250 &feature_perfmon,1247 &feature_perfmon,
1251 &feature_fpArmv8,1248 &feature_fpArmv8,
1252 &feature_fuseAes,1249 &feature_slowMisaligned128store,
1253 &feature_customCheapAsMove,1250 &feature_useReciprocalSquareRoot,
1251 &feature_crc,
1252 &feature_slowPaired128,
1253 &feature_zczFp,
1254 },1254 },
1255};1255};
12561256
1257pub const cpu_exynosM2 = Cpu{1257pub const cpu_exynosM2 = Cpu{
1258 .name = "exynos-m2",1258 .name = "exynos-m2",
1259 .llvm_name = "exynos-m2",1259 .llvm_name = "exynos-m2",
1260 .subfeatures = &[_]*const Feature {1260 .dependencies = &[_]*const Feature {
1261 &feature_usePostraScheduler,1261 &feature_customCheapAsMove,
1262 &feature_crc,1262 &feature_fuseAes,
1263 &feature_zczFp,
1264 &feature_slowPaired128,
1265 &feature_force32bitJumpTables,1263 &feature_force32bitJumpTables,
1266 &feature_slowMisaligned128store,1264 &feature_usePostraScheduler,
1267 &feature_perfmon,1265 &feature_perfmon,
1268 &feature_fpArmv8,1266 &feature_fpArmv8,
1269 &feature_fuseAes,1267 &feature_slowMisaligned128store,
1270 &feature_customCheapAsMove,1268 &feature_crc,
1269 &feature_slowPaired128,
1270 &feature_zczFp,
1271 },1271 },
1272};1272};
12731273
1274pub const cpu_exynosM3 = Cpu{1274pub const cpu_exynosM3 = Cpu{
1275 .name = "exynos-m3",1275 .name = "exynos-m3",
1276 .llvm_name = "exynos-m3",1276 .llvm_name = "exynos-m3",
1277 .subfeatures = &[_]*const Feature {1277 .dependencies = &[_]*const Feature {
1278 &feature_fuseAddress,1278 &feature_customCheapAsMove,
1279 &feature_usePostraScheduler,1279 &feature_fuseAes,
1280 &feature_crc,
1281 &feature_zczFp,
1282 &feature_fuseLiterals,
1283 &feature_lslFast,
1284 &feature_fuseCsel,
1285 &feature_force32bitJumpTables,1280 &feature_force32bitJumpTables,
1281 &feature_usePostraScheduler,
1286 &feature_perfmon,1282 &feature_perfmon,
1287 &feature_fpArmv8,1283 &feature_fpArmv8,
1288 &feature_fuseAes,1284 &feature_fuseAddress,
1289 &feature_customCheapAsMove,1285 &feature_fuseCsel,
1286 &feature_lslFast,
1287 &feature_zczFp,
1288 &feature_crc,
1289 &feature_fuseLiterals,
1290 &feature_predictableSelectExpensive,1290 &feature_predictableSelectExpensive,
1291 },1291 },
1292};1292};
...@@ -1294,81 +1294,81 @@ pub const cpu_exynosM3 = Cpu{...@@ -1294,81 +1294,81 @@ pub const cpu_exynosM3 = Cpu{
1294pub const cpu_exynosM4 = Cpu{1294pub const cpu_exynosM4 = Cpu{
1295 .name = "exynos-m4",1295 .name = "exynos-m4",
1296 .llvm_name = "exynos-m4",1296 .llvm_name = "exynos-m4",
1297 .subfeatures = &[_]*const Feature {1297 .dependencies = &[_]*const Feature {
1298 &feature_fuseLiterals,1298 &feature_customCheapAsMove,
1299 &feature_uaops,
1300 &feature_fuseCsel,
1301 &feature_force32bitJumpTables,
1302 &feature_fuseArithLogic,
1303 &feature_vh,
1304 &feature_arithBccFusion,
1305 &feature_zczGp,
1306 &feature_usePostraScheduler,
1307 &feature_dotprod,
1308 &feature_lse,1299 &feature_lse,
1309 &feature_pan,1300 &feature_perfmon,
1310 &feature_ras,
1311 &feature_fuseAes,
1312 &feature_fuseAddress,1301 &feature_fuseAddress,
1313 &feature_rdm,1302 &feature_dotprod,
1314 &feature_arithCbzFusion,1303 &feature_arithCbzFusion,
1315 &feature_crc,
1316 &feature_zczFp,1304 &feature_zczFp,
1305 &feature_fuseArithLogic,
1306 &feature_ccpp,
1307 &feature_fuseAes,
1308 &feature_fuseCsel,
1309 &feature_rdm,
1310 &feature_zczGp,
1311 &feature_force32bitJumpTables,
1312 &feature_usePostraScheduler,
1317 &feature_lslFast,1313 &feature_lslFast,
1318 &feature_lor,1314 &feature_crc,
1319 &feature_perfmon,1315 &feature_fuseLiterals,
1316 &feature_pan,
1320 &feature_fpArmv8,1317 &feature_fpArmv8,
1321 &feature_ccpp,1318 &feature_lor,
1322 &feature_customCheapAsMove,1319 &feature_ras,
1320 &feature_vh,
1321 &feature_arithBccFusion,
1322 &feature_uaops,
1323 },1323 },
1324};1324};
13251325
1326pub const cpu_exynosM5 = Cpu{1326pub const cpu_exynosM5 = Cpu{
1327 .name = "exynos-m5",1327 .name = "exynos-m5",
1328 .llvm_name = "exynos-m5",1328 .llvm_name = "exynos-m5",
1329 .subfeatures = &[_]*const Feature {1329 .dependencies = &[_]*const Feature {
1330 &feature_fuseLiterals,1330 &feature_customCheapAsMove,
1331 &feature_uaops,
1332 &feature_fuseCsel,
1333 &feature_force32bitJumpTables,
1334 &feature_fuseArithLogic,
1335 &feature_vh,
1336 &feature_arithBccFusion,
1337 &feature_zczGp,
1338 &feature_usePostraScheduler,
1339 &feature_dotprod,
1340 &feature_lse,1331 &feature_lse,
1341 &feature_pan,1332 &feature_perfmon,
1342 &feature_ras,
1343 &feature_fuseAes,
1344 &feature_fuseAddress,1333 &feature_fuseAddress,
1345 &feature_rdm,1334 &feature_dotprod,
1346 &feature_arithCbzFusion,1335 &feature_arithCbzFusion,
1347 &feature_crc,
1348 &feature_zczFp,1336 &feature_zczFp,
1337 &feature_fuseArithLogic,
1338 &feature_ccpp,
1339 &feature_fuseAes,
1340 &feature_fuseCsel,
1341 &feature_rdm,
1342 &feature_zczGp,
1343 &feature_force32bitJumpTables,
1344 &feature_usePostraScheduler,
1349 &feature_lslFast,1345 &feature_lslFast,
1350 &feature_lor,1346 &feature_crc,
1351 &feature_perfmon,1347 &feature_fuseLiterals,
1348 &feature_pan,
1352 &feature_fpArmv8,1349 &feature_fpArmv8,
1353 &feature_ccpp,1350 &feature_lor,
1354 &feature_customCheapAsMove,1351 &feature_ras,
1352 &feature_vh,
1353 &feature_arithBccFusion,
1354 &feature_uaops,
1355 },1355 },
1356};1356};
13571357
1358pub const cpu_falkor = Cpu{1358pub const cpu_falkor = Cpu{
1359 .name = "falkor",1359 .name = "falkor",
1360 .llvm_name = "falkor",1360 .llvm_name = "falkor",
1361 .subfeatures = &[_]*const Feature {1361 .dependencies = &[_]*const Feature {
1362 &feature_usePostraScheduler,1362 &feature_customCheapAsMove,
1363 &feature_crc,
1364 &feature_zczFp,
1365 &feature_lslFast,
1366 &feature_slowStrqroStore,
1367 &feature_rdm,1363 &feature_rdm,
1364 &feature_zczGp,
1365 &feature_usePostraScheduler,
1368 &feature_perfmon,1366 &feature_perfmon,
1369 &feature_fpArmv8,1367 &feature_fpArmv8,
1370 &feature_zczGp,1368 &feature_lslFast,
1371 &feature_customCheapAsMove,1369 &feature_zczFp,
1370 &feature_crc,
1371 &feature_slowStrqroStore,
1372 &feature_predictableSelectExpensive,1372 &feature_predictableSelectExpensive,
1373 },1373 },
1374};1374};
...@@ -1376,7 +1376,7 @@ pub const cpu_falkor = Cpu{...@@ -1376,7 +1376,7 @@ pub const cpu_falkor = Cpu{
1376pub const cpu_generic = Cpu{1376pub const cpu_generic = Cpu{
1377 .name = "generic",1377 .name = "generic",
1378 .llvm_name = "generic",1378 .llvm_name = "generic",
1379 .subfeatures = &[_]*const Feature {1379 .dependencies = &[_]*const Feature {
1380 &feature_trbe,1380 &feature_trbe,
1381 &feature_ete,1381 &feature_ete,
1382 &feature_fpArmv8,1382 &feature_fpArmv8,
...@@ -1390,15 +1390,15 @@ pub const cpu_generic = Cpu{...@@ -1390,15 +1390,15 @@ pub const cpu_generic = Cpu{
1390pub const cpu_kryo = Cpu{1390pub const cpu_kryo = Cpu{
1391 .name = "kryo",1391 .name = "kryo",
1392 .llvm_name = "kryo",1392 .llvm_name = "kryo",
1393 .subfeatures = &[_]*const Feature {1393 .dependencies = &[_]*const Feature {
1394 &feature_customCheapAsMove,
1395 &feature_zczGp,
1394 &feature_usePostraScheduler,1396 &feature_usePostraScheduler,
1395 &feature_crc,
1396 &feature_zczFp,
1397 &feature_lslFast,
1398 &feature_perfmon,1397 &feature_perfmon,
1399 &feature_fpArmv8,1398 &feature_fpArmv8,
1400 &feature_zczGp,1399 &feature_lslFast,
1401 &feature_customCheapAsMove,1400 &feature_zczFp,
1401 &feature_crc,
1402 &feature_predictableSelectExpensive,1402 &feature_predictableSelectExpensive,
1403 },1403 },
1404};1404};
...@@ -1406,89 +1406,89 @@ pub const cpu_kryo = Cpu{...@@ -1406,89 +1406,89 @@ pub const cpu_kryo = Cpu{
1406pub const cpu_neoverseE1 = Cpu{1406pub const cpu_neoverseE1 = Cpu{
1407 .name = "neoverse-e1",1407 .name = "neoverse-e1",
1408 .llvm_name = "neoverse-e1",1408 .llvm_name = "neoverse-e1",
1409 .subfeatures = &[_]*const Feature {1409 .dependencies = &[_]*const Feature {
1410 &feature_crc,1410 &feature_rdm,
1411 &feature_ssbs,1411 &feature_ccpp,
1412 &feature_dotprod,
1413 &feature_uaops,
1414 &feature_rcpc,
1415 &feature_lse,1412 &feature_lse,
1413 &feature_fpArmv8,
1416 &feature_lor,1414 &feature_lor,
1417 &feature_pan,
1418 &feature_rdm,
1419 &feature_ras,1415 &feature_ras,
1420 &feature_vh,1416 &feature_vh,
1421 &feature_fpArmv8,1417 &feature_rcpc,
1422 &feature_ccpp,1418 &feature_dotprod,
1419 &feature_ssbs,
1420 &feature_uaops,
1421 &feature_crc,
1422 &feature_pan,
1423 },1423 },
1424};1424};
14251425
1426pub const cpu_neoverseN1 = Cpu{1426pub const cpu_neoverseN1 = Cpu{
1427 .name = "neoverse-n1",1427 .name = "neoverse-n1",
1428 .llvm_name = "neoverse-n1",1428 .llvm_name = "neoverse-n1",
1429 .subfeatures = &[_]*const Feature {1429 .dependencies = &[_]*const Feature {
1430 &feature_ssbs,1430 &feature_rdm,
1431 &feature_dotprod,1431 &feature_ccpp,
1432 &feature_crc,
1433 &feature_uaops,
1434 &feature_rcpc,
1435 &feature_lse,1432 &feature_lse,
1436 &feature_spe,1433 &feature_fpArmv8,
1437 &feature_lor,1434 &feature_lor,
1438 &feature_pan,
1439 &feature_rdm,
1440 &feature_ras,1435 &feature_ras,
1441 &feature_vh,1436 &feature_vh,
1442 &feature_fpArmv8,1437 &feature_rcpc,
1443 &feature_ccpp,1438 &feature_dotprod,
1439 &feature_ssbs,
1440 &feature_uaops,
1441 &feature_crc,
1442 &feature_pan,
1443 &feature_spe,
1444 },1444 },
1445};1445};
14461446
1447pub const cpu_saphira = Cpu{1447pub const cpu_saphira = Cpu{
1448 .name = "saphira",1448 .name = "saphira",
1449 .llvm_name = "saphira",1449 .llvm_name = "saphira",
1450 .subfeatures = &[_]*const Feature {1450 .dependencies = &[_]*const Feature {
1451 &feature_uaops,1451 &feature_customCheapAsMove,
1452 &feature_vh,
1453 &feature_nv,
1454 &feature_zczGp,
1455 &feature_mpam,
1456 &feature_predictableSelectExpensive,
1457 &feature_am,
1458 &feature_usePostraScheduler,
1459 &feature_dotprod,
1460 &feature_rcpc,
1461 &feature_lse,1452 &feature_lse,
1462 &feature_pan,
1463 &feature_ras,
1464 &feature_tlbRmi,
1465 &feature_sel2,
1466 &feature_rdm,
1467 &feature_ccidx,
1468 &feature_dit,
1469 &feature_crc,
1470 &feature_zczFp,
1471 &feature_lslFast,
1472 &feature_fmi,1453 &feature_fmi,
1473 &feature_spe,
1474 &feature_lor,
1475 &feature_perfmon,1454 &feature_perfmon,
1476 &feature_fpArmv8,1455 &feature_sel2,
1456 &feature_dotprod,
1457 &feature_am,
1458 &feature_zczFp,
1459 &feature_mpam,
1477 &feature_ccpp,1460 &feature_ccpp,
1461 &feature_dit,
1478 &feature_tracev84,1462 &feature_tracev84,
1479 &feature_customCheapAsMove,1463 &feature_spe,
1464 &feature_rdm,
1465 &feature_zczGp,
1466 &feature_usePostraScheduler,
1467 &feature_nv,
1468 &feature_tlbRmi,
1469 &feature_lslFast,
1470 &feature_crc,
1471 &feature_pan,
1472 &feature_ccidx,
1473 &feature_fpArmv8,
1474 &feature_ras,
1475 &feature_lor,
1476 &feature_vh,
1477 &feature_rcpc,
1478 &feature_uaops,
1480 &feature_pa,1479 &feature_pa,
1480 &feature_predictableSelectExpensive,
1481 },1481 },
1482};1482};
14831483
1484pub const cpu_thunderx = Cpu{1484pub const cpu_thunderx = Cpu{
1485 .name = "thunderx",1485 .name = "thunderx",
1486 .llvm_name = "thunderx",1486 .llvm_name = "thunderx",
1487 .subfeatures = &[_]*const Feature {1487 .dependencies = &[_]*const Feature {
1488 &feature_usePostraScheduler,1488 &feature_usePostraScheduler,
1489 &feature_crc,
1490 &feature_perfmon,1489 &feature_perfmon,
1491 &feature_fpArmv8,1490 &feature_fpArmv8,
1491 &feature_crc,
1492 &feature_predictableSelectExpensive,1492 &feature_predictableSelectExpensive,
1493 },1493 },
1494};1494};
...@@ -1496,17 +1496,17 @@ pub const cpu_thunderx = Cpu{...@@ -1496,17 +1496,17 @@ pub const cpu_thunderx = Cpu{
1496pub const cpu_thunderx2t99 = Cpu{1496pub const cpu_thunderx2t99 = Cpu{
1497 .name = "thunderx2t99",1497 .name = "thunderx2t99",
1498 .llvm_name = "thunderx2t99",1498 .llvm_name = "thunderx2t99",
1499 .subfeatures = &[_]*const Feature {1499 .dependencies = &[_]*const Feature {
1500 &feature_usePostraScheduler,1500 &feature_rdm,
1501 &feature_crc,
1502 &feature_lse,1501 &feature_lse,
1503 &feature_lor,1502 &feature_usePostraScheduler,
1504 &feature_aggressiveFma,1503 &feature_aggressiveFma,
1505 &feature_pan,
1506 &feature_rdm,
1507 &feature_vh,
1508 &feature_fpArmv8,1504 &feature_fpArmv8,
1505 &feature_lor,
1506 &feature_vh,
1509 &feature_arithBccFusion,1507 &feature_arithBccFusion,
1508 &feature_crc,
1509 &feature_pan,
1510 &feature_predictableSelectExpensive,1510 &feature_predictableSelectExpensive,
1511 },1511 },
1512};1512};
...@@ -1514,11 +1514,11 @@ pub const cpu_thunderx2t99 = Cpu{...@@ -1514,11 +1514,11 @@ pub const cpu_thunderx2t99 = Cpu{
1514pub const cpu_thunderxt81 = Cpu{1514pub const cpu_thunderxt81 = Cpu{
1515 .name = "thunderxt81",1515 .name = "thunderxt81",
1516 .llvm_name = "thunderxt81",1516 .llvm_name = "thunderxt81",
1517 .subfeatures = &[_]*const Feature {1517 .dependencies = &[_]*const Feature {
1518 &feature_usePostraScheduler,1518 &feature_usePostraScheduler,
1519 &feature_crc,
1520 &feature_perfmon,1519 &feature_perfmon,
1521 &feature_fpArmv8,1520 &feature_fpArmv8,
1521 &feature_crc,
1522 &feature_predictableSelectExpensive,1522 &feature_predictableSelectExpensive,
1523 },1523 },
1524};1524};
...@@ -1526,11 +1526,11 @@ pub const cpu_thunderxt81 = Cpu{...@@ -1526,11 +1526,11 @@ pub const cpu_thunderxt81 = Cpu{
1526pub const cpu_thunderxt83 = Cpu{1526pub const cpu_thunderxt83 = Cpu{
1527 .name = "thunderxt83",1527 .name = "thunderxt83",
1528 .llvm_name = "thunderxt83",1528 .llvm_name = "thunderxt83",
1529 .subfeatures = &[_]*const Feature {1529 .dependencies = &[_]*const Feature {
1530 &feature_usePostraScheduler,1530 &feature_usePostraScheduler,
1531 &feature_crc,
1532 &feature_perfmon,1531 &feature_perfmon,
1533 &feature_fpArmv8,1532 &feature_fpArmv8,
1533 &feature_crc,
1534 &feature_predictableSelectExpensive,1534 &feature_predictableSelectExpensive,
1535 },1535 },
1536};1536};
...@@ -1538,11 +1538,11 @@ pub const cpu_thunderxt83 = Cpu{...@@ -1538,11 +1538,11 @@ pub const cpu_thunderxt83 = Cpu{
1538pub const cpu_thunderxt88 = Cpu{1538pub const cpu_thunderxt88 = Cpu{
1539 .name = "thunderxt88",1539 .name = "thunderxt88",
1540 .llvm_name = "thunderxt88",1540 .llvm_name = "thunderxt88",
1541 .subfeatures = &[_]*const Feature {1541 .dependencies = &[_]*const Feature {
1542 &feature_usePostraScheduler,1542 &feature_usePostraScheduler,
1543 &feature_crc,
1544 &feature_perfmon,1543 &feature_perfmon,
1545 &feature_fpArmv8,1544 &feature_fpArmv8,
1545 &feature_crc,
1546 &feature_predictableSelectExpensive,1546 &feature_predictableSelectExpensive,
1547 },1547 },
1548};1548};
...@@ -1550,23 +1550,23 @@ pub const cpu_thunderxt88 = Cpu{...@@ -1550,23 +1550,23 @@ pub const cpu_thunderxt88 = Cpu{
1550pub const cpu_tsv110 = Cpu{1550pub const cpu_tsv110 = Cpu{
1551 .name = "tsv110",1551 .name = "tsv110",
1552 .llvm_name = "tsv110",1552 .llvm_name = "tsv110",
1553 .subfeatures = &[_]*const Feature {1553 .dependencies = &[_]*const Feature {
1554 &feature_usePostraScheduler,1554 &feature_customCheapAsMove,
1555 &feature_crc,1555 &feature_rdm,
1556 &feature_dotprod,
1557 &feature_ccpp,1556 &feature_ccpp,
1558 &feature_uaops,1557 &feature_fuseAes,
1559 &feature_lse,1558 &feature_lse,
1560 &feature_lor,1559 &feature_usePostraScheduler,
1561 &feature_spe,
1562 &feature_pan,
1563 &feature_rdm,
1564 &feature_perfmon,1560 &feature_perfmon,
1561 &feature_fpArmv8,
1562 &feature_lor,
1565 &feature_ras,1563 &feature_ras,
1566 &feature_vh,1564 &feature_vh,
1567 &feature_fpArmv8,1565 &feature_dotprod,
1568 &feature_fuseAes,1566 &feature_uaops,
1569 &feature_customCheapAsMove,1567 &feature_crc,
1568 &feature_pan,
1569 &feature_spe,
1570 },1570 },
1571};1571};
15721572
lib/std/target/amdgpu.zig+580-580
...@@ -4,196 +4,196 @@ const Cpu = @import("std").target.Cpu;...@@ -4,196 +4,196 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_BitInsts16 = Feature{4pub const feature_BitInsts16 = Feature{
5 .name = "16-bit-insts",5 .name = "16-bit-insts",
6 .description = "Has i16/f16 instructions",6 .description = "Has i16/f16 instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_addNoCarryInsts = Feature{11pub const feature_addNoCarryInsts = Feature{
12 .name = "add-no-carry-insts",12 .name = "add-no-carry-insts",
13 .description = "Have VALU add/sub instructions without carry out",13 .description = "Have VALU add/sub instructions without carry out",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_apertureRegs = Feature{18pub const feature_apertureRegs = Feature{
19 .name = "aperture-regs",19 .name = "aperture-regs",
20 .description = "Has Memory Aperture Base and Size Registers",20 .description = "Has Memory Aperture Base and Size Registers",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_atomicFaddInsts = Feature{25pub const feature_atomicFaddInsts = Feature{
26 .name = "atomic-fadd-insts",26 .name = "atomic-fadd-insts",
27 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",27 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_autoWaitcntBeforeBarrier = Feature{32pub const feature_autoWaitcntBeforeBarrier = Feature{
33 .name = "auto-waitcnt-before-barrier",33 .name = "auto-waitcnt-before-barrier",
34 .description = "Hardware automatically inserts waitcnt before barrier",34 .description = "Hardware automatically inserts waitcnt before barrier",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_ciInsts = Feature{39pub const feature_ciInsts = Feature{
40 .name = "ci-insts",40 .name = "ci-insts",
41 .description = "Additional instructions for CI+",41 .description = "Additional instructions for CI+",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_codeObjectV3 = Feature{46pub const feature_codeObjectV3 = Feature{
47 .name = "code-object-v3",47 .name = "code-object-v3",
48 .description = "Generate code object version 3",48 .description = "Generate code object version 3",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_cumode = Feature{53pub const feature_cumode = Feature{
54 .name = "cumode",54 .name = "cumode",
55 .description = "Enable CU wavefront execution mode",55 .description = "Enable CU wavefront execution mode",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_dlInsts = Feature{60pub const feature_dlInsts = Feature{
61 .name = "dl-insts",61 .name = "dl-insts",
62 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",62 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_dpp = Feature{67pub const feature_dpp = Feature{
68 .name = "dpp",68 .name = "dpp",
69 .description = "Support DPP (Data Parallel Primitives) extension",69 .description = "Support DPP (Data Parallel Primitives) extension",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 },71 },
72};72};
7373
74pub const feature_dpp8 = Feature{74pub const feature_dpp8 = Feature{
75 .name = "dpp8",75 .name = "dpp8",
76 .description = "Support DPP8 (Data Parallel Primitives) extension",76 .description = "Support DPP8 (Data Parallel Primitives) extension",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 },78 },
79};79};
8080
81pub const feature_noSramEccSupport = Feature{81pub const feature_noSramEccSupport = Feature{
82 .name = "no-sram-ecc-support",82 .name = "no-sram-ecc-support",
83 .description = "Hardware does not support SRAM ECC",83 .description = "Hardware does not support SRAM ECC",
84 .subfeatures = &[_]*const Feature {84 .dependencies = &[_]*const Feature {
85 },85 },
86};86};
8787
88pub const feature_noXnackSupport = Feature{88pub const feature_noXnackSupport = Feature{
89 .name = "no-xnack-support",89 .name = "no-xnack-support",
90 .description = "Hardware does not support XNACK",90 .description = "Hardware does not support XNACK",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 },92 },
93};93};
9494
95pub const feature_dot1Insts = Feature{95pub const feature_dot1Insts = Feature{
96 .name = "dot1-insts",96 .name = "dot1-insts",
97 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",97 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
98 .subfeatures = &[_]*const Feature {98 .dependencies = &[_]*const Feature {
99 },99 },
100};100};
101101
102pub const feature_dot2Insts = Feature{102pub const feature_dot2Insts = Feature{
103 .name = "dot2-insts",103 .name = "dot2-insts",
104 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",104 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
105 .subfeatures = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
106 },106 },
107};107};
108108
109pub const feature_dot3Insts = Feature{109pub const feature_dot3Insts = Feature{
110 .name = "dot3-insts",110 .name = "dot3-insts",
111 .description = "Has v_dot8c_i32_i4 instruction",111 .description = "Has v_dot8c_i32_i4 instruction",
112 .subfeatures = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
113 },113 },
114};114};
115115
116pub const feature_dot4Insts = Feature{116pub const feature_dot4Insts = Feature{
117 .name = "dot4-insts",117 .name = "dot4-insts",
118 .description = "Has v_dot2c_i32_i16 instruction",118 .description = "Has v_dot2c_i32_i16 instruction",
119 .subfeatures = &[_]*const Feature {119 .dependencies = &[_]*const Feature {
120 },120 },
121};121};
122122
123pub const feature_dot5Insts = Feature{123pub const feature_dot5Insts = Feature{
124 .name = "dot5-insts",124 .name = "dot5-insts",
125 .description = "Has v_dot2c_f32_f16 instruction",125 .description = "Has v_dot2c_f32_f16 instruction",
126 .subfeatures = &[_]*const Feature {126 .dependencies = &[_]*const Feature {
127 },127 },
128};128};
129129
130pub const feature_dot6Insts = Feature{130pub const feature_dot6Insts = Feature{
131 .name = "dot6-insts",131 .name = "dot6-insts",
132 .description = "Has v_dot4c_i32_i8 instruction",132 .description = "Has v_dot4c_i32_i8 instruction",
133 .subfeatures = &[_]*const Feature {133 .dependencies = &[_]*const Feature {
134 },134 },
135};135};
136136
137pub const feature_DumpCode = Feature{137pub const feature_DumpCode = Feature{
138 .name = "DumpCode",138 .name = "DumpCode",
139 .description = "Dump MachineInstrs in the CodeEmitter",139 .description = "Dump MachineInstrs in the CodeEmitter",
140 .subfeatures = &[_]*const Feature {140 .dependencies = &[_]*const Feature {
141 },141 },
142};142};
143143
144pub const feature_dumpcode = Feature{144pub const feature_dumpcode = Feature{
145 .name = "dumpcode",145 .name = "dumpcode",
146 .description = "Dump MachineInstrs in the CodeEmitter",146 .description = "Dump MachineInstrs in the CodeEmitter",
147 .subfeatures = &[_]*const Feature {147 .dependencies = &[_]*const Feature {
148 },148 },
149};149};
150150
151pub const feature_enableDs128 = Feature{151pub const feature_enableDs128 = Feature{
152 .name = "enable-ds128",152 .name = "enable-ds128",
153 .description = "Use ds_{read|write}_b128",153 .description = "Use ds_{read|write}_b128",
154 .subfeatures = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
155 },155 },
156};156};
157157
158pub const feature_loadStoreOpt = Feature{158pub const feature_loadStoreOpt = Feature{
159 .name = "load-store-opt",159 .name = "load-store-opt",
160 .description = "Enable SI load/store optimizer pass",160 .description = "Enable SI load/store optimizer pass",
161 .subfeatures = &[_]*const Feature {161 .dependencies = &[_]*const Feature {
162 },162 },
163};163};
164164
165pub const feature_enablePrtStrictNull = Feature{165pub const feature_enablePrtStrictNull = Feature{
166 .name = "enable-prt-strict-null",166 .name = "enable-prt-strict-null",
167 .description = "Enable zeroing of result registers for sparse texture fetches",167 .description = "Enable zeroing of result registers for sparse texture fetches",
168 .subfeatures = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
169 },169 },
170};170};
171171
172pub const feature_siScheduler = Feature{172pub const feature_siScheduler = Feature{
173 .name = "si-scheduler",173 .name = "si-scheduler",
174 .description = "Enable SI Machine Scheduler",174 .description = "Enable SI Machine Scheduler",
175 .subfeatures = &[_]*const Feature {175 .dependencies = &[_]*const Feature {
176 },176 },
177};177};
178178
179pub const feature_unsafeDsOffsetFolding = Feature{179pub const feature_unsafeDsOffsetFolding = Feature{
180 .name = "unsafe-ds-offset-folding",180 .name = "unsafe-ds-offset-folding",
181 .description = "Force using DS instruction immediate offsets on SI",181 .description = "Force using DS instruction immediate offsets on SI",
182 .subfeatures = &[_]*const Feature {182 .dependencies = &[_]*const Feature {
183 },183 },
184};184};
185185
186pub const feature_fmaf = Feature{186pub const feature_fmaf = Feature{
187 .name = "fmaf",187 .name = "fmaf",
188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
189 .subfeatures = &[_]*const Feature {189 .dependencies = &[_]*const Feature {
190 },190 },
191};191};
192192
193pub const feature_fp16Denormals = Feature{193pub const feature_fp16Denormals = Feature{
194 .name = "fp16-denormals",194 .name = "fp16-denormals",
195 .description = "Enable half precision denormal handling",195 .description = "Enable half precision denormal handling",
196 .subfeatures = &[_]*const Feature {196 .dependencies = &[_]*const Feature {
197 &feature_fp64,197 &feature_fp64,
198 },198 },
199};199};
...@@ -201,21 +201,21 @@ pub const feature_fp16Denormals = Feature{...@@ -201,21 +201,21 @@ pub const feature_fp16Denormals = Feature{
201pub const feature_fp32Denormals = Feature{201pub const feature_fp32Denormals = Feature{
202 .name = "fp32-denormals",202 .name = "fp32-denormals",
203 .description = "Enable single precision denormal handling",203 .description = "Enable single precision denormal handling",
204 .subfeatures = &[_]*const Feature {204 .dependencies = &[_]*const Feature {
205 },205 },
206};206};
207207
208pub const feature_fp64 = Feature{208pub const feature_fp64 = Feature{
209 .name = "fp64",209 .name = "fp64",
210 .description = "Enable double precision operations",210 .description = "Enable double precision operations",
211 .subfeatures = &[_]*const Feature {211 .dependencies = &[_]*const Feature {
212 },212 },
213};213};
214214
215pub const feature_fp64Denormals = Feature{215pub const feature_fp64Denormals = Feature{
216 .name = "fp64-denormals",216 .name = "fp64-denormals",
217 .description = "Enable double and half precision denormal handling",217 .description = "Enable double and half precision denormal handling",
218 .subfeatures = &[_]*const Feature {218 .dependencies = &[_]*const Feature {
219 &feature_fp64,219 &feature_fp64,
220 },220 },
221};221};
...@@ -223,7 +223,7 @@ pub const feature_fp64Denormals = Feature{...@@ -223,7 +223,7 @@ pub const feature_fp64Denormals = Feature{
223pub const feature_fp64Fp16Denormals = Feature{223pub const feature_fp64Fp16Denormals = Feature{
224 .name = "fp64-fp16-denormals",224 .name = "fp64-fp16-denormals",
225 .description = "Enable double and half precision denormal handling",225 .description = "Enable double and half precision denormal handling",
226 .subfeatures = &[_]*const Feature {226 .dependencies = &[_]*const Feature {
227 &feature_fp64,227 &feature_fp64,
228 },228 },
229};229};
...@@ -231,497 +231,497 @@ pub const feature_fp64Fp16Denormals = Feature{...@@ -231,497 +231,497 @@ pub const feature_fp64Fp16Denormals = Feature{
231pub const feature_fpExceptions = Feature{231pub const feature_fpExceptions = Feature{
232 .name = "fp-exceptions",232 .name = "fp-exceptions",
233 .description = "Enable floating point exceptions",233 .description = "Enable floating point exceptions",
234 .subfeatures = &[_]*const Feature {234 .dependencies = &[_]*const Feature {
235 },235 },
236};236};
237237
238pub const feature_fastFmaf = Feature{238pub const feature_fastFmaf = Feature{
239 .name = "fast-fmaf",239 .name = "fast-fmaf",
240 .description = "Assuming f32 fma is at least as fast as mul + add",240 .description = "Assuming f32 fma is at least as fast as mul + add",
241 .subfeatures = &[_]*const Feature {241 .dependencies = &[_]*const Feature {
242 },242 },
243};243};
244244
245pub const feature_flatAddressSpace = Feature{245pub const feature_flatAddressSpace = Feature{
246 .name = "flat-address-space",246 .name = "flat-address-space",
247 .description = "Support flat address space",247 .description = "Support flat address space",
248 .subfeatures = &[_]*const Feature {248 .dependencies = &[_]*const Feature {
249 },249 },
250};250};
251251
252pub const feature_flatForGlobal = Feature{252pub const feature_flatForGlobal = Feature{
253 .name = "flat-for-global",253 .name = "flat-for-global",
254 .description = "Force to generate flat instruction for global",254 .description = "Force to generate flat instruction for global",
255 .subfeatures = &[_]*const Feature {255 .dependencies = &[_]*const Feature {
256 },256 },
257};257};
258258
259pub const feature_flatGlobalInsts = Feature{259pub const feature_flatGlobalInsts = Feature{
260 .name = "flat-global-insts",260 .name = "flat-global-insts",
261 .description = "Have global_* flat memory instructions",261 .description = "Have global_* flat memory instructions",
262 .subfeatures = &[_]*const Feature {262 .dependencies = &[_]*const Feature {
263 },263 },
264};264};
265265
266pub const feature_flatInstOffsets = Feature{266pub const feature_flatInstOffsets = Feature{
267 .name = "flat-inst-offsets",267 .name = "flat-inst-offsets",
268 .description = "Flat instructions have immediate offset addressing mode",268 .description = "Flat instructions have immediate offset addressing mode",
269 .subfeatures = &[_]*const Feature {269 .dependencies = &[_]*const Feature {
270 },270 },
271};271};
272272
273pub const feature_flatScratchInsts = Feature{273pub const feature_flatScratchInsts = Feature{
274 .name = "flat-scratch-insts",274 .name = "flat-scratch-insts",
275 .description = "Have scratch_* flat memory instructions",275 .description = "Have scratch_* flat memory instructions",
276 .subfeatures = &[_]*const Feature {276 .dependencies = &[_]*const Feature {
277 },277 },
278};278};
279279
280pub const feature_flatSegmentOffsetBug = Feature{280pub const feature_flatSegmentOffsetBug = Feature{
281 .name = "flat-segment-offset-bug",281 .name = "flat-segment-offset-bug",
282 .description = "GFX10 bug, inst_offset ignored in flat segment",282 .description = "GFX10 bug, inst_offset ignored in flat segment",
283 .subfeatures = &[_]*const Feature {283 .dependencies = &[_]*const Feature {
284 },284 },
285};285};
286286
287pub const feature_fmaMixInsts = Feature{287pub const feature_fmaMixInsts = Feature{
288 .name = "fma-mix-insts",288 .name = "fma-mix-insts",
289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
290 .subfeatures = &[_]*const Feature {290 .dependencies = &[_]*const Feature {
291 },291 },
292};292};
293293
294pub const feature_gcn3Encoding = Feature{294pub const feature_gcn3Encoding = Feature{
295 .name = "gcn3-encoding",295 .name = "gcn3-encoding",
296 .description = "Encoding format for VI",296 .description = "Encoding format for VI",
297 .subfeatures = &[_]*const Feature {297 .dependencies = &[_]*const Feature {
298 },298 },
299};299};
300300
301pub const feature_gfx7Gfx8Gfx9Insts = Feature{301pub const feature_gfx7Gfx8Gfx9Insts = Feature{
302 .name = "gfx7-gfx8-gfx9-insts",302 .name = "gfx7-gfx8-gfx9-insts",
303 .description = "Instructions shared in GFX7, GFX8, GFX9",303 .description = "Instructions shared in GFX7, GFX8, GFX9",
304 .subfeatures = &[_]*const Feature {304 .dependencies = &[_]*const Feature {
305 },305 },
306};306};
307307
308pub const feature_gfx8Insts = Feature{308pub const feature_gfx8Insts = Feature{
309 .name = "gfx8-insts",309 .name = "gfx8-insts",
310 .description = "Additional instructions for GFX8+",310 .description = "Additional instructions for GFX8+",
311 .subfeatures = &[_]*const Feature {311 .dependencies = &[_]*const Feature {
312 },312 },
313};313};
314314
315pub const feature_gfx9Insts = Feature{315pub const feature_gfx9Insts = Feature{
316 .name = "gfx9-insts",316 .name = "gfx9-insts",
317 .description = "Additional instructions for GFX9+",317 .description = "Additional instructions for GFX9+",
318 .subfeatures = &[_]*const Feature {318 .dependencies = &[_]*const Feature {
319 },319 },
320};320};
321321
322pub const feature_gfx10Insts = Feature{322pub const feature_gfx10Insts = Feature{
323 .name = "gfx10-insts",323 .name = "gfx10-insts",
324 .description = "Additional instructions for GFX10+",324 .description = "Additional instructions for GFX10+",
325 .subfeatures = &[_]*const Feature {325 .dependencies = &[_]*const Feature {
326 },326 },
327};327};
328328
329pub const feature_instFwdPrefetchBug = Feature{329pub const feature_instFwdPrefetchBug = Feature{
330 .name = "inst-fwd-prefetch-bug",330 .name = "inst-fwd-prefetch-bug",
331 .description = "S_INST_PREFETCH instruction causes shader to hang",331 .description = "S_INST_PREFETCH instruction causes shader to hang",
332 .subfeatures = &[_]*const Feature {332 .dependencies = &[_]*const Feature {
333 },333 },
334};334};
335335
336pub const feature_intClampInsts = Feature{336pub const feature_intClampInsts = Feature{
337 .name = "int-clamp-insts",337 .name = "int-clamp-insts",
338 .description = "Support clamp for integer destination",338 .description = "Support clamp for integer destination",
339 .subfeatures = &[_]*const Feature {339 .dependencies = &[_]*const Feature {
340 },340 },
341};341};
342342
343pub const feature_inv2piInlineImm = Feature{343pub const feature_inv2piInlineImm = Feature{
344 .name = "inv-2pi-inline-imm",344 .name = "inv-2pi-inline-imm",
345 .description = "Has 1 / (2 * pi) as inline immediate",345 .description = "Has 1 / (2 * pi) as inline immediate",
346 .subfeatures = &[_]*const Feature {346 .dependencies = &[_]*const Feature {
347 },347 },
348};348};
349349
350pub const feature_ldsbankcount16 = Feature{350pub const feature_ldsbankcount16 = Feature{
351 .name = "ldsbankcount16",351 .name = "ldsbankcount16",
352 .description = "The number of LDS banks per compute unit.",352 .description = "The number of LDS banks per compute unit.",
353 .subfeatures = &[_]*const Feature {353 .dependencies = &[_]*const Feature {
354 },354 },
355};355};
356356
357pub const feature_ldsbankcount32 = Feature{357pub const feature_ldsbankcount32 = Feature{
358 .name = "ldsbankcount32",358 .name = "ldsbankcount32",
359 .description = "The number of LDS banks per compute unit.",359 .description = "The number of LDS banks per compute unit.",
360 .subfeatures = &[_]*const Feature {360 .dependencies = &[_]*const Feature {
361 },361 },
362};362};
363363
364pub const feature_ldsBranchVmemWarHazard = Feature{364pub const feature_ldsBranchVmemWarHazard = Feature{
365 .name = "lds-branch-vmem-war-hazard",365 .name = "lds-branch-vmem-war-hazard",
366 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",366 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
367 .subfeatures = &[_]*const Feature {367 .dependencies = &[_]*const Feature {
368 },368 },
369};369};
370370
371pub const feature_ldsMisalignedBug = Feature{371pub const feature_ldsMisalignedBug = Feature{
372 .name = "lds-misaligned-bug",372 .name = "lds-misaligned-bug",
373 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",373 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
374 .subfeatures = &[_]*const Feature {374 .dependencies = &[_]*const Feature {
375 },375 },
376};376};
377377
378pub const feature_localmemorysize0 = Feature{378pub const feature_localmemorysize0 = Feature{
379 .name = "localmemorysize0",379 .name = "localmemorysize0",
380 .description = "The size of local memory in bytes",380 .description = "The size of local memory in bytes",
381 .subfeatures = &[_]*const Feature {381 .dependencies = &[_]*const Feature {
382 },382 },
383};383};
384384
385pub const feature_localmemorysize32768 = Feature{385pub const feature_localmemorysize32768 = Feature{
386 .name = "localmemorysize32768",386 .name = "localmemorysize32768",
387 .description = "The size of local memory in bytes",387 .description = "The size of local memory in bytes",
388 .subfeatures = &[_]*const Feature {388 .dependencies = &[_]*const Feature {
389 },389 },
390};390};
391391
392pub const feature_localmemorysize65536 = Feature{392pub const feature_localmemorysize65536 = Feature{
393 .name = "localmemorysize65536",393 .name = "localmemorysize65536",
394 .description = "The size of local memory in bytes",394 .description = "The size of local memory in bytes",
395 .subfeatures = &[_]*const Feature {395 .dependencies = &[_]*const Feature {
396 },396 },
397};397};
398398
399pub const feature_maiInsts = Feature{399pub const feature_maiInsts = Feature{
400 .name = "mai-insts",400 .name = "mai-insts",
401 .description = "Has mAI instructions",401 .description = "Has mAI instructions",
402 .subfeatures = &[_]*const Feature {402 .dependencies = &[_]*const Feature {
403 },403 },
404};404};
405405
406pub const feature_mfmaInlineLiteralBug = Feature{406pub const feature_mfmaInlineLiteralBug = Feature{
407 .name = "mfma-inline-literal-bug",407 .name = "mfma-inline-literal-bug",
408 .description = "MFMA cannot use inline literal as SrcC",408 .description = "MFMA cannot use inline literal as SrcC",
409 .subfeatures = &[_]*const Feature {409 .dependencies = &[_]*const Feature {
410 },410 },
411};411};
412412
413pub const feature_mimgR128 = Feature{413pub const feature_mimgR128 = Feature{
414 .name = "mimg-r128",414 .name = "mimg-r128",
415 .description = "Support 128-bit texture resources",415 .description = "Support 128-bit texture resources",
416 .subfeatures = &[_]*const Feature {416 .dependencies = &[_]*const Feature {
417 },417 },
418};418};
419419
420pub const feature_madMixInsts = Feature{420pub const feature_madMixInsts = Feature{
421 .name = "mad-mix-insts",421 .name = "mad-mix-insts",
422 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",422 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
423 .subfeatures = &[_]*const Feature {423 .dependencies = &[_]*const Feature {
424 },424 },
425};425};
426426
427pub const feature_maxPrivateElementSize4 = Feature{427pub const feature_maxPrivateElementSize4 = Feature{
428 .name = "max-private-element-size-4",428 .name = "max-private-element-size-4",
429 .description = "Maximum private access size may be 4",429 .description = "Maximum private access size may be 4",
430 .subfeatures = &[_]*const Feature {430 .dependencies = &[_]*const Feature {
431 },431 },
432};432};
433433
434pub const feature_maxPrivateElementSize8 = Feature{434pub const feature_maxPrivateElementSize8 = Feature{
435 .name = "max-private-element-size-8",435 .name = "max-private-element-size-8",
436 .description = "Maximum private access size may be 8",436 .description = "Maximum private access size may be 8",
437 .subfeatures = &[_]*const Feature {437 .dependencies = &[_]*const Feature {
438 },438 },
439};439};
440440
441pub const feature_maxPrivateElementSize16 = Feature{441pub const feature_maxPrivateElementSize16 = Feature{
442 .name = "max-private-element-size-16",442 .name = "max-private-element-size-16",
443 .description = "Maximum private access size may be 16",443 .description = "Maximum private access size may be 16",
444 .subfeatures = &[_]*const Feature {444 .dependencies = &[_]*const Feature {
445 },445 },
446};446};
447447
448pub const feature_movrel = Feature{448pub const feature_movrel = Feature{
449 .name = "movrel",449 .name = "movrel",
450 .description = "Has v_movrel*_b32 instructions",450 .description = "Has v_movrel*_b32 instructions",
451 .subfeatures = &[_]*const Feature {451 .dependencies = &[_]*const Feature {
452 },452 },
453};453};
454454
455pub const feature_nsaEncoding = Feature{455pub const feature_nsaEncoding = Feature{
456 .name = "nsa-encoding",456 .name = "nsa-encoding",
457 .description = "Support NSA encoding for image instructions",457 .description = "Support NSA encoding for image instructions",
458 .subfeatures = &[_]*const Feature {458 .dependencies = &[_]*const Feature {
459 },459 },
460};460};
461461
462pub const feature_nsaToVmemBug = Feature{462pub const feature_nsaToVmemBug = Feature{
463 .name = "nsa-to-vmem-bug",463 .name = "nsa-to-vmem-bug",
464 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",464 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
465 .subfeatures = &[_]*const Feature {465 .dependencies = &[_]*const Feature {
466 },466 },
467};467};
468468
469pub const feature_noDataDepHazard = Feature{469pub const feature_noDataDepHazard = Feature{
470 .name = "no-data-dep-hazard",470 .name = "no-data-dep-hazard",
471 .description = "Does not need SW waitstates",471 .description = "Does not need SW waitstates",
472 .subfeatures = &[_]*const Feature {472 .dependencies = &[_]*const Feature {
473 },473 },
474};474};
475475
476pub const feature_noSdstCmpx = Feature{476pub const feature_noSdstCmpx = Feature{
477 .name = "no-sdst-cmpx",477 .name = "no-sdst-cmpx",
478 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",478 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
479 .subfeatures = &[_]*const Feature {479 .dependencies = &[_]*const Feature {
480 },480 },
481};481};
482482
483pub const feature_offset3fBug = Feature{483pub const feature_offset3fBug = Feature{
484 .name = "offset-3f-bug",484 .name = "offset-3f-bug",
485 .description = "Branch offset of 3f hardware bug",485 .description = "Branch offset of 3f hardware bug",
486 .subfeatures = &[_]*const Feature {486 .dependencies = &[_]*const Feature {
487 },487 },
488};488};
489489
490pub const feature_pkFmacF16Inst = Feature{490pub const feature_pkFmacF16Inst = Feature{
491 .name = "pk-fmac-f16-inst",491 .name = "pk-fmac-f16-inst",
492 .description = "Has v_pk_fmac_f16 instruction",492 .description = "Has v_pk_fmac_f16 instruction",
493 .subfeatures = &[_]*const Feature {493 .dependencies = &[_]*const Feature {
494 },494 },
495};495};
496496
497pub const feature_promoteAlloca = Feature{497pub const feature_promoteAlloca = Feature{
498 .name = "promote-alloca",498 .name = "promote-alloca",
499 .description = "Enable promote alloca pass",499 .description = "Enable promote alloca pass",
500 .subfeatures = &[_]*const Feature {500 .dependencies = &[_]*const Feature {
501 },501 },
502};502};
503503
504pub const feature_r128A16 = Feature{504pub const feature_r128A16 = Feature{
505 .name = "r128-a16",505 .name = "r128-a16",
506 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",506 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
507 .subfeatures = &[_]*const Feature {507 .dependencies = &[_]*const Feature {
508 },508 },
509};509};
510510
511pub const feature_registerBanking = Feature{511pub const feature_registerBanking = Feature{
512 .name = "register-banking",512 .name = "register-banking",
513 .description = "Has register banking",513 .description = "Has register banking",
514 .subfeatures = &[_]*const Feature {514 .dependencies = &[_]*const Feature {
515 },515 },
516};516};
517517
518pub const feature_sdwa = Feature{518pub const feature_sdwa = Feature{
519 .name = "sdwa",519 .name = "sdwa",
520 .description = "Support SDWA (Sub-DWORD Addressing) extension",520 .description = "Support SDWA (Sub-DWORD Addressing) extension",
521 .subfeatures = &[_]*const Feature {521 .dependencies = &[_]*const Feature {
522 },522 },
523};523};
524524
525pub const feature_sdwaMav = Feature{525pub const feature_sdwaMav = Feature{
526 .name = "sdwa-mav",526 .name = "sdwa-mav",
527 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",527 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
528 .subfeatures = &[_]*const Feature {528 .dependencies = &[_]*const Feature {
529 },529 },
530};530};
531531
532pub const feature_sdwaOmod = Feature{532pub const feature_sdwaOmod = Feature{
533 .name = "sdwa-omod",533 .name = "sdwa-omod",
534 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",534 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
535 .subfeatures = &[_]*const Feature {535 .dependencies = &[_]*const Feature {
536 },536 },
537};537};
538538
539pub const feature_sdwaOutModsVopc = Feature{539pub const feature_sdwaOutModsVopc = Feature{
540 .name = "sdwa-out-mods-vopc",540 .name = "sdwa-out-mods-vopc",
541 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",541 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
542 .subfeatures = &[_]*const Feature {542 .dependencies = &[_]*const Feature {
543 },543 },
544};544};
545545
546pub const feature_sdwaScalar = Feature{546pub const feature_sdwaScalar = Feature{
547 .name = "sdwa-scalar",547 .name = "sdwa-scalar",
548 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",548 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
549 .subfeatures = &[_]*const Feature {549 .dependencies = &[_]*const Feature {
550 },550 },
551};551};
552552
553pub const feature_sdwaSdst = Feature{553pub const feature_sdwaSdst = Feature{
554 .name = "sdwa-sdst",554 .name = "sdwa-sdst",
555 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",555 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
556 .subfeatures = &[_]*const Feature {556 .dependencies = &[_]*const Feature {
557 },557 },
558};558};
559559
560pub const feature_sgprInitBug = Feature{560pub const feature_sgprInitBug = Feature{
561 .name = "sgpr-init-bug",561 .name = "sgpr-init-bug",
562 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",562 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
563 .subfeatures = &[_]*const Feature {563 .dependencies = &[_]*const Feature {
564 },564 },
565};565};
566566
567pub const feature_smemToVectorWriteHazard = Feature{567pub const feature_smemToVectorWriteHazard = Feature{
568 .name = "smem-to-vector-write-hazard",568 .name = "smem-to-vector-write-hazard",
569 .description = "s_load_dword followed by v_cmp page faults",569 .description = "s_load_dword followed by v_cmp page faults",
570 .subfeatures = &[_]*const Feature {570 .dependencies = &[_]*const Feature {
571 },571 },
572};572};
573573
574pub const feature_sMemrealtime = Feature{574pub const feature_sMemrealtime = Feature{
575 .name = "s-memrealtime",575 .name = "s-memrealtime",
576 .description = "Has s_memrealtime instruction",576 .description = "Has s_memrealtime instruction",
577 .subfeatures = &[_]*const Feature {577 .dependencies = &[_]*const Feature {
578 },578 },
579};579};
580580
581pub const feature_sramEcc = Feature{581pub const feature_sramEcc = Feature{
582 .name = "sram-ecc",582 .name = "sram-ecc",
583 .description = "Enable SRAM ECC",583 .description = "Enable SRAM ECC",
584 .subfeatures = &[_]*const Feature {584 .dependencies = &[_]*const Feature {
585 },585 },
586};586};
587587
588pub const feature_scalarAtomics = Feature{588pub const feature_scalarAtomics = Feature{
589 .name = "scalar-atomics",589 .name = "scalar-atomics",
590 .description = "Has atomic scalar memory instructions",590 .description = "Has atomic scalar memory instructions",
591 .subfeatures = &[_]*const Feature {591 .dependencies = &[_]*const Feature {
592 },592 },
593};593};
594594
595pub const feature_scalarFlatScratchInsts = Feature{595pub const feature_scalarFlatScratchInsts = Feature{
596 .name = "scalar-flat-scratch-insts",596 .name = "scalar-flat-scratch-insts",
597 .description = "Have s_scratch_* flat memory instructions",597 .description = "Have s_scratch_* flat memory instructions",
598 .subfeatures = &[_]*const Feature {598 .dependencies = &[_]*const Feature {
599 },599 },
600};600};
601601
602pub const feature_scalarStores = Feature{602pub const feature_scalarStores = Feature{
603 .name = "scalar-stores",603 .name = "scalar-stores",
604 .description = "Has store scalar memory instructions",604 .description = "Has store scalar memory instructions",
605 .subfeatures = &[_]*const Feature {605 .dependencies = &[_]*const Feature {
606 },606 },
607};607};
608608
609pub const feature_trapHandler = Feature{609pub const feature_trapHandler = Feature{
610 .name = "trap-handler",610 .name = "trap-handler",
611 .description = "Trap handler support",611 .description = "Trap handler support",
612 .subfeatures = &[_]*const Feature {612 .dependencies = &[_]*const Feature {
613 },613 },
614};614};
615615
616pub const feature_trigReducedRange = Feature{616pub const feature_trigReducedRange = Feature{
617 .name = "trig-reduced-range",617 .name = "trig-reduced-range",
618 .description = "Requires use of fract on arguments to trig instructions",618 .description = "Requires use of fract on arguments to trig instructions",
619 .subfeatures = &[_]*const Feature {619 .dependencies = &[_]*const Feature {
620 },620 },
621};621};
622622
623pub const feature_unalignedBufferAccess = Feature{623pub const feature_unalignedBufferAccess = Feature{
624 .name = "unaligned-buffer-access",624 .name = "unaligned-buffer-access",
625 .description = "Support unaligned global loads and stores",625 .description = "Support unaligned global loads and stores",
626 .subfeatures = &[_]*const Feature {626 .dependencies = &[_]*const Feature {
627 },627 },
628};628};
629629
630pub const feature_unalignedScratchAccess = Feature{630pub const feature_unalignedScratchAccess = Feature{
631 .name = "unaligned-scratch-access",631 .name = "unaligned-scratch-access",
632 .description = "Support unaligned scratch loads and stores",632 .description = "Support unaligned scratch loads and stores",
633 .subfeatures = &[_]*const Feature {633 .dependencies = &[_]*const Feature {
634 },634 },
635};635};
636636
637pub const feature_unpackedD16Vmem = Feature{637pub const feature_unpackedD16Vmem = Feature{
638 .name = "unpacked-d16-vmem",638 .name = "unpacked-d16-vmem",
639 .description = "Has unpacked d16 vmem instructions",639 .description = "Has unpacked d16 vmem instructions",
640 .subfeatures = &[_]*const Feature {640 .dependencies = &[_]*const Feature {
641 },641 },
642};642};
643643
644pub const feature_vgprIndexMode = Feature{644pub const feature_vgprIndexMode = Feature{
645 .name = "vgpr-index-mode",645 .name = "vgpr-index-mode",
646 .description = "Has VGPR mode register indexing",646 .description = "Has VGPR mode register indexing",
647 .subfeatures = &[_]*const Feature {647 .dependencies = &[_]*const Feature {
648 },648 },
649};649};
650650
651pub const feature_vmemToScalarWriteHazard = Feature{651pub const feature_vmemToScalarWriteHazard = Feature{
652 .name = "vmem-to-scalar-write-hazard",652 .name = "vmem-to-scalar-write-hazard",
653 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",653 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
654 .subfeatures = &[_]*const Feature {654 .dependencies = &[_]*const Feature {
655 },655 },
656};656};
657657
658pub const feature_vop3Literal = Feature{658pub const feature_vop3Literal = Feature{
659 .name = "vop3-literal",659 .name = "vop3-literal",
660 .description = "Can use one literal in VOP3",660 .description = "Can use one literal in VOP3",
661 .subfeatures = &[_]*const Feature {661 .dependencies = &[_]*const Feature {
662 },662 },
663};663};
664664
665pub const feature_vop3p = Feature{665pub const feature_vop3p = Feature{
666 .name = "vop3p",666 .name = "vop3p",
667 .description = "Has VOP3P packed instructions",667 .description = "Has VOP3P packed instructions",
668 .subfeatures = &[_]*const Feature {668 .dependencies = &[_]*const Feature {
669 },669 },
670};670};
671671
672pub const feature_vcmpxExecWarHazard = Feature{672pub const feature_vcmpxExecWarHazard = Feature{
673 .name = "vcmpx-exec-war-hazard",673 .name = "vcmpx-exec-war-hazard",
674 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",674 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
675 .subfeatures = &[_]*const Feature {675 .dependencies = &[_]*const Feature {
676 },676 },
677};677};
678678
679pub const feature_vcmpxPermlaneHazard = Feature{679pub const feature_vcmpxPermlaneHazard = Feature{
680 .name = "vcmpx-permlane-hazard",680 .name = "vcmpx-permlane-hazard",
681 .description = "TODO: describe me",681 .description = "TODO: describe me",
682 .subfeatures = &[_]*const Feature {682 .dependencies = &[_]*const Feature {
683 },683 },
684};684};
685685
686pub const feature_vscnt = Feature{686pub const feature_vscnt = Feature{
687 .name = "vscnt",687 .name = "vscnt",
688 .description = "Has separate store vscnt counter",688 .description = "Has separate store vscnt counter",
689 .subfeatures = &[_]*const Feature {689 .dependencies = &[_]*const Feature {
690 },690 },
691};691};
692692
693pub const feature_wavefrontsize16 = Feature{693pub const feature_wavefrontsize16 = Feature{
694 .name = "wavefrontsize16",694 .name = "wavefrontsize16",
695 .description = "The number of threads per wavefront",695 .description = "The number of threads per wavefront",
696 .subfeatures = &[_]*const Feature {696 .dependencies = &[_]*const Feature {
697 },697 },
698};698};
699699
700pub const feature_wavefrontsize32 = Feature{700pub const feature_wavefrontsize32 = Feature{
701 .name = "wavefrontsize32",701 .name = "wavefrontsize32",
702 .description = "The number of threads per wavefront",702 .description = "The number of threads per wavefront",
703 .subfeatures = &[_]*const Feature {703 .dependencies = &[_]*const Feature {
704 },704 },
705};705};
706706
707pub const feature_wavefrontsize64 = Feature{707pub const feature_wavefrontsize64 = Feature{
708 .name = "wavefrontsize64",708 .name = "wavefrontsize64",
709 .description = "The number of threads per wavefront",709 .description = "The number of threads per wavefront",
710 .subfeatures = &[_]*const Feature {710 .dependencies = &[_]*const Feature {
711 },711 },
712};712};
713713
714pub const feature_xnack = Feature{714pub const feature_xnack = Feature{
715 .name = "xnack",715 .name = "xnack",
716 .description = "Enable XNACK support",716 .description = "Enable XNACK support",
717 .subfeatures = &[_]*const Feature {717 .dependencies = &[_]*const Feature {
718 },718 },
719};719};
720720
721pub const feature_halfRate64Ops = Feature{721pub const feature_halfRate64Ops = Feature{
722 .name = "half-rate-64-ops",722 .name = "half-rate-64-ops",
723 .description = "Most fp64 instructions are half rate instead of quarter",723 .description = "Most fp64 instructions are half rate instead of quarter",
724 .subfeatures = &[_]*const Feature {724 .dependencies = &[_]*const Feature {
725 },725 },
726};726};
727727
...@@ -834,53 +834,53 @@ pub const features = &[_]*const Feature {...@@ -834,53 +834,53 @@ pub const features = &[_]*const Feature {
834pub const cpu_bonaire = Cpu{834pub const cpu_bonaire = Cpu{
835 .name = "bonaire",835 .name = "bonaire",
836 .llvm_name = "bonaire",836 .llvm_name = "bonaire",
837 .subfeatures = &[_]*const Feature {837 .dependencies = &[_]*const Feature {
838 &feature_codeObjectV3,838 &feature_codeObjectV3,
839 &feature_noXnackSupport,839 &feature_noXnackSupport,
840 &feature_ldsbankcount32,840 &feature_ldsbankcount32,
841 &feature_noSramEccSupport,
842 &feature_flatAddressSpace,841 &feature_flatAddressSpace,
842 &feature_fp64,
843 &feature_mimgR128,843 &feature_mimgR128,
844 &feature_trigReducedRange,
845 &feature_gfx7Gfx8Gfx9Insts,844 &feature_gfx7Gfx8Gfx9Insts,
846 &feature_ciInsts,
847 &feature_wavefrontsize64,
848 &feature_fp64,
849 &feature_movrel,845 &feature_movrel,
850 &feature_localmemorysize65536,846 &feature_localmemorysize65536,
847 &feature_ciInsts,
848 &feature_noSramEccSupport,
849 &feature_wavefrontsize64,
850 &feature_trigReducedRange,
851 },851 },
852};852};
853853
854pub const cpu_carrizo = Cpu{854pub const cpu_carrizo = Cpu{
855 .name = "carrizo",855 .name = "carrizo",
856 .llvm_name = "carrizo",856 .llvm_name = "carrizo",
857 .subfeatures = &[_]*const Feature {857 .dependencies = &[_]*const Feature {
858 &feature_codeObjectV3,858 &feature_codeObjectV3,
859 &feature_fastFmaf,859 &feature_fastFmaf,
860 &feature_ldsbankcount32,860 &feature_ldsbankcount32,
861 &feature_unpackedD16Vmem,861 &feature_unpackedD16Vmem,
862 &feature_fp64,
863 &feature_sMemrealtime,
864 &feature_BitInsts16,
865 &feature_wavefrontsize64,
866 &feature_sdwa,
867 &feature_flatAddressSpace,
868 &feature_sdwaMav,
862 &feature_mimgR128,869 &feature_mimgR128,
863 &feature_inv2piInlineImm,
864 &feature_ciInsts,870 &feature_ciInsts,
871 &feature_noSramEccSupport,
872 &feature_inv2piInlineImm,
865 &feature_vgprIndexMode,873 &feature_vgprIndexMode,
866 &feature_scalarStores,
867 &feature_gcn3Encoding,874 &feature_gcn3Encoding,
868 &feature_fp64,875 &feature_gfx8Insts,
869 &feature_dpp,876 &feature_scalarStores,
870 &feature_trigReducedRange,877 &feature_intClampInsts,
871 &feature_gfx7Gfx8Gfx9Insts,
872 &feature_sMemrealtime,
873 &feature_movrel,878 &feature_movrel,
874 &feature_localmemorysize65536,879 &feature_localmemorysize65536,
875 &feature_noSramEccSupport,
876 &feature_gfx8Insts,
877 &feature_flatAddressSpace,
878 &feature_BitInsts16,
879 &feature_sdwaMav,
880 &feature_sdwa,
881 &feature_sdwaOutModsVopc,880 &feature_sdwaOutModsVopc,
882 &feature_wavefrontsize64,881 &feature_dpp,
883 &feature_intClampInsts,882 &feature_gfx7Gfx8Gfx9Insts,
883 &feature_trigReducedRange,
884 &feature_xnack,884 &feature_xnack,
885 &feature_halfRate64Ops,885 &feature_halfRate64Ops,
886 },886 },
...@@ -889,40 +889,40 @@ pub const cpu_carrizo = Cpu{...@@ -889,40 +889,40 @@ pub const cpu_carrizo = Cpu{
889pub const cpu_fiji = Cpu{889pub const cpu_fiji = Cpu{
890 .name = "fiji",890 .name = "fiji",
891 .llvm_name = "fiji",891 .llvm_name = "fiji",
892 .subfeatures = &[_]*const Feature {892 .dependencies = &[_]*const Feature {
893 &feature_codeObjectV3,893 &feature_codeObjectV3,
894 &feature_noXnackSupport,894 &feature_noXnackSupport,
895 &feature_ldsbankcount32,895 &feature_ldsbankcount32,
896 &feature_unpackedD16Vmem,896 &feature_unpackedD16Vmem,
897 &feature_fp64,
898 &feature_sMemrealtime,
899 &feature_BitInsts16,
900 &feature_wavefrontsize64,
901 &feature_sdwa,
902 &feature_flatAddressSpace,
903 &feature_sdwaMav,
897 &feature_mimgR128,904 &feature_mimgR128,
898 &feature_inv2piInlineImm,
899 &feature_ciInsts,905 &feature_ciInsts,
906 &feature_noSramEccSupport,
907 &feature_inv2piInlineImm,
900 &feature_vgprIndexMode,908 &feature_vgprIndexMode,
901 &feature_scalarStores,
902 &feature_gcn3Encoding,909 &feature_gcn3Encoding,
903 &feature_fp64,910 &feature_gfx8Insts,
904 &feature_dpp,911 &feature_scalarStores,
905 &feature_trigReducedRange,912 &feature_intClampInsts,
906 &feature_gfx7Gfx8Gfx9Insts,
907 &feature_sMemrealtime,
908 &feature_movrel,913 &feature_movrel,
909 &feature_localmemorysize65536,914 &feature_localmemorysize65536,
910 &feature_noSramEccSupport,
911 &feature_gfx8Insts,
912 &feature_flatAddressSpace,
913 &feature_BitInsts16,
914 &feature_sdwaMav,
915 &feature_sdwa,
916 &feature_sdwaOutModsVopc,915 &feature_sdwaOutModsVopc,
917 &feature_wavefrontsize64,916 &feature_dpp,
918 &feature_intClampInsts,917 &feature_gfx7Gfx8Gfx9Insts,
918 &feature_trigReducedRange,
919 },919 },
920};920};
921921
922pub const cpu_generic = Cpu{922pub const cpu_generic = Cpu{
923 .name = "generic",923 .name = "generic",
924 .llvm_name = "generic",924 .llvm_name = "generic",
925 .subfeatures = &[_]*const Feature {925 .dependencies = &[_]*const Feature {
926 &feature_wavefrontsize64,926 &feature_wavefrontsize64,
927 },927 },
928};928};
...@@ -930,7 +930,7 @@ pub const cpu_generic = Cpu{...@@ -930,7 +930,7 @@ pub const cpu_generic = Cpu{
930pub const cpu_genericHsa = Cpu{930pub const cpu_genericHsa = Cpu{
931 .name = "generic-hsa",931 .name = "generic-hsa",
932 .llvm_name = "generic-hsa",932 .llvm_name = "generic-hsa",
933 .subfeatures = &[_]*const Feature {933 .dependencies = &[_]*const Feature {
934 &feature_flatAddressSpace,934 &feature_flatAddressSpace,
935 &feature_wavefrontsize64,935 &feature_wavefrontsize64,
936 },936 },
...@@ -939,45 +939,45 @@ pub const cpu_genericHsa = Cpu{...@@ -939,45 +939,45 @@ pub const cpu_genericHsa = Cpu{
939pub const cpu_gfx1010 = Cpu{939pub const cpu_gfx1010 = Cpu{
940 .name = "gfx1010",940 .name = "gfx1010",
941 .llvm_name = "gfx1010",941 .llvm_name = "gfx1010",
942 .subfeatures = &[_]*const Feature {942 .dependencies = &[_]*const Feature {
943 &feature_codeObjectV3,943 &feature_codeObjectV3,
944 &feature_dlInsts,944 &feature_dlInsts,
945 &feature_noXnackSupport,945 &feature_noXnackSupport,
946 &feature_flatSegmentOffsetBug,946 &feature_flatSegmentOffsetBug,
947 &feature_mimgR128,947 &feature_noSdstCmpx,
948 &feature_flatScratchInsts,
949 &feature_fp64,
950 &feature_sMemrealtime,
948 &feature_addNoCarryInsts,951 &feature_addNoCarryInsts,
949 &feature_dpp8,952 &feature_vop3p,
953 &feature_fastFmaf,
954 &feature_BitInsts16,
955 &feature_sdwa,
950 &feature_gfx9Insts,956 &feature_gfx9Insts,
957 &feature_flatAddressSpace,
958 &feature_vop3Literal,
959 &feature_apertureRegs,
960 &feature_mimgR128,
961 &feature_sdwaScalar,
951 &feature_ciInsts,962 &feature_ciInsts,
963 &feature_noSramEccSupport,
952 &feature_inv2piInlineImm,964 &feature_inv2piInlineImm,
953 &feature_fastFmaf,965 &feature_gfx8Insts,
954 &feature_registerBanking,966 &feature_intClampInsts,
955 &feature_apertureRegs,
956 &feature_flatGlobalInsts,
957 &feature_fp64,
958 &feature_vscnt,967 &feature_vscnt,
959 &feature_flatScratchInsts,
960 &feature_dpp,
961 &feature_sMemrealtime,
962 &feature_vop3p,
963 &feature_flatInstOffsets,
964 &feature_sdwaScalar,
965 &feature_sdwaSdst,
966 &feature_movrel,968 &feature_movrel,
967 &feature_localmemorysize65536,969 &feature_localmemorysize65536,
968 &feature_noSdstCmpx,
969 &feature_pkFmacF16Inst,
970 &feature_noSramEccSupport,
971 &feature_vop3Literal,
972 &feature_gfx8Insts,
973 &feature_flatAddressSpace,
974 &feature_BitInsts16,
975 &feature_gfx10Insts,970 &feature_gfx10Insts,
976 &feature_sdwa,971 &feature_flatGlobalInsts,
977 &feature_intClampInsts,
978 &feature_noDataDepHazard,
979 &feature_fmaMixInsts,
980 &feature_sdwaOmod,972 &feature_sdwaOmod,
973 &feature_dpp8,
974 &feature_pkFmacF16Inst,
975 &feature_dpp,
976 &feature_sdwaSdst,
977 &feature_flatInstOffsets,
978 &feature_fmaMixInsts,
979 &feature_registerBanking,
980 &feature_noDataDepHazard,
981 &feature_instFwdPrefetchBug,981 &feature_instFwdPrefetchBug,
982 &feature_ldsbankcount32,982 &feature_ldsbankcount32,
983 &feature_ldsBranchVmemWarHazard,983 &feature_ldsBranchVmemWarHazard,
...@@ -999,7 +999,7 @@ pub const cpu_gfx1010 = Cpu{...@@ -999,7 +999,7 @@ pub const cpu_gfx1010 = Cpu{
999pub const cpu_gfx1011 = Cpu{999pub const cpu_gfx1011 = Cpu{
1000 .name = "gfx1011",1000 .name = "gfx1011",
1001 .llvm_name = "gfx1011",1001 .llvm_name = "gfx1011",
1002 .subfeatures = &[_]*const Feature {1002 .dependencies = &[_]*const Feature {
1003 &feature_codeObjectV3,1003 &feature_codeObjectV3,
1004 &feature_dlInsts,1004 &feature_dlInsts,
1005 &feature_noXnackSupport,1005 &feature_noXnackSupport,
...@@ -1008,40 +1008,40 @@ pub const cpu_gfx1011 = Cpu{...@@ -1008,40 +1008,40 @@ pub const cpu_gfx1011 = Cpu{
1008 &feature_dot5Insts,1008 &feature_dot5Insts,
1009 &feature_dot6Insts,1009 &feature_dot6Insts,
1010 &feature_flatSegmentOffsetBug,1010 &feature_flatSegmentOffsetBug,
1011 &feature_mimgR128,1011 &feature_noSdstCmpx,
1012 &feature_flatScratchInsts,
1013 &feature_fp64,
1014 &feature_sMemrealtime,
1012 &feature_addNoCarryInsts,1015 &feature_addNoCarryInsts,
1013 &feature_dpp8,1016 &feature_vop3p,
1017 &feature_fastFmaf,
1018 &feature_BitInsts16,
1019 &feature_sdwa,
1014 &feature_gfx9Insts,1020 &feature_gfx9Insts,
1021 &feature_flatAddressSpace,
1022 &feature_vop3Literal,
1023 &feature_apertureRegs,
1024 &feature_mimgR128,
1025 &feature_sdwaScalar,
1015 &feature_ciInsts,1026 &feature_ciInsts,
1027 &feature_noSramEccSupport,
1016 &feature_inv2piInlineImm,1028 &feature_inv2piInlineImm,
1017 &feature_fastFmaf,1029 &feature_gfx8Insts,
1018 &feature_registerBanking,1030 &feature_intClampInsts,
1019 &feature_apertureRegs,
1020 &feature_flatGlobalInsts,
1021 &feature_fp64,
1022 &feature_vscnt,1031 &feature_vscnt,
1023 &feature_flatScratchInsts,
1024 &feature_dpp,
1025 &feature_sMemrealtime,
1026 &feature_vop3p,
1027 &feature_flatInstOffsets,
1028 &feature_sdwaScalar,
1029 &feature_sdwaSdst,
1030 &feature_movrel,1032 &feature_movrel,
1031 &feature_localmemorysize65536,1033 &feature_localmemorysize65536,
1032 &feature_noSdstCmpx,
1033 &feature_pkFmacF16Inst,
1034 &feature_noSramEccSupport,
1035 &feature_vop3Literal,
1036 &feature_gfx8Insts,
1037 &feature_flatAddressSpace,
1038 &feature_BitInsts16,
1039 &feature_gfx10Insts,1034 &feature_gfx10Insts,
1040 &feature_sdwa,1035 &feature_flatGlobalInsts,
1041 &feature_intClampInsts,
1042 &feature_noDataDepHazard,
1043 &feature_fmaMixInsts,
1044 &feature_sdwaOmod,1036 &feature_sdwaOmod,
1037 &feature_dpp8,
1038 &feature_pkFmacF16Inst,
1039 &feature_dpp,
1040 &feature_sdwaSdst,
1041 &feature_flatInstOffsets,
1042 &feature_fmaMixInsts,
1043 &feature_registerBanking,
1044 &feature_noDataDepHazard,
1045 &feature_instFwdPrefetchBug,1045 &feature_instFwdPrefetchBug,
1046 &feature_ldsbankcount32,1046 &feature_ldsbankcount32,
1047 &feature_ldsBranchVmemWarHazard,1047 &feature_ldsBranchVmemWarHazard,
...@@ -1062,7 +1062,7 @@ pub const cpu_gfx1011 = Cpu{...@@ -1062,7 +1062,7 @@ pub const cpu_gfx1011 = Cpu{
1062pub const cpu_gfx1012 = Cpu{1062pub const cpu_gfx1012 = Cpu{
1063 .name = "gfx1012",1063 .name = "gfx1012",
1064 .llvm_name = "gfx1012",1064 .llvm_name = "gfx1012",
1065 .subfeatures = &[_]*const Feature {1065 .dependencies = &[_]*const Feature {
1066 &feature_codeObjectV3,1066 &feature_codeObjectV3,
1067 &feature_dlInsts,1067 &feature_dlInsts,
1068 &feature_noXnackSupport,1068 &feature_noXnackSupport,
...@@ -1071,40 +1071,40 @@ pub const cpu_gfx1012 = Cpu{...@@ -1071,40 +1071,40 @@ pub const cpu_gfx1012 = Cpu{
1071 &feature_dot5Insts,1071 &feature_dot5Insts,
1072 &feature_dot6Insts,1072 &feature_dot6Insts,
1073 &feature_flatSegmentOffsetBug,1073 &feature_flatSegmentOffsetBug,
1074 &feature_mimgR128,1074 &feature_noSdstCmpx,
1075 &feature_flatScratchInsts,
1076 &feature_fp64,
1077 &feature_sMemrealtime,
1075 &feature_addNoCarryInsts,1078 &feature_addNoCarryInsts,
1076 &feature_dpp8,1079 &feature_vop3p,
1080 &feature_fastFmaf,
1081 &feature_BitInsts16,
1082 &feature_sdwa,
1077 &feature_gfx9Insts,1083 &feature_gfx9Insts,
1084 &feature_flatAddressSpace,
1085 &feature_vop3Literal,
1086 &feature_apertureRegs,
1087 &feature_mimgR128,
1088 &feature_sdwaScalar,
1078 &feature_ciInsts,1089 &feature_ciInsts,
1090 &feature_noSramEccSupport,
1079 &feature_inv2piInlineImm,1091 &feature_inv2piInlineImm,
1080 &feature_fastFmaf,1092 &feature_gfx8Insts,
1081 &feature_registerBanking,1093 &feature_intClampInsts,
1082 &feature_apertureRegs,
1083 &feature_flatGlobalInsts,
1084 &feature_fp64,
1085 &feature_vscnt,1094 &feature_vscnt,
1086 &feature_flatScratchInsts,
1087 &feature_dpp,
1088 &feature_sMemrealtime,
1089 &feature_vop3p,
1090 &feature_flatInstOffsets,
1091 &feature_sdwaScalar,
1092 &feature_sdwaSdst,
1093 &feature_movrel,1095 &feature_movrel,
1094 &feature_localmemorysize65536,1096 &feature_localmemorysize65536,
1095 &feature_noSdstCmpx,
1096 &feature_pkFmacF16Inst,
1097 &feature_noSramEccSupport,
1098 &feature_vop3Literal,
1099 &feature_gfx8Insts,
1100 &feature_flatAddressSpace,
1101 &feature_BitInsts16,
1102 &feature_gfx10Insts,1097 &feature_gfx10Insts,
1103 &feature_sdwa,1098 &feature_flatGlobalInsts,
1104 &feature_intClampInsts,
1105 &feature_noDataDepHazard,
1106 &feature_fmaMixInsts,
1107 &feature_sdwaOmod,1099 &feature_sdwaOmod,
1100 &feature_dpp8,
1101 &feature_pkFmacF16Inst,
1102 &feature_dpp,
1103 &feature_sdwaSdst,
1104 &feature_flatInstOffsets,
1105 &feature_fmaMixInsts,
1106 &feature_registerBanking,
1107 &feature_noDataDepHazard,
1108 &feature_instFwdPrefetchBug,1108 &feature_instFwdPrefetchBug,
1109 &feature_ldsbankcount32,1109 &feature_ldsbankcount32,
1110 &feature_ldsBranchVmemWarHazard,1110 &feature_ldsBranchVmemWarHazard,
...@@ -1126,18 +1126,18 @@ pub const cpu_gfx1012 = Cpu{...@@ -1126,18 +1126,18 @@ pub const cpu_gfx1012 = Cpu{
1126pub const cpu_gfx600 = Cpu{1126pub const cpu_gfx600 = Cpu{
1127 .name = "gfx600",1127 .name = "gfx600",
1128 .llvm_name = "gfx600",1128 .llvm_name = "gfx600",
1129 .subfeatures = &[_]*const Feature {1129 .dependencies = &[_]*const Feature {
1130 &feature_codeObjectV3,1130 &feature_codeObjectV3,
1131 &feature_noXnackSupport,1131 &feature_noXnackSupport,
1132 &feature_fastFmaf,1132 &feature_fastFmaf,
1133 &feature_ldsbankcount32,1133 &feature_ldsbankcount32,
1134 &feature_noSramEccSupport,
1135 &feature_mimgR128,
1136 &feature_trigReducedRange,
1137 &feature_wavefrontsize64,
1138 &feature_localmemorysize32768,1134 &feature_localmemorysize32768,
1139 &feature_fp64,1135 &feature_fp64,
1136 &feature_mimgR128,
1140 &feature_movrel,1137 &feature_movrel,
1138 &feature_noSramEccSupport,
1139 &feature_wavefrontsize64,
1140 &feature_trigReducedRange,
1141 &feature_halfRate64Ops,1141 &feature_halfRate64Ops,
1142 },1142 },
1143};1143};
...@@ -1145,58 +1145,58 @@ pub const cpu_gfx600 = Cpu{...@@ -1145,58 +1145,58 @@ pub const cpu_gfx600 = Cpu{
1145pub const cpu_gfx601 = Cpu{1145pub const cpu_gfx601 = Cpu{
1146 .name = "gfx601",1146 .name = "gfx601",
1147 .llvm_name = "gfx601",1147 .llvm_name = "gfx601",
1148 .subfeatures = &[_]*const Feature {1148 .dependencies = &[_]*const Feature {
1149 &feature_codeObjectV3,1149 &feature_codeObjectV3,
1150 &feature_noXnackSupport,1150 &feature_noXnackSupport,
1151 &feature_ldsbankcount32,1151 &feature_ldsbankcount32,
1152 &feature_noSramEccSupport,
1153 &feature_mimgR128,
1154 &feature_trigReducedRange,
1155 &feature_wavefrontsize64,
1156 &feature_localmemorysize32768,1152 &feature_localmemorysize32768,
1157 &feature_fp64,1153 &feature_fp64,
1154 &feature_mimgR128,
1158 &feature_movrel,1155 &feature_movrel,
1156 &feature_noSramEccSupport,
1157 &feature_wavefrontsize64,
1158 &feature_trigReducedRange,
1159 },1159 },
1160};1160};
11611161
1162pub const cpu_gfx700 = Cpu{1162pub const cpu_gfx700 = Cpu{
1163 .name = "gfx700",1163 .name = "gfx700",
1164 .llvm_name = "gfx700",1164 .llvm_name = "gfx700",
1165 .subfeatures = &[_]*const Feature {1165 .dependencies = &[_]*const Feature {
1166 &feature_codeObjectV3,1166 &feature_codeObjectV3,
1167 &feature_noXnackSupport,1167 &feature_noXnackSupport,
1168 &feature_ldsbankcount32,1168 &feature_ldsbankcount32,
1169 &feature_noSramEccSupport,
1170 &feature_flatAddressSpace,1169 &feature_flatAddressSpace,
1170 &feature_fp64,
1171 &feature_mimgR128,1171 &feature_mimgR128,
1172 &feature_trigReducedRange,
1173 &feature_gfx7Gfx8Gfx9Insts,1172 &feature_gfx7Gfx8Gfx9Insts,
1174 &feature_ciInsts,
1175 &feature_wavefrontsize64,
1176 &feature_fp64,
1177 &feature_movrel,1173 &feature_movrel,
1178 &feature_localmemorysize65536,1174 &feature_localmemorysize65536,
1175 &feature_ciInsts,
1176 &feature_noSramEccSupport,
1177 &feature_wavefrontsize64,
1178 &feature_trigReducedRange,
1179 },1179 },
1180};1180};
11811181
1182pub const cpu_gfx701 = Cpu{1182pub const cpu_gfx701 = Cpu{
1183 .name = "gfx701",1183 .name = "gfx701",
1184 .llvm_name = "gfx701",1184 .llvm_name = "gfx701",
1185 .subfeatures = &[_]*const Feature {1185 .dependencies = &[_]*const Feature {
1186 &feature_codeObjectV3,1186 &feature_codeObjectV3,
1187 &feature_noXnackSupport,1187 &feature_noXnackSupport,
1188 &feature_fastFmaf,1188 &feature_fastFmaf,
1189 &feature_ldsbankcount32,1189 &feature_ldsbankcount32,
1190 &feature_noSramEccSupport,
1191 &feature_flatAddressSpace,1190 &feature_flatAddressSpace,
1191 &feature_fp64,
1192 &feature_mimgR128,1192 &feature_mimgR128,
1193 &feature_trigReducedRange,
1194 &feature_gfx7Gfx8Gfx9Insts,1193 &feature_gfx7Gfx8Gfx9Insts,
1195 &feature_ciInsts,
1196 &feature_wavefrontsize64,
1197 &feature_fp64,
1198 &feature_movrel,1194 &feature_movrel,
1199 &feature_localmemorysize65536,1195 &feature_localmemorysize65536,
1196 &feature_ciInsts,
1197 &feature_noSramEccSupport,
1198 &feature_wavefrontsize64,
1199 &feature_trigReducedRange,
1200 &feature_halfRate64Ops,1200 &feature_halfRate64Ops,
1201 },1201 },
1202};1202};
...@@ -1204,94 +1204,94 @@ pub const cpu_gfx701 = Cpu{...@@ -1204,94 +1204,94 @@ pub const cpu_gfx701 = Cpu{
1204pub const cpu_gfx702 = Cpu{1204pub const cpu_gfx702 = Cpu{
1205 .name = "gfx702",1205 .name = "gfx702",
1206 .llvm_name = "gfx702",1206 .llvm_name = "gfx702",
1207 .subfeatures = &[_]*const Feature {1207 .dependencies = &[_]*const Feature {
1208 &feature_codeObjectV3,1208 &feature_codeObjectV3,
1209 &feature_noXnackSupport,1209 &feature_noXnackSupport,
1210 &feature_fastFmaf,1210 &feature_fastFmaf,
1211 &feature_ldsbankcount16,1211 &feature_ldsbankcount16,
1212 &feature_noSramEccSupport,
1213 &feature_flatAddressSpace,1212 &feature_flatAddressSpace,
1213 &feature_fp64,
1214 &feature_mimgR128,1214 &feature_mimgR128,
1215 &feature_trigReducedRange,
1216 &feature_gfx7Gfx8Gfx9Insts,1215 &feature_gfx7Gfx8Gfx9Insts,
1217 &feature_ciInsts,
1218 &feature_wavefrontsize64,
1219 &feature_fp64,
1220 &feature_movrel,1216 &feature_movrel,
1221 &feature_localmemorysize65536,1217 &feature_localmemorysize65536,
1218 &feature_ciInsts,
1219 &feature_noSramEccSupport,
1220 &feature_wavefrontsize64,
1221 &feature_trigReducedRange,
1222 },1222 },
1223};1223};
12241224
1225pub const cpu_gfx703 = Cpu{1225pub const cpu_gfx703 = Cpu{
1226 .name = "gfx703",1226 .name = "gfx703",
1227 .llvm_name = "gfx703",1227 .llvm_name = "gfx703",
1228 .subfeatures = &[_]*const Feature {1228 .dependencies = &[_]*const Feature {
1229 &feature_codeObjectV3,1229 &feature_codeObjectV3,
1230 &feature_noXnackSupport,1230 &feature_noXnackSupport,
1231 &feature_ldsbankcount16,1231 &feature_ldsbankcount16,
1232 &feature_noSramEccSupport,
1233 &feature_flatAddressSpace,1232 &feature_flatAddressSpace,
1233 &feature_fp64,
1234 &feature_mimgR128,1234 &feature_mimgR128,
1235 &feature_trigReducedRange,
1236 &feature_gfx7Gfx8Gfx9Insts,1235 &feature_gfx7Gfx8Gfx9Insts,
1237 &feature_ciInsts,
1238 &feature_wavefrontsize64,
1239 &feature_fp64,
1240 &feature_movrel,1236 &feature_movrel,
1241 &feature_localmemorysize65536,1237 &feature_localmemorysize65536,
1238 &feature_ciInsts,
1239 &feature_noSramEccSupport,
1240 &feature_wavefrontsize64,
1241 &feature_trigReducedRange,
1242 },1242 },
1243};1243};
12441244
1245pub const cpu_gfx704 = Cpu{1245pub const cpu_gfx704 = Cpu{
1246 .name = "gfx704",1246 .name = "gfx704",
1247 .llvm_name = "gfx704",1247 .llvm_name = "gfx704",
1248 .subfeatures = &[_]*const Feature {1248 .dependencies = &[_]*const Feature {
1249 &feature_codeObjectV3,1249 &feature_codeObjectV3,
1250 &feature_noXnackSupport,1250 &feature_noXnackSupport,
1251 &feature_ldsbankcount32,1251 &feature_ldsbankcount32,
1252 &feature_noSramEccSupport,
1253 &feature_flatAddressSpace,1252 &feature_flatAddressSpace,
1253 &feature_fp64,
1254 &feature_mimgR128,1254 &feature_mimgR128,
1255 &feature_trigReducedRange,
1256 &feature_gfx7Gfx8Gfx9Insts,1255 &feature_gfx7Gfx8Gfx9Insts,
1257 &feature_ciInsts,
1258 &feature_wavefrontsize64,
1259 &feature_fp64,
1260 &feature_movrel,1256 &feature_movrel,
1261 &feature_localmemorysize65536,1257 &feature_localmemorysize65536,
1258 &feature_ciInsts,
1259 &feature_noSramEccSupport,
1260 &feature_wavefrontsize64,
1261 &feature_trigReducedRange,
1262 },1262 },
1263};1263};
12641264
1265pub const cpu_gfx801 = Cpu{1265pub const cpu_gfx801 = Cpu{
1266 .name = "gfx801",1266 .name = "gfx801",
1267 .llvm_name = "gfx801",1267 .llvm_name = "gfx801",
1268 .subfeatures = &[_]*const Feature {1268 .dependencies = &[_]*const Feature {
1269 &feature_codeObjectV3,1269 &feature_codeObjectV3,
1270 &feature_fastFmaf,1270 &feature_fastFmaf,
1271 &feature_ldsbankcount32,1271 &feature_ldsbankcount32,
1272 &feature_unpackedD16Vmem,1272 &feature_unpackedD16Vmem,
1273 &feature_fp64,
1274 &feature_sMemrealtime,
1275 &feature_BitInsts16,
1276 &feature_wavefrontsize64,
1277 &feature_sdwa,
1278 &feature_flatAddressSpace,
1279 &feature_sdwaMav,
1273 &feature_mimgR128,1280 &feature_mimgR128,
1274 &feature_inv2piInlineImm,
1275 &feature_ciInsts,1281 &feature_ciInsts,
1282 &feature_noSramEccSupport,
1283 &feature_inv2piInlineImm,
1276 &feature_vgprIndexMode,1284 &feature_vgprIndexMode,
1277 &feature_scalarStores,
1278 &feature_gcn3Encoding,1285 &feature_gcn3Encoding,
1279 &feature_fp64,1286 &feature_gfx8Insts,
1280 &feature_dpp,1287 &feature_scalarStores,
1281 &feature_trigReducedRange,1288 &feature_intClampInsts,
1282 &feature_gfx7Gfx8Gfx9Insts,
1283 &feature_sMemrealtime,
1284 &feature_movrel,1289 &feature_movrel,
1285 &feature_localmemorysize65536,1290 &feature_localmemorysize65536,
1286 &feature_noSramEccSupport,
1287 &feature_gfx8Insts,
1288 &feature_flatAddressSpace,
1289 &feature_BitInsts16,
1290 &feature_sdwaMav,
1291 &feature_sdwa,
1292 &feature_sdwaOutModsVopc,1291 &feature_sdwaOutModsVopc,
1293 &feature_wavefrontsize64,1292 &feature_dpp,
1294 &feature_intClampInsts,1293 &feature_gfx7Gfx8Gfx9Insts,
1294 &feature_trigReducedRange,
1295 &feature_xnack,1295 &feature_xnack,
1296 &feature_halfRate64Ops,1296 &feature_halfRate64Ops,
1297 },1297 },
...@@ -1300,98 +1300,98 @@ pub const cpu_gfx801 = Cpu{...@@ -1300,98 +1300,98 @@ pub const cpu_gfx801 = Cpu{
1300pub const cpu_gfx802 = Cpu{1300pub const cpu_gfx802 = Cpu{
1301 .name = "gfx802",1301 .name = "gfx802",
1302 .llvm_name = "gfx802",1302 .llvm_name = "gfx802",
1303 .subfeatures = &[_]*const Feature {1303 .dependencies = &[_]*const Feature {
1304 &feature_codeObjectV3,1304 &feature_codeObjectV3,
1305 &feature_noXnackSupport,1305 &feature_noXnackSupport,
1306 &feature_ldsbankcount32,1306 &feature_ldsbankcount32,
1307 &feature_sgprInitBug,1307 &feature_sgprInitBug,
1308 &feature_unpackedD16Vmem,1308 &feature_unpackedD16Vmem,
1309 &feature_fp64,
1310 &feature_sMemrealtime,
1311 &feature_BitInsts16,
1312 &feature_wavefrontsize64,
1313 &feature_sdwa,
1314 &feature_flatAddressSpace,
1315 &feature_sdwaMav,
1309 &feature_mimgR128,1316 &feature_mimgR128,
1310 &feature_inv2piInlineImm,
1311 &feature_ciInsts,1317 &feature_ciInsts,
1318 &feature_noSramEccSupport,
1319 &feature_inv2piInlineImm,
1312 &feature_vgprIndexMode,1320 &feature_vgprIndexMode,
1313 &feature_scalarStores,
1314 &feature_gcn3Encoding,1321 &feature_gcn3Encoding,
1315 &feature_fp64,1322 &feature_gfx8Insts,
1316 &feature_dpp,1323 &feature_scalarStores,
1317 &feature_trigReducedRange,1324 &feature_intClampInsts,
1318 &feature_gfx7Gfx8Gfx9Insts,
1319 &feature_sMemrealtime,
1320 &feature_movrel,1325 &feature_movrel,
1321 &feature_localmemorysize65536,1326 &feature_localmemorysize65536,
1322 &feature_noSramEccSupport,
1323 &feature_gfx8Insts,
1324 &feature_flatAddressSpace,
1325 &feature_BitInsts16,
1326 &feature_sdwaMav,
1327 &feature_sdwa,
1328 &feature_sdwaOutModsVopc,1327 &feature_sdwaOutModsVopc,
1329 &feature_wavefrontsize64,1328 &feature_dpp,
1330 &feature_intClampInsts,1329 &feature_gfx7Gfx8Gfx9Insts,
1330 &feature_trigReducedRange,
1331 },1331 },
1332};1332};
13331333
1334pub const cpu_gfx803 = Cpu{1334pub const cpu_gfx803 = Cpu{
1335 .name = "gfx803",1335 .name = "gfx803",
1336 .llvm_name = "gfx803",1336 .llvm_name = "gfx803",
1337 .subfeatures = &[_]*const Feature {1337 .dependencies = &[_]*const Feature {
1338 &feature_codeObjectV3,1338 &feature_codeObjectV3,
1339 &feature_noXnackSupport,1339 &feature_noXnackSupport,
1340 &feature_ldsbankcount32,1340 &feature_ldsbankcount32,
1341 &feature_unpackedD16Vmem,1341 &feature_unpackedD16Vmem,
1342 &feature_fp64,
1343 &feature_sMemrealtime,
1344 &feature_BitInsts16,
1345 &feature_wavefrontsize64,
1346 &feature_sdwa,
1347 &feature_flatAddressSpace,
1348 &feature_sdwaMav,
1342 &feature_mimgR128,1349 &feature_mimgR128,
1343 &feature_inv2piInlineImm,
1344 &feature_ciInsts,1350 &feature_ciInsts,
1351 &feature_noSramEccSupport,
1352 &feature_inv2piInlineImm,
1345 &feature_vgprIndexMode,1353 &feature_vgprIndexMode,
1346 &feature_scalarStores,
1347 &feature_gcn3Encoding,1354 &feature_gcn3Encoding,
1348 &feature_fp64,1355 &feature_gfx8Insts,
1349 &feature_dpp,1356 &feature_scalarStores,
1350 &feature_trigReducedRange,1357 &feature_intClampInsts,
1351 &feature_gfx7Gfx8Gfx9Insts,
1352 &feature_sMemrealtime,
1353 &feature_movrel,1358 &feature_movrel,
1354 &feature_localmemorysize65536,1359 &feature_localmemorysize65536,
1355 &feature_noSramEccSupport,
1356 &feature_gfx8Insts,
1357 &feature_flatAddressSpace,
1358 &feature_BitInsts16,
1359 &feature_sdwaMav,
1360 &feature_sdwa,
1361 &feature_sdwaOutModsVopc,1360 &feature_sdwaOutModsVopc,
1362 &feature_wavefrontsize64,1361 &feature_dpp,
1363 &feature_intClampInsts,1362 &feature_gfx7Gfx8Gfx9Insts,
1363 &feature_trigReducedRange,
1364 },1364 },
1365};1365};
13661366
1367pub const cpu_gfx810 = Cpu{1367pub const cpu_gfx810 = Cpu{
1368 .name = "gfx810",1368 .name = "gfx810",
1369 .llvm_name = "gfx810",1369 .llvm_name = "gfx810",
1370 .subfeatures = &[_]*const Feature {1370 .dependencies = &[_]*const Feature {
1371 &feature_codeObjectV3,1371 &feature_codeObjectV3,
1372 &feature_ldsbankcount16,1372 &feature_ldsbankcount16,
1373 &feature_fp64,
1374 &feature_sMemrealtime,
1375 &feature_BitInsts16,
1376 &feature_wavefrontsize64,
1377 &feature_sdwa,
1378 &feature_flatAddressSpace,
1379 &feature_sdwaMav,
1373 &feature_mimgR128,1380 &feature_mimgR128,
1374 &feature_inv2piInlineImm,
1375 &feature_ciInsts,1381 &feature_ciInsts,
1382 &feature_noSramEccSupport,
1383 &feature_inv2piInlineImm,
1376 &feature_vgprIndexMode,1384 &feature_vgprIndexMode,
1377 &feature_scalarStores,
1378 &feature_gcn3Encoding,1385 &feature_gcn3Encoding,
1379 &feature_fp64,1386 &feature_gfx8Insts,
1380 &feature_dpp,1387 &feature_scalarStores,
1381 &feature_trigReducedRange,1388 &feature_intClampInsts,
1382 &feature_gfx7Gfx8Gfx9Insts,
1383 &feature_sMemrealtime,
1384 &feature_movrel,1389 &feature_movrel,
1385 &feature_localmemorysize65536,1390 &feature_localmemorysize65536,
1386 &feature_noSramEccSupport,
1387 &feature_gfx8Insts,
1388 &feature_flatAddressSpace,
1389 &feature_BitInsts16,
1390 &feature_sdwaMav,
1391 &feature_sdwa,
1392 &feature_sdwaOutModsVopc,1391 &feature_sdwaOutModsVopc,
1393 &feature_wavefrontsize64,1392 &feature_dpp,
1394 &feature_intClampInsts,1393 &feature_gfx7Gfx8Gfx9Insts,
1394 &feature_trigReducedRange,
1395 &feature_xnack,1395 &feature_xnack,
1396 },1396 },
1397};1397};
...@@ -1399,40 +1399,40 @@ pub const cpu_gfx810 = Cpu{...@@ -1399,40 +1399,40 @@ pub const cpu_gfx810 = Cpu{
1399pub const cpu_gfx900 = Cpu{1399pub const cpu_gfx900 = Cpu{
1400 .name = "gfx900",1400 .name = "gfx900",
1401 .llvm_name = "gfx900",1401 .llvm_name = "gfx900",
1402 .subfeatures = &[_]*const Feature {1402 .dependencies = &[_]*const Feature {
1403 &feature_codeObjectV3,1403 &feature_codeObjectV3,
1404 &feature_noSramEccSupport,1404 &feature_noSramEccSupport,
1405 &feature_noXnackSupport,1405 &feature_noXnackSupport,
1406 &feature_flatScratchInsts,
1407 &feature_fp64,
1406 &feature_r128A16,1408 &feature_r128A16,
1409 &feature_sMemrealtime,
1407 &feature_addNoCarryInsts,1410 &feature_addNoCarryInsts,
1408 &feature_inv2piInlineImm,1411 &feature_vop3p,
1412 &feature_fastFmaf,
1413 &feature_BitInsts16,
1414 &feature_wavefrontsize64,
1415 &feature_sdwa,
1409 &feature_gfx9Insts,1416 &feature_gfx9Insts,
1417 &feature_flatAddressSpace,
1418 &feature_apertureRegs,
1419 &feature_sdwaScalar,
1410 &feature_ciInsts,1420 &feature_ciInsts,
1421 &feature_scalarAtomics,
1422 &feature_scalarFlatScratchInsts,
1423 &feature_inv2piInlineImm,
1411 &feature_vgprIndexMode,1424 &feature_vgprIndexMode,
1412 &feature_fastFmaf,
1413 &feature_scalarStores,
1414 &feature_gcn3Encoding,1425 &feature_gcn3Encoding,
1415 &feature_apertureRegs,1426 &feature_gfx8Insts,
1416 &feature_scalarAtomics,1427 &feature_scalarStores,
1428 &feature_intClampInsts,
1429 &feature_localmemorysize65536,
1417 &feature_flatGlobalInsts,1430 &feature_flatGlobalInsts,
1418 &feature_fp64,1431 &feature_sdwaOmod,
1419 &feature_flatScratchInsts,
1420 &feature_dpp,1432 &feature_dpp,
1421 &feature_scalarFlatScratchInsts,
1422 &feature_gfx7Gfx8Gfx9Insts,1433 &feature_gfx7Gfx8Gfx9Insts,
1423 &feature_sMemrealtime,
1424 &feature_vop3p,
1425 &feature_flatInstOffsets,
1426 &feature_sdwaScalar,
1427 &feature_sdwaSdst,1434 &feature_sdwaSdst,
1428 &feature_localmemorysize65536,1435 &feature_flatInstOffsets,
1429 &feature_gfx8Insts,
1430 &feature_flatAddressSpace,
1431 &feature_BitInsts16,
1432 &feature_sdwa,
1433 &feature_wavefrontsize64,
1434 &feature_intClampInsts,
1435 &feature_sdwaOmod,
1436 &feature_ldsbankcount32,1436 &feature_ldsbankcount32,
1437 &feature_madMixInsts,1437 &feature_madMixInsts,
1438 },1438 },
...@@ -1441,39 +1441,39 @@ pub const cpu_gfx900 = Cpu{...@@ -1441,39 +1441,39 @@ pub const cpu_gfx900 = Cpu{
1441pub const cpu_gfx902 = Cpu{1441pub const cpu_gfx902 = Cpu{
1442 .name = "gfx902",1442 .name = "gfx902",
1443 .llvm_name = "gfx902",1443 .llvm_name = "gfx902",
1444 .subfeatures = &[_]*const Feature {1444 .dependencies = &[_]*const Feature {
1445 &feature_codeObjectV3,1445 &feature_codeObjectV3,
1446 &feature_noSramEccSupport,1446 &feature_noSramEccSupport,
1447 &feature_flatScratchInsts,
1448 &feature_fp64,
1447 &feature_r128A16,1449 &feature_r128A16,
1450 &feature_sMemrealtime,
1448 &feature_addNoCarryInsts,1451 &feature_addNoCarryInsts,
1449 &feature_inv2piInlineImm,1452 &feature_vop3p,
1453 &feature_fastFmaf,
1454 &feature_BitInsts16,
1455 &feature_wavefrontsize64,
1456 &feature_sdwa,
1450 &feature_gfx9Insts,1457 &feature_gfx9Insts,
1458 &feature_flatAddressSpace,
1459 &feature_apertureRegs,
1460 &feature_sdwaScalar,
1451 &feature_ciInsts,1461 &feature_ciInsts,
1462 &feature_scalarAtomics,
1463 &feature_scalarFlatScratchInsts,
1464 &feature_inv2piInlineImm,
1452 &feature_vgprIndexMode,1465 &feature_vgprIndexMode,
1453 &feature_fastFmaf,
1454 &feature_scalarStores,
1455 &feature_gcn3Encoding,1466 &feature_gcn3Encoding,
1456 &feature_apertureRegs,1467 &feature_gfx8Insts,
1457 &feature_scalarAtomics,1468 &feature_scalarStores,
1469 &feature_intClampInsts,
1470 &feature_localmemorysize65536,
1458 &feature_flatGlobalInsts,1471 &feature_flatGlobalInsts,
1459 &feature_fp64,1472 &feature_sdwaOmod,
1460 &feature_flatScratchInsts,
1461 &feature_dpp,1473 &feature_dpp,
1462 &feature_scalarFlatScratchInsts,
1463 &feature_gfx7Gfx8Gfx9Insts,1474 &feature_gfx7Gfx8Gfx9Insts,
1464 &feature_sMemrealtime,
1465 &feature_vop3p,
1466 &feature_flatInstOffsets,
1467 &feature_sdwaScalar,
1468 &feature_sdwaSdst,1475 &feature_sdwaSdst,
1469 &feature_localmemorysize65536,1476 &feature_flatInstOffsets,
1470 &feature_gfx8Insts,
1471 &feature_flatAddressSpace,
1472 &feature_BitInsts16,
1473 &feature_sdwa,
1474 &feature_wavefrontsize64,
1475 &feature_intClampInsts,
1476 &feature_sdwaOmod,
1477 &feature_ldsbankcount32,1477 &feature_ldsbankcount32,
1478 &feature_madMixInsts,1478 &feature_madMixInsts,
1479 &feature_xnack,1479 &feature_xnack,
...@@ -1483,41 +1483,41 @@ pub const cpu_gfx902 = Cpu{...@@ -1483,41 +1483,41 @@ pub const cpu_gfx902 = Cpu{
1483pub const cpu_gfx904 = Cpu{1483pub const cpu_gfx904 = Cpu{
1484 .name = "gfx904",1484 .name = "gfx904",
1485 .llvm_name = "gfx904",1485 .llvm_name = "gfx904",
1486 .subfeatures = &[_]*const Feature {1486 .dependencies = &[_]*const Feature {
1487 &feature_codeObjectV3,1487 &feature_codeObjectV3,
1488 &feature_noSramEccSupport,1488 &feature_noSramEccSupport,
1489 &feature_noXnackSupport,1489 &feature_noXnackSupport,
1490 &feature_fmaMixInsts,1490 &feature_fmaMixInsts,
1491 &feature_flatScratchInsts,
1492 &feature_fp64,
1491 &feature_r128A16,1493 &feature_r128A16,
1494 &feature_sMemrealtime,
1492 &feature_addNoCarryInsts,1495 &feature_addNoCarryInsts,
1493 &feature_inv2piInlineImm,1496 &feature_vop3p,
1497 &feature_fastFmaf,
1498 &feature_BitInsts16,
1499 &feature_wavefrontsize64,
1500 &feature_sdwa,
1494 &feature_gfx9Insts,1501 &feature_gfx9Insts,
1502 &feature_flatAddressSpace,
1503 &feature_apertureRegs,
1504 &feature_sdwaScalar,
1495 &feature_ciInsts,1505 &feature_ciInsts,
1506 &feature_scalarAtomics,
1507 &feature_scalarFlatScratchInsts,
1508 &feature_inv2piInlineImm,
1496 &feature_vgprIndexMode,1509 &feature_vgprIndexMode,
1497 &feature_fastFmaf,
1498 &feature_scalarStores,
1499 &feature_gcn3Encoding,1510 &feature_gcn3Encoding,
1500 &feature_apertureRegs,1511 &feature_gfx8Insts,
1501 &feature_scalarAtomics,1512 &feature_scalarStores,
1513 &feature_intClampInsts,
1514 &feature_localmemorysize65536,
1502 &feature_flatGlobalInsts,1515 &feature_flatGlobalInsts,
1503 &feature_fp64,1516 &feature_sdwaOmod,
1504 &feature_flatScratchInsts,
1505 &feature_dpp,1517 &feature_dpp,
1506 &feature_scalarFlatScratchInsts,
1507 &feature_gfx7Gfx8Gfx9Insts,1518 &feature_gfx7Gfx8Gfx9Insts,
1508 &feature_sMemrealtime,
1509 &feature_vop3p,
1510 &feature_flatInstOffsets,
1511 &feature_sdwaScalar,
1512 &feature_sdwaSdst,1519 &feature_sdwaSdst,
1513 &feature_localmemorysize65536,1520 &feature_flatInstOffsets,
1514 &feature_gfx8Insts,
1515 &feature_flatAddressSpace,
1516 &feature_BitInsts16,
1517 &feature_sdwa,
1518 &feature_wavefrontsize64,
1519 &feature_intClampInsts,
1520 &feature_sdwaOmod,
1521 &feature_ldsbankcount32,1521 &feature_ldsbankcount32,
1522 },1522 },
1523};1523};
...@@ -1525,43 +1525,43 @@ pub const cpu_gfx904 = Cpu{...@@ -1525,43 +1525,43 @@ pub const cpu_gfx904 = Cpu{
1525pub const cpu_gfx906 = Cpu{1525pub const cpu_gfx906 = Cpu{
1526 .name = "gfx906",1526 .name = "gfx906",
1527 .llvm_name = "gfx906",1527 .llvm_name = "gfx906",
1528 .subfeatures = &[_]*const Feature {1528 .dependencies = &[_]*const Feature {
1529 &feature_codeObjectV3,1529 &feature_codeObjectV3,
1530 &feature_dlInsts,1530 &feature_dlInsts,
1531 &feature_noXnackSupport,1531 &feature_noXnackSupport,
1532 &feature_dot1Insts,1532 &feature_dot1Insts,
1533 &feature_dot2Insts,1533 &feature_dot2Insts,
1534 &feature_fmaMixInsts,1534 &feature_fmaMixInsts,
1535 &feature_flatScratchInsts,
1536 &feature_fp64,
1535 &feature_r128A16,1537 &feature_r128A16,
1538 &feature_sMemrealtime,
1536 &feature_addNoCarryInsts,1539 &feature_addNoCarryInsts,
1537 &feature_inv2piInlineImm,1540 &feature_vop3p,
1541 &feature_fastFmaf,
1542 &feature_BitInsts16,
1543 &feature_wavefrontsize64,
1544 &feature_sdwa,
1538 &feature_gfx9Insts,1545 &feature_gfx9Insts,
1546 &feature_flatAddressSpace,
1547 &feature_apertureRegs,
1548 &feature_sdwaScalar,
1539 &feature_ciInsts,1549 &feature_ciInsts,
1550 &feature_scalarAtomics,
1551 &feature_scalarFlatScratchInsts,
1552 &feature_inv2piInlineImm,
1540 &feature_vgprIndexMode,1553 &feature_vgprIndexMode,
1541 &feature_fastFmaf,
1542 &feature_scalarStores,
1543 &feature_gcn3Encoding,1554 &feature_gcn3Encoding,
1544 &feature_apertureRegs,1555 &feature_gfx8Insts,
1545 &feature_scalarAtomics,1556 &feature_scalarStores,
1557 &feature_intClampInsts,
1558 &feature_localmemorysize65536,
1546 &feature_flatGlobalInsts,1559 &feature_flatGlobalInsts,
1547 &feature_fp64,1560 &feature_sdwaOmod,
1548 &feature_flatScratchInsts,
1549 &feature_dpp,1561 &feature_dpp,
1550 &feature_scalarFlatScratchInsts,
1551 &feature_gfx7Gfx8Gfx9Insts,1562 &feature_gfx7Gfx8Gfx9Insts,
1552 &feature_sMemrealtime,
1553 &feature_vop3p,
1554 &feature_flatInstOffsets,
1555 &feature_sdwaScalar,
1556 &feature_sdwaSdst,1563 &feature_sdwaSdst,
1557 &feature_localmemorysize65536,1564 &feature_flatInstOffsets,
1558 &feature_gfx8Insts,
1559 &feature_flatAddressSpace,
1560 &feature_BitInsts16,
1561 &feature_sdwa,
1562 &feature_wavefrontsize64,
1563 &feature_intClampInsts,
1564 &feature_sdwaOmod,
1565 &feature_ldsbankcount32,1565 &feature_ldsbankcount32,
1566 &feature_halfRate64Ops,1566 &feature_halfRate64Ops,
1567 },1567 },
...@@ -1570,7 +1570,7 @@ pub const cpu_gfx906 = Cpu{...@@ -1570,7 +1570,7 @@ pub const cpu_gfx906 = Cpu{
1570pub const cpu_gfx908 = Cpu{1570pub const cpu_gfx908 = Cpu{
1571 .name = "gfx908",1571 .name = "gfx908",
1572 .llvm_name = "gfx908",1572 .llvm_name = "gfx908",
1573 .subfeatures = &[_]*const Feature {1573 .dependencies = &[_]*const Feature {
1574 &feature_atomicFaddInsts,1574 &feature_atomicFaddInsts,
1575 &feature_codeObjectV3,1575 &feature_codeObjectV3,
1576 &feature_dlInsts,1576 &feature_dlInsts,
...@@ -1581,36 +1581,36 @@ pub const cpu_gfx908 = Cpu{...@@ -1581,36 +1581,36 @@ pub const cpu_gfx908 = Cpu{
1581 &feature_dot5Insts,1581 &feature_dot5Insts,
1582 &feature_dot6Insts,1582 &feature_dot6Insts,
1583 &feature_fmaMixInsts,1583 &feature_fmaMixInsts,
1584 &feature_flatScratchInsts,
1585 &feature_fp64,
1584 &feature_r128A16,1586 &feature_r128A16,
1587 &feature_sMemrealtime,
1585 &feature_addNoCarryInsts,1588 &feature_addNoCarryInsts,
1586 &feature_inv2piInlineImm,1589 &feature_vop3p,
1590 &feature_fastFmaf,
1591 &feature_BitInsts16,
1592 &feature_wavefrontsize64,
1593 &feature_sdwa,
1587 &feature_gfx9Insts,1594 &feature_gfx9Insts,
1595 &feature_flatAddressSpace,
1596 &feature_apertureRegs,
1597 &feature_sdwaScalar,
1588 &feature_ciInsts,1598 &feature_ciInsts,
1599 &feature_scalarAtomics,
1600 &feature_scalarFlatScratchInsts,
1601 &feature_inv2piInlineImm,
1589 &feature_vgprIndexMode,1602 &feature_vgprIndexMode,
1590 &feature_fastFmaf,
1591 &feature_scalarStores,
1592 &feature_gcn3Encoding,1603 &feature_gcn3Encoding,
1593 &feature_apertureRegs,1604 &feature_gfx8Insts,
1594 &feature_scalarAtomics,1605 &feature_scalarStores,
1606 &feature_intClampInsts,
1607 &feature_localmemorysize65536,
1595 &feature_flatGlobalInsts,1608 &feature_flatGlobalInsts,
1596 &feature_fp64,1609 &feature_sdwaOmod,
1597 &feature_flatScratchInsts,
1598 &feature_dpp,1610 &feature_dpp,
1599 &feature_scalarFlatScratchInsts,
1600 &feature_gfx7Gfx8Gfx9Insts,1611 &feature_gfx7Gfx8Gfx9Insts,
1601 &feature_sMemrealtime,
1602 &feature_vop3p,
1603 &feature_flatInstOffsets,
1604 &feature_sdwaScalar,
1605 &feature_sdwaSdst,1612 &feature_sdwaSdst,
1606 &feature_localmemorysize65536,1613 &feature_flatInstOffsets,
1607 &feature_gfx8Insts,
1608 &feature_flatAddressSpace,
1609 &feature_BitInsts16,
1610 &feature_sdwa,
1611 &feature_wavefrontsize64,
1612 &feature_intClampInsts,
1613 &feature_sdwaOmod,
1614 &feature_ldsbankcount32,1614 &feature_ldsbankcount32,
1615 &feature_maiInsts,1615 &feature_maiInsts,
1616 &feature_mfmaInlineLiteralBug,1616 &feature_mfmaInlineLiteralBug,
...@@ -1623,38 +1623,38 @@ pub const cpu_gfx908 = Cpu{...@@ -1623,38 +1623,38 @@ pub const cpu_gfx908 = Cpu{
1623pub const cpu_gfx909 = Cpu{1623pub const cpu_gfx909 = Cpu{
1624 .name = "gfx909",1624 .name = "gfx909",
1625 .llvm_name = "gfx909",1625 .llvm_name = "gfx909",
1626 .subfeatures = &[_]*const Feature {1626 .dependencies = &[_]*const Feature {
1627 &feature_codeObjectV3,1627 &feature_codeObjectV3,
1628 &feature_flatScratchInsts,
1629 &feature_fp64,
1628 &feature_r128A16,1630 &feature_r128A16,
1631 &feature_sMemrealtime,
1629 &feature_addNoCarryInsts,1632 &feature_addNoCarryInsts,
1630 &feature_inv2piInlineImm,1633 &feature_vop3p,
1634 &feature_fastFmaf,
1635 &feature_BitInsts16,
1636 &feature_wavefrontsize64,
1637 &feature_sdwa,
1631 &feature_gfx9Insts,1638 &feature_gfx9Insts,
1639 &feature_flatAddressSpace,
1640 &feature_apertureRegs,
1641 &feature_sdwaScalar,
1632 &feature_ciInsts,1642 &feature_ciInsts,
1643 &feature_scalarAtomics,
1644 &feature_scalarFlatScratchInsts,
1645 &feature_inv2piInlineImm,
1633 &feature_vgprIndexMode,1646 &feature_vgprIndexMode,
1634 &feature_fastFmaf,
1635 &feature_scalarStores,
1636 &feature_gcn3Encoding,1647 &feature_gcn3Encoding,
1637 &feature_apertureRegs,1648 &feature_gfx8Insts,
1638 &feature_scalarAtomics,1649 &feature_scalarStores,
1650 &feature_intClampInsts,
1651 &feature_localmemorysize65536,
1639 &feature_flatGlobalInsts,1652 &feature_flatGlobalInsts,
1640 &feature_fp64,1653 &feature_sdwaOmod,
1641 &feature_flatScratchInsts,
1642 &feature_dpp,1654 &feature_dpp,
1643 &feature_scalarFlatScratchInsts,
1644 &feature_gfx7Gfx8Gfx9Insts,1655 &feature_gfx7Gfx8Gfx9Insts,
1645 &feature_sMemrealtime,
1646 &feature_vop3p,
1647 &feature_flatInstOffsets,
1648 &feature_sdwaScalar,
1649 &feature_sdwaSdst,1656 &feature_sdwaSdst,
1650 &feature_localmemorysize65536,1657 &feature_flatInstOffsets,
1651 &feature_gfx8Insts,
1652 &feature_flatAddressSpace,
1653 &feature_BitInsts16,
1654 &feature_sdwa,
1655 &feature_wavefrontsize64,
1656 &feature_intClampInsts,
1657 &feature_sdwaOmod,
1658 &feature_ldsbankcount32,1658 &feature_ldsbankcount32,
1659 &feature_madMixInsts,1659 &feature_madMixInsts,
1660 &feature_xnack,1660 &feature_xnack,
...@@ -1664,38 +1664,38 @@ pub const cpu_gfx909 = Cpu{...@@ -1664,38 +1664,38 @@ pub const cpu_gfx909 = Cpu{
1664pub const cpu_hainan = Cpu{1664pub const cpu_hainan = Cpu{
1665 .name = "hainan",1665 .name = "hainan",
1666 .llvm_name = "hainan",1666 .llvm_name = "hainan",
1667 .subfeatures = &[_]*const Feature {1667 .dependencies = &[_]*const Feature {
1668 &feature_codeObjectV3,1668 &feature_codeObjectV3,
1669 &feature_noXnackSupport,1669 &feature_noXnackSupport,
1670 &feature_ldsbankcount32,1670 &feature_ldsbankcount32,
1671 &feature_noSramEccSupport,
1672 &feature_mimgR128,
1673 &feature_trigReducedRange,
1674 &feature_wavefrontsize64,
1675 &feature_localmemorysize32768,1671 &feature_localmemorysize32768,
1676 &feature_fp64,1672 &feature_fp64,
1673 &feature_mimgR128,
1677 &feature_movrel,1674 &feature_movrel,
1675 &feature_noSramEccSupport,
1676 &feature_wavefrontsize64,
1677 &feature_trigReducedRange,
1678 },1678 },
1679};1679};
16801680
1681pub const cpu_hawaii = Cpu{1681pub const cpu_hawaii = Cpu{
1682 .name = "hawaii",1682 .name = "hawaii",
1683 .llvm_name = "hawaii",1683 .llvm_name = "hawaii",
1684 .subfeatures = &[_]*const Feature {1684 .dependencies = &[_]*const Feature {
1685 &feature_codeObjectV3,1685 &feature_codeObjectV3,
1686 &feature_noXnackSupport,1686 &feature_noXnackSupport,
1687 &feature_fastFmaf,1687 &feature_fastFmaf,
1688 &feature_ldsbankcount32,1688 &feature_ldsbankcount32,
1689 &feature_noSramEccSupport,
1690 &feature_flatAddressSpace,1689 &feature_flatAddressSpace,
1690 &feature_fp64,
1691 &feature_mimgR128,1691 &feature_mimgR128,
1692 &feature_trigReducedRange,
1693 &feature_gfx7Gfx8Gfx9Insts,1692 &feature_gfx7Gfx8Gfx9Insts,
1694 &feature_ciInsts,
1695 &feature_wavefrontsize64,
1696 &feature_fp64,
1697 &feature_movrel,1693 &feature_movrel,
1698 &feature_localmemorysize65536,1694 &feature_localmemorysize65536,
1695 &feature_ciInsts,
1696 &feature_noSramEccSupport,
1697 &feature_wavefrontsize64,
1698 &feature_trigReducedRange,
1699 &feature_halfRate64Ops,1699 &feature_halfRate64Ops,
1700 },1700 },
1701};1701};
...@@ -1703,225 +1703,225 @@ pub const cpu_hawaii = Cpu{...@@ -1703,225 +1703,225 @@ pub const cpu_hawaii = Cpu{
1703pub const cpu_iceland = Cpu{1703pub const cpu_iceland = Cpu{
1704 .name = "iceland",1704 .name = "iceland",
1705 .llvm_name = "iceland",1705 .llvm_name = "iceland",
1706 .subfeatures = &[_]*const Feature {1706 .dependencies = &[_]*const Feature {
1707 &feature_codeObjectV3,1707 &feature_codeObjectV3,
1708 &feature_noXnackSupport,1708 &feature_noXnackSupport,
1709 &feature_ldsbankcount32,1709 &feature_ldsbankcount32,
1710 &feature_sgprInitBug,1710 &feature_sgprInitBug,
1711 &feature_unpackedD16Vmem,1711 &feature_unpackedD16Vmem,
1712 &feature_fp64,
1713 &feature_sMemrealtime,
1714 &feature_BitInsts16,
1715 &feature_wavefrontsize64,
1716 &feature_sdwa,
1717 &feature_flatAddressSpace,
1718 &feature_sdwaMav,
1712 &feature_mimgR128,1719 &feature_mimgR128,
1713 &feature_inv2piInlineImm,
1714 &feature_ciInsts,1720 &feature_ciInsts,
1721 &feature_noSramEccSupport,
1722 &feature_inv2piInlineImm,
1715 &feature_vgprIndexMode,1723 &feature_vgprIndexMode,
1716 &feature_scalarStores,
1717 &feature_gcn3Encoding,1724 &feature_gcn3Encoding,
1718 &feature_fp64,1725 &feature_gfx8Insts,
1719 &feature_dpp,1726 &feature_scalarStores,
1720 &feature_trigReducedRange,1727 &feature_intClampInsts,
1721 &feature_gfx7Gfx8Gfx9Insts,
1722 &feature_sMemrealtime,
1723 &feature_movrel,1728 &feature_movrel,
1724 &feature_localmemorysize65536,1729 &feature_localmemorysize65536,
1725 &feature_noSramEccSupport,
1726 &feature_gfx8Insts,
1727 &feature_flatAddressSpace,
1728 &feature_BitInsts16,
1729 &feature_sdwaMav,
1730 &feature_sdwa,
1731 &feature_sdwaOutModsVopc,1730 &feature_sdwaOutModsVopc,
1732 &feature_wavefrontsize64,1731 &feature_dpp,
1733 &feature_intClampInsts,1732 &feature_gfx7Gfx8Gfx9Insts,
1733 &feature_trigReducedRange,
1734 },1734 },
1735};1735};
17361736
1737pub const cpu_kabini = Cpu{1737pub const cpu_kabini = Cpu{
1738 .name = "kabini",1738 .name = "kabini",
1739 .llvm_name = "kabini",1739 .llvm_name = "kabini",
1740 .subfeatures = &[_]*const Feature {1740 .dependencies = &[_]*const Feature {
1741 &feature_codeObjectV3,1741 &feature_codeObjectV3,
1742 &feature_noXnackSupport,1742 &feature_noXnackSupport,
1743 &feature_ldsbankcount16,1743 &feature_ldsbankcount16,
1744 &feature_noSramEccSupport,
1745 &feature_flatAddressSpace,1744 &feature_flatAddressSpace,
1745 &feature_fp64,
1746 &feature_mimgR128,1746 &feature_mimgR128,
1747 &feature_trigReducedRange,
1748 &feature_gfx7Gfx8Gfx9Insts,1747 &feature_gfx7Gfx8Gfx9Insts,
1749 &feature_ciInsts,
1750 &feature_wavefrontsize64,
1751 &feature_fp64,
1752 &feature_movrel,1748 &feature_movrel,
1753 &feature_localmemorysize65536,1749 &feature_localmemorysize65536,
1750 &feature_ciInsts,
1751 &feature_noSramEccSupport,
1752 &feature_wavefrontsize64,
1753 &feature_trigReducedRange,
1754 },1754 },
1755};1755};
17561756
1757pub const cpu_kaveri = Cpu{1757pub const cpu_kaveri = Cpu{
1758 .name = "kaveri",1758 .name = "kaveri",
1759 .llvm_name = "kaveri",1759 .llvm_name = "kaveri",
1760 .subfeatures = &[_]*const Feature {1760 .dependencies = &[_]*const Feature {
1761 &feature_codeObjectV3,1761 &feature_codeObjectV3,
1762 &feature_noXnackSupport,1762 &feature_noXnackSupport,
1763 &feature_ldsbankcount32,1763 &feature_ldsbankcount32,
1764 &feature_noSramEccSupport,
1765 &feature_flatAddressSpace,1764 &feature_flatAddressSpace,
1765 &feature_fp64,
1766 &feature_mimgR128,1766 &feature_mimgR128,
1767 &feature_trigReducedRange,
1768 &feature_gfx7Gfx8Gfx9Insts,1767 &feature_gfx7Gfx8Gfx9Insts,
1769 &feature_ciInsts,
1770 &feature_wavefrontsize64,
1771 &feature_fp64,
1772 &feature_movrel,1768 &feature_movrel,
1773 &feature_localmemorysize65536,1769 &feature_localmemorysize65536,
1770 &feature_ciInsts,
1771 &feature_noSramEccSupport,
1772 &feature_wavefrontsize64,
1773 &feature_trigReducedRange,
1774 },1774 },
1775};1775};
17761776
1777pub const cpu_mullins = Cpu{1777pub const cpu_mullins = Cpu{
1778 .name = "mullins",1778 .name = "mullins",
1779 .llvm_name = "mullins",1779 .llvm_name = "mullins",
1780 .subfeatures = &[_]*const Feature {1780 .dependencies = &[_]*const Feature {
1781 &feature_codeObjectV3,1781 &feature_codeObjectV3,
1782 &feature_noXnackSupport,1782 &feature_noXnackSupport,
1783 &feature_ldsbankcount16,1783 &feature_ldsbankcount16,
1784 &feature_noSramEccSupport,
1785 &feature_flatAddressSpace,1784 &feature_flatAddressSpace,
1785 &feature_fp64,
1786 &feature_mimgR128,1786 &feature_mimgR128,
1787 &feature_trigReducedRange,
1788 &feature_gfx7Gfx8Gfx9Insts,1787 &feature_gfx7Gfx8Gfx9Insts,
1789 &feature_ciInsts,
1790 &feature_wavefrontsize64,
1791 &feature_fp64,
1792 &feature_movrel,1788 &feature_movrel,
1793 &feature_localmemorysize65536,1789 &feature_localmemorysize65536,
1790 &feature_ciInsts,
1791 &feature_noSramEccSupport,
1792 &feature_wavefrontsize64,
1793 &feature_trigReducedRange,
1794 },1794 },
1795};1795};
17961796
1797pub const cpu_oland = Cpu{1797pub const cpu_oland = Cpu{
1798 .name = "oland",1798 .name = "oland",
1799 .llvm_name = "oland",1799 .llvm_name = "oland",
1800 .subfeatures = &[_]*const Feature {1800 .dependencies = &[_]*const Feature {
1801 &feature_codeObjectV3,1801 &feature_codeObjectV3,
1802 &feature_noXnackSupport,1802 &feature_noXnackSupport,
1803 &feature_ldsbankcount32,1803 &feature_ldsbankcount32,
1804 &feature_noSramEccSupport,
1805 &feature_mimgR128,
1806 &feature_trigReducedRange,
1807 &feature_wavefrontsize64,
1808 &feature_localmemorysize32768,1804 &feature_localmemorysize32768,
1809 &feature_fp64,1805 &feature_fp64,
1806 &feature_mimgR128,
1810 &feature_movrel,1807 &feature_movrel,
1808 &feature_noSramEccSupport,
1809 &feature_wavefrontsize64,
1810 &feature_trigReducedRange,
1811 },1811 },
1812};1812};
18131813
1814pub const cpu_pitcairn = Cpu{1814pub const cpu_pitcairn = Cpu{
1815 .name = "pitcairn",1815 .name = "pitcairn",
1816 .llvm_name = "pitcairn",1816 .llvm_name = "pitcairn",
1817 .subfeatures = &[_]*const Feature {1817 .dependencies = &[_]*const Feature {
1818 &feature_codeObjectV3,1818 &feature_codeObjectV3,
1819 &feature_noXnackSupport,1819 &feature_noXnackSupport,
1820 &feature_ldsbankcount32,1820 &feature_ldsbankcount32,
1821 &feature_noSramEccSupport,
1822 &feature_mimgR128,
1823 &feature_trigReducedRange,
1824 &feature_wavefrontsize64,
1825 &feature_localmemorysize32768,1821 &feature_localmemorysize32768,
1826 &feature_fp64,1822 &feature_fp64,
1823 &feature_mimgR128,
1827 &feature_movrel,1824 &feature_movrel,
1825 &feature_noSramEccSupport,
1826 &feature_wavefrontsize64,
1827 &feature_trigReducedRange,
1828 },1828 },
1829};1829};
18301830
1831pub const cpu_polaris10 = Cpu{1831pub const cpu_polaris10 = Cpu{
1832 .name = "polaris10",1832 .name = "polaris10",
1833 .llvm_name = "polaris10",1833 .llvm_name = "polaris10",
1834 .subfeatures = &[_]*const Feature {1834 .dependencies = &[_]*const Feature {
1835 &feature_codeObjectV3,1835 &feature_codeObjectV3,
1836 &feature_noXnackSupport,1836 &feature_noXnackSupport,
1837 &feature_ldsbankcount32,1837 &feature_ldsbankcount32,
1838 &feature_unpackedD16Vmem,1838 &feature_unpackedD16Vmem,
1839 &feature_fp64,
1840 &feature_sMemrealtime,
1841 &feature_BitInsts16,
1842 &feature_wavefrontsize64,
1843 &feature_sdwa,
1844 &feature_flatAddressSpace,
1845 &feature_sdwaMav,
1839 &feature_mimgR128,1846 &feature_mimgR128,
1840 &feature_inv2piInlineImm,
1841 &feature_ciInsts,1847 &feature_ciInsts,
1848 &feature_noSramEccSupport,
1849 &feature_inv2piInlineImm,
1842 &feature_vgprIndexMode,1850 &feature_vgprIndexMode,
1843 &feature_scalarStores,
1844 &feature_gcn3Encoding,1851 &feature_gcn3Encoding,
1845 &feature_fp64,1852 &feature_gfx8Insts,
1846 &feature_dpp,1853 &feature_scalarStores,
1847 &feature_trigReducedRange,1854 &feature_intClampInsts,
1848 &feature_gfx7Gfx8Gfx9Insts,
1849 &feature_sMemrealtime,
1850 &feature_movrel,1855 &feature_movrel,
1851 &feature_localmemorysize65536,1856 &feature_localmemorysize65536,
1852 &feature_noSramEccSupport,
1853 &feature_gfx8Insts,
1854 &feature_flatAddressSpace,
1855 &feature_BitInsts16,
1856 &feature_sdwaMav,
1857 &feature_sdwa,
1858 &feature_sdwaOutModsVopc,1857 &feature_sdwaOutModsVopc,
1859 &feature_wavefrontsize64,1858 &feature_dpp,
1860 &feature_intClampInsts,1859 &feature_gfx7Gfx8Gfx9Insts,
1860 &feature_trigReducedRange,
1861 },1861 },
1862};1862};
18631863
1864pub const cpu_polaris11 = Cpu{1864pub const cpu_polaris11 = Cpu{
1865 .name = "polaris11",1865 .name = "polaris11",
1866 .llvm_name = "polaris11",1866 .llvm_name = "polaris11",
1867 .subfeatures = &[_]*const Feature {1867 .dependencies = &[_]*const Feature {
1868 &feature_codeObjectV3,1868 &feature_codeObjectV3,
1869 &feature_noXnackSupport,1869 &feature_noXnackSupport,
1870 &feature_ldsbankcount32,1870 &feature_ldsbankcount32,
1871 &feature_unpackedD16Vmem,1871 &feature_unpackedD16Vmem,
1872 &feature_fp64,
1873 &feature_sMemrealtime,
1874 &feature_BitInsts16,
1875 &feature_wavefrontsize64,
1876 &feature_sdwa,
1877 &feature_flatAddressSpace,
1878 &feature_sdwaMav,
1872 &feature_mimgR128,1879 &feature_mimgR128,
1873 &feature_inv2piInlineImm,
1874 &feature_ciInsts,1880 &feature_ciInsts,
1881 &feature_noSramEccSupport,
1882 &feature_inv2piInlineImm,
1875 &feature_vgprIndexMode,1883 &feature_vgprIndexMode,
1876 &feature_scalarStores,
1877 &feature_gcn3Encoding,1884 &feature_gcn3Encoding,
1878 &feature_fp64,1885 &feature_gfx8Insts,
1879 &feature_dpp,1886 &feature_scalarStores,
1880 &feature_trigReducedRange,1887 &feature_intClampInsts,
1881 &feature_gfx7Gfx8Gfx9Insts,
1882 &feature_sMemrealtime,
1883 &feature_movrel,1888 &feature_movrel,
1884 &feature_localmemorysize65536,1889 &feature_localmemorysize65536,
1885 &feature_noSramEccSupport,
1886 &feature_gfx8Insts,
1887 &feature_flatAddressSpace,
1888 &feature_BitInsts16,
1889 &feature_sdwaMav,
1890 &feature_sdwa,
1891 &feature_sdwaOutModsVopc,1890 &feature_sdwaOutModsVopc,
1892 &feature_wavefrontsize64,1891 &feature_dpp,
1893 &feature_intClampInsts,1892 &feature_gfx7Gfx8Gfx9Insts,
1893 &feature_trigReducedRange,
1894 },1894 },
1895};1895};
18961896
1897pub const cpu_stoney = Cpu{1897pub const cpu_stoney = Cpu{
1898 .name = "stoney",1898 .name = "stoney",
1899 .llvm_name = "stoney",1899 .llvm_name = "stoney",
1900 .subfeatures = &[_]*const Feature {1900 .dependencies = &[_]*const Feature {
1901 &feature_codeObjectV3,1901 &feature_codeObjectV3,
1902 &feature_ldsbankcount16,1902 &feature_ldsbankcount16,
1903 &feature_fp64,
1904 &feature_sMemrealtime,
1905 &feature_BitInsts16,
1906 &feature_wavefrontsize64,
1907 &feature_sdwa,
1908 &feature_flatAddressSpace,
1909 &feature_sdwaMav,
1903 &feature_mimgR128,1910 &feature_mimgR128,
1904 &feature_inv2piInlineImm,
1905 &feature_ciInsts,1911 &feature_ciInsts,
1912 &feature_noSramEccSupport,
1913 &feature_inv2piInlineImm,
1906 &feature_vgprIndexMode,1914 &feature_vgprIndexMode,
1907 &feature_scalarStores,
1908 &feature_gcn3Encoding,1915 &feature_gcn3Encoding,
1909 &feature_fp64,1916 &feature_gfx8Insts,
1910 &feature_dpp,1917 &feature_scalarStores,
1911 &feature_trigReducedRange,1918 &feature_intClampInsts,
1912 &feature_gfx7Gfx8Gfx9Insts,
1913 &feature_sMemrealtime,
1914 &feature_movrel,1919 &feature_movrel,
1915 &feature_localmemorysize65536,1920 &feature_localmemorysize65536,
1916 &feature_noSramEccSupport,
1917 &feature_gfx8Insts,
1918 &feature_flatAddressSpace,
1919 &feature_BitInsts16,
1920 &feature_sdwaMav,
1921 &feature_sdwa,
1922 &feature_sdwaOutModsVopc,1921 &feature_sdwaOutModsVopc,
1923 &feature_wavefrontsize64,1922 &feature_dpp,
1924 &feature_intClampInsts,1923 &feature_gfx7Gfx8Gfx9Insts,
1924 &feature_trigReducedRange,
1925 &feature_xnack,1925 &feature_xnack,
1926 },1926 },
1927};1927};
...@@ -1929,18 +1929,18 @@ pub const cpu_stoney = Cpu{...@@ -1929,18 +1929,18 @@ pub const cpu_stoney = Cpu{
1929pub const cpu_tahiti = Cpu{1929pub const cpu_tahiti = Cpu{
1930 .name = "tahiti",1930 .name = "tahiti",
1931 .llvm_name = "tahiti",1931 .llvm_name = "tahiti",
1932 .subfeatures = &[_]*const Feature {1932 .dependencies = &[_]*const Feature {
1933 &feature_codeObjectV3,1933 &feature_codeObjectV3,
1934 &feature_noXnackSupport,1934 &feature_noXnackSupport,
1935 &feature_fastFmaf,1935 &feature_fastFmaf,
1936 &feature_ldsbankcount32,1936 &feature_ldsbankcount32,
1937 &feature_noSramEccSupport,
1938 &feature_mimgR128,
1939 &feature_trigReducedRange,
1940 &feature_wavefrontsize64,
1941 &feature_localmemorysize32768,1937 &feature_localmemorysize32768,
1942 &feature_fp64,1938 &feature_fp64,
1939 &feature_mimgR128,
1943 &feature_movrel,1940 &feature_movrel,
1941 &feature_noSramEccSupport,
1942 &feature_wavefrontsize64,
1943 &feature_trigReducedRange,
1944 &feature_halfRate64Ops,1944 &feature_halfRate64Ops,
1945 },1945 },
1946};1946};
...@@ -1948,51 +1948,51 @@ pub const cpu_tahiti = Cpu{...@@ -1948,51 +1948,51 @@ pub const cpu_tahiti = Cpu{
1948pub const cpu_tonga = Cpu{1948pub const cpu_tonga = Cpu{
1949 .name = "tonga",1949 .name = "tonga",
1950 .llvm_name = "tonga",1950 .llvm_name = "tonga",
1951 .subfeatures = &[_]*const Feature {1951 .dependencies = &[_]*const Feature {
1952 &feature_codeObjectV3,1952 &feature_codeObjectV3,
1953 &feature_noXnackSupport,1953 &feature_noXnackSupport,
1954 &feature_ldsbankcount32,1954 &feature_ldsbankcount32,
1955 &feature_sgprInitBug,1955 &feature_sgprInitBug,
1956 &feature_unpackedD16Vmem,1956 &feature_unpackedD16Vmem,
1957 &feature_fp64,
1958 &feature_sMemrealtime,
1959 &feature_BitInsts16,
1960 &feature_wavefrontsize64,
1961 &feature_sdwa,
1962 &feature_flatAddressSpace,
1963 &feature_sdwaMav,
1957 &feature_mimgR128,1964 &feature_mimgR128,
1958 &feature_inv2piInlineImm,
1959 &feature_ciInsts,1965 &feature_ciInsts,
1966 &feature_noSramEccSupport,
1967 &feature_inv2piInlineImm,
1960 &feature_vgprIndexMode,1968 &feature_vgprIndexMode,
1961 &feature_scalarStores,
1962 &feature_gcn3Encoding,1969 &feature_gcn3Encoding,
1963 &feature_fp64,1970 &feature_gfx8Insts,
1964 &feature_dpp,1971 &feature_scalarStores,
1965 &feature_trigReducedRange,1972 &feature_intClampInsts,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_sMemrealtime,
1968 &feature_movrel,1973 &feature_movrel,
1969 &feature_localmemorysize65536,1974 &feature_localmemorysize65536,
1970 &feature_noSramEccSupport,
1971 &feature_gfx8Insts,
1972 &feature_flatAddressSpace,
1973 &feature_BitInsts16,
1974 &feature_sdwaMav,
1975 &feature_sdwa,
1976 &feature_sdwaOutModsVopc,1975 &feature_sdwaOutModsVopc,
1977 &feature_wavefrontsize64,1976 &feature_dpp,
1978 &feature_intClampInsts,1977 &feature_gfx7Gfx8Gfx9Insts,
1978 &feature_trigReducedRange,
1979 },1979 },
1980};1980};
19811981
1982pub const cpu_verde = Cpu{1982pub const cpu_verde = Cpu{
1983 .name = "verde",1983 .name = "verde",
1984 .llvm_name = "verde",1984 .llvm_name = "verde",
1985 .subfeatures = &[_]*const Feature {1985 .dependencies = &[_]*const Feature {
1986 &feature_codeObjectV3,1986 &feature_codeObjectV3,
1987 &feature_noXnackSupport,1987 &feature_noXnackSupport,
1988 &feature_ldsbankcount32,1988 &feature_ldsbankcount32,
1989 &feature_noSramEccSupport,
1990 &feature_mimgR128,
1991 &feature_trigReducedRange,
1992 &feature_wavefrontsize64,
1993 &feature_localmemorysize32768,1989 &feature_localmemorysize32768,
1994 &feature_fp64,1990 &feature_fp64,
1991 &feature_mimgR128,
1995 &feature_movrel,1992 &feature_movrel,
1993 &feature_noSramEccSupport,
1994 &feature_wavefrontsize64,
1995 &feature_trigReducedRange,
1996 },1996 },
1997};1997};
19981998
lib/std/target/arm.zig+510-510
...@@ -4,146 +4,146 @@ const Cpu = @import("std").target.Cpu;...@@ -4,146 +4,146 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_msecext8 = Feature{4pub const feature_msecext8 = Feature{
5 .name = "8msecext",5 .name = "8msecext",
6 .description = "Enable support for ARMv8-M Security Extensions",6 .description = "Enable support for ARMv8-M Security Extensions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_aclass = Feature{11pub const feature_aclass = Feature{
12 .name = "aclass",12 .name = "aclass",
13 .description = "Is application profile ('A' series)",13 .description = "Is application profile ('A' series)",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_aes = Feature{18pub const feature_aes = Feature{
19 .name = "aes",19 .name = "aes",
20 .description = "Enable AES support",20 .description = "Enable AES support",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 &feature_fpregs,
23 &feature_d32,22 &feature_d32,
23 &feature_fpregs,
24 },24 },
25};25};
2626
27pub const feature_acquireRelease = Feature{27pub const feature_acquireRelease = Feature{
28 .name = "acquire-release",28 .name = "acquire-release",
29 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",29 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
30 .subfeatures = &[_]*const Feature {30 .dependencies = &[_]*const Feature {
31 },31 },
32};32};
3333
34pub const feature_avoidMovsShop = Feature{34pub const feature_avoidMovsShop = Feature{
35 .name = "avoid-movs-shop",35 .name = "avoid-movs-shop",
36 .description = "Avoid movs instructions with shifter operand",36 .description = "Avoid movs instructions with shifter operand",
37 .subfeatures = &[_]*const Feature {37 .dependencies = &[_]*const Feature {
38 },38 },
39};39};
4040
41pub const feature_avoidPartialCpsr = Feature{41pub const feature_avoidPartialCpsr = Feature{
42 .name = "avoid-partial-cpsr",42 .name = "avoid-partial-cpsr",
43 .description = "Avoid CPSR partial update for OOO execution",43 .description = "Avoid CPSR partial update for OOO execution",
44 .subfeatures = &[_]*const Feature {44 .dependencies = &[_]*const Feature {
45 },45 },
46};46};
4747
48pub const feature_crc = Feature{48pub const feature_crc = Feature{
49 .name = "crc",49 .name = "crc",
50 .description = "Enable support for CRC instructions",50 .description = "Enable support for CRC instructions",
51 .subfeatures = &[_]*const Feature {51 .dependencies = &[_]*const Feature {
52 },52 },
53};53};
5454
55pub const feature_cheapPredicableCpsr = Feature{55pub const feature_cheapPredicableCpsr = Feature{
56 .name = "cheap-predicable-cpsr",56 .name = "cheap-predicable-cpsr",
57 .description = "Disable +1 predication cost for instructions updating CPSR",57 .description = "Disable +1 predication cost for instructions updating CPSR",
58 .subfeatures = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
59 },59 },
60};60};
6161
62pub const feature_vldnAlign = Feature{62pub const feature_vldnAlign = Feature{
63 .name = "vldn-align",63 .name = "vldn-align",
64 .description = "Check for VLDn unaligned access",64 .description = "Check for VLDn unaligned access",
65 .subfeatures = &[_]*const Feature {65 .dependencies = &[_]*const Feature {
66 },66 },
67};67};
6868
69pub const feature_crypto = Feature{69pub const feature_crypto = Feature{
70 .name = "crypto",70 .name = "crypto",
71 .description = "Enable support for Cryptography extensions",71 .description = "Enable support for Cryptography extensions",
72 .subfeatures = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
73 &feature_fpregs,
74 &feature_d32,73 &feature_d32,
74 &feature_fpregs,
75 },75 },
76};76};
7777
78pub const feature_d32 = Feature{78pub const feature_d32 = Feature{
79 .name = "d32",79 .name = "d32",
80 .description = "Extend FP to 32 double registers",80 .description = "Extend FP to 32 double registers",
81 .subfeatures = &[_]*const Feature {81 .dependencies = &[_]*const Feature {
82 },82 },
83};83};
8484
85pub const feature_db = Feature{85pub const feature_db = Feature{
86 .name = "db",86 .name = "db",
87 .description = "Has data barrier (dmb/dsb) instructions",87 .description = "Has data barrier (dmb/dsb) instructions",
88 .subfeatures = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
89 },89 },
90};90};
9191
92pub const feature_dfb = Feature{92pub const feature_dfb = Feature{
93 .name = "dfb",93 .name = "dfb",
94 .description = "Has full data barrier (dfb) instruction",94 .description = "Has full data barrier (dfb) instruction",
95 .subfeatures = &[_]*const Feature {95 .dependencies = &[_]*const Feature {
96 },96 },
97};97};
9898
99pub const feature_dsp = Feature{99pub const feature_dsp = Feature{
100 .name = "dsp",100 .name = "dsp",
101 .description = "Supports DSP instructions in ARM and/or Thumb2",101 .description = "Supports DSP instructions in ARM and/or Thumb2",
102 .subfeatures = &[_]*const Feature {102 .dependencies = &[_]*const Feature {
103 },103 },
104};104};
105105
106pub const feature_dontWidenVmovs = Feature{106pub const feature_dontWidenVmovs = Feature{
107 .name = "dont-widen-vmovs",107 .name = "dont-widen-vmovs",
108 .description = "Don't widen VMOVS to VMOVD",108 .description = "Don't widen VMOVS to VMOVD",
109 .subfeatures = &[_]*const Feature {109 .dependencies = &[_]*const Feature {
110 },110 },
111};111};
112112
113pub const feature_dotprod = Feature{113pub const feature_dotprod = Feature{
114 .name = "dotprod",114 .name = "dotprod",
115 .description = "Enable support for dot product instructions",115 .description = "Enable support for dot product instructions",
116 .subfeatures = &[_]*const Feature {116 .dependencies = &[_]*const Feature {
117 &feature_fpregs,
118 &feature_d32,117 &feature_d32,
118 &feature_fpregs,
119 },119 },
120};120};
121121
122pub const feature_executeOnly = Feature{122pub const feature_executeOnly = Feature{
123 .name = "execute-only",123 .name = "execute-only",
124 .description = "Enable the generation of execute only code.",124 .description = "Enable the generation of execute only code.",
125 .subfeatures = &[_]*const Feature {125 .dependencies = &[_]*const Feature {
126 },126 },
127};127};
128128
129pub const feature_expandFpMlx = Feature{129pub const feature_expandFpMlx = Feature{
130 .name = "expand-fp-mlx",130 .name = "expand-fp-mlx",
131 .description = "Expand VFP/NEON MLA/MLS instructions",131 .description = "Expand VFP/NEON MLA/MLS instructions",
132 .subfeatures = &[_]*const Feature {132 .dependencies = &[_]*const Feature {
133 },133 },
134};134};
135135
136pub const feature_fp16 = Feature{136pub const feature_fp16 = Feature{
137 .name = "fp16",137 .name = "fp16",
138 .description = "Enable half-precision floating point",138 .description = "Enable half-precision floating point",
139 .subfeatures = &[_]*const Feature {139 .dependencies = &[_]*const Feature {
140 },140 },
141};141};
142142
143pub const feature_fp16fml = Feature{143pub const feature_fp16fml = Feature{
144 .name = "fp16fml",144 .name = "fp16fml",
145 .description = "Enable full half-precision floating point fml instructions",145 .description = "Enable full half-precision floating point fml instructions",
146 .subfeatures = &[_]*const Feature {146 .dependencies = &[_]*const Feature {
147 &feature_fp16,147 &feature_fp16,
148 &feature_fpregs,148 &feature_fpregs,
149 },149 },
...@@ -152,7 +152,7 @@ pub const feature_fp16fml = Feature{...@@ -152,7 +152,7 @@ pub const feature_fp16fml = Feature{
152pub const feature_fp64 = Feature{152pub const feature_fp64 = Feature{
153 .name = "fp64",153 .name = "fp64",
154 .description = "Floating point unit supports double precision",154 .description = "Floating point unit supports double precision",
155 .subfeatures = &[_]*const Feature {155 .dependencies = &[_]*const Feature {
156 &feature_fpregs,156 &feature_fpregs,
157 },157 },
158};158};
...@@ -160,24 +160,24 @@ pub const feature_fp64 = Feature{...@@ -160,24 +160,24 @@ pub const feature_fp64 = Feature{
160pub const feature_fpao = Feature{160pub const feature_fpao = Feature{
161 .name = "fpao",161 .name = "fpao",
162 .description = "Enable fast computation of positive address offsets",162 .description = "Enable fast computation of positive address offsets",
163 .subfeatures = &[_]*const Feature {163 .dependencies = &[_]*const Feature {
164 },164 },
165};165};
166166
167pub const feature_fpArmv8 = Feature{167pub const feature_fpArmv8 = Feature{
168 .name = "fp-armv8",168 .name = "fp-armv8",
169 .description = "Enable ARMv8 FP",169 .description = "Enable ARMv8 FP",
170 .subfeatures = &[_]*const Feature {170 .dependencies = &[_]*const Feature {
171 &feature_fp16,
172 &feature_fpregs,171 &feature_fpregs,
173 &feature_d32,172 &feature_d32,
173 &feature_fp16,
174 },174 },
175};175};
176176
177pub const feature_fpArmv8d16 = Feature{177pub const feature_fpArmv8d16 = Feature{
178 .name = "fp-armv8d16",178 .name = "fp-armv8d16",
179 .description = "Enable ARMv8 FP with only 16 d-registers",179 .description = "Enable ARMv8 FP with only 16 d-registers",
180 .subfeatures = &[_]*const Feature {180 .dependencies = &[_]*const Feature {
181 &feature_fp16,181 &feature_fp16,
182 &feature_fpregs,182 &feature_fpregs,
183 },183 },
...@@ -186,7 +186,7 @@ pub const feature_fpArmv8d16 = Feature{...@@ -186,7 +186,7 @@ pub const feature_fpArmv8d16 = Feature{
186pub const feature_fpArmv8d16sp = Feature{186pub const feature_fpArmv8d16sp = Feature{
187 .name = "fp-armv8d16sp",187 .name = "fp-armv8d16sp",
188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
189 .subfeatures = &[_]*const Feature {189 .dependencies = &[_]*const Feature {
190 &feature_fp16,190 &feature_fp16,
191 &feature_fpregs,191 &feature_fpregs,
192 },192 },
...@@ -195,24 +195,24 @@ pub const feature_fpArmv8d16sp = Feature{...@@ -195,24 +195,24 @@ pub const feature_fpArmv8d16sp = Feature{
195pub const feature_fpArmv8sp = Feature{195pub const feature_fpArmv8sp = Feature{
196 .name = "fp-armv8sp",196 .name = "fp-armv8sp",
197 .description = "Enable ARMv8 FP with no double precision",197 .description = "Enable ARMv8 FP with no double precision",
198 .subfeatures = &[_]*const Feature {198 .dependencies = &[_]*const Feature {
199 &feature_fp16,
200 &feature_fpregs,199 &feature_fpregs,
201 &feature_d32,200 &feature_d32,
201 &feature_fp16,
202 },202 },
203};203};
204204
205pub const feature_fpregs = Feature{205pub const feature_fpregs = Feature{
206 .name = "fpregs",206 .name = "fpregs",
207 .description = "Enable FP registers",207 .description = "Enable FP registers",
208 .subfeatures = &[_]*const Feature {208 .dependencies = &[_]*const Feature {
209 },209 },
210};210};
211211
212pub const feature_fpregs16 = Feature{212pub const feature_fpregs16 = Feature{
213 .name = "fpregs16",213 .name = "fpregs16",
214 .description = "Enable 16-bit FP registers",214 .description = "Enable 16-bit FP registers",
215 .subfeatures = &[_]*const Feature {215 .dependencies = &[_]*const Feature {
216 &feature_fpregs,216 &feature_fpregs,
217 },217 },
218};218};
...@@ -220,7 +220,7 @@ pub const feature_fpregs16 = Feature{...@@ -220,7 +220,7 @@ pub const feature_fpregs16 = Feature{
220pub const feature_fpregs64 = Feature{220pub const feature_fpregs64 = Feature{
221 .name = "fpregs64",221 .name = "fpregs64",
222 .description = "Enable 64-bit FP registers",222 .description = "Enable 64-bit FP registers",
223 .subfeatures = &[_]*const Feature {223 .dependencies = &[_]*const Feature {
224 &feature_fpregs,224 &feature_fpregs,
225 },225 },
226};226};
...@@ -228,314 +228,314 @@ pub const feature_fpregs64 = Feature{...@@ -228,314 +228,314 @@ pub const feature_fpregs64 = Feature{
228pub const feature_fullfp16 = Feature{228pub const feature_fullfp16 = Feature{
229 .name = "fullfp16",229 .name = "fullfp16",
230 .description = "Enable full half-precision floating point",230 .description = "Enable full half-precision floating point",
231 .subfeatures = &[_]*const Feature {231 .dependencies = &[_]*const Feature {
232 &feature_fp16,
233 &feature_fpregs,232 &feature_fpregs,
233 &feature_fp16,
234 },234 },
235};235};
236236
237pub const feature_fuseAes = Feature{237pub const feature_fuseAes = Feature{
238 .name = "fuse-aes",238 .name = "fuse-aes",
239 .description = "CPU fuses AES crypto operations",239 .description = "CPU fuses AES crypto operations",
240 .subfeatures = &[_]*const Feature {240 .dependencies = &[_]*const Feature {
241 },241 },
242};242};
243243
244pub const feature_fuseLiterals = Feature{244pub const feature_fuseLiterals = Feature{
245 .name = "fuse-literals",245 .name = "fuse-literals",
246 .description = "CPU fuses literal generation operations",246 .description = "CPU fuses literal generation operations",
247 .subfeatures = &[_]*const Feature {247 .dependencies = &[_]*const Feature {
248 },248 },
249};249};
250250
251pub const feature_hwdivArm = Feature{251pub const feature_hwdivArm = Feature{
252 .name = "hwdiv-arm",252 .name = "hwdiv-arm",
253 .description = "Enable divide instructions in ARM mode",253 .description = "Enable divide instructions in ARM mode",
254 .subfeatures = &[_]*const Feature {254 .dependencies = &[_]*const Feature {
255 },255 },
256};256};
257257
258pub const feature_hwdiv = Feature{258pub const feature_hwdiv = Feature{
259 .name = "hwdiv",259 .name = "hwdiv",
260 .description = "Enable divide instructions in Thumb",260 .description = "Enable divide instructions in Thumb",
261 .subfeatures = &[_]*const Feature {261 .dependencies = &[_]*const Feature {
262 },262 },
263};263};
264264
265pub const feature_noBranchPredictor = Feature{265pub const feature_noBranchPredictor = Feature{
266 .name = "no-branch-predictor",266 .name = "no-branch-predictor",
267 .description = "Has no branch predictor",267 .description = "Has no branch predictor",
268 .subfeatures = &[_]*const Feature {268 .dependencies = &[_]*const Feature {
269 },269 },
270};270};
271271
272pub const feature_retAddrStack = Feature{272pub const feature_retAddrStack = Feature{
273 .name = "ret-addr-stack",273 .name = "ret-addr-stack",
274 .description = "Has return address stack",274 .description = "Has return address stack",
275 .subfeatures = &[_]*const Feature {275 .dependencies = &[_]*const Feature {
276 },276 },
277};277};
278278
279pub const feature_slowfpvmlx = Feature{279pub const feature_slowfpvmlx = Feature{
280 .name = "slowfpvmlx",280 .name = "slowfpvmlx",
281 .description = "Disable VFP / NEON MAC instructions",281 .description = "Disable VFP / NEON MAC instructions",
282 .subfeatures = &[_]*const Feature {282 .dependencies = &[_]*const Feature {
283 },283 },
284};284};
285285
286pub const feature_vmlxHazards = Feature{286pub const feature_vmlxHazards = Feature{
287 .name = "vmlx-hazards",287 .name = "vmlx-hazards",
288 .description = "Has VMLx hazards",288 .description = "Has VMLx hazards",
289 .subfeatures = &[_]*const Feature {289 .dependencies = &[_]*const Feature {
290 },290 },
291};291};
292292
293pub const feature_lob = Feature{293pub const feature_lob = Feature{
294 .name = "lob",294 .name = "lob",
295 .description = "Enable Low Overhead Branch extensions",295 .description = "Enable Low Overhead Branch extensions",
296 .subfeatures = &[_]*const Feature {296 .dependencies = &[_]*const Feature {
297 },297 },
298};298};
299299
300pub const feature_longCalls = Feature{300pub const feature_longCalls = Feature{
301 .name = "long-calls",301 .name = "long-calls",
302 .description = "Generate calls via indirect call instructions",302 .description = "Generate calls via indirect call instructions",
303 .subfeatures = &[_]*const Feature {303 .dependencies = &[_]*const Feature {
304 },304 },
305};305};
306306
307pub const feature_mclass = Feature{307pub const feature_mclass = Feature{
308 .name = "mclass",308 .name = "mclass",
309 .description = "Is microcontroller profile ('M' series)",309 .description = "Is microcontroller profile ('M' series)",
310 .subfeatures = &[_]*const Feature {310 .dependencies = &[_]*const Feature {
311 },311 },
312};312};
313313
314pub const feature_mp = Feature{314pub const feature_mp = Feature{
315 .name = "mp",315 .name = "mp",
316 .description = "Supports Multiprocessing extension",316 .description = "Supports Multiprocessing extension",
317 .subfeatures = &[_]*const Feature {317 .dependencies = &[_]*const Feature {
318 },318 },
319};319};
320320
321pub const feature_mve1beat = Feature{321pub const feature_mve1beat = Feature{
322 .name = "mve1beat",322 .name = "mve1beat",
323 .description = "Model MVE instructions as a 1 beat per tick architecture",323 .description = "Model MVE instructions as a 1 beat per tick architecture",
324 .subfeatures = &[_]*const Feature {324 .dependencies = &[_]*const Feature {
325 },325 },
326};326};
327327
328pub const feature_mve2beat = Feature{328pub const feature_mve2beat = Feature{
329 .name = "mve2beat",329 .name = "mve2beat",
330 .description = "Model MVE instructions as a 2 beats per tick architecture",330 .description = "Model MVE instructions as a 2 beats per tick architecture",
331 .subfeatures = &[_]*const Feature {331 .dependencies = &[_]*const Feature {
332 },332 },
333};333};
334334
335pub const feature_mve4beat = Feature{335pub const feature_mve4beat = Feature{
336 .name = "mve4beat",336 .name = "mve4beat",
337 .description = "Model MVE instructions as a 4 beats per tick architecture",337 .description = "Model MVE instructions as a 4 beats per tick architecture",
338 .subfeatures = &[_]*const Feature {338 .dependencies = &[_]*const Feature {
339 },339 },
340};340};
341341
342pub const feature_muxedUnits = Feature{342pub const feature_muxedUnits = Feature{
343 .name = "muxed-units",343 .name = "muxed-units",
344 .description = "Has muxed AGU and NEON/FPU",344 .description = "Has muxed AGU and NEON/FPU",
345 .subfeatures = &[_]*const Feature {345 .dependencies = &[_]*const Feature {
346 },346 },
347};347};
348348
349pub const feature_neon = Feature{349pub const feature_neon = Feature{
350 .name = "neon",350 .name = "neon",
351 .description = "Enable NEON instructions",351 .description = "Enable NEON instructions",
352 .subfeatures = &[_]*const Feature {352 .dependencies = &[_]*const Feature {
353 &feature_fpregs,
354 &feature_d32,353 &feature_d32,
354 &feature_fpregs,
355 },355 },
356};356};
357357
358pub const feature_neonfp = Feature{358pub const feature_neonfp = Feature{
359 .name = "neonfp",359 .name = "neonfp",
360 .description = "Use NEON for single precision FP",360 .description = "Use NEON for single precision FP",
361 .subfeatures = &[_]*const Feature {361 .dependencies = &[_]*const Feature {
362 },362 },
363};363};
364364
365pub const feature_neonFpmovs = Feature{365pub const feature_neonFpmovs = Feature{
366 .name = "neon-fpmovs",366 .name = "neon-fpmovs",
367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
368 .subfeatures = &[_]*const Feature {368 .dependencies = &[_]*const Feature {
369 },369 },
370};370};
371371
372pub const feature_naclTrap = Feature{372pub const feature_naclTrap = Feature{
373 .name = "nacl-trap",373 .name = "nacl-trap",
374 .description = "NaCl trap",374 .description = "NaCl trap",
375 .subfeatures = &[_]*const Feature {375 .dependencies = &[_]*const Feature {
376 },376 },
377};377};
378378
379pub const feature_noarm = Feature{379pub const feature_noarm = Feature{
380 .name = "noarm",380 .name = "noarm",
381 .description = "Does not support ARM mode execution",381 .description = "Does not support ARM mode execution",
382 .subfeatures = &[_]*const Feature {382 .dependencies = &[_]*const Feature {
383 },383 },
384};384};
385385
386pub const feature_noMovt = Feature{386pub const feature_noMovt = Feature{
387 .name = "no-movt",387 .name = "no-movt",
388 .description = "Don't use movt/movw pairs for 32-bit imms",388 .description = "Don't use movt/movw pairs for 32-bit imms",
389 .subfeatures = &[_]*const Feature {389 .dependencies = &[_]*const Feature {
390 },390 },
391};391};
392392
393pub const feature_noNegImmediates = Feature{393pub const feature_noNegImmediates = Feature{
394 .name = "no-neg-immediates",394 .name = "no-neg-immediates",
395 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",395 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
396 .subfeatures = &[_]*const Feature {396 .dependencies = &[_]*const Feature {
397 },397 },
398};398};
399399
400pub const feature_disablePostraScheduler = Feature{400pub const feature_disablePostraScheduler = Feature{
401 .name = "disable-postra-scheduler",401 .name = "disable-postra-scheduler",
402 .description = "Don't schedule again after register allocation",402 .description = "Don't schedule again after register allocation",
403 .subfeatures = &[_]*const Feature {403 .dependencies = &[_]*const Feature {
404 },404 },
405};405};
406406
407pub const feature_nonpipelinedVfp = Feature{407pub const feature_nonpipelinedVfp = Feature{
408 .name = "nonpipelined-vfp",408 .name = "nonpipelined-vfp",
409 .description = "VFP instructions are not pipelined",409 .description = "VFP instructions are not pipelined",
410 .subfeatures = &[_]*const Feature {410 .dependencies = &[_]*const Feature {
411 },411 },
412};412};
413413
414pub const feature_perfmon = Feature{414pub const feature_perfmon = Feature{
415 .name = "perfmon",415 .name = "perfmon",
416 .description = "Enable support for Performance Monitor extensions",416 .description = "Enable support for Performance Monitor extensions",
417 .subfeatures = &[_]*const Feature {417 .dependencies = &[_]*const Feature {
418 },418 },
419};419};
420420
421pub const feature_bit32 = Feature{421pub const feature_bit32 = Feature{
422 .name = "32bit",422 .name = "32bit",
423 .description = "Prefer 32-bit Thumb instrs",423 .description = "Prefer 32-bit Thumb instrs",
424 .subfeatures = &[_]*const Feature {424 .dependencies = &[_]*const Feature {
425 },425 },
426};426};
427427
428pub const feature_preferIshst = Feature{428pub const feature_preferIshst = Feature{
429 .name = "prefer-ishst",429 .name = "prefer-ishst",
430 .description = "Prefer ISHST barriers",430 .description = "Prefer ISHST barriers",
431 .subfeatures = &[_]*const Feature {431 .dependencies = &[_]*const Feature {
432 },432 },
433};433};
434434
435pub const feature_loopAlign = Feature{435pub const feature_loopAlign = Feature{
436 .name = "loop-align",436 .name = "loop-align",
437 .description = "Prefer 32-bit alignment for loops",437 .description = "Prefer 32-bit alignment for loops",
438 .subfeatures = &[_]*const Feature {438 .dependencies = &[_]*const Feature {
439 },439 },
440};440};
441441
442pub const feature_preferVmovsr = Feature{442pub const feature_preferVmovsr = Feature{
443 .name = "prefer-vmovsr",443 .name = "prefer-vmovsr",
444 .description = "Prefer VMOVSR",444 .description = "Prefer VMOVSR",
445 .subfeatures = &[_]*const Feature {445 .dependencies = &[_]*const Feature {
446 },446 },
447};447};
448448
449pub const feature_profUnpr = Feature{449pub const feature_profUnpr = Feature{
450 .name = "prof-unpr",450 .name = "prof-unpr",
451 .description = "Is profitable to unpredicate",451 .description = "Is profitable to unpredicate",
452 .subfeatures = &[_]*const Feature {452 .dependencies = &[_]*const Feature {
453 },453 },
454};454};
455455
456pub const feature_ras = Feature{456pub const feature_ras = Feature{
457 .name = "ras",457 .name = "ras",
458 .description = "Enable Reliability, Availability and Serviceability extensions",458 .description = "Enable Reliability, Availability and Serviceability extensions",
459 .subfeatures = &[_]*const Feature {459 .dependencies = &[_]*const Feature {
460 },460 },
461};461};
462462
463pub const feature_rclass = Feature{463pub const feature_rclass = Feature{
464 .name = "rclass",464 .name = "rclass",
465 .description = "Is realtime profile ('R' series)",465 .description = "Is realtime profile ('R' series)",
466 .subfeatures = &[_]*const Feature {466 .dependencies = &[_]*const Feature {
467 },467 },
468};468};
469469
470pub const feature_readTpHard = Feature{470pub const feature_readTpHard = Feature{
471 .name = "read-tp-hard",471 .name = "read-tp-hard",
472 .description = "Reading thread pointer from register",472 .description = "Reading thread pointer from register",
473 .subfeatures = &[_]*const Feature {473 .dependencies = &[_]*const Feature {
474 },474 },
475};475};
476476
477pub const feature_reserveR9 = Feature{477pub const feature_reserveR9 = Feature{
478 .name = "reserve-r9",478 .name = "reserve-r9",
479 .description = "Reserve R9, making it unavailable as GPR",479 .description = "Reserve R9, making it unavailable as GPR",
480 .subfeatures = &[_]*const Feature {480 .dependencies = &[_]*const Feature {
481 },481 },
482};482};
483483
484pub const feature_sb = Feature{484pub const feature_sb = Feature{
485 .name = "sb",485 .name = "sb",
486 .description = "Enable v8.5a Speculation Barrier",486 .description = "Enable v8.5a Speculation Barrier",
487 .subfeatures = &[_]*const Feature {487 .dependencies = &[_]*const Feature {
488 },488 },
489};489};
490490
491pub const feature_sha2 = Feature{491pub const feature_sha2 = Feature{
492 .name = "sha2",492 .name = "sha2",
493 .description = "Enable SHA1 and SHA256 support",493 .description = "Enable SHA1 and SHA256 support",
494 .subfeatures = &[_]*const Feature {494 .dependencies = &[_]*const Feature {
495 &feature_fpregs,
496 &feature_d32,495 &feature_d32,
496 &feature_fpregs,
497 },497 },
498};498};
499499
500pub const feature_slowFpBrcc = Feature{500pub const feature_slowFpBrcc = Feature{
501 .name = "slow-fp-brcc",501 .name = "slow-fp-brcc",
502 .description = "FP compare + branch is slow",502 .description = "FP compare + branch is slow",
503 .subfeatures = &[_]*const Feature {503 .dependencies = &[_]*const Feature {
504 },504 },
505};505};
506506
507pub const feature_slowLoadDSubreg = Feature{507pub const feature_slowLoadDSubreg = Feature{
508 .name = "slow-load-D-subreg",508 .name = "slow-load-D-subreg",
509 .description = "Loading into D subregs is slow",509 .description = "Loading into D subregs is slow",
510 .subfeatures = &[_]*const Feature {510 .dependencies = &[_]*const Feature {
511 },511 },
512};512};
513513
514pub const feature_slowOddReg = Feature{514pub const feature_slowOddReg = Feature{
515 .name = "slow-odd-reg",515 .name = "slow-odd-reg",
516 .description = "VLDM/VSTM starting with an odd register is slow",516 .description = "VLDM/VSTM starting with an odd register is slow",
517 .subfeatures = &[_]*const Feature {517 .dependencies = &[_]*const Feature {
518 },518 },
519};519};
520520
521pub const feature_slowVdup32 = Feature{521pub const feature_slowVdup32 = Feature{
522 .name = "slow-vdup32",522 .name = "slow-vdup32",
523 .description = "Has slow VDUP32 - prefer VMOV",523 .description = "Has slow VDUP32 - prefer VMOV",
524 .subfeatures = &[_]*const Feature {524 .dependencies = &[_]*const Feature {
525 },525 },
526};526};
527527
528pub const feature_slowVgetlni32 = Feature{528pub const feature_slowVgetlni32 = Feature{
529 .name = "slow-vgetlni32",529 .name = "slow-vgetlni32",
530 .description = "Has slow VGETLNi32 - prefer VMOV",530 .description = "Has slow VGETLNi32 - prefer VMOV",
531 .subfeatures = &[_]*const Feature {531 .dependencies = &[_]*const Feature {
532 },532 },
533};533};
534534
535pub const feature_splatVfpNeon = Feature{535pub const feature_splatVfpNeon = Feature{
536 .name = "splat-vfp-neon",536 .name = "splat-vfp-neon",
537 .description = "Splat register from VFP to NEON",537 .description = "Splat register from VFP to NEON",
538 .subfeatures = &[_]*const Feature {538 .dependencies = &[_]*const Feature {
539 &feature_dontWidenVmovs,539 &feature_dontWidenVmovs,
540 },540 },
541};541};
...@@ -543,56 +543,56 @@ pub const feature_splatVfpNeon = Feature{...@@ -543,56 +543,56 @@ pub const feature_splatVfpNeon = Feature{
543pub const feature_strictAlign = Feature{543pub const feature_strictAlign = Feature{
544 .name = "strict-align",544 .name = "strict-align",
545 .description = "Disallow all unaligned memory access",545 .description = "Disallow all unaligned memory access",
546 .subfeatures = &[_]*const Feature {546 .dependencies = &[_]*const Feature {
547 },547 },
548};548};
549549
550pub const feature_thumb2 = Feature{550pub const feature_thumb2 = Feature{
551 .name = "thumb2",551 .name = "thumb2",
552 .description = "Enable Thumb2 instructions",552 .description = "Enable Thumb2 instructions",
553 .subfeatures = &[_]*const Feature {553 .dependencies = &[_]*const Feature {
554 },554 },
555};555};
556556
557pub const feature_trustzone = Feature{557pub const feature_trustzone = Feature{
558 .name = "trustzone",558 .name = "trustzone",
559 .description = "Enable support for TrustZone security extensions",559 .description = "Enable support for TrustZone security extensions",
560 .subfeatures = &[_]*const Feature {560 .dependencies = &[_]*const Feature {
561 },561 },
562};562};
563563
564pub const feature_useAa = Feature{564pub const feature_useAa = Feature{
565 .name = "use-aa",565 .name = "use-aa",
566 .description = "Use alias analysis during codegen",566 .description = "Use alias analysis during codegen",
567 .subfeatures = &[_]*const Feature {567 .dependencies = &[_]*const Feature {
568 },568 },
569};569};
570570
571pub const feature_useMisched = Feature{571pub const feature_useMisched = Feature{
572 .name = "use-misched",572 .name = "use-misched",
573 .description = "Use the MachineScheduler",573 .description = "Use the MachineScheduler",
574 .subfeatures = &[_]*const Feature {574 .dependencies = &[_]*const Feature {
575 },575 },
576};576};
577577
578pub const feature_wideStrideVfp = Feature{578pub const feature_wideStrideVfp = Feature{
579 .name = "wide-stride-vfp",579 .name = "wide-stride-vfp",
580 .description = "Use a wide stride when allocating VFP registers",580 .description = "Use a wide stride when allocating VFP registers",
581 .subfeatures = &[_]*const Feature {581 .dependencies = &[_]*const Feature {
582 },582 },
583};583};
584584
585pub const feature_v7clrex = Feature{585pub const feature_v7clrex = Feature{
586 .name = "v7clrex",586 .name = "v7clrex",
587 .description = "Has v7 clrex instruction",587 .description = "Has v7 clrex instruction",
588 .subfeatures = &[_]*const Feature {588 .dependencies = &[_]*const Feature {
589 },589 },
590};590};
591591
592pub const feature_vfp2 = Feature{592pub const feature_vfp2 = Feature{
593 .name = "vfp2",593 .name = "vfp2",
594 .description = "Enable VFP2 instructions",594 .description = "Enable VFP2 instructions",
595 .subfeatures = &[_]*const Feature {595 .dependencies = &[_]*const Feature {
596 &feature_fpregs,596 &feature_fpregs,
597 },597 },
598};598};
...@@ -600,7 +600,7 @@ pub const feature_vfp2 = Feature{...@@ -600,7 +600,7 @@ pub const feature_vfp2 = Feature{
600pub const feature_vfp2sp = Feature{600pub const feature_vfp2sp = Feature{
601 .name = "vfp2sp",601 .name = "vfp2sp",
602 .description = "Enable VFP2 instructions with no double precision",602 .description = "Enable VFP2 instructions with no double precision",
603 .subfeatures = &[_]*const Feature {603 .dependencies = &[_]*const Feature {
604 &feature_fpregs,604 &feature_fpregs,
605 },605 },
606};606};
...@@ -608,16 +608,16 @@ pub const feature_vfp2sp = Feature{...@@ -608,16 +608,16 @@ pub const feature_vfp2sp = Feature{
608pub const feature_vfp3 = Feature{608pub const feature_vfp3 = Feature{
609 .name = "vfp3",609 .name = "vfp3",
610 .description = "Enable VFP3 instructions",610 .description = "Enable VFP3 instructions",
611 .subfeatures = &[_]*const Feature {611 .dependencies = &[_]*const Feature {
612 &feature_fpregs,
613 &feature_d32,612 &feature_d32,
613 &feature_fpregs,
614 },614 },
615};615};
616616
617pub const feature_vfp3d16 = Feature{617pub const feature_vfp3d16 = Feature{
618 .name = "vfp3d16",618 .name = "vfp3d16",
619 .description = "Enable VFP3 instructions with only 16 d-registers",619 .description = "Enable VFP3 instructions with only 16 d-registers",
620 .subfeatures = &[_]*const Feature {620 .dependencies = &[_]*const Feature {
621 &feature_fpregs,621 &feature_fpregs,
622 },622 },
623};623};
...@@ -625,7 +625,7 @@ pub const feature_vfp3d16 = Feature{...@@ -625,7 +625,7 @@ pub const feature_vfp3d16 = Feature{
625pub const feature_vfp3d16sp = Feature{625pub const feature_vfp3d16sp = Feature{
626 .name = "vfp3d16sp",626 .name = "vfp3d16sp",
627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
628 .subfeatures = &[_]*const Feature {628 .dependencies = &[_]*const Feature {
629 &feature_fpregs,629 &feature_fpregs,
630 },630 },
631};631};
...@@ -633,61 +633,61 @@ pub const feature_vfp3d16sp = Feature{...@@ -633,61 +633,61 @@ pub const feature_vfp3d16sp = Feature{
633pub const feature_vfp3sp = Feature{633pub const feature_vfp3sp = Feature{
634 .name = "vfp3sp",634 .name = "vfp3sp",
635 .description = "Enable VFP3 instructions with no double precision",635 .description = "Enable VFP3 instructions with no double precision",
636 .subfeatures = &[_]*const Feature {636 .dependencies = &[_]*const Feature {
637 &feature_fpregs,
638 &feature_d32,637 &feature_d32,
638 &feature_fpregs,
639 },639 },
640};640};
641641
642pub const feature_vfp4 = Feature{642pub const feature_vfp4 = Feature{
643 .name = "vfp4",643 .name = "vfp4",
644 .description = "Enable VFP4 instructions",644 .description = "Enable VFP4 instructions",
645 .subfeatures = &[_]*const Feature {645 .dependencies = &[_]*const Feature {
646 &feature_fp16,
647 &feature_fpregs,646 &feature_fpregs,
648 &feature_d32,647 &feature_d32,
648 &feature_fp16,
649 },649 },
650};650};
651651
652pub const feature_vfp4d16 = Feature{652pub const feature_vfp4d16 = Feature{
653 .name = "vfp4d16",653 .name = "vfp4d16",
654 .description = "Enable VFP4 instructions with only 16 d-registers",654 .description = "Enable VFP4 instructions with only 16 d-registers",
655 .subfeatures = &[_]*const Feature {655 .dependencies = &[_]*const Feature {
656 &feature_fp16,
657 &feature_fpregs,656 &feature_fpregs,
657 &feature_fp16,
658 },658 },
659};659};
660660
661pub const feature_vfp4d16sp = Feature{661pub const feature_vfp4d16sp = Feature{
662 .name = "vfp4d16sp",662 .name = "vfp4d16sp",
663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
664 .subfeatures = &[_]*const Feature {664 .dependencies = &[_]*const Feature {
665 &feature_fp16,
666 &feature_fpregs,665 &feature_fpregs,
666 &feature_fp16,
667 },667 },
668};668};
669669
670pub const feature_vfp4sp = Feature{670pub const feature_vfp4sp = Feature{
671 .name = "vfp4sp",671 .name = "vfp4sp",
672 .description = "Enable VFP4 instructions with no double precision",672 .description = "Enable VFP4 instructions with no double precision",
673 .subfeatures = &[_]*const Feature {673 .dependencies = &[_]*const Feature {
674 &feature_fp16,
675 &feature_fpregs,674 &feature_fpregs,
676 &feature_d32,675 &feature_d32,
676 &feature_fp16,
677 },677 },
678};678};
679679
680pub const feature_vmlxForwarding = Feature{680pub const feature_vmlxForwarding = Feature{
681 .name = "vmlx-forwarding",681 .name = "vmlx-forwarding",
682 .description = "Has multiplier accumulator forwarding",682 .description = "Has multiplier accumulator forwarding",
683 .subfeatures = &[_]*const Feature {683 .dependencies = &[_]*const Feature {
684 },684 },
685};685};
686686
687pub const feature_virtualization = Feature{687pub const feature_virtualization = Feature{
688 .name = "virtualization",688 .name = "virtualization",
689 .description = "Supports Virtualization extension",689 .description = "Supports Virtualization extension",
690 .subfeatures = &[_]*const Feature {690 .dependencies = &[_]*const Feature {
691 &feature_hwdiv,691 &feature_hwdiv,
692 &feature_hwdivArm,692 &feature_hwdivArm,
693 },693 },
...@@ -696,7 +696,7 @@ pub const feature_virtualization = Feature{...@@ -696,7 +696,7 @@ pub const feature_virtualization = Feature{
696pub const feature_zcz = Feature{696pub const feature_zcz = Feature{
697 .name = "zcz",697 .name = "zcz",
698 .description = "Has zero-cycle zeroing instructions",698 .description = "Has zero-cycle zeroing instructions",
699 .subfeatures = &[_]*const Feature {699 .dependencies = &[_]*const Feature {
700 },700 },
701};701};
702702
...@@ -799,42 +799,42 @@ pub const features = &[_]*const Feature {...@@ -799,42 +799,42 @@ pub const features = &[_]*const Feature {
799pub const cpu_arm1020e = Cpu{799pub const cpu_arm1020e = Cpu{
800 .name = "arm1020e",800 .name = "arm1020e",
801 .llvm_name = "arm1020e",801 .llvm_name = "arm1020e",
802 .subfeatures = &[_]*const Feature {802 .dependencies = &[_]*const Feature {
803 },803 },
804};804};
805805
806pub const cpu_arm1020t = Cpu{806pub const cpu_arm1020t = Cpu{
807 .name = "arm1020t",807 .name = "arm1020t",
808 .llvm_name = "arm1020t",808 .llvm_name = "arm1020t",
809 .subfeatures = &[_]*const Feature {809 .dependencies = &[_]*const Feature {
810 },810 },
811};811};
812812
813pub const cpu_arm1022e = Cpu{813pub const cpu_arm1022e = Cpu{
814 .name = "arm1022e",814 .name = "arm1022e",
815 .llvm_name = "arm1022e",815 .llvm_name = "arm1022e",
816 .subfeatures = &[_]*const Feature {816 .dependencies = &[_]*const Feature {
817 },817 },
818};818};
819819
820pub const cpu_arm10e = Cpu{820pub const cpu_arm10e = Cpu{
821 .name = "arm10e",821 .name = "arm10e",
822 .llvm_name = "arm10e",822 .llvm_name = "arm10e",
823 .subfeatures = &[_]*const Feature {823 .dependencies = &[_]*const Feature {
824 },824 },
825};825};
826826
827pub const cpu_arm10tdmi = Cpu{827pub const cpu_arm10tdmi = Cpu{
828 .name = "arm10tdmi",828 .name = "arm10tdmi",
829 .llvm_name = "arm10tdmi",829 .llvm_name = "arm10tdmi",
830 .subfeatures = &[_]*const Feature {830 .dependencies = &[_]*const Feature {
831 },831 },
832};832};
833833
834pub const cpu_arm1136jS = Cpu{834pub const cpu_arm1136jS = Cpu{
835 .name = "arm1136j-s",835 .name = "arm1136j-s",
836 .llvm_name = "arm1136j-s",836 .llvm_name = "arm1136j-s",
837 .subfeatures = &[_]*const Feature {837 .dependencies = &[_]*const Feature {
838 &feature_dsp,838 &feature_dsp,
839 },839 },
840};840};
...@@ -842,7 +842,7 @@ pub const cpu_arm1136jS = Cpu{...@@ -842,7 +842,7 @@ pub const cpu_arm1136jS = Cpu{
842pub const cpu_arm1136jfS = Cpu{842pub const cpu_arm1136jfS = Cpu{
843 .name = "arm1136jf-s",843 .name = "arm1136jf-s",
844 .llvm_name = "arm1136jf-s",844 .llvm_name = "arm1136jf-s",
845 .subfeatures = &[_]*const Feature {845 .dependencies = &[_]*const Feature {
846 &feature_dsp,846 &feature_dsp,
847 &feature_slowfpvmlx,847 &feature_slowfpvmlx,
848 &feature_fpregs,848 &feature_fpregs,
...@@ -853,18 +853,18 @@ pub const cpu_arm1136jfS = Cpu{...@@ -853,18 +853,18 @@ pub const cpu_arm1136jfS = Cpu{
853pub const cpu_arm1156t2S = Cpu{853pub const cpu_arm1156t2S = Cpu{
854 .name = "arm1156t2-s",854 .name = "arm1156t2-s",
855 .llvm_name = "arm1156t2-s",855 .llvm_name = "arm1156t2-s",
856 .subfeatures = &[_]*const Feature {856 .dependencies = &[_]*const Feature {
857 &feature_dsp,
858 &feature_thumb2,857 &feature_thumb2,
858 &feature_dsp,
859 },859 },
860};860};
861861
862pub const cpu_arm1156t2fS = Cpu{862pub const cpu_arm1156t2fS = Cpu{
863 .name = "arm1156t2f-s",863 .name = "arm1156t2f-s",
864 .llvm_name = "arm1156t2f-s",864 .llvm_name = "arm1156t2f-s",
865 .subfeatures = &[_]*const Feature {865 .dependencies = &[_]*const Feature {
866 &feature_dsp,
867 &feature_thumb2,866 &feature_thumb2,
867 &feature_dsp,
868 &feature_slowfpvmlx,868 &feature_slowfpvmlx,
869 &feature_fpregs,869 &feature_fpregs,
870 &feature_vfp2,870 &feature_vfp2,
...@@ -874,7 +874,7 @@ pub const cpu_arm1156t2fS = Cpu{...@@ -874,7 +874,7 @@ pub const cpu_arm1156t2fS = Cpu{
874pub const cpu_arm1176jS = Cpu{874pub const cpu_arm1176jS = Cpu{
875 .name = "arm1176j-s",875 .name = "arm1176j-s",
876 .llvm_name = "arm1176j-s",876 .llvm_name = "arm1176j-s",
877 .subfeatures = &[_]*const Feature {877 .dependencies = &[_]*const Feature {
878 &feature_trustzone,878 &feature_trustzone,
879 },879 },
880};880};
...@@ -882,7 +882,7 @@ pub const cpu_arm1176jS = Cpu{...@@ -882,7 +882,7 @@ pub const cpu_arm1176jS = Cpu{
882pub const cpu_arm1176jzS = Cpu{882pub const cpu_arm1176jzS = Cpu{
883 .name = "arm1176jz-s",883 .name = "arm1176jz-s",
884 .llvm_name = "arm1176jz-s",884 .llvm_name = "arm1176jz-s",
885 .subfeatures = &[_]*const Feature {885 .dependencies = &[_]*const Feature {
886 &feature_trustzone,886 &feature_trustzone,
887 },887 },
888};888};
...@@ -890,7 +890,7 @@ pub const cpu_arm1176jzS = Cpu{...@@ -890,7 +890,7 @@ pub const cpu_arm1176jzS = Cpu{
890pub const cpu_arm1176jzfS = Cpu{890pub const cpu_arm1176jzfS = Cpu{
891 .name = "arm1176jzf-s",891 .name = "arm1176jzf-s",
892 .llvm_name = "arm1176jzf-s",892 .llvm_name = "arm1176jzf-s",
893 .subfeatures = &[_]*const Feature {893 .dependencies = &[_]*const Feature {
894 &feature_trustzone,894 &feature_trustzone,
895 &feature_slowfpvmlx,895 &feature_slowfpvmlx,
896 &feature_fpregs,896 &feature_fpregs,
...@@ -901,134 +901,134 @@ pub const cpu_arm1176jzfS = Cpu{...@@ -901,134 +901,134 @@ pub const cpu_arm1176jzfS = Cpu{
901pub const cpu_arm710t = Cpu{901pub const cpu_arm710t = Cpu{
902 .name = "arm710t",902 .name = "arm710t",
903 .llvm_name = "arm710t",903 .llvm_name = "arm710t",
904 .subfeatures = &[_]*const Feature {904 .dependencies = &[_]*const Feature {
905 },905 },
906};906};
907907
908pub const cpu_arm720t = Cpu{908pub const cpu_arm720t = Cpu{
909 .name = "arm720t",909 .name = "arm720t",
910 .llvm_name = "arm720t",910 .llvm_name = "arm720t",
911 .subfeatures = &[_]*const Feature {911 .dependencies = &[_]*const Feature {
912 },912 },
913};913};
914914
915pub const cpu_arm7tdmi = Cpu{915pub const cpu_arm7tdmi = Cpu{
916 .name = "arm7tdmi",916 .name = "arm7tdmi",
917 .llvm_name = "arm7tdmi",917 .llvm_name = "arm7tdmi",
918 .subfeatures = &[_]*const Feature {918 .dependencies = &[_]*const Feature {
919 },919 },
920};920};
921921
922pub const cpu_arm7tdmiS = Cpu{922pub const cpu_arm7tdmiS = Cpu{
923 .name = "arm7tdmi-s",923 .name = "arm7tdmi-s",
924 .llvm_name = "arm7tdmi-s",924 .llvm_name = "arm7tdmi-s",
925 .subfeatures = &[_]*const Feature {925 .dependencies = &[_]*const Feature {
926 },926 },
927};927};
928928
929pub const cpu_arm8 = Cpu{929pub const cpu_arm8 = Cpu{
930 .name = "arm8",930 .name = "arm8",
931 .llvm_name = "arm8",931 .llvm_name = "arm8",
932 .subfeatures = &[_]*const Feature {932 .dependencies = &[_]*const Feature {
933 },933 },
934};934};
935935
936pub const cpu_arm810 = Cpu{936pub const cpu_arm810 = Cpu{
937 .name = "arm810",937 .name = "arm810",
938 .llvm_name = "arm810",938 .llvm_name = "arm810",
939 .subfeatures = &[_]*const Feature {939 .dependencies = &[_]*const Feature {
940 },940 },
941};941};
942942
943pub const cpu_arm9 = Cpu{943pub const cpu_arm9 = Cpu{
944 .name = "arm9",944 .name = "arm9",
945 .llvm_name = "arm9",945 .llvm_name = "arm9",
946 .subfeatures = &[_]*const Feature {946 .dependencies = &[_]*const Feature {
947 },947 },
948};948};
949949
950pub const cpu_arm920 = Cpu{950pub const cpu_arm920 = Cpu{
951 .name = "arm920",951 .name = "arm920",
952 .llvm_name = "arm920",952 .llvm_name = "arm920",
953 .subfeatures = &[_]*const Feature {953 .dependencies = &[_]*const Feature {
954 },954 },
955};955};
956956
957pub const cpu_arm920t = Cpu{957pub const cpu_arm920t = Cpu{
958 .name = "arm920t",958 .name = "arm920t",
959 .llvm_name = "arm920t",959 .llvm_name = "arm920t",
960 .subfeatures = &[_]*const Feature {960 .dependencies = &[_]*const Feature {
961 },961 },
962};962};
963963
964pub const cpu_arm922t = Cpu{964pub const cpu_arm922t = Cpu{
965 .name = "arm922t",965 .name = "arm922t",
966 .llvm_name = "arm922t",966 .llvm_name = "arm922t",
967 .subfeatures = &[_]*const Feature {967 .dependencies = &[_]*const Feature {
968 },968 },
969};969};
970970
971pub const cpu_arm926ejS = Cpu{971pub const cpu_arm926ejS = Cpu{
972 .name = "arm926ej-s",972 .name = "arm926ej-s",
973 .llvm_name = "arm926ej-s",973 .llvm_name = "arm926ej-s",
974 .subfeatures = &[_]*const Feature {974 .dependencies = &[_]*const Feature {
975 },975 },
976};976};
977977
978pub const cpu_arm940t = Cpu{978pub const cpu_arm940t = Cpu{
979 .name = "arm940t",979 .name = "arm940t",
980 .llvm_name = "arm940t",980 .llvm_name = "arm940t",
981 .subfeatures = &[_]*const Feature {981 .dependencies = &[_]*const Feature {
982 },982 },
983};983};
984984
985pub const cpu_arm946eS = Cpu{985pub const cpu_arm946eS = Cpu{
986 .name = "arm946e-s",986 .name = "arm946e-s",
987 .llvm_name = "arm946e-s",987 .llvm_name = "arm946e-s",
988 .subfeatures = &[_]*const Feature {988 .dependencies = &[_]*const Feature {
989 },989 },
990};990};
991991
992pub const cpu_arm966eS = Cpu{992pub const cpu_arm966eS = Cpu{
993 .name = "arm966e-s",993 .name = "arm966e-s",
994 .llvm_name = "arm966e-s",994 .llvm_name = "arm966e-s",
995 .subfeatures = &[_]*const Feature {995 .dependencies = &[_]*const Feature {
996 },996 },
997};997};
998998
999pub const cpu_arm968eS = Cpu{999pub const cpu_arm968eS = Cpu{
1000 .name = "arm968e-s",1000 .name = "arm968e-s",
1001 .llvm_name = "arm968e-s",1001 .llvm_name = "arm968e-s",
1002 .subfeatures = &[_]*const Feature {1002 .dependencies = &[_]*const Feature {
1003 },1003 },
1004};1004};
10051005
1006pub const cpu_arm9e = Cpu{1006pub const cpu_arm9e = Cpu{
1007 .name = "arm9e",1007 .name = "arm9e",
1008 .llvm_name = "arm9e",1008 .llvm_name = "arm9e",
1009 .subfeatures = &[_]*const Feature {1009 .dependencies = &[_]*const Feature {
1010 },1010 },
1011};1011};
10121012
1013pub const cpu_arm9tdmi = Cpu{1013pub const cpu_arm9tdmi = Cpu{
1014 .name = "arm9tdmi",1014 .name = "arm9tdmi",
1015 .llvm_name = "arm9tdmi",1015 .llvm_name = "arm9tdmi",
1016 .subfeatures = &[_]*const Feature {1016 .dependencies = &[_]*const Feature {
1017 },1017 },
1018};1018};
10191019
1020pub const cpu_cortexA12 = Cpu{1020pub const cpu_cortexA12 = Cpu{
1021 .name = "cortex-a12",1021 .name = "cortex-a12",
1022 .llvm_name = "cortex-a12",1022 .llvm_name = "cortex-a12",
1023 .subfeatures = &[_]*const Feature {1023 .dependencies = &[_]*const Feature {
1024 &feature_fpregs,
1025 &feature_db,
1026 &feature_d32,1024 &feature_d32,
1027 &feature_perfmon,1025 &feature_perfmon,
1026 &feature_fpregs,
1027 &feature_db,
1028 &feature_thumb2,
1029 &feature_v7clrex,
1028 &feature_dsp,1030 &feature_dsp,
1029 &feature_aclass,1031 &feature_aclass,
1030 &feature_v7clrex,
1031 &feature_thumb2,
1032 &feature_avoidPartialCpsr,1032 &feature_avoidPartialCpsr,
1033 &feature_retAddrStack,1033 &feature_retAddrStack,
1034 &feature_mp,1034 &feature_mp,
...@@ -1045,15 +1045,15 @@ pub const cpu_cortexA12 = Cpu{...@@ -1045,15 +1045,15 @@ pub const cpu_cortexA12 = Cpu{
1045pub const cpu_cortexA15 = Cpu{1045pub const cpu_cortexA15 = Cpu{
1046 .name = "cortex-a15",1046 .name = "cortex-a15",
1047 .llvm_name = "cortex-a15",1047 .llvm_name = "cortex-a15",
1048 .subfeatures = &[_]*const Feature {1048 .dependencies = &[_]*const Feature {
1049 &feature_fpregs,
1050 &feature_db,
1051 &feature_d32,1049 &feature_d32,
1052 &feature_perfmon,1050 &feature_perfmon,
1051 &feature_fpregs,
1052 &feature_db,
1053 &feature_thumb2,
1054 &feature_v7clrex,
1053 &feature_dsp,1055 &feature_dsp,
1054 &feature_aclass,1056 &feature_aclass,
1055 &feature_v7clrex,
1056 &feature_thumb2,
1057 &feature_avoidPartialCpsr,1057 &feature_avoidPartialCpsr,
1058 &feature_vldnAlign,1058 &feature_vldnAlign,
1059 &feature_dontWidenVmovs,1059 &feature_dontWidenVmovs,
...@@ -1073,15 +1073,15 @@ pub const cpu_cortexA15 = Cpu{...@@ -1073,15 +1073,15 @@ pub const cpu_cortexA15 = Cpu{
1073pub const cpu_cortexA17 = Cpu{1073pub const cpu_cortexA17 = Cpu{
1074 .name = "cortex-a17",1074 .name = "cortex-a17",
1075 .llvm_name = "cortex-a17",1075 .llvm_name = "cortex-a17",
1076 .subfeatures = &[_]*const Feature {1076 .dependencies = &[_]*const Feature {
1077 &feature_fpregs,
1078 &feature_db,
1079 &feature_d32,1077 &feature_d32,
1080 &feature_perfmon,1078 &feature_perfmon,
1079 &feature_fpregs,
1080 &feature_db,
1081 &feature_thumb2,
1082 &feature_v7clrex,
1081 &feature_dsp,1083 &feature_dsp,
1082 &feature_aclass,1084 &feature_aclass,
1083 &feature_v7clrex,
1084 &feature_thumb2,
1085 &feature_avoidPartialCpsr,1085 &feature_avoidPartialCpsr,
1086 &feature_retAddrStack,1086 &feature_retAddrStack,
1087 &feature_mp,1087 &feature_mp,
...@@ -1098,22 +1098,22 @@ pub const cpu_cortexA17 = Cpu{...@@ -1098,22 +1098,22 @@ pub const cpu_cortexA17 = Cpu{
1098pub const cpu_cortexA32 = Cpu{1098pub const cpu_cortexA32 = Cpu{
1099 .name = "cortex-a32",1099 .name = "cortex-a32",
1100 .llvm_name = "cortex-a32",1100 .llvm_name = "cortex-a32",
1101 .subfeatures = &[_]*const Feature {1101 .dependencies = &[_]*const Feature {
1102 &feature_hwdiv,1102 &feature_d32,
1103 &feature_trustzone,1103 &feature_hwdivArm,
1104 &feature_fpregs,1104 &feature_fpregs,
1105 &feature_db,1105 &feature_db,
1106 &feature_acquireRelease,1106 &feature_crc,
1107 &feature_d32,1107 &feature_fp16,
1108 &feature_perfmon,1108 &feature_perfmon,
1109 &feature_thumb2,
1109 &feature_mp,1110 &feature_mp,
1110 &feature_hwdivArm,1111 &feature_acquireRelease,
1112 &feature_hwdiv,
1113 &feature_trustzone,
1114 &feature_v7clrex,
1111 &feature_dsp,1115 &feature_dsp,
1112 &feature_aclass,1116 &feature_aclass,
1113 &feature_fp16,
1114 &feature_v7clrex,
1115 &feature_crc,
1116 &feature_thumb2,
1117 &feature_crypto,1117 &feature_crypto,
1118 },1118 },
1119};1119};
...@@ -1121,22 +1121,22 @@ pub const cpu_cortexA32 = Cpu{...@@ -1121,22 +1121,22 @@ pub const cpu_cortexA32 = Cpu{
1121pub const cpu_cortexA35 = Cpu{1121pub const cpu_cortexA35 = Cpu{
1122 .name = "cortex-a35",1122 .name = "cortex-a35",
1123 .llvm_name = "cortex-a35",1123 .llvm_name = "cortex-a35",
1124 .subfeatures = &[_]*const Feature {1124 .dependencies = &[_]*const Feature {
1125 &feature_hwdiv,1125 &feature_d32,
1126 &feature_trustzone,1126 &feature_hwdivArm,
1127 &feature_fpregs,1127 &feature_fpregs,
1128 &feature_db,1128 &feature_db,
1129 &feature_acquireRelease,1129 &feature_crc,
1130 &feature_d32,1130 &feature_fp16,
1131 &feature_perfmon,1131 &feature_perfmon,
1132 &feature_thumb2,
1132 &feature_mp,1133 &feature_mp,
1133 &feature_hwdivArm,1134 &feature_acquireRelease,
1135 &feature_hwdiv,
1136 &feature_trustzone,
1137 &feature_v7clrex,
1134 &feature_dsp,1138 &feature_dsp,
1135 &feature_aclass,1139 &feature_aclass,
1136 &feature_fp16,
1137 &feature_v7clrex,
1138 &feature_crc,
1139 &feature_thumb2,
1140 &feature_crypto,1140 &feature_crypto,
1141 },1141 },
1142};1142};
...@@ -1144,15 +1144,15 @@ pub const cpu_cortexA35 = Cpu{...@@ -1144,15 +1144,15 @@ pub const cpu_cortexA35 = Cpu{
1144pub const cpu_cortexA5 = Cpu{1144pub const cpu_cortexA5 = Cpu{
1145 .name = "cortex-a5",1145 .name = "cortex-a5",
1146 .llvm_name = "cortex-a5",1146 .llvm_name = "cortex-a5",
1147 .subfeatures = &[_]*const Feature {1147 .dependencies = &[_]*const Feature {
1148 &feature_fpregs,
1149 &feature_db,
1150 &feature_d32,1148 &feature_d32,
1151 &feature_perfmon,1149 &feature_perfmon,
1150 &feature_fpregs,
1151 &feature_db,
1152 &feature_thumb2,
1153 &feature_v7clrex,
1152 &feature_dsp,1154 &feature_dsp,
1153 &feature_aclass,1155 &feature_aclass,
1154 &feature_v7clrex,
1155 &feature_thumb2,
1156 &feature_retAddrStack,1156 &feature_retAddrStack,
1157 &feature_slowfpvmlx,1157 &feature_slowfpvmlx,
1158 &feature_mp,1158 &feature_mp,
...@@ -1167,22 +1167,22 @@ pub const cpu_cortexA5 = Cpu{...@@ -1167,22 +1167,22 @@ pub const cpu_cortexA5 = Cpu{
1167pub const cpu_cortexA53 = Cpu{1167pub const cpu_cortexA53 = Cpu{
1168 .name = "cortex-a53",1168 .name = "cortex-a53",
1169 .llvm_name = "cortex-a53",1169 .llvm_name = "cortex-a53",
1170 .subfeatures = &[_]*const Feature {1170 .dependencies = &[_]*const Feature {
1171 &feature_hwdiv,1171 &feature_d32,
1172 &feature_trustzone,1172 &feature_hwdivArm,
1173 &feature_fpregs,1173 &feature_fpregs,
1174 &feature_db,1174 &feature_db,
1175 &feature_acquireRelease,1175 &feature_crc,
1176 &feature_d32,1176 &feature_fp16,
1177 &feature_perfmon,1177 &feature_perfmon,
1178 &feature_thumb2,
1178 &feature_mp,1179 &feature_mp,
1179 &feature_hwdivArm,1180 &feature_acquireRelease,
1181 &feature_hwdiv,
1182 &feature_trustzone,
1183 &feature_v7clrex,
1180 &feature_dsp,1184 &feature_dsp,
1181 &feature_aclass,1185 &feature_aclass,
1182 &feature_fp16,
1183 &feature_v7clrex,
1184 &feature_crc,
1185 &feature_thumb2,
1186 &feature_crypto,1186 &feature_crypto,
1187 &feature_fpao,1187 &feature_fpao,
1188 },1188 },
...@@ -1191,23 +1191,23 @@ pub const cpu_cortexA53 = Cpu{...@@ -1191,23 +1191,23 @@ pub const cpu_cortexA53 = Cpu{
1191pub const cpu_cortexA55 = Cpu{1191pub const cpu_cortexA55 = Cpu{
1192 .name = "cortex-a55",1192 .name = "cortex-a55",
1193 .llvm_name = "cortex-a55",1193 .llvm_name = "cortex-a55",
1194 .subfeatures = &[_]*const Feature {1194 .dependencies = &[_]*const Feature {
1195 &feature_hwdiv,1195 &feature_d32,
1196 &feature_trustzone,1196 &feature_hwdivArm,
1197 &feature_fpregs,1197 &feature_fpregs,
1198 &feature_db,1198 &feature_db,
1199 &feature_acquireRelease,1199 &feature_crc,
1200 &feature_d32,1200 &feature_fp16,
1201 &feature_ras,
1201 &feature_perfmon,1202 &feature_perfmon,
1203 &feature_thumb2,
1202 &feature_mp,1204 &feature_mp,
1203 &feature_ras,1205 &feature_acquireRelease,
1204 &feature_hwdivArm,1206 &feature_hwdiv,
1207 &feature_trustzone,
1208 &feature_v7clrex,
1205 &feature_dsp,1209 &feature_dsp,
1206 &feature_aclass,1210 &feature_aclass,
1207 &feature_fp16,
1208 &feature_v7clrex,
1209 &feature_crc,
1210 &feature_thumb2,
1211 &feature_dotprod,1211 &feature_dotprod,
1212 },1212 },
1213};1213};
...@@ -1215,22 +1215,22 @@ pub const cpu_cortexA55 = Cpu{...@@ -1215,22 +1215,22 @@ pub const cpu_cortexA55 = Cpu{
1215pub const cpu_cortexA57 = Cpu{1215pub const cpu_cortexA57 = Cpu{
1216 .name = "cortex-a57",1216 .name = "cortex-a57",
1217 .llvm_name = "cortex-a57",1217 .llvm_name = "cortex-a57",
1218 .subfeatures = &[_]*const Feature {1218 .dependencies = &[_]*const Feature {
1219 &feature_hwdiv,1219 &feature_d32,
1220 &feature_trustzone,1220 &feature_hwdivArm,
1221 &feature_fpregs,1221 &feature_fpregs,
1222 &feature_db,1222 &feature_db,
1223 &feature_acquireRelease,1223 &feature_crc,
1224 &feature_d32,1224 &feature_fp16,
1225 &feature_perfmon,1225 &feature_perfmon,
1226 &feature_thumb2,
1226 &feature_mp,1227 &feature_mp,
1227 &feature_hwdivArm,1228 &feature_acquireRelease,
1229 &feature_hwdiv,
1230 &feature_trustzone,
1231 &feature_v7clrex,
1228 &feature_dsp,1232 &feature_dsp,
1229 &feature_aclass,1233 &feature_aclass,
1230 &feature_fp16,
1231 &feature_v7clrex,
1232 &feature_crc,
1233 &feature_thumb2,
1234 &feature_avoidPartialCpsr,1234 &feature_avoidPartialCpsr,
1235 &feature_cheapPredicableCpsr,1235 &feature_cheapPredicableCpsr,
1236 &feature_crypto,1236 &feature_crypto,
...@@ -1241,15 +1241,15 @@ pub const cpu_cortexA57 = Cpu{...@@ -1241,15 +1241,15 @@ pub const cpu_cortexA57 = Cpu{
1241pub const cpu_cortexA7 = Cpu{1241pub const cpu_cortexA7 = Cpu{
1242 .name = "cortex-a7",1242 .name = "cortex-a7",
1243 .llvm_name = "cortex-a7",1243 .llvm_name = "cortex-a7",
1244 .subfeatures = &[_]*const Feature {1244 .dependencies = &[_]*const Feature {
1245 &feature_fpregs,
1246 &feature_db,
1247 &feature_d32,1245 &feature_d32,
1248 &feature_perfmon,1246 &feature_perfmon,
1247 &feature_fpregs,
1248 &feature_db,
1249 &feature_thumb2,
1250 &feature_v7clrex,
1249 &feature_dsp,1251 &feature_dsp,
1250 &feature_aclass,1252 &feature_aclass,
1251 &feature_v7clrex,
1252 &feature_thumb2,
1253 &feature_retAddrStack,1253 &feature_retAddrStack,
1254 &feature_slowfpvmlx,1254 &feature_slowfpvmlx,
1255 &feature_vmlxHazards,1255 &feature_vmlxHazards,
...@@ -1268,22 +1268,22 @@ pub const cpu_cortexA7 = Cpu{...@@ -1268,22 +1268,22 @@ pub const cpu_cortexA7 = Cpu{
1268pub const cpu_cortexA72 = Cpu{1268pub const cpu_cortexA72 = Cpu{
1269 .name = "cortex-a72",1269 .name = "cortex-a72",
1270 .llvm_name = "cortex-a72",1270 .llvm_name = "cortex-a72",
1271 .subfeatures = &[_]*const Feature {1271 .dependencies = &[_]*const Feature {
1272 &feature_hwdiv,1272 &feature_d32,
1273 &feature_trustzone,1273 &feature_hwdivArm,
1274 &feature_fpregs,1274 &feature_fpregs,
1275 &feature_db,1275 &feature_db,
1276 &feature_acquireRelease,1276 &feature_crc,
1277 &feature_d32,1277 &feature_fp16,
1278 &feature_perfmon,1278 &feature_perfmon,
1279 &feature_thumb2,
1279 &feature_mp,1280 &feature_mp,
1280 &feature_hwdivArm,1281 &feature_acquireRelease,
1282 &feature_hwdiv,
1283 &feature_trustzone,
1284 &feature_v7clrex,
1281 &feature_dsp,1285 &feature_dsp,
1282 &feature_aclass,1286 &feature_aclass,
1283 &feature_fp16,
1284 &feature_v7clrex,
1285 &feature_crc,
1286 &feature_thumb2,
1287 &feature_crypto,1287 &feature_crypto,
1288 },1288 },
1289};1289};
...@@ -1291,22 +1291,22 @@ pub const cpu_cortexA72 = Cpu{...@@ -1291,22 +1291,22 @@ pub const cpu_cortexA72 = Cpu{
1291pub const cpu_cortexA73 = Cpu{1291pub const cpu_cortexA73 = Cpu{
1292 .name = "cortex-a73",1292 .name = "cortex-a73",
1293 .llvm_name = "cortex-a73",1293 .llvm_name = "cortex-a73",
1294 .subfeatures = &[_]*const Feature {1294 .dependencies = &[_]*const Feature {
1295 &feature_hwdiv,1295 &feature_d32,
1296 &feature_trustzone,1296 &feature_hwdivArm,
1297 &feature_fpregs,1297 &feature_fpregs,
1298 &feature_db,1298 &feature_db,
1299 &feature_acquireRelease,1299 &feature_crc,
1300 &feature_d32,1300 &feature_fp16,
1301 &feature_perfmon,1301 &feature_perfmon,
1302 &feature_thumb2,
1302 &feature_mp,1303 &feature_mp,
1303 &feature_hwdivArm,1304 &feature_acquireRelease,
1305 &feature_hwdiv,
1306 &feature_trustzone,
1307 &feature_v7clrex,
1304 &feature_dsp,1308 &feature_dsp,
1305 &feature_aclass,1309 &feature_aclass,
1306 &feature_fp16,
1307 &feature_v7clrex,
1308 &feature_crc,
1309 &feature_thumb2,
1310 &feature_crypto,1310 &feature_crypto,
1311 },1311 },
1312};1312};
...@@ -1314,23 +1314,23 @@ pub const cpu_cortexA73 = Cpu{...@@ -1314,23 +1314,23 @@ pub const cpu_cortexA73 = Cpu{
1314pub const cpu_cortexA75 = Cpu{1314pub const cpu_cortexA75 = Cpu{
1315 .name = "cortex-a75",1315 .name = "cortex-a75",
1316 .llvm_name = "cortex-a75",1316 .llvm_name = "cortex-a75",
1317 .subfeatures = &[_]*const Feature {1317 .dependencies = &[_]*const Feature {
1318 &feature_hwdiv,1318 &feature_d32,
1319 &feature_trustzone,1319 &feature_hwdivArm,
1320 &feature_fpregs,1320 &feature_fpregs,
1321 &feature_db,1321 &feature_db,
1322 &feature_acquireRelease,1322 &feature_crc,
1323 &feature_d32,1323 &feature_fp16,
1324 &feature_ras,
1324 &feature_perfmon,1325 &feature_perfmon,
1326 &feature_thumb2,
1325 &feature_mp,1327 &feature_mp,
1326 &feature_ras,1328 &feature_acquireRelease,
1327 &feature_hwdivArm,1329 &feature_hwdiv,
1330 &feature_trustzone,
1331 &feature_v7clrex,
1328 &feature_dsp,1332 &feature_dsp,
1329 &feature_aclass,1333 &feature_aclass,
1330 &feature_fp16,
1331 &feature_v7clrex,
1332 &feature_crc,
1333 &feature_thumb2,
1334 &feature_dotprod,1334 &feature_dotprod,
1335 },1335 },
1336};1336};
...@@ -1338,23 +1338,23 @@ pub const cpu_cortexA75 = Cpu{...@@ -1338,23 +1338,23 @@ pub const cpu_cortexA75 = Cpu{
1338pub const cpu_cortexA76 = Cpu{1338pub const cpu_cortexA76 = Cpu{
1339 .name = "cortex-a76",1339 .name = "cortex-a76",
1340 .llvm_name = "cortex-a76",1340 .llvm_name = "cortex-a76",
1341 .subfeatures = &[_]*const Feature {1341 .dependencies = &[_]*const Feature {
1342 &feature_hwdiv,1342 &feature_d32,
1343 &feature_trustzone,1343 &feature_hwdivArm,
1344 &feature_fpregs,1344 &feature_fpregs,
1345 &feature_db,1345 &feature_db,
1346 &feature_acquireRelease,1346 &feature_crc,
1347 &feature_d32,1347 &feature_fp16,
1348 &feature_ras,
1348 &feature_perfmon,1349 &feature_perfmon,
1350 &feature_thumb2,
1349 &feature_mp,1351 &feature_mp,
1350 &feature_ras,1352 &feature_acquireRelease,
1351 &feature_hwdivArm,1353 &feature_hwdiv,
1354 &feature_trustzone,
1355 &feature_v7clrex,
1352 &feature_dsp,1356 &feature_dsp,
1353 &feature_aclass,1357 &feature_aclass,
1354 &feature_fp16,
1355 &feature_v7clrex,
1356 &feature_crc,
1357 &feature_thumb2,
1358 &feature_crypto,1358 &feature_crypto,
1359 &feature_dotprod,1359 &feature_dotprod,
1360 &feature_fullfp16,1360 &feature_fullfp16,
...@@ -1364,23 +1364,23 @@ pub const cpu_cortexA76 = Cpu{...@@ -1364,23 +1364,23 @@ pub const cpu_cortexA76 = Cpu{
1364pub const cpu_cortexA76ae = Cpu{1364pub const cpu_cortexA76ae = Cpu{
1365 .name = "cortex-a76ae",1365 .name = "cortex-a76ae",
1366 .llvm_name = "cortex-a76ae",1366 .llvm_name = "cortex-a76ae",
1367 .subfeatures = &[_]*const Feature {1367 .dependencies = &[_]*const Feature {
1368 &feature_hwdiv,1368 &feature_d32,
1369 &feature_trustzone,1369 &feature_hwdivArm,
1370 &feature_fpregs,1370 &feature_fpregs,
1371 &feature_db,1371 &feature_db,
1372 &feature_acquireRelease,1372 &feature_crc,
1373 &feature_d32,1373 &feature_fp16,
1374 &feature_ras,
1374 &feature_perfmon,1375 &feature_perfmon,
1376 &feature_thumb2,
1375 &feature_mp,1377 &feature_mp,
1376 &feature_ras,1378 &feature_acquireRelease,
1377 &feature_hwdivArm,1379 &feature_hwdiv,
1380 &feature_trustzone,
1381 &feature_v7clrex,
1378 &feature_dsp,1382 &feature_dsp,
1379 &feature_aclass,1383 &feature_aclass,
1380 &feature_fp16,
1381 &feature_v7clrex,
1382 &feature_crc,
1383 &feature_thumb2,
1384 &feature_crypto,1384 &feature_crypto,
1385 &feature_dotprod,1385 &feature_dotprod,
1386 &feature_fullfp16,1386 &feature_fullfp16,
...@@ -1390,15 +1390,15 @@ pub const cpu_cortexA76ae = Cpu{...@@ -1390,15 +1390,15 @@ pub const cpu_cortexA76ae = Cpu{
1390pub const cpu_cortexA8 = Cpu{1390pub const cpu_cortexA8 = Cpu{
1391 .name = "cortex-a8",1391 .name = "cortex-a8",
1392 .llvm_name = "cortex-a8",1392 .llvm_name = "cortex-a8",
1393 .subfeatures = &[_]*const Feature {1393 .dependencies = &[_]*const Feature {
1394 &feature_fpregs,
1395 &feature_db,
1396 &feature_d32,1394 &feature_d32,
1397 &feature_perfmon,1395 &feature_perfmon,
1396 &feature_fpregs,
1397 &feature_db,
1398 &feature_thumb2,
1399 &feature_v7clrex,
1398 &feature_dsp,1400 &feature_dsp,
1399 &feature_aclass,1401 &feature_aclass,
1400 &feature_v7clrex,
1401 &feature_thumb2,
1402 &feature_retAddrStack,1402 &feature_retAddrStack,
1403 &feature_slowfpvmlx,1403 &feature_slowfpvmlx,
1404 &feature_vmlxHazards,1404 &feature_vmlxHazards,
...@@ -1412,15 +1412,15 @@ pub const cpu_cortexA8 = Cpu{...@@ -1412,15 +1412,15 @@ pub const cpu_cortexA8 = Cpu{
1412pub const cpu_cortexA9 = Cpu{1412pub const cpu_cortexA9 = Cpu{
1413 .name = "cortex-a9",1413 .name = "cortex-a9",
1414 .llvm_name = "cortex-a9",1414 .llvm_name = "cortex-a9",
1415 .subfeatures = &[_]*const Feature {1415 .dependencies = &[_]*const Feature {
1416 &feature_fpregs,
1417 &feature_db,
1418 &feature_d32,1416 &feature_d32,
1419 &feature_perfmon,1417 &feature_perfmon,
1418 &feature_fpregs,
1419 &feature_db,
1420 &feature_thumb2,
1421 &feature_v7clrex,
1420 &feature_dsp,1422 &feature_dsp,
1421 &feature_aclass,1423 &feature_aclass,
1422 &feature_v7clrex,
1423 &feature_thumb2,
1424 &feature_avoidPartialCpsr,1424 &feature_avoidPartialCpsr,
1425 &feature_vldnAlign,1425 &feature_vldnAlign,
1426 &feature_expandFpMlx,1426 &feature_expandFpMlx,
...@@ -1439,48 +1439,48 @@ pub const cpu_cortexA9 = Cpu{...@@ -1439,48 +1439,48 @@ pub const cpu_cortexA9 = Cpu{
1439pub const cpu_cortexM0 = Cpu{1439pub const cpu_cortexM0 = Cpu{
1440 .name = "cortex-m0",1440 .name = "cortex-m0",
1441 .llvm_name = "cortex-m0",1441 .llvm_name = "cortex-m0",
1442 .subfeatures = &[_]*const Feature {1442 .dependencies = &[_]*const Feature {
1443 &feature_db,1443 &feature_db,
1444 &feature_mclass,
1444 &feature_strictAlign,1445 &feature_strictAlign,
1445 &feature_noarm,1446 &feature_noarm,
1446 &feature_mclass,
1447 },1447 },
1448};1448};
14491449
1450pub const cpu_cortexM0plus = Cpu{1450pub const cpu_cortexM0plus = Cpu{
1451 .name = "cortex-m0plus",1451 .name = "cortex-m0plus",
1452 .llvm_name = "cortex-m0plus",1452 .llvm_name = "cortex-m0plus",
1453 .subfeatures = &[_]*const Feature {1453 .dependencies = &[_]*const Feature {
1454 &feature_db,1454 &feature_db,
1455 &feature_mclass,
1455 &feature_strictAlign,1456 &feature_strictAlign,
1456 &feature_noarm,1457 &feature_noarm,
1457 &feature_mclass,
1458 },1458 },
1459};1459};
14601460
1461pub const cpu_cortexM1 = Cpu{1461pub const cpu_cortexM1 = Cpu{
1462 .name = "cortex-m1",1462 .name = "cortex-m1",
1463 .llvm_name = "cortex-m1",1463 .llvm_name = "cortex-m1",
1464 .subfeatures = &[_]*const Feature {1464 .dependencies = &[_]*const Feature {
1465 &feature_db,1465 &feature_db,
1466 &feature_mclass,
1466 &feature_strictAlign,1467 &feature_strictAlign,
1467 &feature_noarm,1468 &feature_noarm,
1468 &feature_mclass,
1469 },1469 },
1470};1470};
14711471
1472pub const cpu_cortexM23 = Cpu{1472pub const cpu_cortexM23 = Cpu{
1473 .name = "cortex-m23",1473 .name = "cortex-m23",
1474 .llvm_name = "cortex-m23",1474 .llvm_name = "cortex-m23",
1475 .subfeatures = &[_]*const Feature {1475 .dependencies = &[_]*const Feature {
1476 &feature_hwdiv,1476 &feature_mclass,
1477 &feature_msecext8,
1478 &feature_db,1477 &feature_db,
1478 &feature_msecext8,
1479 &feature_strictAlign,1479 &feature_strictAlign,
1480 &feature_acquireRelease,1480 &feature_acquireRelease,
1481 &feature_noarm,1481 &feature_hwdiv,
1482 &feature_v7clrex,1482 &feature_v7clrex,
1483 &feature_mclass,1483 &feature_noarm,
1484 &feature_noMovt,1484 &feature_noMovt,
1485 },1485 },
1486};1486};
...@@ -1488,14 +1488,14 @@ pub const cpu_cortexM23 = Cpu{...@@ -1488,14 +1488,14 @@ pub const cpu_cortexM23 = Cpu{
1488pub const cpu_cortexM3 = Cpu{1488pub const cpu_cortexM3 = Cpu{
1489 .name = "cortex-m3",1489 .name = "cortex-m3",
1490 .llvm_name = "cortex-m3",1490 .llvm_name = "cortex-m3",
1491 .subfeatures = &[_]*const Feature {1491 .dependencies = &[_]*const Feature {
1492 &feature_hwdiv,
1493 &feature_db,
1494 &feature_perfmon,1492 &feature_perfmon,
1495 &feature_noarm,1493 &feature_db,
1496 &feature_v7clrex,
1497 &feature_mclass,1494 &feature_mclass,
1498 &feature_thumb2,1495 &feature_thumb2,
1496 &feature_hwdiv,
1497 &feature_v7clrex,
1498 &feature_noarm,
1499 &feature_noBranchPredictor,1499 &feature_noBranchPredictor,
1500 &feature_loopAlign,1500 &feature_loopAlign,
1501 &feature_useAa,1501 &feature_useAa,
...@@ -1506,16 +1506,16 @@ pub const cpu_cortexM3 = Cpu{...@@ -1506,16 +1506,16 @@ pub const cpu_cortexM3 = Cpu{
1506pub const cpu_cortexM33 = Cpu{1506pub const cpu_cortexM33 = Cpu{
1507 .name = "cortex-m33",1507 .name = "cortex-m33",
1508 .llvm_name = "cortex-m33",1508 .llvm_name = "cortex-m33",
1509 .subfeatures = &[_]*const Feature {1509 .dependencies = &[_]*const Feature {
1510 &feature_hwdiv,
1511 &feature_msecext8,
1512 &feature_db,
1513 &feature_acquireRelease,
1514 &feature_perfmon,1510 &feature_perfmon,
1515 &feature_noarm,
1516 &feature_v7clrex,
1517 &feature_mclass,1511 &feature_mclass,
1512 &feature_db,
1513 &feature_msecext8,
1518 &feature_thumb2,1514 &feature_thumb2,
1515 &feature_acquireRelease,
1516 &feature_hwdiv,
1517 &feature_v7clrex,
1518 &feature_noarm,
1519 &feature_dsp,1519 &feature_dsp,
1520 &feature_fp16,1520 &feature_fp16,
1521 &feature_fpregs,1521 &feature_fpregs,
...@@ -1531,16 +1531,16 @@ pub const cpu_cortexM33 = Cpu{...@@ -1531,16 +1531,16 @@ pub const cpu_cortexM33 = Cpu{
1531pub const cpu_cortexM35p = Cpu{1531pub const cpu_cortexM35p = Cpu{
1532 .name = "cortex-m35p",1532 .name = "cortex-m35p",
1533 .llvm_name = "cortex-m35p",1533 .llvm_name = "cortex-m35p",
1534 .subfeatures = &[_]*const Feature {1534 .dependencies = &[_]*const Feature {
1535 &feature_hwdiv,
1536 &feature_msecext8,
1537 &feature_db,
1538 &feature_acquireRelease,
1539 &feature_perfmon,1535 &feature_perfmon,
1540 &feature_noarm,
1541 &feature_v7clrex,
1542 &feature_mclass,1536 &feature_mclass,
1537 &feature_db,
1538 &feature_msecext8,
1543 &feature_thumb2,1539 &feature_thumb2,
1540 &feature_acquireRelease,
1541 &feature_hwdiv,
1542 &feature_v7clrex,
1543 &feature_noarm,
1544 &feature_dsp,1544 &feature_dsp,
1545 &feature_fp16,1545 &feature_fp16,
1546 &feature_fpregs,1546 &feature_fpregs,
...@@ -1556,22 +1556,22 @@ pub const cpu_cortexM35p = Cpu{...@@ -1556,22 +1556,22 @@ pub const cpu_cortexM35p = Cpu{
1556pub const cpu_cortexM4 = Cpu{1556pub const cpu_cortexM4 = Cpu{
1557 .name = "cortex-m4",1557 .name = "cortex-m4",
1558 .llvm_name = "cortex-m4",1558 .llvm_name = "cortex-m4",
1559 .subfeatures = &[_]*const Feature {1559 .dependencies = &[_]*const Feature {
1560 &feature_hwdiv,
1561 &feature_db,
1562 &feature_perfmon,1560 &feature_perfmon,
1563 &feature_noarm,1561 &feature_db,
1564 &feature_dsp,
1565 &feature_v7clrex,
1566 &feature_mclass,1562 &feature_mclass,
1567 &feature_thumb2,1563 &feature_thumb2,
1564 &feature_hwdiv,
1565 &feature_v7clrex,
1566 &feature_dsp,
1567 &feature_noarm,
1568 &feature_noBranchPredictor,1568 &feature_noBranchPredictor,
1569 &feature_slowfpvmlx,1569 &feature_slowfpvmlx,
1570 &feature_loopAlign,1570 &feature_loopAlign,
1571 &feature_useAa,1571 &feature_useAa,
1572 &feature_useMisched,1572 &feature_useMisched,
1573 &feature_fp16,
1574 &feature_fpregs,1573 &feature_fpregs,
1574 &feature_fp16,
1575 &feature_vfp4d16sp,1575 &feature_vfp4d16sp,
1576 },1576 },
1577};1577};
...@@ -1579,15 +1579,15 @@ pub const cpu_cortexM4 = Cpu{...@@ -1579,15 +1579,15 @@ pub const cpu_cortexM4 = Cpu{
1579pub const cpu_cortexM7 = Cpu{1579pub const cpu_cortexM7 = Cpu{
1580 .name = "cortex-m7",1580 .name = "cortex-m7",
1581 .llvm_name = "cortex-m7",1581 .llvm_name = "cortex-m7",
1582 .subfeatures = &[_]*const Feature {1582 .dependencies = &[_]*const Feature {
1583 &feature_hwdiv,
1584 &feature_db,
1585 &feature_perfmon,1583 &feature_perfmon,
1586 &feature_noarm,1584 &feature_db,
1587 &feature_dsp,
1588 &feature_v7clrex,
1589 &feature_mclass,1585 &feature_mclass,
1590 &feature_thumb2,1586 &feature_thumb2,
1587 &feature_hwdiv,
1588 &feature_v7clrex,
1589 &feature_dsp,
1590 &feature_noarm,
1591 &feature_fp16,1591 &feature_fp16,
1592 &feature_fpregs,1592 &feature_fpregs,
1593 &feature_fpArmv8d16,1593 &feature_fpArmv8d16,
...@@ -1597,14 +1597,14 @@ pub const cpu_cortexM7 = Cpu{...@@ -1597,14 +1597,14 @@ pub const cpu_cortexM7 = Cpu{
1597pub const cpu_cortexR4 = Cpu{1597pub const cpu_cortexR4 = Cpu{
1598 .name = "cortex-r4",1598 .name = "cortex-r4",
1599 .llvm_name = "cortex-r4",1599 .llvm_name = "cortex-r4",
1600 .subfeatures = &[_]*const Feature {1600 .dependencies = &[_]*const Feature {
1601 &feature_hwdiv,
1602 &feature_rclass,
1603 &feature_db,
1604 &feature_perfmon,1601 &feature_perfmon,
1605 &feature_dsp,1602 &feature_db,
1606 &feature_v7clrex,
1607 &feature_thumb2,1603 &feature_thumb2,
1604 &feature_rclass,
1605 &feature_hwdiv,
1606 &feature_v7clrex,
1607 &feature_dsp,
1608 &feature_avoidPartialCpsr,1608 &feature_avoidPartialCpsr,
1609 &feature_retAddrStack,1609 &feature_retAddrStack,
1610 },1610 },
...@@ -1613,14 +1613,14 @@ pub const cpu_cortexR4 = Cpu{...@@ -1613,14 +1613,14 @@ pub const cpu_cortexR4 = Cpu{
1613pub const cpu_cortexR4f = Cpu{1613pub const cpu_cortexR4f = Cpu{
1614 .name = "cortex-r4f",1614 .name = "cortex-r4f",
1615 .llvm_name = "cortex-r4f",1615 .llvm_name = "cortex-r4f",
1616 .subfeatures = &[_]*const Feature {1616 .dependencies = &[_]*const Feature {
1617 &feature_hwdiv,
1618 &feature_rclass,
1619 &feature_db,
1620 &feature_perfmon,1617 &feature_perfmon,
1621 &feature_dsp,1618 &feature_db,
1622 &feature_v7clrex,
1623 &feature_thumb2,1619 &feature_thumb2,
1620 &feature_rclass,
1621 &feature_hwdiv,
1622 &feature_v7clrex,
1623 &feature_dsp,
1624 &feature_avoidPartialCpsr,1624 &feature_avoidPartialCpsr,
1625 &feature_retAddrStack,1625 &feature_retAddrStack,
1626 &feature_slowfpvmlx,1626 &feature_slowfpvmlx,
...@@ -1633,14 +1633,14 @@ pub const cpu_cortexR4f = Cpu{...@@ -1633,14 +1633,14 @@ pub const cpu_cortexR4f = Cpu{
1633pub const cpu_cortexR5 = Cpu{1633pub const cpu_cortexR5 = Cpu{
1634 .name = "cortex-r5",1634 .name = "cortex-r5",
1635 .llvm_name = "cortex-r5",1635 .llvm_name = "cortex-r5",
1636 .subfeatures = &[_]*const Feature {1636 .dependencies = &[_]*const Feature {
1637 &feature_hwdiv,
1638 &feature_rclass,
1639 &feature_db,
1640 &feature_perfmon,1637 &feature_perfmon,
1641 &feature_dsp,1638 &feature_db,
1642 &feature_v7clrex,
1643 &feature_thumb2,1639 &feature_thumb2,
1640 &feature_rclass,
1641 &feature_hwdiv,
1642 &feature_v7clrex,
1643 &feature_dsp,
1644 &feature_avoidPartialCpsr,1644 &feature_avoidPartialCpsr,
1645 &feature_hwdivArm,1645 &feature_hwdivArm,
1646 &feature_retAddrStack,1646 &feature_retAddrStack,
...@@ -1654,22 +1654,22 @@ pub const cpu_cortexR5 = Cpu{...@@ -1654,22 +1654,22 @@ pub const cpu_cortexR5 = Cpu{
1654pub const cpu_cortexR52 = Cpu{1654pub const cpu_cortexR52 = Cpu{
1655 .name = "cortex-r52",1655 .name = "cortex-r52",
1656 .llvm_name = "cortex-r52",1656 .llvm_name = "cortex-r52",
1657 .subfeatures = &[_]*const Feature {1657 .dependencies = &[_]*const Feature {
1658 &feature_hwdiv,1658 &feature_d32,
1659 &feature_rclass,1659 &feature_hwdivArm,
1660 &feature_fpregs,1660 &feature_fpregs,
1661 &feature_db,1661 &feature_db,
1662 &feature_acquireRelease,1662 &feature_crc,
1663 &feature_d32,1663 &feature_fp16,
1664 &feature_perfmon,1664 &feature_perfmon,
1665 &feature_thumb2,
1666 &feature_rclass,
1665 &feature_mp,1667 &feature_mp,
1668 &feature_acquireRelease,
1669 &feature_hwdiv,
1670 &feature_v7clrex,
1666 &feature_dfb,1671 &feature_dfb,
1667 &feature_hwdivArm,
1668 &feature_dsp,1672 &feature_dsp,
1669 &feature_fp16,
1670 &feature_v7clrex,
1671 &feature_crc,
1672 &feature_thumb2,
1673 &feature_fpao,1673 &feature_fpao,
1674 &feature_useAa,1674 &feature_useAa,
1675 &feature_useMisched,1675 &feature_useMisched,
...@@ -1679,14 +1679,14 @@ pub const cpu_cortexR52 = Cpu{...@@ -1679,14 +1679,14 @@ pub const cpu_cortexR52 = Cpu{
1679pub const cpu_cortexR7 = Cpu{1679pub const cpu_cortexR7 = Cpu{
1680 .name = "cortex-r7",1680 .name = "cortex-r7",
1681 .llvm_name = "cortex-r7",1681 .llvm_name = "cortex-r7",
1682 .subfeatures = &[_]*const Feature {1682 .dependencies = &[_]*const Feature {
1683 &feature_hwdiv,
1684 &feature_rclass,
1685 &feature_db,
1686 &feature_perfmon,1683 &feature_perfmon,
1687 &feature_dsp,1684 &feature_db,
1688 &feature_v7clrex,
1689 &feature_thumb2,1685 &feature_thumb2,
1686 &feature_rclass,
1687 &feature_hwdiv,
1688 &feature_v7clrex,
1689 &feature_dsp,
1690 &feature_avoidPartialCpsr,1690 &feature_avoidPartialCpsr,
1691 &feature_fp16,1691 &feature_fp16,
1692 &feature_hwdivArm,1692 &feature_hwdivArm,
...@@ -1702,14 +1702,14 @@ pub const cpu_cortexR7 = Cpu{...@@ -1702,14 +1702,14 @@ pub const cpu_cortexR7 = Cpu{
1702pub const cpu_cortexR8 = Cpu{1702pub const cpu_cortexR8 = Cpu{
1703 .name = "cortex-r8",1703 .name = "cortex-r8",
1704 .llvm_name = "cortex-r8",1704 .llvm_name = "cortex-r8",
1705 .subfeatures = &[_]*const Feature {1705 .dependencies = &[_]*const Feature {
1706 &feature_hwdiv,
1707 &feature_rclass,
1708 &feature_db,
1709 &feature_perfmon,1706 &feature_perfmon,
1710 &feature_dsp,1707 &feature_db,
1711 &feature_v7clrex,
1712 &feature_thumb2,1708 &feature_thumb2,
1709 &feature_rclass,
1710 &feature_hwdiv,
1711 &feature_v7clrex,
1712 &feature_dsp,
1713 &feature_avoidPartialCpsr,1713 &feature_avoidPartialCpsr,
1714 &feature_fp16,1714 &feature_fp16,
1715 &feature_hwdivArm,1715 &feature_hwdivArm,
...@@ -1725,22 +1725,22 @@ pub const cpu_cortexR8 = Cpu{...@@ -1725,22 +1725,22 @@ pub const cpu_cortexR8 = Cpu{
1725pub const cpu_cyclone = Cpu{1725pub const cpu_cyclone = Cpu{
1726 .name = "cyclone",1726 .name = "cyclone",
1727 .llvm_name = "cyclone",1727 .llvm_name = "cyclone",
1728 .subfeatures = &[_]*const Feature {1728 .dependencies = &[_]*const Feature {
1729 &feature_hwdiv,1729 &feature_d32,
1730 &feature_trustzone,1730 &feature_hwdivArm,
1731 &feature_fpregs,1731 &feature_fpregs,
1732 &feature_db,1732 &feature_db,
1733 &feature_acquireRelease,1733 &feature_crc,
1734 &feature_d32,1734 &feature_fp16,
1735 &feature_perfmon,1735 &feature_perfmon,
1736 &feature_thumb2,
1736 &feature_mp,1737 &feature_mp,
1737 &feature_hwdivArm,1738 &feature_acquireRelease,
1739 &feature_hwdiv,
1740 &feature_trustzone,
1741 &feature_v7clrex,
1738 &feature_dsp,1742 &feature_dsp,
1739 &feature_aclass,1743 &feature_aclass,
1740 &feature_fp16,
1741 &feature_v7clrex,
1742 &feature_crc,
1743 &feature_thumb2,
1744 &feature_avoidMovsShop,1744 &feature_avoidMovsShop,
1745 &feature_avoidPartialCpsr,1745 &feature_avoidPartialCpsr,
1746 &feature_crypto,1746 &feature_crypto,
...@@ -1757,217 +1757,217 @@ pub const cpu_cyclone = Cpu{...@@ -1757,217 +1757,217 @@ pub const cpu_cyclone = Cpu{
1757pub const cpu_ep9312 = Cpu{1757pub const cpu_ep9312 = Cpu{
1758 .name = "ep9312",1758 .name = "ep9312",
1759 .llvm_name = "ep9312",1759 .llvm_name = "ep9312",
1760 .subfeatures = &[_]*const Feature {1760 .dependencies = &[_]*const Feature {
1761 },1761 },
1762};1762};
17631763
1764pub const cpu_exynosM1 = Cpu{1764pub const cpu_exynosM1 = Cpu{
1765 .name = "exynos-m1",1765 .name = "exynos-m1",
1766 .llvm_name = "exynos-m1",1766 .llvm_name = "exynos-m1",
1767 .subfeatures = &[_]*const Feature {1767 .dependencies = &[_]*const Feature {
1768 &feature_hwdiv,1768 &feature_d32,
1769 &feature_trustzone,1769 &feature_hwdivArm,
1770 &feature_fpregs,1770 &feature_fpregs,
1771 &feature_db,1771 &feature_db,
1772 &feature_acquireRelease,1772 &feature_crc,
1773 &feature_d32,1773 &feature_fp16,
1774 &feature_perfmon,1774 &feature_perfmon,
1775 &feature_thumb2,
1775 &feature_mp,1776 &feature_mp,
1776 &feature_hwdivArm,1777 &feature_acquireRelease,
1778 &feature_hwdiv,
1779 &feature_trustzone,
1780 &feature_v7clrex,
1777 &feature_dsp,1781 &feature_dsp,
1778 &feature_aclass,1782 &feature_aclass,
1779 &feature_fp16,
1780 &feature_v7clrex,
1781 &feature_crc,
1782 &feature_thumb2,
1783 &feature_slowVdup32,
1784 &feature_expandFpMlx,
1785 &feature_slowVgetlni32,
1786 &feature_fuseLiterals,1783 &feature_fuseLiterals,
1784 &feature_profUnpr,
1787 &feature_wideStrideVfp,1785 &feature_wideStrideVfp,
1788 &feature_slowFpBrcc,1786 &feature_slowVdup32,
1789 &feature_retAddrStack,1787 &feature_slowVgetlni32,
1790 &feature_dontWidenVmovs,1788 &feature_dontWidenVmovs,
1791 &feature_zcz,
1792 &feature_fuseAes,1789 &feature_fuseAes,
1793 &feature_slowfpvmlx,1790 &feature_retAddrStack,
1794 &feature_profUnpr,1791 &feature_expandFpMlx,
1792 &feature_zcz,
1795 &feature_useAa,1793 &feature_useAa,
1794 &feature_slowfpvmlx,
1795 &feature_slowFpBrcc,
1796 },1796 },
1797};1797};
17981798
1799pub const cpu_exynosM2 = Cpu{1799pub const cpu_exynosM2 = Cpu{
1800 .name = "exynos-m2",1800 .name = "exynos-m2",
1801 .llvm_name = "exynos-m2",1801 .llvm_name = "exynos-m2",
1802 .subfeatures = &[_]*const Feature {1802 .dependencies = &[_]*const Feature {
1803 &feature_hwdiv,1803 &feature_d32,
1804 &feature_trustzone,1804 &feature_hwdivArm,
1805 &feature_fpregs,1805 &feature_fpregs,
1806 &feature_db,1806 &feature_db,
1807 &feature_acquireRelease,1807 &feature_crc,
1808 &feature_d32,1808 &feature_fp16,
1809 &feature_perfmon,1809 &feature_perfmon,
1810 &feature_thumb2,
1810 &feature_mp,1811 &feature_mp,
1811 &feature_hwdivArm,1812 &feature_acquireRelease,
1813 &feature_hwdiv,
1814 &feature_trustzone,
1815 &feature_v7clrex,
1812 &feature_dsp,1816 &feature_dsp,
1813 &feature_aclass,1817 &feature_aclass,
1814 &feature_fp16,
1815 &feature_v7clrex,
1816 &feature_crc,
1817 &feature_thumb2,
1818 &feature_slowVdup32,
1819 &feature_expandFpMlx,
1820 &feature_slowVgetlni32,
1821 &feature_fuseLiterals,1818 &feature_fuseLiterals,
1819 &feature_profUnpr,
1822 &feature_wideStrideVfp,1820 &feature_wideStrideVfp,
1823 &feature_slowFpBrcc,1821 &feature_slowVdup32,
1824 &feature_retAddrStack,1822 &feature_slowVgetlni32,
1825 &feature_dontWidenVmovs,1823 &feature_dontWidenVmovs,
1826 &feature_zcz,
1827 &feature_fuseAes,1824 &feature_fuseAes,
1828 &feature_slowfpvmlx,1825 &feature_retAddrStack,
1829 &feature_profUnpr,1826 &feature_expandFpMlx,
1827 &feature_zcz,
1830 &feature_useAa,1828 &feature_useAa,
1829 &feature_slowfpvmlx,
1830 &feature_slowFpBrcc,
1831 },1831 },
1832};1832};
18331833
1834pub const cpu_exynosM3 = Cpu{1834pub const cpu_exynosM3 = Cpu{
1835 .name = "exynos-m3",1835 .name = "exynos-m3",
1836 .llvm_name = "exynos-m3",1836 .llvm_name = "exynos-m3",
1837 .subfeatures = &[_]*const Feature {1837 .dependencies = &[_]*const Feature {
1838 &feature_hwdiv,1838 &feature_d32,
1839 &feature_trustzone,1839 &feature_hwdivArm,
1840 &feature_fpregs,1840 &feature_fpregs,
1841 &feature_db,1841 &feature_db,
1842 &feature_acquireRelease,1842 &feature_crc,
1843 &feature_d32,1843 &feature_fp16,
1844 &feature_perfmon,1844 &feature_perfmon,
1845 &feature_thumb2,
1845 &feature_mp,1846 &feature_mp,
1846 &feature_hwdivArm,1847 &feature_acquireRelease,
1848 &feature_hwdiv,
1849 &feature_trustzone,
1850 &feature_v7clrex,
1847 &feature_dsp,1851 &feature_dsp,
1848 &feature_aclass,1852 &feature_aclass,
1849 &feature_fp16,
1850 &feature_v7clrex,
1851 &feature_crc,
1852 &feature_thumb2,
1853 &feature_slowVdup32,
1854 &feature_expandFpMlx,
1855 &feature_slowVgetlni32,
1856 &feature_fuseLiterals,1853 &feature_fuseLiterals,
1854 &feature_profUnpr,
1857 &feature_wideStrideVfp,1855 &feature_wideStrideVfp,
1858 &feature_slowFpBrcc,1856 &feature_slowVdup32,
1859 &feature_retAddrStack,1857 &feature_slowVgetlni32,
1860 &feature_dontWidenVmovs,1858 &feature_dontWidenVmovs,
1861 &feature_zcz,
1862 &feature_fuseAes,1859 &feature_fuseAes,
1863 &feature_slowfpvmlx,1860 &feature_retAddrStack,
1864 &feature_profUnpr,1861 &feature_expandFpMlx,
1862 &feature_zcz,
1865 &feature_useAa,1863 &feature_useAa,
1864 &feature_slowfpvmlx,
1865 &feature_slowFpBrcc,
1866 },1866 },
1867};1867};
18681868
1869pub const cpu_exynosM4 = Cpu{1869pub const cpu_exynosM4 = Cpu{
1870 .name = "exynos-m4",1870 .name = "exynos-m4",
1871 .llvm_name = "exynos-m4",1871 .llvm_name = "exynos-m4",
1872 .subfeatures = &[_]*const Feature {1872 .dependencies = &[_]*const Feature {
1873 &feature_hwdiv,1873 &feature_d32,
1874 &feature_trustzone,1874 &feature_hwdivArm,
1875 &feature_fpregs,1875 &feature_fpregs,
1876 &feature_db,1876 &feature_db,
1877 &feature_acquireRelease,1877 &feature_crc,
1878 &feature_d32,1878 &feature_fp16,
1879 &feature_ras,
1879 &feature_perfmon,1880 &feature_perfmon,
1881 &feature_thumb2,
1880 &feature_mp,1882 &feature_mp,
1881 &feature_ras,1883 &feature_acquireRelease,
1882 &feature_hwdivArm,1884 &feature_hwdiv,
1885 &feature_trustzone,
1886 &feature_v7clrex,
1883 &feature_dsp,1887 &feature_dsp,
1884 &feature_aclass,1888 &feature_aclass,
1885 &feature_fp16,
1886 &feature_v7clrex,
1887 &feature_crc,
1888 &feature_thumb2,
1889 &feature_dotprod,1889 &feature_dotprod,
1890 &feature_fullfp16,1890 &feature_fullfp16,
1891 &feature_slowVdup32,
1892 &feature_expandFpMlx,
1893 &feature_slowVgetlni32,
1894 &feature_fuseLiterals,1891 &feature_fuseLiterals,
1892 &feature_profUnpr,
1895 &feature_wideStrideVfp,1893 &feature_wideStrideVfp,
1896 &feature_slowFpBrcc,1894 &feature_slowVdup32,
1897 &feature_retAddrStack,1895 &feature_slowVgetlni32,
1898 &feature_dontWidenVmovs,1896 &feature_dontWidenVmovs,
1899 &feature_zcz,
1900 &feature_fuseAes,1897 &feature_fuseAes,
1901 &feature_slowfpvmlx,1898 &feature_retAddrStack,
1902 &feature_profUnpr,1899 &feature_expandFpMlx,
1900 &feature_zcz,
1903 &feature_useAa,1901 &feature_useAa,
1902 &feature_slowfpvmlx,
1903 &feature_slowFpBrcc,
1904 },1904 },
1905};1905};
19061906
1907pub const cpu_exynosM5 = Cpu{1907pub const cpu_exynosM5 = Cpu{
1908 .name = "exynos-m5",1908 .name = "exynos-m5",
1909 .llvm_name = "exynos-m5",1909 .llvm_name = "exynos-m5",
1910 .subfeatures = &[_]*const Feature {1910 .dependencies = &[_]*const Feature {
1911 &feature_hwdiv,1911 &feature_d32,
1912 &feature_trustzone,1912 &feature_hwdivArm,
1913 &feature_fpregs,1913 &feature_fpregs,
1914 &feature_db,1914 &feature_db,
1915 &feature_acquireRelease,1915 &feature_crc,
1916 &feature_d32,1916 &feature_fp16,
1917 &feature_ras,
1917 &feature_perfmon,1918 &feature_perfmon,
1919 &feature_thumb2,
1918 &feature_mp,1920 &feature_mp,
1919 &feature_ras,1921 &feature_acquireRelease,
1920 &feature_hwdivArm,1922 &feature_hwdiv,
1923 &feature_trustzone,
1924 &feature_v7clrex,
1921 &feature_dsp,1925 &feature_dsp,
1922 &feature_aclass,1926 &feature_aclass,
1923 &feature_fp16,
1924 &feature_v7clrex,
1925 &feature_crc,
1926 &feature_thumb2,
1927 &feature_dotprod,1927 &feature_dotprod,
1928 &feature_fullfp16,1928 &feature_fullfp16,
1929 &feature_slowVdup32,
1930 &feature_expandFpMlx,
1931 &feature_slowVgetlni32,
1932 &feature_fuseLiterals,1929 &feature_fuseLiterals,
1930 &feature_profUnpr,
1933 &feature_wideStrideVfp,1931 &feature_wideStrideVfp,
1934 &feature_slowFpBrcc,1932 &feature_slowVdup32,
1935 &feature_retAddrStack,1933 &feature_slowVgetlni32,
1936 &feature_dontWidenVmovs,1934 &feature_dontWidenVmovs,
1937 &feature_zcz,
1938 &feature_fuseAes,1935 &feature_fuseAes,
1939 &feature_slowfpvmlx,1936 &feature_retAddrStack,
1940 &feature_profUnpr,1937 &feature_expandFpMlx,
1938 &feature_zcz,
1941 &feature_useAa,1939 &feature_useAa,
1940 &feature_slowfpvmlx,
1941 &feature_slowFpBrcc,
1942 },1942 },
1943};1943};
19441944
1945pub const cpu_generic = Cpu{1945pub const cpu_generic = Cpu{
1946 .name = "generic",1946 .name = "generic",
1947 .llvm_name = "generic",1947 .llvm_name = "generic",
1948 .subfeatures = &[_]*const Feature {1948 .dependencies = &[_]*const Feature {
1949 },1949 },
1950};1950};
19511951
1952pub const cpu_iwmmxt = Cpu{1952pub const cpu_iwmmxt = Cpu{
1953 .name = "iwmmxt",1953 .name = "iwmmxt",
1954 .llvm_name = "iwmmxt",1954 .llvm_name = "iwmmxt",
1955 .subfeatures = &[_]*const Feature {1955 .dependencies = &[_]*const Feature {
1956 },1956 },
1957};1957};
19581958
1959pub const cpu_krait = Cpu{1959pub const cpu_krait = Cpu{
1960 .name = "krait",1960 .name = "krait",
1961 .llvm_name = "krait",1961 .llvm_name = "krait",
1962 .subfeatures = &[_]*const Feature {1962 .dependencies = &[_]*const Feature {
1963 &feature_fpregs,
1964 &feature_db,
1965 &feature_d32,1963 &feature_d32,
1966 &feature_perfmon,1964 &feature_perfmon,
1965 &feature_fpregs,
1966 &feature_db,
1967 &feature_thumb2,
1968 &feature_v7clrex,
1967 &feature_dsp,1969 &feature_dsp,
1968 &feature_aclass,1970 &feature_aclass,
1969 &feature_v7clrex,
1970 &feature_thumb2,
1971 &feature_avoidPartialCpsr,1971 &feature_avoidPartialCpsr,
1972 &feature_vldnAlign,1972 &feature_vldnAlign,
1973 &feature_fp16,1973 &feature_fp16,
...@@ -1983,22 +1983,22 @@ pub const cpu_krait = Cpu{...@@ -1983,22 +1983,22 @@ pub const cpu_krait = Cpu{
1983pub const cpu_kryo = Cpu{1983pub const cpu_kryo = Cpu{
1984 .name = "kryo",1984 .name = "kryo",
1985 .llvm_name = "kryo",1985 .llvm_name = "kryo",
1986 .subfeatures = &[_]*const Feature {1986 .dependencies = &[_]*const Feature {
1987 &feature_hwdiv,1987 &feature_d32,
1988 &feature_trustzone,1988 &feature_hwdivArm,
1989 &feature_fpregs,1989 &feature_fpregs,
1990 &feature_db,1990 &feature_db,
1991 &feature_acquireRelease,1991 &feature_crc,
1992 &feature_d32,1992 &feature_fp16,
1993 &feature_perfmon,1993 &feature_perfmon,
1994 &feature_thumb2,
1994 &feature_mp,1995 &feature_mp,
1995 &feature_hwdivArm,1996 &feature_acquireRelease,
1997 &feature_hwdiv,
1998 &feature_trustzone,
1999 &feature_v7clrex,
1996 &feature_dsp,2000 &feature_dsp,
1997 &feature_aclass,2001 &feature_aclass,
1998 &feature_fp16,
1999 &feature_v7clrex,
2000 &feature_crc,
2001 &feature_thumb2,
2002 &feature_crypto,2002 &feature_crypto,
2003 },2003 },
2004};2004};
...@@ -2006,7 +2006,7 @@ pub const cpu_kryo = Cpu{...@@ -2006,7 +2006,7 @@ pub const cpu_kryo = Cpu{
2006pub const cpu_mpcore = Cpu{2006pub const cpu_mpcore = Cpu{
2007 .name = "mpcore",2007 .name = "mpcore",
2008 .llvm_name = "mpcore",2008 .llvm_name = "mpcore",
2009 .subfeatures = &[_]*const Feature {2009 .dependencies = &[_]*const Feature {
2010 &feature_slowfpvmlx,2010 &feature_slowfpvmlx,
2011 &feature_fpregs,2011 &feature_fpregs,
2012 &feature_vfp2,2012 &feature_vfp2,
...@@ -2016,30 +2016,30 @@ pub const cpu_mpcore = Cpu{...@@ -2016,30 +2016,30 @@ pub const cpu_mpcore = Cpu{
2016pub const cpu_mpcorenovfp = Cpu{2016pub const cpu_mpcorenovfp = Cpu{
2017 .name = "mpcorenovfp",2017 .name = "mpcorenovfp",
2018 .llvm_name = "mpcorenovfp",2018 .llvm_name = "mpcorenovfp",
2019 .subfeatures = &[_]*const Feature {2019 .dependencies = &[_]*const Feature {
2020 },2020 },
2021};2021};
20222022
2023pub const cpu_neoverseN1 = Cpu{2023pub const cpu_neoverseN1 = Cpu{
2024 .name = "neoverse-n1",2024 .name = "neoverse-n1",
2025 .llvm_name = "neoverse-n1",2025 .llvm_name = "neoverse-n1",
2026 .subfeatures = &[_]*const Feature {2026 .dependencies = &[_]*const Feature {
2027 &feature_hwdiv,2027 &feature_d32,
2028 &feature_trustzone,2028 &feature_hwdivArm,
2029 &feature_fpregs,2029 &feature_fpregs,
2030 &feature_db,2030 &feature_db,
2031 &feature_acquireRelease,2031 &feature_crc,
2032 &feature_d32,2032 &feature_fp16,
2033 &feature_ras,
2033 &feature_perfmon,2034 &feature_perfmon,
2035 &feature_thumb2,
2034 &feature_mp,2036 &feature_mp,
2035 &feature_ras,2037 &feature_acquireRelease,
2036 &feature_hwdivArm,2038 &feature_hwdiv,
2039 &feature_trustzone,
2040 &feature_v7clrex,
2037 &feature_dsp,2041 &feature_dsp,
2038 &feature_aclass,2042 &feature_aclass,
2039 &feature_fp16,
2040 &feature_v7clrex,
2041 &feature_crc,
2042 &feature_thumb2,
2043 &feature_crypto,2043 &feature_crypto,
2044 &feature_dotprod,2044 &feature_dotprod,
2045 },2045 },
...@@ -2048,25 +2048,25 @@ pub const cpu_neoverseN1 = Cpu{...@@ -2048,25 +2048,25 @@ pub const cpu_neoverseN1 = Cpu{
2048pub const cpu_sc000 = Cpu{2048pub const cpu_sc000 = Cpu{
2049 .name = "sc000",2049 .name = "sc000",
2050 .llvm_name = "sc000",2050 .llvm_name = "sc000",
2051 .subfeatures = &[_]*const Feature {2051 .dependencies = &[_]*const Feature {
2052 &feature_db,2052 &feature_db,
2053 &feature_mclass,
2053 &feature_strictAlign,2054 &feature_strictAlign,
2054 &feature_noarm,2055 &feature_noarm,
2055 &feature_mclass,
2056 },2056 },
2057};2057};
20582058
2059pub const cpu_sc300 = Cpu{2059pub const cpu_sc300 = Cpu{
2060 .name = "sc300",2060 .name = "sc300",
2061 .llvm_name = "sc300",2061 .llvm_name = "sc300",
2062 .subfeatures = &[_]*const Feature {2062 .dependencies = &[_]*const Feature {
2063 &feature_hwdiv,
2064 &feature_db,
2065 &feature_perfmon,2063 &feature_perfmon,
2066 &feature_noarm,2064 &feature_db,
2067 &feature_v7clrex,
2068 &feature_mclass,2065 &feature_mclass,
2069 &feature_thumb2,2066 &feature_thumb2,
2067 &feature_hwdiv,
2068 &feature_v7clrex,
2069 &feature_noarm,
2070 &feature_noBranchPredictor,2070 &feature_noBranchPredictor,
2071 &feature_useAa,2071 &feature_useAa,
2072 &feature_useMisched,2072 &feature_useMisched,
...@@ -2076,43 +2076,43 @@ pub const cpu_sc300 = Cpu{...@@ -2076,43 +2076,43 @@ pub const cpu_sc300 = Cpu{
2076pub const cpu_strongarm = Cpu{2076pub const cpu_strongarm = Cpu{
2077 .name = "strongarm",2077 .name = "strongarm",
2078 .llvm_name = "strongarm",2078 .llvm_name = "strongarm",
2079 .subfeatures = &[_]*const Feature {2079 .dependencies = &[_]*const Feature {
2080 },2080 },
2081};2081};
20822082
2083pub const cpu_strongarm110 = Cpu{2083pub const cpu_strongarm110 = Cpu{
2084 .name = "strongarm110",2084 .name = "strongarm110",
2085 .llvm_name = "strongarm110",2085 .llvm_name = "strongarm110",
2086 .subfeatures = &[_]*const Feature {2086 .dependencies = &[_]*const Feature {
2087 },2087 },
2088};2088};
20892089
2090pub const cpu_strongarm1100 = Cpu{2090pub const cpu_strongarm1100 = Cpu{
2091 .name = "strongarm1100",2091 .name = "strongarm1100",
2092 .llvm_name = "strongarm1100",2092 .llvm_name = "strongarm1100",
2093 .subfeatures = &[_]*const Feature {2093 .dependencies = &[_]*const Feature {
2094 },2094 },
2095};2095};
20962096
2097pub const cpu_strongarm1110 = Cpu{2097pub const cpu_strongarm1110 = Cpu{
2098 .name = "strongarm1110",2098 .name = "strongarm1110",
2099 .llvm_name = "strongarm1110",2099 .llvm_name = "strongarm1110",
2100 .subfeatures = &[_]*const Feature {2100 .dependencies = &[_]*const Feature {
2101 },2101 },
2102};2102};
21032103
2104pub const cpu_swift = Cpu{2104pub const cpu_swift = Cpu{
2105 .name = "swift",2105 .name = "swift",
2106 .llvm_name = "swift",2106 .llvm_name = "swift",
2107 .subfeatures = &[_]*const Feature {2107 .dependencies = &[_]*const Feature {
2108 &feature_fpregs,
2109 &feature_db,
2110 &feature_d32,2108 &feature_d32,
2111 &feature_perfmon,2109 &feature_perfmon,
2110 &feature_fpregs,
2111 &feature_db,
2112 &feature_thumb2,
2113 &feature_v7clrex,
2112 &feature_dsp,2114 &feature_dsp,
2113 &feature_aclass,2115 &feature_aclass,
2114 &feature_v7clrex,
2115 &feature_thumb2,
2116 &feature_avoidMovsShop,2116 &feature_avoidMovsShop,
2117 &feature_avoidPartialCpsr,2117 &feature_avoidPartialCpsr,
2118 &feature_hwdivArm,2118 &feature_hwdivArm,
...@@ -2139,7 +2139,7 @@ pub const cpu_swift = Cpu{...@@ -2139,7 +2139,7 @@ pub const cpu_swift = Cpu{
2139pub const cpu_xscale = Cpu{2139pub const cpu_xscale = Cpu{
2140 .name = "xscale",2140 .name = "xscale",
2141 .llvm_name = "xscale",2141 .llvm_name = "xscale",
2142 .subfeatures = &[_]*const Feature {2142 .dependencies = &[_]*const Feature {
2143 },2143 },
2144};2144};
21452145
lib/std/target/avr.zig+1613-1613
...@@ -4,126 +4,126 @@ const Cpu = @import("std").target.Cpu;...@@ -4,126 +4,126 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_addsubiw = Feature{4pub const feature_addsubiw = Feature{
5 .name = "addsubiw",5 .name = "addsubiw",
6 .description = "Enable 16-bit register-immediate addition and subtraction instructions",6 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_break = Feature{11pub const feature_break = Feature{
12 .name = "break",12 .name = "break",
13 .description = "The device supports the `BREAK` debugging instruction",13 .description = "The device supports the `BREAK` debugging instruction",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_des = Feature{18pub const feature_des = Feature{
19 .name = "des",19 .name = "des",
20 .description = "The device supports the `DES k` encryption instruction",20 .description = "The device supports the `DES k` encryption instruction",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_eijmpcall = Feature{25pub const feature_eijmpcall = Feature{
26 .name = "eijmpcall",26 .name = "eijmpcall",
27 .description = "The device supports the `EIJMP`/`EICALL` instructions",27 .description = "The device supports the `EIJMP`/`EICALL` instructions",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_elpm = Feature{32pub const feature_elpm = Feature{
33 .name = "elpm",33 .name = "elpm",
34 .description = "The device supports the ELPM instruction",34 .description = "The device supports the ELPM instruction",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_elpmx = Feature{39pub const feature_elpmx = Feature{
40 .name = "elpmx",40 .name = "elpmx",
41 .description = "The device supports the `ELPM Rd, Z[+]` instructions",41 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_ijmpcall = Feature{46pub const feature_ijmpcall = Feature{
47 .name = "ijmpcall",47 .name = "ijmpcall",
48 .description = "The device supports `IJMP`/`ICALL`instructions",48 .description = "The device supports `IJMP`/`ICALL`instructions",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_jmpcall = Feature{53pub const feature_jmpcall = Feature{
54 .name = "jmpcall",54 .name = "jmpcall",
55 .description = "The device supports the `JMP` and `CALL` instructions",55 .description = "The device supports the `JMP` and `CALL` instructions",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_lpm = Feature{60pub const feature_lpm = Feature{
61 .name = "lpm",61 .name = "lpm",
62 .description = "The device supports the `LPM` instruction",62 .description = "The device supports the `LPM` instruction",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_lpmx = Feature{67pub const feature_lpmx = Feature{
68 .name = "lpmx",68 .name = "lpmx",
69 .description = "The device supports the `LPM Rd, Z[+]` instruction",69 .description = "The device supports the `LPM Rd, Z[+]` instruction",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 },71 },
72};72};
7373
74pub const feature_movw = Feature{74pub const feature_movw = Feature{
75 .name = "movw",75 .name = "movw",
76 .description = "The device supports the 16-bit MOVW instruction",76 .description = "The device supports the 16-bit MOVW instruction",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 },78 },
79};79};
8080
81pub const feature_mul = Feature{81pub const feature_mul = Feature{
82 .name = "mul",82 .name = "mul",
83 .description = "The device supports the multiplication instructions",83 .description = "The device supports the multiplication instructions",
84 .subfeatures = &[_]*const Feature {84 .dependencies = &[_]*const Feature {
85 },85 },
86};86};
8787
88pub const feature_rmw = Feature{88pub const feature_rmw = Feature{
89 .name = "rmw",89 .name = "rmw",
90 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",90 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 },92 },
93};93};
9494
95pub const feature_spm = Feature{95pub const feature_spm = Feature{
96 .name = "spm",96 .name = "spm",
97 .description = "The device supports the `SPM` instruction",97 .description = "The device supports the `SPM` instruction",
98 .subfeatures = &[_]*const Feature {98 .dependencies = &[_]*const Feature {
99 },99 },
100};100};
101101
102pub const feature_spmx = Feature{102pub const feature_spmx = Feature{
103 .name = "spmx",103 .name = "spmx",
104 .description = "The device supports the `SPM Z+` instruction",104 .description = "The device supports the `SPM Z+` instruction",
105 .subfeatures = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
106 },106 },
107};107};
108108
109pub const feature_sram = Feature{109pub const feature_sram = Feature{
110 .name = "sram",110 .name = "sram",
111 .description = "The device has random access memory",111 .description = "The device has random access memory",
112 .subfeatures = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
113 },113 },
114};114};
115115
116pub const feature_smallstack = Feature{116pub const feature_smallstack = Feature{
117 .name = "smallstack",117 .name = "smallstack",
118 .description = "The device has an 8-bit stack pointer",118 .description = "The device has an 8-bit stack pointer",
119 .subfeatures = &[_]*const Feature {119 .dependencies = &[_]*const Feature {
120 },120 },
121};121};
122122
123pub const feature_tinyencoding = Feature{123pub const feature_tinyencoding = Feature{
124 .name = "tinyencoding",124 .name = "tinyencoding",
125 .description = "The device has Tiny core specific instruction encodings",125 .description = "The device has Tiny core specific instruction encodings",
126 .subfeatures = &[_]*const Feature {126 .dependencies = &[_]*const Feature {
127 },127 },
128};128};
129129
...@@ -151,48 +151,48 @@ pub const features = &[_]*const Feature {...@@ -151,48 +151,48 @@ pub const features = &[_]*const Feature {
151pub const cpu_at43usb320 = Cpu{151pub const cpu_at43usb320 = Cpu{
152 .name = "at43usb320",152 .name = "at43usb320",
153 .llvm_name = "at43usb320",153 .llvm_name = "at43usb320",
154 .subfeatures = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
155 &feature_addsubiw,
156 &feature_jmpcall,
157 &feature_lpm,
158 &feature_elpm,155 &feature_elpm,
159 &feature_sram,156 &feature_lpm,
160 &feature_ijmpcall,157 &feature_ijmpcall,
158 &feature_sram,
159 &feature_jmpcall,
160 &feature_addsubiw,
161 },161 },
162};162};
163163
164pub const cpu_at43usb355 = Cpu{164pub const cpu_at43usb355 = Cpu{
165 .name = "at43usb355",165 .name = "at43usb355",
166 .llvm_name = "at43usb355",166 .llvm_name = "at43usb355",
167 .subfeatures = &[_]*const Feature {167 .dependencies = &[_]*const Feature {
168 &feature_addsubiw,
169 &feature_jmpcall,
170 &feature_lpm,168 &feature_lpm,
171 &feature_sram,
172 &feature_ijmpcall,169 &feature_ijmpcall,
170 &feature_sram,
171 &feature_jmpcall,
172 &feature_addsubiw,
173 },173 },
174};174};
175175
176pub const cpu_at76c711 = Cpu{176pub const cpu_at76c711 = Cpu{
177 .name = "at76c711",177 .name = "at76c711",
178 .llvm_name = "at76c711",178 .llvm_name = "at76c711",
179 .subfeatures = &[_]*const Feature {179 .dependencies = &[_]*const Feature {
180 &feature_addsubiw,
181 &feature_jmpcall,
182 &feature_lpm,180 &feature_lpm,
183 &feature_sram,
184 &feature_ijmpcall,181 &feature_ijmpcall,
182 &feature_sram,
183 &feature_jmpcall,
184 &feature_addsubiw,
185 },185 },
186};186};
187187
188pub const cpu_at86rf401 = Cpu{188pub const cpu_at86rf401 = Cpu{
189 .name = "at86rf401",189 .name = "at86rf401",
190 .llvm_name = "at86rf401",190 .llvm_name = "at86rf401",
191 .subfeatures = &[_]*const Feature {191 .dependencies = &[_]*const Feature {
192 &feature_addsubiw,
193 &feature_lpm,192 &feature_lpm,
194 &feature_sram,
195 &feature_ijmpcall,193 &feature_ijmpcall,
194 &feature_sram,
195 &feature_addsubiw,
196 &feature_lpmx,196 &feature_lpmx,
197 &feature_movw,197 &feature_movw,
198 },198 },
...@@ -201,450 +201,450 @@ pub const cpu_at86rf401 = Cpu{...@@ -201,450 +201,450 @@ pub const cpu_at86rf401 = Cpu{
201pub const cpu_at90c8534 = Cpu{201pub const cpu_at90c8534 = Cpu{
202 .name = "at90c8534",202 .name = "at90c8534",
203 .llvm_name = "at90c8534",203 .llvm_name = "at90c8534",
204 .subfeatures = &[_]*const Feature {204 .dependencies = &[_]*const Feature {
205 &feature_addsubiw,
206 &feature_lpm,205 &feature_lpm,
207 &feature_sram,
208 &feature_ijmpcall,206 &feature_ijmpcall,
207 &feature_sram,
208 &feature_addsubiw,
209 },209 },
210};210};
211211
212pub const cpu_at90can128 = Cpu{212pub const cpu_at90can128 = Cpu{
213 .name = "at90can128",213 .name = "at90can128",
214 .llvm_name = "at90can128",214 .llvm_name = "at90can128",
215 .subfeatures = &[_]*const Feature {215 .dependencies = &[_]*const Feature {
216 &feature_lpmx,216 &feature_lpmx,
217 &feature_elpm,
217 &feature_spm,218 &feature_spm,
218 &feature_addsubiw,
219 &feature_jmpcall,
220 &feature_lpm,219 &feature_lpm,
221 &feature_break,220 &feature_ijmpcall,
222 &feature_mul,
223 &feature_elpm,
224 &feature_elpmx,221 &feature_elpmx,
225 &feature_sram,222 &feature_sram,
226 &feature_ijmpcall,223 &feature_break,
224 &feature_jmpcall,
225 &feature_mul,
227 &feature_movw,226 &feature_movw,
227 &feature_addsubiw,
228 },228 },
229};229};
230230
231pub const cpu_at90can32 = Cpu{231pub const cpu_at90can32 = Cpu{
232 .name = "at90can32",232 .name = "at90can32",
233 .llvm_name = "at90can32",233 .llvm_name = "at90can32",
234 .subfeatures = &[_]*const Feature {234 .dependencies = &[_]*const Feature {
235 &feature_lpmx,235 &feature_lpmx,
236 &feature_spm,
237 &feature_addsubiw,
238 &feature_jmpcall,
239 &feature_lpm,236 &feature_lpm,
237 &feature_spm,
238 &feature_ijmpcall,
239 &feature_sram,
240 &feature_break,240 &feature_break,
241 &feature_jmpcall,
241 &feature_mul,242 &feature_mul,
242 &feature_sram,
243 &feature_ijmpcall,
244 &feature_movw,243 &feature_movw,
244 &feature_addsubiw,
245 },245 },
246};246};
247247
248pub const cpu_at90can64 = Cpu{248pub const cpu_at90can64 = Cpu{
249 .name = "at90can64",249 .name = "at90can64",
250 .llvm_name = "at90can64",250 .llvm_name = "at90can64",
251 .subfeatures = &[_]*const Feature {251 .dependencies = &[_]*const Feature {
252 &feature_lpmx,252 &feature_lpmx,
253 &feature_spm,
254 &feature_addsubiw,
255 &feature_jmpcall,
256 &feature_lpm,253 &feature_lpm,
254 &feature_spm,
255 &feature_ijmpcall,
256 &feature_sram,
257 &feature_break,257 &feature_break,
258 &feature_jmpcall,
258 &feature_mul,259 &feature_mul,
259 &feature_sram,
260 &feature_ijmpcall,
261 &feature_movw,260 &feature_movw,
261 &feature_addsubiw,
262 },262 },
263};263};
264264
265pub const cpu_at90pwm1 = Cpu{265pub const cpu_at90pwm1 = Cpu{
266 .name = "at90pwm1",266 .name = "at90pwm1",
267 .llvm_name = "at90pwm1",267 .llvm_name = "at90pwm1",
268 .subfeatures = &[_]*const Feature {268 .dependencies = &[_]*const Feature {
269 &feature_lpmx,269 &feature_lpmx,
270 &feature_lpm,
270 &feature_spm,271 &feature_spm,
271 &feature_addsubiw,272 &feature_ijmpcall,
273 &feature_sram,
272 &feature_break,274 &feature_break,
273 &feature_lpm,
274 &feature_mul,275 &feature_mul,
275 &feature_sram,
276 &feature_ijmpcall,
277 &feature_movw,276 &feature_movw,
277 &feature_addsubiw,
278 },278 },
279};279};
280280
281pub const cpu_at90pwm161 = Cpu{281pub const cpu_at90pwm161 = Cpu{
282 .name = "at90pwm161",282 .name = "at90pwm161",
283 .llvm_name = "at90pwm161",283 .llvm_name = "at90pwm161",
284 .subfeatures = &[_]*const Feature {284 .dependencies = &[_]*const Feature {
285 &feature_lpmx,285 &feature_lpmx,
286 &feature_spm,
287 &feature_addsubiw,
288 &feature_jmpcall,
289 &feature_lpm,286 &feature_lpm,
287 &feature_spm,
288 &feature_ijmpcall,
289 &feature_sram,
290 &feature_break,290 &feature_break,
291 &feature_jmpcall,
291 &feature_mul,292 &feature_mul,
292 &feature_sram,
293 &feature_ijmpcall,
294 &feature_movw,293 &feature_movw,
294 &feature_addsubiw,
295 },295 },
296};296};
297297
298pub const cpu_at90pwm2 = Cpu{298pub const cpu_at90pwm2 = Cpu{
299 .name = "at90pwm2",299 .name = "at90pwm2",
300 .llvm_name = "at90pwm2",300 .llvm_name = "at90pwm2",
301 .subfeatures = &[_]*const Feature {301 .dependencies = &[_]*const Feature {
302 &feature_lpmx,302 &feature_lpmx,
303 &feature_lpm,
303 &feature_spm,304 &feature_spm,
304 &feature_addsubiw,305 &feature_ijmpcall,
306 &feature_sram,
305 &feature_break,307 &feature_break,
306 &feature_lpm,
307 &feature_mul,308 &feature_mul,
308 &feature_sram,
309 &feature_ijmpcall,
310 &feature_movw,309 &feature_movw,
310 &feature_addsubiw,
311 },311 },
312};312};
313313
314pub const cpu_at90pwm216 = Cpu{314pub const cpu_at90pwm216 = Cpu{
315 .name = "at90pwm216",315 .name = "at90pwm216",
316 .llvm_name = "at90pwm216",316 .llvm_name = "at90pwm216",
317 .subfeatures = &[_]*const Feature {317 .dependencies = &[_]*const Feature {
318 &feature_lpmx,318 &feature_lpmx,
319 &feature_spm,
320 &feature_addsubiw,
321 &feature_jmpcall,
322 &feature_lpm,319 &feature_lpm,
320 &feature_spm,
321 &feature_ijmpcall,
322 &feature_sram,
323 &feature_break,323 &feature_break,
324 &feature_jmpcall,
324 &feature_mul,325 &feature_mul,
325 &feature_sram,
326 &feature_ijmpcall,
327 &feature_movw,326 &feature_movw,
327 &feature_addsubiw,
328 },328 },
329};329};
330330
331pub const cpu_at90pwm2b = Cpu{331pub const cpu_at90pwm2b = Cpu{
332 .name = "at90pwm2b",332 .name = "at90pwm2b",
333 .llvm_name = "at90pwm2b",333 .llvm_name = "at90pwm2b",
334 .subfeatures = &[_]*const Feature {334 .dependencies = &[_]*const Feature {
335 &feature_lpmx,335 &feature_lpmx,
336 &feature_lpm,
336 &feature_spm,337 &feature_spm,
337 &feature_addsubiw,338 &feature_ijmpcall,
339 &feature_sram,
338 &feature_break,340 &feature_break,
339 &feature_lpm,
340 &feature_mul,341 &feature_mul,
341 &feature_sram,
342 &feature_ijmpcall,
343 &feature_movw,342 &feature_movw,
343 &feature_addsubiw,
344 },344 },
345};345};
346346
347pub const cpu_at90pwm3 = Cpu{347pub const cpu_at90pwm3 = Cpu{
348 .name = "at90pwm3",348 .name = "at90pwm3",
349 .llvm_name = "at90pwm3",349 .llvm_name = "at90pwm3",
350 .subfeatures = &[_]*const Feature {350 .dependencies = &[_]*const Feature {
351 &feature_lpmx,351 &feature_lpmx,
352 &feature_lpm,
352 &feature_spm,353 &feature_spm,
353 &feature_addsubiw,354 &feature_ijmpcall,
355 &feature_sram,
354 &feature_break,356 &feature_break,
355 &feature_lpm,
356 &feature_mul,357 &feature_mul,
357 &feature_sram,
358 &feature_ijmpcall,
359 &feature_movw,358 &feature_movw,
359 &feature_addsubiw,
360 },360 },
361};361};
362362
363pub const cpu_at90pwm316 = Cpu{363pub const cpu_at90pwm316 = Cpu{
364 .name = "at90pwm316",364 .name = "at90pwm316",
365 .llvm_name = "at90pwm316",365 .llvm_name = "at90pwm316",
366 .subfeatures = &[_]*const Feature {366 .dependencies = &[_]*const Feature {
367 &feature_lpmx,367 &feature_lpmx,
368 &feature_spm,
369 &feature_addsubiw,
370 &feature_jmpcall,
371 &feature_lpm,368 &feature_lpm,
369 &feature_spm,
370 &feature_ijmpcall,
371 &feature_sram,
372 &feature_break,372 &feature_break,
373 &feature_jmpcall,
373 &feature_mul,374 &feature_mul,
374 &feature_sram,
375 &feature_ijmpcall,
376 &feature_movw,375 &feature_movw,
376 &feature_addsubiw,
377 },377 },
378};378};
379379
380pub const cpu_at90pwm3b = Cpu{380pub const cpu_at90pwm3b = Cpu{
381 .name = "at90pwm3b",381 .name = "at90pwm3b",
382 .llvm_name = "at90pwm3b",382 .llvm_name = "at90pwm3b",
383 .subfeatures = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
384 &feature_lpmx,384 &feature_lpmx,
385 &feature_lpm,
385 &feature_spm,386 &feature_spm,
386 &feature_addsubiw,387 &feature_ijmpcall,
388 &feature_sram,
387 &feature_break,389 &feature_break,
388 &feature_lpm,
389 &feature_mul,390 &feature_mul,
390 &feature_sram,
391 &feature_ijmpcall,
392 &feature_movw,391 &feature_movw,
392 &feature_addsubiw,
393 },393 },
394};394};
395395
396pub const cpu_at90pwm81 = Cpu{396pub const cpu_at90pwm81 = Cpu{
397 .name = "at90pwm81",397 .name = "at90pwm81",
398 .llvm_name = "at90pwm81",398 .llvm_name = "at90pwm81",
399 .subfeatures = &[_]*const Feature {399 .dependencies = &[_]*const Feature {
400 &feature_lpmx,400 &feature_lpmx,
401 &feature_lpm,
401 &feature_spm,402 &feature_spm,
402 &feature_addsubiw,403 &feature_ijmpcall,
404 &feature_sram,
403 &feature_break,405 &feature_break,
404 &feature_lpm,
405 &feature_mul,406 &feature_mul,
406 &feature_sram,
407 &feature_ijmpcall,
408 &feature_movw,407 &feature_movw,
408 &feature_addsubiw,
409 },409 },
410};410};
411411
412pub const cpu_at90s1200 = Cpu{412pub const cpu_at90s1200 = Cpu{
413 .name = "at90s1200",413 .name = "at90s1200",
414 .llvm_name = "at90s1200",414 .llvm_name = "at90s1200",
415 .subfeatures = &[_]*const Feature {415 .dependencies = &[_]*const Feature {
416 },416 },
417};417};
418418
419pub const cpu_at90s2313 = Cpu{419pub const cpu_at90s2313 = Cpu{
420 .name = "at90s2313",420 .name = "at90s2313",
421 .llvm_name = "at90s2313",421 .llvm_name = "at90s2313",
422 .subfeatures = &[_]*const Feature {422 .dependencies = &[_]*const Feature {
423 &feature_addsubiw,
424 &feature_lpm,423 &feature_lpm,
425 &feature_sram,
426 &feature_ijmpcall,424 &feature_ijmpcall,
425 &feature_sram,
426 &feature_addsubiw,
427 },427 },
428};428};
429429
430pub const cpu_at90s2323 = Cpu{430pub const cpu_at90s2323 = Cpu{
431 .name = "at90s2323",431 .name = "at90s2323",
432 .llvm_name = "at90s2323",432 .llvm_name = "at90s2323",
433 .subfeatures = &[_]*const Feature {433 .dependencies = &[_]*const Feature {
434 &feature_addsubiw,
435 &feature_lpm,434 &feature_lpm,
436 &feature_sram,
437 &feature_ijmpcall,435 &feature_ijmpcall,
436 &feature_sram,
437 &feature_addsubiw,
438 },438 },
439};439};
440440
441pub const cpu_at90s2333 = Cpu{441pub const cpu_at90s2333 = Cpu{
442 .name = "at90s2333",442 .name = "at90s2333",
443 .llvm_name = "at90s2333",443 .llvm_name = "at90s2333",
444 .subfeatures = &[_]*const Feature {444 .dependencies = &[_]*const Feature {
445 &feature_addsubiw,
446 &feature_lpm,445 &feature_lpm,
447 &feature_sram,
448 &feature_ijmpcall,446 &feature_ijmpcall,
447 &feature_sram,
448 &feature_addsubiw,
449 },449 },
450};450};
451451
452pub const cpu_at90s2343 = Cpu{452pub const cpu_at90s2343 = Cpu{
453 .name = "at90s2343",453 .name = "at90s2343",
454 .llvm_name = "at90s2343",454 .llvm_name = "at90s2343",
455 .subfeatures = &[_]*const Feature {455 .dependencies = &[_]*const Feature {
456 &feature_addsubiw,
457 &feature_lpm,456 &feature_lpm,
458 &feature_sram,
459 &feature_ijmpcall,457 &feature_ijmpcall,
458 &feature_sram,
459 &feature_addsubiw,
460 },460 },
461};461};
462462
463pub const cpu_at90s4414 = Cpu{463pub const cpu_at90s4414 = Cpu{
464 .name = "at90s4414",464 .name = "at90s4414",
465 .llvm_name = "at90s4414",465 .llvm_name = "at90s4414",
466 .subfeatures = &[_]*const Feature {466 .dependencies = &[_]*const Feature {
467 &feature_addsubiw,
468 &feature_lpm,467 &feature_lpm,
469 &feature_sram,
470 &feature_ijmpcall,468 &feature_ijmpcall,
469 &feature_sram,
470 &feature_addsubiw,
471 },471 },
472};472};
473473
474pub const cpu_at90s4433 = Cpu{474pub const cpu_at90s4433 = Cpu{
475 .name = "at90s4433",475 .name = "at90s4433",
476 .llvm_name = "at90s4433",476 .llvm_name = "at90s4433",
477 .subfeatures = &[_]*const Feature {477 .dependencies = &[_]*const Feature {
478 &feature_addsubiw,
479 &feature_lpm,478 &feature_lpm,
480 &feature_sram,
481 &feature_ijmpcall,479 &feature_ijmpcall,
480 &feature_sram,
481 &feature_addsubiw,
482 },482 },
483};483};
484484
485pub const cpu_at90s4434 = Cpu{485pub const cpu_at90s4434 = Cpu{
486 .name = "at90s4434",486 .name = "at90s4434",
487 .llvm_name = "at90s4434",487 .llvm_name = "at90s4434",
488 .subfeatures = &[_]*const Feature {488 .dependencies = &[_]*const Feature {
489 &feature_addsubiw,
490 &feature_lpm,489 &feature_lpm,
491 &feature_sram,
492 &feature_ijmpcall,490 &feature_ijmpcall,
491 &feature_sram,
492 &feature_addsubiw,
493 },493 },
494};494};
495495
496pub const cpu_at90s8515 = Cpu{496pub const cpu_at90s8515 = Cpu{
497 .name = "at90s8515",497 .name = "at90s8515",
498 .llvm_name = "at90s8515",498 .llvm_name = "at90s8515",
499 .subfeatures = &[_]*const Feature {499 .dependencies = &[_]*const Feature {
500 &feature_addsubiw,
501 &feature_lpm,500 &feature_lpm,
502 &feature_sram,
503 &feature_ijmpcall,501 &feature_ijmpcall,
502 &feature_sram,
503 &feature_addsubiw,
504 },504 },
505};505};
506506
507pub const cpu_at90s8535 = Cpu{507pub const cpu_at90s8535 = Cpu{
508 .name = "at90s8535",508 .name = "at90s8535",
509 .llvm_name = "at90s8535",509 .llvm_name = "at90s8535",
510 .subfeatures = &[_]*const Feature {510 .dependencies = &[_]*const Feature {
511 &feature_addsubiw,
512 &feature_lpm,511 &feature_lpm,
513 &feature_sram,
514 &feature_ijmpcall,512 &feature_ijmpcall,
513 &feature_sram,
514 &feature_addsubiw,
515 },515 },
516};516};
517517
518pub const cpu_at90scr100 = Cpu{518pub const cpu_at90scr100 = Cpu{
519 .name = "at90scr100",519 .name = "at90scr100",
520 .llvm_name = "at90scr100",520 .llvm_name = "at90scr100",
521 .subfeatures = &[_]*const Feature {521 .dependencies = &[_]*const Feature {
522 &feature_lpmx,522 &feature_lpmx,
523 &feature_spm,
524 &feature_addsubiw,
525 &feature_jmpcall,
526 &feature_lpm,523 &feature_lpm,
524 &feature_spm,
525 &feature_ijmpcall,
526 &feature_sram,
527 &feature_break,527 &feature_break,
528 &feature_jmpcall,
528 &feature_mul,529 &feature_mul,
529 &feature_sram,
530 &feature_ijmpcall,
531 &feature_movw,530 &feature_movw,
531 &feature_addsubiw,
532 },532 },
533};533};
534534
535pub const cpu_at90usb1286 = Cpu{535pub const cpu_at90usb1286 = Cpu{
536 .name = "at90usb1286",536 .name = "at90usb1286",
537 .llvm_name = "at90usb1286",537 .llvm_name = "at90usb1286",
538 .subfeatures = &[_]*const Feature {538 .dependencies = &[_]*const Feature {
539 &feature_lpmx,539 &feature_lpmx,
540 &feature_elpm,
540 &feature_spm,541 &feature_spm,
541 &feature_addsubiw,
542 &feature_jmpcall,
543 &feature_lpm,542 &feature_lpm,
544 &feature_break,543 &feature_ijmpcall,
545 &feature_mul,
546 &feature_elpm,
547 &feature_elpmx,544 &feature_elpmx,
548 &feature_sram,545 &feature_sram,
549 &feature_ijmpcall,546 &feature_break,
547 &feature_jmpcall,
548 &feature_mul,
550 &feature_movw,549 &feature_movw,
550 &feature_addsubiw,
551 },551 },
552};552};
553553
554pub const cpu_at90usb1287 = Cpu{554pub const cpu_at90usb1287 = Cpu{
555 .name = "at90usb1287",555 .name = "at90usb1287",
556 .llvm_name = "at90usb1287",556 .llvm_name = "at90usb1287",
557 .subfeatures = &[_]*const Feature {557 .dependencies = &[_]*const Feature {
558 &feature_lpmx,558 &feature_lpmx,
559 &feature_elpm,
559 &feature_spm,560 &feature_spm,
560 &feature_addsubiw,
561 &feature_jmpcall,
562 &feature_lpm,561 &feature_lpm,
563 &feature_break,562 &feature_ijmpcall,
564 &feature_mul,
565 &feature_elpm,
566 &feature_elpmx,563 &feature_elpmx,
567 &feature_sram,564 &feature_sram,
568 &feature_ijmpcall,565 &feature_break,
566 &feature_jmpcall,
567 &feature_mul,
569 &feature_movw,568 &feature_movw,
569 &feature_addsubiw,
570 },570 },
571};571};
572572
573pub const cpu_at90usb162 = Cpu{573pub const cpu_at90usb162 = Cpu{
574 .name = "at90usb162",574 .name = "at90usb162",
575 .llvm_name = "at90usb162",575 .llvm_name = "at90usb162",
576 .subfeatures = &[_]*const Feature {576 .dependencies = &[_]*const Feature {
577 &feature_lpmx,577 &feature_lpmx,
578 &feature_spm,
579 &feature_addsubiw,
580 &feature_jmpcall,
581 &feature_lpm,578 &feature_lpm,
582 &feature_break,579 &feature_spm,
583 &feature_sram,
584 &feature_ijmpcall,580 &feature_ijmpcall,
581 &feature_sram,
582 &feature_break,
583 &feature_jmpcall,
585 &feature_movw,584 &feature_movw,
585 &feature_addsubiw,
586 },586 },
587};587};
588588
589pub const cpu_at90usb646 = Cpu{589pub const cpu_at90usb646 = Cpu{
590 .name = "at90usb646",590 .name = "at90usb646",
591 .llvm_name = "at90usb646",591 .llvm_name = "at90usb646",
592 .subfeatures = &[_]*const Feature {592 .dependencies = &[_]*const Feature {
593 &feature_lpmx,593 &feature_lpmx,
594 &feature_spm,
595 &feature_addsubiw,
596 &feature_jmpcall,
597 &feature_lpm,594 &feature_lpm,
595 &feature_spm,
596 &feature_ijmpcall,
597 &feature_sram,
598 &feature_break,598 &feature_break,
599 &feature_jmpcall,
599 &feature_mul,600 &feature_mul,
600 &feature_sram,
601 &feature_ijmpcall,
602 &feature_movw,601 &feature_movw,
602 &feature_addsubiw,
603 },603 },
604};604};
605605
606pub const cpu_at90usb647 = Cpu{606pub const cpu_at90usb647 = Cpu{
607 .name = "at90usb647",607 .name = "at90usb647",
608 .llvm_name = "at90usb647",608 .llvm_name = "at90usb647",
609 .subfeatures = &[_]*const Feature {609 .dependencies = &[_]*const Feature {
610 &feature_lpmx,610 &feature_lpmx,
611 &feature_spm,
612 &feature_addsubiw,
613 &feature_jmpcall,
614 &feature_lpm,611 &feature_lpm,
612 &feature_spm,
613 &feature_ijmpcall,
614 &feature_sram,
615 &feature_break,615 &feature_break,
616 &feature_jmpcall,
616 &feature_mul,617 &feature_mul,
617 &feature_sram,
618 &feature_ijmpcall,
619 &feature_movw,618 &feature_movw,
619 &feature_addsubiw,
620 },620 },
621};621};
622622
623pub const cpu_at90usb82 = Cpu{623pub const cpu_at90usb82 = Cpu{
624 .name = "at90usb82",624 .name = "at90usb82",
625 .llvm_name = "at90usb82",625 .llvm_name = "at90usb82",
626 .subfeatures = &[_]*const Feature {626 .dependencies = &[_]*const Feature {
627 &feature_lpmx,627 &feature_lpmx,
628 &feature_spm,
629 &feature_addsubiw,
630 &feature_jmpcall,
631 &feature_lpm,628 &feature_lpm,
632 &feature_break,629 &feature_spm,
633 &feature_sram,
634 &feature_ijmpcall,630 &feature_ijmpcall,
631 &feature_sram,
632 &feature_break,
633 &feature_jmpcall,
635 &feature_movw,634 &feature_movw,
635 &feature_addsubiw,
636 },636 },
637};637};
638638
639pub const cpu_at94k = Cpu{639pub const cpu_at94k = Cpu{
640 .name = "at94k",640 .name = "at94k",
641 .llvm_name = "at94k",641 .llvm_name = "at94k",
642 .subfeatures = &[_]*const Feature {642 .dependencies = &[_]*const Feature {
643 &feature_addsubiw,
644 &feature_jmpcall,
645 &feature_lpm,643 &feature_lpm,
646 &feature_sram,
647 &feature_ijmpcall,644 &feature_ijmpcall,
645 &feature_sram,
646 &feature_jmpcall,
647 &feature_addsubiw,
648 &feature_lpmx,648 &feature_lpmx,
649 &feature_movw,649 &feature_movw,
650 &feature_mul,650 &feature_mul,
...@@ -654,326 +654,326 @@ pub const cpu_at94k = Cpu{...@@ -654,326 +654,326 @@ pub const cpu_at94k = Cpu{
654pub const cpu_ata5272 = Cpu{654pub const cpu_ata5272 = Cpu{
655 .name = "ata5272",655 .name = "ata5272",
656 .llvm_name = "ata5272",656 .llvm_name = "ata5272",
657 .subfeatures = &[_]*const Feature {657 .dependencies = &[_]*const Feature {
658 &feature_lpmx,658 &feature_lpmx,
659 &feature_lpm,
659 &feature_spm,660 &feature_spm,
660 &feature_addsubiw,
661 &feature_break,
662 &feature_lpm,
663 &feature_sram,
664 &feature_ijmpcall,661 &feature_ijmpcall,
662 &feature_sram,
663 &feature_break,
665 &feature_movw,664 &feature_movw,
665 &feature_addsubiw,
666 },666 },
667};667};
668668
669pub const cpu_ata5505 = Cpu{669pub const cpu_ata5505 = Cpu{
670 .name = "ata5505",670 .name = "ata5505",
671 .llvm_name = "ata5505",671 .llvm_name = "ata5505",
672 .subfeatures = &[_]*const Feature {672 .dependencies = &[_]*const Feature {
673 &feature_lpmx,673 &feature_lpmx,
674 &feature_spm,
675 &feature_addsubiw,
676 &feature_jmpcall,
677 &feature_lpm,674 &feature_lpm,
678 &feature_break,675 &feature_spm,
679 &feature_sram,
680 &feature_ijmpcall,676 &feature_ijmpcall,
677 &feature_sram,
678 &feature_break,
679 &feature_jmpcall,
681 &feature_movw,680 &feature_movw,
681 &feature_addsubiw,
682 },682 },
683};683};
684684
685pub const cpu_ata5790 = Cpu{685pub const cpu_ata5790 = Cpu{
686 .name = "ata5790",686 .name = "ata5790",
687 .llvm_name = "ata5790",687 .llvm_name = "ata5790",
688 .subfeatures = &[_]*const Feature {688 .dependencies = &[_]*const Feature {
689 &feature_lpmx,689 &feature_lpmx,
690 &feature_spm,
691 &feature_addsubiw,
692 &feature_jmpcall,
693 &feature_lpm,690 &feature_lpm,
691 &feature_spm,
692 &feature_ijmpcall,
693 &feature_sram,
694 &feature_break,694 &feature_break,
695 &feature_jmpcall,
695 &feature_mul,696 &feature_mul,
696 &feature_sram,
697 &feature_ijmpcall,
698 &feature_movw,697 &feature_movw,
698 &feature_addsubiw,
699 },699 },
700};700};
701701
702pub const cpu_ata5795 = Cpu{702pub const cpu_ata5795 = Cpu{
703 .name = "ata5795",703 .name = "ata5795",
704 .llvm_name = "ata5795",704 .llvm_name = "ata5795",
705 .subfeatures = &[_]*const Feature {705 .dependencies = &[_]*const Feature {
706 &feature_lpmx,706 &feature_lpmx,
707 &feature_spm,
708 &feature_addsubiw,
709 &feature_jmpcall,
710 &feature_lpm,707 &feature_lpm,
708 &feature_spm,
709 &feature_ijmpcall,
710 &feature_sram,
711 &feature_break,711 &feature_break,
712 &feature_jmpcall,
712 &feature_mul,713 &feature_mul,
713 &feature_sram,
714 &feature_ijmpcall,
715 &feature_movw,714 &feature_movw,
715 &feature_addsubiw,
716 },716 },
717};717};
718718
719pub const cpu_ata6285 = Cpu{719pub const cpu_ata6285 = Cpu{
720 .name = "ata6285",720 .name = "ata6285",
721 .llvm_name = "ata6285",721 .llvm_name = "ata6285",
722 .subfeatures = &[_]*const Feature {722 .dependencies = &[_]*const Feature {
723 &feature_lpmx,723 &feature_lpmx,
724 &feature_lpm,
724 &feature_spm,725 &feature_spm,
725 &feature_addsubiw,726 &feature_ijmpcall,
727 &feature_sram,
726 &feature_break,728 &feature_break,
727 &feature_lpm,
728 &feature_mul,729 &feature_mul,
729 &feature_sram,
730 &feature_ijmpcall,
731 &feature_movw,730 &feature_movw,
731 &feature_addsubiw,
732 },732 },
733};733};
734734
735pub const cpu_ata6286 = Cpu{735pub const cpu_ata6286 = Cpu{
736 .name = "ata6286",736 .name = "ata6286",
737 .llvm_name = "ata6286",737 .llvm_name = "ata6286",
738 .subfeatures = &[_]*const Feature {738 .dependencies = &[_]*const Feature {
739 &feature_lpmx,739 &feature_lpmx,
740 &feature_lpm,
740 &feature_spm,741 &feature_spm,
741 &feature_addsubiw,742 &feature_ijmpcall,
743 &feature_sram,
742 &feature_break,744 &feature_break,
743 &feature_lpm,
744 &feature_mul,745 &feature_mul,
745 &feature_sram,
746 &feature_ijmpcall,
747 &feature_movw,746 &feature_movw,
747 &feature_addsubiw,
748 },748 },
749};749};
750750
751pub const cpu_ata6289 = Cpu{751pub const cpu_ata6289 = Cpu{
752 .name = "ata6289",752 .name = "ata6289",
753 .llvm_name = "ata6289",753 .llvm_name = "ata6289",
754 .subfeatures = &[_]*const Feature {754 .dependencies = &[_]*const Feature {
755 &feature_lpmx,755 &feature_lpmx,
756 &feature_lpm,
756 &feature_spm,757 &feature_spm,
757 &feature_addsubiw,758 &feature_ijmpcall,
759 &feature_sram,
758 &feature_break,760 &feature_break,
759 &feature_lpm,
760 &feature_mul,761 &feature_mul,
761 &feature_sram,
762 &feature_ijmpcall,
763 &feature_movw,762 &feature_movw,
763 &feature_addsubiw,
764 },764 },
765};765};
766766
767pub const cpu_atmega103 = Cpu{767pub const cpu_atmega103 = Cpu{
768 .name = "atmega103",768 .name = "atmega103",
769 .llvm_name = "atmega103",769 .llvm_name = "atmega103",
770 .subfeatures = &[_]*const Feature {770 .dependencies = &[_]*const Feature {
771 &feature_addsubiw,
772 &feature_jmpcall,
773 &feature_lpm,
774 &feature_elpm,771 &feature_elpm,
775 &feature_sram,772 &feature_lpm,
776 &feature_ijmpcall,773 &feature_ijmpcall,
774 &feature_sram,
775 &feature_jmpcall,
776 &feature_addsubiw,
777 },777 },
778};778};
779779
780pub const cpu_atmega128 = Cpu{780pub const cpu_atmega128 = Cpu{
781 .name = "atmega128",781 .name = "atmega128",
782 .llvm_name = "atmega128",782 .llvm_name = "atmega128",
783 .subfeatures = &[_]*const Feature {783 .dependencies = &[_]*const Feature {
784 &feature_lpmx,784 &feature_lpmx,
785 &feature_elpm,
785 &feature_spm,786 &feature_spm,
786 &feature_addsubiw,
787 &feature_jmpcall,
788 &feature_lpm,787 &feature_lpm,
789 &feature_break,788 &feature_ijmpcall,
790 &feature_mul,
791 &feature_elpm,
792 &feature_elpmx,789 &feature_elpmx,
793 &feature_sram,790 &feature_sram,
794 &feature_ijmpcall,791 &feature_break,
792 &feature_jmpcall,
793 &feature_mul,
795 &feature_movw,794 &feature_movw,
795 &feature_addsubiw,
796 },796 },
797};797};
798798
799pub const cpu_atmega1280 = Cpu{799pub const cpu_atmega1280 = Cpu{
800 .name = "atmega1280",800 .name = "atmega1280",
801 .llvm_name = "atmega1280",801 .llvm_name = "atmega1280",
802 .subfeatures = &[_]*const Feature {802 .dependencies = &[_]*const Feature {
803 &feature_lpmx,803 &feature_lpmx,
804 &feature_elpm,
804 &feature_spm,805 &feature_spm,
805 &feature_addsubiw,
806 &feature_jmpcall,
807 &feature_lpm,806 &feature_lpm,
808 &feature_break,807 &feature_ijmpcall,
809 &feature_mul,
810 &feature_elpm,
811 &feature_elpmx,808 &feature_elpmx,
812 &feature_sram,809 &feature_sram,
813 &feature_ijmpcall,810 &feature_break,
811 &feature_jmpcall,
812 &feature_mul,
814 &feature_movw,813 &feature_movw,
814 &feature_addsubiw,
815 },815 },
816};816};
817817
818pub const cpu_atmega1281 = Cpu{818pub const cpu_atmega1281 = Cpu{
819 .name = "atmega1281",819 .name = "atmega1281",
820 .llvm_name = "atmega1281",820 .llvm_name = "atmega1281",
821 .subfeatures = &[_]*const Feature {821 .dependencies = &[_]*const Feature {
822 &feature_lpmx,822 &feature_lpmx,
823 &feature_elpm,
823 &feature_spm,824 &feature_spm,
824 &feature_addsubiw,
825 &feature_jmpcall,
826 &feature_lpm,825 &feature_lpm,
827 &feature_break,826 &feature_ijmpcall,
828 &feature_mul,
829 &feature_elpm,
830 &feature_elpmx,827 &feature_elpmx,
831 &feature_sram,828 &feature_sram,
832 &feature_ijmpcall,829 &feature_break,
830 &feature_jmpcall,
831 &feature_mul,
833 &feature_movw,832 &feature_movw,
833 &feature_addsubiw,
834 },834 },
835};835};
836836
837pub const cpu_atmega1284 = Cpu{837pub const cpu_atmega1284 = Cpu{
838 .name = "atmega1284",838 .name = "atmega1284",
839 .llvm_name = "atmega1284",839 .llvm_name = "atmega1284",
840 .subfeatures = &[_]*const Feature {840 .dependencies = &[_]*const Feature {
841 &feature_lpmx,841 &feature_lpmx,
842 &feature_elpm,
842 &feature_spm,843 &feature_spm,
843 &feature_addsubiw,
844 &feature_jmpcall,
845 &feature_lpm,844 &feature_lpm,
846 &feature_break,845 &feature_ijmpcall,
847 &feature_mul,
848 &feature_elpm,
849 &feature_elpmx,846 &feature_elpmx,
850 &feature_sram,847 &feature_sram,
851 &feature_ijmpcall,848 &feature_break,
849 &feature_jmpcall,
850 &feature_mul,
852 &feature_movw,851 &feature_movw,
852 &feature_addsubiw,
853 },853 },
854};854};
855855
856pub const cpu_atmega1284p = Cpu{856pub const cpu_atmega1284p = Cpu{
857 .name = "atmega1284p",857 .name = "atmega1284p",
858 .llvm_name = "atmega1284p",858 .llvm_name = "atmega1284p",
859 .subfeatures = &[_]*const Feature {859 .dependencies = &[_]*const Feature {
860 &feature_lpmx,860 &feature_lpmx,
861 &feature_elpm,
861 &feature_spm,862 &feature_spm,
862 &feature_addsubiw,
863 &feature_jmpcall,
864 &feature_lpm,863 &feature_lpm,
865 &feature_break,864 &feature_ijmpcall,
866 &feature_mul,
867 &feature_elpm,
868 &feature_elpmx,865 &feature_elpmx,
869 &feature_sram,866 &feature_sram,
870 &feature_ijmpcall,867 &feature_break,
868 &feature_jmpcall,
869 &feature_mul,
871 &feature_movw,870 &feature_movw,
871 &feature_addsubiw,
872 },872 },
873};873};
874874
875pub const cpu_atmega1284rfr2 = Cpu{875pub const cpu_atmega1284rfr2 = Cpu{
876 .name = "atmega1284rfr2",876 .name = "atmega1284rfr2",
877 .llvm_name = "atmega1284rfr2",877 .llvm_name = "atmega1284rfr2",
878 .subfeatures = &[_]*const Feature {878 .dependencies = &[_]*const Feature {
879 &feature_lpmx,879 &feature_lpmx,
880 &feature_elpm,
880 &feature_spm,881 &feature_spm,
881 &feature_addsubiw,
882 &feature_jmpcall,
883 &feature_lpm,882 &feature_lpm,
884 &feature_break,883 &feature_ijmpcall,
885 &feature_mul,
886 &feature_elpm,
887 &feature_elpmx,884 &feature_elpmx,
888 &feature_sram,885 &feature_sram,
889 &feature_ijmpcall,886 &feature_break,
887 &feature_jmpcall,
888 &feature_mul,
890 &feature_movw,889 &feature_movw,
890 &feature_addsubiw,
891 },891 },
892};892};
893893
894pub const cpu_atmega128a = Cpu{894pub const cpu_atmega128a = Cpu{
895 .name = "atmega128a",895 .name = "atmega128a",
896 .llvm_name = "atmega128a",896 .llvm_name = "atmega128a",
897 .subfeatures = &[_]*const Feature {897 .dependencies = &[_]*const Feature {
898 &feature_lpmx,898 &feature_lpmx,
899 &feature_elpm,
899 &feature_spm,900 &feature_spm,
900 &feature_addsubiw,
901 &feature_jmpcall,
902 &feature_lpm,901 &feature_lpm,
903 &feature_break,902 &feature_ijmpcall,
904 &feature_mul,
905 &feature_elpm,
906 &feature_elpmx,903 &feature_elpmx,
907 &feature_sram,904 &feature_sram,
908 &feature_ijmpcall,905 &feature_break,
906 &feature_jmpcall,
907 &feature_mul,
909 &feature_movw,908 &feature_movw,
909 &feature_addsubiw,
910 },910 },
911};911};
912912
913pub const cpu_atmega128rfa1 = Cpu{913pub const cpu_atmega128rfa1 = Cpu{
914 .name = "atmega128rfa1",914 .name = "atmega128rfa1",
915 .llvm_name = "atmega128rfa1",915 .llvm_name = "atmega128rfa1",
916 .subfeatures = &[_]*const Feature {916 .dependencies = &[_]*const Feature {
917 &feature_lpmx,917 &feature_lpmx,
918 &feature_elpm,
918 &feature_spm,919 &feature_spm,
919 &feature_addsubiw,
920 &feature_jmpcall,
921 &feature_lpm,920 &feature_lpm,
922 &feature_break,921 &feature_ijmpcall,
923 &feature_mul,
924 &feature_elpm,
925 &feature_elpmx,922 &feature_elpmx,
926 &feature_sram,923 &feature_sram,
927 &feature_ijmpcall,924 &feature_break,
925 &feature_jmpcall,
926 &feature_mul,
928 &feature_movw,927 &feature_movw,
928 &feature_addsubiw,
929 },929 },
930};930};
931931
932pub const cpu_atmega128rfr2 = Cpu{932pub const cpu_atmega128rfr2 = Cpu{
933 .name = "atmega128rfr2",933 .name = "atmega128rfr2",
934 .llvm_name = "atmega128rfr2",934 .llvm_name = "atmega128rfr2",
935 .subfeatures = &[_]*const Feature {935 .dependencies = &[_]*const Feature {
936 &feature_lpmx,936 &feature_lpmx,
937 &feature_elpm,
937 &feature_spm,938 &feature_spm,
938 &feature_addsubiw,
939 &feature_jmpcall,
940 &feature_lpm,939 &feature_lpm,
941 &feature_break,940 &feature_ijmpcall,
942 &feature_mul,
943 &feature_elpm,
944 &feature_elpmx,941 &feature_elpmx,
945 &feature_sram,942 &feature_sram,
946 &feature_ijmpcall,943 &feature_break,
944 &feature_jmpcall,
945 &feature_mul,
947 &feature_movw,946 &feature_movw,
947 &feature_addsubiw,
948 },948 },
949};949};
950950
951pub const cpu_atmega16 = Cpu{951pub const cpu_atmega16 = Cpu{
952 .name = "atmega16",952 .name = "atmega16",
953 .llvm_name = "atmega16",953 .llvm_name = "atmega16",
954 .subfeatures = &[_]*const Feature {954 .dependencies = &[_]*const Feature {
955 &feature_lpmx,955 &feature_lpmx,
956 &feature_spm,
957 &feature_addsubiw,
958 &feature_jmpcall,
959 &feature_lpm,956 &feature_lpm,
957 &feature_spm,
958 &feature_ijmpcall,
959 &feature_sram,
960 &feature_break,960 &feature_break,
961 &feature_jmpcall,
961 &feature_mul,962 &feature_mul,
962 &feature_sram,
963 &feature_ijmpcall,
964 &feature_movw,963 &feature_movw,
964 &feature_addsubiw,
965 },965 },
966};966};
967967
968pub const cpu_atmega161 = Cpu{968pub const cpu_atmega161 = Cpu{
969 .name = "atmega161",969 .name = "atmega161",
970 .llvm_name = "atmega161",970 .llvm_name = "atmega161",
971 .subfeatures = &[_]*const Feature {971 .dependencies = &[_]*const Feature {
972 &feature_addsubiw,
973 &feature_jmpcall,
974 &feature_lpm,972 &feature_lpm,
975 &feature_sram,
976 &feature_ijmpcall,973 &feature_ijmpcall,
974 &feature_sram,
975 &feature_jmpcall,
976 &feature_addsubiw,
977 &feature_lpmx,977 &feature_lpmx,
978 &feature_movw,978 &feature_movw,
979 &feature_mul,979 &feature_mul,
...@@ -984,29 +984,29 @@ pub const cpu_atmega161 = Cpu{...@@ -984,29 +984,29 @@ pub const cpu_atmega161 = Cpu{
984pub const cpu_atmega162 = Cpu{984pub const cpu_atmega162 = Cpu{
985 .name = "atmega162",985 .name = "atmega162",
986 .llvm_name = "atmega162",986 .llvm_name = "atmega162",
987 .subfeatures = &[_]*const Feature {987 .dependencies = &[_]*const Feature {
988 &feature_lpmx,988 &feature_lpmx,
989 &feature_spm,
990 &feature_addsubiw,
991 &feature_jmpcall,
992 &feature_lpm,989 &feature_lpm,
990 &feature_spm,
991 &feature_ijmpcall,
992 &feature_sram,
993 &feature_break,993 &feature_break,
994 &feature_jmpcall,
994 &feature_mul,995 &feature_mul,
995 &feature_sram,
996 &feature_ijmpcall,
997 &feature_movw,996 &feature_movw,
997 &feature_addsubiw,
998 },998 },
999};999};
10001000
1001pub const cpu_atmega163 = Cpu{1001pub const cpu_atmega163 = Cpu{
1002 .name = "atmega163",1002 .name = "atmega163",
1003 .llvm_name = "atmega163",1003 .llvm_name = "atmega163",
1004 .subfeatures = &[_]*const Feature {1004 .dependencies = &[_]*const Feature {
1005 &feature_addsubiw,
1006 &feature_jmpcall,
1007 &feature_lpm,1005 &feature_lpm,
1008 &feature_sram,
1009 &feature_ijmpcall,1006 &feature_ijmpcall,
1007 &feature_sram,
1008 &feature_jmpcall,
1009 &feature_addsubiw,
1010 &feature_lpmx,1010 &feature_lpmx,
1011 &feature_movw,1011 &feature_movw,
1012 &feature_mul,1012 &feature_mul,
...@@ -1017,1508 +1017,1508 @@ pub const cpu_atmega163 = Cpu{...@@ -1017,1508 +1017,1508 @@ pub const cpu_atmega163 = Cpu{
1017pub const cpu_atmega164a = Cpu{1017pub const cpu_atmega164a = Cpu{
1018 .name = "atmega164a",1018 .name = "atmega164a",
1019 .llvm_name = "atmega164a",1019 .llvm_name = "atmega164a",
1020 .subfeatures = &[_]*const Feature {1020 .dependencies = &[_]*const Feature {
1021 &feature_lpmx,1021 &feature_lpmx,
1022 &feature_spm,
1023 &feature_addsubiw,
1024 &feature_jmpcall,
1025 &feature_lpm,1022 &feature_lpm,
1023 &feature_spm,
1024 &feature_ijmpcall,
1025 &feature_sram,
1026 &feature_break,1026 &feature_break,
1027 &feature_jmpcall,
1027 &feature_mul,1028 &feature_mul,
1028 &feature_sram,
1029 &feature_ijmpcall,
1030 &feature_movw,1029 &feature_movw,
1030 &feature_addsubiw,
1031 },1031 },
1032};1032};
10331033
1034pub const cpu_atmega164p = Cpu{1034pub const cpu_atmega164p = Cpu{
1035 .name = "atmega164p",1035 .name = "atmega164p",
1036 .llvm_name = "atmega164p",1036 .llvm_name = "atmega164p",
1037 .subfeatures = &[_]*const Feature {1037 .dependencies = &[_]*const Feature {
1038 &feature_lpmx,1038 &feature_lpmx,
1039 &feature_spm,
1040 &feature_addsubiw,
1041 &feature_jmpcall,
1042 &feature_lpm,1039 &feature_lpm,
1040 &feature_spm,
1041 &feature_ijmpcall,
1042 &feature_sram,
1043 &feature_break,1043 &feature_break,
1044 &feature_jmpcall,
1044 &feature_mul,1045 &feature_mul,
1045 &feature_sram,
1046 &feature_ijmpcall,
1047 &feature_movw,1046 &feature_movw,
1047 &feature_addsubiw,
1048 },1048 },
1049};1049};
10501050
1051pub const cpu_atmega164pa = Cpu{1051pub const cpu_atmega164pa = Cpu{
1052 .name = "atmega164pa",1052 .name = "atmega164pa",
1053 .llvm_name = "atmega164pa",1053 .llvm_name = "atmega164pa",
1054 .subfeatures = &[_]*const Feature {1054 .dependencies = &[_]*const Feature {
1055 &feature_lpmx,1055 &feature_lpmx,
1056 &feature_spm,
1057 &feature_addsubiw,
1058 &feature_jmpcall,
1059 &feature_lpm,1056 &feature_lpm,
1057 &feature_spm,
1058 &feature_ijmpcall,
1059 &feature_sram,
1060 &feature_break,1060 &feature_break,
1061 &feature_jmpcall,
1061 &feature_mul,1062 &feature_mul,
1062 &feature_sram,
1063 &feature_ijmpcall,
1064 &feature_movw,1063 &feature_movw,
1064 &feature_addsubiw,
1065 },1065 },
1066};1066};
10671067
1068pub const cpu_atmega165 = Cpu{1068pub const cpu_atmega165 = Cpu{
1069 .name = "atmega165",1069 .name = "atmega165",
1070 .llvm_name = "atmega165",1070 .llvm_name = "atmega165",
1071 .subfeatures = &[_]*const Feature {1071 .dependencies = &[_]*const Feature {
1072 &feature_lpmx,1072 &feature_lpmx,
1073 &feature_spm,
1074 &feature_addsubiw,
1075 &feature_jmpcall,
1076 &feature_lpm,1073 &feature_lpm,
1074 &feature_spm,
1075 &feature_ijmpcall,
1076 &feature_sram,
1077 &feature_break,1077 &feature_break,
1078 &feature_jmpcall,
1078 &feature_mul,1079 &feature_mul,
1079 &feature_sram,
1080 &feature_ijmpcall,
1081 &feature_movw,1080 &feature_movw,
1081 &feature_addsubiw,
1082 },1082 },
1083};1083};
10841084
1085pub const cpu_atmega165a = Cpu{1085pub const cpu_atmega165a = Cpu{
1086 .name = "atmega165a",1086 .name = "atmega165a",
1087 .llvm_name = "atmega165a",1087 .llvm_name = "atmega165a",
1088 .subfeatures = &[_]*const Feature {1088 .dependencies = &[_]*const Feature {
1089 &feature_lpmx,1089 &feature_lpmx,
1090 &feature_spm,
1091 &feature_addsubiw,
1092 &feature_jmpcall,
1093 &feature_lpm,1090 &feature_lpm,
1091 &feature_spm,
1092 &feature_ijmpcall,
1093 &feature_sram,
1094 &feature_break,1094 &feature_break,
1095 &feature_jmpcall,
1095 &feature_mul,1096 &feature_mul,
1096 &feature_sram,
1097 &feature_ijmpcall,
1098 &feature_movw,1097 &feature_movw,
1098 &feature_addsubiw,
1099 },1099 },
1100};1100};
11011101
1102pub const cpu_atmega165p = Cpu{1102pub const cpu_atmega165p = Cpu{
1103 .name = "atmega165p",1103 .name = "atmega165p",
1104 .llvm_name = "atmega165p",1104 .llvm_name = "atmega165p",
1105 .subfeatures = &[_]*const Feature {1105 .dependencies = &[_]*const Feature {
1106 &feature_lpmx,1106 &feature_lpmx,
1107 &feature_spm,
1108 &feature_addsubiw,
1109 &feature_jmpcall,
1110 &feature_lpm,1107 &feature_lpm,
1108 &feature_spm,
1109 &feature_ijmpcall,
1110 &feature_sram,
1111 &feature_break,1111 &feature_break,
1112 &feature_jmpcall,
1112 &feature_mul,1113 &feature_mul,
1113 &feature_sram,
1114 &feature_ijmpcall,
1115 &feature_movw,1114 &feature_movw,
1115 &feature_addsubiw,
1116 },1116 },
1117};1117};
11181118
1119pub const cpu_atmega165pa = Cpu{1119pub const cpu_atmega165pa = Cpu{
1120 .name = "atmega165pa",1120 .name = "atmega165pa",
1121 .llvm_name = "atmega165pa",1121 .llvm_name = "atmega165pa",
1122 .subfeatures = &[_]*const Feature {1122 .dependencies = &[_]*const Feature {
1123 &feature_lpmx,1123 &feature_lpmx,
1124 &feature_spm,
1125 &feature_addsubiw,
1126 &feature_jmpcall,
1127 &feature_lpm,1124 &feature_lpm,
1125 &feature_spm,
1126 &feature_ijmpcall,
1127 &feature_sram,
1128 &feature_break,1128 &feature_break,
1129 &feature_jmpcall,
1129 &feature_mul,1130 &feature_mul,
1130 &feature_sram,
1131 &feature_ijmpcall,
1132 &feature_movw,1131 &feature_movw,
1132 &feature_addsubiw,
1133 },1133 },
1134};1134};
11351135
1136pub const cpu_atmega168 = Cpu{1136pub const cpu_atmega168 = Cpu{
1137 .name = "atmega168",1137 .name = "atmega168",
1138 .llvm_name = "atmega168",1138 .llvm_name = "atmega168",
1139 .subfeatures = &[_]*const Feature {1139 .dependencies = &[_]*const Feature {
1140 &feature_lpmx,1140 &feature_lpmx,
1141 &feature_spm,
1142 &feature_addsubiw,
1143 &feature_jmpcall,
1144 &feature_lpm,1141 &feature_lpm,
1142 &feature_spm,
1143 &feature_ijmpcall,
1144 &feature_sram,
1145 &feature_break,1145 &feature_break,
1146 &feature_jmpcall,
1146 &feature_mul,1147 &feature_mul,
1147 &feature_sram,
1148 &feature_ijmpcall,
1149 &feature_movw,1148 &feature_movw,
1149 &feature_addsubiw,
1150 },1150 },
1151};1151};
11521152
1153pub const cpu_atmega168a = Cpu{1153pub const cpu_atmega168a = Cpu{
1154 .name = "atmega168a",1154 .name = "atmega168a",
1155 .llvm_name = "atmega168a",1155 .llvm_name = "atmega168a",
1156 .subfeatures = &[_]*const Feature {1156 .dependencies = &[_]*const Feature {
1157 &feature_lpmx,1157 &feature_lpmx,
1158 &feature_spm,
1159 &feature_addsubiw,
1160 &feature_jmpcall,
1161 &feature_lpm,1158 &feature_lpm,
1159 &feature_spm,
1160 &feature_ijmpcall,
1161 &feature_sram,
1162 &feature_break,1162 &feature_break,
1163 &feature_jmpcall,
1163 &feature_mul,1164 &feature_mul,
1164 &feature_sram,
1165 &feature_ijmpcall,
1166 &feature_movw,1165 &feature_movw,
1166 &feature_addsubiw,
1167 },1167 },
1168};1168};
11691169
1170pub const cpu_atmega168p = Cpu{1170pub const cpu_atmega168p = Cpu{
1171 .name = "atmega168p",1171 .name = "atmega168p",
1172 .llvm_name = "atmega168p",1172 .llvm_name = "atmega168p",
1173 .subfeatures = &[_]*const Feature {1173 .dependencies = &[_]*const Feature {
1174 &feature_lpmx,1174 &feature_lpmx,
1175 &feature_spm,
1176 &feature_addsubiw,
1177 &feature_jmpcall,
1178 &feature_lpm,1175 &feature_lpm,
1176 &feature_spm,
1177 &feature_ijmpcall,
1178 &feature_sram,
1179 &feature_break,1179 &feature_break,
1180 &feature_jmpcall,
1180 &feature_mul,1181 &feature_mul,
1181 &feature_sram,
1182 &feature_ijmpcall,
1183 &feature_movw,1182 &feature_movw,
1183 &feature_addsubiw,
1184 },1184 },
1185};1185};
11861186
1187pub const cpu_atmega168pa = Cpu{1187pub const cpu_atmega168pa = Cpu{
1188 .name = "atmega168pa",1188 .name = "atmega168pa",
1189 .llvm_name = "atmega168pa",1189 .llvm_name = "atmega168pa",
1190 .subfeatures = &[_]*const Feature {1190 .dependencies = &[_]*const Feature {
1191 &feature_lpmx,1191 &feature_lpmx,
1192 &feature_spm,
1193 &feature_addsubiw,
1194 &feature_jmpcall,
1195 &feature_lpm,1192 &feature_lpm,
1193 &feature_spm,
1194 &feature_ijmpcall,
1195 &feature_sram,
1196 &feature_break,1196 &feature_break,
1197 &feature_jmpcall,
1197 &feature_mul,1198 &feature_mul,
1198 &feature_sram,
1199 &feature_ijmpcall,
1200 &feature_movw,1199 &feature_movw,
1200 &feature_addsubiw,
1201 },1201 },
1202};1202};
12031203
1204pub const cpu_atmega169 = Cpu{1204pub const cpu_atmega169 = Cpu{
1205 .name = "atmega169",1205 .name = "atmega169",
1206 .llvm_name = "atmega169",1206 .llvm_name = "atmega169",
1207 .subfeatures = &[_]*const Feature {1207 .dependencies = &[_]*const Feature {
1208 &feature_lpmx,1208 &feature_lpmx,
1209 &feature_spm,
1210 &feature_addsubiw,
1211 &feature_jmpcall,
1212 &feature_lpm,1209 &feature_lpm,
1210 &feature_spm,
1211 &feature_ijmpcall,
1212 &feature_sram,
1213 &feature_break,1213 &feature_break,
1214 &feature_jmpcall,
1214 &feature_mul,1215 &feature_mul,
1215 &feature_sram,
1216 &feature_ijmpcall,
1217 &feature_movw,1216 &feature_movw,
1217 &feature_addsubiw,
1218 },1218 },
1219};1219};
12201220
1221pub const cpu_atmega169a = Cpu{1221pub const cpu_atmega169a = Cpu{
1222 .name = "atmega169a",1222 .name = "atmega169a",
1223 .llvm_name = "atmega169a",1223 .llvm_name = "atmega169a",
1224 .subfeatures = &[_]*const Feature {1224 .dependencies = &[_]*const Feature {
1225 &feature_lpmx,1225 &feature_lpmx,
1226 &feature_spm,
1227 &feature_addsubiw,
1228 &feature_jmpcall,
1229 &feature_lpm,1226 &feature_lpm,
1227 &feature_spm,
1228 &feature_ijmpcall,
1229 &feature_sram,
1230 &feature_break,1230 &feature_break,
1231 &feature_jmpcall,
1231 &feature_mul,1232 &feature_mul,
1232 &feature_sram,
1233 &feature_ijmpcall,
1234 &feature_movw,1233 &feature_movw,
1234 &feature_addsubiw,
1235 },1235 },
1236};1236};
12371237
1238pub const cpu_atmega169p = Cpu{1238pub const cpu_atmega169p = Cpu{
1239 .name = "atmega169p",1239 .name = "atmega169p",
1240 .llvm_name = "atmega169p",1240 .llvm_name = "atmega169p",
1241 .subfeatures = &[_]*const Feature {1241 .dependencies = &[_]*const Feature {
1242 &feature_lpmx,1242 &feature_lpmx,
1243 &feature_spm,
1244 &feature_addsubiw,
1245 &feature_jmpcall,
1246 &feature_lpm,1243 &feature_lpm,
1244 &feature_spm,
1245 &feature_ijmpcall,
1246 &feature_sram,
1247 &feature_break,1247 &feature_break,
1248 &feature_jmpcall,
1248 &feature_mul,1249 &feature_mul,
1249 &feature_sram,
1250 &feature_ijmpcall,
1251 &feature_movw,1250 &feature_movw,
1251 &feature_addsubiw,
1252 },1252 },
1253};1253};
12541254
1255pub const cpu_atmega169pa = Cpu{1255pub const cpu_atmega169pa = Cpu{
1256 .name = "atmega169pa",1256 .name = "atmega169pa",
1257 .llvm_name = "atmega169pa",1257 .llvm_name = "atmega169pa",
1258 .subfeatures = &[_]*const Feature {1258 .dependencies = &[_]*const Feature {
1259 &feature_lpmx,1259 &feature_lpmx,
1260 &feature_spm,
1261 &feature_addsubiw,
1262 &feature_jmpcall,
1263 &feature_lpm,1260 &feature_lpm,
1261 &feature_spm,
1262 &feature_ijmpcall,
1263 &feature_sram,
1264 &feature_break,1264 &feature_break,
1265 &feature_jmpcall,
1265 &feature_mul,1266 &feature_mul,
1266 &feature_sram,
1267 &feature_ijmpcall,
1268 &feature_movw,1267 &feature_movw,
1268 &feature_addsubiw,
1269 },1269 },
1270};1270};
12711271
1272pub const cpu_atmega16a = Cpu{1272pub const cpu_atmega16a = Cpu{
1273 .name = "atmega16a",1273 .name = "atmega16a",
1274 .llvm_name = "atmega16a",1274 .llvm_name = "atmega16a",
1275 .subfeatures = &[_]*const Feature {1275 .dependencies = &[_]*const Feature {
1276 &feature_lpmx,1276 &feature_lpmx,
1277 &feature_spm,
1278 &feature_addsubiw,
1279 &feature_jmpcall,
1280 &feature_lpm,1277 &feature_lpm,
1278 &feature_spm,
1279 &feature_ijmpcall,
1280 &feature_sram,
1281 &feature_break,1281 &feature_break,
1282 &feature_jmpcall,
1282 &feature_mul,1283 &feature_mul,
1283 &feature_sram,
1284 &feature_ijmpcall,
1285 &feature_movw,1284 &feature_movw,
1285 &feature_addsubiw,
1286 },1286 },
1287};1287};
12881288
1289pub const cpu_atmega16hva = Cpu{1289pub const cpu_atmega16hva = Cpu{
1290 .name = "atmega16hva",1290 .name = "atmega16hva",
1291 .llvm_name = "atmega16hva",1291 .llvm_name = "atmega16hva",
1292 .subfeatures = &[_]*const Feature {1292 .dependencies = &[_]*const Feature {
1293 &feature_lpmx,1293 &feature_lpmx,
1294 &feature_spm,
1295 &feature_addsubiw,
1296 &feature_jmpcall,
1297 &feature_lpm,1294 &feature_lpm,
1295 &feature_spm,
1296 &feature_ijmpcall,
1297 &feature_sram,
1298 &feature_break,1298 &feature_break,
1299 &feature_jmpcall,
1299 &feature_mul,1300 &feature_mul,
1300 &feature_sram,
1301 &feature_ijmpcall,
1302 &feature_movw,1301 &feature_movw,
1302 &feature_addsubiw,
1303 },1303 },
1304};1304};
13051305
1306pub const cpu_atmega16hva2 = Cpu{1306pub const cpu_atmega16hva2 = Cpu{
1307 .name = "atmega16hva2",1307 .name = "atmega16hva2",
1308 .llvm_name = "atmega16hva2",1308 .llvm_name = "atmega16hva2",
1309 .subfeatures = &[_]*const Feature {1309 .dependencies = &[_]*const Feature {
1310 &feature_lpmx,1310 &feature_lpmx,
1311 &feature_spm,
1312 &feature_addsubiw,
1313 &feature_jmpcall,
1314 &feature_lpm,1311 &feature_lpm,
1312 &feature_spm,
1313 &feature_ijmpcall,
1314 &feature_sram,
1315 &feature_break,1315 &feature_break,
1316 &feature_jmpcall,
1316 &feature_mul,1317 &feature_mul,
1317 &feature_sram,
1318 &feature_ijmpcall,
1319 &feature_movw,1318 &feature_movw,
1319 &feature_addsubiw,
1320 },1320 },
1321};1321};
13221322
1323pub const cpu_atmega16hvb = Cpu{1323pub const cpu_atmega16hvb = Cpu{
1324 .name = "atmega16hvb",1324 .name = "atmega16hvb",
1325 .llvm_name = "atmega16hvb",1325 .llvm_name = "atmega16hvb",
1326 .subfeatures = &[_]*const Feature {1326 .dependencies = &[_]*const Feature {
1327 &feature_lpmx,1327 &feature_lpmx,
1328 &feature_spm,
1329 &feature_addsubiw,
1330 &feature_jmpcall,
1331 &feature_lpm,1328 &feature_lpm,
1329 &feature_spm,
1330 &feature_ijmpcall,
1331 &feature_sram,
1332 &feature_break,1332 &feature_break,
1333 &feature_jmpcall,
1333 &feature_mul,1334 &feature_mul,
1334 &feature_sram,
1335 &feature_ijmpcall,
1336 &feature_movw,1335 &feature_movw,
1336 &feature_addsubiw,
1337 },1337 },
1338};1338};
13391339
1340pub const cpu_atmega16hvbrevb = Cpu{1340pub const cpu_atmega16hvbrevb = Cpu{
1341 .name = "atmega16hvbrevb",1341 .name = "atmega16hvbrevb",
1342 .llvm_name = "atmega16hvbrevb",1342 .llvm_name = "atmega16hvbrevb",
1343 .subfeatures = &[_]*const Feature {1343 .dependencies = &[_]*const Feature {
1344 &feature_lpmx,1344 &feature_lpmx,
1345 &feature_spm,
1346 &feature_addsubiw,
1347 &feature_jmpcall,
1348 &feature_lpm,1345 &feature_lpm,
1346 &feature_spm,
1347 &feature_ijmpcall,
1348 &feature_sram,
1349 &feature_break,1349 &feature_break,
1350 &feature_jmpcall,
1350 &feature_mul,1351 &feature_mul,
1351 &feature_sram,
1352 &feature_ijmpcall,
1353 &feature_movw,1352 &feature_movw,
1353 &feature_addsubiw,
1354 },1354 },
1355};1355};
13561356
1357pub const cpu_atmega16m1 = Cpu{1357pub const cpu_atmega16m1 = Cpu{
1358 .name = "atmega16m1",1358 .name = "atmega16m1",
1359 .llvm_name = "atmega16m1",1359 .llvm_name = "atmega16m1",
1360 .subfeatures = &[_]*const Feature {1360 .dependencies = &[_]*const Feature {
1361 &feature_lpmx,1361 &feature_lpmx,
1362 &feature_spm,
1363 &feature_addsubiw,
1364 &feature_jmpcall,
1365 &feature_lpm,1362 &feature_lpm,
1363 &feature_spm,
1364 &feature_ijmpcall,
1365 &feature_sram,
1366 &feature_break,1366 &feature_break,
1367 &feature_jmpcall,
1367 &feature_mul,1368 &feature_mul,
1368 &feature_sram,
1369 &feature_ijmpcall,
1370 &feature_movw,1369 &feature_movw,
1370 &feature_addsubiw,
1371 },1371 },
1372};1372};
13731373
1374pub const cpu_atmega16u2 = Cpu{1374pub const cpu_atmega16u2 = Cpu{
1375 .name = "atmega16u2",1375 .name = "atmega16u2",
1376 .llvm_name = "atmega16u2",1376 .llvm_name = "atmega16u2",
1377 .subfeatures = &[_]*const Feature {1377 .dependencies = &[_]*const Feature {
1378 &feature_lpmx,1378 &feature_lpmx,
1379 &feature_spm,
1380 &feature_addsubiw,
1381 &feature_jmpcall,
1382 &feature_lpm,1379 &feature_lpm,
1383 &feature_break,1380 &feature_spm,
1384 &feature_sram,
1385 &feature_ijmpcall,1381 &feature_ijmpcall,
1382 &feature_sram,
1383 &feature_break,
1384 &feature_jmpcall,
1386 &feature_movw,1385 &feature_movw,
1386 &feature_addsubiw,
1387 },1387 },
1388};1388};
13891389
1390pub const cpu_atmega16u4 = Cpu{1390pub const cpu_atmega16u4 = Cpu{
1391 .name = "atmega16u4",1391 .name = "atmega16u4",
1392 .llvm_name = "atmega16u4",1392 .llvm_name = "atmega16u4",
1393 .subfeatures = &[_]*const Feature {1393 .dependencies = &[_]*const Feature {
1394 &feature_lpmx,1394 &feature_lpmx,
1395 &feature_spm,
1396 &feature_addsubiw,
1397 &feature_jmpcall,
1398 &feature_lpm,1395 &feature_lpm,
1396 &feature_spm,
1397 &feature_ijmpcall,
1398 &feature_sram,
1399 &feature_break,1399 &feature_break,
1400 &feature_jmpcall,
1400 &feature_mul,1401 &feature_mul,
1401 &feature_sram,
1402 &feature_ijmpcall,
1403 &feature_movw,1402 &feature_movw,
1403 &feature_addsubiw,
1404 },1404 },
1405};1405};
14061406
1407pub const cpu_atmega2560 = Cpu{1407pub const cpu_atmega2560 = Cpu{
1408 .name = "atmega2560",1408 .name = "atmega2560",
1409 .llvm_name = "atmega2560",1409 .llvm_name = "atmega2560",
1410 .subfeatures = &[_]*const Feature {1410 .dependencies = &[_]*const Feature {
1411 &feature_lpmx,1411 &feature_lpmx,
1412 &feature_spm,1412 &feature_elpm,
1413 &feature_addsubiw,
1414 &feature_jmpcall,
1415 &feature_lpm,1413 &feature_lpm,
1414 &feature_spm,
1415 &feature_ijmpcall,
1416 &feature_movw,
1417 &feature_sram,
1416 &feature_break,1418 &feature_break,
1419 &feature_jmpcall,
1417 &feature_mul,1420 &feature_mul,
1418 &feature_elpm,
1419 &feature_elpmx,1421 &feature_elpmx,
1420 &feature_sram,1422 &feature_addsubiw,
1421 &feature_ijmpcall,
1422 &feature_movw,
1423 },1423 },
1424};1424};
14251425
1426pub const cpu_atmega2561 = Cpu{1426pub const cpu_atmega2561 = Cpu{
1427 .name = "atmega2561",1427 .name = "atmega2561",
1428 .llvm_name = "atmega2561",1428 .llvm_name = "atmega2561",
1429 .subfeatures = &[_]*const Feature {1429 .dependencies = &[_]*const Feature {
1430 &feature_lpmx,1430 &feature_lpmx,
1431 &feature_spm,1431 &feature_elpm,
1432 &feature_addsubiw,
1433 &feature_jmpcall,
1434 &feature_lpm,1432 &feature_lpm,
1433 &feature_spm,
1434 &feature_ijmpcall,
1435 &feature_movw,
1436 &feature_sram,
1435 &feature_break,1437 &feature_break,
1438 &feature_jmpcall,
1436 &feature_mul,1439 &feature_mul,
1437 &feature_elpm,
1438 &feature_elpmx,1440 &feature_elpmx,
1439 &feature_sram,1441 &feature_addsubiw,
1440 &feature_ijmpcall,
1441 &feature_movw,
1442 },1442 },
1443};1443};
14441444
1445pub const cpu_atmega2564rfr2 = Cpu{1445pub const cpu_atmega2564rfr2 = Cpu{
1446 .name = "atmega2564rfr2",1446 .name = "atmega2564rfr2",
1447 .llvm_name = "atmega2564rfr2",1447 .llvm_name = "atmega2564rfr2",
1448 .subfeatures = &[_]*const Feature {1448 .dependencies = &[_]*const Feature {
1449 &feature_lpmx,1449 &feature_lpmx,
1450 &feature_spm,1450 &feature_elpm,
1451 &feature_addsubiw,
1452 &feature_jmpcall,
1453 &feature_lpm,1451 &feature_lpm,
1452 &feature_spm,
1453 &feature_ijmpcall,
1454 &feature_movw,
1455 &feature_sram,
1454 &feature_break,1456 &feature_break,
1457 &feature_jmpcall,
1455 &feature_mul,1458 &feature_mul,
1456 &feature_elpm,
1457 &feature_elpmx,1459 &feature_elpmx,
1458 &feature_sram,1460 &feature_addsubiw,
1459 &feature_ijmpcall,
1460 &feature_movw,
1461 },1461 },
1462};1462};
14631463
1464pub const cpu_atmega256rfr2 = Cpu{1464pub const cpu_atmega256rfr2 = Cpu{
1465 .name = "atmega256rfr2",1465 .name = "atmega256rfr2",
1466 .llvm_name = "atmega256rfr2",1466 .llvm_name = "atmega256rfr2",
1467 .subfeatures = &[_]*const Feature {1467 .dependencies = &[_]*const Feature {
1468 &feature_lpmx,1468 &feature_lpmx,
1469 &feature_spm,1469 &feature_elpm,
1470 &feature_addsubiw,
1471 &feature_jmpcall,
1472 &feature_lpm,1470 &feature_lpm,
1471 &feature_spm,
1472 &feature_ijmpcall,
1473 &feature_movw,
1474 &feature_sram,
1473 &feature_break,1475 &feature_break,
1476 &feature_jmpcall,
1474 &feature_mul,1477 &feature_mul,
1475 &feature_elpm,
1476 &feature_elpmx,1478 &feature_elpmx,
1477 &feature_sram,1479 &feature_addsubiw,
1478 &feature_ijmpcall,
1479 &feature_movw,
1480 },1480 },
1481};1481};
14821482
1483pub const cpu_atmega32 = Cpu{1483pub const cpu_atmega32 = Cpu{
1484 .name = "atmega32",1484 .name = "atmega32",
1485 .llvm_name = "atmega32",1485 .llvm_name = "atmega32",
1486 .subfeatures = &[_]*const Feature {1486 .dependencies = &[_]*const Feature {
1487 &feature_lpmx,1487 &feature_lpmx,
1488 &feature_spm,
1489 &feature_addsubiw,
1490 &feature_jmpcall,
1491 &feature_lpm,1488 &feature_lpm,
1489 &feature_spm,
1490 &feature_ijmpcall,
1491 &feature_sram,
1492 &feature_break,1492 &feature_break,
1493 &feature_jmpcall,
1493 &feature_mul,1494 &feature_mul,
1494 &feature_sram,
1495 &feature_ijmpcall,
1496 &feature_movw,1495 &feature_movw,
1496 &feature_addsubiw,
1497 },1497 },
1498};1498};
14991499
1500pub const cpu_atmega323 = Cpu{1500pub const cpu_atmega323 = Cpu{
1501 .name = "atmega323",1501 .name = "atmega323",
1502 .llvm_name = "atmega323",1502 .llvm_name = "atmega323",
1503 .subfeatures = &[_]*const Feature {1503 .dependencies = &[_]*const Feature {
1504 &feature_lpmx,1504 &feature_lpmx,
1505 &feature_spm,
1506 &feature_addsubiw,
1507 &feature_jmpcall,
1508 &feature_lpm,1505 &feature_lpm,
1506 &feature_spm,
1507 &feature_ijmpcall,
1508 &feature_sram,
1509 &feature_break,1509 &feature_break,
1510 &feature_jmpcall,
1510 &feature_mul,1511 &feature_mul,
1511 &feature_sram,
1512 &feature_ijmpcall,
1513 &feature_movw,1512 &feature_movw,
1513 &feature_addsubiw,
1514 },1514 },
1515};1515};
15161516
1517pub const cpu_atmega324a = Cpu{1517pub const cpu_atmega324a = Cpu{
1518 .name = "atmega324a",1518 .name = "atmega324a",
1519 .llvm_name = "atmega324a",1519 .llvm_name = "atmega324a",
1520 .subfeatures = &[_]*const Feature {1520 .dependencies = &[_]*const Feature {
1521 &feature_lpmx,1521 &feature_lpmx,
1522 &feature_spm,
1523 &feature_addsubiw,
1524 &feature_jmpcall,
1525 &feature_lpm,1522 &feature_lpm,
1523 &feature_spm,
1524 &feature_ijmpcall,
1525 &feature_sram,
1526 &feature_break,1526 &feature_break,
1527 &feature_jmpcall,
1527 &feature_mul,1528 &feature_mul,
1528 &feature_sram,
1529 &feature_ijmpcall,
1530 &feature_movw,1529 &feature_movw,
1530 &feature_addsubiw,
1531 },1531 },
1532};1532};
15331533
1534pub const cpu_atmega324p = Cpu{1534pub const cpu_atmega324p = Cpu{
1535 .name = "atmega324p",1535 .name = "atmega324p",
1536 .llvm_name = "atmega324p",1536 .llvm_name = "atmega324p",
1537 .subfeatures = &[_]*const Feature {1537 .dependencies = &[_]*const Feature {
1538 &feature_lpmx,1538 &feature_lpmx,
1539 &feature_spm,
1540 &feature_addsubiw,
1541 &feature_jmpcall,
1542 &feature_lpm,1539 &feature_lpm,
1540 &feature_spm,
1541 &feature_ijmpcall,
1542 &feature_sram,
1543 &feature_break,1543 &feature_break,
1544 &feature_jmpcall,
1544 &feature_mul,1545 &feature_mul,
1545 &feature_sram,
1546 &feature_ijmpcall,
1547 &feature_movw,1546 &feature_movw,
1547 &feature_addsubiw,
1548 },1548 },
1549};1549};
15501550
1551pub const cpu_atmega324pa = Cpu{1551pub const cpu_atmega324pa = Cpu{
1552 .name = "atmega324pa",1552 .name = "atmega324pa",
1553 .llvm_name = "atmega324pa",1553 .llvm_name = "atmega324pa",
1554 .subfeatures = &[_]*const Feature {1554 .dependencies = &[_]*const Feature {
1555 &feature_lpmx,1555 &feature_lpmx,
1556 &feature_spm,
1557 &feature_addsubiw,
1558 &feature_jmpcall,
1559 &feature_lpm,1556 &feature_lpm,
1557 &feature_spm,
1558 &feature_ijmpcall,
1559 &feature_sram,
1560 &feature_break,1560 &feature_break,
1561 &feature_jmpcall,
1561 &feature_mul,1562 &feature_mul,
1562 &feature_sram,
1563 &feature_ijmpcall,
1564 &feature_movw,1563 &feature_movw,
1564 &feature_addsubiw,
1565 },1565 },
1566};1566};
15671567
1568pub const cpu_atmega325 = Cpu{1568pub const cpu_atmega325 = Cpu{
1569 .name = "atmega325",1569 .name = "atmega325",
1570 .llvm_name = "atmega325",1570 .llvm_name = "atmega325",
1571 .subfeatures = &[_]*const Feature {1571 .dependencies = &[_]*const Feature {
1572 &feature_lpmx,1572 &feature_lpmx,
1573 &feature_spm,
1574 &feature_addsubiw,
1575 &feature_jmpcall,
1576 &feature_lpm,1573 &feature_lpm,
1574 &feature_spm,
1575 &feature_ijmpcall,
1576 &feature_sram,
1577 &feature_break,1577 &feature_break,
1578 &feature_jmpcall,
1578 &feature_mul,1579 &feature_mul,
1579 &feature_sram,
1580 &feature_ijmpcall,
1581 &feature_movw,1580 &feature_movw,
1581 &feature_addsubiw,
1582 },1582 },
1583};1583};
15841584
1585pub const cpu_atmega3250 = Cpu{1585pub const cpu_atmega3250 = Cpu{
1586 .name = "atmega3250",1586 .name = "atmega3250",
1587 .llvm_name = "atmega3250",1587 .llvm_name = "atmega3250",
1588 .subfeatures = &[_]*const Feature {1588 .dependencies = &[_]*const Feature {
1589 &feature_lpmx,1589 &feature_lpmx,
1590 &feature_spm,
1591 &feature_addsubiw,
1592 &feature_jmpcall,
1593 &feature_lpm,1590 &feature_lpm,
1591 &feature_spm,
1592 &feature_ijmpcall,
1593 &feature_sram,
1594 &feature_break,1594 &feature_break,
1595 &feature_jmpcall,
1595 &feature_mul,1596 &feature_mul,
1596 &feature_sram,
1597 &feature_ijmpcall,
1598 &feature_movw,1597 &feature_movw,
1598 &feature_addsubiw,
1599 },1599 },
1600};1600};
16011601
1602pub const cpu_atmega3250a = Cpu{1602pub const cpu_atmega3250a = Cpu{
1603 .name = "atmega3250a",1603 .name = "atmega3250a",
1604 .llvm_name = "atmega3250a",1604 .llvm_name = "atmega3250a",
1605 .subfeatures = &[_]*const Feature {1605 .dependencies = &[_]*const Feature {
1606 &feature_lpmx,1606 &feature_lpmx,
1607 &feature_spm,
1608 &feature_addsubiw,
1609 &feature_jmpcall,
1610 &feature_lpm,1607 &feature_lpm,
1608 &feature_spm,
1609 &feature_ijmpcall,
1610 &feature_sram,
1611 &feature_break,1611 &feature_break,
1612 &feature_jmpcall,
1612 &feature_mul,1613 &feature_mul,
1613 &feature_sram,
1614 &feature_ijmpcall,
1615 &feature_movw,1614 &feature_movw,
1615 &feature_addsubiw,
1616 },1616 },
1617};1617};
16181618
1619pub const cpu_atmega3250p = Cpu{1619pub const cpu_atmega3250p = Cpu{
1620 .name = "atmega3250p",1620 .name = "atmega3250p",
1621 .llvm_name = "atmega3250p",1621 .llvm_name = "atmega3250p",
1622 .subfeatures = &[_]*const Feature {1622 .dependencies = &[_]*const Feature {
1623 &feature_lpmx,1623 &feature_lpmx,
1624 &feature_spm,
1625 &feature_addsubiw,
1626 &feature_jmpcall,
1627 &feature_lpm,1624 &feature_lpm,
1625 &feature_spm,
1626 &feature_ijmpcall,
1627 &feature_sram,
1628 &feature_break,1628 &feature_break,
1629 &feature_jmpcall,
1629 &feature_mul,1630 &feature_mul,
1630 &feature_sram,
1631 &feature_ijmpcall,
1632 &feature_movw,1631 &feature_movw,
1632 &feature_addsubiw,
1633 },1633 },
1634};1634};
16351635
1636pub const cpu_atmega3250pa = Cpu{1636pub const cpu_atmega3250pa = Cpu{
1637 .name = "atmega3250pa",1637 .name = "atmega3250pa",
1638 .llvm_name = "atmega3250pa",1638 .llvm_name = "atmega3250pa",
1639 .subfeatures = &[_]*const Feature {1639 .dependencies = &[_]*const Feature {
1640 &feature_lpmx,1640 &feature_lpmx,
1641 &feature_spm,
1642 &feature_addsubiw,
1643 &feature_jmpcall,
1644 &feature_lpm,1641 &feature_lpm,
1642 &feature_spm,
1643 &feature_ijmpcall,
1644 &feature_sram,
1645 &feature_break,1645 &feature_break,
1646 &feature_jmpcall,
1646 &feature_mul,1647 &feature_mul,
1647 &feature_sram,
1648 &feature_ijmpcall,
1649 &feature_movw,1648 &feature_movw,
1649 &feature_addsubiw,
1650 },1650 },
1651};1651};
16521652
1653pub const cpu_atmega325a = Cpu{1653pub const cpu_atmega325a = Cpu{
1654 .name = "atmega325a",1654 .name = "atmega325a",
1655 .llvm_name = "atmega325a",1655 .llvm_name = "atmega325a",
1656 .subfeatures = &[_]*const Feature {1656 .dependencies = &[_]*const Feature {
1657 &feature_lpmx,1657 &feature_lpmx,
1658 &feature_spm,
1659 &feature_addsubiw,
1660 &feature_jmpcall,
1661 &feature_lpm,1658 &feature_lpm,
1659 &feature_spm,
1660 &feature_ijmpcall,
1661 &feature_sram,
1662 &feature_break,1662 &feature_break,
1663 &feature_jmpcall,
1663 &feature_mul,1664 &feature_mul,
1664 &feature_sram,
1665 &feature_ijmpcall,
1666 &feature_movw,1665 &feature_movw,
1666 &feature_addsubiw,
1667 },1667 },
1668};1668};
16691669
1670pub const cpu_atmega325p = Cpu{1670pub const cpu_atmega325p = Cpu{
1671 .name = "atmega325p",1671 .name = "atmega325p",
1672 .llvm_name = "atmega325p",1672 .llvm_name = "atmega325p",
1673 .subfeatures = &[_]*const Feature {1673 .dependencies = &[_]*const Feature {
1674 &feature_lpmx,1674 &feature_lpmx,
1675 &feature_spm,
1676 &feature_addsubiw,
1677 &feature_jmpcall,
1678 &feature_lpm,1675 &feature_lpm,
1676 &feature_spm,
1677 &feature_ijmpcall,
1678 &feature_sram,
1679 &feature_break,1679 &feature_break,
1680 &feature_jmpcall,
1680 &feature_mul,1681 &feature_mul,
1681 &feature_sram,
1682 &feature_ijmpcall,
1683 &feature_movw,1682 &feature_movw,
1683 &feature_addsubiw,
1684 },1684 },
1685};1685};
16861686
1687pub const cpu_atmega325pa = Cpu{1687pub const cpu_atmega325pa = Cpu{
1688 .name = "atmega325pa",1688 .name = "atmega325pa",
1689 .llvm_name = "atmega325pa",1689 .llvm_name = "atmega325pa",
1690 .subfeatures = &[_]*const Feature {1690 .dependencies = &[_]*const Feature {
1691 &feature_lpmx,1691 &feature_lpmx,
1692 &feature_spm,
1693 &feature_addsubiw,
1694 &feature_jmpcall,
1695 &feature_lpm,1692 &feature_lpm,
1693 &feature_spm,
1694 &feature_ijmpcall,
1695 &feature_sram,
1696 &feature_break,1696 &feature_break,
1697 &feature_jmpcall,
1697 &feature_mul,1698 &feature_mul,
1698 &feature_sram,
1699 &feature_ijmpcall,
1700 &feature_movw,1699 &feature_movw,
1700 &feature_addsubiw,
1701 },1701 },
1702};1702};
17031703
1704pub const cpu_atmega328 = Cpu{1704pub const cpu_atmega328 = Cpu{
1705 .name = "atmega328",1705 .name = "atmega328",
1706 .llvm_name = "atmega328",1706 .llvm_name = "atmega328",
1707 .subfeatures = &[_]*const Feature {1707 .dependencies = &[_]*const Feature {
1708 &feature_lpmx,1708 &feature_lpmx,
1709 &feature_spm,
1710 &feature_addsubiw,
1711 &feature_jmpcall,
1712 &feature_lpm,1709 &feature_lpm,
1710 &feature_spm,
1711 &feature_ijmpcall,
1712 &feature_sram,
1713 &feature_break,1713 &feature_break,
1714 &feature_jmpcall,
1714 &feature_mul,1715 &feature_mul,
1715 &feature_sram,
1716 &feature_ijmpcall,
1717 &feature_movw,1716 &feature_movw,
1717 &feature_addsubiw,
1718 },1718 },
1719};1719};
17201720
1721pub const cpu_atmega328p = Cpu{1721pub const cpu_atmega328p = Cpu{
1722 .name = "atmega328p",1722 .name = "atmega328p",
1723 .llvm_name = "atmega328p",1723 .llvm_name = "atmega328p",
1724 .subfeatures = &[_]*const Feature {1724 .dependencies = &[_]*const Feature {
1725 &feature_lpmx,1725 &feature_lpmx,
1726 &feature_spm,
1727 &feature_addsubiw,
1728 &feature_jmpcall,
1729 &feature_lpm,1726 &feature_lpm,
1727 &feature_spm,
1728 &feature_ijmpcall,
1729 &feature_sram,
1730 &feature_break,1730 &feature_break,
1731 &feature_jmpcall,
1731 &feature_mul,1732 &feature_mul,
1732 &feature_sram,
1733 &feature_ijmpcall,
1734 &feature_movw,1733 &feature_movw,
1734 &feature_addsubiw,
1735 },1735 },
1736};1736};
17371737
1738pub const cpu_atmega329 = Cpu{1738pub const cpu_atmega329 = Cpu{
1739 .name = "atmega329",1739 .name = "atmega329",
1740 .llvm_name = "atmega329",1740 .llvm_name = "atmega329",
1741 .subfeatures = &[_]*const Feature {1741 .dependencies = &[_]*const Feature {
1742 &feature_lpmx,1742 &feature_lpmx,
1743 &feature_spm,
1744 &feature_addsubiw,
1745 &feature_jmpcall,
1746 &feature_lpm,1743 &feature_lpm,
1744 &feature_spm,
1745 &feature_ijmpcall,
1746 &feature_sram,
1747 &feature_break,1747 &feature_break,
1748 &feature_jmpcall,
1748 &feature_mul,1749 &feature_mul,
1749 &feature_sram,
1750 &feature_ijmpcall,
1751 &feature_movw,1750 &feature_movw,
1751 &feature_addsubiw,
1752 },1752 },
1753};1753};
17541754
1755pub const cpu_atmega3290 = Cpu{1755pub const cpu_atmega3290 = Cpu{
1756 .name = "atmega3290",1756 .name = "atmega3290",
1757 .llvm_name = "atmega3290",1757 .llvm_name = "atmega3290",
1758 .subfeatures = &[_]*const Feature {1758 .dependencies = &[_]*const Feature {
1759 &feature_lpmx,1759 &feature_lpmx,
1760 &feature_spm,
1761 &feature_addsubiw,
1762 &feature_jmpcall,
1763 &feature_lpm,1760 &feature_lpm,
1761 &feature_spm,
1762 &feature_ijmpcall,
1763 &feature_sram,
1764 &feature_break,1764 &feature_break,
1765 &feature_jmpcall,
1765 &feature_mul,1766 &feature_mul,
1766 &feature_sram,
1767 &feature_ijmpcall,
1768 &feature_movw,1767 &feature_movw,
1768 &feature_addsubiw,
1769 },1769 },
1770};1770};
17711771
1772pub const cpu_atmega3290a = Cpu{1772pub const cpu_atmega3290a = Cpu{
1773 .name = "atmega3290a",1773 .name = "atmega3290a",
1774 .llvm_name = "atmega3290a",1774 .llvm_name = "atmega3290a",
1775 .subfeatures = &[_]*const Feature {1775 .dependencies = &[_]*const Feature {
1776 &feature_lpmx,1776 &feature_lpmx,
1777 &feature_spm,
1778 &feature_addsubiw,
1779 &feature_jmpcall,
1780 &feature_lpm,1777 &feature_lpm,
1778 &feature_spm,
1779 &feature_ijmpcall,
1780 &feature_sram,
1781 &feature_break,1781 &feature_break,
1782 &feature_jmpcall,
1782 &feature_mul,1783 &feature_mul,
1783 &feature_sram,
1784 &feature_ijmpcall,
1785 &feature_movw,1784 &feature_movw,
1785 &feature_addsubiw,
1786 },1786 },
1787};1787};
17881788
1789pub const cpu_atmega3290p = Cpu{1789pub const cpu_atmega3290p = Cpu{
1790 .name = "atmega3290p",1790 .name = "atmega3290p",
1791 .llvm_name = "atmega3290p",1791 .llvm_name = "atmega3290p",
1792 .subfeatures = &[_]*const Feature {1792 .dependencies = &[_]*const Feature {
1793 &feature_lpmx,1793 &feature_lpmx,
1794 &feature_spm,
1795 &feature_addsubiw,
1796 &feature_jmpcall,
1797 &feature_lpm,1794 &feature_lpm,
1795 &feature_spm,
1796 &feature_ijmpcall,
1797 &feature_sram,
1798 &feature_break,1798 &feature_break,
1799 &feature_jmpcall,
1799 &feature_mul,1800 &feature_mul,
1800 &feature_sram,
1801 &feature_ijmpcall,
1802 &feature_movw,1801 &feature_movw,
1802 &feature_addsubiw,
1803 },1803 },
1804};1804};
18051805
1806pub const cpu_atmega3290pa = Cpu{1806pub const cpu_atmega3290pa = Cpu{
1807 .name = "atmega3290pa",1807 .name = "atmega3290pa",
1808 .llvm_name = "atmega3290pa",1808 .llvm_name = "atmega3290pa",
1809 .subfeatures = &[_]*const Feature {1809 .dependencies = &[_]*const Feature {
1810 &feature_lpmx,1810 &feature_lpmx,
1811 &feature_spm,
1812 &feature_addsubiw,
1813 &feature_jmpcall,
1814 &feature_lpm,1811 &feature_lpm,
1812 &feature_spm,
1813 &feature_ijmpcall,
1814 &feature_sram,
1815 &feature_break,1815 &feature_break,
1816 &feature_jmpcall,
1816 &feature_mul,1817 &feature_mul,
1817 &feature_sram,
1818 &feature_ijmpcall,
1819 &feature_movw,1818 &feature_movw,
1819 &feature_addsubiw,
1820 },1820 },
1821};1821};
18221822
1823pub const cpu_atmega329a = Cpu{1823pub const cpu_atmega329a = Cpu{
1824 .name = "atmega329a",1824 .name = "atmega329a",
1825 .llvm_name = "atmega329a",1825 .llvm_name = "atmega329a",
1826 .subfeatures = &[_]*const Feature {1826 .dependencies = &[_]*const Feature {
1827 &feature_lpmx,1827 &feature_lpmx,
1828 &feature_spm,
1829 &feature_addsubiw,
1830 &feature_jmpcall,
1831 &feature_lpm,1828 &feature_lpm,
1829 &feature_spm,
1830 &feature_ijmpcall,
1831 &feature_sram,
1832 &feature_break,1832 &feature_break,
1833 &feature_jmpcall,
1833 &feature_mul,1834 &feature_mul,
1834 &feature_sram,
1835 &feature_ijmpcall,
1836 &feature_movw,1835 &feature_movw,
1836 &feature_addsubiw,
1837 },1837 },
1838};1838};
18391839
1840pub const cpu_atmega329p = Cpu{1840pub const cpu_atmega329p = Cpu{
1841 .name = "atmega329p",1841 .name = "atmega329p",
1842 .llvm_name = "atmega329p",1842 .llvm_name = "atmega329p",
1843 .subfeatures = &[_]*const Feature {1843 .dependencies = &[_]*const Feature {
1844 &feature_lpmx,1844 &feature_lpmx,
1845 &feature_spm,
1846 &feature_addsubiw,
1847 &feature_jmpcall,
1848 &feature_lpm,1845 &feature_lpm,
1846 &feature_spm,
1847 &feature_ijmpcall,
1848 &feature_sram,
1849 &feature_break,1849 &feature_break,
1850 &feature_jmpcall,
1850 &feature_mul,1851 &feature_mul,
1851 &feature_sram,
1852 &feature_ijmpcall,
1853 &feature_movw,1852 &feature_movw,
1853 &feature_addsubiw,
1854 },1854 },
1855};1855};
18561856
1857pub const cpu_atmega329pa = Cpu{1857pub const cpu_atmega329pa = Cpu{
1858 .name = "atmega329pa",1858 .name = "atmega329pa",
1859 .llvm_name = "atmega329pa",1859 .llvm_name = "atmega329pa",
1860 .subfeatures = &[_]*const Feature {1860 .dependencies = &[_]*const Feature {
1861 &feature_lpmx,1861 &feature_lpmx,
1862 &feature_spm,
1863 &feature_addsubiw,
1864 &feature_jmpcall,
1865 &feature_lpm,1862 &feature_lpm,
1863 &feature_spm,
1864 &feature_ijmpcall,
1865 &feature_sram,
1866 &feature_break,1866 &feature_break,
1867 &feature_jmpcall,
1867 &feature_mul,1868 &feature_mul,
1868 &feature_sram,
1869 &feature_ijmpcall,
1870 &feature_movw,1869 &feature_movw,
1870 &feature_addsubiw,
1871 },1871 },
1872};1872};
18731873
1874pub const cpu_atmega32a = Cpu{1874pub const cpu_atmega32a = Cpu{
1875 .name = "atmega32a",1875 .name = "atmega32a",
1876 .llvm_name = "atmega32a",1876 .llvm_name = "atmega32a",
1877 .subfeatures = &[_]*const Feature {1877 .dependencies = &[_]*const Feature {
1878 &feature_lpmx,1878 &feature_lpmx,
1879 &feature_spm,
1880 &feature_addsubiw,
1881 &feature_jmpcall,
1882 &feature_lpm,1879 &feature_lpm,
1880 &feature_spm,
1881 &feature_ijmpcall,
1882 &feature_sram,
1883 &feature_break,1883 &feature_break,
1884 &feature_jmpcall,
1884 &feature_mul,1885 &feature_mul,
1885 &feature_sram,
1886 &feature_ijmpcall,
1887 &feature_movw,1886 &feature_movw,
1887 &feature_addsubiw,
1888 },1888 },
1889};1889};
18901890
1891pub const cpu_atmega32c1 = Cpu{1891pub const cpu_atmega32c1 = Cpu{
1892 .name = "atmega32c1",1892 .name = "atmega32c1",
1893 .llvm_name = "atmega32c1",1893 .llvm_name = "atmega32c1",
1894 .subfeatures = &[_]*const Feature {1894 .dependencies = &[_]*const Feature {
1895 &feature_lpmx,1895 &feature_lpmx,
1896 &feature_spm,
1897 &feature_addsubiw,
1898 &feature_jmpcall,
1899 &feature_lpm,1896 &feature_lpm,
1897 &feature_spm,
1898 &feature_ijmpcall,
1899 &feature_sram,
1900 &feature_break,1900 &feature_break,
1901 &feature_jmpcall,
1901 &feature_mul,1902 &feature_mul,
1902 &feature_sram,
1903 &feature_ijmpcall,
1904 &feature_movw,1903 &feature_movw,
1904 &feature_addsubiw,
1905 },1905 },
1906};1906};
19071907
1908pub const cpu_atmega32hvb = Cpu{1908pub const cpu_atmega32hvb = Cpu{
1909 .name = "atmega32hvb",1909 .name = "atmega32hvb",
1910 .llvm_name = "atmega32hvb",1910 .llvm_name = "atmega32hvb",
1911 .subfeatures = &[_]*const Feature {1911 .dependencies = &[_]*const Feature {
1912 &feature_lpmx,1912 &feature_lpmx,
1913 &feature_spm,
1914 &feature_addsubiw,
1915 &feature_jmpcall,
1916 &feature_lpm,1913 &feature_lpm,
1914 &feature_spm,
1915 &feature_ijmpcall,
1916 &feature_sram,
1917 &feature_break,1917 &feature_break,
1918 &feature_jmpcall,
1918 &feature_mul,1919 &feature_mul,
1919 &feature_sram,
1920 &feature_ijmpcall,
1921 &feature_movw,1920 &feature_movw,
1921 &feature_addsubiw,
1922 },1922 },
1923};1923};
19241924
1925pub const cpu_atmega32hvbrevb = Cpu{1925pub const cpu_atmega32hvbrevb = Cpu{
1926 .name = "atmega32hvbrevb",1926 .name = "atmega32hvbrevb",
1927 .llvm_name = "atmega32hvbrevb",1927 .llvm_name = "atmega32hvbrevb",
1928 .subfeatures = &[_]*const Feature {1928 .dependencies = &[_]*const Feature {
1929 &feature_lpmx,1929 &feature_lpmx,
1930 &feature_spm,
1931 &feature_addsubiw,
1932 &feature_jmpcall,
1933 &feature_lpm,1930 &feature_lpm,
1931 &feature_spm,
1932 &feature_ijmpcall,
1933 &feature_sram,
1934 &feature_break,1934 &feature_break,
1935 &feature_jmpcall,
1935 &feature_mul,1936 &feature_mul,
1936 &feature_sram,
1937 &feature_ijmpcall,
1938 &feature_movw,1937 &feature_movw,
1938 &feature_addsubiw,
1939 },1939 },
1940};1940};
19411941
1942pub const cpu_atmega32m1 = Cpu{1942pub const cpu_atmega32m1 = Cpu{
1943 .name = "atmega32m1",1943 .name = "atmega32m1",
1944 .llvm_name = "atmega32m1",1944 .llvm_name = "atmega32m1",
1945 .subfeatures = &[_]*const Feature {1945 .dependencies = &[_]*const Feature {
1946 &feature_lpmx,1946 &feature_lpmx,
1947 &feature_spm,
1948 &feature_addsubiw,
1949 &feature_jmpcall,
1950 &feature_lpm,1947 &feature_lpm,
1951 &feature_break,1948 &feature_spm,
1952 &feature_mul,
1953 &feature_sram,
1954 &feature_ijmpcall,1949 &feature_ijmpcall,
1950 &feature_sram,
1951 &feature_break,
1952 &feature_jmpcall,
1953 &feature_mul,
1955 &feature_movw,1954 &feature_movw,
1955 &feature_addsubiw,
1956 },1956 },
1957};1957};
19581958
1959pub const cpu_atmega32u2 = Cpu{1959pub const cpu_atmega32u2 = Cpu{
1960 .name = "atmega32u2",1960 .name = "atmega32u2",
1961 .llvm_name = "atmega32u2",1961 .llvm_name = "atmega32u2",
1962 .subfeatures = &[_]*const Feature {1962 .dependencies = &[_]*const Feature {
1963 &feature_lpmx,1963 &feature_lpmx,
1964 &feature_spm,
1965 &feature_addsubiw,
1966 &feature_jmpcall,
1967 &feature_lpm,1964 &feature_lpm,
1968 &feature_break,1965 &feature_spm,
1969 &feature_sram,
1970 &feature_ijmpcall,1966 &feature_ijmpcall,
1967 &feature_sram,
1968 &feature_break,
1969 &feature_jmpcall,
1971 &feature_movw,1970 &feature_movw,
1971 &feature_addsubiw,
1972 },1972 },
1973};1973};
19741974
1975pub const cpu_atmega32u4 = Cpu{1975pub const cpu_atmega32u4 = Cpu{
1976 .name = "atmega32u4",1976 .name = "atmega32u4",
1977 .llvm_name = "atmega32u4",1977 .llvm_name = "atmega32u4",
1978 .subfeatures = &[_]*const Feature {1978 .dependencies = &[_]*const Feature {
1979 &feature_lpmx,1979 &feature_lpmx,
1980 &feature_spm,
1981 &feature_addsubiw,
1982 &feature_jmpcall,
1983 &feature_lpm,1980 &feature_lpm,
1981 &feature_spm,
1982 &feature_ijmpcall,
1983 &feature_sram,
1984 &feature_break,1984 &feature_break,
1985 &feature_jmpcall,
1985 &feature_mul,1986 &feature_mul,
1986 &feature_sram,
1987 &feature_ijmpcall,
1988 &feature_movw,1987 &feature_movw,
1988 &feature_addsubiw,
1989 },1989 },
1990};1990};
19911991
1992pub const cpu_atmega32u6 = Cpu{1992pub const cpu_atmega32u6 = Cpu{
1993 .name = "atmega32u6",1993 .name = "atmega32u6",
1994 .llvm_name = "atmega32u6",1994 .llvm_name = "atmega32u6",
1995 .subfeatures = &[_]*const Feature {1995 .dependencies = &[_]*const Feature {
1996 &feature_lpmx,1996 &feature_lpmx,
1997 &feature_spm,
1998 &feature_addsubiw,
1999 &feature_jmpcall,
2000 &feature_lpm,1997 &feature_lpm,
1998 &feature_spm,
1999 &feature_ijmpcall,
2000 &feature_sram,
2001 &feature_break,2001 &feature_break,
2002 &feature_jmpcall,
2002 &feature_mul,2003 &feature_mul,
2003 &feature_sram,
2004 &feature_ijmpcall,
2005 &feature_movw,2004 &feature_movw,
2005 &feature_addsubiw,
2006 },2006 },
2007};2007};
20082008
2009pub const cpu_atmega406 = Cpu{2009pub const cpu_atmega406 = Cpu{
2010 .name = "atmega406",2010 .name = "atmega406",
2011 .llvm_name = "atmega406",2011 .llvm_name = "atmega406",
2012 .subfeatures = &[_]*const Feature {2012 .dependencies = &[_]*const Feature {
2013 &feature_lpmx,2013 &feature_lpmx,
2014 &feature_spm,
2015 &feature_addsubiw,
2016 &feature_jmpcall,
2017 &feature_lpm,2014 &feature_lpm,
2015 &feature_spm,
2016 &feature_ijmpcall,
2017 &feature_sram,
2018 &feature_break,2018 &feature_break,
2019 &feature_jmpcall,
2019 &feature_mul,2020 &feature_mul,
2020 &feature_sram,
2021 &feature_ijmpcall,
2022 &feature_movw,2021 &feature_movw,
2022 &feature_addsubiw,
2023 },2023 },
2024};2024};
20252025
2026pub const cpu_atmega48 = Cpu{2026pub const cpu_atmega48 = Cpu{
2027 .name = "atmega48",2027 .name = "atmega48",
2028 .llvm_name = "atmega48",2028 .llvm_name = "atmega48",
2029 .subfeatures = &[_]*const Feature {2029 .dependencies = &[_]*const Feature {
2030 &feature_lpmx,2030 &feature_lpmx,
2031 &feature_lpm,
2031 &feature_spm,2032 &feature_spm,
2032 &feature_addsubiw,2033 &feature_ijmpcall,
2034 &feature_sram,
2033 &feature_break,2035 &feature_break,
2034 &feature_lpm,
2035 &feature_mul,2036 &feature_mul,
2036 &feature_sram,
2037 &feature_ijmpcall,
2038 &feature_movw,2037 &feature_movw,
2038 &feature_addsubiw,
2039 },2039 },
2040};2040};
20412041
2042pub const cpu_atmega48a = Cpu{2042pub const cpu_atmega48a = Cpu{
2043 .name = "atmega48a",2043 .name = "atmega48a",
2044 .llvm_name = "atmega48a",2044 .llvm_name = "atmega48a",
2045 .subfeatures = &[_]*const Feature {2045 .dependencies = &[_]*const Feature {
2046 &feature_lpmx,2046 &feature_lpmx,
2047 &feature_lpm,
2047 &feature_spm,2048 &feature_spm,
2048 &feature_addsubiw,2049 &feature_ijmpcall,
2050 &feature_sram,
2049 &feature_break,2051 &feature_break,
2050 &feature_lpm,
2051 &feature_mul,2052 &feature_mul,
2052 &feature_sram,
2053 &feature_ijmpcall,
2054 &feature_movw,2053 &feature_movw,
2054 &feature_addsubiw,
2055 },2055 },
2056};2056};
20572057
2058pub const cpu_atmega48p = Cpu{2058pub const cpu_atmega48p = Cpu{
2059 .name = "atmega48p",2059 .name = "atmega48p",
2060 .llvm_name = "atmega48p",2060 .llvm_name = "atmega48p",
2061 .subfeatures = &[_]*const Feature {2061 .dependencies = &[_]*const Feature {
2062 &feature_lpmx,2062 &feature_lpmx,
2063 &feature_lpm,
2063 &feature_spm,2064 &feature_spm,
2064 &feature_addsubiw,2065 &feature_ijmpcall,
2066 &feature_sram,
2065 &feature_break,2067 &feature_break,
2066 &feature_lpm,
2067 &feature_mul,2068 &feature_mul,
2068 &feature_sram,
2069 &feature_ijmpcall,
2070 &feature_movw,2069 &feature_movw,
2070 &feature_addsubiw,
2071 },2071 },
2072};2072};
20732073
2074pub const cpu_atmega48pa = Cpu{2074pub const cpu_atmega48pa = Cpu{
2075 .name = "atmega48pa",2075 .name = "atmega48pa",
2076 .llvm_name = "atmega48pa",2076 .llvm_name = "atmega48pa",
2077 .subfeatures = &[_]*const Feature {2077 .dependencies = &[_]*const Feature {
2078 &feature_lpmx,2078 &feature_lpmx,
2079 &feature_lpm,
2079 &feature_spm,2080 &feature_spm,
2080 &feature_addsubiw,2081 &feature_ijmpcall,
2082 &feature_sram,
2081 &feature_break,2083 &feature_break,
2082 &feature_lpm,
2083 &feature_mul,2084 &feature_mul,
2084 &feature_sram,
2085 &feature_ijmpcall,
2086 &feature_movw,2085 &feature_movw,
2086 &feature_addsubiw,
2087 },2087 },
2088};2088};
20892089
2090pub const cpu_atmega64 = Cpu{2090pub const cpu_atmega64 = Cpu{
2091 .name = "atmega64",2091 .name = "atmega64",
2092 .llvm_name = "atmega64",2092 .llvm_name = "atmega64",
2093 .subfeatures = &[_]*const Feature {2093 .dependencies = &[_]*const Feature {
2094 &feature_lpmx,2094 &feature_lpmx,
2095 &feature_spm,
2096 &feature_addsubiw,
2097 &feature_jmpcall,
2098 &feature_lpm,2095 &feature_lpm,
2096 &feature_spm,
2097 &feature_ijmpcall,
2098 &feature_sram,
2099 &feature_break,2099 &feature_break,
2100 &feature_jmpcall,
2100 &feature_mul,2101 &feature_mul,
2101 &feature_sram,
2102 &feature_ijmpcall,
2103 &feature_movw,2102 &feature_movw,
2103 &feature_addsubiw,
2104 },2104 },
2105};2105};
21062106
2107pub const cpu_atmega640 = Cpu{2107pub const cpu_atmega640 = Cpu{
2108 .name = "atmega640",2108 .name = "atmega640",
2109 .llvm_name = "atmega640",2109 .llvm_name = "atmega640",
2110 .subfeatures = &[_]*const Feature {2110 .dependencies = &[_]*const Feature {
2111 &feature_lpmx,2111 &feature_lpmx,
2112 &feature_spm,
2113 &feature_addsubiw,
2114 &feature_jmpcall,
2115 &feature_lpm,2112 &feature_lpm,
2113 &feature_spm,
2114 &feature_ijmpcall,
2115 &feature_sram,
2116 &feature_break,2116 &feature_break,
2117 &feature_jmpcall,
2117 &feature_mul,2118 &feature_mul,
2118 &feature_sram,
2119 &feature_ijmpcall,
2120 &feature_movw,2119 &feature_movw,
2120 &feature_addsubiw,
2121 },2121 },
2122};2122};
21232123
2124pub const cpu_atmega644 = Cpu{2124pub const cpu_atmega644 = Cpu{
2125 .name = "atmega644",2125 .name = "atmega644",
2126 .llvm_name = "atmega644",2126 .llvm_name = "atmega644",
2127 .subfeatures = &[_]*const Feature {2127 .dependencies = &[_]*const Feature {
2128 &feature_lpmx,2128 &feature_lpmx,
2129 &feature_spm,
2130 &feature_addsubiw,
2131 &feature_jmpcall,
2132 &feature_lpm,2129 &feature_lpm,
2130 &feature_spm,
2131 &feature_ijmpcall,
2132 &feature_sram,
2133 &feature_break,2133 &feature_break,
2134 &feature_jmpcall,
2134 &feature_mul,2135 &feature_mul,
2135 &feature_sram,
2136 &feature_ijmpcall,
2137 &feature_movw,2136 &feature_movw,
2137 &feature_addsubiw,
2138 },2138 },
2139};2139};
21402140
2141pub const cpu_atmega644a = Cpu{2141pub const cpu_atmega644a = Cpu{
2142 .name = "atmega644a",2142 .name = "atmega644a",
2143 .llvm_name = "atmega644a",2143 .llvm_name = "atmega644a",
2144 .subfeatures = &[_]*const Feature {2144 .dependencies = &[_]*const Feature {
2145 &feature_lpmx,2145 &feature_lpmx,
2146 &feature_spm,
2147 &feature_addsubiw,
2148 &feature_jmpcall,
2149 &feature_lpm,2146 &feature_lpm,
2147 &feature_spm,
2148 &feature_ijmpcall,
2149 &feature_sram,
2150 &feature_break,2150 &feature_break,
2151 &feature_jmpcall,
2151 &feature_mul,2152 &feature_mul,
2152 &feature_sram,
2153 &feature_ijmpcall,
2154 &feature_movw,2153 &feature_movw,
2154 &feature_addsubiw,
2155 },2155 },
2156};2156};
21572157
2158pub const cpu_atmega644p = Cpu{2158pub const cpu_atmega644p = Cpu{
2159 .name = "atmega644p",2159 .name = "atmega644p",
2160 .llvm_name = "atmega644p",2160 .llvm_name = "atmega644p",
2161 .subfeatures = &[_]*const Feature {2161 .dependencies = &[_]*const Feature {
2162 &feature_lpmx,2162 &feature_lpmx,
2163 &feature_spm,
2164 &feature_addsubiw,
2165 &feature_jmpcall,
2166 &feature_lpm,2163 &feature_lpm,
2164 &feature_spm,
2165 &feature_ijmpcall,
2166 &feature_sram,
2167 &feature_break,2167 &feature_break,
2168 &feature_jmpcall,
2168 &feature_mul,2169 &feature_mul,
2169 &feature_sram,
2170 &feature_ijmpcall,
2171 &feature_movw,2170 &feature_movw,
2171 &feature_addsubiw,
2172 },2172 },
2173};2173};
21742174
2175pub const cpu_atmega644pa = Cpu{2175pub const cpu_atmega644pa = Cpu{
2176 .name = "atmega644pa",2176 .name = "atmega644pa",
2177 .llvm_name = "atmega644pa",2177 .llvm_name = "atmega644pa",
2178 .subfeatures = &[_]*const Feature {2178 .dependencies = &[_]*const Feature {
2179 &feature_lpmx,2179 &feature_lpmx,
2180 &feature_spm,
2181 &feature_addsubiw,
2182 &feature_jmpcall,
2183 &feature_lpm,2180 &feature_lpm,
2181 &feature_spm,
2182 &feature_ijmpcall,
2183 &feature_sram,
2184 &feature_break,2184 &feature_break,
2185 &feature_jmpcall,
2185 &feature_mul,2186 &feature_mul,
2186 &feature_sram,
2187 &feature_ijmpcall,
2188 &feature_movw,2187 &feature_movw,
2188 &feature_addsubiw,
2189 },2189 },
2190};2190};
21912191
2192pub const cpu_atmega644rfr2 = Cpu{2192pub const cpu_atmega644rfr2 = Cpu{
2193 .name = "atmega644rfr2",2193 .name = "atmega644rfr2",
2194 .llvm_name = "atmega644rfr2",2194 .llvm_name = "atmega644rfr2",
2195 .subfeatures = &[_]*const Feature {2195 .dependencies = &[_]*const Feature {
2196 &feature_lpmx,2196 &feature_lpmx,
2197 &feature_spm,
2198 &feature_addsubiw,
2199 &feature_jmpcall,
2200 &feature_lpm,2197 &feature_lpm,
2198 &feature_spm,
2199 &feature_ijmpcall,
2200 &feature_sram,
2201 &feature_break,2201 &feature_break,
2202 &feature_jmpcall,
2202 &feature_mul,2203 &feature_mul,
2203 &feature_sram,
2204 &feature_ijmpcall,
2205 &feature_movw,2204 &feature_movw,
2205 &feature_addsubiw,
2206 },2206 },
2207};2207};
22082208
2209pub const cpu_atmega645 = Cpu{2209pub const cpu_atmega645 = Cpu{
2210 .name = "atmega645",2210 .name = "atmega645",
2211 .llvm_name = "atmega645",2211 .llvm_name = "atmega645",
2212 .subfeatures = &[_]*const Feature {2212 .dependencies = &[_]*const Feature {
2213 &feature_lpmx,2213 &feature_lpmx,
2214 &feature_spm,
2215 &feature_addsubiw,
2216 &feature_jmpcall,
2217 &feature_lpm,2214 &feature_lpm,
2215 &feature_spm,
2216 &feature_ijmpcall,
2217 &feature_sram,
2218 &feature_break,2218 &feature_break,
2219 &feature_jmpcall,
2219 &feature_mul,2220 &feature_mul,
2220 &feature_sram,
2221 &feature_ijmpcall,
2222 &feature_movw,2221 &feature_movw,
2222 &feature_addsubiw,
2223 },2223 },
2224};2224};
22252225
2226pub const cpu_atmega6450 = Cpu{2226pub const cpu_atmega6450 = Cpu{
2227 .name = "atmega6450",2227 .name = "atmega6450",
2228 .llvm_name = "atmega6450",2228 .llvm_name = "atmega6450",
2229 .subfeatures = &[_]*const Feature {2229 .dependencies = &[_]*const Feature {
2230 &feature_lpmx,2230 &feature_lpmx,
2231 &feature_spm,
2232 &feature_addsubiw,
2233 &feature_jmpcall,
2234 &feature_lpm,2231 &feature_lpm,
2232 &feature_spm,
2233 &feature_ijmpcall,
2234 &feature_sram,
2235 &feature_break,2235 &feature_break,
2236 &feature_jmpcall,
2236 &feature_mul,2237 &feature_mul,
2237 &feature_sram,
2238 &feature_ijmpcall,
2239 &feature_movw,2238 &feature_movw,
2239 &feature_addsubiw,
2240 },2240 },
2241};2241};
22422242
2243pub const cpu_atmega6450a = Cpu{2243pub const cpu_atmega6450a = Cpu{
2244 .name = "atmega6450a",2244 .name = "atmega6450a",
2245 .llvm_name = "atmega6450a",2245 .llvm_name = "atmega6450a",
2246 .subfeatures = &[_]*const Feature {2246 .dependencies = &[_]*const Feature {
2247 &feature_lpmx,2247 &feature_lpmx,
2248 &feature_spm,
2249 &feature_addsubiw,
2250 &feature_jmpcall,
2251 &feature_lpm,2248 &feature_lpm,
2249 &feature_spm,
2250 &feature_ijmpcall,
2251 &feature_sram,
2252 &feature_break,2252 &feature_break,
2253 &feature_jmpcall,
2253 &feature_mul,2254 &feature_mul,
2254 &feature_sram,
2255 &feature_ijmpcall,
2256 &feature_movw,2255 &feature_movw,
2256 &feature_addsubiw,
2257 },2257 },
2258};2258};
22592259
2260pub const cpu_atmega6450p = Cpu{2260pub const cpu_atmega6450p = Cpu{
2261 .name = "atmega6450p",2261 .name = "atmega6450p",
2262 .llvm_name = "atmega6450p",2262 .llvm_name = "atmega6450p",
2263 .subfeatures = &[_]*const Feature {2263 .dependencies = &[_]*const Feature {
2264 &feature_lpmx,2264 &feature_lpmx,
2265 &feature_spm,
2266 &feature_addsubiw,
2267 &feature_jmpcall,
2268 &feature_lpm,2265 &feature_lpm,
2266 &feature_spm,
2267 &feature_ijmpcall,
2268 &feature_sram,
2269 &feature_break,2269 &feature_break,
2270 &feature_jmpcall,
2270 &feature_mul,2271 &feature_mul,
2271 &feature_sram,
2272 &feature_ijmpcall,
2273 &feature_movw,2272 &feature_movw,
2273 &feature_addsubiw,
2274 },2274 },
2275};2275};
22762276
2277pub const cpu_atmega645a = Cpu{2277pub const cpu_atmega645a = Cpu{
2278 .name = "atmega645a",2278 .name = "atmega645a",
2279 .llvm_name = "atmega645a",2279 .llvm_name = "atmega645a",
2280 .subfeatures = &[_]*const Feature {2280 .dependencies = &[_]*const Feature {
2281 &feature_lpmx,2281 &feature_lpmx,
2282 &feature_spm,
2283 &feature_addsubiw,
2284 &feature_jmpcall,
2285 &feature_lpm,2282 &feature_lpm,
2283 &feature_spm,
2284 &feature_ijmpcall,
2285 &feature_sram,
2286 &feature_break,2286 &feature_break,
2287 &feature_jmpcall,
2287 &feature_mul,2288 &feature_mul,
2288 &feature_sram,
2289 &feature_ijmpcall,
2290 &feature_movw,2289 &feature_movw,
2290 &feature_addsubiw,
2291 },2291 },
2292};2292};
22932293
2294pub const cpu_atmega645p = Cpu{2294pub const cpu_atmega645p = Cpu{
2295 .name = "atmega645p",2295 .name = "atmega645p",
2296 .llvm_name = "atmega645p",2296 .llvm_name = "atmega645p",
2297 .subfeatures = &[_]*const Feature {2297 .dependencies = &[_]*const Feature {
2298 &feature_lpmx,2298 &feature_lpmx,
2299 &feature_spm,
2300 &feature_addsubiw,
2301 &feature_jmpcall,
2302 &feature_lpm,2299 &feature_lpm,
2300 &feature_spm,
2301 &feature_ijmpcall,
2302 &feature_sram,
2303 &feature_break,2303 &feature_break,
2304 &feature_jmpcall,
2304 &feature_mul,2305 &feature_mul,
2305 &feature_sram,
2306 &feature_ijmpcall,
2307 &feature_movw,2306 &feature_movw,
2307 &feature_addsubiw,
2308 },2308 },
2309};2309};
23102310
2311pub const cpu_atmega649 = Cpu{2311pub const cpu_atmega649 = Cpu{
2312 .name = "atmega649",2312 .name = "atmega649",
2313 .llvm_name = "atmega649",2313 .llvm_name = "atmega649",
2314 .subfeatures = &[_]*const Feature {2314 .dependencies = &[_]*const Feature {
2315 &feature_lpmx,2315 &feature_lpmx,
2316 &feature_spm,
2317 &feature_addsubiw,
2318 &feature_jmpcall,
2319 &feature_lpm,2316 &feature_lpm,
2317 &feature_spm,
2318 &feature_ijmpcall,
2319 &feature_sram,
2320 &feature_break,2320 &feature_break,
2321 &feature_jmpcall,
2321 &feature_mul,2322 &feature_mul,
2322 &feature_sram,
2323 &feature_ijmpcall,
2324 &feature_movw,2323 &feature_movw,
2324 &feature_addsubiw,
2325 },2325 },
2326};2326};
23272327
2328pub const cpu_atmega6490 = Cpu{2328pub const cpu_atmega6490 = Cpu{
2329 .name = "atmega6490",2329 .name = "atmega6490",
2330 .llvm_name = "atmega6490",2330 .llvm_name = "atmega6490",
2331 .subfeatures = &[_]*const Feature {2331 .dependencies = &[_]*const Feature {
2332 &feature_lpmx,2332 &feature_lpmx,
2333 &feature_spm,
2334 &feature_addsubiw,
2335 &feature_jmpcall,
2336 &feature_lpm,2333 &feature_lpm,
2334 &feature_spm,
2335 &feature_ijmpcall,
2336 &feature_sram,
2337 &feature_break,2337 &feature_break,
2338 &feature_jmpcall,
2338 &feature_mul,2339 &feature_mul,
2339 &feature_sram,
2340 &feature_ijmpcall,
2341 &feature_movw,2340 &feature_movw,
2341 &feature_addsubiw,
2342 },2342 },
2343};2343};
23442344
2345pub const cpu_atmega6490a = Cpu{2345pub const cpu_atmega6490a = Cpu{
2346 .name = "atmega6490a",2346 .name = "atmega6490a",
2347 .llvm_name = "atmega6490a",2347 .llvm_name = "atmega6490a",
2348 .subfeatures = &[_]*const Feature {2348 .dependencies = &[_]*const Feature {
2349 &feature_lpmx,2349 &feature_lpmx,
2350 &feature_spm,
2351 &feature_addsubiw,
2352 &feature_jmpcall,
2353 &feature_lpm,2350 &feature_lpm,
2351 &feature_spm,
2352 &feature_ijmpcall,
2353 &feature_sram,
2354 &feature_break,2354 &feature_break,
2355 &feature_jmpcall,
2355 &feature_mul,2356 &feature_mul,
2356 &feature_sram,
2357 &feature_ijmpcall,
2358 &feature_movw,2357 &feature_movw,
2358 &feature_addsubiw,
2359 },2359 },
2360};2360};
23612361
2362pub const cpu_atmega6490p = Cpu{2362pub const cpu_atmega6490p = Cpu{
2363 .name = "atmega6490p",2363 .name = "atmega6490p",
2364 .llvm_name = "atmega6490p",2364 .llvm_name = "atmega6490p",
2365 .subfeatures = &[_]*const Feature {2365 .dependencies = &[_]*const Feature {
2366 &feature_lpmx,2366 &feature_lpmx,
2367 &feature_spm,
2368 &feature_addsubiw,
2369 &feature_jmpcall,
2370 &feature_lpm,2367 &feature_lpm,
2368 &feature_spm,
2369 &feature_ijmpcall,
2370 &feature_sram,
2371 &feature_break,2371 &feature_break,
2372 &feature_jmpcall,
2372 &feature_mul,2373 &feature_mul,
2373 &feature_sram,
2374 &feature_ijmpcall,
2375 &feature_movw,2374 &feature_movw,
2375 &feature_addsubiw,
2376 },2376 },
2377};2377};
23782378
2379pub const cpu_atmega649a = Cpu{2379pub const cpu_atmega649a = Cpu{
2380 .name = "atmega649a",2380 .name = "atmega649a",
2381 .llvm_name = "atmega649a",2381 .llvm_name = "atmega649a",
2382 .subfeatures = &[_]*const Feature {2382 .dependencies = &[_]*const Feature {
2383 &feature_lpmx,2383 &feature_lpmx,
2384 &feature_spm,
2385 &feature_addsubiw,
2386 &feature_jmpcall,
2387 &feature_lpm,2384 &feature_lpm,
2385 &feature_spm,
2386 &feature_ijmpcall,
2387 &feature_sram,
2388 &feature_break,2388 &feature_break,
2389 &feature_jmpcall,
2389 &feature_mul,2390 &feature_mul,
2390 &feature_sram,
2391 &feature_ijmpcall,
2392 &feature_movw,2391 &feature_movw,
2392 &feature_addsubiw,
2393 },2393 },
2394};2394};
23952395
2396pub const cpu_atmega649p = Cpu{2396pub const cpu_atmega649p = Cpu{
2397 .name = "atmega649p",2397 .name = "atmega649p",
2398 .llvm_name = "atmega649p",2398 .llvm_name = "atmega649p",
2399 .subfeatures = &[_]*const Feature {2399 .dependencies = &[_]*const Feature {
2400 &feature_lpmx,2400 &feature_lpmx,
2401 &feature_spm,
2402 &feature_addsubiw,
2403 &feature_jmpcall,
2404 &feature_lpm,2401 &feature_lpm,
2402 &feature_spm,
2403 &feature_ijmpcall,
2404 &feature_sram,
2405 &feature_break,2405 &feature_break,
2406 &feature_jmpcall,
2406 &feature_mul,2407 &feature_mul,
2407 &feature_sram,
2408 &feature_ijmpcall,
2409 &feature_movw,2408 &feature_movw,
2409 &feature_addsubiw,
2410 },2410 },
2411};2411};
24122412
2413pub const cpu_atmega64a = Cpu{2413pub const cpu_atmega64a = Cpu{
2414 .name = "atmega64a",2414 .name = "atmega64a",
2415 .llvm_name = "atmega64a",2415 .llvm_name = "atmega64a",
2416 .subfeatures = &[_]*const Feature {2416 .dependencies = &[_]*const Feature {
2417 &feature_lpmx,2417 &feature_lpmx,
2418 &feature_spm,
2419 &feature_addsubiw,
2420 &feature_jmpcall,
2421 &feature_lpm,2418 &feature_lpm,
2419 &feature_spm,
2420 &feature_ijmpcall,
2421 &feature_sram,
2422 &feature_break,2422 &feature_break,
2423 &feature_jmpcall,
2423 &feature_mul,2424 &feature_mul,
2424 &feature_sram,
2425 &feature_ijmpcall,
2426 &feature_movw,2425 &feature_movw,
2426 &feature_addsubiw,
2427 },2427 },
2428};2428};
24292429
2430pub const cpu_atmega64c1 = Cpu{2430pub const cpu_atmega64c1 = Cpu{
2431 .name = "atmega64c1",2431 .name = "atmega64c1",
2432 .llvm_name = "atmega64c1",2432 .llvm_name = "atmega64c1",
2433 .subfeatures = &[_]*const Feature {2433 .dependencies = &[_]*const Feature {
2434 &feature_lpmx,2434 &feature_lpmx,
2435 &feature_spm,
2436 &feature_addsubiw,
2437 &feature_jmpcall,
2438 &feature_lpm,2435 &feature_lpm,
2436 &feature_spm,
2437 &feature_ijmpcall,
2438 &feature_sram,
2439 &feature_break,2439 &feature_break,
2440 &feature_jmpcall,
2440 &feature_mul,2441 &feature_mul,
2441 &feature_sram,
2442 &feature_ijmpcall,
2443 &feature_movw,2442 &feature_movw,
2443 &feature_addsubiw,
2444 },2444 },
2445};2445};
24462446
2447pub const cpu_atmega64hve = Cpu{2447pub const cpu_atmega64hve = Cpu{
2448 .name = "atmega64hve",2448 .name = "atmega64hve",
2449 .llvm_name = "atmega64hve",2449 .llvm_name = "atmega64hve",
2450 .subfeatures = &[_]*const Feature {2450 .dependencies = &[_]*const Feature {
2451 &feature_lpmx,2451 &feature_lpmx,
2452 &feature_spm,
2453 &feature_addsubiw,
2454 &feature_jmpcall,
2455 &feature_lpm,2452 &feature_lpm,
2453 &feature_spm,
2454 &feature_ijmpcall,
2455 &feature_sram,
2456 &feature_break,2456 &feature_break,
2457 &feature_jmpcall,
2457 &feature_mul,2458 &feature_mul,
2458 &feature_sram,
2459 &feature_ijmpcall,
2460 &feature_movw,2459 &feature_movw,
2460 &feature_addsubiw,
2461 },2461 },
2462};2462};
24632463
2464pub const cpu_atmega64m1 = Cpu{2464pub const cpu_atmega64m1 = Cpu{
2465 .name = "atmega64m1",2465 .name = "atmega64m1",
2466 .llvm_name = "atmega64m1",2466 .llvm_name = "atmega64m1",
2467 .subfeatures = &[_]*const Feature {2467 .dependencies = &[_]*const Feature {
2468 &feature_lpmx,2468 &feature_lpmx,
2469 &feature_spm,
2470 &feature_addsubiw,
2471 &feature_jmpcall,
2472 &feature_lpm,2469 &feature_lpm,
2470 &feature_spm,
2471 &feature_ijmpcall,
2472 &feature_sram,
2473 &feature_break,2473 &feature_break,
2474 &feature_jmpcall,
2474 &feature_mul,2475 &feature_mul,
2475 &feature_sram,
2476 &feature_ijmpcall,
2477 &feature_movw,2476 &feature_movw,
2477 &feature_addsubiw,
2478 },2478 },
2479};2479};
24802480
2481pub const cpu_atmega64rfr2 = Cpu{2481pub const cpu_atmega64rfr2 = Cpu{
2482 .name = "atmega64rfr2",2482 .name = "atmega64rfr2",
2483 .llvm_name = "atmega64rfr2",2483 .llvm_name = "atmega64rfr2",
2484 .subfeatures = &[_]*const Feature {2484 .dependencies = &[_]*const Feature {
2485 &feature_lpmx,2485 &feature_lpmx,
2486 &feature_spm,
2487 &feature_addsubiw,
2488 &feature_jmpcall,
2489 &feature_lpm,2486 &feature_lpm,
2487 &feature_spm,
2488 &feature_ijmpcall,
2489 &feature_sram,
2490 &feature_break,2490 &feature_break,
2491 &feature_jmpcall,
2491 &feature_mul,2492 &feature_mul,
2492 &feature_sram,
2493 &feature_ijmpcall,
2494 &feature_movw,2493 &feature_movw,
2494 &feature_addsubiw,
2495 },2495 },
2496};2496};
24972497
2498pub const cpu_atmega8 = Cpu{2498pub const cpu_atmega8 = Cpu{
2499 .name = "atmega8",2499 .name = "atmega8",
2500 .llvm_name = "atmega8",2500 .llvm_name = "atmega8",
2501 .subfeatures = &[_]*const Feature {2501 .dependencies = &[_]*const Feature {
2502 &feature_lpmx,2502 &feature_lpmx,
2503 &feature_lpm,
2503 &feature_spm,2504 &feature_spm,
2504 &feature_addsubiw,2505 &feature_ijmpcall,
2506 &feature_sram,
2505 &feature_break,2507 &feature_break,
2506 &feature_lpm,
2507 &feature_mul,2508 &feature_mul,
2508 &feature_sram,
2509 &feature_ijmpcall,
2510 &feature_movw,2509 &feature_movw,
2510 &feature_addsubiw,
2511 },2511 },
2512};2512};
25132513
2514pub const cpu_atmega8515 = Cpu{2514pub const cpu_atmega8515 = Cpu{
2515 .name = "atmega8515",2515 .name = "atmega8515",
2516 .llvm_name = "atmega8515",2516 .llvm_name = "atmega8515",
2517 .subfeatures = &[_]*const Feature {2517 .dependencies = &[_]*const Feature {
2518 &feature_addsubiw,
2519 &feature_lpm,2518 &feature_lpm,
2520 &feature_sram,
2521 &feature_ijmpcall,2519 &feature_ijmpcall,
2520 &feature_sram,
2521 &feature_addsubiw,
2522 &feature_lpmx,2522 &feature_lpmx,
2523 &feature_movw,2523 &feature_movw,
2524 &feature_mul,2524 &feature_mul,
...@@ -2529,11 +2529,11 @@ pub const cpu_atmega8515 = Cpu{...@@ -2529,11 +2529,11 @@ pub const cpu_atmega8515 = Cpu{
2529pub const cpu_atmega8535 = Cpu{2529pub const cpu_atmega8535 = Cpu{
2530 .name = "atmega8535",2530 .name = "atmega8535",
2531 .llvm_name = "atmega8535",2531 .llvm_name = "atmega8535",
2532 .subfeatures = &[_]*const Feature {2532 .dependencies = &[_]*const Feature {
2533 &feature_addsubiw,
2534 &feature_lpm,2533 &feature_lpm,
2535 &feature_sram,
2536 &feature_ijmpcall,2534 &feature_ijmpcall,
2535 &feature_sram,
2536 &feature_addsubiw,
2537 &feature_lpmx,2537 &feature_lpmx,
2538 &feature_movw,2538 &feature_movw,
2539 &feature_mul,2539 &feature_mul,
...@@ -2544,149 +2544,149 @@ pub const cpu_atmega8535 = Cpu{...@@ -2544,149 +2544,149 @@ pub const cpu_atmega8535 = Cpu{
2544pub const cpu_atmega88 = Cpu{2544pub const cpu_atmega88 = Cpu{
2545 .name = "atmega88",2545 .name = "atmega88",
2546 .llvm_name = "atmega88",2546 .llvm_name = "atmega88",
2547 .subfeatures = &[_]*const Feature {2547 .dependencies = &[_]*const Feature {
2548 &feature_lpmx,2548 &feature_lpmx,
2549 &feature_lpm,
2549 &feature_spm,2550 &feature_spm,
2550 &feature_addsubiw,2551 &feature_ijmpcall,
2552 &feature_sram,
2551 &feature_break,2553 &feature_break,
2552 &feature_lpm,
2553 &feature_mul,2554 &feature_mul,
2554 &feature_sram,
2555 &feature_ijmpcall,
2556 &feature_movw,2555 &feature_movw,
2556 &feature_addsubiw,
2557 },2557 },
2558};2558};
25592559
2560pub const cpu_atmega88a = Cpu{2560pub const cpu_atmega88a = Cpu{
2561 .name = "atmega88a",2561 .name = "atmega88a",
2562 .llvm_name = "atmega88a",2562 .llvm_name = "atmega88a",
2563 .subfeatures = &[_]*const Feature {2563 .dependencies = &[_]*const Feature {
2564 &feature_lpmx,2564 &feature_lpmx,
2565 &feature_lpm,
2565 &feature_spm,2566 &feature_spm,
2566 &feature_addsubiw,2567 &feature_ijmpcall,
2568 &feature_sram,
2567 &feature_break,2569 &feature_break,
2568 &feature_lpm,
2569 &feature_mul,2570 &feature_mul,
2570 &feature_sram,
2571 &feature_ijmpcall,
2572 &feature_movw,2571 &feature_movw,
2572 &feature_addsubiw,
2573 },2573 },
2574};2574};
25752575
2576pub const cpu_atmega88p = Cpu{2576pub const cpu_atmega88p = Cpu{
2577 .name = "atmega88p",2577 .name = "atmega88p",
2578 .llvm_name = "atmega88p",2578 .llvm_name = "atmega88p",
2579 .subfeatures = &[_]*const Feature {2579 .dependencies = &[_]*const Feature {
2580 &feature_lpmx,2580 &feature_lpmx,
2581 &feature_lpm,
2581 &feature_spm,2582 &feature_spm,
2582 &feature_addsubiw,2583 &feature_ijmpcall,
2584 &feature_sram,
2583 &feature_break,2585 &feature_break,
2584 &feature_lpm,
2585 &feature_mul,2586 &feature_mul,
2586 &feature_sram,
2587 &feature_ijmpcall,
2588 &feature_movw,2587 &feature_movw,
2588 &feature_addsubiw,
2589 },2589 },
2590};2590};
25912591
2592pub const cpu_atmega88pa = Cpu{2592pub const cpu_atmega88pa = Cpu{
2593 .name = "atmega88pa",2593 .name = "atmega88pa",
2594 .llvm_name = "atmega88pa",2594 .llvm_name = "atmega88pa",
2595 .subfeatures = &[_]*const Feature {2595 .dependencies = &[_]*const Feature {
2596 &feature_lpmx,2596 &feature_lpmx,
2597 &feature_lpm,
2597 &feature_spm,2598 &feature_spm,
2598 &feature_addsubiw,2599 &feature_ijmpcall,
2600 &feature_sram,
2599 &feature_break,2601 &feature_break,
2600 &feature_lpm,
2601 &feature_mul,2602 &feature_mul,
2602 &feature_sram,
2603 &feature_ijmpcall,
2604 &feature_movw,2603 &feature_movw,
2604 &feature_addsubiw,
2605 },2605 },
2606};2606};
26072607
2608pub const cpu_atmega8a = Cpu{2608pub const cpu_atmega8a = Cpu{
2609 .name = "atmega8a",2609 .name = "atmega8a",
2610 .llvm_name = "atmega8a",2610 .llvm_name = "atmega8a",
2611 .subfeatures = &[_]*const Feature {2611 .dependencies = &[_]*const Feature {
2612 &feature_lpmx,2612 &feature_lpmx,
2613 &feature_lpm,
2613 &feature_spm,2614 &feature_spm,
2614 &feature_addsubiw,2615 &feature_ijmpcall,
2616 &feature_sram,
2615 &feature_break,2617 &feature_break,
2616 &feature_lpm,
2617 &feature_mul,2618 &feature_mul,
2618 &feature_sram,
2619 &feature_ijmpcall,
2620 &feature_movw,2619 &feature_movw,
2620 &feature_addsubiw,
2621 },2621 },
2622};2622};
26232623
2624pub const cpu_atmega8hva = Cpu{2624pub const cpu_atmega8hva = Cpu{
2625 .name = "atmega8hva",2625 .name = "atmega8hva",
2626 .llvm_name = "atmega8hva",2626 .llvm_name = "atmega8hva",
2627 .subfeatures = &[_]*const Feature {2627 .dependencies = &[_]*const Feature {
2628 &feature_lpmx,2628 &feature_lpmx,
2629 &feature_lpm,
2629 &feature_spm,2630 &feature_spm,
2630 &feature_addsubiw,2631 &feature_ijmpcall,
2632 &feature_sram,
2631 &feature_break,2633 &feature_break,
2632 &feature_lpm,
2633 &feature_mul,2634 &feature_mul,
2634 &feature_sram,
2635 &feature_ijmpcall,
2636 &feature_movw,2635 &feature_movw,
2636 &feature_addsubiw,
2637 },2637 },
2638};2638};
26392639
2640pub const cpu_atmega8u2 = Cpu{2640pub const cpu_atmega8u2 = Cpu{
2641 .name = "atmega8u2",2641 .name = "atmega8u2",
2642 .llvm_name = "atmega8u2",2642 .llvm_name = "atmega8u2",
2643 .subfeatures = &[_]*const Feature {2643 .dependencies = &[_]*const Feature {
2644 &feature_lpmx,2644 &feature_lpmx,
2645 &feature_spm,
2646 &feature_addsubiw,
2647 &feature_jmpcall,
2648 &feature_lpm,2645 &feature_lpm,
2649 &feature_break,2646 &feature_spm,
2650 &feature_sram,
2651 &feature_ijmpcall,2647 &feature_ijmpcall,
2648 &feature_sram,
2649 &feature_break,
2650 &feature_jmpcall,
2652 &feature_movw,2651 &feature_movw,
2652 &feature_addsubiw,
2653 },2653 },
2654};2654};
26552655
2656pub const cpu_attiny10 = Cpu{2656pub const cpu_attiny10 = Cpu{
2657 .name = "attiny10",2657 .name = "attiny10",
2658 .llvm_name = "attiny10",2658 .llvm_name = "attiny10",
2659 .subfeatures = &[_]*const Feature {2659 .dependencies = &[_]*const Feature {
2660 &feature_break,2660 &feature_break,
2661 &feature_sram,
2662 &feature_tinyencoding,2661 &feature_tinyencoding,
2662 &feature_sram,
2663 },2663 },
2664};2664};
26652665
2666pub const cpu_attiny102 = Cpu{2666pub const cpu_attiny102 = Cpu{
2667 .name = "attiny102",2667 .name = "attiny102",
2668 .llvm_name = "attiny102",2668 .llvm_name = "attiny102",
2669 .subfeatures = &[_]*const Feature {2669 .dependencies = &[_]*const Feature {
2670 &feature_break,2670 &feature_break,
2671 &feature_sram,
2672 &feature_tinyencoding,2671 &feature_tinyencoding,
2672 &feature_sram,
2673 },2673 },
2674};2674};
26752675
2676pub const cpu_attiny104 = Cpu{2676pub const cpu_attiny104 = Cpu{
2677 .name = "attiny104",2677 .name = "attiny104",
2678 .llvm_name = "attiny104",2678 .llvm_name = "attiny104",
2679 .subfeatures = &[_]*const Feature {2679 .dependencies = &[_]*const Feature {
2680 &feature_break,2680 &feature_break,
2681 &feature_sram,
2682 &feature_tinyencoding,2681 &feature_tinyencoding,
2682 &feature_sram,
2683 },2683 },
2684};2684};
26852685
2686pub const cpu_attiny11 = Cpu{2686pub const cpu_attiny11 = Cpu{
2687 .name = "attiny11",2687 .name = "attiny11",
2688 .llvm_name = "attiny11",2688 .llvm_name = "attiny11",
2689 .subfeatures = &[_]*const Feature {2689 .dependencies = &[_]*const Feature {
2690 &feature_lpm,2690 &feature_lpm,
2691 },2691 },
2692};2692};
...@@ -2694,7 +2694,7 @@ pub const cpu_attiny11 = Cpu{...@@ -2694,7 +2694,7 @@ pub const cpu_attiny11 = Cpu{
2694pub const cpu_attiny12 = Cpu{2694pub const cpu_attiny12 = Cpu{
2695 .name = "attiny12",2695 .name = "attiny12",
2696 .llvm_name = "attiny12",2696 .llvm_name = "attiny12",
2697 .subfeatures = &[_]*const Feature {2697 .dependencies = &[_]*const Feature {
2698 &feature_lpm,2698 &feature_lpm,
2699 },2699 },
2700};2700};
...@@ -2702,37 +2702,37 @@ pub const cpu_attiny12 = Cpu{...@@ -2702,37 +2702,37 @@ pub const cpu_attiny12 = Cpu{
2702pub const cpu_attiny13 = Cpu{2702pub const cpu_attiny13 = Cpu{
2703 .name = "attiny13",2703 .name = "attiny13",
2704 .llvm_name = "attiny13",2704 .llvm_name = "attiny13",
2705 .subfeatures = &[_]*const Feature {2705 .dependencies = &[_]*const Feature {
2706 &feature_lpmx,2706 &feature_lpmx,
2707 &feature_spm,
2708 &feature_addsubiw,
2709 &feature_break,
2710 &feature_lpm,2707 &feature_lpm,
2711 &feature_sram,2708 &feature_spm,
2712 &feature_ijmpcall,2709 &feature_ijmpcall,
2710 &feature_sram,
2711 &feature_break,
2713 &feature_movw,2712 &feature_movw,
2713 &feature_addsubiw,
2714 },2714 },
2715};2715};
27162716
2717pub const cpu_attiny13a = Cpu{2717pub const cpu_attiny13a = Cpu{
2718 .name = "attiny13a",2718 .name = "attiny13a",
2719 .llvm_name = "attiny13a",2719 .llvm_name = "attiny13a",
2720 .subfeatures = &[_]*const Feature {2720 .dependencies = &[_]*const Feature {
2721 &feature_lpmx,2721 &feature_lpmx,
2722 &feature_spm,
2723 &feature_addsubiw,
2724 &feature_break,
2725 &feature_lpm,2722 &feature_lpm,
2726 &feature_sram,2723 &feature_spm,
2727 &feature_ijmpcall,2724 &feature_ijmpcall,
2725 &feature_sram,
2726 &feature_break,
2728 &feature_movw,2727 &feature_movw,
2728 &feature_addsubiw,
2729 },2729 },
2730};2730};
27312731
2732pub const cpu_attiny15 = Cpu{2732pub const cpu_attiny15 = Cpu{
2733 .name = "attiny15",2733 .name = "attiny15",
2734 .llvm_name = "attiny15",2734 .llvm_name = "attiny15",
2735 .subfeatures = &[_]*const Feature {2735 .dependencies = &[_]*const Feature {
2736 &feature_lpm,2736 &feature_lpm,
2737 },2737 },
2738};2738};
...@@ -2740,139 +2740,139 @@ pub const cpu_attiny15 = Cpu{...@@ -2740,139 +2740,139 @@ pub const cpu_attiny15 = Cpu{
2740pub const cpu_attiny1634 = Cpu{2740pub const cpu_attiny1634 = Cpu{
2741 .name = "attiny1634",2741 .name = "attiny1634",
2742 .llvm_name = "attiny1634",2742 .llvm_name = "attiny1634",
2743 .subfeatures = &[_]*const Feature {2743 .dependencies = &[_]*const Feature {
2744 &feature_lpmx,2744 &feature_lpmx,
2745 &feature_spm,
2746 &feature_addsubiw,
2747 &feature_jmpcall,
2748 &feature_lpm,2745 &feature_lpm,
2749 &feature_break,2746 &feature_spm,
2750 &feature_sram,
2751 &feature_ijmpcall,2747 &feature_ijmpcall,
2748 &feature_sram,
2749 &feature_break,
2750 &feature_jmpcall,
2752 &feature_movw,2751 &feature_movw,
2752 &feature_addsubiw,
2753 },2753 },
2754};2754};
27552755
2756pub const cpu_attiny167 = Cpu{2756pub const cpu_attiny167 = Cpu{
2757 .name = "attiny167",2757 .name = "attiny167",
2758 .llvm_name = "attiny167",2758 .llvm_name = "attiny167",
2759 .subfeatures = &[_]*const Feature {2759 .dependencies = &[_]*const Feature {
2760 &feature_lpmx,2760 &feature_lpmx,
2761 &feature_spm,
2762 &feature_addsubiw,
2763 &feature_jmpcall,
2764 &feature_lpm,2761 &feature_lpm,
2765 &feature_break,2762 &feature_spm,
2766 &feature_sram,
2767 &feature_ijmpcall,2763 &feature_ijmpcall,
2764 &feature_sram,
2765 &feature_break,
2766 &feature_jmpcall,
2768 &feature_movw,2767 &feature_movw,
2768 &feature_addsubiw,
2769 },2769 },
2770};2770};
27712771
2772pub const cpu_attiny20 = Cpu{2772pub const cpu_attiny20 = Cpu{
2773 .name = "attiny20",2773 .name = "attiny20",
2774 .llvm_name = "attiny20",2774 .llvm_name = "attiny20",
2775 .subfeatures = &[_]*const Feature {2775 .dependencies = &[_]*const Feature {
2776 &feature_break,2776 &feature_break,
2777 &feature_sram,
2778 &feature_tinyencoding,2777 &feature_tinyencoding,
2778 &feature_sram,
2779 },2779 },
2780};2780};
27812781
2782pub const cpu_attiny22 = Cpu{2782pub const cpu_attiny22 = Cpu{
2783 .name = "attiny22",2783 .name = "attiny22",
2784 .llvm_name = "attiny22",2784 .llvm_name = "attiny22",
2785 .subfeatures = &[_]*const Feature {2785 .dependencies = &[_]*const Feature {
2786 &feature_addsubiw,
2787 &feature_lpm,2786 &feature_lpm,
2788 &feature_sram,
2789 &feature_ijmpcall,2787 &feature_ijmpcall,
2788 &feature_sram,
2789 &feature_addsubiw,
2790 },2790 },
2791};2791};
27922792
2793pub const cpu_attiny2313 = Cpu{2793pub const cpu_attiny2313 = Cpu{
2794 .name = "attiny2313",2794 .name = "attiny2313",
2795 .llvm_name = "attiny2313",2795 .llvm_name = "attiny2313",
2796 .subfeatures = &[_]*const Feature {2796 .dependencies = &[_]*const Feature {
2797 &feature_lpmx,2797 &feature_lpmx,
2798 &feature_spm,
2799 &feature_addsubiw,
2800 &feature_break,
2801 &feature_lpm,2798 &feature_lpm,
2802 &feature_sram,2799 &feature_spm,
2803 &feature_ijmpcall,2800 &feature_ijmpcall,
2801 &feature_sram,
2802 &feature_break,
2804 &feature_movw,2803 &feature_movw,
2804 &feature_addsubiw,
2805 },2805 },
2806};2806};
28072807
2808pub const cpu_attiny2313a = Cpu{2808pub const cpu_attiny2313a = Cpu{
2809 .name = "attiny2313a",2809 .name = "attiny2313a",
2810 .llvm_name = "attiny2313a",2810 .llvm_name = "attiny2313a",
2811 .subfeatures = &[_]*const Feature {2811 .dependencies = &[_]*const Feature {
2812 &feature_lpmx,2812 &feature_lpmx,
2813 &feature_spm,
2814 &feature_addsubiw,
2815 &feature_break,
2816 &feature_lpm,2813 &feature_lpm,
2817 &feature_sram,2814 &feature_spm,
2818 &feature_ijmpcall,2815 &feature_ijmpcall,
2816 &feature_sram,
2817 &feature_break,
2819 &feature_movw,2818 &feature_movw,
2819 &feature_addsubiw,
2820 },2820 },
2821};2821};
28222822
2823pub const cpu_attiny24 = Cpu{2823pub const cpu_attiny24 = Cpu{
2824 .name = "attiny24",2824 .name = "attiny24",
2825 .llvm_name = "attiny24",2825 .llvm_name = "attiny24",
2826 .subfeatures = &[_]*const Feature {2826 .dependencies = &[_]*const Feature {
2827 &feature_lpmx,2827 &feature_lpmx,
2828 &feature_spm,
2829 &feature_addsubiw,
2830 &feature_break,
2831 &feature_lpm,2828 &feature_lpm,
2832 &feature_sram,2829 &feature_spm,
2833 &feature_ijmpcall,2830 &feature_ijmpcall,
2831 &feature_sram,
2832 &feature_break,
2834 &feature_movw,2833 &feature_movw,
2834 &feature_addsubiw,
2835 },2835 },
2836};2836};
28372837
2838pub const cpu_attiny24a = Cpu{2838pub const cpu_attiny24a = Cpu{
2839 .name = "attiny24a",2839 .name = "attiny24a",
2840 .llvm_name = "attiny24a",2840 .llvm_name = "attiny24a",
2841 .subfeatures = &[_]*const Feature {2841 .dependencies = &[_]*const Feature {
2842 &feature_lpmx,2842 &feature_lpmx,
2843 &feature_spm,
2844 &feature_addsubiw,
2845 &feature_break,
2846 &feature_lpm,2843 &feature_lpm,
2847 &feature_sram,2844 &feature_spm,
2848 &feature_ijmpcall,2845 &feature_ijmpcall,
2846 &feature_sram,
2847 &feature_break,
2849 &feature_movw,2848 &feature_movw,
2849 &feature_addsubiw,
2850 },2850 },
2851};2851};
28522852
2853pub const cpu_attiny25 = Cpu{2853pub const cpu_attiny25 = Cpu{
2854 .name = "attiny25",2854 .name = "attiny25",
2855 .llvm_name = "attiny25",2855 .llvm_name = "attiny25",
2856 .subfeatures = &[_]*const Feature {2856 .dependencies = &[_]*const Feature {
2857 &feature_lpmx,2857 &feature_lpmx,
2858 &feature_spm,
2859 &feature_addsubiw,
2860 &feature_break,
2861 &feature_lpm,2858 &feature_lpm,
2862 &feature_sram,2859 &feature_spm,
2863 &feature_ijmpcall,2860 &feature_ijmpcall,
2861 &feature_sram,
2862 &feature_break,
2864 &feature_movw,2863 &feature_movw,
2864 &feature_addsubiw,
2865 },2865 },
2866};2866};
28672867
2868pub const cpu_attiny26 = Cpu{2868pub const cpu_attiny26 = Cpu{
2869 .name = "attiny26",2869 .name = "attiny26",
2870 .llvm_name = "attiny26",2870 .llvm_name = "attiny26",
2871 .subfeatures = &[_]*const Feature {2871 .dependencies = &[_]*const Feature {
2872 &feature_addsubiw,
2873 &feature_lpm,2872 &feature_lpm,
2874 &feature_sram,
2875 &feature_ijmpcall,2873 &feature_ijmpcall,
2874 &feature_sram,
2875 &feature_addsubiw,
2876 &feature_lpmx,2876 &feature_lpmx,
2877 },2877 },
2878};2878};
...@@ -2880,37 +2880,37 @@ pub const cpu_attiny26 = Cpu{...@@ -2880,37 +2880,37 @@ pub const cpu_attiny26 = Cpu{
2880pub const cpu_attiny261 = Cpu{2880pub const cpu_attiny261 = Cpu{
2881 .name = "attiny261",2881 .name = "attiny261",
2882 .llvm_name = "attiny261",2882 .llvm_name = "attiny261",
2883 .subfeatures = &[_]*const Feature {2883 .dependencies = &[_]*const Feature {
2884 &feature_lpmx,2884 &feature_lpmx,
2885 &feature_spm,
2886 &feature_addsubiw,
2887 &feature_break,
2888 &feature_lpm,2885 &feature_lpm,
2889 &feature_sram,2886 &feature_spm,
2890 &feature_ijmpcall,2887 &feature_ijmpcall,
2888 &feature_sram,
2889 &feature_break,
2891 &feature_movw,2890 &feature_movw,
2891 &feature_addsubiw,
2892 },2892 },
2893};2893};
28942894
2895pub const cpu_attiny261a = Cpu{2895pub const cpu_attiny261a = Cpu{
2896 .name = "attiny261a",2896 .name = "attiny261a",
2897 .llvm_name = "attiny261a",2897 .llvm_name = "attiny261a",
2898 .subfeatures = &[_]*const Feature {2898 .dependencies = &[_]*const Feature {
2899 &feature_lpmx,2899 &feature_lpmx,
2900 &feature_spm,
2901 &feature_addsubiw,
2902 &feature_break,
2903 &feature_lpm,2900 &feature_lpm,
2904 &feature_sram,2901 &feature_spm,
2905 &feature_ijmpcall,2902 &feature_ijmpcall,
2903 &feature_sram,
2904 &feature_break,
2906 &feature_movw,2905 &feature_movw,
2906 &feature_addsubiw,
2907 },2907 },
2908};2908};
29092909
2910pub const cpu_attiny28 = Cpu{2910pub const cpu_attiny28 = Cpu{
2911 .name = "attiny28",2911 .name = "attiny28",
2912 .llvm_name = "attiny28",2912 .llvm_name = "attiny28",
2913 .subfeatures = &[_]*const Feature {2913 .dependencies = &[_]*const Feature {
2914 &feature_lpm,2914 &feature_lpm,
2915 },2915 },
2916};2916};
...@@ -2918,1277 +2918,1277 @@ pub const cpu_attiny28 = Cpu{...@@ -2918,1277 +2918,1277 @@ pub const cpu_attiny28 = Cpu{
2918pub const cpu_attiny4 = Cpu{2918pub const cpu_attiny4 = Cpu{
2919 .name = "attiny4",2919 .name = "attiny4",
2920 .llvm_name = "attiny4",2920 .llvm_name = "attiny4",
2921 .subfeatures = &[_]*const Feature {2921 .dependencies = &[_]*const Feature {
2922 &feature_break,2922 &feature_break,
2923 &feature_sram,
2924 &feature_tinyencoding,2923 &feature_tinyencoding,
2924 &feature_sram,
2925 },2925 },
2926};2926};
29272927
2928pub const cpu_attiny40 = Cpu{2928pub const cpu_attiny40 = Cpu{
2929 .name = "attiny40",2929 .name = "attiny40",
2930 .llvm_name = "attiny40",2930 .llvm_name = "attiny40",
2931 .subfeatures = &[_]*const Feature {2931 .dependencies = &[_]*const Feature {
2932 &feature_break,2932 &feature_break,
2933 &feature_sram,
2934 &feature_tinyencoding,2933 &feature_tinyencoding,
2934 &feature_sram,
2935 },2935 },
2936};2936};
29372937
2938pub const cpu_attiny4313 = Cpu{2938pub const cpu_attiny4313 = Cpu{
2939 .name = "attiny4313",2939 .name = "attiny4313",
2940 .llvm_name = "attiny4313",2940 .llvm_name = "attiny4313",
2941 .subfeatures = &[_]*const Feature {2941 .dependencies = &[_]*const Feature {
2942 &feature_lpmx,2942 &feature_lpmx,
2943 &feature_spm,
2944 &feature_addsubiw,
2945 &feature_break,
2946 &feature_lpm,2943 &feature_lpm,
2947 &feature_sram,2944 &feature_spm,
2948 &feature_ijmpcall,2945 &feature_ijmpcall,
2949 &feature_movw,2946 &feature_sram,
2947 &feature_break,
2948 &feature_movw,
2949 &feature_addsubiw,
2950 },2950 },
2951};2951};
29522952
2953pub const cpu_attiny43u = Cpu{2953pub const cpu_attiny43u = Cpu{
2954 .name = "attiny43u",2954 .name = "attiny43u",
2955 .llvm_name = "attiny43u",2955 .llvm_name = "attiny43u",
2956 .subfeatures = &[_]*const Feature {2956 .dependencies = &[_]*const Feature {
2957 &feature_lpmx,2957 &feature_lpmx,
2958 &feature_spm,
2959 &feature_addsubiw,
2960 &feature_break,
2961 &feature_lpm,2958 &feature_lpm,
2962 &feature_sram,2959 &feature_spm,
2963 &feature_ijmpcall,2960 &feature_ijmpcall,
2961 &feature_sram,
2962 &feature_break,
2964 &feature_movw,2963 &feature_movw,
2964 &feature_addsubiw,
2965 },2965 },
2966};2966};
29672967
2968pub const cpu_attiny44 = Cpu{2968pub const cpu_attiny44 = Cpu{
2969 .name = "attiny44",2969 .name = "attiny44",
2970 .llvm_name = "attiny44",2970 .llvm_name = "attiny44",
2971 .subfeatures = &[_]*const Feature {2971 .dependencies = &[_]*const Feature {
2972 &feature_lpmx,2972 &feature_lpmx,
2973 &feature_spm,
2974 &feature_addsubiw,
2975 &feature_break,
2976 &feature_lpm,2973 &feature_lpm,
2977 &feature_sram,2974 &feature_spm,
2978 &feature_ijmpcall,2975 &feature_ijmpcall,
2976 &feature_sram,
2977 &feature_break,
2979 &feature_movw,2978 &feature_movw,
2979 &feature_addsubiw,
2980 },2980 },
2981};2981};
29822982
2983pub const cpu_attiny44a = Cpu{2983pub const cpu_attiny44a = Cpu{
2984 .name = "attiny44a",2984 .name = "attiny44a",
2985 .llvm_name = "attiny44a",2985 .llvm_name = "attiny44a",
2986 .subfeatures = &[_]*const Feature {2986 .dependencies = &[_]*const Feature {
2987 &feature_lpmx,2987 &feature_lpmx,
2988 &feature_spm,
2989 &feature_addsubiw,
2990 &feature_break,
2991 &feature_lpm,2988 &feature_lpm,
2992 &feature_sram,2989 &feature_spm,
2993 &feature_ijmpcall,2990 &feature_ijmpcall,
2991 &feature_sram,
2992 &feature_break,
2994 &feature_movw,2993 &feature_movw,
2994 &feature_addsubiw,
2995 },2995 },
2996};2996};
29972997
2998pub const cpu_attiny45 = Cpu{2998pub const cpu_attiny45 = Cpu{
2999 .name = "attiny45",2999 .name = "attiny45",
3000 .llvm_name = "attiny45",3000 .llvm_name = "attiny45",
3001 .subfeatures = &[_]*const Feature {3001 .dependencies = &[_]*const Feature {
3002 &feature_lpmx,3002 &feature_lpmx,
3003 &feature_spm,
3004 &feature_addsubiw,
3005 &feature_break,
3006 &feature_lpm,3003 &feature_lpm,
3007 &feature_sram,3004 &feature_spm,
3008 &feature_ijmpcall,3005 &feature_ijmpcall,
3006 &feature_sram,
3007 &feature_break,
3009 &feature_movw,3008 &feature_movw,
3009 &feature_addsubiw,
3010 },3010 },
3011};3011};
30123012
3013pub const cpu_attiny461 = Cpu{3013pub const cpu_attiny461 = Cpu{
3014 .name = "attiny461",3014 .name = "attiny461",
3015 .llvm_name = "attiny461",3015 .llvm_name = "attiny461",
3016 .subfeatures = &[_]*const Feature {3016 .dependencies = &[_]*const Feature {
3017 &feature_lpmx,3017 &feature_lpmx,
3018 &feature_spm,
3019 &feature_addsubiw,
3020 &feature_break,
3021 &feature_lpm,3018 &feature_lpm,
3022 &feature_sram,3019 &feature_spm,
3023 &feature_ijmpcall,3020 &feature_ijmpcall,
3021 &feature_sram,
3022 &feature_break,
3024 &feature_movw,3023 &feature_movw,
3024 &feature_addsubiw,
3025 },3025 },
3026};3026};
30273027
3028pub const cpu_attiny461a = Cpu{3028pub const cpu_attiny461a = Cpu{
3029 .name = "attiny461a",3029 .name = "attiny461a",
3030 .llvm_name = "attiny461a",3030 .llvm_name = "attiny461a",
3031 .subfeatures = &[_]*const Feature {3031 .dependencies = &[_]*const Feature {
3032 &feature_lpmx,3032 &feature_lpmx,
3033 &feature_spm,
3034 &feature_addsubiw,
3035 &feature_break,
3036 &feature_lpm,3033 &feature_lpm,
3037 &feature_sram,3034 &feature_spm,
3038 &feature_ijmpcall,3035 &feature_ijmpcall,
3036 &feature_sram,
3037 &feature_break,
3039 &feature_movw,3038 &feature_movw,
3039 &feature_addsubiw,
3040 },3040 },
3041};3041};
30423042
3043pub const cpu_attiny48 = Cpu{3043pub const cpu_attiny48 = Cpu{
3044 .name = "attiny48",3044 .name = "attiny48",
3045 .llvm_name = "attiny48",3045 .llvm_name = "attiny48",
3046 .subfeatures = &[_]*const Feature {3046 .dependencies = &[_]*const Feature {
3047 &feature_lpmx,3047 &feature_lpmx,
3048 &feature_spm,
3049 &feature_addsubiw,
3050 &feature_break,
3051 &feature_lpm,3048 &feature_lpm,
3052 &feature_sram,3049 &feature_spm,
3053 &feature_ijmpcall,3050 &feature_ijmpcall,
3051 &feature_sram,
3052 &feature_break,
3054 &feature_movw,3053 &feature_movw,
3054 &feature_addsubiw,
3055 },3055 },
3056};3056};
30573057
3058pub const cpu_attiny5 = Cpu{3058pub const cpu_attiny5 = Cpu{
3059 .name = "attiny5",3059 .name = "attiny5",
3060 .llvm_name = "attiny5",3060 .llvm_name = "attiny5",
3061 .subfeatures = &[_]*const Feature {3061 .dependencies = &[_]*const Feature {
3062 &feature_break,3062 &feature_break,
3063 &feature_sram,
3064 &feature_tinyencoding,3063 &feature_tinyencoding,
3064 &feature_sram,
3065 },3065 },
3066};3066};
30673067
3068pub const cpu_attiny828 = Cpu{3068pub const cpu_attiny828 = Cpu{
3069 .name = "attiny828",3069 .name = "attiny828",
3070 .llvm_name = "attiny828",3070 .llvm_name = "attiny828",
3071 .subfeatures = &[_]*const Feature {3071 .dependencies = &[_]*const Feature {
3072 &feature_lpmx,3072 &feature_lpmx,
3073 &feature_spm,
3074 &feature_addsubiw,
3075 &feature_break,
3076 &feature_lpm,3073 &feature_lpm,
3077 &feature_sram,3074 &feature_spm,
3078 &feature_ijmpcall,3075 &feature_ijmpcall,
3076 &feature_sram,
3077 &feature_break,
3079 &feature_movw,3078 &feature_movw,
3079 &feature_addsubiw,
3080 },3080 },
3081};3081};
30823082
3083pub const cpu_attiny84 = Cpu{3083pub const cpu_attiny84 = Cpu{
3084 .name = "attiny84",3084 .name = "attiny84",
3085 .llvm_name = "attiny84",3085 .llvm_name = "attiny84",
3086 .subfeatures = &[_]*const Feature {3086 .dependencies = &[_]*const Feature {
3087 &feature_lpmx,3087 &feature_lpmx,
3088 &feature_spm,
3089 &feature_addsubiw,
3090 &feature_break,
3091 &feature_lpm,3088 &feature_lpm,
3092 &feature_sram,3089 &feature_spm,
3093 &feature_ijmpcall,3090 &feature_ijmpcall,
3091 &feature_sram,
3092 &feature_break,
3094 &feature_movw,3093 &feature_movw,
3094 &feature_addsubiw,
3095 },3095 },
3096};3096};
30973097
3098pub const cpu_attiny84a = Cpu{3098pub const cpu_attiny84a = Cpu{
3099 .name = "attiny84a",3099 .name = "attiny84a",
3100 .llvm_name = "attiny84a",3100 .llvm_name = "attiny84a",
3101 .subfeatures = &[_]*const Feature {3101 .dependencies = &[_]*const Feature {
3102 &feature_lpmx,3102 &feature_lpmx,
3103 &feature_spm,
3104 &feature_addsubiw,
3105 &feature_break,
3106 &feature_lpm,3103 &feature_lpm,
3107 &feature_sram,3104 &feature_spm,
3108 &feature_ijmpcall,3105 &feature_ijmpcall,
3106 &feature_sram,
3107 &feature_break,
3109 &feature_movw,3108 &feature_movw,
3109 &feature_addsubiw,
3110 },3110 },
3111};3111};
31123112
3113pub const cpu_attiny85 = Cpu{3113pub const cpu_attiny85 = Cpu{
3114 .name = "attiny85",3114 .name = "attiny85",
3115 .llvm_name = "attiny85",3115 .llvm_name = "attiny85",
3116 .subfeatures = &[_]*const Feature {3116 .dependencies = &[_]*const Feature {
3117 &feature_lpmx,3117 &feature_lpmx,
3118 &feature_spm,
3119 &feature_addsubiw,
3120 &feature_break,
3121 &feature_lpm,3118 &feature_lpm,
3122 &feature_sram,3119 &feature_spm,
3123 &feature_ijmpcall,3120 &feature_ijmpcall,
3121 &feature_sram,
3122 &feature_break,
3124 &feature_movw,3123 &feature_movw,
3124 &feature_addsubiw,
3125 },3125 },
3126};3126};
31273127
3128pub const cpu_attiny861 = Cpu{3128pub const cpu_attiny861 = Cpu{
3129 .name = "attiny861",3129 .name = "attiny861",
3130 .llvm_name = "attiny861",3130 .llvm_name = "attiny861",
3131 .subfeatures = &[_]*const Feature {3131 .dependencies = &[_]*const Feature {
3132 &feature_lpmx,3132 &feature_lpmx,
3133 &feature_spm,
3134 &feature_addsubiw,
3135 &feature_break,
3136 &feature_lpm,3133 &feature_lpm,
3137 &feature_sram,3134 &feature_spm,
3138 &feature_ijmpcall,3135 &feature_ijmpcall,
3136 &feature_sram,
3137 &feature_break,
3139 &feature_movw,3138 &feature_movw,
3139 &feature_addsubiw,
3140 },3140 },
3141};3141};
31423142
3143pub const cpu_attiny861a = Cpu{3143pub const cpu_attiny861a = Cpu{
3144 .name = "attiny861a",3144 .name = "attiny861a",
3145 .llvm_name = "attiny861a",3145 .llvm_name = "attiny861a",
3146 .subfeatures = &[_]*const Feature {3146 .dependencies = &[_]*const Feature {
3147 &feature_lpmx,3147 &feature_lpmx,
3148 &feature_spm,
3149 &feature_addsubiw,
3150 &feature_break,
3151 &feature_lpm,3148 &feature_lpm,
3152 &feature_sram,3149 &feature_spm,
3153 &feature_ijmpcall,3150 &feature_ijmpcall,
3151 &feature_sram,
3152 &feature_break,
3154 &feature_movw,3153 &feature_movw,
3154 &feature_addsubiw,
3155 },3155 },
3156};3156};
31573157
3158pub const cpu_attiny87 = Cpu{3158pub const cpu_attiny87 = Cpu{
3159 .name = "attiny87",3159 .name = "attiny87",
3160 .llvm_name = "attiny87",3160 .llvm_name = "attiny87",
3161 .subfeatures = &[_]*const Feature {3161 .dependencies = &[_]*const Feature {
3162 &feature_lpmx,3162 &feature_lpmx,
3163 &feature_spm,
3164 &feature_addsubiw,
3165 &feature_break,
3166 &feature_lpm,3163 &feature_lpm,
3167 &feature_sram,3164 &feature_spm,
3168 &feature_ijmpcall,3165 &feature_ijmpcall,
3166 &feature_sram,
3167 &feature_break,
3169 &feature_movw,3168 &feature_movw,
3169 &feature_addsubiw,
3170 },3170 },
3171};3171};
31723172
3173pub const cpu_attiny88 = Cpu{3173pub const cpu_attiny88 = Cpu{
3174 .name = "attiny88",3174 .name = "attiny88",
3175 .llvm_name = "attiny88",3175 .llvm_name = "attiny88",
3176 .subfeatures = &[_]*const Feature {3176 .dependencies = &[_]*const Feature {
3177 &feature_lpmx,3177 &feature_lpmx,
3178 &feature_spm,
3179 &feature_addsubiw,
3180 &feature_break,
3181 &feature_lpm,3178 &feature_lpm,
3182 &feature_sram,3179 &feature_spm,
3183 &feature_ijmpcall,3180 &feature_ijmpcall,
3181 &feature_sram,
3182 &feature_break,
3184 &feature_movw,3183 &feature_movw,
3184 &feature_addsubiw,
3185 },3185 },
3186};3186};
31873187
3188pub const cpu_attiny9 = Cpu{3188pub const cpu_attiny9 = Cpu{
3189 .name = "attiny9",3189 .name = "attiny9",
3190 .llvm_name = "attiny9",3190 .llvm_name = "attiny9",
3191 .subfeatures = &[_]*const Feature {3191 .dependencies = &[_]*const Feature {
3192 &feature_break,3192 &feature_break,
3193 &feature_sram,
3194 &feature_tinyencoding,3193 &feature_tinyencoding,
3194 &feature_sram,
3195 },3195 },
3196};3196};
31973197
3198pub const cpu_atxmega128a1 = Cpu{3198pub const cpu_atxmega128a1 = Cpu{
3199 .name = "atxmega128a1",3199 .name = "atxmega128a1",
3200 .llvm_name = "atxmega128a1",3200 .llvm_name = "atxmega128a1",
3201 .subfeatures = &[_]*const Feature {3201 .dependencies = &[_]*const Feature {
3202 &feature_lpmx,3202 &feature_lpmx,
3203 &feature_spm,3203 &feature_elpm,
3204 &feature_addsubiw,
3205 &feature_jmpcall,
3206 &feature_lpm,3204 &feature_lpm,
3205 &feature_spm,
3206 &feature_ijmpcall,
3207 &feature_movw,
3208 &feature_sram,
3209 &feature_spmx,
3207 &feature_break,3210 &feature_break,
3211 &feature_jmpcall,
3212 &feature_des,
3208 &feature_mul,3213 &feature_mul,
3209 &feature_elpm,
3210 &feature_eijmpcall,3214 &feature_eijmpcall,
3211 &feature_elpmx,3215 &feature_elpmx,
3212 &feature_sram,3216 &feature_addsubiw,
3213 &feature_des,
3214 &feature_ijmpcall,
3215 &feature_movw,
3216 &feature_spmx,
3217 },3217 },
3218};3218};
32193219
3220pub const cpu_atxmega128a1u = Cpu{3220pub const cpu_atxmega128a1u = Cpu{
3221 .name = "atxmega128a1u",3221 .name = "atxmega128a1u",
3222 .llvm_name = "atxmega128a1u",3222 .llvm_name = "atxmega128a1u",
3223 .subfeatures = &[_]*const Feature {3223 .dependencies = &[_]*const Feature {
3224 &feature_rmw,
3225 &feature_lpmx,3224 &feature_lpmx,
3225 &feature_elpm,
3226 &feature_spm,3226 &feature_spm,
3227 &feature_addsubiw,
3228 &feature_jmpcall,
3229 &feature_lpm,3227 &feature_lpm,
3230 &feature_break,3228 &feature_ijmpcall,
3231 &feature_mul,
3232 &feature_elpm,
3233 &feature_eijmpcall,
3234 &feature_elpmx,3229 &feature_elpmx,
3235 &feature_sram,3230 &feature_sram,
3231 &feature_spmx,
3232 &feature_break,
3233 &feature_jmpcall,
3236 &feature_des,3234 &feature_des,
3237 &feature_ijmpcall,3235 &feature_rmw,
3236 &feature_mul,
3237 &feature_eijmpcall,
3238 &feature_movw,3238 &feature_movw,
3239 &feature_spmx,3239 &feature_addsubiw,
3240 },3240 },
3241};3241};
32423242
3243pub const cpu_atxmega128a3 = Cpu{3243pub const cpu_atxmega128a3 = Cpu{
3244 .name = "atxmega128a3",3244 .name = "atxmega128a3",
3245 .llvm_name = "atxmega128a3",3245 .llvm_name = "atxmega128a3",
3246 .subfeatures = &[_]*const Feature {3246 .dependencies = &[_]*const Feature {
3247 &feature_lpmx,3247 &feature_lpmx,
3248 &feature_spm,3248 &feature_elpm,
3249 &feature_addsubiw,
3250 &feature_jmpcall,
3251 &feature_lpm,3249 &feature_lpm,
3250 &feature_spm,
3251 &feature_ijmpcall,
3252 &feature_movw,
3253 &feature_sram,
3254 &feature_spmx,
3252 &feature_break,3255 &feature_break,
3256 &feature_jmpcall,
3257 &feature_des,
3253 &feature_mul,3258 &feature_mul,
3254 &feature_elpm,
3255 &feature_eijmpcall,3259 &feature_eijmpcall,
3256 &feature_elpmx,3260 &feature_elpmx,
3257 &feature_sram,3261 &feature_addsubiw,
3258 &feature_des,
3259 &feature_ijmpcall,
3260 &feature_movw,
3261 &feature_spmx,
3262 },3262 },
3263};3263};
32643264
3265pub const cpu_atxmega128a3u = Cpu{3265pub const cpu_atxmega128a3u = Cpu{
3266 .name = "atxmega128a3u",3266 .name = "atxmega128a3u",
3267 .llvm_name = "atxmega128a3u",3267 .llvm_name = "atxmega128a3u",
3268 .subfeatures = &[_]*const Feature {3268 .dependencies = &[_]*const Feature {
3269 &feature_rmw,
3270 &feature_lpmx,3269 &feature_lpmx,
3270 &feature_elpm,
3271 &feature_spm,3271 &feature_spm,
3272 &feature_addsubiw,
3273 &feature_jmpcall,
3274 &feature_lpm,3272 &feature_lpm,
3275 &feature_break,3273 &feature_ijmpcall,
3276 &feature_mul,
3277 &feature_elpm,
3278 &feature_eijmpcall,
3279 &feature_elpmx,3274 &feature_elpmx,
3280 &feature_sram,3275 &feature_sram,
3276 &feature_spmx,
3277 &feature_break,
3278 &feature_jmpcall,
3281 &feature_des,3279 &feature_des,
3282 &feature_ijmpcall,3280 &feature_rmw,
3281 &feature_mul,
3282 &feature_eijmpcall,
3283 &feature_movw,3283 &feature_movw,
3284 &feature_spmx,3284 &feature_addsubiw,
3285 },3285 },
3286};3286};
32873287
3288pub const cpu_atxmega128a4u = Cpu{3288pub const cpu_atxmega128a4u = Cpu{
3289 .name = "atxmega128a4u",3289 .name = "atxmega128a4u",
3290 .llvm_name = "atxmega128a4u",3290 .llvm_name = "atxmega128a4u",
3291 .subfeatures = &[_]*const Feature {3291 .dependencies = &[_]*const Feature {
3292 &feature_rmw,
3293 &feature_lpmx,3292 &feature_lpmx,
3293 &feature_elpm,
3294 &feature_spm,3294 &feature_spm,
3295 &feature_addsubiw,
3296 &feature_jmpcall,
3297 &feature_lpm,3295 &feature_lpm,
3298 &feature_break,3296 &feature_ijmpcall,
3299 &feature_mul,
3300 &feature_elpm,
3301 &feature_eijmpcall,
3302 &feature_elpmx,3297 &feature_elpmx,
3303 &feature_sram,3298 &feature_sram,
3299 &feature_spmx,
3300 &feature_break,
3301 &feature_jmpcall,
3304 &feature_des,3302 &feature_des,
3305 &feature_ijmpcall,3303 &feature_rmw,
3304 &feature_mul,
3305 &feature_eijmpcall,
3306 &feature_movw,3306 &feature_movw,
3307 &feature_spmx,3307 &feature_addsubiw,
3308 },3308 },
3309};3309};
33103310
3311pub const cpu_atxmega128b1 = Cpu{3311pub const cpu_atxmega128b1 = Cpu{
3312 .name = "atxmega128b1",3312 .name = "atxmega128b1",
3313 .llvm_name = "atxmega128b1",3313 .llvm_name = "atxmega128b1",
3314 .subfeatures = &[_]*const Feature {3314 .dependencies = &[_]*const Feature {
3315 &feature_rmw,
3316 &feature_lpmx,3315 &feature_lpmx,
3316 &feature_elpm,
3317 &feature_spm,3317 &feature_spm,
3318 &feature_addsubiw,
3319 &feature_jmpcall,
3320 &feature_lpm,3318 &feature_lpm,
3321 &feature_break,3319 &feature_ijmpcall,
3322 &feature_mul,
3323 &feature_elpm,
3324 &feature_eijmpcall,
3325 &feature_elpmx,3320 &feature_elpmx,
3326 &feature_sram,3321 &feature_sram,
3322 &feature_spmx,
3323 &feature_break,
3324 &feature_jmpcall,
3327 &feature_des,3325 &feature_des,
3328 &feature_ijmpcall,3326 &feature_rmw,
3327 &feature_mul,
3328 &feature_eijmpcall,
3329 &feature_movw,3329 &feature_movw,
3330 &feature_spmx,3330 &feature_addsubiw,
3331 },3331 },
3332};3332};
33333333
3334pub const cpu_atxmega128b3 = Cpu{3334pub const cpu_atxmega128b3 = Cpu{
3335 .name = "atxmega128b3",3335 .name = "atxmega128b3",
3336 .llvm_name = "atxmega128b3",3336 .llvm_name = "atxmega128b3",
3337 .subfeatures = &[_]*const Feature {3337 .dependencies = &[_]*const Feature {
3338 &feature_rmw,
3339 &feature_lpmx,3338 &feature_lpmx,
3339 &feature_elpm,
3340 &feature_spm,3340 &feature_spm,
3341 &feature_addsubiw,
3342 &feature_jmpcall,
3343 &feature_lpm,3341 &feature_lpm,
3344 &feature_break,3342 &feature_ijmpcall,
3345 &feature_mul,
3346 &feature_elpm,
3347 &feature_eijmpcall,
3348 &feature_elpmx,3343 &feature_elpmx,
3349 &feature_sram,3344 &feature_sram,
3345 &feature_spmx,
3346 &feature_break,
3347 &feature_jmpcall,
3350 &feature_des,3348 &feature_des,
3351 &feature_ijmpcall,3349 &feature_rmw,
3350 &feature_mul,
3351 &feature_eijmpcall,
3352 &feature_movw,3352 &feature_movw,
3353 &feature_spmx,3353 &feature_addsubiw,
3354 },3354 },
3355};3355};
33563356
3357pub const cpu_atxmega128c3 = Cpu{3357pub const cpu_atxmega128c3 = Cpu{
3358 .name = "atxmega128c3",3358 .name = "atxmega128c3",
3359 .llvm_name = "atxmega128c3",3359 .llvm_name = "atxmega128c3",
3360 .subfeatures = &[_]*const Feature {3360 .dependencies = &[_]*const Feature {
3361 &feature_rmw,
3362 &feature_lpmx,3361 &feature_lpmx,
3362 &feature_elpm,
3363 &feature_spm,3363 &feature_spm,
3364 &feature_addsubiw,
3365 &feature_jmpcall,
3366 &feature_lpm,3364 &feature_lpm,
3367 &feature_break,3365 &feature_ijmpcall,
3368 &feature_mul,
3369 &feature_elpm,
3370 &feature_eijmpcall,
3371 &feature_elpmx,3366 &feature_elpmx,
3372 &feature_sram,3367 &feature_sram,
3368 &feature_spmx,
3369 &feature_break,
3370 &feature_jmpcall,
3373 &feature_des,3371 &feature_des,
3374 &feature_ijmpcall,3372 &feature_rmw,
3373 &feature_mul,
3374 &feature_eijmpcall,
3375 &feature_movw,3375 &feature_movw,
3376 &feature_spmx,3376 &feature_addsubiw,
3377 },3377 },
3378};3378};
33793379
3380pub const cpu_atxmega128d3 = Cpu{3380pub const cpu_atxmega128d3 = Cpu{
3381 .name = "atxmega128d3",3381 .name = "atxmega128d3",
3382 .llvm_name = "atxmega128d3",3382 .llvm_name = "atxmega128d3",
3383 .subfeatures = &[_]*const Feature {3383 .dependencies = &[_]*const Feature {
3384 &feature_lpmx,3384 &feature_lpmx,
3385 &feature_spm,3385 &feature_elpm,
3386 &feature_addsubiw,
3387 &feature_jmpcall,
3388 &feature_lpm,3386 &feature_lpm,
3387 &feature_spm,
3388 &feature_ijmpcall,
3389 &feature_movw,
3390 &feature_sram,
3391 &feature_spmx,
3389 &feature_break,3392 &feature_break,
3393 &feature_jmpcall,
3394 &feature_des,
3390 &feature_mul,3395 &feature_mul,
3391 &feature_elpm,
3392 &feature_eijmpcall,3396 &feature_eijmpcall,
3393 &feature_elpmx,3397 &feature_elpmx,
3394 &feature_sram,3398 &feature_addsubiw,
3395 &feature_des,
3396 &feature_ijmpcall,
3397 &feature_movw,
3398 &feature_spmx,
3399 },3399 },
3400};3400};
34013401
3402pub const cpu_atxmega128d4 = Cpu{3402pub const cpu_atxmega128d4 = Cpu{
3403 .name = "atxmega128d4",3403 .name = "atxmega128d4",
3404 .llvm_name = "atxmega128d4",3404 .llvm_name = "atxmega128d4",
3405 .subfeatures = &[_]*const Feature {3405 .dependencies = &[_]*const Feature {
3406 &feature_lpmx,3406 &feature_lpmx,
3407 &feature_spm,3407 &feature_elpm,
3408 &feature_addsubiw,
3409 &feature_jmpcall,
3410 &feature_lpm,3408 &feature_lpm,
3409 &feature_spm,
3410 &feature_ijmpcall,
3411 &feature_movw,
3412 &feature_sram,
3413 &feature_spmx,
3411 &feature_break,3414 &feature_break,
3415 &feature_jmpcall,
3416 &feature_des,
3412 &feature_mul,3417 &feature_mul,
3413 &feature_elpm,
3414 &feature_eijmpcall,3418 &feature_eijmpcall,
3415 &feature_elpmx,3419 &feature_elpmx,
3416 &feature_sram,3420 &feature_addsubiw,
3417 &feature_des,
3418 &feature_ijmpcall,
3419 &feature_movw,
3420 &feature_spmx,
3421 },3421 },
3422};3422};
34233423
3424pub const cpu_atxmega16a4 = Cpu{3424pub const cpu_atxmega16a4 = Cpu{
3425 .name = "atxmega16a4",3425 .name = "atxmega16a4",
3426 .llvm_name = "atxmega16a4",3426 .llvm_name = "atxmega16a4",
3427 .subfeatures = &[_]*const Feature {3427 .dependencies = &[_]*const Feature {
3428 &feature_lpmx,3428 &feature_lpmx,
3429 &feature_spm,3429 &feature_elpm,
3430 &feature_addsubiw,
3431 &feature_jmpcall,
3432 &feature_lpm,3430 &feature_lpm,
3431 &feature_spm,
3432 &feature_ijmpcall,
3433 &feature_movw,
3434 &feature_sram,
3435 &feature_spmx,
3433 &feature_break,3436 &feature_break,
3437 &feature_jmpcall,
3438 &feature_des,
3434 &feature_mul,3439 &feature_mul,
3435 &feature_elpm,
3436 &feature_eijmpcall,3440 &feature_eijmpcall,
3437 &feature_elpmx,3441 &feature_elpmx,
3438 &feature_sram,3442 &feature_addsubiw,
3439 &feature_des,
3440 &feature_ijmpcall,
3441 &feature_movw,
3442 &feature_spmx,
3443 },3443 },
3444};3444};
34453445
3446pub const cpu_atxmega16a4u = Cpu{3446pub const cpu_atxmega16a4u = Cpu{
3447 .name = "atxmega16a4u",3447 .name = "atxmega16a4u",
3448 .llvm_name = "atxmega16a4u",3448 .llvm_name = "atxmega16a4u",
3449 .subfeatures = &[_]*const Feature {3449 .dependencies = &[_]*const Feature {
3450 &feature_rmw,
3451 &feature_lpmx,3450 &feature_lpmx,
3451 &feature_elpm,
3452 &feature_spm,3452 &feature_spm,
3453 &feature_addsubiw,
3454 &feature_jmpcall,
3455 &feature_lpm,3453 &feature_lpm,
3456 &feature_break,3454 &feature_ijmpcall,
3457 &feature_mul,
3458 &feature_elpm,
3459 &feature_eijmpcall,
3460 &feature_elpmx,3455 &feature_elpmx,
3461 &feature_sram,3456 &feature_sram,
3457 &feature_spmx,
3458 &feature_break,
3459 &feature_jmpcall,
3462 &feature_des,3460 &feature_des,
3463 &feature_ijmpcall,3461 &feature_rmw,
3462 &feature_mul,
3463 &feature_eijmpcall,
3464 &feature_movw,3464 &feature_movw,
3465 &feature_spmx,3465 &feature_addsubiw,
3466 },3466 },
3467};3467};
34683468
3469pub const cpu_atxmega16c4 = Cpu{3469pub const cpu_atxmega16c4 = Cpu{
3470 .name = "atxmega16c4",3470 .name = "atxmega16c4",
3471 .llvm_name = "atxmega16c4",3471 .llvm_name = "atxmega16c4",
3472 .subfeatures = &[_]*const Feature {3472 .dependencies = &[_]*const Feature {
3473 &feature_rmw,
3474 &feature_lpmx,3473 &feature_lpmx,
3474 &feature_elpm,
3475 &feature_spm,3475 &feature_spm,
3476 &feature_addsubiw,
3477 &feature_jmpcall,
3478 &feature_lpm,3476 &feature_lpm,
3479 &feature_break,3477 &feature_ijmpcall,
3480 &feature_mul,
3481 &feature_elpm,
3482 &feature_eijmpcall,
3483 &feature_elpmx,3478 &feature_elpmx,
3484 &feature_sram,3479 &feature_sram,
3480 &feature_spmx,
3481 &feature_break,
3482 &feature_jmpcall,
3485 &feature_des,3483 &feature_des,
3486 &feature_ijmpcall,3484 &feature_rmw,
3485 &feature_mul,
3486 &feature_eijmpcall,
3487 &feature_movw,3487 &feature_movw,
3488 &feature_spmx,3488 &feature_addsubiw,
3489 },3489 },
3490};3490};
34913491
3492pub const cpu_atxmega16d4 = Cpu{3492pub const cpu_atxmega16d4 = Cpu{
3493 .name = "atxmega16d4",3493 .name = "atxmega16d4",
3494 .llvm_name = "atxmega16d4",3494 .llvm_name = "atxmega16d4",
3495 .subfeatures = &[_]*const Feature {3495 .dependencies = &[_]*const Feature {
3496 &feature_lpmx,3496 &feature_lpmx,
3497 &feature_spm,3497 &feature_elpm,
3498 &feature_addsubiw,
3499 &feature_jmpcall,
3500 &feature_lpm,3498 &feature_lpm,
3499 &feature_spm,
3500 &feature_ijmpcall,
3501 &feature_movw,
3502 &feature_sram,
3503 &feature_spmx,
3501 &feature_break,3504 &feature_break,
3505 &feature_jmpcall,
3506 &feature_des,
3502 &feature_mul,3507 &feature_mul,
3503 &feature_elpm,
3504 &feature_eijmpcall,3508 &feature_eijmpcall,
3505 &feature_elpmx,3509 &feature_elpmx,
3506 &feature_sram,3510 &feature_addsubiw,
3507 &feature_des,
3508 &feature_ijmpcall,
3509 &feature_movw,
3510 &feature_spmx,
3511 },3511 },
3512};3512};
35133513
3514pub const cpu_atxmega16e5 = Cpu{3514pub const cpu_atxmega16e5 = Cpu{
3515 .name = "atxmega16e5",3515 .name = "atxmega16e5",
3516 .llvm_name = "atxmega16e5",3516 .llvm_name = "atxmega16e5",
3517 .subfeatures = &[_]*const Feature {3517 .dependencies = &[_]*const Feature {
3518 &feature_lpmx,3518 &feature_lpmx,
3519 &feature_spm,3519 &feature_elpm,
3520 &feature_addsubiw,
3521 &feature_jmpcall,
3522 &feature_lpm,3520 &feature_lpm,
3521 &feature_spm,
3522 &feature_ijmpcall,
3523 &feature_movw,
3524 &feature_sram,
3525 &feature_spmx,
3523 &feature_break,3526 &feature_break,
3527 &feature_jmpcall,
3528 &feature_des,
3524 &feature_mul,3529 &feature_mul,
3525 &feature_elpm,
3526 &feature_eijmpcall,3530 &feature_eijmpcall,
3527 &feature_elpmx,3531 &feature_elpmx,
3528 &feature_sram,3532 &feature_addsubiw,
3529 &feature_des,
3530 &feature_ijmpcall,
3531 &feature_movw,
3532 &feature_spmx,
3533 },3533 },
3534};3534};
35353535
3536pub const cpu_atxmega192a3 = Cpu{3536pub const cpu_atxmega192a3 = Cpu{
3537 .name = "atxmega192a3",3537 .name = "atxmega192a3",
3538 .llvm_name = "atxmega192a3",3538 .llvm_name = "atxmega192a3",
3539 .subfeatures = &[_]*const Feature {3539 .dependencies = &[_]*const Feature {
3540 &feature_lpmx,3540 &feature_lpmx,
3541 &feature_spm,3541 &feature_elpm,
3542 &feature_addsubiw,
3543 &feature_jmpcall,
3544 &feature_lpm,3542 &feature_lpm,
3543 &feature_spm,
3544 &feature_ijmpcall,
3545 &feature_movw,
3546 &feature_sram,
3547 &feature_spmx,
3545 &feature_break,3548 &feature_break,
3549 &feature_jmpcall,
3550 &feature_des,
3546 &feature_mul,3551 &feature_mul,
3547 &feature_elpm,
3548 &feature_eijmpcall,3552 &feature_eijmpcall,
3549 &feature_elpmx,3553 &feature_elpmx,
3550 &feature_sram,3554 &feature_addsubiw,
3551 &feature_des,
3552 &feature_ijmpcall,
3553 &feature_movw,
3554 &feature_spmx,
3555 },3555 },
3556};3556};
35573557
3558pub const cpu_atxmega192a3u = Cpu{3558pub const cpu_atxmega192a3u = Cpu{
3559 .name = "atxmega192a3u",3559 .name = "atxmega192a3u",
3560 .llvm_name = "atxmega192a3u",3560 .llvm_name = "atxmega192a3u",
3561 .subfeatures = &[_]*const Feature {3561 .dependencies = &[_]*const Feature {
3562 &feature_rmw,
3563 &feature_lpmx,3562 &feature_lpmx,
3563 &feature_elpm,
3564 &feature_spm,3564 &feature_spm,
3565 &feature_addsubiw,
3566 &feature_jmpcall,
3567 &feature_lpm,3565 &feature_lpm,
3568 &feature_break,3566 &feature_ijmpcall,
3569 &feature_mul,
3570 &feature_elpm,
3571 &feature_eijmpcall,
3572 &feature_elpmx,3567 &feature_elpmx,
3573 &feature_sram,3568 &feature_sram,
3569 &feature_spmx,
3570 &feature_break,
3571 &feature_jmpcall,
3574 &feature_des,3572 &feature_des,
3575 &feature_ijmpcall,3573 &feature_rmw,
3574 &feature_mul,
3575 &feature_eijmpcall,
3576 &feature_movw,3576 &feature_movw,
3577 &feature_spmx,3577 &feature_addsubiw,
3578 },3578 },
3579};3579};
35803580
3581pub const cpu_atxmega192c3 = Cpu{3581pub const cpu_atxmega192c3 = Cpu{
3582 .name = "atxmega192c3",3582 .name = "atxmega192c3",
3583 .llvm_name = "atxmega192c3",3583 .llvm_name = "atxmega192c3",
3584 .subfeatures = &[_]*const Feature {3584 .dependencies = &[_]*const Feature {
3585 &feature_rmw,
3586 &feature_lpmx,3585 &feature_lpmx,
3586 &feature_elpm,
3587 &feature_spm,3587 &feature_spm,
3588 &feature_addsubiw,
3589 &feature_jmpcall,
3590 &feature_lpm,3588 &feature_lpm,
3591 &feature_break,3589 &feature_ijmpcall,
3592 &feature_mul,
3593 &feature_elpm,
3594 &feature_eijmpcall,
3595 &feature_elpmx,3590 &feature_elpmx,
3596 &feature_sram,3591 &feature_sram,
3592 &feature_spmx,
3593 &feature_break,
3594 &feature_jmpcall,
3597 &feature_des,3595 &feature_des,
3598 &feature_ijmpcall,3596 &feature_rmw,
3597 &feature_mul,
3598 &feature_eijmpcall,
3599 &feature_movw,3599 &feature_movw,
3600 &feature_spmx,3600 &feature_addsubiw,
3601 },3601 },
3602};3602};
36033603
3604pub const cpu_atxmega192d3 = Cpu{3604pub const cpu_atxmega192d3 = Cpu{
3605 .name = "atxmega192d3",3605 .name = "atxmega192d3",
3606 .llvm_name = "atxmega192d3",3606 .llvm_name = "atxmega192d3",
3607 .subfeatures = &[_]*const Feature {3607 .dependencies = &[_]*const Feature {
3608 &feature_lpmx,3608 &feature_lpmx,
3609 &feature_spm,3609 &feature_elpm,
3610 &feature_addsubiw,
3611 &feature_jmpcall,
3612 &feature_lpm,3610 &feature_lpm,
3611 &feature_spm,
3612 &feature_ijmpcall,
3613 &feature_movw,
3614 &feature_sram,
3615 &feature_spmx,
3613 &feature_break,3616 &feature_break,
3617 &feature_jmpcall,
3618 &feature_des,
3614 &feature_mul,3619 &feature_mul,
3615 &feature_elpm,
3616 &feature_eijmpcall,3620 &feature_eijmpcall,
3617 &feature_elpmx,3621 &feature_elpmx,
3618 &feature_sram,3622 &feature_addsubiw,
3619 &feature_des,
3620 &feature_ijmpcall,
3621 &feature_movw,
3622 &feature_spmx,
3623 },3623 },
3624};3624};
36253625
3626pub const cpu_atxmega256a3 = Cpu{3626pub const cpu_atxmega256a3 = Cpu{
3627 .name = "atxmega256a3",3627 .name = "atxmega256a3",
3628 .llvm_name = "atxmega256a3",3628 .llvm_name = "atxmega256a3",
3629 .subfeatures = &[_]*const Feature {3629 .dependencies = &[_]*const Feature {
3630 &feature_lpmx,3630 &feature_lpmx,
3631 &feature_spm,3631 &feature_elpm,
3632 &feature_addsubiw,
3633 &feature_jmpcall,
3634 &feature_lpm,3632 &feature_lpm,
3633 &feature_spm,
3634 &feature_ijmpcall,
3635 &feature_movw,
3636 &feature_sram,
3637 &feature_spmx,
3635 &feature_break,3638 &feature_break,
3639 &feature_jmpcall,
3640 &feature_des,
3636 &feature_mul,3641 &feature_mul,
3637 &feature_elpm,
3638 &feature_eijmpcall,3642 &feature_eijmpcall,
3639 &feature_elpmx,3643 &feature_elpmx,
3640 &feature_sram,3644 &feature_addsubiw,
3641 &feature_des,
3642 &feature_ijmpcall,
3643 &feature_movw,
3644 &feature_spmx,
3645 },3645 },
3646};3646};
36473647
3648pub const cpu_atxmega256a3b = Cpu{3648pub const cpu_atxmega256a3b = Cpu{
3649 .name = "atxmega256a3b",3649 .name = "atxmega256a3b",
3650 .llvm_name = "atxmega256a3b",3650 .llvm_name = "atxmega256a3b",
3651 .subfeatures = &[_]*const Feature {3651 .dependencies = &[_]*const Feature {
3652 &feature_lpmx,3652 &feature_lpmx,
3653 &feature_spm,3653 &feature_elpm,
3654 &feature_addsubiw,
3655 &feature_jmpcall,
3656 &feature_lpm,3654 &feature_lpm,
3655 &feature_spm,
3656 &feature_ijmpcall,
3657 &feature_movw,
3658 &feature_sram,
3659 &feature_spmx,
3657 &feature_break,3660 &feature_break,
3661 &feature_jmpcall,
3662 &feature_des,
3658 &feature_mul,3663 &feature_mul,
3659 &feature_elpm,
3660 &feature_eijmpcall,3664 &feature_eijmpcall,
3661 &feature_elpmx,3665 &feature_elpmx,
3662 &feature_sram,3666 &feature_addsubiw,
3663 &feature_des,
3664 &feature_ijmpcall,
3665 &feature_movw,
3666 &feature_spmx,
3667 },3667 },
3668};3668};
36693669
3670pub const cpu_atxmega256a3bu = Cpu{3670pub const cpu_atxmega256a3bu = Cpu{
3671 .name = "atxmega256a3bu",3671 .name = "atxmega256a3bu",
3672 .llvm_name = "atxmega256a3bu",3672 .llvm_name = "atxmega256a3bu",
3673 .subfeatures = &[_]*const Feature {3673 .dependencies = &[_]*const Feature {
3674 &feature_rmw,
3675 &feature_lpmx,3674 &feature_lpmx,
3675 &feature_elpm,
3676 &feature_spm,3676 &feature_spm,
3677 &feature_addsubiw,
3678 &feature_jmpcall,
3679 &feature_lpm,3677 &feature_lpm,
3680 &feature_break,3678 &feature_ijmpcall,
3681 &feature_mul,
3682 &feature_elpm,
3683 &feature_eijmpcall,
3684 &feature_elpmx,3679 &feature_elpmx,
3685 &feature_sram,3680 &feature_sram,
3681 &feature_spmx,
3682 &feature_break,
3683 &feature_jmpcall,
3686 &feature_des,3684 &feature_des,
3687 &feature_ijmpcall,3685 &feature_rmw,
3686 &feature_mul,
3687 &feature_eijmpcall,
3688 &feature_movw,3688 &feature_movw,
3689 &feature_spmx,3689 &feature_addsubiw,
3690 },3690 },
3691};3691};
36923692
3693pub const cpu_atxmega256a3u = Cpu{3693pub const cpu_atxmega256a3u = Cpu{
3694 .name = "atxmega256a3u",3694 .name = "atxmega256a3u",
3695 .llvm_name = "atxmega256a3u",3695 .llvm_name = "atxmega256a3u",
3696 .subfeatures = &[_]*const Feature {3696 .dependencies = &[_]*const Feature {
3697 &feature_rmw,
3698 &feature_lpmx,3697 &feature_lpmx,
3698 &feature_elpm,
3699 &feature_spm,3699 &feature_spm,
3700 &feature_addsubiw,
3701 &feature_jmpcall,
3702 &feature_lpm,3700 &feature_lpm,
3703 &feature_break,3701 &feature_ijmpcall,
3704 &feature_mul,
3705 &feature_elpm,
3706 &feature_eijmpcall,
3707 &feature_elpmx,3702 &feature_elpmx,
3708 &feature_sram,3703 &feature_sram,
3704 &feature_spmx,
3705 &feature_break,
3706 &feature_jmpcall,
3709 &feature_des,3707 &feature_des,
3710 &feature_ijmpcall,3708 &feature_rmw,
3709 &feature_mul,
3710 &feature_eijmpcall,
3711 &feature_movw,3711 &feature_movw,
3712 &feature_spmx,3712 &feature_addsubiw,
3713 },3713 },
3714};3714};
37153715
3716pub const cpu_atxmega256c3 = Cpu{3716pub const cpu_atxmega256c3 = Cpu{
3717 .name = "atxmega256c3",3717 .name = "atxmega256c3",
3718 .llvm_name = "atxmega256c3",3718 .llvm_name = "atxmega256c3",
3719 .subfeatures = &[_]*const Feature {3719 .dependencies = &[_]*const Feature {
3720 &feature_rmw,
3721 &feature_lpmx,3720 &feature_lpmx,
3721 &feature_elpm,
3722 &feature_spm,3722 &feature_spm,
3723 &feature_addsubiw,
3724 &feature_jmpcall,
3725 &feature_lpm,3723 &feature_lpm,
3726 &feature_break,3724 &feature_ijmpcall,
3727 &feature_mul,
3728 &feature_elpm,
3729 &feature_eijmpcall,
3730 &feature_elpmx,3725 &feature_elpmx,
3731 &feature_sram,3726 &feature_sram,
3727 &feature_spmx,
3728 &feature_break,
3729 &feature_jmpcall,
3732 &feature_des,3730 &feature_des,
3733 &feature_ijmpcall,3731 &feature_rmw,
3732 &feature_mul,
3733 &feature_eijmpcall,
3734 &feature_movw,3734 &feature_movw,
3735 &feature_spmx,3735 &feature_addsubiw,
3736 },3736 },
3737};3737};
37383738
3739pub const cpu_atxmega256d3 = Cpu{3739pub const cpu_atxmega256d3 = Cpu{
3740 .name = "atxmega256d3",3740 .name = "atxmega256d3",
3741 .llvm_name = "atxmega256d3",3741 .llvm_name = "atxmega256d3",
3742 .subfeatures = &[_]*const Feature {3742 .dependencies = &[_]*const Feature {
3743 &feature_lpmx,3743 &feature_lpmx,
3744 &feature_spm,3744 &feature_elpm,
3745 &feature_addsubiw,
3746 &feature_jmpcall,
3747 &feature_lpm,3745 &feature_lpm,
3746 &feature_spm,
3747 &feature_ijmpcall,
3748 &feature_movw,
3749 &feature_sram,
3750 &feature_spmx,
3748 &feature_break,3751 &feature_break,
3752 &feature_jmpcall,
3753 &feature_des,
3749 &feature_mul,3754 &feature_mul,
3750 &feature_elpm,
3751 &feature_eijmpcall,3755 &feature_eijmpcall,
3752 &feature_elpmx,3756 &feature_elpmx,
3753 &feature_sram,3757 &feature_addsubiw,
3754 &feature_des,
3755 &feature_ijmpcall,
3756 &feature_movw,
3757 &feature_spmx,
3758 },3758 },
3759};3759};
37603760
3761pub const cpu_atxmega32a4 = Cpu{3761pub const cpu_atxmega32a4 = Cpu{
3762 .name = "atxmega32a4",3762 .name = "atxmega32a4",
3763 .llvm_name = "atxmega32a4",3763 .llvm_name = "atxmega32a4",
3764 .subfeatures = &[_]*const Feature {3764 .dependencies = &[_]*const Feature {
3765 &feature_lpmx,3765 &feature_lpmx,
3766 &feature_spm,3766 &feature_elpm,
3767 &feature_addsubiw,
3768 &feature_jmpcall,
3769 &feature_lpm,3767 &feature_lpm,
3768 &feature_spm,
3769 &feature_ijmpcall,
3770 &feature_movw,
3771 &feature_sram,
3772 &feature_spmx,
3770 &feature_break,3773 &feature_break,
3774 &feature_jmpcall,
3775 &feature_des,
3771 &feature_mul,3776 &feature_mul,
3772 &feature_elpm,
3773 &feature_eijmpcall,3777 &feature_eijmpcall,
3774 &feature_elpmx,3778 &feature_elpmx,
3775 &feature_sram,3779 &feature_addsubiw,
3776 &feature_des,
3777 &feature_ijmpcall,
3778 &feature_movw,
3779 &feature_spmx,
3780 },3780 },
3781};3781};
37823782
3783pub const cpu_atxmega32a4u = Cpu{3783pub const cpu_atxmega32a4u = Cpu{
3784 .name = "atxmega32a4u",3784 .name = "atxmega32a4u",
3785 .llvm_name = "atxmega32a4u",3785 .llvm_name = "atxmega32a4u",
3786 .subfeatures = &[_]*const Feature {3786 .dependencies = &[_]*const Feature {
3787 &feature_rmw,
3788 &feature_lpmx,3787 &feature_lpmx,
3788 &feature_elpm,
3789 &feature_spm,3789 &feature_spm,
3790 &feature_addsubiw,
3791 &feature_jmpcall,
3792 &feature_lpm,3790 &feature_lpm,
3793 &feature_break,3791 &feature_ijmpcall,
3794 &feature_mul,
3795 &feature_elpm,
3796 &feature_eijmpcall,
3797 &feature_elpmx,3792 &feature_elpmx,
3798 &feature_sram,3793 &feature_sram,
3794 &feature_spmx,
3795 &feature_break,
3796 &feature_jmpcall,
3799 &feature_des,3797 &feature_des,
3800 &feature_ijmpcall,3798 &feature_rmw,
3799 &feature_mul,
3800 &feature_eijmpcall,
3801 &feature_movw,3801 &feature_movw,
3802 &feature_spmx,3802 &feature_addsubiw,
3803 },3803 },
3804};3804};
38053805
3806pub const cpu_atxmega32c4 = Cpu{3806pub const cpu_atxmega32c4 = Cpu{
3807 .name = "atxmega32c4",3807 .name = "atxmega32c4",
3808 .llvm_name = "atxmega32c4",3808 .llvm_name = "atxmega32c4",
3809 .subfeatures = &[_]*const Feature {3809 .dependencies = &[_]*const Feature {
3810 &feature_rmw,
3811 &feature_lpmx,3810 &feature_lpmx,
3811 &feature_elpm,
3812 &feature_spm,3812 &feature_spm,
3813 &feature_addsubiw,
3814 &feature_jmpcall,
3815 &feature_lpm,3813 &feature_lpm,
3816 &feature_break,3814 &feature_ijmpcall,
3817 &feature_mul,
3818 &feature_elpm,
3819 &feature_eijmpcall,
3820 &feature_elpmx,3815 &feature_elpmx,
3821 &feature_sram,3816 &feature_sram,
3817 &feature_spmx,
3818 &feature_break,
3819 &feature_jmpcall,
3822 &feature_des,3820 &feature_des,
3823 &feature_ijmpcall,3821 &feature_rmw,
3822 &feature_mul,
3823 &feature_eijmpcall,
3824 &feature_movw,3824 &feature_movw,
3825 &feature_spmx,3825 &feature_addsubiw,
3826 },3826 },
3827};3827};
38283828
3829pub const cpu_atxmega32d4 = Cpu{3829pub const cpu_atxmega32d4 = Cpu{
3830 .name = "atxmega32d4",3830 .name = "atxmega32d4",
3831 .llvm_name = "atxmega32d4",3831 .llvm_name = "atxmega32d4",
3832 .subfeatures = &[_]*const Feature {3832 .dependencies = &[_]*const Feature {
3833 &feature_lpmx,3833 &feature_lpmx,
3834 &feature_spm,3834 &feature_elpm,
3835 &feature_addsubiw,
3836 &feature_jmpcall,
3837 &feature_lpm,3835 &feature_lpm,
3836 &feature_spm,
3837 &feature_ijmpcall,
3838 &feature_movw,
3839 &feature_sram,
3840 &feature_spmx,
3838 &feature_break,3841 &feature_break,
3842 &feature_jmpcall,
3843 &feature_des,
3839 &feature_mul,3844 &feature_mul,
3840 &feature_elpm,
3841 &feature_eijmpcall,3845 &feature_eijmpcall,
3842 &feature_elpmx,3846 &feature_elpmx,
3843 &feature_sram,3847 &feature_addsubiw,
3844 &feature_des,
3845 &feature_ijmpcall,
3846 &feature_movw,
3847 &feature_spmx,
3848 },3848 },
3849};3849};
38503850
3851pub const cpu_atxmega32e5 = Cpu{3851pub const cpu_atxmega32e5 = Cpu{
3852 .name = "atxmega32e5",3852 .name = "atxmega32e5",
3853 .llvm_name = "atxmega32e5",3853 .llvm_name = "atxmega32e5",
3854 .subfeatures = &[_]*const Feature {3854 .dependencies = &[_]*const Feature {
3855 &feature_lpmx,3855 &feature_lpmx,
3856 &feature_spm,3856 &feature_elpm,
3857 &feature_addsubiw,
3858 &feature_jmpcall,
3859 &feature_lpm,3857 &feature_lpm,
3858 &feature_spm,
3859 &feature_ijmpcall,
3860 &feature_movw,
3861 &feature_sram,
3862 &feature_spmx,
3860 &feature_break,3863 &feature_break,
3864 &feature_jmpcall,
3865 &feature_des,
3861 &feature_mul,3866 &feature_mul,
3862 &feature_elpm,
3863 &feature_eijmpcall,3867 &feature_eijmpcall,
3864 &feature_elpmx,3868 &feature_elpmx,
3865 &feature_sram,3869 &feature_addsubiw,
3866 &feature_des,
3867 &feature_ijmpcall,
3868 &feature_movw,
3869 &feature_spmx,
3870 },3870 },
3871};3871};
38723872
3873pub const cpu_atxmega32x1 = Cpu{3873pub const cpu_atxmega32x1 = Cpu{
3874 .name = "atxmega32x1",3874 .name = "atxmega32x1",
3875 .llvm_name = "atxmega32x1",3875 .llvm_name = "atxmega32x1",
3876 .subfeatures = &[_]*const Feature {3876 .dependencies = &[_]*const Feature {
3877 &feature_lpmx,3877 &feature_lpmx,
3878 &feature_spm,3878 &feature_elpm,
3879 &feature_addsubiw,
3880 &feature_jmpcall,
3881 &feature_lpm,3879 &feature_lpm,
3880 &feature_spm,
3881 &feature_ijmpcall,
3882 &feature_movw,
3883 &feature_sram,
3884 &feature_spmx,
3882 &feature_break,3885 &feature_break,
3886 &feature_jmpcall,
3887 &feature_des,
3883 &feature_mul,3888 &feature_mul,
3884 &feature_elpm,
3885 &feature_eijmpcall,3889 &feature_eijmpcall,
3886 &feature_elpmx,3890 &feature_elpmx,
3887 &feature_sram,3891 &feature_addsubiw,
3888 &feature_des,
3889 &feature_ijmpcall,
3890 &feature_movw,
3891 &feature_spmx,
3892 },3892 },
3893};3893};
38943894
3895pub const cpu_atxmega384c3 = Cpu{3895pub const cpu_atxmega384c3 = Cpu{
3896 .name = "atxmega384c3",3896 .name = "atxmega384c3",
3897 .llvm_name = "atxmega384c3",3897 .llvm_name = "atxmega384c3",
3898 .subfeatures = &[_]*const Feature {3898 .dependencies = &[_]*const Feature {
3899 &feature_rmw,
3900 &feature_lpmx,3899 &feature_lpmx,
3900 &feature_elpm,
3901 &feature_spm,3901 &feature_spm,
3902 &feature_addsubiw,
3903 &feature_jmpcall,
3904 &feature_lpm,3902 &feature_lpm,
3905 &feature_break,3903 &feature_ijmpcall,
3906 &feature_mul,
3907 &feature_elpm,
3908 &feature_eijmpcall,
3909 &feature_elpmx,3904 &feature_elpmx,
3910 &feature_sram,3905 &feature_sram,
3906 &feature_spmx,
3907 &feature_break,
3908 &feature_jmpcall,
3911 &feature_des,3909 &feature_des,
3912 &feature_ijmpcall,3910 &feature_rmw,
3911 &feature_mul,
3912 &feature_eijmpcall,
3913 &feature_movw,3913 &feature_movw,
3914 &feature_spmx,3914 &feature_addsubiw,
3915 },3915 },
3916};3916};
39173917
3918pub const cpu_atxmega384d3 = Cpu{3918pub const cpu_atxmega384d3 = Cpu{
3919 .name = "atxmega384d3",3919 .name = "atxmega384d3",
3920 .llvm_name = "atxmega384d3",3920 .llvm_name = "atxmega384d3",
3921 .subfeatures = &[_]*const Feature {3921 .dependencies = &[_]*const Feature {
3922 &feature_lpmx,3922 &feature_lpmx,
3923 &feature_spm,3923 &feature_elpm,
3924 &feature_addsubiw,
3925 &feature_jmpcall,
3926 &feature_lpm,3924 &feature_lpm,
3925 &feature_spm,
3926 &feature_ijmpcall,
3927 &feature_movw,
3928 &feature_sram,
3929 &feature_spmx,
3927 &feature_break,3930 &feature_break,
3931 &feature_jmpcall,
3932 &feature_des,
3928 &feature_mul,3933 &feature_mul,
3929 &feature_elpm,
3930 &feature_eijmpcall,3934 &feature_eijmpcall,
3931 &feature_elpmx,3935 &feature_elpmx,
3932 &feature_sram,3936 &feature_addsubiw,
3933 &feature_des,
3934 &feature_ijmpcall,
3935 &feature_movw,
3936 &feature_spmx,
3937 },3937 },
3938};3938};
39393939
3940pub const cpu_atxmega64a1 = Cpu{3940pub const cpu_atxmega64a1 = Cpu{
3941 .name = "atxmega64a1",3941 .name = "atxmega64a1",
3942 .llvm_name = "atxmega64a1",3942 .llvm_name = "atxmega64a1",
3943 .subfeatures = &[_]*const Feature {3943 .dependencies = &[_]*const Feature {
3944 &feature_lpmx,3944 &feature_lpmx,
3945 &feature_spm,3945 &feature_elpm,
3946 &feature_addsubiw,
3947 &feature_jmpcall,
3948 &feature_lpm,3946 &feature_lpm,
3947 &feature_spm,
3948 &feature_ijmpcall,
3949 &feature_movw,
3950 &feature_sram,
3951 &feature_spmx,
3949 &feature_break,3952 &feature_break,
3953 &feature_jmpcall,
3954 &feature_des,
3950 &feature_mul,3955 &feature_mul,
3951 &feature_elpm,
3952 &feature_eijmpcall,3956 &feature_eijmpcall,
3953 &feature_elpmx,3957 &feature_elpmx,
3954 &feature_sram,3958 &feature_addsubiw,
3955 &feature_des,
3956 &feature_ijmpcall,
3957 &feature_movw,
3958 &feature_spmx,
3959 },3959 },
3960};3960};
39613961
3962pub const cpu_atxmega64a1u = Cpu{3962pub const cpu_atxmega64a1u = Cpu{
3963 .name = "atxmega64a1u",3963 .name = "atxmega64a1u",
3964 .llvm_name = "atxmega64a1u",3964 .llvm_name = "atxmega64a1u",
3965 .subfeatures = &[_]*const Feature {3965 .dependencies = &[_]*const Feature {
3966 &feature_rmw,
3967 &feature_lpmx,3966 &feature_lpmx,
3967 &feature_elpm,
3968 &feature_spm,3968 &feature_spm,
3969 &feature_addsubiw,
3970 &feature_jmpcall,
3971 &feature_lpm,3969 &feature_lpm,
3972 &feature_break,3970 &feature_ijmpcall,
3973 &feature_mul,
3974 &feature_elpm,
3975 &feature_eijmpcall,
3976 &feature_elpmx,3971 &feature_elpmx,
3977 &feature_sram,3972 &feature_sram,
3973 &feature_spmx,
3974 &feature_break,
3975 &feature_jmpcall,
3978 &feature_des,3976 &feature_des,
3979 &feature_ijmpcall,3977 &feature_rmw,
3978 &feature_mul,
3979 &feature_eijmpcall,
3980 &feature_movw,3980 &feature_movw,
3981 &feature_spmx,3981 &feature_addsubiw,
3982 },3982 },
3983};3983};
39843984
3985pub const cpu_atxmega64a3 = Cpu{3985pub const cpu_atxmega64a3 = Cpu{
3986 .name = "atxmega64a3",3986 .name = "atxmega64a3",
3987 .llvm_name = "atxmega64a3",3987 .llvm_name = "atxmega64a3",
3988 .subfeatures = &[_]*const Feature {3988 .dependencies = &[_]*const Feature {
3989 &feature_lpmx,3989 &feature_lpmx,
3990 &feature_spm,3990 &feature_elpm,
3991 &feature_addsubiw,
3992 &feature_jmpcall,
3993 &feature_lpm,3991 &feature_lpm,
3992 &feature_spm,
3993 &feature_ijmpcall,
3994 &feature_movw,
3995 &feature_sram,
3996 &feature_spmx,
3994 &feature_break,3997 &feature_break,
3998 &feature_jmpcall,
3999 &feature_des,
3995 &feature_mul,4000 &feature_mul,
3996 &feature_elpm,
3997 &feature_eijmpcall,4001 &feature_eijmpcall,
3998 &feature_elpmx,4002 &feature_elpmx,
3999 &feature_sram,4003 &feature_addsubiw,
4000 &feature_des,
4001 &feature_ijmpcall,
4002 &feature_movw,
4003 &feature_spmx,
4004 },4004 },
4005};4005};
40064006
4007pub const cpu_atxmega64a3u = Cpu{4007pub const cpu_atxmega64a3u = Cpu{
4008 .name = "atxmega64a3u",4008 .name = "atxmega64a3u",
4009 .llvm_name = "atxmega64a3u",4009 .llvm_name = "atxmega64a3u",
4010 .subfeatures = &[_]*const Feature {4010 .dependencies = &[_]*const Feature {
4011 &feature_rmw,
4012 &feature_lpmx,4011 &feature_lpmx,
4012 &feature_elpm,
4013 &feature_spm,4013 &feature_spm,
4014 &feature_addsubiw,
4015 &feature_jmpcall,
4016 &feature_lpm,4014 &feature_lpm,
4017 &feature_break,4015 &feature_ijmpcall,
4018 &feature_mul,
4019 &feature_elpm,
4020 &feature_eijmpcall,
4021 &feature_elpmx,4016 &feature_elpmx,
4022 &feature_sram,4017 &feature_sram,
4018 &feature_spmx,
4019 &feature_break,
4020 &feature_jmpcall,
4023 &feature_des,4021 &feature_des,
4024 &feature_ijmpcall,4022 &feature_rmw,
4023 &feature_mul,
4024 &feature_eijmpcall,
4025 &feature_movw,4025 &feature_movw,
4026 &feature_spmx,4026 &feature_addsubiw,
4027 },4027 },
4028};4028};
40294029
4030pub const cpu_atxmega64a4u = Cpu{4030pub const cpu_atxmega64a4u = Cpu{
4031 .name = "atxmega64a4u",4031 .name = "atxmega64a4u",
4032 .llvm_name = "atxmega64a4u",4032 .llvm_name = "atxmega64a4u",
4033 .subfeatures = &[_]*const Feature {4033 .dependencies = &[_]*const Feature {
4034 &feature_rmw,
4035 &feature_lpmx,4034 &feature_lpmx,
4035 &feature_elpm,
4036 &feature_spm,4036 &feature_spm,
4037 &feature_addsubiw,
4038 &feature_jmpcall,
4039 &feature_lpm,4037 &feature_lpm,
4040 &feature_break,4038 &feature_ijmpcall,
4041 &feature_mul,
4042 &feature_elpm,
4043 &feature_eijmpcall,
4044 &feature_elpmx,4039 &feature_elpmx,
4045 &feature_sram,4040 &feature_sram,
4041 &feature_spmx,
4042 &feature_break,
4043 &feature_jmpcall,
4046 &feature_des,4044 &feature_des,
4047 &feature_ijmpcall,4045 &feature_rmw,
4046 &feature_mul,
4047 &feature_eijmpcall,
4048 &feature_movw,4048 &feature_movw,
4049 &feature_spmx,4049 &feature_addsubiw,
4050 },4050 },
4051};4051};
40524052
4053pub const cpu_atxmega64b1 = Cpu{4053pub const cpu_atxmega64b1 = Cpu{
4054 .name = "atxmega64b1",4054 .name = "atxmega64b1",
4055 .llvm_name = "atxmega64b1",4055 .llvm_name = "atxmega64b1",
4056 .subfeatures = &[_]*const Feature {4056 .dependencies = &[_]*const Feature {
4057 &feature_rmw,
4058 &feature_lpmx,4057 &feature_lpmx,
4058 &feature_elpm,
4059 &feature_spm,4059 &feature_spm,
4060 &feature_addsubiw,
4061 &feature_jmpcall,
4062 &feature_lpm,4060 &feature_lpm,
4063 &feature_break,4061 &feature_ijmpcall,
4064 &feature_mul,
4065 &feature_elpm,
4066 &feature_eijmpcall,
4067 &feature_elpmx,4062 &feature_elpmx,
4068 &feature_sram,4063 &feature_sram,
4064 &feature_spmx,
4065 &feature_break,
4066 &feature_jmpcall,
4069 &feature_des,4067 &feature_des,
4070 &feature_ijmpcall,4068 &feature_rmw,
4069 &feature_mul,
4070 &feature_eijmpcall,
4071 &feature_movw,4071 &feature_movw,
4072 &feature_spmx,4072 &feature_addsubiw,
4073 },4073 },
4074};4074};
40754075
4076pub const cpu_atxmega64b3 = Cpu{4076pub const cpu_atxmega64b3 = Cpu{
4077 .name = "atxmega64b3",4077 .name = "atxmega64b3",
4078 .llvm_name = "atxmega64b3",4078 .llvm_name = "atxmega64b3",
4079 .subfeatures = &[_]*const Feature {4079 .dependencies = &[_]*const Feature {
4080 &feature_rmw,
4081 &feature_lpmx,4080 &feature_lpmx,
4081 &feature_elpm,
4082 &feature_spm,4082 &feature_spm,
4083 &feature_addsubiw,
4084 &feature_jmpcall,
4085 &feature_lpm,4083 &feature_lpm,
4086 &feature_break,4084 &feature_ijmpcall,
4087 &feature_mul,
4088 &feature_elpm,
4089 &feature_eijmpcall,
4090 &feature_elpmx,4085 &feature_elpmx,
4091 &feature_sram,4086 &feature_sram,
4087 &feature_spmx,
4088 &feature_break,
4089 &feature_jmpcall,
4092 &feature_des,4090 &feature_des,
4093 &feature_ijmpcall,4091 &feature_rmw,
4092 &feature_mul,
4093 &feature_eijmpcall,
4094 &feature_movw,4094 &feature_movw,
4095 &feature_spmx,4095 &feature_addsubiw,
4096 },4096 },
4097};4097};
40984098
4099pub const cpu_atxmega64c3 = Cpu{4099pub const cpu_atxmega64c3 = Cpu{
4100 .name = "atxmega64c3",4100 .name = "atxmega64c3",
4101 .llvm_name = "atxmega64c3",4101 .llvm_name = "atxmega64c3",
4102 .subfeatures = &[_]*const Feature {4102 .dependencies = &[_]*const Feature {
4103 &feature_rmw,
4104 &feature_lpmx,4103 &feature_lpmx,
4104 &feature_elpm,
4105 &feature_spm,4105 &feature_spm,
4106 &feature_addsubiw,
4107 &feature_jmpcall,
4108 &feature_lpm,4106 &feature_lpm,
4109 &feature_break,4107 &feature_ijmpcall,
4110 &feature_mul,
4111 &feature_elpm,
4112 &feature_eijmpcall,
4113 &feature_elpmx,4108 &feature_elpmx,
4114 &feature_sram,4109 &feature_sram,
4110 &feature_spmx,
4111 &feature_break,
4112 &feature_jmpcall,
4115 &feature_des,4113 &feature_des,
4116 &feature_ijmpcall,4114 &feature_rmw,
4115 &feature_mul,
4116 &feature_eijmpcall,
4117 &feature_movw,4117 &feature_movw,
4118 &feature_spmx,4118 &feature_addsubiw,
4119 },4119 },
4120};4120};
41214121
4122pub const cpu_atxmega64d3 = Cpu{4122pub const cpu_atxmega64d3 = Cpu{
4123 .name = "atxmega64d3",4123 .name = "atxmega64d3",
4124 .llvm_name = "atxmega64d3",4124 .llvm_name = "atxmega64d3",
4125 .subfeatures = &[_]*const Feature {4125 .dependencies = &[_]*const Feature {
4126 &feature_lpmx,4126 &feature_lpmx,
4127 &feature_spm,
4128 &feature_addsubiw,
4129 &feature_jmpcall,
4130 &feature_lpm,
4131 &feature_break,
4132 &feature_mul,
4133 &feature_elpm,4127 &feature_elpm,
4134 &feature_eijmpcall,4128 &feature_lpm,
4135 &feature_elpmx,4129 &feature_spm,
4136 &feature_sram,
4137 &feature_des,
4138 &feature_ijmpcall,4130 &feature_ijmpcall,
4139 &feature_movw,4131 &feature_movw,
4132 &feature_sram,
4140 &feature_spmx,4133 &feature_spmx,
4134 &feature_break,
4135 &feature_jmpcall,
4136 &feature_des,
4137 &feature_mul,
4138 &feature_eijmpcall,
4139 &feature_elpmx,
4140 &feature_addsubiw,
4141 },4141 },
4142};4142};
41434143
4144pub const cpu_atxmega64d4 = Cpu{4144pub const cpu_atxmega64d4 = Cpu{
4145 .name = "atxmega64d4",4145 .name = "atxmega64d4",
4146 .llvm_name = "atxmega64d4",4146 .llvm_name = "atxmega64d4",
4147 .subfeatures = &[_]*const Feature {4147 .dependencies = &[_]*const Feature {
4148 &feature_lpmx,4148 &feature_lpmx,
4149 &feature_spm,4149 &feature_elpm,
4150 &feature_addsubiw,
4151 &feature_jmpcall,
4152 &feature_lpm,4150 &feature_lpm,
4151 &feature_spm,
4152 &feature_ijmpcall,
4153 &feature_movw,
4154 &feature_sram,
4155 &feature_spmx,
4153 &feature_break,4156 &feature_break,
4157 &feature_jmpcall,
4158 &feature_des,
4154 &feature_mul,4159 &feature_mul,
4155 &feature_elpm,
4156 &feature_eijmpcall,4160 &feature_eijmpcall,
4157 &feature_elpmx,4161 &feature_elpmx,
4158 &feature_sram,4162 &feature_addsubiw,
4159 &feature_des,
4160 &feature_ijmpcall,
4161 &feature_movw,
4162 &feature_spmx,
4163 },4163 },
4164};4164};
41654165
4166pub const cpu_atxmega8e5 = Cpu{4166pub const cpu_atxmega8e5 = Cpu{
4167 .name = "atxmega8e5",4167 .name = "atxmega8e5",
4168 .llvm_name = "atxmega8e5",4168 .llvm_name = "atxmega8e5",
4169 .subfeatures = &[_]*const Feature {4169 .dependencies = &[_]*const Feature {
4170 &feature_lpmx,4170 &feature_lpmx,
4171 &feature_spm,4171 &feature_elpm,
4172 &feature_addsubiw,
4173 &feature_jmpcall,
4174 &feature_lpm,4172 &feature_lpm,
4173 &feature_spm,
4174 &feature_ijmpcall,
4175 &feature_movw,
4176 &feature_sram,
4177 &feature_spmx,
4175 &feature_break,4178 &feature_break,
4179 &feature_jmpcall,
4180 &feature_des,
4176 &feature_mul,4181 &feature_mul,
4177 &feature_elpm,
4178 &feature_eijmpcall,4182 &feature_eijmpcall,
4179 &feature_elpmx,4183 &feature_elpmx,
4180 &feature_sram,4184 &feature_addsubiw,
4181 &feature_des,
4182 &feature_ijmpcall,
4183 &feature_movw,
4184 &feature_spmx,
4185 },4185 },
4186};4186};
41874187
4188pub const cpu_avr1 = Cpu{4188pub const cpu_avr1 = Cpu{
4189 .name = "avr1",4189 .name = "avr1",
4190 .llvm_name = "avr1",4190 .llvm_name = "avr1",
4191 .subfeatures = &[_]*const Feature {4191 .dependencies = &[_]*const Feature {
4192 &feature_lpm,4192 &feature_lpm,
4193 },4193 },
4194};4194};
...@@ -4196,319 +4196,319 @@ pub const cpu_avr1 = Cpu{...@@ -4196,319 +4196,319 @@ pub const cpu_avr1 = Cpu{
4196pub const cpu_avr2 = Cpu{4196pub const cpu_avr2 = Cpu{
4197 .name = "avr2",4197 .name = "avr2",
4198 .llvm_name = "avr2",4198 .llvm_name = "avr2",
4199 .subfeatures = &[_]*const Feature {4199 .dependencies = &[_]*const Feature {
4200 &feature_addsubiw,
4201 &feature_lpm,4200 &feature_lpm,
4202 &feature_sram,
4203 &feature_ijmpcall,4201 &feature_ijmpcall,
4202 &feature_sram,
4203 &feature_addsubiw,
4204 },4204 },
4205};4205};
42064206
4207pub const cpu_avr25 = Cpu{4207pub const cpu_avr25 = Cpu{
4208 .name = "avr25",4208 .name = "avr25",
4209 .llvm_name = "avr25",4209 .llvm_name = "avr25",
4210 .subfeatures = &[_]*const Feature {4210 .dependencies = &[_]*const Feature {
4211 &feature_lpmx,4211 &feature_lpmx,
4212 &feature_spm,
4213 &feature_addsubiw,
4214 &feature_break,
4215 &feature_lpm,4212 &feature_lpm,
4216 &feature_sram,4213 &feature_spm,
4217 &feature_ijmpcall,4214 &feature_ijmpcall,
4215 &feature_sram,
4216 &feature_break,
4218 &feature_movw,4217 &feature_movw,
4218 &feature_addsubiw,
4219 },4219 },
4220};4220};
42214221
4222pub const cpu_avr3 = Cpu{4222pub const cpu_avr3 = Cpu{
4223 .name = "avr3",4223 .name = "avr3",
4224 .llvm_name = "avr3",4224 .llvm_name = "avr3",
4225 .subfeatures = &[_]*const Feature {4225 .dependencies = &[_]*const Feature {
4226 &feature_addsubiw,
4227 &feature_jmpcall,
4228 &feature_lpm,4226 &feature_lpm,
4229 &feature_sram,
4230 &feature_ijmpcall,4227 &feature_ijmpcall,
4228 &feature_sram,
4229 &feature_jmpcall,
4230 &feature_addsubiw,
4231 },4231 },
4232};4232};
42334233
4234pub const cpu_avr31 = Cpu{4234pub const cpu_avr31 = Cpu{
4235 .name = "avr31",4235 .name = "avr31",
4236 .llvm_name = "avr31",4236 .llvm_name = "avr31",
4237 .subfeatures = &[_]*const Feature {4237 .dependencies = &[_]*const Feature {
4238 &feature_addsubiw,
4239 &feature_jmpcall,
4240 &feature_lpm,
4241 &feature_elpm,4238 &feature_elpm,
4242 &feature_sram,4239 &feature_lpm,
4243 &feature_ijmpcall,4240 &feature_ijmpcall,
4241 &feature_sram,
4242 &feature_jmpcall,
4243 &feature_addsubiw,
4244 },4244 },
4245};4245};
42464246
4247pub const cpu_avr35 = Cpu{4247pub const cpu_avr35 = Cpu{
4248 .name = "avr35",4248 .name = "avr35",
4249 .llvm_name = "avr35",4249 .llvm_name = "avr35",
4250 .subfeatures = &[_]*const Feature {4250 .dependencies = &[_]*const Feature {
4251 &feature_lpmx,4251 &feature_lpmx,
4252 &feature_spm,
4253 &feature_addsubiw,
4254 &feature_jmpcall,
4255 &feature_lpm,4252 &feature_lpm,
4256 &feature_break,4253 &feature_spm,
4257 &feature_sram,
4258 &feature_ijmpcall,4254 &feature_ijmpcall,
4255 &feature_sram,
4256 &feature_break,
4257 &feature_jmpcall,
4259 &feature_movw,4258 &feature_movw,
4259 &feature_addsubiw,
4260 },4260 },
4261};4261};
42624262
4263pub const cpu_avr4 = Cpu{4263pub const cpu_avr4 = Cpu{
4264 .name = "avr4",4264 .name = "avr4",
4265 .llvm_name = "avr4",4265 .llvm_name = "avr4",
4266 .subfeatures = &[_]*const Feature {4266 .dependencies = &[_]*const Feature {
4267 &feature_lpmx,4267 &feature_lpmx,
4268 &feature_lpm,
4268 &feature_spm,4269 &feature_spm,
4269 &feature_addsubiw,4270 &feature_ijmpcall,
4271 &feature_sram,
4270 &feature_break,4272 &feature_break,
4271 &feature_lpm,
4272 &feature_mul,4273 &feature_mul,
4273 &feature_sram,
4274 &feature_ijmpcall,
4275 &feature_movw,4274 &feature_movw,
4275 &feature_addsubiw,
4276 },4276 },
4277};4277};
42784278
4279pub const cpu_avr5 = Cpu{4279pub const cpu_avr5 = Cpu{
4280 .name = "avr5",4280 .name = "avr5",
4281 .llvm_name = "avr5",4281 .llvm_name = "avr5",
4282 .subfeatures = &[_]*const Feature {4282 .dependencies = &[_]*const Feature {
4283 &feature_lpmx,4283 &feature_lpmx,
4284 &feature_spm,
4285 &feature_addsubiw,
4286 &feature_jmpcall,
4287 &feature_lpm,4284 &feature_lpm,
4285 &feature_spm,
4286 &feature_ijmpcall,
4287 &feature_sram,
4288 &feature_break,4288 &feature_break,
4289 &feature_jmpcall,
4289 &feature_mul,4290 &feature_mul,
4290 &feature_sram,
4291 &feature_ijmpcall,
4292 &feature_movw,4291 &feature_movw,
4292 &feature_addsubiw,
4293 },4293 },
4294};4294};
42954295
4296pub const cpu_avr51 = Cpu{4296pub const cpu_avr51 = Cpu{
4297 .name = "avr51",4297 .name = "avr51",
4298 .llvm_name = "avr51",4298 .llvm_name = "avr51",
4299 .subfeatures = &[_]*const Feature {4299 .dependencies = &[_]*const Feature {
4300 &feature_lpmx,4300 &feature_lpmx,
4301 &feature_elpm,
4301 &feature_spm,4302 &feature_spm,
4302 &feature_addsubiw,
4303 &feature_jmpcall,
4304 &feature_lpm,4303 &feature_lpm,
4305 &feature_break,4304 &feature_ijmpcall,
4306 &feature_mul,
4307 &feature_elpm,
4308 &feature_elpmx,4305 &feature_elpmx,
4309 &feature_sram,4306 &feature_sram,
4310 &feature_ijmpcall,4307 &feature_break,
4308 &feature_jmpcall,
4309 &feature_mul,
4311 &feature_movw,4310 &feature_movw,
4311 &feature_addsubiw,
4312 },4312 },
4313};4313};
43144314
4315pub const cpu_avr6 = Cpu{4315pub const cpu_avr6 = Cpu{
4316 .name = "avr6",4316 .name = "avr6",
4317 .llvm_name = "avr6",4317 .llvm_name = "avr6",
4318 .subfeatures = &[_]*const Feature {4318 .dependencies = &[_]*const Feature {
4319 &feature_lpmx,4319 &feature_lpmx,
4320 &feature_spm,4320 &feature_elpm,
4321 &feature_addsubiw,
4322 &feature_jmpcall,
4323 &feature_lpm,4321 &feature_lpm,
4322 &feature_spm,
4323 &feature_ijmpcall,
4324 &feature_movw,
4325 &feature_sram,
4324 &feature_break,4326 &feature_break,
4327 &feature_jmpcall,
4325 &feature_mul,4328 &feature_mul,
4326 &feature_elpm,
4327 &feature_elpmx,4329 &feature_elpmx,
4328 &feature_sram,4330 &feature_addsubiw,
4329 &feature_ijmpcall,
4330 &feature_movw,
4331 },4331 },
4332};4332};
43334333
4334pub const cpu_avrtiny = Cpu{4334pub const cpu_avrtiny = Cpu{
4335 .name = "avrtiny",4335 .name = "avrtiny",
4336 .llvm_name = "avrtiny",4336 .llvm_name = "avrtiny",
4337 .subfeatures = &[_]*const Feature {4337 .dependencies = &[_]*const Feature {
4338 &feature_break,4338 &feature_break,
4339 &feature_sram,
4340 &feature_tinyencoding,4339 &feature_tinyencoding,
4340 &feature_sram,
4341 },4341 },
4342};4342};
43434343
4344pub const cpu_avrxmega1 = Cpu{4344pub const cpu_avrxmega1 = Cpu{
4345 .name = "avrxmega1",4345 .name = "avrxmega1",
4346 .llvm_name = "avrxmega1",4346 .llvm_name = "avrxmega1",
4347 .subfeatures = &[_]*const Feature {4347 .dependencies = &[_]*const Feature {
4348 &feature_lpmx,4348 &feature_lpmx,
4349 &feature_spm,4349 &feature_elpm,
4350 &feature_addsubiw,
4351 &feature_jmpcall,
4352 &feature_lpm,4350 &feature_lpm,
4351 &feature_spm,
4352 &feature_ijmpcall,
4353 &feature_movw,
4354 &feature_sram,
4355 &feature_spmx,
4353 &feature_break,4356 &feature_break,
4357 &feature_jmpcall,
4358 &feature_des,
4354 &feature_mul,4359 &feature_mul,
4355 &feature_elpm,
4356 &feature_eijmpcall,4360 &feature_eijmpcall,
4357 &feature_elpmx,4361 &feature_elpmx,
4358 &feature_sram,4362 &feature_addsubiw,
4359 &feature_des,
4360 &feature_ijmpcall,
4361 &feature_movw,
4362 &feature_spmx,
4363 },4363 },
4364};4364};
43654365
4366pub const cpu_avrxmega2 = Cpu{4366pub const cpu_avrxmega2 = Cpu{
4367 .name = "avrxmega2",4367 .name = "avrxmega2",
4368 .llvm_name = "avrxmega2",4368 .llvm_name = "avrxmega2",
4369 .subfeatures = &[_]*const Feature {4369 .dependencies = &[_]*const Feature {
4370 &feature_lpmx,4370 &feature_lpmx,
4371 &feature_spm,4371 &feature_elpm,
4372 &feature_addsubiw,
4373 &feature_jmpcall,
4374 &feature_lpm,4372 &feature_lpm,
4373 &feature_spm,
4374 &feature_ijmpcall,
4375 &feature_movw,
4376 &feature_sram,
4377 &feature_spmx,
4375 &feature_break,4378 &feature_break,
4379 &feature_jmpcall,
4380 &feature_des,
4376 &feature_mul,4381 &feature_mul,
4377 &feature_elpm,
4378 &feature_eijmpcall,4382 &feature_eijmpcall,
4379 &feature_elpmx,4383 &feature_elpmx,
4380 &feature_sram,4384 &feature_addsubiw,
4381 &feature_des,
4382 &feature_ijmpcall,
4383 &feature_movw,
4384 &feature_spmx,
4385 },4385 },
4386};4386};
43874387
4388pub const cpu_avrxmega3 = Cpu{4388pub const cpu_avrxmega3 = Cpu{
4389 .name = "avrxmega3",4389 .name = "avrxmega3",
4390 .llvm_name = "avrxmega3",4390 .llvm_name = "avrxmega3",
4391 .subfeatures = &[_]*const Feature {4391 .dependencies = &[_]*const Feature {
4392 &feature_lpmx,4392 &feature_lpmx,
4393 &feature_spm,4393 &feature_elpm,
4394 &feature_addsubiw,
4395 &feature_jmpcall,
4396 &feature_lpm,4394 &feature_lpm,
4395 &feature_spm,
4396 &feature_ijmpcall,
4397 &feature_movw,
4398 &feature_sram,
4399 &feature_spmx,
4397 &feature_break,4400 &feature_break,
4401 &feature_jmpcall,
4402 &feature_des,
4398 &feature_mul,4403 &feature_mul,
4399 &feature_elpm,
4400 &feature_eijmpcall,4404 &feature_eijmpcall,
4401 &feature_elpmx,4405 &feature_elpmx,
4402 &feature_sram,4406 &feature_addsubiw,
4403 &feature_des,
4404 &feature_ijmpcall,
4405 &feature_movw,
4406 &feature_spmx,
4407 },4407 },
4408};4408};
44094409
4410pub const cpu_avrxmega4 = Cpu{4410pub const cpu_avrxmega4 = Cpu{
4411 .name = "avrxmega4",4411 .name = "avrxmega4",
4412 .llvm_name = "avrxmega4",4412 .llvm_name = "avrxmega4",
4413 .subfeatures = &[_]*const Feature {4413 .dependencies = &[_]*const Feature {
4414 &feature_lpmx,4414 &feature_lpmx,
4415 &feature_spm,4415 &feature_elpm,
4416 &feature_addsubiw,
4417 &feature_jmpcall,
4418 &feature_lpm,4416 &feature_lpm,
4417 &feature_spm,
4418 &feature_ijmpcall,
4419 &feature_movw,
4420 &feature_sram,
4421 &feature_spmx,
4419 &feature_break,4422 &feature_break,
4423 &feature_jmpcall,
4424 &feature_des,
4420 &feature_mul,4425 &feature_mul,
4421 &feature_elpm,
4422 &feature_eijmpcall,4426 &feature_eijmpcall,
4423 &feature_elpmx,4427 &feature_elpmx,
4424 &feature_sram,4428 &feature_addsubiw,
4425 &feature_des,
4426 &feature_ijmpcall,
4427 &feature_movw,
4428 &feature_spmx,
4429 },4429 },
4430};4430};
44314431
4432pub const cpu_avrxmega5 = Cpu{4432pub const cpu_avrxmega5 = Cpu{
4433 .name = "avrxmega5",4433 .name = "avrxmega5",
4434 .llvm_name = "avrxmega5",4434 .llvm_name = "avrxmega5",
4435 .subfeatures = &[_]*const Feature {4435 .dependencies = &[_]*const Feature {
4436 &feature_lpmx,4436 &feature_lpmx,
4437 &feature_spm,4437 &feature_elpm,
4438 &feature_addsubiw,
4439 &feature_jmpcall,
4440 &feature_lpm,4438 &feature_lpm,
4439 &feature_spm,
4440 &feature_ijmpcall,
4441 &feature_movw,
4442 &feature_sram,
4443 &feature_spmx,
4441 &feature_break,4444 &feature_break,
4445 &feature_jmpcall,
4446 &feature_des,
4442 &feature_mul,4447 &feature_mul,
4443 &feature_elpm,
4444 &feature_eijmpcall,4448 &feature_eijmpcall,
4445 &feature_elpmx,4449 &feature_elpmx,
4446 &feature_sram,4450 &feature_addsubiw,
4447 &feature_des,
4448 &feature_ijmpcall,
4449 &feature_movw,
4450 &feature_spmx,
4451 },4451 },
4452};4452};
44534453
4454pub const cpu_avrxmega6 = Cpu{4454pub const cpu_avrxmega6 = Cpu{
4455 .name = "avrxmega6",4455 .name = "avrxmega6",
4456 .llvm_name = "avrxmega6",4456 .llvm_name = "avrxmega6",
4457 .subfeatures = &[_]*const Feature {4457 .dependencies = &[_]*const Feature {
4458 &feature_lpmx,4458 &feature_lpmx,
4459 &feature_spm,4459 &feature_elpm,
4460 &feature_addsubiw,
4461 &feature_jmpcall,
4462 &feature_lpm,4460 &feature_lpm,
4461 &feature_spm,
4462 &feature_ijmpcall,
4463 &feature_movw,
4464 &feature_sram,
4465 &feature_spmx,
4463 &feature_break,4466 &feature_break,
4467 &feature_jmpcall,
4468 &feature_des,
4464 &feature_mul,4469 &feature_mul,
4465 &feature_elpm,
4466 &feature_eijmpcall,4470 &feature_eijmpcall,
4467 &feature_elpmx,4471 &feature_elpmx,
4468 &feature_sram,4472 &feature_addsubiw,
4469 &feature_des,
4470 &feature_ijmpcall,
4471 &feature_movw,
4472 &feature_spmx,
4473 },4473 },
4474};4474};
44754475
4476pub const cpu_avrxmega7 = Cpu{4476pub const cpu_avrxmega7 = Cpu{
4477 .name = "avrxmega7",4477 .name = "avrxmega7",
4478 .llvm_name = "avrxmega7",4478 .llvm_name = "avrxmega7",
4479 .subfeatures = &[_]*const Feature {4479 .dependencies = &[_]*const Feature {
4480 &feature_lpmx,4480 &feature_lpmx,
4481 &feature_spm,4481 &feature_elpm,
4482 &feature_addsubiw,
4483 &feature_jmpcall,
4484 &feature_lpm,4482 &feature_lpm,
4483 &feature_spm,
4484 &feature_ijmpcall,
4485 &feature_movw,
4486 &feature_sram,
4487 &feature_spmx,
4485 &feature_break,4488 &feature_break,
4489 &feature_jmpcall,
4490 &feature_des,
4486 &feature_mul,4491 &feature_mul,
4487 &feature_elpm,
4488 &feature_eijmpcall,4492 &feature_eijmpcall,
4489 &feature_elpmx,4493 &feature_elpmx,
4490 &feature_sram,4494 &feature_addsubiw,
4491 &feature_des,
4492 &feature_ijmpcall,
4493 &feature_movw,
4494 &feature_spmx,
4495 },4495 },
4496};4496};
44974497
4498pub const cpu_m3000 = Cpu{4498pub const cpu_m3000 = Cpu{
4499 .name = "m3000",4499 .name = "m3000",
4500 .llvm_name = "m3000",4500 .llvm_name = "m3000",
4501 .subfeatures = &[_]*const Feature {4501 .dependencies = &[_]*const Feature {
4502 &feature_lpmx,4502 &feature_lpmx,
4503 &feature_spm,
4504 &feature_addsubiw,
4505 &feature_jmpcall,
4506 &feature_lpm,4503 &feature_lpm,
4504 &feature_spm,
4505 &feature_ijmpcall,
4506 &feature_sram,
4507 &feature_break,4507 &feature_break,
4508 &feature_jmpcall,
4508 &feature_mul,4509 &feature_mul,
4509 &feature_sram,
4510 &feature_ijmpcall,
4511 &feature_movw,4510 &feature_movw,
4511 &feature_addsubiw,
4512 },4512 },
4513};4513};
45144514
lib/std/target/bpf.zig+8-8
...@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;...@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_alu32 = Feature{4pub const feature_alu32 = Feature{
5 .name = "alu32",5 .name = "alu32",
6 .description = "Enable ALU32 instructions",6 .description = "Enable ALU32 instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_dummy = Feature{11pub const feature_dummy = Feature{
12 .name = "dummy",12 .name = "dummy",
13 .description = "unused feature",13 .description = "unused feature",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_dwarfris = Feature{18pub const feature_dwarfris = Feature{
19 .name = "dwarfris",19 .name = "dwarfris",
20 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",20 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
...@@ -31,35 +31,35 @@ pub const features = &[_]*const Feature {...@@ -31,35 +31,35 @@ pub const features = &[_]*const Feature {
31pub const cpu_generic = Cpu{31pub const cpu_generic = Cpu{
32 .name = "generic",32 .name = "generic",
33 .llvm_name = "generic",33 .llvm_name = "generic",
34 .subfeatures = &[_]*const Feature {34 .dependencies = &[_]*const Feature {
35 },35 },
36};36};
3737
38pub const cpu_probe = Cpu{38pub const cpu_probe = Cpu{
39 .name = "probe",39 .name = "probe",
40 .llvm_name = "probe",40 .llvm_name = "probe",
41 .subfeatures = &[_]*const Feature {41 .dependencies = &[_]*const Feature {
42 },42 },
43};43};
4444
45pub const cpu_v1 = Cpu{45pub const cpu_v1 = Cpu{
46 .name = "v1",46 .name = "v1",
47 .llvm_name = "v1",47 .llvm_name = "v1",
48 .subfeatures = &[_]*const Feature {48 .dependencies = &[_]*const Feature {
49 },49 },
50};50};
5151
52pub const cpu_v2 = Cpu{52pub const cpu_v2 = Cpu{
53 .name = "v2",53 .name = "v2",
54 .llvm_name = "v2",54 .llvm_name = "v2",
55 .subfeatures = &[_]*const Feature {55 .dependencies = &[_]*const Feature {
56 },56 },
57};57};
5858
59pub const cpu_v3 = Cpu{59pub const cpu_v3 = Cpu{
60 .name = "v3",60 .name = "v3",
61 .llvm_name = "v3",61 .llvm_name = "v3",
62 .subfeatures = &[_]*const Feature {62 .dependencies = &[_]*const Feature {
63 },63 },
64};64};
6565
lib/std/target/hexagon.zig+17-17
...@@ -4,35 +4,35 @@ const Cpu = @import("std").target.Cpu;...@@ -4,35 +4,35 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_duplex = Feature{4pub const feature_duplex = Feature{
5 .name = "duplex",5 .name = "duplex",
6 .description = "Enable generation of duplex instruction",6 .description = "Enable generation of duplex instruction",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_longCalls = Feature{11pub const feature_longCalls = Feature{
12 .name = "long-calls",12 .name = "long-calls",
13 .description = "Use constant-extended calls",13 .description = "Use constant-extended calls",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_mem_noshuf = Feature{18pub const feature_mem_noshuf = Feature{
19 .name = "mem_noshuf",19 .name = "mem_noshuf",
20 .description = "Supports mem_noshuf feature",20 .description = "Supports mem_noshuf feature",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_memops = Feature{25pub const feature_memops = Feature{
26 .name = "memops",26 .name = "memops",
27 .description = "Use memop instructions",27 .description = "Use memop instructions",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_nvj = Feature{32pub const feature_nvj = Feature{
33 .name = "nvj",33 .name = "nvj",
34 .description = "Support for new-value jumps",34 .description = "Support for new-value jumps",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 &feature_packets,36 &feature_packets,
37 },37 },
38};38};
...@@ -40,7 +40,7 @@ pub const feature_nvj = Feature{...@@ -40,7 +40,7 @@ pub const feature_nvj = Feature{
40pub const feature_nvs = Feature{40pub const feature_nvs = Feature{
41 .name = "nvs",41 .name = "nvs",
42 .description = "Support for new-value stores",42 .description = "Support for new-value stores",
43 .subfeatures = &[_]*const Feature {43 .dependencies = &[_]*const Feature {
44 &feature_packets,44 &feature_packets,
45 },45 },
46};46};
...@@ -48,28 +48,28 @@ pub const feature_nvs = Feature{...@@ -48,28 +48,28 @@ pub const feature_nvs = Feature{
48pub const feature_noreturnStackElim = Feature{48pub const feature_noreturnStackElim = Feature{
49 .name = "noreturn-stack-elim",49 .name = "noreturn-stack-elim",
50 .description = "Eliminate stack allocation in a noreturn function when possible",50 .description = "Eliminate stack allocation in a noreturn function when possible",
51 .subfeatures = &[_]*const Feature {51 .dependencies = &[_]*const Feature {
52 },52 },
53};53};
5454
55pub const feature_packets = Feature{55pub const feature_packets = Feature{
56 .name = "packets",56 .name = "packets",
57 .description = "Support for instruction packets",57 .description = "Support for instruction packets",
58 .subfeatures = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
59 },59 },
60};60};
6161
62pub const feature_reservedR19 = Feature{62pub const feature_reservedR19 = Feature{
63 .name = "reserved-r19",63 .name = "reserved-r19",
64 .description = "Reserve register R19",64 .description = "Reserve register R19",
65 .subfeatures = &[_]*const Feature {65 .dependencies = &[_]*const Feature {
66 },66 },
67};67};
6868
69pub const feature_smallData = Feature{69pub const feature_smallData = Feature{
70 .name = "small-data",70 .name = "small-data",
71 .description = "Allow GP-relative addressing of global variables",71 .description = "Allow GP-relative addressing of global variables",
72 .subfeatures = &[_]*const Feature {72 .dependencies = &[_]*const Feature {
73 },73 },
74};74};
7575
...@@ -89,7 +89,7 @@ pub const features = &[_]*const Feature {...@@ -89,7 +89,7 @@ pub const features = &[_]*const Feature {
89pub const cpu_generic = Cpu{89pub const cpu_generic = Cpu{
90 .name = "generic",90 .name = "generic",
91 .llvm_name = "generic",91 .llvm_name = "generic",
92 .subfeatures = &[_]*const Feature {92 .dependencies = &[_]*const Feature {
93 &feature_duplex,93 &feature_duplex,
94 &feature_memops,94 &feature_memops,
95 &feature_packets,95 &feature_packets,
...@@ -102,7 +102,7 @@ pub const cpu_generic = Cpu{...@@ -102,7 +102,7 @@ pub const cpu_generic = Cpu{
102pub const cpu_hexagonv5 = Cpu{102pub const cpu_hexagonv5 = Cpu{
103 .name = "hexagonv5",103 .name = "hexagonv5",
104 .llvm_name = "hexagonv5",104 .llvm_name = "hexagonv5",
105 .subfeatures = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
106 &feature_duplex,106 &feature_duplex,
107 &feature_memops,107 &feature_memops,
108 &feature_packets,108 &feature_packets,
...@@ -115,7 +115,7 @@ pub const cpu_hexagonv5 = Cpu{...@@ -115,7 +115,7 @@ pub const cpu_hexagonv5 = Cpu{
115pub const cpu_hexagonv55 = Cpu{115pub const cpu_hexagonv55 = Cpu{
116 .name = "hexagonv55",116 .name = "hexagonv55",
117 .llvm_name = "hexagonv55",117 .llvm_name = "hexagonv55",
118 .subfeatures = &[_]*const Feature {118 .dependencies = &[_]*const Feature {
119 &feature_duplex,119 &feature_duplex,
120 &feature_memops,120 &feature_memops,
121 &feature_packets,121 &feature_packets,
...@@ -128,7 +128,7 @@ pub const cpu_hexagonv55 = Cpu{...@@ -128,7 +128,7 @@ pub const cpu_hexagonv55 = Cpu{
128pub const cpu_hexagonv60 = Cpu{128pub const cpu_hexagonv60 = Cpu{
129 .name = "hexagonv60",129 .name = "hexagonv60",
130 .llvm_name = "hexagonv60",130 .llvm_name = "hexagonv60",
131 .subfeatures = &[_]*const Feature {131 .dependencies = &[_]*const Feature {
132 &feature_duplex,132 &feature_duplex,
133 &feature_memops,133 &feature_memops,
134 &feature_packets,134 &feature_packets,
...@@ -141,7 +141,7 @@ pub const cpu_hexagonv60 = Cpu{...@@ -141,7 +141,7 @@ pub const cpu_hexagonv60 = Cpu{
141pub const cpu_hexagonv62 = Cpu{141pub const cpu_hexagonv62 = Cpu{
142 .name = "hexagonv62",142 .name = "hexagonv62",
143 .llvm_name = "hexagonv62",143 .llvm_name = "hexagonv62",
144 .subfeatures = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
145 &feature_duplex,145 &feature_duplex,
146 &feature_memops,146 &feature_memops,
147 &feature_packets,147 &feature_packets,
...@@ -154,7 +154,7 @@ pub const cpu_hexagonv62 = Cpu{...@@ -154,7 +154,7 @@ pub const cpu_hexagonv62 = Cpu{
154pub const cpu_hexagonv65 = Cpu{154pub const cpu_hexagonv65 = Cpu{
155 .name = "hexagonv65",155 .name = "hexagonv65",
156 .llvm_name = "hexagonv65",156 .llvm_name = "hexagonv65",
157 .subfeatures = &[_]*const Feature {157 .dependencies = &[_]*const Feature {
158 &feature_duplex,158 &feature_duplex,
159 &feature_mem_noshuf,159 &feature_mem_noshuf,
160 &feature_memops,160 &feature_memops,
...@@ -168,7 +168,7 @@ pub const cpu_hexagonv65 = Cpu{...@@ -168,7 +168,7 @@ pub const cpu_hexagonv65 = Cpu{
168pub const cpu_hexagonv66 = Cpu{168pub const cpu_hexagonv66 = Cpu{
169 .name = "hexagonv66",169 .name = "hexagonv66",
170 .llvm_name = "hexagonv66",170 .llvm_name = "hexagonv66",
171 .subfeatures = &[_]*const Feature {171 .dependencies = &[_]*const Feature {
172 &feature_duplex,172 &feature_duplex,
173 &feature_mem_noshuf,173 &feature_mem_noshuf,
174 &feature_memops,174 &feature_memops,
lib/std/target/mips.zig+191-191
...@@ -4,43 +4,43 @@ const Cpu = @import("std").target.Cpu;...@@ -4,43 +4,43 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_abs2008 = Feature{4pub const feature_abs2008 = Feature{
5 .name = "abs2008",5 .name = "abs2008",
6 .description = "Disable IEEE 754-2008 abs.fmt mode",6 .description = "Disable IEEE 754-2008 abs.fmt mode",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_crc = Feature{11pub const feature_crc = Feature{
12 .name = "crc",12 .name = "crc",
13 .description = "Mips R6 CRC ASE",13 .description = "Mips R6 CRC ASE",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_cnmips = Feature{18pub const feature_cnmips = Feature{
19 .name = "cnmips",19 .name = "cnmips",
20 .description = "Octeon cnMIPS Support",20 .description = "Octeon cnMIPS Support",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 &feature_fp64,22 &feature_mips4_32,
23 &feature_mips4_32r2,23 &feature_mips4_32r2,
24 &feature_mips1,24 &feature_mips1,
25 &feature_gp64,
26 &feature_mips4_32,
27 &feature_mips5_32r2,
28 &feature_mips3_32r2,25 &feature_mips3_32r2,
26 &feature_mips5_32r2,
29 &feature_mips3_32,27 &feature_mips3_32,
28 &feature_gp64,
29 &feature_fp64,
30 },30 },
31};31};
3232
33pub const feature_dsp = Feature{33pub const feature_dsp = Feature{
34 .name = "dsp",34 .name = "dsp",
35 .description = "Mips DSP ASE",35 .description = "Mips DSP ASE",
36 .subfeatures = &[_]*const Feature {36 .dependencies = &[_]*const Feature {
37 },37 },
38};38};
3939
40pub const feature_dspr2 = Feature{40pub const feature_dspr2 = Feature{
41 .name = "dspr2",41 .name = "dspr2",
42 .description = "Mips DSP-R2 ASE",42 .description = "Mips DSP-R2 ASE",
43 .subfeatures = &[_]*const Feature {43 .dependencies = &[_]*const Feature {
44 &feature_dsp,44 &feature_dsp,
45 },45 },
46};46};
...@@ -48,7 +48,7 @@ pub const feature_dspr2 = Feature{...@@ -48,7 +48,7 @@ pub const feature_dspr2 = Feature{
48pub const feature_dspr3 = Feature{48pub const feature_dspr3 = Feature{
49 .name = "dspr3",49 .name = "dspr3",
50 .description = "Mips DSP-R3 ASE",50 .description = "Mips DSP-R3 ASE",
51 .subfeatures = &[_]*const Feature {51 .dependencies = &[_]*const Feature {
52 &feature_dsp,52 &feature_dsp,
53 },53 },
54};54};
...@@ -56,84 +56,84 @@ pub const feature_dspr3 = Feature{...@@ -56,84 +56,84 @@ pub const feature_dspr3 = Feature{
56pub const feature_eva = Feature{56pub const feature_eva = Feature{
57 .name = "eva",57 .name = "eva",
58 .description = "Mips EVA ASE",58 .description = "Mips EVA ASE",
59 .subfeatures = &[_]*const Feature {59 .dependencies = &[_]*const Feature {
60 },60 },
61};61};
6262
63pub const feature_fp64 = Feature{63pub const feature_fp64 = Feature{
64 .name = "fp64",64 .name = "fp64",
65 .description = "Support 64-bit FP registers",65 .description = "Support 64-bit FP registers",
66 .subfeatures = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
67 },67 },
68};68};
6969
70pub const feature_fpxx = Feature{70pub const feature_fpxx = Feature{
71 .name = "fpxx",71 .name = "fpxx",
72 .description = "Support for FPXX",72 .description = "Support for FPXX",
73 .subfeatures = &[_]*const Feature {73 .dependencies = &[_]*const Feature {
74 },74 },
75};75};
7676
77pub const feature_ginv = Feature{77pub const feature_ginv = Feature{
78 .name = "ginv",78 .name = "ginv",
79 .description = "Mips Global Invalidate ASE",79 .description = "Mips Global Invalidate ASE",
80 .subfeatures = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
81 },81 },
82};82};
8383
84pub const feature_gp64 = Feature{84pub const feature_gp64 = Feature{
85 .name = "gp64",85 .name = "gp64",
86 .description = "General Purpose Registers are 64-bit wide",86 .description = "General Purpose Registers are 64-bit wide",
87 .subfeatures = &[_]*const Feature {87 .dependencies = &[_]*const Feature {
88 },88 },
89};89};
9090
91pub const feature_longCalls = Feature{91pub const feature_longCalls = Feature{
92 .name = "long-calls",92 .name = "long-calls",
93 .description = "Disable use of the jal instruction",93 .description = "Disable use of the jal instruction",
94 .subfeatures = &[_]*const Feature {94 .dependencies = &[_]*const Feature {
95 },95 },
96};96};
9797
98pub const feature_msa = Feature{98pub const feature_msa = Feature{
99 .name = "msa",99 .name = "msa",
100 .description = "Mips MSA ASE",100 .description = "Mips MSA ASE",
101 .subfeatures = &[_]*const Feature {101 .dependencies = &[_]*const Feature {
102 },102 },
103};103};
104104
105pub const feature_mt = Feature{105pub const feature_mt = Feature{
106 .name = "mt",106 .name = "mt",
107 .description = "Mips MT ASE",107 .description = "Mips MT ASE",
108 .subfeatures = &[_]*const Feature {108 .dependencies = &[_]*const Feature {
109 },109 },
110};110};
111111
112pub const feature_nomadd4 = Feature{112pub const feature_nomadd4 = Feature{
113 .name = "nomadd4",113 .name = "nomadd4",
114 .description = "Disable 4-operand madd.fmt and related instructions",114 .description = "Disable 4-operand madd.fmt and related instructions",
115 .subfeatures = &[_]*const Feature {115 .dependencies = &[_]*const Feature {
116 },116 },
117};117};
118118
119pub const feature_micromips = Feature{119pub const feature_micromips = Feature{
120 .name = "micromips",120 .name = "micromips",
121 .description = "microMips mode",121 .description = "microMips mode",
122 .subfeatures = &[_]*const Feature {122 .dependencies = &[_]*const Feature {
123 },123 },
124};124};
125125
126pub const feature_mips1 = Feature{126pub const feature_mips1 = Feature{
127 .name = "mips1",127 .name = "mips1",
128 .description = "Mips I ISA Support [highly experimental]",128 .description = "Mips I ISA Support [highly experimental]",
129 .subfeatures = &[_]*const Feature {129 .dependencies = &[_]*const Feature {
130 },130 },
131};131};
132132
133pub const feature_mips2 = Feature{133pub const feature_mips2 = Feature{
134 .name = "mips2",134 .name = "mips2",
135 .description = "Mips II ISA Support [highly experimental]",135 .description = "Mips II ISA Support [highly experimental]",
136 .subfeatures = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
137 &feature_mips1,137 &feature_mips1,
138 },138 },
139};139};
...@@ -141,322 +141,322 @@ pub const feature_mips2 = Feature{...@@ -141,322 +141,322 @@ pub const feature_mips2 = Feature{
141pub const feature_mips3 = Feature{141pub const feature_mips3 = Feature{
142 .name = "mips3",142 .name = "mips3",
143 .description = "MIPS III ISA Support [highly experimental]",143 .description = "MIPS III ISA Support [highly experimental]",
144 .subfeatures = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
145 &feature_fp64,
146 &feature_mips1,145 &feature_mips1,
147 &feature_gp64,
148 &feature_mips3_32r2,146 &feature_mips3_32r2,
149 &feature_mips3_32,147 &feature_mips3_32,
148 &feature_gp64,
149 &feature_fp64,
150 },150 },
151};151};
152152
153pub const feature_mips3_32 = Feature{153pub const feature_mips3_32 = Feature{
154 .name = "mips3_32",154 .name = "mips3_32",
155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
156 .subfeatures = &[_]*const Feature {156 .dependencies = &[_]*const Feature {
157 },157 },
158};158};
159159
160pub const feature_mips3_32r2 = Feature{160pub const feature_mips3_32r2 = Feature{
161 .name = "mips3_32r2",161 .name = "mips3_32r2",
162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
163 .subfeatures = &[_]*const Feature {163 .dependencies = &[_]*const Feature {
164 },164 },
165};165};
166166
167pub const feature_mips4 = Feature{167pub const feature_mips4 = Feature{
168 .name = "mips4",168 .name = "mips4",
169 .description = "MIPS IV ISA Support",169 .description = "MIPS IV ISA Support",
170 .subfeatures = &[_]*const Feature {170 .dependencies = &[_]*const Feature {
171 &feature_fp64,171 &feature_mips4_32,
172 &feature_mips4_32r2,172 &feature_mips4_32r2,
173 &feature_mips1,173 &feature_mips1,
174 &feature_gp64,
175 &feature_mips4_32,
176 &feature_mips3_32r2,174 &feature_mips3_32r2,
177 &feature_mips3_32,175 &feature_mips3_32,
176 &feature_gp64,
177 &feature_fp64,
178 },178 },
179};179};
180180
181pub const feature_mips4_32 = Feature{181pub const feature_mips4_32 = Feature{
182 .name = "mips4_32",182 .name = "mips4_32",
183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
184 .subfeatures = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
185 },185 },
186};186};
187187
188pub const feature_mips4_32r2 = Feature{188pub const feature_mips4_32r2 = Feature{
189 .name = "mips4_32r2",189 .name = "mips4_32r2",
190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
191 .subfeatures = &[_]*const Feature {191 .dependencies = &[_]*const Feature {
192 },192 },
193};193};
194194
195pub const feature_mips5 = Feature{195pub const feature_mips5 = Feature{
196 .name = "mips5",196 .name = "mips5",
197 .description = "MIPS V ISA Support [highly experimental]",197 .description = "MIPS V ISA Support [highly experimental]",
198 .subfeatures = &[_]*const Feature {198 .dependencies = &[_]*const Feature {
199 &feature_fp64,199 &feature_mips3_32,
200 &feature_mips4_32r2,
201 &feature_mips1,
202 &feature_gp64,200 &feature_gp64,
203 &feature_mips4_32,201 &feature_mips1,
204 &feature_mips5_32r2,
205 &feature_mips3_32r2,202 &feature_mips3_32r2,
206 &feature_mips3_32,203 &feature_mips5_32r2,
204 &feature_mips4_32,
205 &feature_mips4_32r2,
206 &feature_fp64,
207 },207 },
208};208};
209209
210pub const feature_mips5_32r2 = Feature{210pub const feature_mips5_32r2 = Feature{
211 .name = "mips5_32r2",211 .name = "mips5_32r2",
212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
213 .subfeatures = &[_]*const Feature {213 .dependencies = &[_]*const Feature {
214 },214 },
215};215};
216216
217pub const feature_mips16 = Feature{217pub const feature_mips16 = Feature{
218 .name = "mips16",218 .name = "mips16",
219 .description = "Mips16 mode",219 .description = "Mips16 mode",
220 .subfeatures = &[_]*const Feature {220 .dependencies = &[_]*const Feature {
221 },221 },
222};222};
223223
224pub const feature_mips32 = Feature{224pub const feature_mips32 = Feature{
225 .name = "mips32",225 .name = "mips32",
226 .description = "Mips32 ISA Support",226 .description = "Mips32 ISA Support",
227 .subfeatures = &[_]*const Feature {227 .dependencies = &[_]*const Feature {
228 &feature_mips1,228 &feature_mips1,
229 &feature_mips4_32,
230 &feature_mips3_32,229 &feature_mips3_32,
230 &feature_mips4_32,
231 },231 },
232};232};
233233
234pub const feature_mips32r2 = Feature{234pub const feature_mips32r2 = Feature{
235 .name = "mips32r2",235 .name = "mips32r2",
236 .description = "Mips32r2 ISA Support",236 .description = "Mips32r2 ISA Support",
237 .subfeatures = &[_]*const Feature {237 .dependencies = &[_]*const Feature {
238 &feature_mips4_32r2,
239 &feature_mips1,
240 &feature_mips4_32,238 &feature_mips4_32,
241 &feature_mips5_32r2,239 &feature_mips1,
242 &feature_mips3_32r2,240 &feature_mips3_32r2,
241 &feature_mips5_32r2,
243 &feature_mips3_32,242 &feature_mips3_32,
243 &feature_mips4_32r2,
244 },244 },
245};245};
246246
247pub const feature_mips32r3 = Feature{247pub const feature_mips32r3 = Feature{
248 .name = "mips32r3",248 .name = "mips32r3",
249 .description = "Mips32r3 ISA Support",249 .description = "Mips32r3 ISA Support",
250 .subfeatures = &[_]*const Feature {250 .dependencies = &[_]*const Feature {
251 &feature_mips4_32r2,251 &feature_mips3_32,
252 &feature_mips1,252 &feature_mips1,
253 &feature_mips4_32,
254 &feature_mips5_32r2,
255 &feature_mips3_32r2,253 &feature_mips3_32r2,
256 &feature_mips3_32,254 &feature_mips5_32r2,
255 &feature_mips4_32,
256 &feature_mips4_32r2,
257 },257 },
258};258};
259259
260pub const feature_mips32r5 = Feature{260pub const feature_mips32r5 = Feature{
261 .name = "mips32r5",261 .name = "mips32r5",
262 .description = "Mips32r5 ISA Support",262 .description = "Mips32r5 ISA Support",
263 .subfeatures = &[_]*const Feature {263 .dependencies = &[_]*const Feature {
264 &feature_mips4_32r2,
265 &feature_mips1,
266 &feature_mips4_32,264 &feature_mips4_32,
267 &feature_mips5_32r2,265 &feature_mips1,
268 &feature_mips3_32r2,266 &feature_mips3_32r2,
267 &feature_mips5_32r2,
269 &feature_mips3_32,268 &feature_mips3_32,
269 &feature_mips4_32r2,
270 },270 },
271};271};
272272
273pub const feature_mips32r6 = Feature{273pub const feature_mips32r6 = Feature{
274 .name = "mips32r6",274 .name = "mips32r6",
275 .description = "Mips32r6 ISA Support [experimental]",275 .description = "Mips32r6 ISA Support [experimental]",
276 .subfeatures = &[_]*const Feature {276 .dependencies = &[_]*const Feature {
277 &feature_abs2008,277 &feature_abs2008,
278 &feature_fp64,
279 &feature_mips4_32r2,
280 &feature_nan2008,278 &feature_nan2008,
279 &feature_mips3_32,
281 &feature_mips1,280 &feature_mips1,
282 &feature_mips4_32,
283 &feature_mips5_32r2,
284 &feature_mips3_32r2,281 &feature_mips3_32r2,
285 &feature_mips3_32,282 &feature_mips5_32r2,
283 &feature_mips4_32,
284 &feature_mips4_32r2,
285 &feature_fp64,
286 },286 },
287};287};
288288
289pub const feature_mips64 = Feature{289pub const feature_mips64 = Feature{
290 .name = "mips64",290 .name = "mips64",
291 .description = "Mips64 ISA Support",291 .description = "Mips64 ISA Support",
292 .subfeatures = &[_]*const Feature {292 .dependencies = &[_]*const Feature {
293 &feature_fp64,293 &feature_mips4_32,
294 &feature_mips4_32r2,294 &feature_mips4_32r2,
295 &feature_mips1,295 &feature_mips1,
296 &feature_gp64,
297 &feature_mips4_32,
298 &feature_mips5_32r2,
299 &feature_mips3_32r2,296 &feature_mips3_32r2,
297 &feature_mips5_32r2,
300 &feature_mips3_32,298 &feature_mips3_32,
299 &feature_gp64,
300 &feature_fp64,
301 },301 },
302};302};
303303
304pub const feature_mips64r2 = Feature{304pub const feature_mips64r2 = Feature{
305 .name = "mips64r2",305 .name = "mips64r2",
306 .description = "Mips64r2 ISA Support",306 .description = "Mips64r2 ISA Support",
307 .subfeatures = &[_]*const Feature {307 .dependencies = &[_]*const Feature {
308 &feature_fp64,308 &feature_mips3_32,
309 &feature_mips4_32r2,
310 &feature_mips1,
311 &feature_gp64,309 &feature_gp64,
312 &feature_mips4_32,310 &feature_mips1,
313 &feature_mips5_32r2,
314 &feature_mips3_32r2,311 &feature_mips3_32r2,
315 &feature_mips3_32,312 &feature_mips5_32r2,
313 &feature_mips4_32,
314 &feature_mips4_32r2,
315 &feature_fp64,
316 },316 },
317};317};
318318
319pub const feature_mips64r3 = Feature{319pub const feature_mips64r3 = Feature{
320 .name = "mips64r3",320 .name = "mips64r3",
321 .description = "Mips64r3 ISA Support",321 .description = "Mips64r3 ISA Support",
322 .subfeatures = &[_]*const Feature {322 .dependencies = &[_]*const Feature {
323 &feature_fp64,
324 &feature_mips4_32r2,
325 &feature_mips1,
326 &feature_gp64,
327 &feature_mips4_32,323 &feature_mips4_32,
328 &feature_mips5_32r2,324 &feature_gp64,
325 &feature_mips1,
329 &feature_mips3_32r2,326 &feature_mips3_32r2,
327 &feature_mips5_32r2,
330 &feature_mips3_32,328 &feature_mips3_32,
329 &feature_mips4_32r2,
330 &feature_fp64,
331 },331 },
332};332};
333333
334pub const feature_mips64r5 = Feature{334pub const feature_mips64r5 = Feature{
335 .name = "mips64r5",335 .name = "mips64r5",
336 .description = "Mips64r5 ISA Support",336 .description = "Mips64r5 ISA Support",
337 .subfeatures = &[_]*const Feature {337 .dependencies = &[_]*const Feature {
338 &feature_fp64,338 &feature_mips3_32,
339 &feature_mips4_32r2,
340 &feature_mips1,
341 &feature_gp64,339 &feature_gp64,
342 &feature_mips4_32,340 &feature_mips1,
343 &feature_mips5_32r2,
344 &feature_mips3_32r2,341 &feature_mips3_32r2,
345 &feature_mips3_32,342 &feature_mips5_32r2,
343 &feature_mips4_32,
344 &feature_mips4_32r2,
345 &feature_fp64,
346 },346 },
347};347};
348348
349pub const feature_mips64r6 = Feature{349pub const feature_mips64r6 = Feature{
350 .name = "mips64r6",350 .name = "mips64r6",
351 .description = "Mips64r6 ISA Support [experimental]",351 .description = "Mips64r6 ISA Support [experimental]",
352 .subfeatures = &[_]*const Feature {352 .dependencies = &[_]*const Feature {
353 &feature_abs2008,353 &feature_abs2008,
354 &feature_fp64,
355 &feature_mips4_32r2,
356 &feature_mips1,
357 &feature_gp64,
358 &feature_mips5_32r2,
359 &feature_mips4_32,
360 &feature_nan2008,354 &feature_nan2008,
355 &feature_mips4_32,
356 &feature_gp64,
357 &feature_mips1,
361 &feature_mips3_32r2,358 &feature_mips3_32r2,
359 &feature_mips5_32r2,
362 &feature_mips3_32,360 &feature_mips3_32,
361 &feature_mips4_32r2,
362 &feature_fp64,
363 },363 },
364};364};
365365
366pub const feature_nan2008 = Feature{366pub const feature_nan2008 = Feature{
367 .name = "nan2008",367 .name = "nan2008",
368 .description = "IEEE 754-2008 NaN encoding",368 .description = "IEEE 754-2008 NaN encoding",
369 .subfeatures = &[_]*const Feature {369 .dependencies = &[_]*const Feature {
370 },370 },
371};371};
372372
373pub const feature_noabicalls = Feature{373pub const feature_noabicalls = Feature{
374 .name = "noabicalls",374 .name = "noabicalls",
375 .description = "Disable SVR4-style position-independent code",375 .description = "Disable SVR4-style position-independent code",
376 .subfeatures = &[_]*const Feature {376 .dependencies = &[_]*const Feature {
377 },377 },
378};378};
379379
380pub const feature_nooddspreg = Feature{380pub const feature_nooddspreg = Feature{
381 .name = "nooddspreg",381 .name = "nooddspreg",
382 .description = "Disable odd numbered single-precision registers",382 .description = "Disable odd numbered single-precision registers",
383 .subfeatures = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
384 },384 },
385};385};
386386
387pub const feature_ptr64 = Feature{387pub const feature_ptr64 = Feature{
388 .name = "ptr64",388 .name = "ptr64",
389 .description = "Pointers are 64-bit wide",389 .description = "Pointers are 64-bit wide",
390 .subfeatures = &[_]*const Feature {390 .dependencies = &[_]*const Feature {
391 },391 },
392};392};
393393
394pub const feature_singleFloat = Feature{394pub const feature_singleFloat = Feature{
395 .name = "single-float",395 .name = "single-float",
396 .description = "Only supports single precision float",396 .description = "Only supports single precision float",
397 .subfeatures = &[_]*const Feature {397 .dependencies = &[_]*const Feature {
398 },398 },
399};399};
400400
401pub const feature_softFloat = Feature{401pub const feature_softFloat = Feature{
402 .name = "soft-float",402 .name = "soft-float",
403 .description = "Does not support floating point instructions",403 .description = "Does not support floating point instructions",
404 .subfeatures = &[_]*const Feature {404 .dependencies = &[_]*const Feature {
405 },405 },
406};406};
407407
408pub const feature_sym32 = Feature{408pub const feature_sym32 = Feature{
409 .name = "sym32",409 .name = "sym32",
410 .description = "Symbols are 32 bit on Mips64",410 .description = "Symbols are 32 bit on Mips64",
411 .subfeatures = &[_]*const Feature {411 .dependencies = &[_]*const Feature {
412 },412 },
413};413};
414414
415pub const feature_useIndirectJumpHazard = Feature{415pub const feature_useIndirectJumpHazard = Feature{
416 .name = "use-indirect-jump-hazard",416 .name = "use-indirect-jump-hazard",
417 .description = "Use indirect jump guards to prevent certain speculation based attacks",417 .description = "Use indirect jump guards to prevent certain speculation based attacks",
418 .subfeatures = &[_]*const Feature {418 .dependencies = &[_]*const Feature {
419 },419 },
420};420};
421421
422pub const feature_useTccInDiv = Feature{422pub const feature_useTccInDiv = Feature{
423 .name = "use-tcc-in-div",423 .name = "use-tcc-in-div",
424 .description = "Force the assembler to use trapping",424 .description = "Force the assembler to use trapping",
425 .subfeatures = &[_]*const Feature {425 .dependencies = &[_]*const Feature {
426 },426 },
427};427};
428428
429pub const feature_vfpu = Feature{429pub const feature_vfpu = Feature{
430 .name = "vfpu",430 .name = "vfpu",
431 .description = "Enable vector FPU instructions",431 .description = "Enable vector FPU instructions",
432 .subfeatures = &[_]*const Feature {432 .dependencies = &[_]*const Feature {
433 },433 },
434};434};
435435
436pub const feature_virt = Feature{436pub const feature_virt = Feature{
437 .name = "virt",437 .name = "virt",
438 .description = "Mips Virtualization ASE",438 .description = "Mips Virtualization ASE",
439 .subfeatures = &[_]*const Feature {439 .dependencies = &[_]*const Feature {
440 },440 },
441};441};
442442
443pub const feature_xgot = Feature{443pub const feature_xgot = Feature{
444 .name = "xgot",444 .name = "xgot",
445 .description = "Assume 32-bit GOT",445 .description = "Assume 32-bit GOT",
446 .subfeatures = &[_]*const Feature {446 .dependencies = &[_]*const Feature {
447 },447 },
448};448};
449449
450pub const feature_p5600 = Feature{450pub const feature_p5600 = Feature{
451 .name = "p5600",451 .name = "p5600",
452 .description = "The P5600 Processor",452 .description = "The P5600 Processor",
453 .subfeatures = &[_]*const Feature {453 .dependencies = &[_]*const Feature {
454 &feature_mips4_32r2,454 &feature_mips3_32,
455 &feature_mips1,455 &feature_mips1,
456 &feature_mips4_32,
457 &feature_mips5_32r2,
458 &feature_mips3_32r2,456 &feature_mips3_32r2,
459 &feature_mips3_32,457 &feature_mips5_32r2,
458 &feature_mips4_32,
459 &feature_mips4_32r2,
460 },460 },
461};461};
462462
...@@ -516,7 +516,7 @@ pub const features = &[_]*const Feature {...@@ -516,7 +516,7 @@ pub const features = &[_]*const Feature {
516pub const cpu_mips1 = Cpu{516pub const cpu_mips1 = Cpu{
517 .name = "mips1",517 .name = "mips1",
518 .llvm_name = "mips1",518 .llvm_name = "mips1",
519 .subfeatures = &[_]*const Feature {519 .dependencies = &[_]*const Feature {
520 &feature_mips1,520 &feature_mips1,
521 },521 },
522};522};
...@@ -524,7 +524,7 @@ pub const cpu_mips1 = Cpu{...@@ -524,7 +524,7 @@ pub const cpu_mips1 = Cpu{
524pub const cpu_mips2 = Cpu{524pub const cpu_mips2 = Cpu{
525 .name = "mips2",525 .name = "mips2",
526 .llvm_name = "mips2",526 .llvm_name = "mips2",
527 .subfeatures = &[_]*const Feature {527 .dependencies = &[_]*const Feature {
528 &feature_mips1,528 &feature_mips1,
529 &feature_mips2,529 &feature_mips2,
530 },530 },
...@@ -533,12 +533,12 @@ pub const cpu_mips2 = Cpu{...@@ -533,12 +533,12 @@ pub const cpu_mips2 = Cpu{
533pub const cpu_mips3 = Cpu{533pub const cpu_mips3 = Cpu{
534 .name = "mips3",534 .name = "mips3",
535 .llvm_name = "mips3",535 .llvm_name = "mips3",
536 .subfeatures = &[_]*const Feature {536 .dependencies = &[_]*const Feature {
537 &feature_fp64,
538 &feature_mips1,537 &feature_mips1,
539 &feature_gp64,
540 &feature_mips3_32r2,538 &feature_mips3_32r2,
541 &feature_mips3_32,539 &feature_mips3_32,
540 &feature_gp64,
541 &feature_fp64,
542 &feature_mips3,542 &feature_mips3,
543 },543 },
544};544};
...@@ -546,10 +546,10 @@ pub const cpu_mips3 = Cpu{...@@ -546,10 +546,10 @@ pub const cpu_mips3 = Cpu{
546pub const cpu_mips32 = Cpu{546pub const cpu_mips32 = Cpu{
547 .name = "mips32",547 .name = "mips32",
548 .llvm_name = "mips32",548 .llvm_name = "mips32",
549 .subfeatures = &[_]*const Feature {549 .dependencies = &[_]*const Feature {
550 &feature_mips1,550 &feature_mips1,
551 &feature_mips4_32,
552 &feature_mips3_32,551 &feature_mips3_32,
552 &feature_mips4_32,
553 &feature_mips32,553 &feature_mips32,
554 },554 },
555};555};
...@@ -557,13 +557,13 @@ pub const cpu_mips32 = Cpu{...@@ -557,13 +557,13 @@ pub const cpu_mips32 = Cpu{
557pub const cpu_mips32r2 = Cpu{557pub const cpu_mips32r2 = Cpu{
558 .name = "mips32r2",558 .name = "mips32r2",
559 .llvm_name = "mips32r2",559 .llvm_name = "mips32r2",
560 .subfeatures = &[_]*const Feature {560 .dependencies = &[_]*const Feature {
561 &feature_mips4_32r2,
562 &feature_mips1,
563 &feature_mips4_32,561 &feature_mips4_32,
564 &feature_mips5_32r2,562 &feature_mips1,
565 &feature_mips3_32r2,563 &feature_mips3_32r2,
564 &feature_mips5_32r2,
566 &feature_mips3_32,565 &feature_mips3_32,
566 &feature_mips4_32r2,
567 &feature_mips32r2,567 &feature_mips32r2,
568 },568 },
569};569};
...@@ -571,13 +571,13 @@ pub const cpu_mips32r2 = Cpu{...@@ -571,13 +571,13 @@ pub const cpu_mips32r2 = Cpu{
571pub const cpu_mips32r3 = Cpu{571pub const cpu_mips32r3 = Cpu{
572 .name = "mips32r3",572 .name = "mips32r3",
573 .llvm_name = "mips32r3",573 .llvm_name = "mips32r3",
574 .subfeatures = &[_]*const Feature {574 .dependencies = &[_]*const Feature {
575 &feature_mips4_32r2,575 &feature_mips3_32,
576 &feature_mips1,576 &feature_mips1,
577 &feature_mips4_32,
578 &feature_mips5_32r2,
579 &feature_mips3_32r2,577 &feature_mips3_32r2,
580 &feature_mips3_32,578 &feature_mips5_32r2,
579 &feature_mips4_32,
580 &feature_mips4_32r2,
581 &feature_mips32r3,581 &feature_mips32r3,
582 },582 },
583};583};
...@@ -585,13 +585,13 @@ pub const cpu_mips32r3 = Cpu{...@@ -585,13 +585,13 @@ pub const cpu_mips32r3 = Cpu{
585pub const cpu_mips32r5 = Cpu{585pub const cpu_mips32r5 = Cpu{
586 .name = "mips32r5",586 .name = "mips32r5",
587 .llvm_name = "mips32r5",587 .llvm_name = "mips32r5",
588 .subfeatures = &[_]*const Feature {588 .dependencies = &[_]*const Feature {
589 &feature_mips4_32r2,
590 &feature_mips1,
591 &feature_mips4_32,589 &feature_mips4_32,
592 &feature_mips5_32r2,590 &feature_mips1,
593 &feature_mips3_32r2,591 &feature_mips3_32r2,
592 &feature_mips5_32r2,
594 &feature_mips3_32,593 &feature_mips3_32,
594 &feature_mips4_32r2,
595 &feature_mips32r5,595 &feature_mips32r5,
596 },596 },
597};597};
...@@ -599,16 +599,16 @@ pub const cpu_mips32r5 = Cpu{...@@ -599,16 +599,16 @@ pub const cpu_mips32r5 = Cpu{
599pub const cpu_mips32r6 = Cpu{599pub const cpu_mips32r6 = Cpu{
600 .name = "mips32r6",600 .name = "mips32r6",
601 .llvm_name = "mips32r6",601 .llvm_name = "mips32r6",
602 .subfeatures = &[_]*const Feature {602 .dependencies = &[_]*const Feature {
603 &feature_abs2008,603 &feature_abs2008,
604 &feature_fp64,
605 &feature_mips4_32r2,
606 &feature_nan2008,604 &feature_nan2008,
605 &feature_mips3_32,
607 &feature_mips1,606 &feature_mips1,
608 &feature_mips4_32,
609 &feature_mips5_32r2,
610 &feature_mips3_32r2,607 &feature_mips3_32r2,
611 &feature_mips3_32,608 &feature_mips5_32r2,
609 &feature_mips4_32,
610 &feature_mips4_32r2,
611 &feature_fp64,
612 &feature_mips32r6,612 &feature_mips32r6,
613 },613 },
614};614};
...@@ -616,14 +616,14 @@ pub const cpu_mips32r6 = Cpu{...@@ -616,14 +616,14 @@ pub const cpu_mips32r6 = Cpu{
616pub const cpu_mips4 = Cpu{616pub const cpu_mips4 = Cpu{
617 .name = "mips4",617 .name = "mips4",
618 .llvm_name = "mips4",618 .llvm_name = "mips4",
619 .subfeatures = &[_]*const Feature {619 .dependencies = &[_]*const Feature {
620 &feature_fp64,620 &feature_mips4_32,
621 &feature_mips4_32r2,621 &feature_mips4_32r2,
622 &feature_mips1,622 &feature_mips1,
623 &feature_gp64,
624 &feature_mips4_32,
625 &feature_mips3_32r2,623 &feature_mips3_32r2,
626 &feature_mips3_32,624 &feature_mips3_32,
625 &feature_gp64,
626 &feature_fp64,
627 &feature_mips4,627 &feature_mips4,
628 },628 },
629};629};
...@@ -631,15 +631,15 @@ pub const cpu_mips4 = Cpu{...@@ -631,15 +631,15 @@ pub const cpu_mips4 = Cpu{
631pub const cpu_mips5 = Cpu{631pub const cpu_mips5 = Cpu{
632 .name = "mips5",632 .name = "mips5",
633 .llvm_name = "mips5",633 .llvm_name = "mips5",
634 .subfeatures = &[_]*const Feature {634 .dependencies = &[_]*const Feature {
635 &feature_fp64,635 &feature_mips3_32,
636 &feature_mips4_32r2,
637 &feature_mips1,
638 &feature_gp64,636 &feature_gp64,
639 &feature_mips4_32,637 &feature_mips1,
640 &feature_mips5_32r2,
641 &feature_mips3_32r2,638 &feature_mips3_32r2,
642 &feature_mips3_32,639 &feature_mips5_32r2,
640 &feature_mips4_32,
641 &feature_mips4_32r2,
642 &feature_fp64,
643 &feature_mips5,643 &feature_mips5,
644 },644 },
645};645};
...@@ -647,15 +647,15 @@ pub const cpu_mips5 = Cpu{...@@ -647,15 +647,15 @@ pub const cpu_mips5 = Cpu{
647pub const cpu_mips64 = Cpu{647pub const cpu_mips64 = Cpu{
648 .name = "mips64",648 .name = "mips64",
649 .llvm_name = "mips64",649 .llvm_name = "mips64",
650 .subfeatures = &[_]*const Feature {650 .dependencies = &[_]*const Feature {
651 &feature_fp64,651 &feature_mips4_32,
652 &feature_mips4_32r2,652 &feature_mips4_32r2,
653 &feature_mips1,653 &feature_mips1,
654 &feature_gp64,
655 &feature_mips4_32,
656 &feature_mips5_32r2,
657 &feature_mips3_32r2,654 &feature_mips3_32r2,
655 &feature_mips5_32r2,
658 &feature_mips3_32,656 &feature_mips3_32,
657 &feature_gp64,
658 &feature_fp64,
659 &feature_mips64,659 &feature_mips64,
660 },660 },
661};661};
...@@ -663,15 +663,15 @@ pub const cpu_mips64 = Cpu{...@@ -663,15 +663,15 @@ pub const cpu_mips64 = Cpu{
663pub const cpu_mips64r2 = Cpu{663pub const cpu_mips64r2 = Cpu{
664 .name = "mips64r2",664 .name = "mips64r2",
665 .llvm_name = "mips64r2",665 .llvm_name = "mips64r2",
666 .subfeatures = &[_]*const Feature {666 .dependencies = &[_]*const Feature {
667 &feature_fp64,667 &feature_mips3_32,
668 &feature_mips4_32r2,
669 &feature_mips1,
670 &feature_gp64,668 &feature_gp64,
671 &feature_mips4_32,669 &feature_mips1,
672 &feature_mips5_32r2,
673 &feature_mips3_32r2,670 &feature_mips3_32r2,
674 &feature_mips3_32,671 &feature_mips5_32r2,
672 &feature_mips4_32,
673 &feature_mips4_32r2,
674 &feature_fp64,
675 &feature_mips64r2,675 &feature_mips64r2,
676 },676 },
677};677};
...@@ -679,15 +679,15 @@ pub const cpu_mips64r2 = Cpu{...@@ -679,15 +679,15 @@ pub const cpu_mips64r2 = Cpu{
679pub const cpu_mips64r3 = Cpu{679pub const cpu_mips64r3 = Cpu{
680 .name = "mips64r3",680 .name = "mips64r3",
681 .llvm_name = "mips64r3",681 .llvm_name = "mips64r3",
682 .subfeatures = &[_]*const Feature {682 .dependencies = &[_]*const Feature {
683 &feature_fp64,
684 &feature_mips4_32r2,
685 &feature_mips1,
686 &feature_gp64,
687 &feature_mips4_32,683 &feature_mips4_32,
688 &feature_mips5_32r2,684 &feature_gp64,
685 &feature_mips1,
689 &feature_mips3_32r2,686 &feature_mips3_32r2,
687 &feature_mips5_32r2,
690 &feature_mips3_32,688 &feature_mips3_32,
689 &feature_mips4_32r2,
690 &feature_fp64,
691 &feature_mips64r3,691 &feature_mips64r3,
692 },692 },
693};693};
...@@ -695,15 +695,15 @@ pub const cpu_mips64r3 = Cpu{...@@ -695,15 +695,15 @@ pub const cpu_mips64r3 = Cpu{
695pub const cpu_mips64r5 = Cpu{695pub const cpu_mips64r5 = Cpu{
696 .name = "mips64r5",696 .name = "mips64r5",
697 .llvm_name = "mips64r5",697 .llvm_name = "mips64r5",
698 .subfeatures = &[_]*const Feature {698 .dependencies = &[_]*const Feature {
699 &feature_fp64,699 &feature_mips3_32,
700 &feature_mips4_32r2,
701 &feature_mips1,
702 &feature_gp64,700 &feature_gp64,
703 &feature_mips4_32,701 &feature_mips1,
704 &feature_mips5_32r2,
705 &feature_mips3_32r2,702 &feature_mips3_32r2,
706 &feature_mips3_32,703 &feature_mips5_32r2,
704 &feature_mips4_32,
705 &feature_mips4_32r2,
706 &feature_fp64,
707 &feature_mips64r5,707 &feature_mips64r5,
708 },708 },
709};709};
...@@ -711,17 +711,17 @@ pub const cpu_mips64r5 = Cpu{...@@ -711,17 +711,17 @@ pub const cpu_mips64r5 = Cpu{
711pub const cpu_mips64r6 = Cpu{711pub const cpu_mips64r6 = Cpu{
712 .name = "mips64r6",712 .name = "mips64r6",
713 .llvm_name = "mips64r6",713 .llvm_name = "mips64r6",
714 .subfeatures = &[_]*const Feature {714 .dependencies = &[_]*const Feature {
715 &feature_abs2008,715 &feature_abs2008,
716 &feature_fp64,
717 &feature_mips4_32r2,
718 &feature_mips1,
719 &feature_gp64,
720 &feature_mips5_32r2,
721 &feature_mips4_32,
722 &feature_nan2008,716 &feature_nan2008,
717 &feature_mips4_32,
718 &feature_gp64,
719 &feature_mips1,
723 &feature_mips3_32r2,720 &feature_mips3_32r2,
721 &feature_mips5_32r2,
724 &feature_mips3_32,722 &feature_mips3_32,
723 &feature_mips4_32r2,
724 &feature_fp64,
725 &feature_mips64r6,725 &feature_mips64r6,
726 },726 },
727};727};
...@@ -729,15 +729,15 @@ pub const cpu_mips64r6 = Cpu{...@@ -729,15 +729,15 @@ pub const cpu_mips64r6 = Cpu{
729pub const cpu_octeon = Cpu{729pub const cpu_octeon = Cpu{
730 .name = "octeon",730 .name = "octeon",
731 .llvm_name = "octeon",731 .llvm_name = "octeon",
732 .subfeatures = &[_]*const Feature {732 .dependencies = &[_]*const Feature {
733 &feature_fp64,733 &feature_mips4_32,
734 &feature_mips4_32r2,734 &feature_mips4_32r2,
735 &feature_mips1,735 &feature_mips1,
736 &feature_gp64,
737 &feature_mips4_32,
738 &feature_mips5_32r2,
739 &feature_mips3_32r2,736 &feature_mips3_32r2,
737 &feature_mips5_32r2,
740 &feature_mips3_32,738 &feature_mips3_32,
739 &feature_gp64,
740 &feature_fp64,
741 &feature_cnmips,741 &feature_cnmips,
742 &feature_mips64r2,742 &feature_mips64r2,
743 },743 },
...@@ -746,13 +746,13 @@ pub const cpu_octeon = Cpu{...@@ -746,13 +746,13 @@ pub const cpu_octeon = Cpu{
746pub const cpu_p5600 = Cpu{746pub const cpu_p5600 = Cpu{
747 .name = "p5600",747 .name = "p5600",
748 .llvm_name = "p5600",748 .llvm_name = "p5600",
749 .subfeatures = &[_]*const Feature {749 .dependencies = &[_]*const Feature {
750 &feature_mips4_32r2,750 &feature_mips3_32,
751 &feature_mips1,751 &feature_mips1,
752 &feature_mips4_32,
753 &feature_mips5_32r2,
754 &feature_mips3_32r2,752 &feature_mips3_32r2,
755 &feature_mips3_32,753 &feature_mips5_32r2,
754 &feature_mips4_32,
755 &feature_mips4_32r2,
756 &feature_p5600,756 &feature_p5600,
757 },757 },
758};758};
lib/std/target/msp430.zig+7-7
...@@ -4,28 +4,28 @@ const Cpu = @import("std").target.Cpu;...@@ -4,28 +4,28 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_hwmult16 = Feature{4pub const feature_hwmult16 = Feature{
5 .name = "hwmult16",5 .name = "hwmult16",
6 .description = "Enable 16-bit hardware multiplier",6 .description = "Enable 16-bit hardware multiplier",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_hwmult32 = Feature{11pub const feature_hwmult32 = Feature{
12 .name = "hwmult32",12 .name = "hwmult32",
13 .description = "Enable 32-bit hardware multiplier",13 .description = "Enable 32-bit hardware multiplier",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_hwmultf5 = Feature{18pub const feature_hwmultf5 = Feature{
19 .name = "hwmultf5",19 .name = "hwmultf5",
20 .description = "Enable F5 series hardware multiplier",20 .description = "Enable F5 series hardware multiplier",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_ext = Feature{25pub const feature_ext = Feature{
26 .name = "ext",26 .name = "ext",
27 .description = "Enable MSP430-X extensions",27 .description = "Enable MSP430-X extensions",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
...@@ -39,21 +39,21 @@ pub const features = &[_]*const Feature {...@@ -39,21 +39,21 @@ pub const features = &[_]*const Feature {
39pub const cpu_generic = Cpu{39pub const cpu_generic = Cpu{
40 .name = "generic",40 .name = "generic",
41 .llvm_name = "generic",41 .llvm_name = "generic",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const cpu_msp430 = Cpu{46pub const cpu_msp430 = Cpu{
47 .name = "msp430",47 .name = "msp430",
48 .llvm_name = "msp430",48 .llvm_name = "msp430",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const cpu_msp430x = Cpu{53pub const cpu_msp430x = Cpu{
54 .name = "msp430x",54 .name = "msp430x",
55 .llvm_name = "msp430x",55 .llvm_name = "msp430x",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 &feature_ext,57 &feature_ext,
58 },58 },
59};59};
lib/std/target/nvptx.zig+40-40
...@@ -4,175 +4,175 @@ const Cpu = @import("std").target.Cpu;...@@ -4,175 +4,175 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_ptx32 = Feature{4pub const feature_ptx32 = Feature{
5 .name = "ptx32",5 .name = "ptx32",
6 .description = "Use PTX version 3.2",6 .description = "Use PTX version 3.2",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_ptx40 = Feature{11pub const feature_ptx40 = Feature{
12 .name = "ptx40",12 .name = "ptx40",
13 .description = "Use PTX version 4.0",13 .description = "Use PTX version 4.0",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_ptx41 = Feature{18pub const feature_ptx41 = Feature{
19 .name = "ptx41",19 .name = "ptx41",
20 .description = "Use PTX version 4.1",20 .description = "Use PTX version 4.1",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_ptx42 = Feature{25pub const feature_ptx42 = Feature{
26 .name = "ptx42",26 .name = "ptx42",
27 .description = "Use PTX version 4.2",27 .description = "Use PTX version 4.2",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_ptx43 = Feature{32pub const feature_ptx43 = Feature{
33 .name = "ptx43",33 .name = "ptx43",
34 .description = "Use PTX version 4.3",34 .description = "Use PTX version 4.3",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_ptx50 = Feature{39pub const feature_ptx50 = Feature{
40 .name = "ptx50",40 .name = "ptx50",
41 .description = "Use PTX version 5.0",41 .description = "Use PTX version 5.0",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_ptx60 = Feature{46pub const feature_ptx60 = Feature{
47 .name = "ptx60",47 .name = "ptx60",
48 .description = "Use PTX version 6.0",48 .description = "Use PTX version 6.0",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_ptx61 = Feature{53pub const feature_ptx61 = Feature{
54 .name = "ptx61",54 .name = "ptx61",
55 .description = "Use PTX version 6.1",55 .description = "Use PTX version 6.1",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_ptx63 = Feature{60pub const feature_ptx63 = Feature{
61 .name = "ptx63",61 .name = "ptx63",
62 .description = "Use PTX version 6.3",62 .description = "Use PTX version 6.3",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_ptx64 = Feature{67pub const feature_ptx64 = Feature{
68 .name = "ptx64",68 .name = "ptx64",
69 .description = "Use PTX version 6.4",69 .description = "Use PTX version 6.4",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 },71 },
72};72};
7373
74pub const feature_sm_20 = Feature{74pub const feature_sm_20 = Feature{
75 .name = "sm_20",75 .name = "sm_20",
76 .description = "Target SM 2.0",76 .description = "Target SM 2.0",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 },78 },
79};79};
8080
81pub const feature_sm_21 = Feature{81pub const feature_sm_21 = Feature{
82 .name = "sm_21",82 .name = "sm_21",
83 .description = "Target SM 2.1",83 .description = "Target SM 2.1",
84 .subfeatures = &[_]*const Feature {84 .dependencies = &[_]*const Feature {
85 },85 },
86};86};
8787
88pub const feature_sm_30 = Feature{88pub const feature_sm_30 = Feature{
89 .name = "sm_30",89 .name = "sm_30",
90 .description = "Target SM 3.0",90 .description = "Target SM 3.0",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 },92 },
93};93};
9494
95pub const feature_sm_32 = Feature{95pub const feature_sm_32 = Feature{
96 .name = "sm_32",96 .name = "sm_32",
97 .description = "Target SM 3.2",97 .description = "Target SM 3.2",
98 .subfeatures = &[_]*const Feature {98 .dependencies = &[_]*const Feature {
99 },99 },
100};100};
101101
102pub const feature_sm_35 = Feature{102pub const feature_sm_35 = Feature{
103 .name = "sm_35",103 .name = "sm_35",
104 .description = "Target SM 3.5",104 .description = "Target SM 3.5",
105 .subfeatures = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
106 },106 },
107};107};
108108
109pub const feature_sm_37 = Feature{109pub const feature_sm_37 = Feature{
110 .name = "sm_37",110 .name = "sm_37",
111 .description = "Target SM 3.7",111 .description = "Target SM 3.7",
112 .subfeatures = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
113 },113 },
114};114};
115115
116pub const feature_sm_50 = Feature{116pub const feature_sm_50 = Feature{
117 .name = "sm_50",117 .name = "sm_50",
118 .description = "Target SM 5.0",118 .description = "Target SM 5.0",
119 .subfeatures = &[_]*const Feature {119 .dependencies = &[_]*const Feature {
120 },120 },
121};121};
122122
123pub const feature_sm_52 = Feature{123pub const feature_sm_52 = Feature{
124 .name = "sm_52",124 .name = "sm_52",
125 .description = "Target SM 5.2",125 .description = "Target SM 5.2",
126 .subfeatures = &[_]*const Feature {126 .dependencies = &[_]*const Feature {
127 },127 },
128};128};
129129
130pub const feature_sm_53 = Feature{130pub const feature_sm_53 = Feature{
131 .name = "sm_53",131 .name = "sm_53",
132 .description = "Target SM 5.3",132 .description = "Target SM 5.3",
133 .subfeatures = &[_]*const Feature {133 .dependencies = &[_]*const Feature {
134 },134 },
135};135};
136136
137pub const feature_sm_60 = Feature{137pub const feature_sm_60 = Feature{
138 .name = "sm_60",138 .name = "sm_60",
139 .description = "Target SM 6.0",139 .description = "Target SM 6.0",
140 .subfeatures = &[_]*const Feature {140 .dependencies = &[_]*const Feature {
141 },141 },
142};142};
143143
144pub const feature_sm_61 = Feature{144pub const feature_sm_61 = Feature{
145 .name = "sm_61",145 .name = "sm_61",
146 .description = "Target SM 6.1",146 .description = "Target SM 6.1",
147 .subfeatures = &[_]*const Feature {147 .dependencies = &[_]*const Feature {
148 },148 },
149};149};
150150
151pub const feature_sm_62 = Feature{151pub const feature_sm_62 = Feature{
152 .name = "sm_62",152 .name = "sm_62",
153 .description = "Target SM 6.2",153 .description = "Target SM 6.2",
154 .subfeatures = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
155 },155 },
156};156};
157157
158pub const feature_sm_70 = Feature{158pub const feature_sm_70 = Feature{
159 .name = "sm_70",159 .name = "sm_70",
160 .description = "Target SM 7.0",160 .description = "Target SM 7.0",
161 .subfeatures = &[_]*const Feature {161 .dependencies = &[_]*const Feature {
162 },162 },
163};163};
164164
165pub const feature_sm_72 = Feature{165pub const feature_sm_72 = Feature{
166 .name = "sm_72",166 .name = "sm_72",
167 .description = "Target SM 7.2",167 .description = "Target SM 7.2",
168 .subfeatures = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
169 },169 },
170};170};
171171
172pub const feature_sm_75 = Feature{172pub const feature_sm_75 = Feature{
173 .name = "sm_75",173 .name = "sm_75",
174 .description = "Target SM 7.5",174 .description = "Target SM 7.5",
175 .subfeatures = &[_]*const Feature {175 .dependencies = &[_]*const Feature {
176 },176 },
177};177};
178178
...@@ -207,7 +207,7 @@ pub const features = &[_]*const Feature {...@@ -207,7 +207,7 @@ pub const features = &[_]*const Feature {
207pub const cpu_sm_20 = Cpu{207pub const cpu_sm_20 = Cpu{
208 .name = "sm_20",208 .name = "sm_20",
209 .llvm_name = "sm_20",209 .llvm_name = "sm_20",
210 .subfeatures = &[_]*const Feature {210 .dependencies = &[_]*const Feature {
211 &feature_sm_20,211 &feature_sm_20,
212 },212 },
213};213};
...@@ -215,7 +215,7 @@ pub const cpu_sm_20 = Cpu{...@@ -215,7 +215,7 @@ pub const cpu_sm_20 = Cpu{
215pub const cpu_sm_21 = Cpu{215pub const cpu_sm_21 = Cpu{
216 .name = "sm_21",216 .name = "sm_21",
217 .llvm_name = "sm_21",217 .llvm_name = "sm_21",
218 .subfeatures = &[_]*const Feature {218 .dependencies = &[_]*const Feature {
219 &feature_sm_21,219 &feature_sm_21,
220 },220 },
221};221};
...@@ -223,7 +223,7 @@ pub const cpu_sm_21 = Cpu{...@@ -223,7 +223,7 @@ pub const cpu_sm_21 = Cpu{
223pub const cpu_sm_30 = Cpu{223pub const cpu_sm_30 = Cpu{
224 .name = "sm_30",224 .name = "sm_30",
225 .llvm_name = "sm_30",225 .llvm_name = "sm_30",
226 .subfeatures = &[_]*const Feature {226 .dependencies = &[_]*const Feature {
227 &feature_sm_30,227 &feature_sm_30,
228 },228 },
229};229};
...@@ -231,7 +231,7 @@ pub const cpu_sm_30 = Cpu{...@@ -231,7 +231,7 @@ pub const cpu_sm_30 = Cpu{
231pub const cpu_sm_32 = Cpu{231pub const cpu_sm_32 = Cpu{
232 .name = "sm_32",232 .name = "sm_32",
233 .llvm_name = "sm_32",233 .llvm_name = "sm_32",
234 .subfeatures = &[_]*const Feature {234 .dependencies = &[_]*const Feature {
235 &feature_ptx40,235 &feature_ptx40,
236 &feature_sm_32,236 &feature_sm_32,
237 },237 },
...@@ -240,7 +240,7 @@ pub const cpu_sm_32 = Cpu{...@@ -240,7 +240,7 @@ pub const cpu_sm_32 = Cpu{
240pub const cpu_sm_35 = Cpu{240pub const cpu_sm_35 = Cpu{
241 .name = "sm_35",241 .name = "sm_35",
242 .llvm_name = "sm_35",242 .llvm_name = "sm_35",
243 .subfeatures = &[_]*const Feature {243 .dependencies = &[_]*const Feature {
244 &feature_sm_35,244 &feature_sm_35,
245 },245 },
246};246};
...@@ -248,7 +248,7 @@ pub const cpu_sm_35 = Cpu{...@@ -248,7 +248,7 @@ pub const cpu_sm_35 = Cpu{
248pub const cpu_sm_37 = Cpu{248pub const cpu_sm_37 = Cpu{
249 .name = "sm_37",249 .name = "sm_37",
250 .llvm_name = "sm_37",250 .llvm_name = "sm_37",
251 .subfeatures = &[_]*const Feature {251 .dependencies = &[_]*const Feature {
252 &feature_ptx41,252 &feature_ptx41,
253 &feature_sm_37,253 &feature_sm_37,
254 },254 },
...@@ -257,7 +257,7 @@ pub const cpu_sm_37 = Cpu{...@@ -257,7 +257,7 @@ pub const cpu_sm_37 = Cpu{
257pub const cpu_sm_50 = Cpu{257pub const cpu_sm_50 = Cpu{
258 .name = "sm_50",258 .name = "sm_50",
259 .llvm_name = "sm_50",259 .llvm_name = "sm_50",
260 .subfeatures = &[_]*const Feature {260 .dependencies = &[_]*const Feature {
261 &feature_ptx40,261 &feature_ptx40,
262 &feature_sm_50,262 &feature_sm_50,
263 },263 },
...@@ -266,7 +266,7 @@ pub const cpu_sm_50 = Cpu{...@@ -266,7 +266,7 @@ pub const cpu_sm_50 = Cpu{
266pub const cpu_sm_52 = Cpu{266pub const cpu_sm_52 = Cpu{
267 .name = "sm_52",267 .name = "sm_52",
268 .llvm_name = "sm_52",268 .llvm_name = "sm_52",
269 .subfeatures = &[_]*const Feature {269 .dependencies = &[_]*const Feature {
270 &feature_ptx41,270 &feature_ptx41,
271 &feature_sm_52,271 &feature_sm_52,
272 },272 },
...@@ -275,7 +275,7 @@ pub const cpu_sm_52 = Cpu{...@@ -275,7 +275,7 @@ pub const cpu_sm_52 = Cpu{
275pub const cpu_sm_53 = Cpu{275pub const cpu_sm_53 = Cpu{
276 .name = "sm_53",276 .name = "sm_53",
277 .llvm_name = "sm_53",277 .llvm_name = "sm_53",
278 .subfeatures = &[_]*const Feature {278 .dependencies = &[_]*const Feature {
279 &feature_ptx42,279 &feature_ptx42,
280 &feature_sm_53,280 &feature_sm_53,
281 },281 },
...@@ -284,7 +284,7 @@ pub const cpu_sm_53 = Cpu{...@@ -284,7 +284,7 @@ pub const cpu_sm_53 = Cpu{
284pub const cpu_sm_60 = Cpu{284pub const cpu_sm_60 = Cpu{
285 .name = "sm_60",285 .name = "sm_60",
286 .llvm_name = "sm_60",286 .llvm_name = "sm_60",
287 .subfeatures = &[_]*const Feature {287 .dependencies = &[_]*const Feature {
288 &feature_ptx50,288 &feature_ptx50,
289 &feature_sm_60,289 &feature_sm_60,
290 },290 },
...@@ -293,7 +293,7 @@ pub const cpu_sm_60 = Cpu{...@@ -293,7 +293,7 @@ pub const cpu_sm_60 = Cpu{
293pub const cpu_sm_61 = Cpu{293pub const cpu_sm_61 = Cpu{
294 .name = "sm_61",294 .name = "sm_61",
295 .llvm_name = "sm_61",295 .llvm_name = "sm_61",
296 .subfeatures = &[_]*const Feature {296 .dependencies = &[_]*const Feature {
297 &feature_ptx50,297 &feature_ptx50,
298 &feature_sm_61,298 &feature_sm_61,
299 },299 },
...@@ -302,7 +302,7 @@ pub const cpu_sm_61 = Cpu{...@@ -302,7 +302,7 @@ pub const cpu_sm_61 = Cpu{
302pub const cpu_sm_62 = Cpu{302pub const cpu_sm_62 = Cpu{
303 .name = "sm_62",303 .name = "sm_62",
304 .llvm_name = "sm_62",304 .llvm_name = "sm_62",
305 .subfeatures = &[_]*const Feature {305 .dependencies = &[_]*const Feature {
306 &feature_ptx50,306 &feature_ptx50,
307 &feature_sm_62,307 &feature_sm_62,
308 },308 },
...@@ -311,7 +311,7 @@ pub const cpu_sm_62 = Cpu{...@@ -311,7 +311,7 @@ pub const cpu_sm_62 = Cpu{
311pub const cpu_sm_70 = Cpu{311pub const cpu_sm_70 = Cpu{
312 .name = "sm_70",312 .name = "sm_70",
313 .llvm_name = "sm_70",313 .llvm_name = "sm_70",
314 .subfeatures = &[_]*const Feature {314 .dependencies = &[_]*const Feature {
315 &feature_ptx60,315 &feature_ptx60,
316 &feature_sm_70,316 &feature_sm_70,
317 },317 },
...@@ -320,7 +320,7 @@ pub const cpu_sm_70 = Cpu{...@@ -320,7 +320,7 @@ pub const cpu_sm_70 = Cpu{
320pub const cpu_sm_72 = Cpu{320pub const cpu_sm_72 = Cpu{
321 .name = "sm_72",321 .name = "sm_72",
322 .llvm_name = "sm_72",322 .llvm_name = "sm_72",
323 .subfeatures = &[_]*const Feature {323 .dependencies = &[_]*const Feature {
324 &feature_ptx61,324 &feature_ptx61,
325 &feature_sm_72,325 &feature_sm_72,
326 },326 },
...@@ -329,7 +329,7 @@ pub const cpu_sm_72 = Cpu{...@@ -329,7 +329,7 @@ pub const cpu_sm_72 = Cpu{
329pub const cpu_sm_75 = Cpu{329pub const cpu_sm_75 = Cpu{
330 .name = "sm_75",330 .name = "sm_75",
331 .llvm_name = "sm_75",331 .llvm_name = "sm_75",
332 .subfeatures = &[_]*const Feature {332 .dependencies = &[_]*const Feature {
333 &feature_ptx63,333 &feature_ptx63,
334 &feature_sm_75,334 &feature_sm_75,
335 },335 },
lib/std/target/powerpc.zig+88-88
...@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;...@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .description = "Enable 64-bit instructions",6 .description = "Enable 64-bit instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_bitregs64 = Feature{11pub const feature_bitregs64 = Feature{
12 .name = "64bitregs",12 .name = "64bitregs",
13 .description = "Enable 64-bit registers usage for ppc32 [beta]",13 .description = "Enable 64-bit registers usage for ppc32 [beta]",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_altivec = Feature{18pub const feature_altivec = Feature{
19 .name = "altivec",19 .name = "altivec",
20 .description = "Enable Altivec instructions",20 .description = "Enable Altivec instructions",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 &feature_hardFloat,22 &feature_hardFloat,
23 },23 },
24};24};
...@@ -26,14 +26,14 @@ pub const feature_altivec = Feature{...@@ -26,14 +26,14 @@ pub const feature_altivec = Feature{
26pub const feature_bpermd = Feature{26pub const feature_bpermd = Feature{
27 .name = "bpermd",27 .name = "bpermd",
28 .description = "Enable the bpermd instruction",28 .description = "Enable the bpermd instruction",
29 .subfeatures = &[_]*const Feature {29 .dependencies = &[_]*const Feature {
30 },30 },
31};31};
3232
33pub const feature_booke = Feature{33pub const feature_booke = Feature{
34 .name = "booke",34 .name = "booke",
35 .description = "Enable Book E instructions",35 .description = "Enable Book E instructions",
36 .subfeatures = &[_]*const Feature {36 .dependencies = &[_]*const Feature {
37 &feature_icbt,37 &feature_icbt,
38 },38 },
39};39};
...@@ -41,21 +41,21 @@ pub const feature_booke = Feature{...@@ -41,21 +41,21 @@ pub const feature_booke = Feature{
41pub const feature_cmpb = Feature{41pub const feature_cmpb = Feature{
42 .name = "cmpb",42 .name = "cmpb",
43 .description = "Enable the cmpb instruction",43 .description = "Enable the cmpb instruction",
44 .subfeatures = &[_]*const Feature {44 .dependencies = &[_]*const Feature {
45 },45 },
46};46};
4747
48pub const feature_crbits = Feature{48pub const feature_crbits = Feature{
49 .name = "crbits",49 .name = "crbits",
50 .description = "Use condition-register bits individually",50 .description = "Use condition-register bits individually",
51 .subfeatures = &[_]*const Feature {51 .dependencies = &[_]*const Feature {
52 },52 },
53};53};
5454
55pub const feature_directMove = Feature{55pub const feature_directMove = Feature{
56 .name = "direct-move",56 .name = "direct-move",
57 .description = "Enable Power8 direct move instructions",57 .description = "Enable Power8 direct move instructions",
58 .subfeatures = &[_]*const Feature {58 .dependencies = &[_]*const Feature {
59 &feature_hardFloat,59 &feature_hardFloat,
60 },60 },
61};61};
...@@ -63,21 +63,21 @@ pub const feature_directMove = Feature{...@@ -63,21 +63,21 @@ pub const feature_directMove = Feature{
63pub const feature_e500 = Feature{63pub const feature_e500 = Feature{
64 .name = "e500",64 .name = "e500",
65 .description = "Enable E500/E500mc instructions",65 .description = "Enable E500/E500mc instructions",
66 .subfeatures = &[_]*const Feature {66 .dependencies = &[_]*const Feature {
67 },67 },
68};68};
6969
70pub const feature_extdiv = Feature{70pub const feature_extdiv = Feature{
71 .name = "extdiv",71 .name = "extdiv",
72 .description = "Enable extended divide instructions",72 .description = "Enable extended divide instructions",
73 .subfeatures = &[_]*const Feature {73 .dependencies = &[_]*const Feature {
74 },74 },
75};75};
7676
77pub const feature_fcpsgn = Feature{77pub const feature_fcpsgn = Feature{
78 .name = "fcpsgn",78 .name = "fcpsgn",
79 .description = "Enable the fcpsgn instruction",79 .description = "Enable the fcpsgn instruction",
80 .subfeatures = &[_]*const Feature {80 .dependencies = &[_]*const Feature {
81 &feature_hardFloat,81 &feature_hardFloat,
82 },82 },
83};83};
...@@ -85,7 +85,7 @@ pub const feature_fcpsgn = Feature{...@@ -85,7 +85,7 @@ pub const feature_fcpsgn = Feature{
85pub const feature_fpcvt = Feature{85pub const feature_fpcvt = Feature{
86 .name = "fpcvt",86 .name = "fpcvt",
87 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",87 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
88 .subfeatures = &[_]*const Feature {88 .dependencies = &[_]*const Feature {
89 &feature_hardFloat,89 &feature_hardFloat,
90 },90 },
91};91};
...@@ -93,7 +93,7 @@ pub const feature_fpcvt = Feature{...@@ -93,7 +93,7 @@ pub const feature_fpcvt = Feature{
93pub const feature_fprnd = Feature{93pub const feature_fprnd = Feature{
94 .name = "fprnd",94 .name = "fprnd",
95 .description = "Enable the fri[mnpz] instructions",95 .description = "Enable the fri[mnpz] instructions",
96 .subfeatures = &[_]*const Feature {96 .dependencies = &[_]*const Feature {
97 &feature_hardFloat,97 &feature_hardFloat,
98 },98 },
99};99};
...@@ -101,7 +101,7 @@ pub const feature_fprnd = Feature{...@@ -101,7 +101,7 @@ pub const feature_fprnd = Feature{
101pub const feature_fpu = Feature{101pub const feature_fpu = Feature{
102 .name = "fpu",102 .name = "fpu",
103 .description = "Enable classic FPU instructions",103 .description = "Enable classic FPU instructions",
104 .subfeatures = &[_]*const Feature {104 .dependencies = &[_]*const Feature {
105 &feature_hardFloat,105 &feature_hardFloat,
106 },106 },
107};107};
...@@ -109,7 +109,7 @@ pub const feature_fpu = Feature{...@@ -109,7 +109,7 @@ pub const feature_fpu = Feature{
109pub const feature_fre = Feature{109pub const feature_fre = Feature{
110 .name = "fre",110 .name = "fre",
111 .description = "Enable the fre instruction",111 .description = "Enable the fre instruction",
112 .subfeatures = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
113 &feature_hardFloat,113 &feature_hardFloat,
114 },114 },
115};115};
...@@ -117,7 +117,7 @@ pub const feature_fre = Feature{...@@ -117,7 +117,7 @@ pub const feature_fre = Feature{
117pub const feature_fres = Feature{117pub const feature_fres = Feature{
118 .name = "fres",118 .name = "fres",
119 .description = "Enable the fres instruction",119 .description = "Enable the fres instruction",
120 .subfeatures = &[_]*const Feature {120 .dependencies = &[_]*const Feature {
121 &feature_hardFloat,121 &feature_hardFloat,
122 },122 },
123};123};
...@@ -125,7 +125,7 @@ pub const feature_fres = Feature{...@@ -125,7 +125,7 @@ pub const feature_fres = Feature{
125pub const feature_frsqrte = Feature{125pub const feature_frsqrte = Feature{
126 .name = "frsqrte",126 .name = "frsqrte",
127 .description = "Enable the frsqrte instruction",127 .description = "Enable the frsqrte instruction",
128 .subfeatures = &[_]*const Feature {128 .dependencies = &[_]*const Feature {
129 &feature_hardFloat,129 &feature_hardFloat,
130 },130 },
131};131};
...@@ -133,7 +133,7 @@ pub const feature_frsqrte = Feature{...@@ -133,7 +133,7 @@ pub const feature_frsqrte = Feature{
133pub const feature_frsqrtes = Feature{133pub const feature_frsqrtes = Feature{
134 .name = "frsqrtes",134 .name = "frsqrtes",
135 .description = "Enable the frsqrtes instruction",135 .description = "Enable the frsqrtes instruction",
136 .subfeatures = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
137 &feature_hardFloat,137 &feature_hardFloat,
138 },138 },
139};139};
...@@ -141,7 +141,7 @@ pub const feature_frsqrtes = Feature{...@@ -141,7 +141,7 @@ pub const feature_frsqrtes = Feature{
141pub const feature_fsqrt = Feature{141pub const feature_fsqrt = Feature{
142 .name = "fsqrt",142 .name = "fsqrt",
143 .description = "Enable the fsqrt instruction",143 .description = "Enable the fsqrt instruction",
144 .subfeatures = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
145 &feature_hardFloat,145 &feature_hardFloat,
146 },146 },
147};147};
...@@ -149,7 +149,7 @@ pub const feature_fsqrt = Feature{...@@ -149,7 +149,7 @@ pub const feature_fsqrt = Feature{
149pub const feature_float128 = Feature{149pub const feature_float128 = Feature{
150 .name = "float128",150 .name = "float128",
151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
152 .subfeatures = &[_]*const Feature {152 .dependencies = &[_]*const Feature {
153 &feature_hardFloat,153 &feature_hardFloat,
154 },154 },
155};155};
...@@ -157,56 +157,56 @@ pub const feature_float128 = Feature{...@@ -157,56 +157,56 @@ pub const feature_float128 = Feature{
157pub const feature_htm = Feature{157pub const feature_htm = Feature{
158 .name = "htm",158 .name = "htm",
159 .description = "Enable Hardware Transactional Memory instructions",159 .description = "Enable Hardware Transactional Memory instructions",
160 .subfeatures = &[_]*const Feature {160 .dependencies = &[_]*const Feature {
161 },161 },
162};162};
163163
164pub const feature_hardFloat = Feature{164pub const feature_hardFloat = Feature{
165 .name = "hard-float",165 .name = "hard-float",
166 .description = "Enable floating-point instructions",166 .description = "Enable floating-point instructions",
167 .subfeatures = &[_]*const Feature {167 .dependencies = &[_]*const Feature {
168 },168 },
169};169};
170170
171pub const feature_icbt = Feature{171pub const feature_icbt = Feature{
172 .name = "icbt",172 .name = "icbt",
173 .description = "Enable icbt instruction",173 .description = "Enable icbt instruction",
174 .subfeatures = &[_]*const Feature {174 .dependencies = &[_]*const Feature {
175 },175 },
176};176};
177177
178pub const feature_isaV30Instructions = Feature{178pub const feature_isaV30Instructions = Feature{
179 .name = "isa-v30-instructions",179 .name = "isa-v30-instructions",
180 .description = "Enable instructions added in ISA 3.0.",180 .description = "Enable instructions added in ISA 3.0.",
181 .subfeatures = &[_]*const Feature {181 .dependencies = &[_]*const Feature {
182 },182 },
183};183};
184184
185pub const feature_isel = Feature{185pub const feature_isel = Feature{
186 .name = "isel",186 .name = "isel",
187 .description = "Enable the isel instruction",187 .description = "Enable the isel instruction",
188 .subfeatures = &[_]*const Feature {188 .dependencies = &[_]*const Feature {
189 },189 },
190};190};
191191
192pub const feature_invariantFunctionDescriptors = Feature{192pub const feature_invariantFunctionDescriptors = Feature{
193 .name = "invariant-function-descriptors",193 .name = "invariant-function-descriptors",
194 .description = "Assume function descriptors are invariant",194 .description = "Assume function descriptors are invariant",
195 .subfeatures = &[_]*const Feature {195 .dependencies = &[_]*const Feature {
196 },196 },
197};197};
198198
199pub const feature_ldbrx = Feature{199pub const feature_ldbrx = Feature{
200 .name = "ldbrx",200 .name = "ldbrx",
201 .description = "Enable the ldbrx instruction",201 .description = "Enable the ldbrx instruction",
202 .subfeatures = &[_]*const Feature {202 .dependencies = &[_]*const Feature {
203 },203 },
204};204};
205205
206pub const feature_lfiwax = Feature{206pub const feature_lfiwax = Feature{
207 .name = "lfiwax",207 .name = "lfiwax",
208 .description = "Enable the lfiwax instruction",208 .description = "Enable the lfiwax instruction",
209 .subfeatures = &[_]*const Feature {209 .dependencies = &[_]*const Feature {
210 &feature_hardFloat,210 &feature_hardFloat,
211 },211 },
212};212};
...@@ -214,21 +214,21 @@ pub const feature_lfiwax = Feature{...@@ -214,21 +214,21 @@ pub const feature_lfiwax = Feature{
214pub const feature_longcall = Feature{214pub const feature_longcall = Feature{
215 .name = "longcall",215 .name = "longcall",
216 .description = "Always use indirect calls",216 .description = "Always use indirect calls",
217 .subfeatures = &[_]*const Feature {217 .dependencies = &[_]*const Feature {
218 },218 },
219};219};
220220
221pub const feature_mfocrf = Feature{221pub const feature_mfocrf = Feature{
222 .name = "mfocrf",222 .name = "mfocrf",
223 .description = "Enable the MFOCRF instruction",223 .description = "Enable the MFOCRF instruction",
224 .subfeatures = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
225 },225 },
226};226};
227227
228pub const feature_msync = Feature{228pub const feature_msync = Feature{
229 .name = "msync",229 .name = "msync",
230 .description = "Has only the msync instruction instead of sync",230 .description = "Has only the msync instruction instead of sync",
231 .subfeatures = &[_]*const Feature {231 .dependencies = &[_]*const Feature {
232 &feature_icbt,232 &feature_icbt,
233 },233 },
234};234};
...@@ -236,7 +236,7 @@ pub const feature_msync = Feature{...@@ -236,7 +236,7 @@ pub const feature_msync = Feature{
236pub const feature_power8Altivec = Feature{236pub const feature_power8Altivec = Feature{
237 .name = "power8-altivec",237 .name = "power8-altivec",
238 .description = "Enable POWER8 Altivec instructions",238 .description = "Enable POWER8 Altivec instructions",
239 .subfeatures = &[_]*const Feature {239 .dependencies = &[_]*const Feature {
240 &feature_hardFloat,240 &feature_hardFloat,
241 },241 },
242};242};
...@@ -244,7 +244,7 @@ pub const feature_power8Altivec = Feature{...@@ -244,7 +244,7 @@ pub const feature_power8Altivec = Feature{
244pub const feature_crypto = Feature{244pub const feature_crypto = Feature{
245 .name = "crypto",245 .name = "crypto",
246 .description = "Enable POWER8 Crypto instructions",246 .description = "Enable POWER8 Crypto instructions",
247 .subfeatures = &[_]*const Feature {247 .dependencies = &[_]*const Feature {
248 &feature_hardFloat,248 &feature_hardFloat,
249 },249 },
250};250};
...@@ -252,7 +252,7 @@ pub const feature_crypto = Feature{...@@ -252,7 +252,7 @@ pub const feature_crypto = Feature{
252pub const feature_power8Vector = Feature{252pub const feature_power8Vector = Feature{
253 .name = "power8-vector",253 .name = "power8-vector",
254 .description = "Enable POWER8 vector instructions",254 .description = "Enable POWER8 vector instructions",
255 .subfeatures = &[_]*const Feature {255 .dependencies = &[_]*const Feature {
256 &feature_hardFloat,256 &feature_hardFloat,
257 },257 },
258};258};
...@@ -260,7 +260,7 @@ pub const feature_power8Vector = Feature{...@@ -260,7 +260,7 @@ pub const feature_power8Vector = Feature{
260pub const feature_power9Altivec = Feature{260pub const feature_power9Altivec = Feature{
261 .name = "power9-altivec",261 .name = "power9-altivec",
262 .description = "Enable POWER9 Altivec instructions",262 .description = "Enable POWER9 Altivec instructions",
263 .subfeatures = &[_]*const Feature {263 .dependencies = &[_]*const Feature {
264 &feature_isaV30Instructions,264 &feature_isaV30Instructions,
265 &feature_hardFloat,265 &feature_hardFloat,
266 },266 },
...@@ -269,7 +269,7 @@ pub const feature_power9Altivec = Feature{...@@ -269,7 +269,7 @@ pub const feature_power9Altivec = Feature{
269pub const feature_power9Vector = Feature{269pub const feature_power9Vector = Feature{
270 .name = "power9-vector",270 .name = "power9-vector",
271 .description = "Enable POWER9 vector instructions",271 .description = "Enable POWER9 vector instructions",
272 .subfeatures = &[_]*const Feature {272 .dependencies = &[_]*const Feature {
273 &feature_isaV30Instructions,273 &feature_isaV30Instructions,
274 &feature_hardFloat,274 &feature_hardFloat,
275 },275 },
...@@ -278,49 +278,49 @@ pub const feature_power9Vector = Feature{...@@ -278,49 +278,49 @@ pub const feature_power9Vector = Feature{
278pub const feature_popcntd = Feature{278pub const feature_popcntd = Feature{
279 .name = "popcntd",279 .name = "popcntd",
280 .description = "Enable the popcnt[dw] instructions",280 .description = "Enable the popcnt[dw] instructions",
281 .subfeatures = &[_]*const Feature {281 .dependencies = &[_]*const Feature {
282 },282 },
283};283};
284284
285pub const feature_ppc4xx = Feature{285pub const feature_ppc4xx = Feature{
286 .name = "ppc4xx",286 .name = "ppc4xx",
287 .description = "Enable PPC 4xx instructions",287 .description = "Enable PPC 4xx instructions",
288 .subfeatures = &[_]*const Feature {288 .dependencies = &[_]*const Feature {
289 },289 },
290};290};
291291
292pub const feature_ppc6xx = Feature{292pub const feature_ppc6xx = Feature{
293 .name = "ppc6xx",293 .name = "ppc6xx",
294 .description = "Enable PPC 6xx instructions",294 .description = "Enable PPC 6xx instructions",
295 .subfeatures = &[_]*const Feature {295 .dependencies = &[_]*const Feature {
296 },296 },
297};297};
298298
299pub const feature_ppcPostraSched = Feature{299pub const feature_ppcPostraSched = Feature{
300 .name = "ppc-postra-sched",300 .name = "ppc-postra-sched",
301 .description = "Use PowerPC post-RA scheduling strategy",301 .description = "Use PowerPC post-RA scheduling strategy",
302 .subfeatures = &[_]*const Feature {302 .dependencies = &[_]*const Feature {
303 },303 },
304};304};
305305
306pub const feature_ppcPreraSched = Feature{306pub const feature_ppcPreraSched = Feature{
307 .name = "ppc-prera-sched",307 .name = "ppc-prera-sched",
308 .description = "Use PowerPC pre-RA scheduling strategy",308 .description = "Use PowerPC pre-RA scheduling strategy",
309 .subfeatures = &[_]*const Feature {309 .dependencies = &[_]*const Feature {
310 },310 },
311};311};
312312
313pub const feature_partwordAtomics = Feature{313pub const feature_partwordAtomics = Feature{
314 .name = "partword-atomics",314 .name = "partword-atomics",
315 .description = "Enable l[bh]arx and st[bh]cx.",315 .description = "Enable l[bh]arx and st[bh]cx.",
316 .subfeatures = &[_]*const Feature {316 .dependencies = &[_]*const Feature {
317 },317 },
318};318};
319319
320pub const feature_qpx = Feature{320pub const feature_qpx = Feature{
321 .name = "qpx",321 .name = "qpx",
322 .description = "Enable QPX instructions",322 .description = "Enable QPX instructions",
323 .subfeatures = &[_]*const Feature {323 .dependencies = &[_]*const Feature {
324 &feature_hardFloat,324 &feature_hardFloat,
325 },325 },
326};326};
...@@ -328,14 +328,14 @@ pub const feature_qpx = Feature{...@@ -328,14 +328,14 @@ pub const feature_qpx = Feature{
328pub const feature_recipprec = Feature{328pub const feature_recipprec = Feature{
329 .name = "recipprec",329 .name = "recipprec",
330 .description = "Assume higher precision reciprocal estimates",330 .description = "Assume higher precision reciprocal estimates",
331 .subfeatures = &[_]*const Feature {331 .dependencies = &[_]*const Feature {
332 },332 },
333};333};
334334
335pub const feature_spe = Feature{335pub const feature_spe = Feature{
336 .name = "spe",336 .name = "spe",
337 .description = "Enable SPE instructions",337 .description = "Enable SPE instructions",
338 .subfeatures = &[_]*const Feature {338 .dependencies = &[_]*const Feature {
339 &feature_hardFloat,339 &feature_hardFloat,
340 },340 },
341};341};
...@@ -343,7 +343,7 @@ pub const feature_spe = Feature{...@@ -343,7 +343,7 @@ pub const feature_spe = Feature{
343pub const feature_stfiwx = Feature{343pub const feature_stfiwx = Feature{
344 .name = "stfiwx",344 .name = "stfiwx",
345 .description = "Enable the stfiwx instruction",345 .description = "Enable the stfiwx instruction",
346 .subfeatures = &[_]*const Feature {346 .dependencies = &[_]*const Feature {
347 &feature_hardFloat,347 &feature_hardFloat,
348 },348 },
349};349};
...@@ -351,28 +351,28 @@ pub const feature_stfiwx = Feature{...@@ -351,28 +351,28 @@ pub const feature_stfiwx = Feature{
351pub const feature_securePlt = Feature{351pub const feature_securePlt = Feature{
352 .name = "secure-plt",352 .name = "secure-plt",
353 .description = "Enable secure plt mode",353 .description = "Enable secure plt mode",
354 .subfeatures = &[_]*const Feature {354 .dependencies = &[_]*const Feature {
355 },355 },
356};356};
357357
358pub const feature_slowPopcntd = Feature{358pub const feature_slowPopcntd = Feature{
359 .name = "slow-popcntd",359 .name = "slow-popcntd",
360 .description = "Has slow popcnt[dw] instructions",360 .description = "Has slow popcnt[dw] instructions",
361 .subfeatures = &[_]*const Feature {361 .dependencies = &[_]*const Feature {
362 },362 },
363};363};
364364
365pub const feature_twoConstNr = Feature{365pub const feature_twoConstNr = Feature{
366 .name = "two-const-nr",366 .name = "two-const-nr",
367 .description = "Requires two constant Newton-Raphson computation",367 .description = "Requires two constant Newton-Raphson computation",
368 .subfeatures = &[_]*const Feature {368 .dependencies = &[_]*const Feature {
369 },369 },
370};370};
371371
372pub const feature_vsx = Feature{372pub const feature_vsx = Feature{
373 .name = "vsx",373 .name = "vsx",
374 .description = "Enable VSX instructions",374 .description = "Enable VSX instructions",
375 .subfeatures = &[_]*const Feature {375 .dependencies = &[_]*const Feature {
376 &feature_hardFloat,376 &feature_hardFloat,
377 },377 },
378};378};
...@@ -380,7 +380,7 @@ pub const feature_vsx = Feature{...@@ -380,7 +380,7 @@ pub const feature_vsx = Feature{
380pub const feature_vectorsUseTwoUnits = Feature{380pub const feature_vectorsUseTwoUnits = Feature{
381 .name = "vectors-use-two-units",381 .name = "vectors-use-two-units",
382 .description = "Vectors use two units",382 .description = "Vectors use two units",
383 .subfeatures = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
384 },384 },
385};385};
386386
...@@ -441,7 +441,7 @@ pub const features = &[_]*const Feature {...@@ -441,7 +441,7 @@ pub const features = &[_]*const Feature {
441pub const cpu_440 = Cpu{441pub const cpu_440 = Cpu{
442 .name = "440",442 .name = "440",
443 .llvm_name = "440",443 .llvm_name = "440",
444 .subfeatures = &[_]*const Feature {444 .dependencies = &[_]*const Feature {
445 &feature_icbt,445 &feature_icbt,
446 &feature_booke,446 &feature_booke,
447 &feature_hardFloat,447 &feature_hardFloat,
...@@ -455,7 +455,7 @@ pub const cpu_440 = Cpu{...@@ -455,7 +455,7 @@ pub const cpu_440 = Cpu{
455pub const cpu_450 = Cpu{455pub const cpu_450 = Cpu{
456 .name = "450",456 .name = "450",
457 .llvm_name = "450",457 .llvm_name = "450",
458 .subfeatures = &[_]*const Feature {458 .dependencies = &[_]*const Feature {
459 &feature_icbt,459 &feature_icbt,
460 &feature_booke,460 &feature_booke,
461 &feature_hardFloat,461 &feature_hardFloat,
...@@ -469,7 +469,7 @@ pub const cpu_450 = Cpu{...@@ -469,7 +469,7 @@ pub const cpu_450 = Cpu{
469pub const cpu_601 = Cpu{469pub const cpu_601 = Cpu{
470 .name = "601",470 .name = "601",
471 .llvm_name = "601",471 .llvm_name = "601",
472 .subfeatures = &[_]*const Feature {472 .dependencies = &[_]*const Feature {
473 &feature_hardFloat,473 &feature_hardFloat,
474 &feature_fpu,474 &feature_fpu,
475 },475 },
...@@ -478,7 +478,7 @@ pub const cpu_601 = Cpu{...@@ -478,7 +478,7 @@ pub const cpu_601 = Cpu{
478pub const cpu_602 = Cpu{478pub const cpu_602 = Cpu{
479 .name = "602",479 .name = "602",
480 .llvm_name = "602",480 .llvm_name = "602",
481 .subfeatures = &[_]*const Feature {481 .dependencies = &[_]*const Feature {
482 &feature_hardFloat,482 &feature_hardFloat,
483 &feature_fpu,483 &feature_fpu,
484 },484 },
...@@ -487,7 +487,7 @@ pub const cpu_602 = Cpu{...@@ -487,7 +487,7 @@ pub const cpu_602 = Cpu{
487pub const cpu_603 = Cpu{487pub const cpu_603 = Cpu{
488 .name = "603",488 .name = "603",
489 .llvm_name = "603",489 .llvm_name = "603",
490 .subfeatures = &[_]*const Feature {490 .dependencies = &[_]*const Feature {
491 &feature_hardFloat,491 &feature_hardFloat,
492 &feature_fres,492 &feature_fres,
493 &feature_frsqrte,493 &feature_frsqrte,
...@@ -497,7 +497,7 @@ pub const cpu_603 = Cpu{...@@ -497,7 +497,7 @@ pub const cpu_603 = Cpu{
497pub const cpu_e603 = Cpu{497pub const cpu_e603 = Cpu{
498 .name = "603e",498 .name = "603e",
499 .llvm_name = "603e",499 .llvm_name = "603e",
500 .subfeatures = &[_]*const Feature {500 .dependencies = &[_]*const Feature {
501 &feature_hardFloat,501 &feature_hardFloat,
502 &feature_fres,502 &feature_fres,
503 &feature_frsqrte,503 &feature_frsqrte,
...@@ -507,7 +507,7 @@ pub const cpu_e603 = Cpu{...@@ -507,7 +507,7 @@ pub const cpu_e603 = Cpu{
507pub const cpu_ev603 = Cpu{507pub const cpu_ev603 = Cpu{
508 .name = "603ev",508 .name = "603ev",
509 .llvm_name = "603ev",509 .llvm_name = "603ev",
510 .subfeatures = &[_]*const Feature {510 .dependencies = &[_]*const Feature {
511 &feature_hardFloat,511 &feature_hardFloat,
512 &feature_fres,512 &feature_fres,
513 &feature_frsqrte,513 &feature_frsqrte,
...@@ -517,7 +517,7 @@ pub const cpu_ev603 = Cpu{...@@ -517,7 +517,7 @@ pub const cpu_ev603 = Cpu{
517pub const cpu_604 = Cpu{517pub const cpu_604 = Cpu{
518 .name = "604",518 .name = "604",
519 .llvm_name = "604",519 .llvm_name = "604",
520 .subfeatures = &[_]*const Feature {520 .dependencies = &[_]*const Feature {
521 &feature_hardFloat,521 &feature_hardFloat,
522 &feature_fres,522 &feature_fres,
523 &feature_frsqrte,523 &feature_frsqrte,
...@@ -527,7 +527,7 @@ pub const cpu_604 = Cpu{...@@ -527,7 +527,7 @@ pub const cpu_604 = Cpu{
527pub const cpu_e604 = Cpu{527pub const cpu_e604 = Cpu{
528 .name = "604e",528 .name = "604e",
529 .llvm_name = "604e",529 .llvm_name = "604e",
530 .subfeatures = &[_]*const Feature {530 .dependencies = &[_]*const Feature {
531 &feature_hardFloat,531 &feature_hardFloat,
532 &feature_fres,532 &feature_fres,
533 &feature_frsqrte,533 &feature_frsqrte,
...@@ -537,7 +537,7 @@ pub const cpu_e604 = Cpu{...@@ -537,7 +537,7 @@ pub const cpu_e604 = Cpu{
537pub const cpu_620 = Cpu{537pub const cpu_620 = Cpu{
538 .name = "620",538 .name = "620",
539 .llvm_name = "620",539 .llvm_name = "620",
540 .subfeatures = &[_]*const Feature {540 .dependencies = &[_]*const Feature {
541 &feature_hardFloat,541 &feature_hardFloat,
542 &feature_fres,542 &feature_fres,
543 &feature_frsqrte,543 &feature_frsqrte,
...@@ -547,7 +547,7 @@ pub const cpu_620 = Cpu{...@@ -547,7 +547,7 @@ pub const cpu_620 = Cpu{
547pub const cpu_7400 = Cpu{547pub const cpu_7400 = Cpu{
548 .name = "7400",548 .name = "7400",
549 .llvm_name = "7400",549 .llvm_name = "7400",
550 .subfeatures = &[_]*const Feature {550 .dependencies = &[_]*const Feature {
551 &feature_hardFloat,551 &feature_hardFloat,
552 &feature_altivec,552 &feature_altivec,
553 &feature_fres,553 &feature_fres,
...@@ -558,7 +558,7 @@ pub const cpu_7400 = Cpu{...@@ -558,7 +558,7 @@ pub const cpu_7400 = Cpu{
558pub const cpu_7450 = Cpu{558pub const cpu_7450 = Cpu{
559 .name = "7450",559 .name = "7450",
560 .llvm_name = "7450",560 .llvm_name = "7450",
561 .subfeatures = &[_]*const Feature {561 .dependencies = &[_]*const Feature {
562 &feature_hardFloat,562 &feature_hardFloat,
563 &feature_altivec,563 &feature_altivec,
564 &feature_fres,564 &feature_fres,
...@@ -569,7 +569,7 @@ pub const cpu_7450 = Cpu{...@@ -569,7 +569,7 @@ pub const cpu_7450 = Cpu{
569pub const cpu_750 = Cpu{569pub const cpu_750 = Cpu{
570 .name = "750",570 .name = "750",
571 .llvm_name = "750",571 .llvm_name = "750",
572 .subfeatures = &[_]*const Feature {572 .dependencies = &[_]*const Feature {
573 &feature_hardFloat,573 &feature_hardFloat,
574 &feature_fres,574 &feature_fres,
575 &feature_frsqrte,575 &feature_frsqrte,
...@@ -579,7 +579,7 @@ pub const cpu_750 = Cpu{...@@ -579,7 +579,7 @@ pub const cpu_750 = Cpu{
579pub const cpu_970 = Cpu{579pub const cpu_970 = Cpu{
580 .name = "970",580 .name = "970",
581 .llvm_name = "970",581 .llvm_name = "970",
582 .subfeatures = &[_]*const Feature {582 .dependencies = &[_]*const Feature {
583 &feature_bit64,583 &feature_bit64,
584 &feature_hardFloat,584 &feature_hardFloat,
585 &feature_altivec,585 &feature_altivec,
...@@ -594,7 +594,7 @@ pub const cpu_970 = Cpu{...@@ -594,7 +594,7 @@ pub const cpu_970 = Cpu{
594pub const cpu_a2 = Cpu{594pub const cpu_a2 = Cpu{
595 .name = "a2",595 .name = "a2",
596 .llvm_name = "a2",596 .llvm_name = "a2",
597 .subfeatures = &[_]*const Feature {597 .dependencies = &[_]*const Feature {
598 &feature_bit64,598 &feature_bit64,
599 &feature_icbt,599 &feature_icbt,
600 &feature_booke,600 &feature_booke,
...@@ -621,7 +621,7 @@ pub const cpu_a2 = Cpu{...@@ -621,7 +621,7 @@ pub const cpu_a2 = Cpu{
621pub const cpu_a2q = Cpu{621pub const cpu_a2q = Cpu{
622 .name = "a2q",622 .name = "a2q",
623 .llvm_name = "a2q",623 .llvm_name = "a2q",
624 .subfeatures = &[_]*const Feature {624 .dependencies = &[_]*const Feature {
625 &feature_bit64,625 &feature_bit64,
626 &feature_icbt,626 &feature_icbt,
627 &feature_booke,627 &feature_booke,
...@@ -649,7 +649,7 @@ pub const cpu_a2q = Cpu{...@@ -649,7 +649,7 @@ pub const cpu_a2q = Cpu{
649pub const cpu_e500 = Cpu{649pub const cpu_e500 = Cpu{
650 .name = "e500",650 .name = "e500",
651 .llvm_name = "e500",651 .llvm_name = "e500",
652 .subfeatures = &[_]*const Feature {652 .dependencies = &[_]*const Feature {
653 &feature_icbt,653 &feature_icbt,
654 &feature_booke,654 &feature_booke,
655 &feature_isel,655 &feature_isel,
...@@ -659,7 +659,7 @@ pub const cpu_e500 = Cpu{...@@ -659,7 +659,7 @@ pub const cpu_e500 = Cpu{
659pub const cpu_e500mc = Cpu{659pub const cpu_e500mc = Cpu{
660 .name = "e500mc",660 .name = "e500mc",
661 .llvm_name = "e500mc",661 .llvm_name = "e500mc",
662 .subfeatures = &[_]*const Feature {662 .dependencies = &[_]*const Feature {
663 &feature_icbt,663 &feature_icbt,
664 &feature_booke,664 &feature_booke,
665 &feature_isel,665 &feature_isel,
...@@ -671,7 +671,7 @@ pub const cpu_e500mc = Cpu{...@@ -671,7 +671,7 @@ pub const cpu_e500mc = Cpu{
671pub const cpu_e5500 = Cpu{671pub const cpu_e5500 = Cpu{
672 .name = "e5500",672 .name = "e5500",
673 .llvm_name = "e5500",673 .llvm_name = "e5500",
674 .subfeatures = &[_]*const Feature {674 .dependencies = &[_]*const Feature {
675 &feature_bit64,675 &feature_bit64,
676 &feature_icbt,676 &feature_icbt,
677 &feature_booke,677 &feature_booke,
...@@ -685,7 +685,7 @@ pub const cpu_e5500 = Cpu{...@@ -685,7 +685,7 @@ pub const cpu_e5500 = Cpu{
685pub const cpu_g3 = Cpu{685pub const cpu_g3 = Cpu{
686 .name = "g3",686 .name = "g3",
687 .llvm_name = "g3",687 .llvm_name = "g3",
688 .subfeatures = &[_]*const Feature {688 .dependencies = &[_]*const Feature {
689 &feature_hardFloat,689 &feature_hardFloat,
690 &feature_fres,690 &feature_fres,
691 &feature_frsqrte,691 &feature_frsqrte,
...@@ -695,7 +695,7 @@ pub const cpu_g3 = Cpu{...@@ -695,7 +695,7 @@ pub const cpu_g3 = Cpu{
695pub const cpu_g4 = Cpu{695pub const cpu_g4 = Cpu{
696 .name = "g4",696 .name = "g4",
697 .llvm_name = "g4",697 .llvm_name = "g4",
698 .subfeatures = &[_]*const Feature {698 .dependencies = &[_]*const Feature {
699 &feature_hardFloat,699 &feature_hardFloat,
700 &feature_altivec,700 &feature_altivec,
701 &feature_fres,701 &feature_fres,
...@@ -706,7 +706,7 @@ pub const cpu_g4 = Cpu{...@@ -706,7 +706,7 @@ pub const cpu_g4 = Cpu{
706pub const cpu_g4Plus = Cpu{706pub const cpu_g4Plus = Cpu{
707 .name = "g4+",707 .name = "g4+",
708 .llvm_name = "g4+",708 .llvm_name = "g4+",
709 .subfeatures = &[_]*const Feature {709 .dependencies = &[_]*const Feature {
710 &feature_hardFloat,710 &feature_hardFloat,
711 &feature_altivec,711 &feature_altivec,
712 &feature_fres,712 &feature_fres,
...@@ -717,7 +717,7 @@ pub const cpu_g4Plus = Cpu{...@@ -717,7 +717,7 @@ pub const cpu_g4Plus = Cpu{
717pub const cpu_g5 = Cpu{717pub const cpu_g5 = Cpu{
718 .name = "g5",718 .name = "g5",
719 .llvm_name = "g5",719 .llvm_name = "g5",
720 .subfeatures = &[_]*const Feature {720 .dependencies = &[_]*const Feature {
721 &feature_bit64,721 &feature_bit64,
722 &feature_hardFloat,722 &feature_hardFloat,
723 &feature_altivec,723 &feature_altivec,
...@@ -732,7 +732,7 @@ pub const cpu_g5 = Cpu{...@@ -732,7 +732,7 @@ pub const cpu_g5 = Cpu{
732pub const cpu_generic = Cpu{732pub const cpu_generic = Cpu{
733 .name = "generic",733 .name = "generic",
734 .llvm_name = "generic",734 .llvm_name = "generic",
735 .subfeatures = &[_]*const Feature {735 .dependencies = &[_]*const Feature {
736 &feature_hardFloat,736 &feature_hardFloat,
737 },737 },
738};738};
...@@ -740,7 +740,7 @@ pub const cpu_generic = Cpu{...@@ -740,7 +740,7 @@ pub const cpu_generic = Cpu{
740pub const cpu_ppc = Cpu{740pub const cpu_ppc = Cpu{
741 .name = "ppc",741 .name = "ppc",
742 .llvm_name = "ppc",742 .llvm_name = "ppc",
743 .subfeatures = &[_]*const Feature {743 .dependencies = &[_]*const Feature {
744 &feature_hardFloat,744 &feature_hardFloat,
745 },745 },
746};746};
...@@ -748,7 +748,7 @@ pub const cpu_ppc = Cpu{...@@ -748,7 +748,7 @@ pub const cpu_ppc = Cpu{
748pub const cpu_ppc32 = Cpu{748pub const cpu_ppc32 = Cpu{
749 .name = "ppc32",749 .name = "ppc32",
750 .llvm_name = "ppc32",750 .llvm_name = "ppc32",
751 .subfeatures = &[_]*const Feature {751 .dependencies = &[_]*const Feature {
752 &feature_hardFloat,752 &feature_hardFloat,
753 },753 },
754};754};
...@@ -756,7 +756,7 @@ pub const cpu_ppc32 = Cpu{...@@ -756,7 +756,7 @@ pub const cpu_ppc32 = Cpu{
756pub const cpu_ppc64 = Cpu{756pub const cpu_ppc64 = Cpu{
757 .name = "ppc64",757 .name = "ppc64",
758 .llvm_name = "ppc64",758 .llvm_name = "ppc64",
759 .subfeatures = &[_]*const Feature {759 .dependencies = &[_]*const Feature {
760 &feature_bit64,760 &feature_bit64,
761 &feature_hardFloat,761 &feature_hardFloat,
762 &feature_altivec,762 &feature_altivec,
...@@ -771,7 +771,7 @@ pub const cpu_ppc64 = Cpu{...@@ -771,7 +771,7 @@ pub const cpu_ppc64 = Cpu{
771pub const cpu_ppc64le = Cpu{771pub const cpu_ppc64le = Cpu{
772 .name = "ppc64le",772 .name = "ppc64le",
773 .llvm_name = "ppc64le",773 .llvm_name = "ppc64le",
774 .subfeatures = &[_]*const Feature {774 .dependencies = &[_]*const Feature {
775 &feature_bit64,775 &feature_bit64,
776 &feature_hardFloat,776 &feature_hardFloat,
777 &feature_altivec,777 &feature_altivec,
...@@ -808,7 +808,7 @@ pub const cpu_ppc64le = Cpu{...@@ -808,7 +808,7 @@ pub const cpu_ppc64le = Cpu{
808pub const cpu_pwr3 = Cpu{808pub const cpu_pwr3 = Cpu{
809 .name = "pwr3",809 .name = "pwr3",
810 .llvm_name = "pwr3",810 .llvm_name = "pwr3",
811 .subfeatures = &[_]*const Feature {811 .dependencies = &[_]*const Feature {
812 &feature_bit64,812 &feature_bit64,
813 &feature_hardFloat,813 &feature_hardFloat,
814 &feature_altivec,814 &feature_altivec,
...@@ -822,7 +822,7 @@ pub const cpu_pwr3 = Cpu{...@@ -822,7 +822,7 @@ pub const cpu_pwr3 = Cpu{
822pub const cpu_pwr4 = Cpu{822pub const cpu_pwr4 = Cpu{
823 .name = "pwr4",823 .name = "pwr4",
824 .llvm_name = "pwr4",824 .llvm_name = "pwr4",
825 .subfeatures = &[_]*const Feature {825 .dependencies = &[_]*const Feature {
826 &feature_bit64,826 &feature_bit64,
827 &feature_hardFloat,827 &feature_hardFloat,
828 &feature_altivec,828 &feature_altivec,
...@@ -837,7 +837,7 @@ pub const cpu_pwr4 = Cpu{...@@ -837,7 +837,7 @@ pub const cpu_pwr4 = Cpu{
837pub const cpu_pwr5 = Cpu{837pub const cpu_pwr5 = Cpu{
838 .name = "pwr5",838 .name = "pwr5",
839 .llvm_name = "pwr5",839 .llvm_name = "pwr5",
840 .subfeatures = &[_]*const Feature {840 .dependencies = &[_]*const Feature {
841 &feature_bit64,841 &feature_bit64,
842 &feature_hardFloat,842 &feature_hardFloat,
843 &feature_altivec,843 &feature_altivec,
...@@ -854,7 +854,7 @@ pub const cpu_pwr5 = Cpu{...@@ -854,7 +854,7 @@ pub const cpu_pwr5 = Cpu{
854pub const cpu_pwr5x = Cpu{854pub const cpu_pwr5x = Cpu{
855 .name = "pwr5x",855 .name = "pwr5x",
856 .llvm_name = "pwr5x",856 .llvm_name = "pwr5x",
857 .subfeatures = &[_]*const Feature {857 .dependencies = &[_]*const Feature {
858 &feature_bit64,858 &feature_bit64,
859 &feature_hardFloat,859 &feature_hardFloat,
860 &feature_altivec,860 &feature_altivec,
...@@ -872,7 +872,7 @@ pub const cpu_pwr5x = Cpu{...@@ -872,7 +872,7 @@ pub const cpu_pwr5x = Cpu{
872pub const cpu_pwr6 = Cpu{872pub const cpu_pwr6 = Cpu{
873 .name = "pwr6",873 .name = "pwr6",
874 .llvm_name = "pwr6",874 .llvm_name = "pwr6",
875 .subfeatures = &[_]*const Feature {875 .dependencies = &[_]*const Feature {
876 &feature_bit64,876 &feature_bit64,
877 &feature_hardFloat,877 &feature_hardFloat,
878 &feature_altivec,878 &feature_altivec,
...@@ -894,7 +894,7 @@ pub const cpu_pwr6 = Cpu{...@@ -894,7 +894,7 @@ pub const cpu_pwr6 = Cpu{
894pub const cpu_pwr6x = Cpu{894pub const cpu_pwr6x = Cpu{
895 .name = "pwr6x",895 .name = "pwr6x",
896 .llvm_name = "pwr6x",896 .llvm_name = "pwr6x",
897 .subfeatures = &[_]*const Feature {897 .dependencies = &[_]*const Feature {
898 &feature_bit64,898 &feature_bit64,
899 &feature_hardFloat,899 &feature_hardFloat,
900 &feature_altivec,900 &feature_altivec,
...@@ -916,7 +916,7 @@ pub const cpu_pwr6x = Cpu{...@@ -916,7 +916,7 @@ pub const cpu_pwr6x = Cpu{
916pub const cpu_pwr7 = Cpu{916pub const cpu_pwr7 = Cpu{
917 .name = "pwr7",917 .name = "pwr7",
918 .llvm_name = "pwr7",918 .llvm_name = "pwr7",
919 .subfeatures = &[_]*const Feature {919 .dependencies = &[_]*const Feature {
920 &feature_bit64,920 &feature_bit64,
921 &feature_hardFloat,921 &feature_hardFloat,
922 &feature_altivec,922 &feature_altivec,
...@@ -946,7 +946,7 @@ pub const cpu_pwr7 = Cpu{...@@ -946,7 +946,7 @@ pub const cpu_pwr7 = Cpu{
946pub const cpu_pwr8 = Cpu{946pub const cpu_pwr8 = Cpu{
947 .name = "pwr8",947 .name = "pwr8",
948 .llvm_name = "pwr8",948 .llvm_name = "pwr8",
949 .subfeatures = &[_]*const Feature {949 .dependencies = &[_]*const Feature {
950 &feature_bit64,950 &feature_bit64,
951 &feature_hardFloat,951 &feature_hardFloat,
952 &feature_altivec,952 &feature_altivec,
...@@ -983,7 +983,7 @@ pub const cpu_pwr8 = Cpu{...@@ -983,7 +983,7 @@ pub const cpu_pwr8 = Cpu{
983pub const cpu_pwr9 = Cpu{983pub const cpu_pwr9 = Cpu{
984 .name = "pwr9",984 .name = "pwr9",
985 .llvm_name = "pwr9",985 .llvm_name = "pwr9",
986 .subfeatures = &[_]*const Feature {986 .dependencies = &[_]*const Feature {
987 &feature_bit64,987 &feature_bit64,
988 &feature_hardFloat,988 &feature_hardFloat,
989 &feature_altivec,989 &feature_altivec,
lib/std/target/riscv.zig+11-11
...@@ -4,49 +4,49 @@ const Cpu = @import("std").target.Cpu;...@@ -4,49 +4,49 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_bit64 = Feature{4pub const feature_bit64 = Feature{
5 .name = "64bit",5 .name = "64bit",
6 .description = "Implements RV64",6 .description = "Implements RV64",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_e = Feature{11pub const feature_e = Feature{
12 .name = "e",12 .name = "e",
13 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",13 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_rvcHints = Feature{18pub const feature_rvcHints = Feature{
19 .name = "rvc-hints",19 .name = "rvc-hints",
20 .description = "Enable RVC Hint Instructions.",20 .description = "Enable RVC Hint Instructions.",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_relax = Feature{25pub const feature_relax = Feature{
26 .name = "relax",26 .name = "relax",
27 .description = "Enable Linker relaxation.",27 .description = "Enable Linker relaxation.",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_a = Feature{32pub const feature_a = Feature{
33 .name = "a",33 .name = "a",
34 .description = "'A' (Atomic Instructions)",34 .description = "'A' (Atomic Instructions)",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_c = Feature{39pub const feature_c = Feature{
40 .name = "c",40 .name = "c",
41 .description = "'C' (Compressed Instructions)",41 .description = "'C' (Compressed Instructions)",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_d = Feature{46pub const feature_d = Feature{
47 .name = "d",47 .name = "d",
48 .description = "'D' (Double-Precision Floating-Point)",48 .description = "'D' (Double-Precision Floating-Point)",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 &feature_f,50 &feature_f,
51 },51 },
52};52};
...@@ -54,14 +54,14 @@ pub const feature_d = Feature{...@@ -54,14 +54,14 @@ pub const feature_d = Feature{
54pub const feature_f = Feature{54pub const feature_f = Feature{
55 .name = "f",55 .name = "f",
56 .description = "'F' (Single-Precision Floating-Point)",56 .description = "'F' (Single-Precision Floating-Point)",
57 .subfeatures = &[_]*const Feature {57 .dependencies = &[_]*const Feature {
58 },58 },
59};59};
6060
61pub const feature_m = Feature{61pub const feature_m = Feature{
62 .name = "m",62 .name = "m",
63 .description = "'M' (Integer Multiplication and Division)",63 .description = "'M' (Integer Multiplication and Division)",
64 .subfeatures = &[_]*const Feature {64 .dependencies = &[_]*const Feature {
65 },65 },
66};66};
6767
...@@ -80,7 +80,7 @@ pub const features = &[_]*const Feature {...@@ -80,7 +80,7 @@ pub const features = &[_]*const Feature {
80pub const cpu_genericRv32 = Cpu{80pub const cpu_genericRv32 = Cpu{
81 .name = "generic-rv32",81 .name = "generic-rv32",
82 .llvm_name = "generic-rv32",82 .llvm_name = "generic-rv32",
83 .subfeatures = &[_]*const Feature {83 .dependencies = &[_]*const Feature {
84 &feature_rvcHints,84 &feature_rvcHints,
85 },85 },
86};86};
...@@ -88,7 +88,7 @@ pub const cpu_genericRv32 = Cpu{...@@ -88,7 +88,7 @@ pub const cpu_genericRv32 = Cpu{
88pub const cpu_genericRv64 = Cpu{88pub const cpu_genericRv64 = Cpu{
89 .name = "generic-rv64",89 .name = "generic-rv64",
90 .llvm_name = "generic-rv64",90 .llvm_name = "generic-rv64",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 &feature_bit64,92 &feature_bit64,
93 &feature_rvcHints,93 &feature_rvcHints,
94 },94 },
lib/std/target/sparc.zig+52-52
...@@ -4,84 +4,84 @@ const Cpu = @import("std").target.Cpu;...@@ -4,84 +4,84 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_hardQuadFloat = Feature{4pub const feature_hardQuadFloat = Feature{
5 .name = "hard-quad-float",5 .name = "hard-quad-float",
6 .description = "Enable quad-word floating point instructions",6 .description = "Enable quad-word floating point instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_leon = Feature{11pub const feature_leon = Feature{
12 .name = "leon",12 .name = "leon",
13 .description = "Enable LEON extensions",13 .description = "Enable LEON extensions",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_noFmuls = Feature{18pub const feature_noFmuls = Feature{
19 .name = "no-fmuls",19 .name = "no-fmuls",
20 .description = "Disable the fmuls instruction.",20 .description = "Disable the fmuls instruction.",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_noFsmuld = Feature{25pub const feature_noFsmuld = Feature{
26 .name = "no-fsmuld",26 .name = "no-fsmuld",
27 .description = "Disable the fsmuld instruction.",27 .description = "Disable the fsmuld instruction.",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_leonpwrpsr = Feature{32pub const feature_leonpwrpsr = Feature{
33 .name = "leonpwrpsr",33 .name = "leonpwrpsr",
34 .description = "Enable the PWRPSR instruction",34 .description = "Enable the PWRPSR instruction",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_softFloat = Feature{39pub const feature_softFloat = Feature{
40 .name = "soft-float",40 .name = "soft-float",
41 .description = "Use software emulation for floating point",41 .description = "Use software emulation for floating point",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_softMulDiv = Feature{46pub const feature_softMulDiv = Feature{
47 .name = "soft-mul-div",47 .name = "soft-mul-div",
48 .description = "Use software emulation for integer multiply and divide",48 .description = "Use software emulation for integer multiply and divide",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_deprecatedV8 = Feature{53pub const feature_deprecatedV8 = Feature{
54 .name = "deprecated-v8",54 .name = "deprecated-v8",
55 .description = "Enable deprecated V8 instructions in V9 mode",55 .description = "Enable deprecated V8 instructions in V9 mode",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_v9 = Feature{60pub const feature_v9 = Feature{
61 .name = "v9",61 .name = "v9",
62 .description = "Enable SPARC-V9 instructions",62 .description = "Enable SPARC-V9 instructions",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_vis = Feature{67pub const feature_vis = Feature{
68 .name = "vis",68 .name = "vis",
69 .description = "Enable UltraSPARC Visual Instruction Set extensions",69 .description = "Enable UltraSPARC Visual Instruction Set extensions",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 },71 },
72};72};
7373
74pub const feature_vis2 = Feature{74pub const feature_vis2 = Feature{
75 .name = "vis2",75 .name = "vis2",
76 .description = "Enable Visual Instruction Set extensions II",76 .description = "Enable Visual Instruction Set extensions II",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 },78 },
79};79};
8080
81pub const feature_vis3 = Feature{81pub const feature_vis3 = Feature{
82 .name = "vis3",82 .name = "vis3",
83 .description = "Enable Visual Instruction Set extensions III",83 .description = "Enable Visual Instruction Set extensions III",
84 .subfeatures = &[_]*const Feature {84 .dependencies = &[_]*const Feature {
85 },85 },
86};86};
8787
...@@ -103,7 +103,7 @@ pub const features = &[_]*const Feature {...@@ -103,7 +103,7 @@ pub const features = &[_]*const Feature {
103pub const cpu_at697e = Cpu{103pub const cpu_at697e = Cpu{
104 .name = "at697e",104 .name = "at697e",
105 .llvm_name = "at697e",105 .llvm_name = "at697e",
106 .subfeatures = &[_]*const Feature {106 .dependencies = &[_]*const Feature {
107 &feature_leon,107 &feature_leon,
108 },108 },
109};109};
...@@ -111,7 +111,7 @@ pub const cpu_at697e = Cpu{...@@ -111,7 +111,7 @@ pub const cpu_at697e = Cpu{
111pub const cpu_at697f = Cpu{111pub const cpu_at697f = Cpu{
112 .name = "at697f",112 .name = "at697f",
113 .llvm_name = "at697f",113 .llvm_name = "at697f",
114 .subfeatures = &[_]*const Feature {114 .dependencies = &[_]*const Feature {
115 &feature_leon,115 &feature_leon,
116 },116 },
117};117};
...@@ -119,21 +119,21 @@ pub const cpu_at697f = Cpu{...@@ -119,21 +119,21 @@ pub const cpu_at697f = Cpu{
119pub const cpu_f934 = Cpu{119pub const cpu_f934 = Cpu{
120 .name = "f934",120 .name = "f934",
121 .llvm_name = "f934",121 .llvm_name = "f934",
122 .subfeatures = &[_]*const Feature {122 .dependencies = &[_]*const Feature {
123 },123 },
124};124};
125125
126pub const cpu_generic = Cpu{126pub const cpu_generic = Cpu{
127 .name = "generic",127 .name = "generic",
128 .llvm_name = "generic",128 .llvm_name = "generic",
129 .subfeatures = &[_]*const Feature {129 .dependencies = &[_]*const Feature {
130 },130 },
131};131};
132132
133pub const cpu_gr712rc = Cpu{133pub const cpu_gr712rc = Cpu{
134 .name = "gr712rc",134 .name = "gr712rc",
135 .llvm_name = "gr712rc",135 .llvm_name = "gr712rc",
136 .subfeatures = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
137 &feature_leon,137 &feature_leon,
138 },138 },
139};139};
...@@ -141,7 +141,7 @@ pub const cpu_gr712rc = Cpu{...@@ -141,7 +141,7 @@ pub const cpu_gr712rc = Cpu{
141pub const cpu_gr740 = Cpu{141pub const cpu_gr740 = Cpu{
142 .name = "gr740",142 .name = "gr740",
143 .llvm_name = "gr740",143 .llvm_name = "gr740",
144 .subfeatures = &[_]*const Feature {144 .dependencies = &[_]*const Feature {
145 &feature_leon,145 &feature_leon,
146 &feature_leonpwrpsr,146 &feature_leonpwrpsr,
147 },147 },
...@@ -150,14 +150,14 @@ pub const cpu_gr740 = Cpu{...@@ -150,14 +150,14 @@ pub const cpu_gr740 = Cpu{
150pub const cpu_hypersparc = Cpu{150pub const cpu_hypersparc = Cpu{
151 .name = "hypersparc",151 .name = "hypersparc",
152 .llvm_name = "hypersparc",152 .llvm_name = "hypersparc",
153 .subfeatures = &[_]*const Feature {153 .dependencies = &[_]*const Feature {
154 },154 },
155};155};
156156
157pub const cpu_leon2 = Cpu{157pub const cpu_leon2 = Cpu{
158 .name = "leon2",158 .name = "leon2",
159 .llvm_name = "leon2",159 .llvm_name = "leon2",
160 .subfeatures = &[_]*const Feature {160 .dependencies = &[_]*const Feature {
161 &feature_leon,161 &feature_leon,
162 },162 },
163};163};
...@@ -165,7 +165,7 @@ pub const cpu_leon2 = Cpu{...@@ -165,7 +165,7 @@ pub const cpu_leon2 = Cpu{
165pub const cpu_leon3 = Cpu{165pub const cpu_leon3 = Cpu{
166 .name = "leon3",166 .name = "leon3",
167 .llvm_name = "leon3",167 .llvm_name = "leon3",
168 .subfeatures = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
169 &feature_leon,169 &feature_leon,
170 },170 },
171};171};
...@@ -173,7 +173,7 @@ pub const cpu_leon3 = Cpu{...@@ -173,7 +173,7 @@ pub const cpu_leon3 = Cpu{
173pub const cpu_leon4 = Cpu{173pub const cpu_leon4 = Cpu{
174 .name = "leon4",174 .name = "leon4",
175 .llvm_name = "leon4",175 .llvm_name = "leon4",
176 .subfeatures = &[_]*const Feature {176 .dependencies = &[_]*const Feature {
177 &feature_leon,177 &feature_leon,
178 },178 },
179};179};
...@@ -181,7 +181,7 @@ pub const cpu_leon4 = Cpu{...@@ -181,7 +181,7 @@ pub const cpu_leon4 = Cpu{
181pub const cpu_ma2080 = Cpu{181pub const cpu_ma2080 = Cpu{
182 .name = "ma2080",182 .name = "ma2080",
183 .llvm_name = "ma2080",183 .llvm_name = "ma2080",
184 .subfeatures = &[_]*const Feature {184 .dependencies = &[_]*const Feature {
185 &feature_leon,185 &feature_leon,
186 },186 },
187};187};
...@@ -189,7 +189,7 @@ pub const cpu_ma2080 = Cpu{...@@ -189,7 +189,7 @@ pub const cpu_ma2080 = Cpu{
189pub const cpu_ma2085 = Cpu{189pub const cpu_ma2085 = Cpu{
190 .name = "ma2085",190 .name = "ma2085",
191 .llvm_name = "ma2085",191 .llvm_name = "ma2085",
192 .subfeatures = &[_]*const Feature {192 .dependencies = &[_]*const Feature {
193 &feature_leon,193 &feature_leon,
194 },194 },
195};195};
...@@ -197,7 +197,7 @@ pub const cpu_ma2085 = Cpu{...@@ -197,7 +197,7 @@ pub const cpu_ma2085 = Cpu{
197pub const cpu_ma2100 = Cpu{197pub const cpu_ma2100 = Cpu{
198 .name = "ma2100",198 .name = "ma2100",
199 .llvm_name = "ma2100",199 .llvm_name = "ma2100",
200 .subfeatures = &[_]*const Feature {200 .dependencies = &[_]*const Feature {
201 &feature_leon,201 &feature_leon,
202 },202 },
203};203};
...@@ -205,7 +205,7 @@ pub const cpu_ma2100 = Cpu{...@@ -205,7 +205,7 @@ pub const cpu_ma2100 = Cpu{
205pub const cpu_ma2150 = Cpu{205pub const cpu_ma2150 = Cpu{
206 .name = "ma2150",206 .name = "ma2150",
207 .llvm_name = "ma2150",207 .llvm_name = "ma2150",
208 .subfeatures = &[_]*const Feature {208 .dependencies = &[_]*const Feature {
209 &feature_leon,209 &feature_leon,
210 },210 },
211};211};
...@@ -213,7 +213,7 @@ pub const cpu_ma2150 = Cpu{...@@ -213,7 +213,7 @@ pub const cpu_ma2150 = Cpu{
213pub const cpu_ma2155 = Cpu{213pub const cpu_ma2155 = Cpu{
214 .name = "ma2155",214 .name = "ma2155",
215 .llvm_name = "ma2155",215 .llvm_name = "ma2155",
216 .subfeatures = &[_]*const Feature {216 .dependencies = &[_]*const Feature {
217 &feature_leon,217 &feature_leon,
218 },218 },
219};219};
...@@ -221,7 +221,7 @@ pub const cpu_ma2155 = Cpu{...@@ -221,7 +221,7 @@ pub const cpu_ma2155 = Cpu{
221pub const cpu_ma2450 = Cpu{221pub const cpu_ma2450 = Cpu{
222 .name = "ma2450",222 .name = "ma2450",
223 .llvm_name = "ma2450",223 .llvm_name = "ma2450",
224 .subfeatures = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
225 &feature_leon,225 &feature_leon,
226 },226 },
227};227};
...@@ -229,7 +229,7 @@ pub const cpu_ma2450 = Cpu{...@@ -229,7 +229,7 @@ pub const cpu_ma2450 = Cpu{
229pub const cpu_ma2455 = Cpu{229pub const cpu_ma2455 = Cpu{
230 .name = "ma2455",230 .name = "ma2455",
231 .llvm_name = "ma2455",231 .llvm_name = "ma2455",
232 .subfeatures = &[_]*const Feature {232 .dependencies = &[_]*const Feature {
233 &feature_leon,233 &feature_leon,
234 },234 },
235};235};
...@@ -237,7 +237,7 @@ pub const cpu_ma2455 = Cpu{...@@ -237,7 +237,7 @@ pub const cpu_ma2455 = Cpu{
237pub const cpu_ma2480 = Cpu{237pub const cpu_ma2480 = Cpu{
238 .name = "ma2480",238 .name = "ma2480",
239 .llvm_name = "ma2480",239 .llvm_name = "ma2480",
240 .subfeatures = &[_]*const Feature {240 .dependencies = &[_]*const Feature {
241 &feature_leon,241 &feature_leon,
242 },242 },
243};243};
...@@ -245,7 +245,7 @@ pub const cpu_ma2480 = Cpu{...@@ -245,7 +245,7 @@ pub const cpu_ma2480 = Cpu{
245pub const cpu_ma2485 = Cpu{245pub const cpu_ma2485 = Cpu{
246 .name = "ma2485",246 .name = "ma2485",
247 .llvm_name = "ma2485",247 .llvm_name = "ma2485",
248 .subfeatures = &[_]*const Feature {248 .dependencies = &[_]*const Feature {
249 &feature_leon,249 &feature_leon,
250 },250 },
251};251};
...@@ -253,7 +253,7 @@ pub const cpu_ma2485 = Cpu{...@@ -253,7 +253,7 @@ pub const cpu_ma2485 = Cpu{
253pub const cpu_ma2x5x = Cpu{253pub const cpu_ma2x5x = Cpu{
254 .name = "ma2x5x",254 .name = "ma2x5x",
255 .llvm_name = "ma2x5x",255 .llvm_name = "ma2x5x",
256 .subfeatures = &[_]*const Feature {256 .dependencies = &[_]*const Feature {
257 &feature_leon,257 &feature_leon,
258 },258 },
259};259};
...@@ -261,7 +261,7 @@ pub const cpu_ma2x5x = Cpu{...@@ -261,7 +261,7 @@ pub const cpu_ma2x5x = Cpu{
261pub const cpu_ma2x8x = Cpu{261pub const cpu_ma2x8x = Cpu{
262 .name = "ma2x8x",262 .name = "ma2x8x",
263 .llvm_name = "ma2x8x",263 .llvm_name = "ma2x8x",
264 .subfeatures = &[_]*const Feature {264 .dependencies = &[_]*const Feature {
265 &feature_leon,265 &feature_leon,
266 },266 },
267};267};
...@@ -269,7 +269,7 @@ pub const cpu_ma2x8x = Cpu{...@@ -269,7 +269,7 @@ pub const cpu_ma2x8x = Cpu{
269pub const cpu_myriad2 = Cpu{269pub const cpu_myriad2 = Cpu{
270 .name = "myriad2",270 .name = "myriad2",
271 .llvm_name = "myriad2",271 .llvm_name = "myriad2",
272 .subfeatures = &[_]*const Feature {272 .dependencies = &[_]*const Feature {
273 &feature_leon,273 &feature_leon,
274 },274 },
275};275};
...@@ -277,7 +277,7 @@ pub const cpu_myriad2 = Cpu{...@@ -277,7 +277,7 @@ pub const cpu_myriad2 = Cpu{
277pub const cpu_myriad21 = Cpu{277pub const cpu_myriad21 = Cpu{
278 .name = "myriad2.1",278 .name = "myriad2.1",
279 .llvm_name = "myriad2.1",279 .llvm_name = "myriad2.1",
280 .subfeatures = &[_]*const Feature {280 .dependencies = &[_]*const Feature {
281 &feature_leon,281 &feature_leon,
282 },282 },
283};283};
...@@ -285,7 +285,7 @@ pub const cpu_myriad21 = Cpu{...@@ -285,7 +285,7 @@ pub const cpu_myriad21 = Cpu{
285pub const cpu_myriad22 = Cpu{285pub const cpu_myriad22 = Cpu{
286 .name = "myriad2.2",286 .name = "myriad2.2",
287 .llvm_name = "myriad2.2",287 .llvm_name = "myriad2.2",
288 .subfeatures = &[_]*const Feature {288 .dependencies = &[_]*const Feature {
289 &feature_leon,289 &feature_leon,
290 },290 },
291};291};
...@@ -293,7 +293,7 @@ pub const cpu_myriad22 = Cpu{...@@ -293,7 +293,7 @@ pub const cpu_myriad22 = Cpu{
293pub const cpu_myriad23 = Cpu{293pub const cpu_myriad23 = Cpu{
294 .name = "myriad2.3",294 .name = "myriad2.3",
295 .llvm_name = "myriad2.3",295 .llvm_name = "myriad2.3",
296 .subfeatures = &[_]*const Feature {296 .dependencies = &[_]*const Feature {
297 &feature_leon,297 &feature_leon,
298 },298 },
299};299};
...@@ -301,7 +301,7 @@ pub const cpu_myriad23 = Cpu{...@@ -301,7 +301,7 @@ pub const cpu_myriad23 = Cpu{
301pub const cpu_niagara = Cpu{301pub const cpu_niagara = Cpu{
302 .name = "niagara",302 .name = "niagara",
303 .llvm_name = "niagara",303 .llvm_name = "niagara",
304 .subfeatures = &[_]*const Feature {304 .dependencies = &[_]*const Feature {
305 &feature_deprecatedV8,305 &feature_deprecatedV8,
306 &feature_v9,306 &feature_v9,
307 &feature_vis,307 &feature_vis,
...@@ -312,7 +312,7 @@ pub const cpu_niagara = Cpu{...@@ -312,7 +312,7 @@ pub const cpu_niagara = Cpu{
312pub const cpu_niagara2 = Cpu{312pub const cpu_niagara2 = Cpu{
313 .name = "niagara2",313 .name = "niagara2",
314 .llvm_name = "niagara2",314 .llvm_name = "niagara2",
315 .subfeatures = &[_]*const Feature {315 .dependencies = &[_]*const Feature {
316 &feature_deprecatedV8,316 &feature_deprecatedV8,
317 &feature_v9,317 &feature_v9,
318 &feature_vis,318 &feature_vis,
...@@ -323,7 +323,7 @@ pub const cpu_niagara2 = Cpu{...@@ -323,7 +323,7 @@ pub const cpu_niagara2 = Cpu{
323pub const cpu_niagara3 = Cpu{323pub const cpu_niagara3 = Cpu{
324 .name = "niagara3",324 .name = "niagara3",
325 .llvm_name = "niagara3",325 .llvm_name = "niagara3",
326 .subfeatures = &[_]*const Feature {326 .dependencies = &[_]*const Feature {
327 &feature_deprecatedV8,327 &feature_deprecatedV8,
328 &feature_v9,328 &feature_v9,
329 &feature_vis,329 &feature_vis,
...@@ -334,7 +334,7 @@ pub const cpu_niagara3 = Cpu{...@@ -334,7 +334,7 @@ pub const cpu_niagara3 = Cpu{
334pub const cpu_niagara4 = Cpu{334pub const cpu_niagara4 = Cpu{
335 .name = "niagara4",335 .name = "niagara4",
336 .llvm_name = "niagara4",336 .llvm_name = "niagara4",
337 .subfeatures = &[_]*const Feature {337 .dependencies = &[_]*const Feature {
338 &feature_deprecatedV8,338 &feature_deprecatedV8,
339 &feature_v9,339 &feature_v9,
340 &feature_vis,340 &feature_vis,
...@@ -346,42 +346,42 @@ pub const cpu_niagara4 = Cpu{...@@ -346,42 +346,42 @@ pub const cpu_niagara4 = Cpu{
346pub const cpu_sparclet = Cpu{346pub const cpu_sparclet = Cpu{
347 .name = "sparclet",347 .name = "sparclet",
348 .llvm_name = "sparclet",348 .llvm_name = "sparclet",
349 .subfeatures = &[_]*const Feature {349 .dependencies = &[_]*const Feature {
350 },350 },
351};351};
352352
353pub const cpu_sparclite = Cpu{353pub const cpu_sparclite = Cpu{
354 .name = "sparclite",354 .name = "sparclite",
355 .llvm_name = "sparclite",355 .llvm_name = "sparclite",
356 .subfeatures = &[_]*const Feature {356 .dependencies = &[_]*const Feature {
357 },357 },
358};358};
359359
360pub const cpu_sparclite86x = Cpu{360pub const cpu_sparclite86x = Cpu{
361 .name = "sparclite86x",361 .name = "sparclite86x",
362 .llvm_name = "sparclite86x",362 .llvm_name = "sparclite86x",
363 .subfeatures = &[_]*const Feature {363 .dependencies = &[_]*const Feature {
364 },364 },
365};365};
366366
367pub const cpu_supersparc = Cpu{367pub const cpu_supersparc = Cpu{
368 .name = "supersparc",368 .name = "supersparc",
369 .llvm_name = "supersparc",369 .llvm_name = "supersparc",
370 .subfeatures = &[_]*const Feature {370 .dependencies = &[_]*const Feature {
371 },371 },
372};372};
373373
374pub const cpu_tsc701 = Cpu{374pub const cpu_tsc701 = Cpu{
375 .name = "tsc701",375 .name = "tsc701",
376 .llvm_name = "tsc701",376 .llvm_name = "tsc701",
377 .subfeatures = &[_]*const Feature {377 .dependencies = &[_]*const Feature {
378 },378 },
379};379};
380380
381pub const cpu_ultrasparc = Cpu{381pub const cpu_ultrasparc = Cpu{
382 .name = "ultrasparc",382 .name = "ultrasparc",
383 .llvm_name = "ultrasparc",383 .llvm_name = "ultrasparc",
384 .subfeatures = &[_]*const Feature {384 .dependencies = &[_]*const Feature {
385 &feature_deprecatedV8,385 &feature_deprecatedV8,
386 &feature_v9,386 &feature_v9,
387 &feature_vis,387 &feature_vis,
...@@ -391,7 +391,7 @@ pub const cpu_ultrasparc = Cpu{...@@ -391,7 +391,7 @@ pub const cpu_ultrasparc = Cpu{
391pub const cpu_ultrasparc3 = Cpu{391pub const cpu_ultrasparc3 = Cpu{
392 .name = "ultrasparc3",392 .name = "ultrasparc3",
393 .llvm_name = "ultrasparc3",393 .llvm_name = "ultrasparc3",
394 .subfeatures = &[_]*const Feature {394 .dependencies = &[_]*const Feature {
395 &feature_deprecatedV8,395 &feature_deprecatedV8,
396 &feature_v9,396 &feature_v9,
397 &feature_vis,397 &feature_vis,
...@@ -402,7 +402,7 @@ pub const cpu_ultrasparc3 = Cpu{...@@ -402,7 +402,7 @@ pub const cpu_ultrasparc3 = Cpu{
402pub const cpu_ut699 = Cpu{402pub const cpu_ut699 = Cpu{
403 .name = "ut699",403 .name = "ut699",
404 .llvm_name = "ut699",404 .llvm_name = "ut699",
405 .subfeatures = &[_]*const Feature {405 .dependencies = &[_]*const Feature {
406 &feature_leon,406 &feature_leon,
407 &feature_noFmuls,407 &feature_noFmuls,
408 &feature_noFsmuld,408 &feature_noFsmuld,
...@@ -412,7 +412,7 @@ pub const cpu_ut699 = Cpu{...@@ -412,7 +412,7 @@ pub const cpu_ut699 = Cpu{
412pub const cpu_v7 = Cpu{412pub const cpu_v7 = Cpu{
413 .name = "v7",413 .name = "v7",
414 .llvm_name = "v7",414 .llvm_name = "v7",
415 .subfeatures = &[_]*const Feature {415 .dependencies = &[_]*const Feature {
416 &feature_noFsmuld,416 &feature_noFsmuld,
417 &feature_softMulDiv,417 &feature_softMulDiv,
418 },418 },
...@@ -421,14 +421,14 @@ pub const cpu_v7 = Cpu{...@@ -421,14 +421,14 @@ pub const cpu_v7 = Cpu{
421pub const cpu_v8 = Cpu{421pub const cpu_v8 = Cpu{
422 .name = "v8",422 .name = "v8",
423 .llvm_name = "v8",423 .llvm_name = "v8",
424 .subfeatures = &[_]*const Feature {424 .dependencies = &[_]*const Feature {
425 },425 },
426};426};
427427
428pub const cpu_v9 = Cpu{428pub const cpu_v9 = Cpu{
429 .name = "v9",429 .name = "v9",
430 .llvm_name = "v9",430 .llvm_name = "v9",
431 .subfeatures = &[_]*const Feature {431 .dependencies = &[_]*const Feature {
432 &feature_v9,432 &feature_v9,
433 },433 },
434};434};
lib/std/target/systemz.zig+48-48
...@@ -4,245 +4,245 @@ const Cpu = @import("std").target.Cpu;...@@ -4,245 +4,245 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_dfpPackedConversion = Feature{4pub const feature_dfpPackedConversion = Feature{
5 .name = "dfp-packed-conversion",5 .name = "dfp-packed-conversion",
6 .description = "Assume that the DFP packed-conversion facility is installed",6 .description = "Assume that the DFP packed-conversion facility is installed",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_dfpZonedConversion = Feature{11pub const feature_dfpZonedConversion = Feature{
12 .name = "dfp-zoned-conversion",12 .name = "dfp-zoned-conversion",
13 .description = "Assume that the DFP zoned-conversion facility is installed",13 .description = "Assume that the DFP zoned-conversion facility is installed",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_deflateConversion = Feature{18pub const feature_deflateConversion = Feature{
19 .name = "deflate-conversion",19 .name = "deflate-conversion",
20 .description = "Assume that the deflate-conversion facility is installed",20 .description = "Assume that the deflate-conversion facility is installed",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_distinctOps = Feature{25pub const feature_distinctOps = Feature{
26 .name = "distinct-ops",26 .name = "distinct-ops",
27 .description = "Assume that the distinct-operands facility is installed",27 .description = "Assume that the distinct-operands facility is installed",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_enhancedDat2 = Feature{32pub const feature_enhancedDat2 = Feature{
33 .name = "enhanced-dat-2",33 .name = "enhanced-dat-2",
34 .description = "Assume that the enhanced-DAT facility 2 is installed",34 .description = "Assume that the enhanced-DAT facility 2 is installed",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_enhancedSort = Feature{39pub const feature_enhancedSort = Feature{
40 .name = "enhanced-sort",40 .name = "enhanced-sort",
41 .description = "Assume that the enhanced-sort facility is installed",41 .description = "Assume that the enhanced-sort facility is installed",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_executionHint = Feature{46pub const feature_executionHint = Feature{
47 .name = "execution-hint",47 .name = "execution-hint",
48 .description = "Assume that the execution-hint facility is installed",48 .description = "Assume that the execution-hint facility is installed",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_fpExtension = Feature{53pub const feature_fpExtension = Feature{
54 .name = "fp-extension",54 .name = "fp-extension",
55 .description = "Assume that the floating-point extension facility is installed",55 .description = "Assume that the floating-point extension facility is installed",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_fastSerialization = Feature{60pub const feature_fastSerialization = Feature{
61 .name = "fast-serialization",61 .name = "fast-serialization",
62 .description = "Assume that the fast-serialization facility is installed",62 .description = "Assume that the fast-serialization facility is installed",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_guardedStorage = Feature{67pub const feature_guardedStorage = Feature{
68 .name = "guarded-storage",68 .name = "guarded-storage",
69 .description = "Assume that the guarded-storage facility is installed",69 .description = "Assume that the guarded-storage facility is installed",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 },71 },
72};72};
7373
74pub const feature_highWord = Feature{74pub const feature_highWord = Feature{
75 .name = "high-word",75 .name = "high-word",
76 .description = "Assume that the high-word facility is installed",76 .description = "Assume that the high-word facility is installed",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 },78 },
79};79};
8080
81pub const feature_insertReferenceBitsMultiple = Feature{81pub const feature_insertReferenceBitsMultiple = Feature{
82 .name = "insert-reference-bits-multiple",82 .name = "insert-reference-bits-multiple",
83 .description = "Assume that the insert-reference-bits-multiple facility is installed",83 .description = "Assume that the insert-reference-bits-multiple facility is installed",
84 .subfeatures = &[_]*const Feature {84 .dependencies = &[_]*const Feature {
85 },85 },
86};86};
8787
88pub const feature_interlockedAccess1 = Feature{88pub const feature_interlockedAccess1 = Feature{
89 .name = "interlocked-access1",89 .name = "interlocked-access1",
90 .description = "Assume that interlocked-access facility 1 is installed",90 .description = "Assume that interlocked-access facility 1 is installed",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 },92 },
93};93};
9494
95pub const feature_loadAndTrap = Feature{95pub const feature_loadAndTrap = Feature{
96 .name = "load-and-trap",96 .name = "load-and-trap",
97 .description = "Assume that the load-and-trap facility is installed",97 .description = "Assume that the load-and-trap facility is installed",
98 .subfeatures = &[_]*const Feature {98 .dependencies = &[_]*const Feature {
99 },99 },
100};100};
101101
102pub const feature_loadAndZeroRightmostByte = Feature{102pub const feature_loadAndZeroRightmostByte = Feature{
103 .name = "load-and-zero-rightmost-byte",103 .name = "load-and-zero-rightmost-byte",
104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
105 .subfeatures = &[_]*const Feature {105 .dependencies = &[_]*const Feature {
106 },106 },
107};107};
108108
109pub const feature_loadStoreOnCond = Feature{109pub const feature_loadStoreOnCond = Feature{
110 .name = "load-store-on-cond",110 .name = "load-store-on-cond",
111 .description = "Assume that the load/store-on-condition facility is installed",111 .description = "Assume that the load/store-on-condition facility is installed",
112 .subfeatures = &[_]*const Feature {112 .dependencies = &[_]*const Feature {
113 },113 },
114};114};
115115
116pub const feature_loadStoreOnCond2 = Feature{116pub const feature_loadStoreOnCond2 = Feature{
117 .name = "load-store-on-cond-2",117 .name = "load-store-on-cond-2",
118 .description = "Assume that the load/store-on-condition facility 2 is installed",118 .description = "Assume that the load/store-on-condition facility 2 is installed",
119 .subfeatures = &[_]*const Feature {119 .dependencies = &[_]*const Feature {
120 },120 },
121};121};
122122
123pub const feature_messageSecurityAssistExtension3 = Feature{123pub const feature_messageSecurityAssistExtension3 = Feature{
124 .name = "message-security-assist-extension3",124 .name = "message-security-assist-extension3",
125 .description = "Assume that the message-security-assist extension facility 3 is installed",125 .description = "Assume that the message-security-assist extension facility 3 is installed",
126 .subfeatures = &[_]*const Feature {126 .dependencies = &[_]*const Feature {
127 },127 },
128};128};
129129
130pub const feature_messageSecurityAssistExtension4 = Feature{130pub const feature_messageSecurityAssistExtension4 = Feature{
131 .name = "message-security-assist-extension4",131 .name = "message-security-assist-extension4",
132 .description = "Assume that the message-security-assist extension facility 4 is installed",132 .description = "Assume that the message-security-assist extension facility 4 is installed",
133 .subfeatures = &[_]*const Feature {133 .dependencies = &[_]*const Feature {
134 },134 },
135};135};
136136
137pub const feature_messageSecurityAssistExtension5 = Feature{137pub const feature_messageSecurityAssistExtension5 = Feature{
138 .name = "message-security-assist-extension5",138 .name = "message-security-assist-extension5",
139 .description = "Assume that the message-security-assist extension facility 5 is installed",139 .description = "Assume that the message-security-assist extension facility 5 is installed",
140 .subfeatures = &[_]*const Feature {140 .dependencies = &[_]*const Feature {
141 },141 },
142};142};
143143
144pub const feature_messageSecurityAssistExtension7 = Feature{144pub const feature_messageSecurityAssistExtension7 = Feature{
145 .name = "message-security-assist-extension7",145 .name = "message-security-assist-extension7",
146 .description = "Assume that the message-security-assist extension facility 7 is installed",146 .description = "Assume that the message-security-assist extension facility 7 is installed",
147 .subfeatures = &[_]*const Feature {147 .dependencies = &[_]*const Feature {
148 },148 },
149};149};
150150
151pub const feature_messageSecurityAssistExtension8 = Feature{151pub const feature_messageSecurityAssistExtension8 = Feature{
152 .name = "message-security-assist-extension8",152 .name = "message-security-assist-extension8",
153 .description = "Assume that the message-security-assist extension facility 8 is installed",153 .description = "Assume that the message-security-assist extension facility 8 is installed",
154 .subfeatures = &[_]*const Feature {154 .dependencies = &[_]*const Feature {
155 },155 },
156};156};
157157
158pub const feature_messageSecurityAssistExtension9 = Feature{158pub const feature_messageSecurityAssistExtension9 = Feature{
159 .name = "message-security-assist-extension9",159 .name = "message-security-assist-extension9",
160 .description = "Assume that the message-security-assist extension facility 9 is installed",160 .description = "Assume that the message-security-assist extension facility 9 is installed",
161 .subfeatures = &[_]*const Feature {161 .dependencies = &[_]*const Feature {
162 },162 },
163};163};
164164
165pub const feature_miscellaneousExtensions = Feature{165pub const feature_miscellaneousExtensions = Feature{
166 .name = "miscellaneous-extensions",166 .name = "miscellaneous-extensions",
167 .description = "Assume that the miscellaneous-extensions facility is installed",167 .description = "Assume that the miscellaneous-extensions facility is installed",
168 .subfeatures = &[_]*const Feature {168 .dependencies = &[_]*const Feature {
169 },169 },
170};170};
171171
172pub const feature_miscellaneousExtensions2 = Feature{172pub const feature_miscellaneousExtensions2 = Feature{
173 .name = "miscellaneous-extensions-2",173 .name = "miscellaneous-extensions-2",
174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
175 .subfeatures = &[_]*const Feature {175 .dependencies = &[_]*const Feature {
176 },176 },
177};177};
178178
179pub const feature_miscellaneousExtensions3 = Feature{179pub const feature_miscellaneousExtensions3 = Feature{
180 .name = "miscellaneous-extensions-3",180 .name = "miscellaneous-extensions-3",
181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
182 .subfeatures = &[_]*const Feature {182 .dependencies = &[_]*const Feature {
183 },183 },
184};184};
185185
186pub const feature_populationCount = Feature{186pub const feature_populationCount = Feature{
187 .name = "population-count",187 .name = "population-count",
188 .description = "Assume that the population-count facility is installed",188 .description = "Assume that the population-count facility is installed",
189 .subfeatures = &[_]*const Feature {189 .dependencies = &[_]*const Feature {
190 },190 },
191};191};
192192
193pub const feature_processorAssist = Feature{193pub const feature_processorAssist = Feature{
194 .name = "processor-assist",194 .name = "processor-assist",
195 .description = "Assume that the processor-assist facility is installed",195 .description = "Assume that the processor-assist facility is installed",
196 .subfeatures = &[_]*const Feature {196 .dependencies = &[_]*const Feature {
197 },197 },
198};198};
199199
200pub const feature_resetReferenceBitsMultiple = Feature{200pub const feature_resetReferenceBitsMultiple = Feature{
201 .name = "reset-reference-bits-multiple",201 .name = "reset-reference-bits-multiple",
202 .description = "Assume that the reset-reference-bits-multiple facility is installed",202 .description = "Assume that the reset-reference-bits-multiple facility is installed",
203 .subfeatures = &[_]*const Feature {203 .dependencies = &[_]*const Feature {
204 },204 },
205};205};
206206
207pub const feature_transactionalExecution = Feature{207pub const feature_transactionalExecution = Feature{
208 .name = "transactional-execution",208 .name = "transactional-execution",
209 .description = "Assume that the transactional-execution facility is installed",209 .description = "Assume that the transactional-execution facility is installed",
210 .subfeatures = &[_]*const Feature {210 .dependencies = &[_]*const Feature {
211 },211 },
212};212};
213213
214pub const feature_vector = Feature{214pub const feature_vector = Feature{
215 .name = "vector",215 .name = "vector",
216 .description = "Assume that the vectory facility is installed",216 .description = "Assume that the vectory facility is installed",
217 .subfeatures = &[_]*const Feature {217 .dependencies = &[_]*const Feature {
218 },218 },
219};219};
220220
221pub const feature_vectorEnhancements1 = Feature{221pub const feature_vectorEnhancements1 = Feature{
222 .name = "vector-enhancements-1",222 .name = "vector-enhancements-1",
223 .description = "Assume that the vector enhancements facility 1 is installed",223 .description = "Assume that the vector enhancements facility 1 is installed",
224 .subfeatures = &[_]*const Feature {224 .dependencies = &[_]*const Feature {
225 },225 },
226};226};
227227
228pub const feature_vectorEnhancements2 = Feature{228pub const feature_vectorEnhancements2 = Feature{
229 .name = "vector-enhancements-2",229 .name = "vector-enhancements-2",
230 .description = "Assume that the vector enhancements facility 2 is installed",230 .description = "Assume that the vector enhancements facility 2 is installed",
231 .subfeatures = &[_]*const Feature {231 .dependencies = &[_]*const Feature {
232 },232 },
233};233};
234234
235pub const feature_vectorPackedDecimal = Feature{235pub const feature_vectorPackedDecimal = Feature{
236 .name = "vector-packed-decimal",236 .name = "vector-packed-decimal",
237 .description = "Assume that the vector packed decimal facility is installed",237 .description = "Assume that the vector packed decimal facility is installed",
238 .subfeatures = &[_]*const Feature {238 .dependencies = &[_]*const Feature {
239 },239 },
240};240};
241241
242pub const feature_vectorPackedDecimalEnhancement = Feature{242pub const feature_vectorPackedDecimalEnhancement = Feature{
243 .name = "vector-packed-decimal-enhancement",243 .name = "vector-packed-decimal-enhancement",
244 .description = "Assume that the vector packed decimal enhancement facility is installed",244 .description = "Assume that the vector packed decimal enhancement facility is installed",
245 .subfeatures = &[_]*const Feature {245 .dependencies = &[_]*const Feature {
246 },246 },
247};247};
248248
...@@ -287,7 +287,7 @@ pub const features = &[_]*const Feature {...@@ -287,7 +287,7 @@ pub const features = &[_]*const Feature {
287pub const cpu_arch10 = Cpu{287pub const cpu_arch10 = Cpu{
288 .name = "arch10",288 .name = "arch10",
289 .llvm_name = "arch10",289 .llvm_name = "arch10",
290 .subfeatures = &[_]*const Feature {290 .dependencies = &[_]*const Feature {
291 &feature_dfpZonedConversion,291 &feature_dfpZonedConversion,
292 &feature_distinctOps,292 &feature_distinctOps,
293 &feature_enhancedDat2,293 &feature_enhancedDat2,
...@@ -311,7 +311,7 @@ pub const cpu_arch10 = Cpu{...@@ -311,7 +311,7 @@ pub const cpu_arch10 = Cpu{
311pub const cpu_arch11 = Cpu{311pub const cpu_arch11 = Cpu{
312 .name = "arch11",312 .name = "arch11",
313 .llvm_name = "arch11",313 .llvm_name = "arch11",
314 .subfeatures = &[_]*const Feature {314 .dependencies = &[_]*const Feature {
315 &feature_dfpPackedConversion,315 &feature_dfpPackedConversion,
316 &feature_dfpZonedConversion,316 &feature_dfpZonedConversion,
317 &feature_distinctOps,317 &feature_distinctOps,
...@@ -340,7 +340,7 @@ pub const cpu_arch11 = Cpu{...@@ -340,7 +340,7 @@ pub const cpu_arch11 = Cpu{
340pub const cpu_arch12 = Cpu{340pub const cpu_arch12 = Cpu{
341 .name = "arch12",341 .name = "arch12",
342 .llvm_name = "arch12",342 .llvm_name = "arch12",
343 .subfeatures = &[_]*const Feature {343 .dependencies = &[_]*const Feature {
344 &feature_dfpPackedConversion,344 &feature_dfpPackedConversion,
345 &feature_dfpZonedConversion,345 &feature_dfpZonedConversion,
346 &feature_distinctOps,346 &feature_distinctOps,
...@@ -376,7 +376,7 @@ pub const cpu_arch12 = Cpu{...@@ -376,7 +376,7 @@ pub const cpu_arch12 = Cpu{
376pub const cpu_arch13 = Cpu{376pub const cpu_arch13 = Cpu{
377 .name = "arch13",377 .name = "arch13",
378 .llvm_name = "arch13",378 .llvm_name = "arch13",
379 .subfeatures = &[_]*const Feature {379 .dependencies = &[_]*const Feature {
380 &feature_dfpPackedConversion,380 &feature_dfpPackedConversion,
381 &feature_dfpZonedConversion,381 &feature_dfpZonedConversion,
382 &feature_deflateConversion,382 &feature_deflateConversion,
...@@ -418,14 +418,14 @@ pub const cpu_arch13 = Cpu{...@@ -418,14 +418,14 @@ pub const cpu_arch13 = Cpu{
418pub const cpu_arch8 = Cpu{418pub const cpu_arch8 = Cpu{
419 .name = "arch8",419 .name = "arch8",
420 .llvm_name = "arch8",420 .llvm_name = "arch8",
421 .subfeatures = &[_]*const Feature {421 .dependencies = &[_]*const Feature {
422 },422 },
423};423};
424424
425pub const cpu_arch9 = Cpu{425pub const cpu_arch9 = Cpu{
426 .name = "arch9",426 .name = "arch9",
427 .llvm_name = "arch9",427 .llvm_name = "arch9",
428 .subfeatures = &[_]*const Feature {428 .dependencies = &[_]*const Feature {
429 &feature_distinctOps,429 &feature_distinctOps,
430 &feature_fpExtension,430 &feature_fpExtension,
431 &feature_fastSerialization,431 &feature_fastSerialization,
...@@ -442,21 +442,21 @@ pub const cpu_arch9 = Cpu{...@@ -442,21 +442,21 @@ pub const cpu_arch9 = Cpu{
442pub const cpu_generic = Cpu{442pub const cpu_generic = Cpu{
443 .name = "generic",443 .name = "generic",
444 .llvm_name = "generic",444 .llvm_name = "generic",
445 .subfeatures = &[_]*const Feature {445 .dependencies = &[_]*const Feature {
446 },446 },
447};447};
448448
449pub const cpu_z10 = Cpu{449pub const cpu_z10 = Cpu{
450 .name = "z10",450 .name = "z10",
451 .llvm_name = "z10",451 .llvm_name = "z10",
452 .subfeatures = &[_]*const Feature {452 .dependencies = &[_]*const Feature {
453 },453 },
454};454};
455455
456pub const cpu_z13 = Cpu{456pub const cpu_z13 = Cpu{
457 .name = "z13",457 .name = "z13",
458 .llvm_name = "z13",458 .llvm_name = "z13",
459 .subfeatures = &[_]*const Feature {459 .dependencies = &[_]*const Feature {
460 &feature_dfpPackedConversion,460 &feature_dfpPackedConversion,
461 &feature_dfpZonedConversion,461 &feature_dfpZonedConversion,
462 &feature_distinctOps,462 &feature_distinctOps,
...@@ -485,7 +485,7 @@ pub const cpu_z13 = Cpu{...@@ -485,7 +485,7 @@ pub const cpu_z13 = Cpu{
485pub const cpu_z14 = Cpu{485pub const cpu_z14 = Cpu{
486 .name = "z14",486 .name = "z14",
487 .llvm_name = "z14",487 .llvm_name = "z14",
488 .subfeatures = &[_]*const Feature {488 .dependencies = &[_]*const Feature {
489 &feature_dfpPackedConversion,489 &feature_dfpPackedConversion,
490 &feature_dfpZonedConversion,490 &feature_dfpZonedConversion,
491 &feature_distinctOps,491 &feature_distinctOps,
...@@ -521,7 +521,7 @@ pub const cpu_z14 = Cpu{...@@ -521,7 +521,7 @@ pub const cpu_z14 = Cpu{
521pub const cpu_z15 = Cpu{521pub const cpu_z15 = Cpu{
522 .name = "z15",522 .name = "z15",
523 .llvm_name = "z15",523 .llvm_name = "z15",
524 .subfeatures = &[_]*const Feature {524 .dependencies = &[_]*const Feature {
525 &feature_dfpPackedConversion,525 &feature_dfpPackedConversion,
526 &feature_dfpZonedConversion,526 &feature_dfpZonedConversion,
527 &feature_deflateConversion,527 &feature_deflateConversion,
...@@ -563,7 +563,7 @@ pub const cpu_z15 = Cpu{...@@ -563,7 +563,7 @@ pub const cpu_z15 = Cpu{
563pub const cpu_z196 = Cpu{563pub const cpu_z196 = Cpu{
564 .name = "z196",564 .name = "z196",
565 .llvm_name = "z196",565 .llvm_name = "z196",
566 .subfeatures = &[_]*const Feature {566 .dependencies = &[_]*const Feature {
567 &feature_distinctOps,567 &feature_distinctOps,
568 &feature_fpExtension,568 &feature_fpExtension,
569 &feature_fastSerialization,569 &feature_fastSerialization,
...@@ -580,7 +580,7 @@ pub const cpu_z196 = Cpu{...@@ -580,7 +580,7 @@ pub const cpu_z196 = Cpu{
580pub const cpu_zEC12 = Cpu{580pub const cpu_zEC12 = Cpu{
581 .name = "zEC12",581 .name = "zEC12",
582 .llvm_name = "zEC12",582 .llvm_name = "zEC12",
583 .subfeatures = &[_]*const Feature {583 .dependencies = &[_]*const Feature {
584 &feature_dfpZonedConversion,584 &feature_dfpZonedConversion,
585 &feature_distinctOps,585 &feature_distinctOps,
586 &feature_enhancedDat2,586 &feature_enhancedDat2,
lib/std/target/wasm.zig+13-13
...@@ -4,70 +4,70 @@ const Cpu = @import("std").target.Cpu;...@@ -4,70 +4,70 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_atomics = Feature{4pub const feature_atomics = Feature{
5 .name = "atomics",5 .name = "atomics",
6 .description = "Enable Atomics",6 .description = "Enable Atomics",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 },8 },
9};9};
1010
11pub const feature_bulkMemory = Feature{11pub const feature_bulkMemory = Feature{
12 .name = "bulk-memory",12 .name = "bulk-memory",
13 .description = "Enable bulk memory operations",13 .description = "Enable bulk memory operations",
14 .subfeatures = &[_]*const Feature {14 .dependencies = &[_]*const Feature {
15 },15 },
16};16};
1717
18pub const feature_exceptionHandling = Feature{18pub const feature_exceptionHandling = Feature{
19 .name = "exception-handling",19 .name = "exception-handling",
20 .description = "Enable Wasm exception handling",20 .description = "Enable Wasm exception handling",
21 .subfeatures = &[_]*const Feature {21 .dependencies = &[_]*const Feature {
22 },22 },
23};23};
2424
25pub const feature_multivalue = Feature{25pub const feature_multivalue = Feature{
26 .name = "multivalue",26 .name = "multivalue",
27 .description = "Enable multivalue blocks, instructions, and functions",27 .description = "Enable multivalue blocks, instructions, and functions",
28 .subfeatures = &[_]*const Feature {28 .dependencies = &[_]*const Feature {
29 },29 },
30};30};
3131
32pub const feature_mutableGlobals = Feature{32pub const feature_mutableGlobals = Feature{
33 .name = "mutable-globals",33 .name = "mutable-globals",
34 .description = "Enable mutable globals",34 .description = "Enable mutable globals",
35 .subfeatures = &[_]*const Feature {35 .dependencies = &[_]*const Feature {
36 },36 },
37};37};
3838
39pub const feature_nontrappingFptoint = Feature{39pub const feature_nontrappingFptoint = Feature{
40 .name = "nontrapping-fptoint",40 .name = "nontrapping-fptoint",
41 .description = "Enable non-trapping float-to-int conversion operators",41 .description = "Enable non-trapping float-to-int conversion operators",
42 .subfeatures = &[_]*const Feature {42 .dependencies = &[_]*const Feature {
43 },43 },
44};44};
4545
46pub const feature_simd128 = Feature{46pub const feature_simd128 = Feature{
47 .name = "simd128",47 .name = "simd128",
48 .description = "Enable 128-bit SIMD",48 .description = "Enable 128-bit SIMD",
49 .subfeatures = &[_]*const Feature {49 .dependencies = &[_]*const Feature {
50 },50 },
51};51};
5252
53pub const feature_signExt = Feature{53pub const feature_signExt = Feature{
54 .name = "sign-ext",54 .name = "sign-ext",
55 .description = "Enable sign extension operators",55 .description = "Enable sign extension operators",
56 .subfeatures = &[_]*const Feature {56 .dependencies = &[_]*const Feature {
57 },57 },
58};58};
5959
60pub const feature_tailCall = Feature{60pub const feature_tailCall = Feature{
61 .name = "tail-call",61 .name = "tail-call",
62 .description = "Enable tail call instructions",62 .description = "Enable tail call instructions",
63 .subfeatures = &[_]*const Feature {63 .dependencies = &[_]*const Feature {
64 },64 },
65};65};
6666
67pub const feature_unimplementedSimd128 = Feature{67pub const feature_unimplementedSimd128 = Feature{
68 .name = "unimplemented-simd128",68 .name = "unimplemented-simd128",
69 .description = "Enable 128-bit SIMD not yet implemented in engines",69 .description = "Enable 128-bit SIMD not yet implemented in engines",
70 .subfeatures = &[_]*const Feature {70 .dependencies = &[_]*const Feature {
71 &feature_simd128,71 &feature_simd128,
72 },72 },
73};73};
...@@ -88,7 +88,7 @@ pub const features = &[_]*const Feature {...@@ -88,7 +88,7 @@ pub const features = &[_]*const Feature {
88pub const cpu_bleedingEdge = Cpu{88pub const cpu_bleedingEdge = Cpu{
89 .name = "bleeding-edge",89 .name = "bleeding-edge",
90 .llvm_name = "bleeding-edge",90 .llvm_name = "bleeding-edge",
91 .subfeatures = &[_]*const Feature {91 .dependencies = &[_]*const Feature {
92 &feature_atomics,92 &feature_atomics,
93 &feature_mutableGlobals,93 &feature_mutableGlobals,
94 &feature_nontrappingFptoint,94 &feature_nontrappingFptoint,
...@@ -100,14 +100,14 @@ pub const cpu_bleedingEdge = Cpu{...@@ -100,14 +100,14 @@ pub const cpu_bleedingEdge = Cpu{
100pub const cpu_generic = Cpu{100pub const cpu_generic = Cpu{
101 .name = "generic",101 .name = "generic",
102 .llvm_name = "generic",102 .llvm_name = "generic",
103 .subfeatures = &[_]*const Feature {103 .dependencies = &[_]*const Feature {
104 },104 },
105};105};
106106
107pub const cpu_mvp = Cpu{107pub const cpu_mvp = Cpu{
108 .name = "mvp",108 .name = "mvp",
109 .llvm_name = "mvp",109 .llvm_name = "mvp",
110 .subfeatures = &[_]*const Feature {110 .dependencies = &[_]*const Feature {
111 },111 },
112};112};
113113
lib/std/target/x86.zig+206-206
...@@ -4,7 +4,7 @@ const Cpu = @import("std").target.Cpu;...@@ -4,7 +4,7 @@ const Cpu = @import("std").target.Cpu;
4pub const feature_dnow3 = Feature{4pub const feature_dnow3 = Feature{
5 .name = "3dnow",5 .name = "3dnow",
6 .description = "Enable 3DNow! instructions",6 .description = "Enable 3DNow! instructions",
7 .subfeatures = &[_]*const Feature {7 .dependencies = &[_]*const Feature {
8 &feature_mmx,8 &feature_mmx,
9 },9 },
10};10};
...@@ -12,7 +12,7 @@ pub const feature_dnow3 = Feature{...@@ -12,7 +12,7 @@ pub const feature_dnow3 = Feature{
12pub const feature_dnowa3 = Feature{12pub const feature_dnowa3 = Feature{
13 .name = "3dnowa",13 .name = "3dnowa",
14 .description = "Enable 3DNow! Athlon instructions",14 .description = "Enable 3DNow! Athlon instructions",
15 .subfeatures = &[_]*const Feature {15 .dependencies = &[_]*const Feature {
16 &feature_mmx,16 &feature_mmx,
17 },17 },
18};18};
...@@ -20,21 +20,21 @@ pub const feature_dnowa3 = Feature{...@@ -20,21 +20,21 @@ pub const feature_dnowa3 = Feature{
20pub const feature_bit64 = Feature{20pub const feature_bit64 = Feature{
21 .name = "64bit",21 .name = "64bit",
22 .description = "Support 64-bit instructions",22 .description = "Support 64-bit instructions",
23 .subfeatures = &[_]*const Feature {23 .dependencies = &[_]*const Feature {
24 },24 },
25};25};
2626
27pub const feature_adx = Feature{27pub const feature_adx = Feature{
28 .name = "adx",28 .name = "adx",
29 .description = "Support ADX instructions",29 .description = "Support ADX instructions",
30 .subfeatures = &[_]*const Feature {30 .dependencies = &[_]*const Feature {
31 },31 },
32};32};
3333
34pub const feature_aes = Feature{34pub const feature_aes = Feature{
35 .name = "aes",35 .name = "aes",
36 .description = "Enable AES instructions",36 .description = "Enable AES instructions",
37 .subfeatures = &[_]*const Feature {37 .dependencies = &[_]*const Feature {
38 &feature_sse,38 &feature_sse,
39 },39 },
40};40};
...@@ -42,7 +42,7 @@ pub const feature_aes = Feature{...@@ -42,7 +42,7 @@ pub const feature_aes = Feature{
42pub const feature_avx = Feature{42pub const feature_avx = Feature{
43 .name = "avx",43 .name = "avx",
44 .description = "Enable AVX instructions",44 .description = "Enable AVX instructions",
45 .subfeatures = &[_]*const Feature {45 .dependencies = &[_]*const Feature {
46 &feature_sse,46 &feature_sse,
47 },47 },
48};48};
...@@ -50,7 +50,7 @@ pub const feature_avx = Feature{...@@ -50,7 +50,7 @@ pub const feature_avx = Feature{
50pub const feature_avx2 = Feature{50pub const feature_avx2 = Feature{
51 .name = "avx2",51 .name = "avx2",
52 .description = "Enable AVX2 instructions",52 .description = "Enable AVX2 instructions",
53 .subfeatures = &[_]*const Feature {53 .dependencies = &[_]*const Feature {
54 &feature_sse,54 &feature_sse,
55 },55 },
56};56};
...@@ -58,7 +58,7 @@ pub const feature_avx2 = Feature{...@@ -58,7 +58,7 @@ pub const feature_avx2 = Feature{
58pub const feature_avx512f = Feature{58pub const feature_avx512f = Feature{
59 .name = "avx512f",59 .name = "avx512f",
60 .description = "Enable AVX-512 instructions",60 .description = "Enable AVX-512 instructions",
61 .subfeatures = &[_]*const Feature {61 .dependencies = &[_]*const Feature {
62 &feature_sse,62 &feature_sse,
63 },63 },
64};64};
...@@ -66,7 +66,7 @@ pub const feature_avx512f = Feature{...@@ -66,7 +66,7 @@ pub const feature_avx512f = Feature{
66pub const feature_avx512bf16 = Feature{66pub const feature_avx512bf16 = Feature{
67 .name = "avx512bf16",67 .name = "avx512bf16",
68 .description = "Support bfloat16 floating point",68 .description = "Support bfloat16 floating point",
69 .subfeatures = &[_]*const Feature {69 .dependencies = &[_]*const Feature {
70 &feature_sse,70 &feature_sse,
71 },71 },
72};72};
...@@ -74,7 +74,7 @@ pub const feature_avx512bf16 = Feature{...@@ -74,7 +74,7 @@ pub const feature_avx512bf16 = Feature{
74pub const feature_avx512bitalg = Feature{74pub const feature_avx512bitalg = Feature{
75 .name = "avx512bitalg",75 .name = "avx512bitalg",
76 .description = "Enable AVX-512 Bit Algorithms",76 .description = "Enable AVX-512 Bit Algorithms",
77 .subfeatures = &[_]*const Feature {77 .dependencies = &[_]*const Feature {
78 &feature_sse,78 &feature_sse,
79 },79 },
80};80};
...@@ -82,21 +82,21 @@ pub const feature_avx512bitalg = Feature{...@@ -82,21 +82,21 @@ pub const feature_avx512bitalg = Feature{
82pub const feature_bmi = Feature{82pub const feature_bmi = Feature{
83 .name = "bmi",83 .name = "bmi",
84 .description = "Support BMI instructions",84 .description = "Support BMI instructions",
85 .subfeatures = &[_]*const Feature {85 .dependencies = &[_]*const Feature {
86 },86 },
87};87};
8888
89pub const feature_bmi2 = Feature{89pub const feature_bmi2 = Feature{
90 .name = "bmi2",90 .name = "bmi2",
91 .description = "Support BMI2 instructions",91 .description = "Support BMI2 instructions",
92 .subfeatures = &[_]*const Feature {92 .dependencies = &[_]*const Feature {
93 },93 },
94};94};
9595
96pub const feature_avx512bw = Feature{96pub const feature_avx512bw = Feature{
97 .name = "avx512bw",97 .name = "avx512bw",
98 .description = "Enable AVX-512 Byte and Word Instructions",98 .description = "Enable AVX-512 Byte and Word Instructions",
99 .subfeatures = &[_]*const Feature {99 .dependencies = &[_]*const Feature {
100 &feature_sse,100 &feature_sse,
101 },101 },
102};102};
...@@ -104,14 +104,14 @@ pub const feature_avx512bw = Feature{...@@ -104,14 +104,14 @@ pub const feature_avx512bw = Feature{
104pub const feature_branchfusion = Feature{104pub const feature_branchfusion = Feature{
105 .name = "branchfusion",105 .name = "branchfusion",
106 .description = "CMP/TEST can be fused with conditional branches",106 .description = "CMP/TEST can be fused with conditional branches",
107 .subfeatures = &[_]*const Feature {107 .dependencies = &[_]*const Feature {
108 },108 },
109};109};
110110
111pub const feature_avx512cd = Feature{111pub const feature_avx512cd = Feature{
112 .name = "avx512cd",112 .name = "avx512cd",
113 .description = "Enable AVX-512 Conflict Detection Instructions",113 .description = "Enable AVX-512 Conflict Detection Instructions",
114 .subfeatures = &[_]*const Feature {114 .dependencies = &[_]*const Feature {
115 &feature_sse,115 &feature_sse,
116 },116 },
117};117};
...@@ -119,49 +119,49 @@ pub const feature_avx512cd = Feature{...@@ -119,49 +119,49 @@ pub const feature_avx512cd = Feature{
119pub const feature_cldemote = Feature{119pub const feature_cldemote = Feature{
120 .name = "cldemote",120 .name = "cldemote",
121 .description = "Enable Cache Demote",121 .description = "Enable Cache Demote",
122 .subfeatures = &[_]*const Feature {122 .dependencies = &[_]*const Feature {
123 },123 },
124};124};
125125
126pub const feature_clflushopt = Feature{126pub const feature_clflushopt = Feature{
127 .name = "clflushopt",127 .name = "clflushopt",
128 .description = "Flush A Cache Line Optimized",128 .description = "Flush A Cache Line Optimized",
129 .subfeatures = &[_]*const Feature {129 .dependencies = &[_]*const Feature {
130 },130 },
131};131};
132132
133pub const feature_clwb = Feature{133pub const feature_clwb = Feature{
134 .name = "clwb",134 .name = "clwb",
135 .description = "Cache Line Write Back",135 .description = "Cache Line Write Back",
136 .subfeatures = &[_]*const Feature {136 .dependencies = &[_]*const Feature {
137 },137 },
138};138};
139139
140pub const feature_clzero = Feature{140pub const feature_clzero = Feature{
141 .name = "clzero",141 .name = "clzero",
142 .description = "Enable Cache Line Zero",142 .description = "Enable Cache Line Zero",
143 .subfeatures = &[_]*const Feature {143 .dependencies = &[_]*const Feature {
144 },144 },
145};145};
146146
147pub const feature_cmov = Feature{147pub const feature_cmov = Feature{
148 .name = "cmov",148 .name = "cmov",
149 .description = "Enable conditional move instructions",149 .description = "Enable conditional move instructions",
150 .subfeatures = &[_]*const Feature {150 .dependencies = &[_]*const Feature {
151 },151 },
152};152};
153153
154pub const feature_cx8 = Feature{154pub const feature_cx8 = Feature{
155 .name = "cx8",155 .name = "cx8",
156 .description = "Support CMPXCHG8B instructions",156 .description = "Support CMPXCHG8B instructions",
157 .subfeatures = &[_]*const Feature {157 .dependencies = &[_]*const Feature {
158 },158 },
159};159};
160160
161pub const feature_cx16 = Feature{161pub const feature_cx16 = Feature{
162 .name = "cx16",162 .name = "cx16",
163 .description = "64-bit with cmpxchg16b",163 .description = "64-bit with cmpxchg16b",
164 .subfeatures = &[_]*const Feature {164 .dependencies = &[_]*const Feature {
165 &feature_cx8,165 &feature_cx8,
166 },166 },
167};167};
...@@ -169,7 +169,7 @@ pub const feature_cx16 = Feature{...@@ -169,7 +169,7 @@ pub const feature_cx16 = Feature{
169pub const feature_avx512dq = Feature{169pub const feature_avx512dq = Feature{
170 .name = "avx512dq",170 .name = "avx512dq",
171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
172 .subfeatures = &[_]*const Feature {172 .dependencies = &[_]*const Feature {
173 &feature_sse,173 &feature_sse,
174 },174 },
175};175};
...@@ -177,21 +177,21 @@ pub const feature_avx512dq = Feature{...@@ -177,21 +177,21 @@ pub const feature_avx512dq = Feature{
177pub const feature_mpx = Feature{177pub const feature_mpx = Feature{
178 .name = "mpx",178 .name = "mpx",
179 .description = "Deprecated. Support MPX instructions",179 .description = "Deprecated. Support MPX instructions",
180 .subfeatures = &[_]*const Feature {180 .dependencies = &[_]*const Feature {
181 },181 },
182};182};
183183
184pub const feature_enqcmd = Feature{184pub const feature_enqcmd = Feature{
185 .name = "enqcmd",185 .name = "enqcmd",
186 .description = "Has ENQCMD instructions",186 .description = "Has ENQCMD instructions",
187 .subfeatures = &[_]*const Feature {187 .dependencies = &[_]*const Feature {
188 },188 },
189};189};
190190
191pub const feature_avx512er = Feature{191pub const feature_avx512er = Feature{
192 .name = "avx512er",192 .name = "avx512er",
193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
194 .subfeatures = &[_]*const Feature {194 .dependencies = &[_]*const Feature {
195 &feature_sse,195 &feature_sse,
196 },196 },
197};197};
...@@ -199,14 +199,14 @@ pub const feature_avx512er = Feature{...@@ -199,14 +199,14 @@ pub const feature_avx512er = Feature{
199pub const feature_ermsb = Feature{199pub const feature_ermsb = Feature{
200 .name = "ermsb",200 .name = "ermsb",
201 .description = "REP MOVS/STOS are fast",201 .description = "REP MOVS/STOS are fast",
202 .subfeatures = &[_]*const Feature {202 .dependencies = &[_]*const Feature {
203 },203 },
204};204};
205205
206pub const feature_f16c = Feature{206pub const feature_f16c = Feature{
207 .name = "f16c",207 .name = "f16c",
208 .description = "Support 16-bit floating point conversion instructions",208 .description = "Support 16-bit floating point conversion instructions",
209 .subfeatures = &[_]*const Feature {209 .dependencies = &[_]*const Feature {
210 &feature_sse,210 &feature_sse,
211 },211 },
212};212};
...@@ -214,7 +214,7 @@ pub const feature_f16c = Feature{...@@ -214,7 +214,7 @@ pub const feature_f16c = Feature{
214pub const feature_fma = Feature{214pub const feature_fma = Feature{
215 .name = "fma",215 .name = "fma",
216 .description = "Enable three-operand fused multiple-add",216 .description = "Enable three-operand fused multiple-add",
217 .subfeatures = &[_]*const Feature {217 .dependencies = &[_]*const Feature {
218 &feature_sse,218 &feature_sse,
219 },219 },
220};220};
...@@ -222,7 +222,7 @@ pub const feature_fma = Feature{...@@ -222,7 +222,7 @@ pub const feature_fma = Feature{
222pub const feature_fma4 = Feature{222pub const feature_fma4 = Feature{
223 .name = "fma4",223 .name = "fma4",
224 .description = "Enable four-operand fused multiple-add",224 .description = "Enable four-operand fused multiple-add",
225 .subfeatures = &[_]*const Feature {225 .dependencies = &[_]*const Feature {
226 &feature_sse,226 &feature_sse,
227 },227 },
228};228};
...@@ -230,42 +230,42 @@ pub const feature_fma4 = Feature{...@@ -230,42 +230,42 @@ pub const feature_fma4 = Feature{
230pub const feature_fsgsbase = Feature{230pub const feature_fsgsbase = Feature{
231 .name = "fsgsbase",231 .name = "fsgsbase",
232 .description = "Support FS/GS Base instructions",232 .description = "Support FS/GS Base instructions",
233 .subfeatures = &[_]*const Feature {233 .dependencies = &[_]*const Feature {
234 },234 },
235};235};
236236
237pub const feature_fxsr = Feature{237pub const feature_fxsr = Feature{
238 .name = "fxsr",238 .name = "fxsr",
239 .description = "Support fxsave/fxrestore instructions",239 .description = "Support fxsave/fxrestore instructions",
240 .subfeatures = &[_]*const Feature {240 .dependencies = &[_]*const Feature {
241 },241 },
242};242};
243243
244pub const feature_fast11bytenop = Feature{244pub const feature_fast11bytenop = Feature{
245 .name = "fast-11bytenop",245 .name = "fast-11bytenop",
246 .description = "Target can quickly decode up to 11 byte NOPs",246 .description = "Target can quickly decode up to 11 byte NOPs",
247 .subfeatures = &[_]*const Feature {247 .dependencies = &[_]*const Feature {
248 },248 },
249};249};
250250
251pub const feature_fast15bytenop = Feature{251pub const feature_fast15bytenop = Feature{
252 .name = "fast-15bytenop",252 .name = "fast-15bytenop",
253 .description = "Target can quickly decode up to 15 byte NOPs",253 .description = "Target can quickly decode up to 15 byte NOPs",
254 .subfeatures = &[_]*const Feature {254 .dependencies = &[_]*const Feature {
255 },255 },
256};256};
257257
258pub const feature_fastBextr = Feature{258pub const feature_fastBextr = Feature{
259 .name = "fast-bextr",259 .name = "fast-bextr",
260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
261 .subfeatures = &[_]*const Feature {261 .dependencies = &[_]*const Feature {
262 },262 },
263};263};
264264
265pub const feature_fastHops = Feature{265pub const feature_fastHops = Feature{
266 .name = "fast-hops",266 .name = "fast-hops",
267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
268 .subfeatures = &[_]*const Feature {268 .dependencies = &[_]*const Feature {
269 &feature_sse,269 &feature_sse,
270 },270 },
271};271};
...@@ -273,63 +273,63 @@ pub const feature_fastHops = Feature{...@@ -273,63 +273,63 @@ pub const feature_fastHops = Feature{
273pub const feature_fastLzcnt = Feature{273pub const feature_fastLzcnt = Feature{
274 .name = "fast-lzcnt",274 .name = "fast-lzcnt",
275 .description = "LZCNT instructions are as fast as most simple integer ops",275 .description = "LZCNT instructions are as fast as most simple integer ops",
276 .subfeatures = &[_]*const Feature {276 .dependencies = &[_]*const Feature {
277 },277 },
278};278};
279279
280pub const feature_fastPartialYmmOrZmmWrite = Feature{280pub const feature_fastPartialYmmOrZmmWrite = Feature{
281 .name = "fast-partial-ymm-or-zmm-write",281 .name = "fast-partial-ymm-or-zmm-write",
282 .description = "Partial writes to YMM/ZMM registers are fast",282 .description = "Partial writes to YMM/ZMM registers are fast",
283 .subfeatures = &[_]*const Feature {283 .dependencies = &[_]*const Feature {
284 },284 },
285};285};
286286
287pub const feature_fastShldRotate = Feature{287pub const feature_fastShldRotate = Feature{
288 .name = "fast-shld-rotate",288 .name = "fast-shld-rotate",
289 .description = "SHLD can be used as a faster rotate",289 .description = "SHLD can be used as a faster rotate",
290 .subfeatures = &[_]*const Feature {290 .dependencies = &[_]*const Feature {
291 },291 },
292};292};
293293
294pub const feature_fastScalarFsqrt = Feature{294pub const feature_fastScalarFsqrt = Feature{
295 .name = "fast-scalar-fsqrt",295 .name = "fast-scalar-fsqrt",
296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
297 .subfeatures = &[_]*const Feature {297 .dependencies = &[_]*const Feature {
298 },298 },
299};299};
300300
301pub const feature_fastScalarShiftMasks = Feature{301pub const feature_fastScalarShiftMasks = Feature{
302 .name = "fast-scalar-shift-masks",302 .name = "fast-scalar-shift-masks",
303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
304 .subfeatures = &[_]*const Feature {304 .dependencies = &[_]*const Feature {
305 },305 },
306};306};
307307
308pub const feature_fastVariableShuffle = Feature{308pub const feature_fastVariableShuffle = Feature{
309 .name = "fast-variable-shuffle",309 .name = "fast-variable-shuffle",
310 .description = "Shuffles with variable masks are fast",310 .description = "Shuffles with variable masks are fast",
311 .subfeatures = &[_]*const Feature {311 .dependencies = &[_]*const Feature {
312 },312 },
313};313};
314314
315pub const feature_fastVectorFsqrt = Feature{315pub const feature_fastVectorFsqrt = Feature{
316 .name = "fast-vector-fsqrt",316 .name = "fast-vector-fsqrt",
317 .description = "Vector SQRT is fast (disable Newton-Raphson)",317 .description = "Vector SQRT is fast (disable Newton-Raphson)",
318 .subfeatures = &[_]*const Feature {318 .dependencies = &[_]*const Feature {
319 },319 },
320};320};
321321
322pub const feature_fastVectorShiftMasks = Feature{322pub const feature_fastVectorShiftMasks = Feature{
323 .name = "fast-vector-shift-masks",323 .name = "fast-vector-shift-masks",
324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
325 .subfeatures = &[_]*const Feature {325 .dependencies = &[_]*const Feature {
326 },326 },
327};327};
328328
329pub const feature_gfni = Feature{329pub const feature_gfni = Feature{
330 .name = "gfni",330 .name = "gfni",
331 .description = "Enable Galois Field Arithmetic Instructions",331 .description = "Enable Galois Field Arithmetic Instructions",
332 .subfeatures = &[_]*const Feature {332 .dependencies = &[_]*const Feature {
333 &feature_sse,333 &feature_sse,
334 },334 },
335};335};
...@@ -337,14 +337,14 @@ pub const feature_gfni = Feature{...@@ -337,14 +337,14 @@ pub const feature_gfni = Feature{
337pub const feature_fastGather = Feature{337pub const feature_fastGather = Feature{
338 .name = "fast-gather",338 .name = "fast-gather",
339 .description = "Indicates if gather is reasonably fast",339 .description = "Indicates if gather is reasonably fast",
340 .subfeatures = &[_]*const Feature {340 .dependencies = &[_]*const Feature {
341 },341 },
342};342};
343343
344pub const feature_avx512ifma = Feature{344pub const feature_avx512ifma = Feature{
345 .name = "avx512ifma",345 .name = "avx512ifma",
346 .description = "Enable AVX-512 Integer Fused Multiple-Add",346 .description = "Enable AVX-512 Integer Fused Multiple-Add",
347 .subfeatures = &[_]*const Feature {347 .dependencies = &[_]*const Feature {
348 &feature_sse,348 &feature_sse,
349 },349 },
350};350};
...@@ -352,112 +352,112 @@ pub const feature_avx512ifma = Feature{...@@ -352,112 +352,112 @@ pub const feature_avx512ifma = Feature{
352pub const feature_invpcid = Feature{352pub const feature_invpcid = Feature{
353 .name = "invpcid",353 .name = "invpcid",
354 .description = "Invalidate Process-Context Identifier",354 .description = "Invalidate Process-Context Identifier",
355 .subfeatures = &[_]*const Feature {355 .dependencies = &[_]*const Feature {
356 },356 },
357};357};
358358
359pub const feature_sahf = Feature{359pub const feature_sahf = Feature{
360 .name = "sahf",360 .name = "sahf",
361 .description = "Support LAHF and SAHF instructions",361 .description = "Support LAHF and SAHF instructions",
362 .subfeatures = &[_]*const Feature {362 .dependencies = &[_]*const Feature {
363 },363 },
364};364};
365365
366pub const feature_leaSp = Feature{366pub const feature_leaSp = Feature{
367 .name = "lea-sp",367 .name = "lea-sp",
368 .description = "Use LEA for adjusting the stack pointer",368 .description = "Use LEA for adjusting the stack pointer",
369 .subfeatures = &[_]*const Feature {369 .dependencies = &[_]*const Feature {
370 },370 },
371};371};
372372
373pub const feature_leaUsesAg = Feature{373pub const feature_leaUsesAg = Feature{
374 .name = "lea-uses-ag",374 .name = "lea-uses-ag",
375 .description = "LEA instruction needs inputs at AG stage",375 .description = "LEA instruction needs inputs at AG stage",
376 .subfeatures = &[_]*const Feature {376 .dependencies = &[_]*const Feature {
377 },377 },
378};378};
379379
380pub const feature_lwp = Feature{380pub const feature_lwp = Feature{
381 .name = "lwp",381 .name = "lwp",
382 .description = "Enable LWP instructions",382 .description = "Enable LWP instructions",
383 .subfeatures = &[_]*const Feature {383 .dependencies = &[_]*const Feature {
384 },384 },
385};385};
386386
387pub const feature_lzcnt = Feature{387pub const feature_lzcnt = Feature{
388 .name = "lzcnt",388 .name = "lzcnt",
389 .description = "Support LZCNT instruction",389 .description = "Support LZCNT instruction",
390 .subfeatures = &[_]*const Feature {390 .dependencies = &[_]*const Feature {
391 },391 },
392};392};
393393
394pub const feature_falseDepsLzcntTzcnt = Feature{394pub const feature_falseDepsLzcntTzcnt = Feature{
395 .name = "false-deps-lzcnt-tzcnt",395 .name = "false-deps-lzcnt-tzcnt",
396 .description = "LZCNT/TZCNT have a false dependency on dest register",396 .description = "LZCNT/TZCNT have a false dependency on dest register",
397 .subfeatures = &[_]*const Feature {397 .dependencies = &[_]*const Feature {
398 },398 },
399};399};
400400
401pub const feature_mmx = Feature{401pub const feature_mmx = Feature{
402 .name = "mmx",402 .name = "mmx",
403 .description = "Enable MMX instructions",403 .description = "Enable MMX instructions",
404 .subfeatures = &[_]*const Feature {404 .dependencies = &[_]*const Feature {
405 },405 },
406};406};
407407
408pub const feature_movbe = Feature{408pub const feature_movbe = Feature{
409 .name = "movbe",409 .name = "movbe",
410 .description = "Support MOVBE instruction",410 .description = "Support MOVBE instruction",
411 .subfeatures = &[_]*const Feature {411 .dependencies = &[_]*const Feature {
412 },412 },
413};413};
414414
415pub const feature_movdir64b = Feature{415pub const feature_movdir64b = Feature{
416 .name = "movdir64b",416 .name = "movdir64b",
417 .description = "Support movdir64b instruction",417 .description = "Support movdir64b instruction",
418 .subfeatures = &[_]*const Feature {418 .dependencies = &[_]*const Feature {
419 },419 },
420};420};
421421
422pub const feature_movdiri = Feature{422pub const feature_movdiri = Feature{
423 .name = "movdiri",423 .name = "movdiri",
424 .description = "Support movdiri instruction",424 .description = "Support movdiri instruction",
425 .subfeatures = &[_]*const Feature {425 .dependencies = &[_]*const Feature {
426 },426 },
427};427};
428428
429pub const feature_mwaitx = Feature{429pub const feature_mwaitx = Feature{
430 .name = "mwaitx",430 .name = "mwaitx",
431 .description = "Enable MONITORX/MWAITX timer functionality",431 .description = "Enable MONITORX/MWAITX timer functionality",
432 .subfeatures = &[_]*const Feature {432 .dependencies = &[_]*const Feature {
433 },433 },
434};434};
435435
436pub const feature_macrofusion = Feature{436pub const feature_macrofusion = Feature{
437 .name = "macrofusion",437 .name = "macrofusion",
438 .description = "Various instructions can be fused with conditional branches",438 .description = "Various instructions can be fused with conditional branches",
439 .subfeatures = &[_]*const Feature {439 .dependencies = &[_]*const Feature {
440 },440 },
441};441};
442442
443pub const feature_mergeToThreewayBranch = Feature{443pub const feature_mergeToThreewayBranch = Feature{
444 .name = "merge-to-threeway-branch",444 .name = "merge-to-threeway-branch",
445 .description = "Merge branches to a three-way conditional branch",445 .description = "Merge branches to a three-way conditional branch",
446 .subfeatures = &[_]*const Feature {446 .dependencies = &[_]*const Feature {
447 },447 },
448};448};
449449
450pub const feature_nopl = Feature{450pub const feature_nopl = Feature{
451 .name = "nopl",451 .name = "nopl",
452 .description = "Enable NOPL instruction",452 .description = "Enable NOPL instruction",
453 .subfeatures = &[_]*const Feature {453 .dependencies = &[_]*const Feature {
454 },454 },
455};455};
456456
457pub const feature_pclmul = Feature{457pub const feature_pclmul = Feature{
458 .name = "pclmul",458 .name = "pclmul",
459 .description = "Enable packed carry-less multiplication instructions",459 .description = "Enable packed carry-less multiplication instructions",
460 .subfeatures = &[_]*const Feature {460 .dependencies = &[_]*const Feature {
461 &feature_sse,461 &feature_sse,
462 },462 },
463};463};
...@@ -465,14 +465,14 @@ pub const feature_pclmul = Feature{...@@ -465,14 +465,14 @@ pub const feature_pclmul = Feature{
465pub const feature_pconfig = Feature{465pub const feature_pconfig = Feature{
466 .name = "pconfig",466 .name = "pconfig",
467 .description = "platform configuration instruction",467 .description = "platform configuration instruction",
468 .subfeatures = &[_]*const Feature {468 .dependencies = &[_]*const Feature {
469 },469 },
470};470};
471471
472pub const feature_avx512pf = Feature{472pub const feature_avx512pf = Feature{
473 .name = "avx512pf",473 .name = "avx512pf",
474 .description = "Enable AVX-512 PreFetch Instructions",474 .description = "Enable AVX-512 PreFetch Instructions",
475 .subfeatures = &[_]*const Feature {475 .dependencies = &[_]*const Feature {
476 &feature_sse,476 &feature_sse,
477 },477 },
478};478};
...@@ -480,107 +480,107 @@ pub const feature_avx512pf = Feature{...@@ -480,107 +480,107 @@ pub const feature_avx512pf = Feature{
480pub const feature_pku = Feature{480pub const feature_pku = Feature{
481 .name = "pku",481 .name = "pku",
482 .description = "Enable protection keys",482 .description = "Enable protection keys",
483 .subfeatures = &[_]*const Feature {483 .dependencies = &[_]*const Feature {
484 },484 },
485};485};
486486
487pub const feature_popcnt = Feature{487pub const feature_popcnt = Feature{
488 .name = "popcnt",488 .name = "popcnt",
489 .description = "Support POPCNT instruction",489 .description = "Support POPCNT instruction",
490 .subfeatures = &[_]*const Feature {490 .dependencies = &[_]*const Feature {
491 },491 },
492};492};
493493
494pub const feature_falseDepsPopcnt = Feature{494pub const feature_falseDepsPopcnt = Feature{
495 .name = "false-deps-popcnt",495 .name = "false-deps-popcnt",
496 .description = "POPCNT has a false dependency on dest register",496 .description = "POPCNT has a false dependency on dest register",
497 .subfeatures = &[_]*const Feature {497 .dependencies = &[_]*const Feature {
498 },498 },
499};499};
500500
501pub const feature_prefetchwt1 = Feature{501pub const feature_prefetchwt1 = Feature{
502 .name = "prefetchwt1",502 .name = "prefetchwt1",
503 .description = "Prefetch with Intent to Write and T1 Hint",503 .description = "Prefetch with Intent to Write and T1 Hint",
504 .subfeatures = &[_]*const Feature {504 .dependencies = &[_]*const Feature {
505 },505 },
506};506};
507507
508pub const feature_prfchw = Feature{508pub const feature_prfchw = Feature{
509 .name = "prfchw",509 .name = "prfchw",
510 .description = "Support PRFCHW instructions",510 .description = "Support PRFCHW instructions",
511 .subfeatures = &[_]*const Feature {511 .dependencies = &[_]*const Feature {
512 },512 },
513};513};
514514
515pub const feature_ptwrite = Feature{515pub const feature_ptwrite = Feature{
516 .name = "ptwrite",516 .name = "ptwrite",
517 .description = "Support ptwrite instruction",517 .description = "Support ptwrite instruction",
518 .subfeatures = &[_]*const Feature {518 .dependencies = &[_]*const Feature {
519 },519 },
520};520};
521521
522pub const feature_padShortFunctions = Feature{522pub const feature_padShortFunctions = Feature{
523 .name = "pad-short-functions",523 .name = "pad-short-functions",
524 .description = "Pad short functions",524 .description = "Pad short functions",
525 .subfeatures = &[_]*const Feature {525 .dependencies = &[_]*const Feature {
526 },526 },
527};527};
528528
529pub const feature_prefer128Bit = Feature{529pub const feature_prefer128Bit = Feature{
530 .name = "prefer-128-bit",530 .name = "prefer-128-bit",
531 .description = "Prefer 128-bit AVX instructions",531 .description = "Prefer 128-bit AVX instructions",
532 .subfeatures = &[_]*const Feature {532 .dependencies = &[_]*const Feature {
533 },533 },
534};534};
535535
536pub const feature_prefer256Bit = Feature{536pub const feature_prefer256Bit = Feature{
537 .name = "prefer-256-bit",537 .name = "prefer-256-bit",
538 .description = "Prefer 256-bit AVX instructions",538 .description = "Prefer 256-bit AVX instructions",
539 .subfeatures = &[_]*const Feature {539 .dependencies = &[_]*const Feature {
540 },540 },
541};541};
542542
543pub const feature_rdpid = Feature{543pub const feature_rdpid = Feature{
544 .name = "rdpid",544 .name = "rdpid",
545 .description = "Support RDPID instructions",545 .description = "Support RDPID instructions",
546 .subfeatures = &[_]*const Feature {546 .dependencies = &[_]*const Feature {
547 },547 },
548};548};
549549
550pub const feature_rdrnd = Feature{550pub const feature_rdrnd = Feature{
551 .name = "rdrnd",551 .name = "rdrnd",
552 .description = "Support RDRAND instruction",552 .description = "Support RDRAND instruction",
553 .subfeatures = &[_]*const Feature {553 .dependencies = &[_]*const Feature {
554 },554 },
555};555};
556556
557pub const feature_rdseed = Feature{557pub const feature_rdseed = Feature{
558 .name = "rdseed",558 .name = "rdseed",
559 .description = "Support RDSEED instruction",559 .description = "Support RDSEED instruction",
560 .subfeatures = &[_]*const Feature {560 .dependencies = &[_]*const Feature {
561 },561 },
562};562};
563563
564pub const feature_rtm = Feature{564pub const feature_rtm = Feature{
565 .name = "rtm",565 .name = "rtm",
566 .description = "Support RTM instructions",566 .description = "Support RTM instructions",
567 .subfeatures = &[_]*const Feature {567 .dependencies = &[_]*const Feature {
568 },568 },
569};569};
570570
571pub const feature_retpoline = Feature{571pub const feature_retpoline = Feature{
572 .name = "retpoline",572 .name = "retpoline",
573 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",573 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
574 .subfeatures = &[_]*const Feature {574 .dependencies = &[_]*const Feature {
575 &feature_retpolineIndirectBranches,
576 &feature_retpolineIndirectCalls,575 &feature_retpolineIndirectCalls,
576 &feature_retpolineIndirectBranches,
577 },577 },
578};578};
579579
580pub const feature_retpolineExternalThunk = Feature{580pub const feature_retpolineExternalThunk = Feature{
581 .name = "retpoline-external-thunk",581 .name = "retpoline-external-thunk",
582 .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature",582 .description = "When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature",
583 .subfeatures = &[_]*const Feature {583 .dependencies = &[_]*const Feature {
584 &feature_retpolineIndirectCalls,584 &feature_retpolineIndirectCalls,
585 },585 },
586};586};
...@@ -588,28 +588,28 @@ pub const feature_retpolineExternalThunk = Feature{...@@ -588,28 +588,28 @@ pub const feature_retpolineExternalThunk = Feature{
588pub const feature_retpolineIndirectBranches = Feature{588pub const feature_retpolineIndirectBranches = Feature{
589 .name = "retpoline-indirect-branches",589 .name = "retpoline-indirect-branches",
590 .description = "Remove speculation of indirect branches from the generated code",590 .description = "Remove speculation of indirect branches from the generated code",
591 .subfeatures = &[_]*const Feature {591 .dependencies = &[_]*const Feature {
592 },592 },
593};593};
594594
595pub const feature_retpolineIndirectCalls = Feature{595pub const feature_retpolineIndirectCalls = Feature{
596 .name = "retpoline-indirect-calls",596 .name = "retpoline-indirect-calls",
597 .description = "Remove speculation of indirect calls from the generated code",597 .description = "Remove speculation of indirect calls from the generated code",
598 .subfeatures = &[_]*const Feature {598 .dependencies = &[_]*const Feature {
599 },599 },
600};600};
601601
602pub const feature_sgx = Feature{602pub const feature_sgx = Feature{
603 .name = "sgx",603 .name = "sgx",
604 .description = "Enable Software Guard Extensions",604 .description = "Enable Software Guard Extensions",
605 .subfeatures = &[_]*const Feature {605 .dependencies = &[_]*const Feature {
606 },606 },
607};607};
608608
609pub const feature_sha = Feature{609pub const feature_sha = Feature{
610 .name = "sha",610 .name = "sha",
611 .description = "Enable SHA instructions",611 .description = "Enable SHA instructions",
612 .subfeatures = &[_]*const Feature {612 .dependencies = &[_]*const Feature {
613 &feature_sse,613 &feature_sse,
614 },614 },
615};615};
...@@ -617,21 +617,21 @@ pub const feature_sha = Feature{...@@ -617,21 +617,21 @@ pub const feature_sha = Feature{
617pub const feature_shstk = Feature{617pub const feature_shstk = Feature{
618 .name = "shstk",618 .name = "shstk",
619 .description = "Support CET Shadow-Stack instructions",619 .description = "Support CET Shadow-Stack instructions",
620 .subfeatures = &[_]*const Feature {620 .dependencies = &[_]*const Feature {
621 },621 },
622};622};
623623
624pub const feature_sse = Feature{624pub const feature_sse = Feature{
625 .name = "sse",625 .name = "sse",
626 .description = "Enable SSE instructions",626 .description = "Enable SSE instructions",
627 .subfeatures = &[_]*const Feature {627 .dependencies = &[_]*const Feature {
628 },628 },
629};629};
630630
631pub const feature_sse2 = Feature{631pub const feature_sse2 = Feature{
632 .name = "sse2",632 .name = "sse2",
633 .description = "Enable SSE2 instructions",633 .description = "Enable SSE2 instructions",
634 .subfeatures = &[_]*const Feature {634 .dependencies = &[_]*const Feature {
635 &feature_sse,635 &feature_sse,
636 },636 },
637};637};
...@@ -639,7 +639,7 @@ pub const feature_sse2 = Feature{...@@ -639,7 +639,7 @@ pub const feature_sse2 = Feature{
639pub const feature_sse3 = Feature{639pub const feature_sse3 = Feature{
640 .name = "sse3",640 .name = "sse3",
641 .description = "Enable SSE3 instructions",641 .description = "Enable SSE3 instructions",
642 .subfeatures = &[_]*const Feature {642 .dependencies = &[_]*const Feature {
643 &feature_sse,643 &feature_sse,
644 },644 },
645};645};
...@@ -647,7 +647,7 @@ pub const feature_sse3 = Feature{...@@ -647,7 +647,7 @@ pub const feature_sse3 = Feature{
647pub const feature_sse4a = Feature{647pub const feature_sse4a = Feature{
648 .name = "sse4a",648 .name = "sse4a",
649 .description = "Support SSE 4a instructions",649 .description = "Support SSE 4a instructions",
650 .subfeatures = &[_]*const Feature {650 .dependencies = &[_]*const Feature {
651 &feature_sse,651 &feature_sse,
652 },652 },
653};653};
...@@ -655,7 +655,7 @@ pub const feature_sse4a = Feature{...@@ -655,7 +655,7 @@ pub const feature_sse4a = Feature{
655pub const feature_sse41 = Feature{655pub const feature_sse41 = Feature{
656 .name = "sse4.1",656 .name = "sse4.1",
657 .description = "Enable SSE 4.1 instructions",657 .description = "Enable SSE 4.1 instructions",
658 .subfeatures = &[_]*const Feature {658 .dependencies = &[_]*const Feature {
659 &feature_sse,659 &feature_sse,
660 },660 },
661};661};
...@@ -663,7 +663,7 @@ pub const feature_sse41 = Feature{...@@ -663,7 +663,7 @@ pub const feature_sse41 = Feature{
663pub const feature_sse42 = Feature{663pub const feature_sse42 = Feature{
664 .name = "sse4.2",664 .name = "sse4.2",
665 .description = "Enable SSE 4.2 instructions",665 .description = "Enable SSE 4.2 instructions",
666 .subfeatures = &[_]*const Feature {666 .dependencies = &[_]*const Feature {
667 &feature_sse,667 &feature_sse,
668 },668 },
669};669};
...@@ -671,14 +671,14 @@ pub const feature_sse42 = Feature{...@@ -671,14 +671,14 @@ pub const feature_sse42 = Feature{
671pub const feature_sseUnalignedMem = Feature{671pub const feature_sseUnalignedMem = Feature{
672 .name = "sse-unaligned-mem",672 .name = "sse-unaligned-mem",
673 .description = "Allow unaligned memory operands with SSE instructions",673 .description = "Allow unaligned memory operands with SSE instructions",
674 .subfeatures = &[_]*const Feature {674 .dependencies = &[_]*const Feature {
675 },675 },
676};676};
677677
678pub const feature_ssse3 = Feature{678pub const feature_ssse3 = Feature{
679 .name = "ssse3",679 .name = "ssse3",
680 .description = "Enable SSSE3 instructions",680 .description = "Enable SSSE3 instructions",
681 .subfeatures = &[_]*const Feature {681 .dependencies = &[_]*const Feature {
682 &feature_sse,682 &feature_sse,
683 },683 },
684};684};
...@@ -686,105 +686,105 @@ pub const feature_ssse3 = Feature{...@@ -686,105 +686,105 @@ pub const feature_ssse3 = Feature{
686pub const feature_slow3opsLea = Feature{686pub const feature_slow3opsLea = Feature{
687 .name = "slow-3ops-lea",687 .name = "slow-3ops-lea",
688 .description = "LEA instruction with 3 ops or certain registers is slow",688 .description = "LEA instruction with 3 ops or certain registers is slow",
689 .subfeatures = &[_]*const Feature {689 .dependencies = &[_]*const Feature {
690 },690 },
691};691};
692692
693pub const feature_idivlToDivb = Feature{693pub const feature_idivlToDivb = Feature{
694 .name = "idivl-to-divb",694 .name = "idivl-to-divb",
695 .description = "Use 8-bit divide for positive values less than 256",695 .description = "Use 8-bit divide for positive values less than 256",
696 .subfeatures = &[_]*const Feature {696 .dependencies = &[_]*const Feature {
697 },697 },
698};698};
699699
700pub const feature_idivqToDivl = Feature{700pub const feature_idivqToDivl = Feature{
701 .name = "idivq-to-divl",701 .name = "idivq-to-divl",
702 .description = "Use 32-bit divide for positive values less than 2^32",702 .description = "Use 32-bit divide for positive values less than 2^32",
703 .subfeatures = &[_]*const Feature {703 .dependencies = &[_]*const Feature {
704 },704 },
705};705};
706706
707pub const feature_slowIncdec = Feature{707pub const feature_slowIncdec = Feature{
708 .name = "slow-incdec",708 .name = "slow-incdec",
709 .description = "INC and DEC instructions are slower than ADD and SUB",709 .description = "INC and DEC instructions are slower than ADD and SUB",
710 .subfeatures = &[_]*const Feature {710 .dependencies = &[_]*const Feature {
711 },711 },
712};712};
713713
714pub const feature_slowLea = Feature{714pub const feature_slowLea = Feature{
715 .name = "slow-lea",715 .name = "slow-lea",
716 .description = "LEA instruction with certain arguments is slow",716 .description = "LEA instruction with certain arguments is slow",
717 .subfeatures = &[_]*const Feature {717 .dependencies = &[_]*const Feature {
718 },718 },
719};719};
720720
721pub const feature_slowPmaddwd = Feature{721pub const feature_slowPmaddwd = Feature{
722 .name = "slow-pmaddwd",722 .name = "slow-pmaddwd",
723 .description = "PMADDWD is slower than PMULLD",723 .description = "PMADDWD is slower than PMULLD",
724 .subfeatures = &[_]*const Feature {724 .dependencies = &[_]*const Feature {
725 },725 },
726};726};
727727
728pub const feature_slowPmulld = Feature{728pub const feature_slowPmulld = Feature{
729 .name = "slow-pmulld",729 .name = "slow-pmulld",
730 .description = "PMULLD instruction is slow",730 .description = "PMULLD instruction is slow",
731 .subfeatures = &[_]*const Feature {731 .dependencies = &[_]*const Feature {
732 },732 },
733};733};
734734
735pub const feature_slowShld = Feature{735pub const feature_slowShld = Feature{
736 .name = "slow-shld",736 .name = "slow-shld",
737 .description = "SHLD instruction is slow",737 .description = "SHLD instruction is slow",
738 .subfeatures = &[_]*const Feature {738 .dependencies = &[_]*const Feature {
739 },739 },
740};740};
741741
742pub const feature_slowTwoMemOps = Feature{742pub const feature_slowTwoMemOps = Feature{
743 .name = "slow-two-mem-ops",743 .name = "slow-two-mem-ops",
744 .description = "Two memory operand instructions are slow",744 .description = "Two memory operand instructions are slow",
745 .subfeatures = &[_]*const Feature {745 .dependencies = &[_]*const Feature {
746 },746 },
747};747};
748748
749pub const feature_slowUnalignedMem16 = Feature{749pub const feature_slowUnalignedMem16 = Feature{
750 .name = "slow-unaligned-mem-16",750 .name = "slow-unaligned-mem-16",
751 .description = "Slow unaligned 16-byte memory access",751 .description = "Slow unaligned 16-byte memory access",
752 .subfeatures = &[_]*const Feature {752 .dependencies = &[_]*const Feature {
753 },753 },
754};754};
755755
756pub const feature_slowUnalignedMem32 = Feature{756pub const feature_slowUnalignedMem32 = Feature{
757 .name = "slow-unaligned-mem-32",757 .name = "slow-unaligned-mem-32",
758 .description = "Slow unaligned 32-byte memory access",758 .description = "Slow unaligned 32-byte memory access",
759 .subfeatures = &[_]*const Feature {759 .dependencies = &[_]*const Feature {
760 },760 },
761};761};
762762
763pub const feature_softFloat = Feature{763pub const feature_softFloat = Feature{
764 .name = "soft-float",764 .name = "soft-float",
765 .description = "Use software floating point features",765 .description = "Use software floating point features",
766 .subfeatures = &[_]*const Feature {766 .dependencies = &[_]*const Feature {
767 },767 },
768};768};
769769
770pub const feature_tbm = Feature{770pub const feature_tbm = Feature{
771 .name = "tbm",771 .name = "tbm",
772 .description = "Enable TBM instructions",772 .description = "Enable TBM instructions",
773 .subfeatures = &[_]*const Feature {773 .dependencies = &[_]*const Feature {
774 },774 },
775};775};
776776
777pub const feature_useAa = Feature{777pub const feature_useAa = Feature{
778 .name = "use-aa",778 .name = "use-aa",
779 .description = "Use alias analysis during codegen",779 .description = "Use alias analysis during codegen",
780 .subfeatures = &[_]*const Feature {780 .dependencies = &[_]*const Feature {
781 },781 },
782};782};
783783
784pub const feature_vaes = Feature{784pub const feature_vaes = Feature{
785 .name = "vaes",785 .name = "vaes",
786 .description = "Promote selected AES instructions to AVX512/AVX registers",786 .description = "Promote selected AES instructions to AVX512/AVX registers",
787 .subfeatures = &[_]*const Feature {787 .dependencies = &[_]*const Feature {
788 &feature_sse,788 &feature_sse,
789 },789 },
790};790};
...@@ -792,7 +792,7 @@ pub const feature_vaes = Feature{...@@ -792,7 +792,7 @@ pub const feature_vaes = Feature{
792pub const feature_avx512vbmi = Feature{792pub const feature_avx512vbmi = Feature{
793 .name = "avx512vbmi",793 .name = "avx512vbmi",
794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
795 .subfeatures = &[_]*const Feature {795 .dependencies = &[_]*const Feature {
796 &feature_sse,796 &feature_sse,
797 },797 },
798};798};
...@@ -800,7 +800,7 @@ pub const feature_avx512vbmi = Feature{...@@ -800,7 +800,7 @@ pub const feature_avx512vbmi = Feature{
800pub const feature_avx512vbmi2 = Feature{800pub const feature_avx512vbmi2 = Feature{
801 .name = "avx512vbmi2",801 .name = "avx512vbmi2",
802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
803 .subfeatures = &[_]*const Feature {803 .dependencies = &[_]*const Feature {
804 &feature_sse,804 &feature_sse,
805 },805 },
806};806};
...@@ -808,7 +808,7 @@ pub const feature_avx512vbmi2 = Feature{...@@ -808,7 +808,7 @@ pub const feature_avx512vbmi2 = Feature{
808pub const feature_avx512vl = Feature{808pub const feature_avx512vl = Feature{
809 .name = "avx512vl",809 .name = "avx512vl",
810 .description = "Enable AVX-512 Vector Length eXtensions",810 .description = "Enable AVX-512 Vector Length eXtensions",
811 .subfeatures = &[_]*const Feature {811 .dependencies = &[_]*const Feature {
812 &feature_sse,812 &feature_sse,
813 },813 },
814};814};
...@@ -816,7 +816,7 @@ pub const feature_avx512vl = Feature{...@@ -816,7 +816,7 @@ pub const feature_avx512vl = Feature{
816pub const feature_avx512vnni = Feature{816pub const feature_avx512vnni = Feature{
817 .name = "avx512vnni",817 .name = "avx512vnni",
818 .description = "Enable AVX-512 Vector Neural Network Instructions",818 .description = "Enable AVX-512 Vector Neural Network Instructions",
819 .subfeatures = &[_]*const Feature {819 .dependencies = &[_]*const Feature {
820 &feature_sse,820 &feature_sse,
821 },821 },
822};822};
...@@ -824,7 +824,7 @@ pub const feature_avx512vnni = Feature{...@@ -824,7 +824,7 @@ pub const feature_avx512vnni = Feature{
824pub const feature_avx512vp2intersect = Feature{824pub const feature_avx512vp2intersect = Feature{
825 .name = "avx512vp2intersect",825 .name = "avx512vp2intersect",
826 .description = "Enable AVX-512 vp2intersect",826 .description = "Enable AVX-512 vp2intersect",
827 .subfeatures = &[_]*const Feature {827 .dependencies = &[_]*const Feature {
828 &feature_sse,828 &feature_sse,
829 },829 },
830};830};
...@@ -832,7 +832,7 @@ pub const feature_avx512vp2intersect = Feature{...@@ -832,7 +832,7 @@ pub const feature_avx512vp2intersect = Feature{
832pub const feature_vpclmulqdq = Feature{832pub const feature_vpclmulqdq = Feature{
833 .name = "vpclmulqdq",833 .name = "vpclmulqdq",
834 .description = "Enable vpclmulqdq instructions",834 .description = "Enable vpclmulqdq instructions",
835 .subfeatures = &[_]*const Feature {835 .dependencies = &[_]*const Feature {
836 &feature_sse,836 &feature_sse,
837 },837 },
838};838};
...@@ -840,7 +840,7 @@ pub const feature_vpclmulqdq = Feature{...@@ -840,7 +840,7 @@ pub const feature_vpclmulqdq = Feature{
840pub const feature_avx512vpopcntdq = Feature{840pub const feature_avx512vpopcntdq = Feature{
841 .name = "avx512vpopcntdq",841 .name = "avx512vpopcntdq",
842 .description = "Enable AVX-512 Population Count Instructions",842 .description = "Enable AVX-512 Population Count Instructions",
843 .subfeatures = &[_]*const Feature {843 .dependencies = &[_]*const Feature {
844 &feature_sse,844 &feature_sse,
845 },845 },
846};846};
...@@ -848,28 +848,28 @@ pub const feature_avx512vpopcntdq = Feature{...@@ -848,28 +848,28 @@ pub const feature_avx512vpopcntdq = Feature{
848pub const feature_waitpkg = Feature{848pub const feature_waitpkg = Feature{
849 .name = "waitpkg",849 .name = "waitpkg",
850 .description = "Wait and pause enhancements",850 .description = "Wait and pause enhancements",
851 .subfeatures = &[_]*const Feature {851 .dependencies = &[_]*const Feature {
852 },852 },
853};853};
854854
855pub const feature_wbnoinvd = Feature{855pub const feature_wbnoinvd = Feature{
856 .name = "wbnoinvd",856 .name = "wbnoinvd",
857 .description = "Write Back No Invalidate",857 .description = "Write Back No Invalidate",
858 .subfeatures = &[_]*const Feature {858 .dependencies = &[_]*const Feature {
859 },859 },
860};860};
861861
862pub const feature_x87 = Feature{862pub const feature_x87 = Feature{
863 .name = "x87",863 .name = "x87",
864 .description = "Enable X87 float instructions",864 .description = "Enable X87 float instructions",
865 .subfeatures = &[_]*const Feature {865 .dependencies = &[_]*const Feature {
866 },866 },
867};867};
868868
869pub const feature_xop = Feature{869pub const feature_xop = Feature{
870 .name = "xop",870 .name = "xop",
871 .description = "Enable XOP instructions",871 .description = "Enable XOP instructions",
872 .subfeatures = &[_]*const Feature {872 .dependencies = &[_]*const Feature {
873 &feature_sse,873 &feature_sse,
874 },874 },
875};875};
...@@ -877,49 +877,49 @@ pub const feature_xop = Feature{...@@ -877,49 +877,49 @@ pub const feature_xop = Feature{
877pub const feature_xsave = Feature{877pub const feature_xsave = Feature{
878 .name = "xsave",878 .name = "xsave",
879 .description = "Support xsave instructions",879 .description = "Support xsave instructions",
880 .subfeatures = &[_]*const Feature {880 .dependencies = &[_]*const Feature {
881 },881 },
882};882};
883883
884pub const feature_xsavec = Feature{884pub const feature_xsavec = Feature{
885 .name = "xsavec",885 .name = "xsavec",
886 .description = "Support xsavec instructions",886 .description = "Support xsavec instructions",
887 .subfeatures = &[_]*const Feature {887 .dependencies = &[_]*const Feature {
888 },888 },
889};889};
890890
891pub const feature_xsaveopt = Feature{891pub const feature_xsaveopt = Feature{
892 .name = "xsaveopt",892 .name = "xsaveopt",
893 .description = "Support xsaveopt instructions",893 .description = "Support xsaveopt instructions",
894 .subfeatures = &[_]*const Feature {894 .dependencies = &[_]*const Feature {
895 },895 },
896};896};
897897
898pub const feature_xsaves = Feature{898pub const feature_xsaves = Feature{
899 .name = "xsaves",899 .name = "xsaves",
900 .description = "Support xsaves instructions",900 .description = "Support xsaves instructions",
901 .subfeatures = &[_]*const Feature {901 .dependencies = &[_]*const Feature {
902 },902 },
903};903};
904904
905pub const feature_bitMode16 = Feature{905pub const feature_bitMode16 = Feature{
906 .name = "16bit-mode",906 .name = "16bit-mode",
907 .description = "16-bit mode (i8086)",907 .description = "16-bit mode (i8086)",
908 .subfeatures = &[_]*const Feature {908 .dependencies = &[_]*const Feature {
909 },909 },
910};910};
911911
912pub const feature_bitMode32 = Feature{912pub const feature_bitMode32 = Feature{
913 .name = "32bit-mode",913 .name = "32bit-mode",
914 .description = "32-bit mode (80386)",914 .description = "32-bit mode (80386)",
915 .subfeatures = &[_]*const Feature {915 .dependencies = &[_]*const Feature {
916 },916 },
917};917};
918918
919pub const feature_bitMode64 = Feature{919pub const feature_bitMode64 = Feature{
920 .name = "64bit-mode",920 .name = "64bit-mode",
921 .description = "64-bit mode (x86_64)",921 .description = "64-bit mode (x86_64)",
922 .subfeatures = &[_]*const Feature {922 .dependencies = &[_]*const Feature {
923 },923 },
924};924};
925925
...@@ -1055,7 +1055,7 @@ pub const features = &[_]*const Feature {...@@ -1055,7 +1055,7 @@ pub const features = &[_]*const Feature {
1055pub const cpu_amdfam10 = Cpu{1055pub const cpu_amdfam10 = Cpu{
1056 .name = "amdfam10",1056 .name = "amdfam10",
1057 .llvm_name = "amdfam10",1057 .llvm_name = "amdfam10",
1058 .subfeatures = &[_]*const Feature {1058 .dependencies = &[_]*const Feature {
1059 &feature_mmx,1059 &feature_mmx,
1060 &feature_dnowa3,1060 &feature_dnowa3,
1061 &feature_bit64,1061 &feature_bit64,
...@@ -1078,7 +1078,7 @@ pub const cpu_amdfam10 = Cpu{...@@ -1078,7 +1078,7 @@ pub const cpu_amdfam10 = Cpu{
1078pub const cpu_athlon = Cpu{1078pub const cpu_athlon = Cpu{
1079 .name = "athlon",1079 .name = "athlon",
1080 .llvm_name = "athlon",1080 .llvm_name = "athlon",
1081 .subfeatures = &[_]*const Feature {1081 .dependencies = &[_]*const Feature {
1082 &feature_mmx,1082 &feature_mmx,
1083 &feature_dnowa3,1083 &feature_dnowa3,
1084 &feature_cmov,1084 &feature_cmov,
...@@ -1093,7 +1093,7 @@ pub const cpu_athlon = Cpu{...@@ -1093,7 +1093,7 @@ pub const cpu_athlon = Cpu{
1093pub const cpu_athlon4 = Cpu{1093pub const cpu_athlon4 = Cpu{
1094 .name = "athlon-4",1094 .name = "athlon-4",
1095 .llvm_name = "athlon-4",1095 .llvm_name = "athlon-4",
1096 .subfeatures = &[_]*const Feature {1096 .dependencies = &[_]*const Feature {
1097 &feature_mmx,1097 &feature_mmx,
1098 &feature_dnowa3,1098 &feature_dnowa3,
1099 &feature_cmov,1099 &feature_cmov,
...@@ -1110,7 +1110,7 @@ pub const cpu_athlon4 = Cpu{...@@ -1110,7 +1110,7 @@ pub const cpu_athlon4 = Cpu{
1110pub const cpu_athlonFx = Cpu{1110pub const cpu_athlonFx = Cpu{
1111 .name = "athlon-fx",1111 .name = "athlon-fx",
1112 .llvm_name = "athlon-fx",1112 .llvm_name = "athlon-fx",
1113 .subfeatures = &[_]*const Feature {1113 .dependencies = &[_]*const Feature {
1114 &feature_mmx,1114 &feature_mmx,
1115 &feature_dnowa3,1115 &feature_dnowa3,
1116 &feature_bit64,1116 &feature_bit64,
...@@ -1130,7 +1130,7 @@ pub const cpu_athlonFx = Cpu{...@@ -1130,7 +1130,7 @@ pub const cpu_athlonFx = Cpu{
1130pub const cpu_athlonMp = Cpu{1130pub const cpu_athlonMp = Cpu{
1131 .name = "athlon-mp",1131 .name = "athlon-mp",
1132 .llvm_name = "athlon-mp",1132 .llvm_name = "athlon-mp",
1133 .subfeatures = &[_]*const Feature {1133 .dependencies = &[_]*const Feature {
1134 &feature_mmx,1134 &feature_mmx,
1135 &feature_dnowa3,1135 &feature_dnowa3,
1136 &feature_cmov,1136 &feature_cmov,
...@@ -1147,7 +1147,7 @@ pub const cpu_athlonMp = Cpu{...@@ -1147,7 +1147,7 @@ pub const cpu_athlonMp = Cpu{
1147pub const cpu_athlonTbird = Cpu{1147pub const cpu_athlonTbird = Cpu{
1148 .name = "athlon-tbird",1148 .name = "athlon-tbird",
1149 .llvm_name = "athlon-tbird",1149 .llvm_name = "athlon-tbird",
1150 .subfeatures = &[_]*const Feature {1150 .dependencies = &[_]*const Feature {
1151 &feature_mmx,1151 &feature_mmx,
1152 &feature_dnowa3,1152 &feature_dnowa3,
1153 &feature_cmov,1153 &feature_cmov,
...@@ -1162,7 +1162,7 @@ pub const cpu_athlonTbird = Cpu{...@@ -1162,7 +1162,7 @@ pub const cpu_athlonTbird = Cpu{
1162pub const cpu_athlonXp = Cpu{1162pub const cpu_athlonXp = Cpu{
1163 .name = "athlon-xp",1163 .name = "athlon-xp",
1164 .llvm_name = "athlon-xp",1164 .llvm_name = "athlon-xp",
1165 .subfeatures = &[_]*const Feature {1165 .dependencies = &[_]*const Feature {
1166 &feature_mmx,1166 &feature_mmx,
1167 &feature_dnowa3,1167 &feature_dnowa3,
1168 &feature_cmov,1168 &feature_cmov,
...@@ -1179,7 +1179,7 @@ pub const cpu_athlonXp = Cpu{...@@ -1179,7 +1179,7 @@ pub const cpu_athlonXp = Cpu{
1179pub const cpu_athlon64 = Cpu{1179pub const cpu_athlon64 = Cpu{
1180 .name = "athlon64",1180 .name = "athlon64",
1181 .llvm_name = "athlon64",1181 .llvm_name = "athlon64",
1182 .subfeatures = &[_]*const Feature {1182 .dependencies = &[_]*const Feature {
1183 &feature_mmx,1183 &feature_mmx,
1184 &feature_dnowa3,1184 &feature_dnowa3,
1185 &feature_bit64,1185 &feature_bit64,
...@@ -1199,7 +1199,7 @@ pub const cpu_athlon64 = Cpu{...@@ -1199,7 +1199,7 @@ pub const cpu_athlon64 = Cpu{
1199pub const cpu_athlon64Sse3 = Cpu{1199pub const cpu_athlon64Sse3 = Cpu{
1200 .name = "athlon64-sse3",1200 .name = "athlon64-sse3",
1201 .llvm_name = "athlon64-sse3",1201 .llvm_name = "athlon64-sse3",
1202 .subfeatures = &[_]*const Feature {1202 .dependencies = &[_]*const Feature {
1203 &feature_mmx,1203 &feature_mmx,
1204 &feature_dnowa3,1204 &feature_dnowa3,
1205 &feature_bit64,1205 &feature_bit64,
...@@ -1220,7 +1220,7 @@ pub const cpu_athlon64Sse3 = Cpu{...@@ -1220,7 +1220,7 @@ pub const cpu_athlon64Sse3 = Cpu{
1220pub const cpu_atom = Cpu{1220pub const cpu_atom = Cpu{
1221 .name = "atom",1221 .name = "atom",
1222 .llvm_name = "atom",1222 .llvm_name = "atom",
1223 .subfeatures = &[_]*const Feature {1223 .dependencies = &[_]*const Feature {
1224 &feature_bit64,1224 &feature_bit64,
1225 &feature_cmov,1225 &feature_cmov,
1226 &feature_cx8,1226 &feature_cx8,
...@@ -1246,7 +1246,7 @@ pub const cpu_atom = Cpu{...@@ -1246,7 +1246,7 @@ pub const cpu_atom = Cpu{
1246pub const cpu_barcelona = Cpu{1246pub const cpu_barcelona = Cpu{
1247 .name = "barcelona",1247 .name = "barcelona",
1248 .llvm_name = "barcelona",1248 .llvm_name = "barcelona",
1249 .subfeatures = &[_]*const Feature {1249 .dependencies = &[_]*const Feature {
1250 &feature_mmx,1250 &feature_mmx,
1251 &feature_dnowa3,1251 &feature_dnowa3,
1252 &feature_bit64,1252 &feature_bit64,
...@@ -1269,7 +1269,7 @@ pub const cpu_barcelona = Cpu{...@@ -1269,7 +1269,7 @@ pub const cpu_barcelona = Cpu{
1269pub const cpu_bdver1 = Cpu{1269pub const cpu_bdver1 = Cpu{
1270 .name = "bdver1",1270 .name = "bdver1",
1271 .llvm_name = "bdver1",1271 .llvm_name = "bdver1",
1272 .subfeatures = &[_]*const Feature {1272 .dependencies = &[_]*const Feature {
1273 &feature_bit64,1273 &feature_bit64,
1274 &feature_sse,1274 &feature_sse,
1275 &feature_aes,1275 &feature_aes,
...@@ -1298,7 +1298,7 @@ pub const cpu_bdver1 = Cpu{...@@ -1298,7 +1298,7 @@ pub const cpu_bdver1 = Cpu{
1298pub const cpu_bdver2 = Cpu{1298pub const cpu_bdver2 = Cpu{
1299 .name = "bdver2",1299 .name = "bdver2",
1300 .llvm_name = "bdver2",1300 .llvm_name = "bdver2",
1301 .subfeatures = &[_]*const Feature {1301 .dependencies = &[_]*const Feature {
1302 &feature_bit64,1302 &feature_bit64,
1303 &feature_sse,1303 &feature_sse,
1304 &feature_aes,1304 &feature_aes,
...@@ -1332,7 +1332,7 @@ pub const cpu_bdver2 = Cpu{...@@ -1332,7 +1332,7 @@ pub const cpu_bdver2 = Cpu{
1332pub const cpu_bdver3 = Cpu{1332pub const cpu_bdver3 = Cpu{
1333 .name = "bdver3",1333 .name = "bdver3",
1334 .llvm_name = "bdver3",1334 .llvm_name = "bdver3",
1335 .subfeatures = &[_]*const Feature {1335 .dependencies = &[_]*const Feature {
1336 &feature_bit64,1336 &feature_bit64,
1337 &feature_sse,1337 &feature_sse,
1338 &feature_aes,1338 &feature_aes,
...@@ -1368,7 +1368,7 @@ pub const cpu_bdver3 = Cpu{...@@ -1368,7 +1368,7 @@ pub const cpu_bdver3 = Cpu{
1368pub const cpu_bdver4 = Cpu{1368pub const cpu_bdver4 = Cpu{
1369 .name = "bdver4",1369 .name = "bdver4",
1370 .llvm_name = "bdver4",1370 .llvm_name = "bdver4",
1371 .subfeatures = &[_]*const Feature {1371 .dependencies = &[_]*const Feature {
1372 &feature_bit64,1372 &feature_bit64,
1373 &feature_sse,1373 &feature_sse,
1374 &feature_aes,1374 &feature_aes,
...@@ -1407,7 +1407,7 @@ pub const cpu_bdver4 = Cpu{...@@ -1407,7 +1407,7 @@ pub const cpu_bdver4 = Cpu{
1407pub const cpu_bonnell = Cpu{1407pub const cpu_bonnell = Cpu{
1408 .name = "bonnell",1408 .name = "bonnell",
1409 .llvm_name = "bonnell",1409 .llvm_name = "bonnell",
1410 .subfeatures = &[_]*const Feature {1410 .dependencies = &[_]*const Feature {
1411 &feature_bit64,1411 &feature_bit64,
1412 &feature_cmov,1412 &feature_cmov,
1413 &feature_cx8,1413 &feature_cx8,
...@@ -1433,7 +1433,7 @@ pub const cpu_bonnell = Cpu{...@@ -1433,7 +1433,7 @@ pub const cpu_bonnell = Cpu{
1433pub const cpu_broadwell = Cpu{1433pub const cpu_broadwell = Cpu{
1434 .name = "broadwell",1434 .name = "broadwell",
1435 .llvm_name = "broadwell",1435 .llvm_name = "broadwell",
1436 .subfeatures = &[_]*const Feature {1436 .dependencies = &[_]*const Feature {
1437 &feature_bit64,1437 &feature_bit64,
1438 &feature_adx,1438 &feature_adx,
1439 &feature_sse,1439 &feature_sse,
...@@ -1479,7 +1479,7 @@ pub const cpu_broadwell = Cpu{...@@ -1479,7 +1479,7 @@ pub const cpu_broadwell = Cpu{
1479pub const cpu_btver1 = Cpu{1479pub const cpu_btver1 = Cpu{
1480 .name = "btver1",1480 .name = "btver1",
1481 .llvm_name = "btver1",1481 .llvm_name = "btver1",
1482 .subfeatures = &[_]*const Feature {1482 .dependencies = &[_]*const Feature {
1483 &feature_bit64,1483 &feature_bit64,
1484 &feature_cmov,1484 &feature_cmov,
1485 &feature_cx8,1485 &feature_cx8,
...@@ -1505,7 +1505,7 @@ pub const cpu_btver1 = Cpu{...@@ -1505,7 +1505,7 @@ pub const cpu_btver1 = Cpu{
1505pub const cpu_btver2 = Cpu{1505pub const cpu_btver2 = Cpu{
1506 .name = "btver2",1506 .name = "btver2",
1507 .llvm_name = "btver2",1507 .llvm_name = "btver2",
1508 .subfeatures = &[_]*const Feature {1508 .dependencies = &[_]*const Feature {
1509 &feature_bit64,1509 &feature_bit64,
1510 &feature_sse,1510 &feature_sse,
1511 &feature_aes,1511 &feature_aes,
...@@ -1543,7 +1543,7 @@ pub const cpu_btver2 = Cpu{...@@ -1543,7 +1543,7 @@ pub const cpu_btver2 = Cpu{
1543pub const cpu_c3 = Cpu{1543pub const cpu_c3 = Cpu{
1544 .name = "c3",1544 .name = "c3",
1545 .llvm_name = "c3",1545 .llvm_name = "c3",
1546 .subfeatures = &[_]*const Feature {1546 .dependencies = &[_]*const Feature {
1547 &feature_mmx,1547 &feature_mmx,
1548 &feature_dnow3,1548 &feature_dnow3,
1549 &feature_slowUnalignedMem16,1549 &feature_slowUnalignedMem16,
...@@ -1554,7 +1554,7 @@ pub const cpu_c3 = Cpu{...@@ -1554,7 +1554,7 @@ pub const cpu_c3 = Cpu{
1554pub const cpu_c32 = Cpu{1554pub const cpu_c32 = Cpu{
1555 .name = "c3-2",1555 .name = "c3-2",
1556 .llvm_name = "c3-2",1556 .llvm_name = "c3-2",
1557 .subfeatures = &[_]*const Feature {1557 .dependencies = &[_]*const Feature {
1558 &feature_cmov,1558 &feature_cmov,
1559 &feature_cx8,1559 &feature_cx8,
1560 &feature_fxsr,1560 &feature_fxsr,
...@@ -1568,7 +1568,7 @@ pub const cpu_c32 = Cpu{...@@ -1568,7 +1568,7 @@ pub const cpu_c32 = Cpu{
1568pub const cpu_cannonlake = Cpu{1568pub const cpu_cannonlake = Cpu{
1569 .name = "cannonlake",1569 .name = "cannonlake",
1570 .llvm_name = "cannonlake",1570 .llvm_name = "cannonlake",
1571 .subfeatures = &[_]*const Feature {1571 .dependencies = &[_]*const Feature {
1572 &feature_bit64,1572 &feature_bit64,
1573 &feature_adx,1573 &feature_adx,
1574 &feature_sse,1574 &feature_sse,
...@@ -1629,7 +1629,7 @@ pub const cpu_cannonlake = Cpu{...@@ -1629,7 +1629,7 @@ pub const cpu_cannonlake = Cpu{
1629pub const cpu_cascadelake = Cpu{1629pub const cpu_cascadelake = Cpu{
1630 .name = "cascadelake",1630 .name = "cascadelake",
1631 .llvm_name = "cascadelake",1631 .llvm_name = "cascadelake",
1632 .subfeatures = &[_]*const Feature {1632 .dependencies = &[_]*const Feature {
1633 &feature_bit64,1633 &feature_bit64,
1634 &feature_adx,1634 &feature_adx,
1635 &feature_sse,1635 &feature_sse,
...@@ -1689,7 +1689,7 @@ pub const cpu_cascadelake = Cpu{...@@ -1689,7 +1689,7 @@ pub const cpu_cascadelake = Cpu{
1689pub const cpu_cooperlake = Cpu{1689pub const cpu_cooperlake = Cpu{
1690 .name = "cooperlake",1690 .name = "cooperlake",
1691 .llvm_name = "cooperlake",1691 .llvm_name = "cooperlake",
1692 .subfeatures = &[_]*const Feature {1692 .dependencies = &[_]*const Feature {
1693 &feature_bit64,1693 &feature_bit64,
1694 &feature_adx,1694 &feature_adx,
1695 &feature_sse,1695 &feature_sse,
...@@ -1750,7 +1750,7 @@ pub const cpu_cooperlake = Cpu{...@@ -1750,7 +1750,7 @@ pub const cpu_cooperlake = Cpu{
1750pub const cpu_coreAvxI = Cpu{1750pub const cpu_coreAvxI = Cpu{
1751 .name = "core-avx-i",1751 .name = "core-avx-i",
1752 .llvm_name = "core-avx-i",1752 .llvm_name = "core-avx-i",
1753 .subfeatures = &[_]*const Feature {1753 .dependencies = &[_]*const Feature {
1754 &feature_bit64,1754 &feature_bit64,
1755 &feature_sse,1755 &feature_sse,
1756 &feature_avx,1756 &feature_avx,
...@@ -1784,7 +1784,7 @@ pub const cpu_coreAvxI = Cpu{...@@ -1784,7 +1784,7 @@ pub const cpu_coreAvxI = Cpu{
1784pub const cpu_coreAvx2 = Cpu{1784pub const cpu_coreAvx2 = Cpu{
1785 .name = "core-avx2",1785 .name = "core-avx2",
1786 .llvm_name = "core-avx2",1786 .llvm_name = "core-avx2",
1787 .subfeatures = &[_]*const Feature {1787 .dependencies = &[_]*const Feature {
1788 &feature_bit64,1788 &feature_bit64,
1789 &feature_sse,1789 &feature_sse,
1790 &feature_avx,1790 &feature_avx,
...@@ -1827,7 +1827,7 @@ pub const cpu_coreAvx2 = Cpu{...@@ -1827,7 +1827,7 @@ pub const cpu_coreAvx2 = Cpu{
1827pub const cpu_core2 = Cpu{1827pub const cpu_core2 = Cpu{
1828 .name = "core2",1828 .name = "core2",
1829 .llvm_name = "core2",1829 .llvm_name = "core2",
1830 .subfeatures = &[_]*const Feature {1830 .dependencies = &[_]*const Feature {
1831 &feature_bit64,1831 &feature_bit64,
1832 &feature_cmov,1832 &feature_cmov,
1833 &feature_cx8,1833 &feature_cx8,
...@@ -1847,7 +1847,7 @@ pub const cpu_core2 = Cpu{...@@ -1847,7 +1847,7 @@ pub const cpu_core2 = Cpu{
1847pub const cpu_corei7 = Cpu{1847pub const cpu_corei7 = Cpu{
1848 .name = "corei7",1848 .name = "corei7",
1849 .llvm_name = "corei7",1849 .llvm_name = "corei7",
1850 .subfeatures = &[_]*const Feature {1850 .dependencies = &[_]*const Feature {
1851 &feature_bit64,1851 &feature_bit64,
1852 &feature_cmov,1852 &feature_cmov,
1853 &feature_cx8,1853 &feature_cx8,
...@@ -1867,7 +1867,7 @@ pub const cpu_corei7 = Cpu{...@@ -1867,7 +1867,7 @@ pub const cpu_corei7 = Cpu{
1867pub const cpu_corei7Avx = Cpu{1867pub const cpu_corei7Avx = Cpu{
1868 .name = "corei7-avx",1868 .name = "corei7-avx",
1869 .llvm_name = "corei7-avx",1869 .llvm_name = "corei7-avx",
1870 .subfeatures = &[_]*const Feature {1870 .dependencies = &[_]*const Feature {
1871 &feature_bit64,1871 &feature_bit64,
1872 &feature_sse,1872 &feature_sse,
1873 &feature_avx,1873 &feature_avx,
...@@ -1898,7 +1898,7 @@ pub const cpu_corei7Avx = Cpu{...@@ -1898,7 +1898,7 @@ pub const cpu_corei7Avx = Cpu{
1898pub const cpu_generic = Cpu{1898pub const cpu_generic = Cpu{
1899 .name = "generic",1899 .name = "generic",
1900 .llvm_name = "generic",1900 .llvm_name = "generic",
1901 .subfeatures = &[_]*const Feature {1901 .dependencies = &[_]*const Feature {
1902 &feature_cx8,1902 &feature_cx8,
1903 &feature_slowUnalignedMem16,1903 &feature_slowUnalignedMem16,
1904 &feature_x87,1904 &feature_x87,
...@@ -1908,7 +1908,7 @@ pub const cpu_generic = Cpu{...@@ -1908,7 +1908,7 @@ pub const cpu_generic = Cpu{
1908pub const cpu_geode = Cpu{1908pub const cpu_geode = Cpu{
1909 .name = "geode",1909 .name = "geode",
1910 .llvm_name = "geode",1910 .llvm_name = "geode",
1911 .subfeatures = &[_]*const Feature {1911 .dependencies = &[_]*const Feature {
1912 &feature_mmx,1912 &feature_mmx,
1913 &feature_dnowa3,1913 &feature_dnowa3,
1914 &feature_cx8,1914 &feature_cx8,
...@@ -1920,7 +1920,7 @@ pub const cpu_geode = Cpu{...@@ -1920,7 +1920,7 @@ pub const cpu_geode = Cpu{
1920pub const cpu_goldmont = Cpu{1920pub const cpu_goldmont = Cpu{
1921 .name = "goldmont",1921 .name = "goldmont",
1922 .llvm_name = "goldmont",1922 .llvm_name = "goldmont",
1923 .subfeatures = &[_]*const Feature {1923 .dependencies = &[_]*const Feature {
1924 &feature_bit64,1924 &feature_bit64,
1925 &feature_sse,1925 &feature_sse,
1926 &feature_aes,1926 &feature_aes,
...@@ -1957,7 +1957,7 @@ pub const cpu_goldmont = Cpu{...@@ -1957,7 +1957,7 @@ pub const cpu_goldmont = Cpu{
1957pub const cpu_goldmontPlus = Cpu{1957pub const cpu_goldmontPlus = Cpu{
1958 .name = "goldmont-plus",1958 .name = "goldmont-plus",
1959 .llvm_name = "goldmont-plus",1959 .llvm_name = "goldmont-plus",
1960 .subfeatures = &[_]*const Feature {1960 .dependencies = &[_]*const Feature {
1961 &feature_bit64,1961 &feature_bit64,
1962 &feature_sse,1962 &feature_sse,
1963 &feature_aes,1963 &feature_aes,
...@@ -1996,7 +1996,7 @@ pub const cpu_goldmontPlus = Cpu{...@@ -1996,7 +1996,7 @@ pub const cpu_goldmontPlus = Cpu{
1996pub const cpu_haswell = Cpu{1996pub const cpu_haswell = Cpu{
1997 .name = "haswell",1997 .name = "haswell",
1998 .llvm_name = "haswell",1998 .llvm_name = "haswell",
1999 .subfeatures = &[_]*const Feature {1999 .dependencies = &[_]*const Feature {
2000 &feature_bit64,2000 &feature_bit64,
2001 &feature_sse,2001 &feature_sse,
2002 &feature_avx,2002 &feature_avx,
...@@ -2039,7 +2039,7 @@ pub const cpu_haswell = Cpu{...@@ -2039,7 +2039,7 @@ pub const cpu_haswell = Cpu{
2039pub const cpu_i386 = Cpu{2039pub const cpu_i386 = Cpu{
2040 .name = "i386",2040 .name = "i386",
2041 .llvm_name = "i386",2041 .llvm_name = "i386",
2042 .subfeatures = &[_]*const Feature {2042 .dependencies = &[_]*const Feature {
2043 &feature_slowUnalignedMem16,2043 &feature_slowUnalignedMem16,
2044 &feature_x87,2044 &feature_x87,
2045 },2045 },
...@@ -2048,7 +2048,7 @@ pub const cpu_i386 = Cpu{...@@ -2048,7 +2048,7 @@ pub const cpu_i386 = Cpu{
2048pub const cpu_i486 = Cpu{2048pub const cpu_i486 = Cpu{
2049 .name = "i486",2049 .name = "i486",
2050 .llvm_name = "i486",2050 .llvm_name = "i486",
2051 .subfeatures = &[_]*const Feature {2051 .dependencies = &[_]*const Feature {
2052 &feature_slowUnalignedMem16,2052 &feature_slowUnalignedMem16,
2053 &feature_x87,2053 &feature_x87,
2054 },2054 },
...@@ -2057,7 +2057,7 @@ pub const cpu_i486 = Cpu{...@@ -2057,7 +2057,7 @@ pub const cpu_i486 = Cpu{
2057pub const cpu_i586 = Cpu{2057pub const cpu_i586 = Cpu{
2058 .name = "i586",2058 .name = "i586",
2059 .llvm_name = "i586",2059 .llvm_name = "i586",
2060 .subfeatures = &[_]*const Feature {2060 .dependencies = &[_]*const Feature {
2061 &feature_cx8,2061 &feature_cx8,
2062 &feature_slowUnalignedMem16,2062 &feature_slowUnalignedMem16,
2063 &feature_x87,2063 &feature_x87,
...@@ -2067,7 +2067,7 @@ pub const cpu_i586 = Cpu{...@@ -2067,7 +2067,7 @@ pub const cpu_i586 = Cpu{
2067pub const cpu_i686 = Cpu{2067pub const cpu_i686 = Cpu{
2068 .name = "i686",2068 .name = "i686",
2069 .llvm_name = "i686",2069 .llvm_name = "i686",
2070 .subfeatures = &[_]*const Feature {2070 .dependencies = &[_]*const Feature {
2071 &feature_cmov,2071 &feature_cmov,
2072 &feature_cx8,2072 &feature_cx8,
2073 &feature_slowUnalignedMem16,2073 &feature_slowUnalignedMem16,
...@@ -2078,7 +2078,7 @@ pub const cpu_i686 = Cpu{...@@ -2078,7 +2078,7 @@ pub const cpu_i686 = Cpu{
2078pub const cpu_icelakeClient = Cpu{2078pub const cpu_icelakeClient = Cpu{
2079 .name = "icelake-client",2079 .name = "icelake-client",
2080 .llvm_name = "icelake-client",2080 .llvm_name = "icelake-client",
2081 .subfeatures = &[_]*const Feature {2081 .dependencies = &[_]*const Feature {
2082 &feature_bit64,2082 &feature_bit64,
2083 &feature_adx,2083 &feature_adx,
2084 &feature_sse,2084 &feature_sse,
...@@ -2148,7 +2148,7 @@ pub const cpu_icelakeClient = Cpu{...@@ -2148,7 +2148,7 @@ pub const cpu_icelakeClient = Cpu{
2148pub const cpu_icelakeServer = Cpu{2148pub const cpu_icelakeServer = Cpu{
2149 .name = "icelake-server",2149 .name = "icelake-server",
2150 .llvm_name = "icelake-server",2150 .llvm_name = "icelake-server",
2151 .subfeatures = &[_]*const Feature {2151 .dependencies = &[_]*const Feature {
2152 &feature_bit64,2152 &feature_bit64,
2153 &feature_adx,2153 &feature_adx,
2154 &feature_sse,2154 &feature_sse,
...@@ -2220,7 +2220,7 @@ pub const cpu_icelakeServer = Cpu{...@@ -2220,7 +2220,7 @@ pub const cpu_icelakeServer = Cpu{
2220pub const cpu_ivybridge = Cpu{2220pub const cpu_ivybridge = Cpu{
2221 .name = "ivybridge",2221 .name = "ivybridge",
2222 .llvm_name = "ivybridge",2222 .llvm_name = "ivybridge",
2223 .subfeatures = &[_]*const Feature {2223 .dependencies = &[_]*const Feature {
2224 &feature_bit64,2224 &feature_bit64,
2225 &feature_sse,2225 &feature_sse,
2226 &feature_avx,2226 &feature_avx,
...@@ -2254,7 +2254,7 @@ pub const cpu_ivybridge = Cpu{...@@ -2254,7 +2254,7 @@ pub const cpu_ivybridge = Cpu{
2254pub const cpu_k6 = Cpu{2254pub const cpu_k6 = Cpu{
2255 .name = "k6",2255 .name = "k6",
2256 .llvm_name = "k6",2256 .llvm_name = "k6",
2257 .subfeatures = &[_]*const Feature {2257 .dependencies = &[_]*const Feature {
2258 &feature_cx8,2258 &feature_cx8,
2259 &feature_mmx,2259 &feature_mmx,
2260 &feature_slowUnalignedMem16,2260 &feature_slowUnalignedMem16,
...@@ -2265,7 +2265,7 @@ pub const cpu_k6 = Cpu{...@@ -2265,7 +2265,7 @@ pub const cpu_k6 = Cpu{
2265pub const cpu_k62 = Cpu{2265pub const cpu_k62 = Cpu{
2266 .name = "k6-2",2266 .name = "k6-2",
2267 .llvm_name = "k6-2",2267 .llvm_name = "k6-2",
2268 .subfeatures = &[_]*const Feature {2268 .dependencies = &[_]*const Feature {
2269 &feature_mmx,2269 &feature_mmx,
2270 &feature_dnow3,2270 &feature_dnow3,
2271 &feature_cx8,2271 &feature_cx8,
...@@ -2277,7 +2277,7 @@ pub const cpu_k62 = Cpu{...@@ -2277,7 +2277,7 @@ pub const cpu_k62 = Cpu{
2277pub const cpu_k63 = Cpu{2277pub const cpu_k63 = Cpu{
2278 .name = "k6-3",2278 .name = "k6-3",
2279 .llvm_name = "k6-3",2279 .llvm_name = "k6-3",
2280 .subfeatures = &[_]*const Feature {2280 .dependencies = &[_]*const Feature {
2281 &feature_mmx,2281 &feature_mmx,
2282 &feature_dnow3,2282 &feature_dnow3,
2283 &feature_cx8,2283 &feature_cx8,
...@@ -2289,7 +2289,7 @@ pub const cpu_k63 = Cpu{...@@ -2289,7 +2289,7 @@ pub const cpu_k63 = Cpu{
2289pub const cpu_k8 = Cpu{2289pub const cpu_k8 = Cpu{
2290 .name = "k8",2290 .name = "k8",
2291 .llvm_name = "k8",2291 .llvm_name = "k8",
2292 .subfeatures = &[_]*const Feature {2292 .dependencies = &[_]*const Feature {
2293 &feature_mmx,2293 &feature_mmx,
2294 &feature_dnowa3,2294 &feature_dnowa3,
2295 &feature_bit64,2295 &feature_bit64,
...@@ -2309,7 +2309,7 @@ pub const cpu_k8 = Cpu{...@@ -2309,7 +2309,7 @@ pub const cpu_k8 = Cpu{
2309pub const cpu_k8Sse3 = Cpu{2309pub const cpu_k8Sse3 = Cpu{
2310 .name = "k8-sse3",2310 .name = "k8-sse3",
2311 .llvm_name = "k8-sse3",2311 .llvm_name = "k8-sse3",
2312 .subfeatures = &[_]*const Feature {2312 .dependencies = &[_]*const Feature {
2313 &feature_mmx,2313 &feature_mmx,
2314 &feature_dnowa3,2314 &feature_dnowa3,
2315 &feature_bit64,2315 &feature_bit64,
...@@ -2330,7 +2330,7 @@ pub const cpu_k8Sse3 = Cpu{...@@ -2330,7 +2330,7 @@ pub const cpu_k8Sse3 = Cpu{
2330pub const cpu_knl = Cpu{2330pub const cpu_knl = Cpu{
2331 .name = "knl",2331 .name = "knl",
2332 .llvm_name = "knl",2332 .llvm_name = "knl",
2333 .subfeatures = &[_]*const Feature {2333 .dependencies = &[_]*const Feature {
2334 &feature_bit64,2334 &feature_bit64,
2335 &feature_adx,2335 &feature_adx,
2336 &feature_sse,2336 &feature_sse,
...@@ -2375,7 +2375,7 @@ pub const cpu_knl = Cpu{...@@ -2375,7 +2375,7 @@ pub const cpu_knl = Cpu{
2375pub const cpu_knm = Cpu{2375pub const cpu_knm = Cpu{
2376 .name = "knm",2376 .name = "knm",
2377 .llvm_name = "knm",2377 .llvm_name = "knm",
2378 .subfeatures = &[_]*const Feature {2378 .dependencies = &[_]*const Feature {
2379 &feature_bit64,2379 &feature_bit64,
2380 &feature_adx,2380 &feature_adx,
2381 &feature_sse,2381 &feature_sse,
...@@ -2421,14 +2421,14 @@ pub const cpu_knm = Cpu{...@@ -2421,14 +2421,14 @@ pub const cpu_knm = Cpu{
2421pub const cpu_lakemont = Cpu{2421pub const cpu_lakemont = Cpu{
2422 .name = "lakemont",2422 .name = "lakemont",
2423 .llvm_name = "lakemont",2423 .llvm_name = "lakemont",
2424 .subfeatures = &[_]*const Feature {2424 .dependencies = &[_]*const Feature {
2425 },2425 },
2426};2426};
24272427
2428pub const cpu_nehalem = Cpu{2428pub const cpu_nehalem = Cpu{
2429 .name = "nehalem",2429 .name = "nehalem",
2430 .llvm_name = "nehalem",2430 .llvm_name = "nehalem",
2431 .subfeatures = &[_]*const Feature {2431 .dependencies = &[_]*const Feature {
2432 &feature_bit64,2432 &feature_bit64,
2433 &feature_cmov,2433 &feature_cmov,
2434 &feature_cx8,2434 &feature_cx8,
...@@ -2448,7 +2448,7 @@ pub const cpu_nehalem = Cpu{...@@ -2448,7 +2448,7 @@ pub const cpu_nehalem = Cpu{
2448pub const cpu_nocona = Cpu{2448pub const cpu_nocona = Cpu{
2449 .name = "nocona",2449 .name = "nocona",
2450 .llvm_name = "nocona",2450 .llvm_name = "nocona",
2451 .subfeatures = &[_]*const Feature {2451 .dependencies = &[_]*const Feature {
2452 &feature_bit64,2452 &feature_bit64,
2453 &feature_cmov,2453 &feature_cmov,
2454 &feature_cx8,2454 &feature_cx8,
...@@ -2466,7 +2466,7 @@ pub const cpu_nocona = Cpu{...@@ -2466,7 +2466,7 @@ pub const cpu_nocona = Cpu{
2466pub const cpu_opteron = Cpu{2466pub const cpu_opteron = Cpu{
2467 .name = "opteron",2467 .name = "opteron",
2468 .llvm_name = "opteron",2468 .llvm_name = "opteron",
2469 .subfeatures = &[_]*const Feature {2469 .dependencies = &[_]*const Feature {
2470 &feature_mmx,2470 &feature_mmx,
2471 &feature_dnowa3,2471 &feature_dnowa3,
2472 &feature_bit64,2472 &feature_bit64,
...@@ -2486,7 +2486,7 @@ pub const cpu_opteron = Cpu{...@@ -2486,7 +2486,7 @@ pub const cpu_opteron = Cpu{
2486pub const cpu_opteronSse3 = Cpu{2486pub const cpu_opteronSse3 = Cpu{
2487 .name = "opteron-sse3",2487 .name = "opteron-sse3",
2488 .llvm_name = "opteron-sse3",2488 .llvm_name = "opteron-sse3",
2489 .subfeatures = &[_]*const Feature {2489 .dependencies = &[_]*const Feature {
2490 &feature_mmx,2490 &feature_mmx,
2491 &feature_dnowa3,2491 &feature_dnowa3,
2492 &feature_bit64,2492 &feature_bit64,
...@@ -2507,7 +2507,7 @@ pub const cpu_opteronSse3 = Cpu{...@@ -2507,7 +2507,7 @@ pub const cpu_opteronSse3 = Cpu{
2507pub const cpu_penryn = Cpu{2507pub const cpu_penryn = Cpu{
2508 .name = "penryn",2508 .name = "penryn",
2509 .llvm_name = "penryn",2509 .llvm_name = "penryn",
2510 .subfeatures = &[_]*const Feature {2510 .dependencies = &[_]*const Feature {
2511 &feature_bit64,2511 &feature_bit64,
2512 &feature_cmov,2512 &feature_cmov,
2513 &feature_cx8,2513 &feature_cx8,
...@@ -2527,7 +2527,7 @@ pub const cpu_penryn = Cpu{...@@ -2527,7 +2527,7 @@ pub const cpu_penryn = Cpu{
2527pub const cpu_pentium = Cpu{2527pub const cpu_pentium = Cpu{
2528 .name = "pentium",2528 .name = "pentium",
2529 .llvm_name = "pentium",2529 .llvm_name = "pentium",
2530 .subfeatures = &[_]*const Feature {2530 .dependencies = &[_]*const Feature {
2531 &feature_cx8,2531 &feature_cx8,
2532 &feature_slowUnalignedMem16,2532 &feature_slowUnalignedMem16,
2533 &feature_x87,2533 &feature_x87,
...@@ -2537,7 +2537,7 @@ pub const cpu_pentium = Cpu{...@@ -2537,7 +2537,7 @@ pub const cpu_pentium = Cpu{
2537pub const cpu_pentiumM = Cpu{2537pub const cpu_pentiumM = Cpu{
2538 .name = "pentium-m",2538 .name = "pentium-m",
2539 .llvm_name = "pentium-m",2539 .llvm_name = "pentium-m",
2540 .subfeatures = &[_]*const Feature {2540 .dependencies = &[_]*const Feature {
2541 &feature_cmov,2541 &feature_cmov,
2542 &feature_cx8,2542 &feature_cx8,
2543 &feature_fxsr,2543 &feature_fxsr,
...@@ -2553,7 +2553,7 @@ pub const cpu_pentiumM = Cpu{...@@ -2553,7 +2553,7 @@ pub const cpu_pentiumM = Cpu{
2553pub const cpu_pentiumMmx = Cpu{2553pub const cpu_pentiumMmx = Cpu{
2554 .name = "pentium-mmx",2554 .name = "pentium-mmx",
2555 .llvm_name = "pentium-mmx",2555 .llvm_name = "pentium-mmx",
2556 .subfeatures = &[_]*const Feature {2556 .dependencies = &[_]*const Feature {
2557 &feature_cx8,2557 &feature_cx8,
2558 &feature_mmx,2558 &feature_mmx,
2559 &feature_slowUnalignedMem16,2559 &feature_slowUnalignedMem16,
...@@ -2564,7 +2564,7 @@ pub const cpu_pentiumMmx = Cpu{...@@ -2564,7 +2564,7 @@ pub const cpu_pentiumMmx = Cpu{
2564pub const cpu_pentium2 = Cpu{2564pub const cpu_pentium2 = Cpu{
2565 .name = "pentium2",2565 .name = "pentium2",
2566 .llvm_name = "pentium2",2566 .llvm_name = "pentium2",
2567 .subfeatures = &[_]*const Feature {2567 .dependencies = &[_]*const Feature {
2568 &feature_cmov,2568 &feature_cmov,
2569 &feature_cx8,2569 &feature_cx8,
2570 &feature_fxsr,2570 &feature_fxsr,
...@@ -2578,7 +2578,7 @@ pub const cpu_pentium2 = Cpu{...@@ -2578,7 +2578,7 @@ pub const cpu_pentium2 = Cpu{
2578pub const cpu_pentium3 = Cpu{2578pub const cpu_pentium3 = Cpu{
2579 .name = "pentium3",2579 .name = "pentium3",
2580 .llvm_name = "pentium3",2580 .llvm_name = "pentium3",
2581 .subfeatures = &[_]*const Feature {2581 .dependencies = &[_]*const Feature {
2582 &feature_cmov,2582 &feature_cmov,
2583 &feature_cx8,2583 &feature_cx8,
2584 &feature_fxsr,2584 &feature_fxsr,
...@@ -2593,7 +2593,7 @@ pub const cpu_pentium3 = Cpu{...@@ -2593,7 +2593,7 @@ pub const cpu_pentium3 = Cpu{
2593pub const cpu_pentium3m = Cpu{2593pub const cpu_pentium3m = Cpu{
2594 .name = "pentium3m",2594 .name = "pentium3m",
2595 .llvm_name = "pentium3m",2595 .llvm_name = "pentium3m",
2596 .subfeatures = &[_]*const Feature {2596 .dependencies = &[_]*const Feature {
2597 &feature_cmov,2597 &feature_cmov,
2598 &feature_cx8,2598 &feature_cx8,
2599 &feature_fxsr,2599 &feature_fxsr,
...@@ -2608,7 +2608,7 @@ pub const cpu_pentium3m = Cpu{...@@ -2608,7 +2608,7 @@ pub const cpu_pentium3m = Cpu{
2608pub const cpu_pentium4 = Cpu{2608pub const cpu_pentium4 = Cpu{
2609 .name = "pentium4",2609 .name = "pentium4",
2610 .llvm_name = "pentium4",2610 .llvm_name = "pentium4",
2611 .subfeatures = &[_]*const Feature {2611 .dependencies = &[_]*const Feature {
2612 &feature_cmov,2612 &feature_cmov,
2613 &feature_cx8,2613 &feature_cx8,
2614 &feature_fxsr,2614 &feature_fxsr,
...@@ -2624,7 +2624,7 @@ pub const cpu_pentium4 = Cpu{...@@ -2624,7 +2624,7 @@ pub const cpu_pentium4 = Cpu{
2624pub const cpu_pentium4m = Cpu{2624pub const cpu_pentium4m = Cpu{
2625 .name = "pentium4m",2625 .name = "pentium4m",
2626 .llvm_name = "pentium4m",2626 .llvm_name = "pentium4m",
2627 .subfeatures = &[_]*const Feature {2627 .dependencies = &[_]*const Feature {
2628 &feature_cmov,2628 &feature_cmov,
2629 &feature_cx8,2629 &feature_cx8,
2630 &feature_fxsr,2630 &feature_fxsr,
...@@ -2640,7 +2640,7 @@ pub const cpu_pentium4m = Cpu{...@@ -2640,7 +2640,7 @@ pub const cpu_pentium4m = Cpu{
2640pub const cpu_pentiumpro = Cpu{2640pub const cpu_pentiumpro = Cpu{
2641 .name = "pentiumpro",2641 .name = "pentiumpro",
2642 .llvm_name = "pentiumpro",2642 .llvm_name = "pentiumpro",
2643 .subfeatures = &[_]*const Feature {2643 .dependencies = &[_]*const Feature {
2644 &feature_cmov,2644 &feature_cmov,
2645 &feature_cx8,2645 &feature_cx8,
2646 &feature_nopl,2646 &feature_nopl,
...@@ -2652,7 +2652,7 @@ pub const cpu_pentiumpro = Cpu{...@@ -2652,7 +2652,7 @@ pub const cpu_pentiumpro = Cpu{
2652pub const cpu_prescott = Cpu{2652pub const cpu_prescott = Cpu{
2653 .name = "prescott",2653 .name = "prescott",
2654 .llvm_name = "prescott",2654 .llvm_name = "prescott",
2655 .subfeatures = &[_]*const Feature {2655 .dependencies = &[_]*const Feature {
2656 &feature_cmov,2656 &feature_cmov,
2657 &feature_cx8,2657 &feature_cx8,
2658 &feature_fxsr,2658 &feature_fxsr,
...@@ -2668,7 +2668,7 @@ pub const cpu_prescott = Cpu{...@@ -2668,7 +2668,7 @@ pub const cpu_prescott = Cpu{
2668pub const cpu_sandybridge = Cpu{2668pub const cpu_sandybridge = Cpu{
2669 .name = "sandybridge",2669 .name = "sandybridge",
2670 .llvm_name = "sandybridge",2670 .llvm_name = "sandybridge",
2671 .subfeatures = &[_]*const Feature {2671 .dependencies = &[_]*const Feature {
2672 &feature_bit64,2672 &feature_bit64,
2673 &feature_sse,2673 &feature_sse,
2674 &feature_avx,2674 &feature_avx,
...@@ -2699,7 +2699,7 @@ pub const cpu_sandybridge = Cpu{...@@ -2699,7 +2699,7 @@ pub const cpu_sandybridge = Cpu{
2699pub const cpu_silvermont = Cpu{2699pub const cpu_silvermont = Cpu{
2700 .name = "silvermont",2700 .name = "silvermont",
2701 .llvm_name = "silvermont",2701 .llvm_name = "silvermont",
2702 .subfeatures = &[_]*const Feature {2702 .dependencies = &[_]*const Feature {
2703 &feature_bit64,2703 &feature_bit64,
2704 &feature_cmov,2704 &feature_cmov,
2705 &feature_cx8,2705 &feature_cx8,
...@@ -2729,7 +2729,7 @@ pub const cpu_silvermont = Cpu{...@@ -2729,7 +2729,7 @@ pub const cpu_silvermont = Cpu{
2729pub const cpu_skx = Cpu{2729pub const cpu_skx = Cpu{
2730 .name = "skx",2730 .name = "skx",
2731 .llvm_name = "skx",2731 .llvm_name = "skx",
2732 .subfeatures = &[_]*const Feature {2732 .dependencies = &[_]*const Feature {
2733 &feature_bit64,2733 &feature_bit64,
2734 &feature_adx,2734 &feature_adx,
2735 &feature_sse,2735 &feature_sse,
...@@ -2788,7 +2788,7 @@ pub const cpu_skx = Cpu{...@@ -2788,7 +2788,7 @@ pub const cpu_skx = Cpu{
2788pub const cpu_skylake = Cpu{2788pub const cpu_skylake = Cpu{
2789 .name = "skylake",2789 .name = "skylake",
2790 .llvm_name = "skylake",2790 .llvm_name = "skylake",
2791 .subfeatures = &[_]*const Feature {2791 .dependencies = &[_]*const Feature {
2792 &feature_bit64,2792 &feature_bit64,
2793 &feature_adx,2793 &feature_adx,
2794 &feature_sse,2794 &feature_sse,
...@@ -2840,7 +2840,7 @@ pub const cpu_skylake = Cpu{...@@ -2840,7 +2840,7 @@ pub const cpu_skylake = Cpu{
2840pub const cpu_skylakeAvx512 = Cpu{2840pub const cpu_skylakeAvx512 = Cpu{
2841 .name = "skylake-avx512",2841 .name = "skylake-avx512",
2842 .llvm_name = "skylake-avx512",2842 .llvm_name = "skylake-avx512",
2843 .subfeatures = &[_]*const Feature {2843 .dependencies = &[_]*const Feature {
2844 &feature_bit64,2844 &feature_bit64,
2845 &feature_adx,2845 &feature_adx,
2846 &feature_sse,2846 &feature_sse,
...@@ -2899,7 +2899,7 @@ pub const cpu_skylakeAvx512 = Cpu{...@@ -2899,7 +2899,7 @@ pub const cpu_skylakeAvx512 = Cpu{
2899pub const cpu_slm = Cpu{2899pub const cpu_slm = Cpu{
2900 .name = "slm",2900 .name = "slm",
2901 .llvm_name = "slm",2901 .llvm_name = "slm",
2902 .subfeatures = &[_]*const Feature {2902 .dependencies = &[_]*const Feature {
2903 &feature_bit64,2903 &feature_bit64,
2904 &feature_cmov,2904 &feature_cmov,
2905 &feature_cx8,2905 &feature_cx8,
...@@ -2929,7 +2929,7 @@ pub const cpu_slm = Cpu{...@@ -2929,7 +2929,7 @@ pub const cpu_slm = Cpu{
2929pub const cpu_tigerlake = Cpu{2929pub const cpu_tigerlake = Cpu{
2930 .name = "tigerlake",2930 .name = "tigerlake",
2931 .llvm_name = "tigerlake",2931 .llvm_name = "tigerlake",
2932 .subfeatures = &[_]*const Feature {2932 .dependencies = &[_]*const Feature {
2933 &feature_bit64,2933 &feature_bit64,
2934 &feature_adx,2934 &feature_adx,
2935 &feature_sse,2935 &feature_sse,
...@@ -3003,7 +3003,7 @@ pub const cpu_tigerlake = Cpu{...@@ -3003,7 +3003,7 @@ pub const cpu_tigerlake = Cpu{
3003pub const cpu_tremont = Cpu{3003pub const cpu_tremont = Cpu{
3004 .name = "tremont",3004 .name = "tremont",
3005 .llvm_name = "tremont",3005 .llvm_name = "tremont",
3006 .subfeatures = &[_]*const Feature {3006 .dependencies = &[_]*const Feature {
3007 &feature_bit64,3007 &feature_bit64,
3008 &feature_sse,3008 &feature_sse,
3009 &feature_aes,3009 &feature_aes,
...@@ -3047,7 +3047,7 @@ pub const cpu_tremont = Cpu{...@@ -3047,7 +3047,7 @@ pub const cpu_tremont = Cpu{
3047pub const cpu_westmere = Cpu{3047pub const cpu_westmere = Cpu{
3048 .name = "westmere",3048 .name = "westmere",
3049 .llvm_name = "westmere",3049 .llvm_name = "westmere",
3050 .subfeatures = &[_]*const Feature {3050 .dependencies = &[_]*const Feature {
3051 &feature_bit64,3051 &feature_bit64,
3052 &feature_cmov,3052 &feature_cmov,
3053 &feature_cx8,3053 &feature_cx8,
...@@ -3068,7 +3068,7 @@ pub const cpu_westmere = Cpu{...@@ -3068,7 +3068,7 @@ pub const cpu_westmere = Cpu{
3068pub const cpu_winchipC6 = Cpu{3068pub const cpu_winchipC6 = Cpu{
3069 .name = "winchip-c6",3069 .name = "winchip-c6",
3070 .llvm_name = "winchip-c6",3070 .llvm_name = "winchip-c6",
3071 .subfeatures = &[_]*const Feature {3071 .dependencies = &[_]*const Feature {
3072 &feature_mmx,3072 &feature_mmx,
3073 &feature_slowUnalignedMem16,3073 &feature_slowUnalignedMem16,
3074 &feature_x87,3074 &feature_x87,
...@@ -3078,7 +3078,7 @@ pub const cpu_winchipC6 = Cpu{...@@ -3078,7 +3078,7 @@ pub const cpu_winchipC6 = Cpu{
3078pub const cpu_winchip2 = Cpu{3078pub const cpu_winchip2 = Cpu{
3079 .name = "winchip2",3079 .name = "winchip2",
3080 .llvm_name = "winchip2",3080 .llvm_name = "winchip2",
3081 .subfeatures = &[_]*const Feature {3081 .dependencies = &[_]*const Feature {
3082 &feature_mmx,3082 &feature_mmx,
3083 &feature_dnow3,3083 &feature_dnow3,
3084 &feature_slowUnalignedMem16,3084 &feature_slowUnalignedMem16,
...@@ -3089,7 +3089,7 @@ pub const cpu_winchip2 = Cpu{...@@ -3089,7 +3089,7 @@ pub const cpu_winchip2 = Cpu{
3089pub const cpu_x8664 = Cpu{3089pub const cpu_x8664 = Cpu{
3090 .name = "x86-64",3090 .name = "x86-64",
3091 .llvm_name = "x86-64",3091 .llvm_name = "x86-64",
3092 .subfeatures = &[_]*const Feature {3092 .dependencies = &[_]*const Feature {
3093 &feature_bit64,3093 &feature_bit64,
3094 &feature_cmov,3094 &feature_cmov,
3095 &feature_cx8,3095 &feature_cx8,
...@@ -3108,7 +3108,7 @@ pub const cpu_x8664 = Cpu{...@@ -3108,7 +3108,7 @@ pub const cpu_x8664 = Cpu{
3108pub const cpu_yonah = Cpu{3108pub const cpu_yonah = Cpu{
3109 .name = "yonah",3109 .name = "yonah",
3110 .llvm_name = "yonah",3110 .llvm_name = "yonah",
3111 .subfeatures = &[_]*const Feature {3111 .dependencies = &[_]*const Feature {
3112 &feature_cmov,3112 &feature_cmov,
3113 &feature_cx8,3113 &feature_cx8,
3114 &feature_fxsr,3114 &feature_fxsr,
...@@ -3124,7 +3124,7 @@ pub const cpu_yonah = Cpu{...@@ -3124,7 +3124,7 @@ pub const cpu_yonah = Cpu{
3124pub const cpu_znver1 = Cpu{3124pub const cpu_znver1 = Cpu{
3125 .name = "znver1",3125 .name = "znver1",
3126 .llvm_name = "znver1",3126 .llvm_name = "znver1",
3127 .subfeatures = &[_]*const Feature {3127 .dependencies = &[_]*const Feature {
3128 &feature_bit64,3128 &feature_bit64,
3129 &feature_adx,3129 &feature_adx,
3130 &feature_sse,3130 &feature_sse,
...@@ -3171,7 +3171,7 @@ pub const cpu_znver1 = Cpu{...@@ -3171,7 +3171,7 @@ pub const cpu_znver1 = Cpu{
3171pub const cpu_znver2 = Cpu{3171pub const cpu_znver2 = Cpu{
3172 .name = "znver2",3172 .name = "znver2",
3173 .llvm_name = "znver2",3173 .llvm_name = "znver2",
3174 .subfeatures = &[_]*const Feature {3174 .dependencies = &[_]*const Feature {
3175 &feature_bit64,3175 &feature_bit64,
3176 &feature_adx,3176 &feature_adx,
3177 &feature_sse,3177 &feature_sse,
src/main.cpp+6-6
...@@ -135,7 +135,7 @@ static int print_full_usage(const char *arg0, FILE *file, int return_code) {...@@ -135,7 +135,7 @@ static int print_full_usage(const char *arg0, FILE *file, int return_code) {
135 "Targets Options:\n"135 "Targets Options:\n"
136 " --list-features [arch] list available features for the given architecture\n"136 " --list-features [arch] list available features for the given architecture\n"
137 " --list-cpus [arch] list available cpus for the given architecture\n"137 " --list-cpus [arch] list available cpus for the given architecture\n"
138 " --show-subfeatures list subfeatures for each entry from --list-features or --list-cpus\n"138 " --show-dependencies list feature dependencies for each entry from --list-{features,cpus}\n"
139 , arg0);139 , arg0);
140 return return_code;140 return return_code;
141}141}
...@@ -540,7 +540,7 @@ int main(int argc, char **argv) {...@@ -540,7 +540,7 @@ int main(int argc, char **argv) {
540540
541 const char *targets_list_features_arch = nullptr;541 const char *targets_list_features_arch = nullptr;
542 const char *targets_list_cpus_arch = nullptr;542 const char *targets_list_cpus_arch = nullptr;
543 bool targets_show_subfeatures = false;543 bool targets_show_dependencies = false;
544544
545 ZigList<const char *> llvm_argv = {0};545 ZigList<const char *> llvm_argv = {0};
546 llvm_argv.append("zig (LLVM option parsing)");546 llvm_argv.append("zig (LLVM option parsing)");
...@@ -792,8 +792,8 @@ int main(int argc, char **argv) {...@@ -792,8 +792,8 @@ int main(int argc, char **argv) {
792 cur_pkg = cur_pkg->parent;792 cur_pkg = cur_pkg->parent;
793 } else if (strcmp(arg, "-ffunction-sections") == 0) {793 } else if (strcmp(arg, "-ffunction-sections") == 0) {
794 function_sections = true;794 function_sections = true;
795 } else if (strcmp(arg, "--show-subfeatures") == 0) {795 } else if (strcmp(arg, "--show-dependencies") == 0) {
796 targets_show_subfeatures = true;796 targets_show_dependencies = true;
797 } else if (i + 1 >= argc) {797 } else if (i + 1 >= argc) {
798 fprintf(stderr, "Expected another argument after %s\n", arg);798 fprintf(stderr, "Expected another argument after %s\n", arg);
799 return print_error_usage(arg0);799 return print_error_usage(arg0);
...@@ -1448,13 +1448,13 @@ int main(int argc, char **argv) {...@@ -1448,13 +1448,13 @@ int main(int argc, char **argv) {
1448 stage2_list_features_for_arch(1448 stage2_list_features_for_arch(
1449 targets_list_features_arch,1449 targets_list_features_arch,
1450 strlen(targets_list_features_arch),1450 strlen(targets_list_features_arch),
1451 targets_show_subfeatures);1451 targets_show_dependencies);
1452 return 0;1452 return 0;
1453 } else if (targets_list_cpus_arch != nullptr) {1453 } else if (targets_list_cpus_arch != nullptr) {
1454 stage2_list_cpus_for_arch(1454 stage2_list_cpus_for_arch(
1455 targets_list_cpus_arch,1455 targets_list_cpus_arch,
1456 strlen(targets_list_cpus_arch),1456 strlen(targets_list_cpus_arch),
1457 targets_show_subfeatures);1457 targets_show_dependencies);
1458 return 0;1458 return 0;
1459 } else {1459 } else {
1460 return print_target_list(stdout);1460 return print_target_list(stdout);