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
signaturelock-open 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 {
862862 name: []const u8,
863863 description: []const u8,
864864
865 subfeatures: []*const Feature,
865 dependencies: []*const Feature,
866866};
867867
868868pub const Cpu = struct {
869869 name: []const u8,
870870 llvm_name: []const u8,
871871
872 subfeatures: []*const Feature,
872 dependencies: []*const Feature,
873873};
874874
875875pub 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;
44pub const feature_aes = Feature{
55 .name = "aes",
66 .description = "Enable AES support",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 &feature_fpArmv8,
99 },
1010};
......@@ -12,154 +12,154 @@ pub const feature_aes = Feature{
1212pub const feature_am = Feature{
1313 .name = "am",
1414 .description = "Enable v8.4-A Activity Monitors extension",
15 .subfeatures = &[_]*const Feature {
15 .dependencies = &[_]*const Feature {
1616 },
1717};
1818
1919pub const feature_aggressiveFma = Feature{
2020 .name = "aggressive-fma",
2121 .description = "Enable Aggressive FMA for floating-point.",
22 .subfeatures = &[_]*const Feature {
22 .dependencies = &[_]*const Feature {
2323 },
2424};
2525
2626pub const feature_altnzcv = Feature{
2727 .name = "altnzcv",
2828 .description = "Enable alternative NZCV format for floating point comparisons",
29 .subfeatures = &[_]*const Feature {
29 .dependencies = &[_]*const Feature {
3030 },
3131};
3232
3333pub const feature_alternateSextloadCvtF32Pattern = Feature{
3434 .name = "alternate-sextload-cvt-f32-pattern",
3535 .description = "Use alternative pattern for sextload convert to f32",
36 .subfeatures = &[_]*const Feature {
36 .dependencies = &[_]*const Feature {
3737 },
3838};
3939
4040pub const feature_arithBccFusion = Feature{
4141 .name = "arith-bcc-fusion",
4242 .description = "CPU fuses arithmetic+bcc operations",
43 .subfeatures = &[_]*const Feature {
43 .dependencies = &[_]*const Feature {
4444 },
4545};
4646
4747pub const feature_arithCbzFusion = Feature{
4848 .name = "arith-cbz-fusion",
4949 .description = "CPU fuses arithmetic + cbz/cbnz operations",
50 .subfeatures = &[_]*const Feature {
50 .dependencies = &[_]*const Feature {
5151 },
5252};
5353
5454pub const feature_balanceFpOps = Feature{
5555 .name = "balance-fp-ops",
5656 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
57 .subfeatures = &[_]*const Feature {
57 .dependencies = &[_]*const Feature {
5858 },
5959};
6060
6161pub const feature_bti = Feature{
6262 .name = "bti",
6363 .description = "Enable Branch Target Identification",
64 .subfeatures = &[_]*const Feature {
64 .dependencies = &[_]*const Feature {
6565 },
6666};
6767
6868pub const feature_ccidx = Feature{
6969 .name = "ccidx",
7070 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
71 .subfeatures = &[_]*const Feature {
71 .dependencies = &[_]*const Feature {
7272 },
7373};
7474
7575pub const feature_ccpp = Feature{
7676 .name = "ccpp",
7777 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
78 .subfeatures = &[_]*const Feature {
78 .dependencies = &[_]*const Feature {
7979 },
8080};
8181
8282pub const feature_crc = Feature{
8383 .name = "crc",
8484 .description = "Enable ARMv8 CRC-32 checksum instructions",
85 .subfeatures = &[_]*const Feature {
85 .dependencies = &[_]*const Feature {
8686 },
8787};
8888
8989pub const feature_ccdp = Feature{
9090 .name = "ccdp",
9191 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
92 .subfeatures = &[_]*const Feature {
92 .dependencies = &[_]*const Feature {
9393 },
9494};
9595
9696pub const feature_callSavedX8 = Feature{
9797 .name = "call-saved-x8",
9898 .description = "Make X8 callee saved.",
99 .subfeatures = &[_]*const Feature {
99 .dependencies = &[_]*const Feature {
100100 },
101101};
102102
103103pub const feature_callSavedX9 = Feature{
104104 .name = "call-saved-x9",
105105 .description = "Make X9 callee saved.",
106 .subfeatures = &[_]*const Feature {
106 .dependencies = &[_]*const Feature {
107107 },
108108};
109109
110110pub const feature_callSavedX10 = Feature{
111111 .name = "call-saved-x10",
112112 .description = "Make X10 callee saved.",
113 .subfeatures = &[_]*const Feature {
113 .dependencies = &[_]*const Feature {
114114 },
115115};
116116
117117pub const feature_callSavedX11 = Feature{
118118 .name = "call-saved-x11",
119119 .description = "Make X11 callee saved.",
120 .subfeatures = &[_]*const Feature {
120 .dependencies = &[_]*const Feature {
121121 },
122122};
123123
124124pub const feature_callSavedX12 = Feature{
125125 .name = "call-saved-x12",
126126 .description = "Make X12 callee saved.",
127 .subfeatures = &[_]*const Feature {
127 .dependencies = &[_]*const Feature {
128128 },
129129};
130130
131131pub const feature_callSavedX13 = Feature{
132132 .name = "call-saved-x13",
133133 .description = "Make X13 callee saved.",
134 .subfeatures = &[_]*const Feature {
134 .dependencies = &[_]*const Feature {
135135 },
136136};
137137
138138pub const feature_callSavedX14 = Feature{
139139 .name = "call-saved-x14",
140140 .description = "Make X14 callee saved.",
141 .subfeatures = &[_]*const Feature {
141 .dependencies = &[_]*const Feature {
142142 },
143143};
144144
145145pub const feature_callSavedX15 = Feature{
146146 .name = "call-saved-x15",
147147 .description = "Make X15 callee saved.",
148 .subfeatures = &[_]*const Feature {
148 .dependencies = &[_]*const Feature {
149149 },
150150};
151151
152152pub const feature_callSavedX18 = Feature{
153153 .name = "call-saved-x18",
154154 .description = "Make X18 callee saved.",
155 .subfeatures = &[_]*const Feature {
155 .dependencies = &[_]*const Feature {
156156 },
157157};
158158
159159pub const feature_complxnum = Feature{
160160 .name = "complxnum",
161161 .description = "Enable v8.3-A Floating-point complex number support",
162 .subfeatures = &[_]*const Feature {
162 .dependencies = &[_]*const Feature {
163163 &feature_fpArmv8,
164164 },
165165};
......@@ -167,7 +167,7 @@ pub const feature_complxnum = Feature{
167167pub const feature_crypto = Feature{
168168 .name = "crypto",
169169 .description = "Enable cryptographic instructions",
170 .subfeatures = &[_]*const Feature {
170 .dependencies = &[_]*const Feature {
171171 &feature_fpArmv8,
172172 },
173173};
......@@ -175,35 +175,35 @@ pub const feature_crypto = Feature{
175175pub const feature_customCheapAsMove = Feature{
176176 .name = "custom-cheap-as-move",
177177 .description = "Use custom handling of cheap instructions",
178 .subfeatures = &[_]*const Feature {
178 .dependencies = &[_]*const Feature {
179179 },
180180};
181181
182182pub const feature_dit = Feature{
183183 .name = "dit",
184184 .description = "Enable v8.4-A Data Independent Timing instructions",
185 .subfeatures = &[_]*const Feature {
185 .dependencies = &[_]*const Feature {
186186 },
187187};
188188
189189pub const feature_disableLatencySchedHeuristic = Feature{
190190 .name = "disable-latency-sched-heuristic",
191191 .description = "Disable latency scheduling heuristic",
192 .subfeatures = &[_]*const Feature {
192 .dependencies = &[_]*const Feature {
193193 },
194194};
195195
196196pub const feature_dotprod = Feature{
197197 .name = "dotprod",
198198 .description = "Enable dot product support",
199 .subfeatures = &[_]*const Feature {
199 .dependencies = &[_]*const Feature {
200200 },
201201};
202202
203203pub const feature_ete = Feature{
204204 .name = "ete",
205205 .description = "Enable Embedded Trace Extension",
206 .subfeatures = &[_]*const Feature {
206 .dependencies = &[_]*const Feature {
207207 &feature_trbe,
208208 },
209209};
......@@ -211,7 +211,7 @@ pub const feature_ete = Feature{
211211pub const feature_exynosCheapAsMove = Feature{
212212 .name = "exynos-cheap-as-move",
213213 .description = "Use Exynos specific handling of cheap instructions",
214 .subfeatures = &[_]*const Feature {
214 .dependencies = &[_]*const Feature {
215215 &feature_customCheapAsMove,
216216 },
217217};
......@@ -219,14 +219,14 @@ pub const feature_exynosCheapAsMove = Feature{
219219pub const feature_fmi = Feature{
220220 .name = "fmi",
221221 .description = "Enable v8.4-A Flag Manipulation Instructions",
222 .subfeatures = &[_]*const Feature {
222 .dependencies = &[_]*const Feature {
223223 },
224224};
225225
226226pub const feature_fp16fml = Feature{
227227 .name = "fp16fml",
228228 .description = "Enable FP16 FML instructions",
229 .subfeatures = &[_]*const Feature {
229 .dependencies = &[_]*const Feature {
230230 &feature_fpArmv8,
231231 },
232232};
......@@ -234,28 +234,28 @@ pub const feature_fp16fml = Feature{
234234pub const feature_fpArmv8 = Feature{
235235 .name = "fp-armv8",
236236 .description = "Enable ARMv8 FP",
237 .subfeatures = &[_]*const Feature {
237 .dependencies = &[_]*const Feature {
238238 },
239239};
240240
241241pub const feature_fptoint = Feature{
242242 .name = "fptoint",
243243 .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 {
245245 },
246246};
247247
248248pub const feature_force32bitJumpTables = Feature{
249249 .name = "force-32bit-jump-tables",
250250 .description = "Force jump table entries to be 32-bits wide except at MinSize",
251 .subfeatures = &[_]*const Feature {
251 .dependencies = &[_]*const Feature {
252252 },
253253};
254254
255255pub const feature_fullfp16 = Feature{
256256 .name = "fullfp16",
257257 .description = "Full FP16",
258 .subfeatures = &[_]*const Feature {
258 .dependencies = &[_]*const Feature {
259259 &feature_fpArmv8,
260260 },
261261};
......@@ -263,49 +263,49 @@ pub const feature_fullfp16 = Feature{
263263pub const feature_fuseAes = Feature{
264264 .name = "fuse-aes",
265265 .description = "CPU fuses AES crypto operations",
266 .subfeatures = &[_]*const Feature {
266 .dependencies = &[_]*const Feature {
267267 },
268268};
269269
270270pub const feature_fuseAddress = Feature{
271271 .name = "fuse-address",
272272 .description = "CPU fuses address generation and memory operations",
273 .subfeatures = &[_]*const Feature {
273 .dependencies = &[_]*const Feature {
274274 },
275275};
276276
277277pub const feature_fuseArithLogic = Feature{
278278 .name = "fuse-arith-logic",
279279 .description = "CPU fuses arithmetic and logic operations",
280 .subfeatures = &[_]*const Feature {
280 .dependencies = &[_]*const Feature {
281281 },
282282};
283283
284284pub const feature_fuseCsel = Feature{
285285 .name = "fuse-csel",
286286 .description = "CPU fuses conditional select operations",
287 .subfeatures = &[_]*const Feature {
287 .dependencies = &[_]*const Feature {
288288 },
289289};
290290
291291pub const feature_fuseCryptoEor = Feature{
292292 .name = "fuse-crypto-eor",
293293 .description = "CPU fuses AES/PMULL and EOR operations",
294 .subfeatures = &[_]*const Feature {
294 .dependencies = &[_]*const Feature {
295295 },
296296};
297297
298298pub const feature_fuseLiterals = Feature{
299299 .name = "fuse-literals",
300300 .description = "CPU fuses literal generation operations",
301 .subfeatures = &[_]*const Feature {
301 .dependencies = &[_]*const Feature {
302302 },
303303};
304304
305305pub const feature_jsconv = Feature{
306306 .name = "jsconv",
307307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
308 .subfeatures = &[_]*const Feature {
308 .dependencies = &[_]*const Feature {
309309 &feature_fpArmv8,
310310 },
311311};
......@@ -313,42 +313,42 @@ pub const feature_jsconv = Feature{
313313pub const feature_lor = Feature{
314314 .name = "lor",
315315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
316 .subfeatures = &[_]*const Feature {
316 .dependencies = &[_]*const Feature {
317317 },
318318};
319319
320320pub const feature_lse = Feature{
321321 .name = "lse",
322322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
323 .subfeatures = &[_]*const Feature {
323 .dependencies = &[_]*const Feature {
324324 },
325325};
326326
327327pub const feature_lslFast = Feature{
328328 .name = "lsl-fast",
329329 .description = "CPU has a fastpath logical shift of up to 3 places",
330 .subfeatures = &[_]*const Feature {
330 .dependencies = &[_]*const Feature {
331331 },
332332};
333333
334334pub const feature_mpam = Feature{
335335 .name = "mpam",
336336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
337 .subfeatures = &[_]*const Feature {
337 .dependencies = &[_]*const Feature {
338338 },
339339};
340340
341341pub const feature_mte = Feature{
342342 .name = "mte",
343343 .description = "Enable Memory Tagging Extension",
344 .subfeatures = &[_]*const Feature {
344 .dependencies = &[_]*const Feature {
345345 },
346346};
347347
348348pub const feature_neon = Feature{
349349 .name = "neon",
350350 .description = "Enable Advanced SIMD instructions",
351 .subfeatures = &[_]*const Feature {
351 .dependencies = &[_]*const Feature {
352352 &feature_fpArmv8,
353353 },
354354};
......@@ -356,35 +356,35 @@ pub const feature_neon = Feature{
356356pub const feature_nv = Feature{
357357 .name = "nv",
358358 .description = "Enable v8.4-A Nested Virtualization Enchancement",
359 .subfeatures = &[_]*const Feature {
359 .dependencies = &[_]*const Feature {
360360 },
361361};
362362
363363pub const feature_noNegImmediates = Feature{
364364 .name = "no-neg-immediates",
365365 .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 {
367367 },
368368};
369369
370370pub const feature_pa = Feature{
371371 .name = "pa",
372372 .description = "Enable v8.3-A Pointer Authentication enchancement",
373 .subfeatures = &[_]*const Feature {
373 .dependencies = &[_]*const Feature {
374374 },
375375};
376376
377377pub const feature_pan = Feature{
378378 .name = "pan",
379379 .description = "Enables ARM v8.1 Privileged Access-Never extension",
380 .subfeatures = &[_]*const Feature {
380 .dependencies = &[_]*const Feature {
381381 },
382382};
383383
384384pub const feature_panRwv = Feature{
385385 .name = "pan-rwv",
386386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
387 .subfeatures = &[_]*const Feature {
387 .dependencies = &[_]*const Feature {
388388 &feature_pan,
389389 },
390390};
......@@ -392,49 +392,49 @@ pub const feature_panRwv = Feature{
392392pub const feature_perfmon = Feature{
393393 .name = "perfmon",
394394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
395 .subfeatures = &[_]*const Feature {
395 .dependencies = &[_]*const Feature {
396396 },
397397};
398398
399399pub const feature_usePostraScheduler = Feature{
400400 .name = "use-postra-scheduler",
401401 .description = "Schedule again after register allocation",
402 .subfeatures = &[_]*const Feature {
402 .dependencies = &[_]*const Feature {
403403 },
404404};
405405
406406pub const feature_predres = Feature{
407407 .name = "predres",
408408 .description = "Enable v8.5a execution and data prediction invalidation instructions",
409 .subfeatures = &[_]*const Feature {
409 .dependencies = &[_]*const Feature {
410410 },
411411};
412412
413413pub const feature_predictableSelectExpensive = Feature{
414414 .name = "predictable-select-expensive",
415415 .description = "Prefer likely predicted branches over selects",
416 .subfeatures = &[_]*const Feature {
416 .dependencies = &[_]*const Feature {
417417 },
418418};
419419
420420pub const feature_uaops = Feature{
421421 .name = "uaops",
422422 .description = "Enable v8.2 UAO PState",
423 .subfeatures = &[_]*const Feature {
423 .dependencies = &[_]*const Feature {
424424 },
425425};
426426
427427pub const feature_ras = Feature{
428428 .name = "ras",
429429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
430 .subfeatures = &[_]*const Feature {
430 .dependencies = &[_]*const Feature {
431431 },
432432};
433433
434434pub const feature_rasv8_4 = Feature{
435435 .name = "rasv8_4",
436436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
437 .subfeatures = &[_]*const Feature {
437 .dependencies = &[_]*const Feature {
438438 &feature_ras,
439439 },
440440};
......@@ -442,14 +442,14 @@ pub const feature_rasv8_4 = Feature{
442442pub const feature_rcpc = Feature{
443443 .name = "rcpc",
444444 .description = "Enable support for RCPC extension",
445 .subfeatures = &[_]*const Feature {
445 .dependencies = &[_]*const Feature {
446446 },
447447};
448448
449449pub const feature_rcpcImmo = Feature{
450450 .name = "rcpc-immo",
451451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
452 .subfeatures = &[_]*const Feature {
452 .dependencies = &[_]*const Feature {
453453 &feature_rcpc,
454454 },
455455};
......@@ -457,203 +457,203 @@ pub const feature_rcpcImmo = Feature{
457457pub const feature_rdm = Feature{
458458 .name = "rdm",
459459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
460 .subfeatures = &[_]*const Feature {
460 .dependencies = &[_]*const Feature {
461461 },
462462};
463463
464464pub const feature_rand = Feature{
465465 .name = "rand",
466466 .description = "Enable Random Number generation instructions",
467 .subfeatures = &[_]*const Feature {
467 .dependencies = &[_]*const Feature {
468468 },
469469};
470470
471471pub const feature_reserveX1 = Feature{
472472 .name = "reserve-x1",
473473 .description = "Reserve X1, making it unavailable as a GPR",
474 .subfeatures = &[_]*const Feature {
474 .dependencies = &[_]*const Feature {
475475 },
476476};
477477
478478pub const feature_reserveX2 = Feature{
479479 .name = "reserve-x2",
480480 .description = "Reserve X2, making it unavailable as a GPR",
481 .subfeatures = &[_]*const Feature {
481 .dependencies = &[_]*const Feature {
482482 },
483483};
484484
485485pub const feature_reserveX3 = Feature{
486486 .name = "reserve-x3",
487487 .description = "Reserve X3, making it unavailable as a GPR",
488 .subfeatures = &[_]*const Feature {
488 .dependencies = &[_]*const Feature {
489489 },
490490};
491491
492492pub const feature_reserveX4 = Feature{
493493 .name = "reserve-x4",
494494 .description = "Reserve X4, making it unavailable as a GPR",
495 .subfeatures = &[_]*const Feature {
495 .dependencies = &[_]*const Feature {
496496 },
497497};
498498
499499pub const feature_reserveX5 = Feature{
500500 .name = "reserve-x5",
501501 .description = "Reserve X5, making it unavailable as a GPR",
502 .subfeatures = &[_]*const Feature {
502 .dependencies = &[_]*const Feature {
503503 },
504504};
505505
506506pub const feature_reserveX6 = Feature{
507507 .name = "reserve-x6",
508508 .description = "Reserve X6, making it unavailable as a GPR",
509 .subfeatures = &[_]*const Feature {
509 .dependencies = &[_]*const Feature {
510510 },
511511};
512512
513513pub const feature_reserveX7 = Feature{
514514 .name = "reserve-x7",
515515 .description = "Reserve X7, making it unavailable as a GPR",
516 .subfeatures = &[_]*const Feature {
516 .dependencies = &[_]*const Feature {
517517 },
518518};
519519
520520pub const feature_reserveX9 = Feature{
521521 .name = "reserve-x9",
522522 .description = "Reserve X9, making it unavailable as a GPR",
523 .subfeatures = &[_]*const Feature {
523 .dependencies = &[_]*const Feature {
524524 },
525525};
526526
527527pub const feature_reserveX10 = Feature{
528528 .name = "reserve-x10",
529529 .description = "Reserve X10, making it unavailable as a GPR",
530 .subfeatures = &[_]*const Feature {
530 .dependencies = &[_]*const Feature {
531531 },
532532};
533533
534534pub const feature_reserveX11 = Feature{
535535 .name = "reserve-x11",
536536 .description = "Reserve X11, making it unavailable as a GPR",
537 .subfeatures = &[_]*const Feature {
537 .dependencies = &[_]*const Feature {
538538 },
539539};
540540
541541pub const feature_reserveX12 = Feature{
542542 .name = "reserve-x12",
543543 .description = "Reserve X12, making it unavailable as a GPR",
544 .subfeatures = &[_]*const Feature {
544 .dependencies = &[_]*const Feature {
545545 },
546546};
547547
548548pub const feature_reserveX13 = Feature{
549549 .name = "reserve-x13",
550550 .description = "Reserve X13, making it unavailable as a GPR",
551 .subfeatures = &[_]*const Feature {
551 .dependencies = &[_]*const Feature {
552552 },
553553};
554554
555555pub const feature_reserveX14 = Feature{
556556 .name = "reserve-x14",
557557 .description = "Reserve X14, making it unavailable as a GPR",
558 .subfeatures = &[_]*const Feature {
558 .dependencies = &[_]*const Feature {
559559 },
560560};
561561
562562pub const feature_reserveX15 = Feature{
563563 .name = "reserve-x15",
564564 .description = "Reserve X15, making it unavailable as a GPR",
565 .subfeatures = &[_]*const Feature {
565 .dependencies = &[_]*const Feature {
566566 },
567567};
568568
569569pub const feature_reserveX18 = Feature{
570570 .name = "reserve-x18",
571571 .description = "Reserve X18, making it unavailable as a GPR",
572 .subfeatures = &[_]*const Feature {
572 .dependencies = &[_]*const Feature {
573573 },
574574};
575575
576576pub const feature_reserveX20 = Feature{
577577 .name = "reserve-x20",
578578 .description = "Reserve X20, making it unavailable as a GPR",
579 .subfeatures = &[_]*const Feature {
579 .dependencies = &[_]*const Feature {
580580 },
581581};
582582
583583pub const feature_reserveX21 = Feature{
584584 .name = "reserve-x21",
585585 .description = "Reserve X21, making it unavailable as a GPR",
586 .subfeatures = &[_]*const Feature {
586 .dependencies = &[_]*const Feature {
587587 },
588588};
589589
590590pub const feature_reserveX22 = Feature{
591591 .name = "reserve-x22",
592592 .description = "Reserve X22, making it unavailable as a GPR",
593 .subfeatures = &[_]*const Feature {
593 .dependencies = &[_]*const Feature {
594594 },
595595};
596596
597597pub const feature_reserveX23 = Feature{
598598 .name = "reserve-x23",
599599 .description = "Reserve X23, making it unavailable as a GPR",
600 .subfeatures = &[_]*const Feature {
600 .dependencies = &[_]*const Feature {
601601 },
602602};
603603
604604pub const feature_reserveX24 = Feature{
605605 .name = "reserve-x24",
606606 .description = "Reserve X24, making it unavailable as a GPR",
607 .subfeatures = &[_]*const Feature {
607 .dependencies = &[_]*const Feature {
608608 },
609609};
610610
611611pub const feature_reserveX25 = Feature{
612612 .name = "reserve-x25",
613613 .description = "Reserve X25, making it unavailable as a GPR",
614 .subfeatures = &[_]*const Feature {
614 .dependencies = &[_]*const Feature {
615615 },
616616};
617617
618618pub const feature_reserveX26 = Feature{
619619 .name = "reserve-x26",
620620 .description = "Reserve X26, making it unavailable as a GPR",
621 .subfeatures = &[_]*const Feature {
621 .dependencies = &[_]*const Feature {
622622 },
623623};
624624
625625pub const feature_reserveX27 = Feature{
626626 .name = "reserve-x27",
627627 .description = "Reserve X27, making it unavailable as a GPR",
628 .subfeatures = &[_]*const Feature {
628 .dependencies = &[_]*const Feature {
629629 },
630630};
631631
632632pub const feature_reserveX28 = Feature{
633633 .name = "reserve-x28",
634634 .description = "Reserve X28, making it unavailable as a GPR",
635 .subfeatures = &[_]*const Feature {
635 .dependencies = &[_]*const Feature {
636636 },
637637};
638638
639639pub const feature_sb = Feature{
640640 .name = "sb",
641641 .description = "Enable v8.5 Speculation Barrier",
642 .subfeatures = &[_]*const Feature {
642 .dependencies = &[_]*const Feature {
643643 },
644644};
645645
646646pub const feature_sel2 = Feature{
647647 .name = "sel2",
648648 .description = "Enable v8.4-A Secure Exception Level 2 extension",
649 .subfeatures = &[_]*const Feature {
649 .dependencies = &[_]*const Feature {
650650 },
651651};
652652
653653pub const feature_sha2 = Feature{
654654 .name = "sha2",
655655 .description = "Enable SHA1 and SHA256 support",
656 .subfeatures = &[_]*const Feature {
656 .dependencies = &[_]*const Feature {
657657 &feature_fpArmv8,
658658 },
659659};
......@@ -661,7 +661,7 @@ pub const feature_sha2 = Feature{
661661pub const feature_sha3 = Feature{
662662 .name = "sha3",
663663 .description = "Enable SHA512 and SHA3 support",
664 .subfeatures = &[_]*const Feature {
664 .dependencies = &[_]*const Feature {
665665 &feature_fpArmv8,
666666 },
667667};
......@@ -669,7 +669,7 @@ pub const feature_sha3 = Feature{
669669pub const feature_sm4 = Feature{
670670 .name = "sm4",
671671 .description = "Enable SM3 and SM4 support",
672 .subfeatures = &[_]*const Feature {
672 .dependencies = &[_]*const Feature {
673673 &feature_fpArmv8,
674674 },
675675};
......@@ -677,28 +677,28 @@ pub const feature_sm4 = Feature{
677677pub const feature_spe = Feature{
678678 .name = "spe",
679679 .description = "Enable Statistical Profiling extension",
680 .subfeatures = &[_]*const Feature {
680 .dependencies = &[_]*const Feature {
681681 },
682682};
683683
684684pub const feature_ssbs = Feature{
685685 .name = "ssbs",
686686 .description = "Enable Speculative Store Bypass Safe bit",
687 .subfeatures = &[_]*const Feature {
687 .dependencies = &[_]*const Feature {
688688 },
689689};
690690
691691pub const feature_sve = Feature{
692692 .name = "sve",
693693 .description = "Enable Scalable Vector Extension (SVE) instructions",
694 .subfeatures = &[_]*const Feature {
694 .dependencies = &[_]*const Feature {
695695 },
696696};
697697
698698pub const feature_sve2 = Feature{
699699 .name = "sve2",
700700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
701 .subfeatures = &[_]*const Feature {
701 .dependencies = &[_]*const Feature {
702702 &feature_sve,
703703 },
704704};
......@@ -706,7 +706,7 @@ pub const feature_sve2 = Feature{
706706pub const feature_sve2Aes = Feature{
707707 .name = "sve2-aes",
708708 .description = "Enable AES SVE2 instructions",
709 .subfeatures = &[_]*const Feature {
709 .dependencies = &[_]*const Feature {
710710 &feature_fpArmv8,
711711 &feature_sve,
712712 },
......@@ -715,7 +715,7 @@ pub const feature_sve2Aes = Feature{
715715pub const feature_sve2Bitperm = Feature{
716716 .name = "sve2-bitperm",
717717 .description = "Enable bit permutation SVE2 instructions",
718 .subfeatures = &[_]*const Feature {
718 .dependencies = &[_]*const Feature {
719719 &feature_sve,
720720 },
721721};
......@@ -723,7 +723,7 @@ pub const feature_sve2Bitperm = Feature{
723723pub const feature_sve2Sha3 = Feature{
724724 .name = "sve2-sha3",
725725 .description = "Enable SHA3 SVE2 instructions",
726 .subfeatures = &[_]*const Feature {
726 .dependencies = &[_]*const Feature {
727727 &feature_fpArmv8,
728728 &feature_sve,
729729 },
......@@ -732,7 +732,7 @@ pub const feature_sve2Sha3 = Feature{
732732pub const feature_sve2Sm4 = Feature{
733733 .name = "sve2-sm4",
734734 .description = "Enable SM4 SVE2 instructions",
735 .subfeatures = &[_]*const Feature {
735 .dependencies = &[_]*const Feature {
736736 &feature_fpArmv8,
737737 &feature_sve,
738738 },
......@@ -741,126 +741,126 @@ pub const feature_sve2Sm4 = Feature{
741741pub const feature_slowMisaligned128store = Feature{
742742 .name = "slow-misaligned-128store",
743743 .description = "Misaligned 128 bit stores are slow",
744 .subfeatures = &[_]*const Feature {
744 .dependencies = &[_]*const Feature {
745745 },
746746};
747747
748748pub const feature_slowPaired128 = Feature{
749749 .name = "slow-paired-128",
750750 .description = "Paired 128 bit loads and stores are slow",
751 .subfeatures = &[_]*const Feature {
751 .dependencies = &[_]*const Feature {
752752 },
753753};
754754
755755pub const feature_slowStrqroStore = Feature{
756756 .name = "slow-strqro-store",
757757 .description = "STR of Q register with register offset is slow",
758 .subfeatures = &[_]*const Feature {
758 .dependencies = &[_]*const Feature {
759759 },
760760};
761761
762762pub const feature_specrestrict = Feature{
763763 .name = "specrestrict",
764764 .description = "Enable architectural speculation restriction",
765 .subfeatures = &[_]*const Feature {
765 .dependencies = &[_]*const Feature {
766766 },
767767};
768768
769769pub const feature_strictAlign = Feature{
770770 .name = "strict-align",
771771 .description = "Disallow all unaligned memory access",
772 .subfeatures = &[_]*const Feature {
772 .dependencies = &[_]*const Feature {
773773 },
774774};
775775
776776pub const feature_tlbRmi = Feature{
777777 .name = "tlb-rmi",
778778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
779 .subfeatures = &[_]*const Feature {
779 .dependencies = &[_]*const Feature {
780780 },
781781};
782782
783783pub const feature_tme = Feature{
784784 .name = "tme",
785785 .description = "Enable Transactional Memory Extension",
786 .subfeatures = &[_]*const Feature {
786 .dependencies = &[_]*const Feature {
787787 },
788788};
789789
790790pub const feature_tracev84 = Feature{
791791 .name = "tracev8.4",
792792 .description = "Enable v8.4-A Trace extension",
793 .subfeatures = &[_]*const Feature {
793 .dependencies = &[_]*const Feature {
794794 },
795795};
796796
797797pub const feature_trbe = Feature{
798798 .name = "trbe",
799799 .description = "Enable Trace Buffer Extension",
800 .subfeatures = &[_]*const Feature {
800 .dependencies = &[_]*const Feature {
801801 },
802802};
803803
804804pub const feature_taggedGlobals = Feature{
805805 .name = "tagged-globals",
806806 .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 {
808808 },
809809};
810810
811811pub const feature_useAa = Feature{
812812 .name = "use-aa",
813813 .description = "Use alias analysis during codegen",
814 .subfeatures = &[_]*const Feature {
814 .dependencies = &[_]*const Feature {
815815 },
816816};
817817
818818pub const feature_tpidrEl1 = Feature{
819819 .name = "tpidr-el1",
820820 .description = "Permit use of TPIDR_EL1 for the TLS base",
821 .subfeatures = &[_]*const Feature {
821 .dependencies = &[_]*const Feature {
822822 },
823823};
824824
825825pub const feature_tpidrEl2 = Feature{
826826 .name = "tpidr-el2",
827827 .description = "Permit use of TPIDR_EL2 for the TLS base",
828 .subfeatures = &[_]*const Feature {
828 .dependencies = &[_]*const Feature {
829829 },
830830};
831831
832832pub const feature_tpidrEl3 = Feature{
833833 .name = "tpidr-el3",
834834 .description = "Permit use of TPIDR_EL3 for the TLS base",
835 .subfeatures = &[_]*const Feature {
835 .dependencies = &[_]*const Feature {
836836 },
837837};
838838
839839pub const feature_useReciprocalSquareRoot = Feature{
840840 .name = "use-reciprocal-square-root",
841841 .description = "Use the reciprocal square root approximation",
842 .subfeatures = &[_]*const Feature {
842 .dependencies = &[_]*const Feature {
843843 },
844844};
845845
846846pub const feature_vh = Feature{
847847 .name = "vh",
848848 .description = "Enables ARM v8.1 Virtual Host extension",
849 .subfeatures = &[_]*const Feature {
849 .dependencies = &[_]*const Feature {
850850 },
851851};
852852
853853pub const feature_zcm = Feature{
854854 .name = "zcm",
855855 .description = "Has zero-cycle register moves",
856 .subfeatures = &[_]*const Feature {
856 .dependencies = &[_]*const Feature {
857857 },
858858};
859859
860860pub const feature_zcz = Feature{
861861 .name = "zcz",
862862 .description = "Has zero-cycle zeroing instructions",
863 .subfeatures = &[_]*const Feature {
863 .dependencies = &[_]*const Feature {
864864 &feature_zczGp,
865865 &feature_zczFp,
866866 },
......@@ -869,21 +869,21 @@ pub const feature_zcz = Feature{
869869pub const feature_zczFp = Feature{
870870 .name = "zcz-fp",
871871 .description = "Has zero-cycle zeroing instructions for FP registers",
872 .subfeatures = &[_]*const Feature {
872 .dependencies = &[_]*const Feature {
873873 },
874874};
875875
876876pub const feature_zczFpWorkaround = Feature{
877877 .name = "zcz-fp-workaround",
878878 .description = "The zero-cycle floating-point zeroing instruction has a bug",
879 .subfeatures = &[_]*const Feature {
879 .dependencies = &[_]*const Feature {
880880 },
881881};
882882
883883pub const feature_zczGp = Feature{
884884 .name = "zcz-gp",
885885 .description = "Has zero-cycle zeroing instructions for generic registers",
886 .subfeatures = &[_]*const Feature {
886 .dependencies = &[_]*const Feature {
887887 },
888888};
889889
......@@ -1016,80 +1016,80 @@ pub const features = &[_]*const Feature {
10161016pub const cpu_appleLatest = Cpu{
10171017 .name = "apple-latest",
10181018 .llvm_name = "apple-latest",
1019 .subfeatures = &[_]*const Feature {
1020 &feature_arithCbzFusion,
1019 .dependencies = &[_]*const Feature {
10211020 &feature_alternateSextloadCvtF32Pattern,
1022 &feature_zczFpWorkaround,
10231021 &feature_fuseCryptoEor,
1022 &feature_fuseAes,
1023 &feature_zczGp,
1024 &feature_zczFpWorkaround,
10241025 &feature_disableLatencySchedHeuristic,
1025 &feature_zcm,
1026 &feature_zczFp,
10271026 &feature_perfmon,
10281027 &feature_fpArmv8,
1029 &feature_fuseAes,
10301028 &feature_arithBccFusion,
1031 &feature_zczGp,
1029 &feature_arithCbzFusion,
1030 &feature_zczFp,
1031 &feature_zcm,
10321032 },
10331033};
10341034
10351035pub const cpu_cortexA35 = Cpu{
10361036 .name = "cortex-a35",
10371037 .llvm_name = "cortex-a35",
1038 .subfeatures = &[_]*const Feature {
1038 .dependencies = &[_]*const Feature {
1039 &feature_crc,
10391040 &feature_fpArmv8,
10401041 &feature_perfmon,
1041 &feature_crc,
10421042 },
10431043};
10441044
10451045pub const cpu_cortexA53 = Cpu{
10461046 .name = "cortex-a53",
10471047 .llvm_name = "cortex-a53",
1048 .subfeatures = &[_]*const Feature {
1048 .dependencies = &[_]*const Feature {
1049 &feature_customCheapAsMove,
1050 &feature_fuseAes,
10491051 &feature_usePostraScheduler,
1050 &feature_crc,
10511052 &feature_perfmon,
1052 &feature_fuseAes,
1053 &feature_useAa,
10541053 &feature_fpArmv8,
1054 &feature_crc,
10551055 &feature_balanceFpOps,
1056 &feature_customCheapAsMove,
1056 &feature_useAa,
10571057 },
10581058};
10591059
10601060pub const cpu_cortexA55 = Cpu{
10611061 .name = "cortex-a55",
10621062 .llvm_name = "cortex-a55",
1063 .subfeatures = &[_]*const Feature {
1064 &feature_crc,
1065 &feature_dotprod,
1063 .dependencies = &[_]*const Feature {
1064 &feature_rdm,
10661065 &feature_ccpp,
1067 &feature_uaops,
1068 &feature_rcpc,
1066 &feature_fuseAes,
10691067 &feature_lse,
1070 &feature_lor,
1071 &feature_pan,
1072 &feature_rdm,
10731068 &feature_perfmon,
1069 &feature_fpArmv8,
1070 &feature_lor,
10741071 &feature_ras,
10751072 &feature_vh,
1076 &feature_fpArmv8,
1077 &feature_fuseAes,
1073 &feature_rcpc,
1074 &feature_dotprod,
1075 &feature_uaops,
1076 &feature_crc,
1077 &feature_pan,
10781078 },
10791079};
10801080
10811081pub const cpu_cortexA57 = Cpu{
10821082 .name = "cortex-a57",
10831083 .llvm_name = "cortex-a57",
1084 .subfeatures = &[_]*const Feature {
1084 .dependencies = &[_]*const Feature {
1085 &feature_customCheapAsMove,
1086 &feature_fuseAes,
10851087 &feature_usePostraScheduler,
1086 &feature_crc,
1087 &feature_fuseLiterals,
10881088 &feature_perfmon,
1089 &feature_fuseAes,
10901089 &feature_fpArmv8,
1090 &feature_crc,
10911091 &feature_balanceFpOps,
1092 &feature_customCheapAsMove,
1092 &feature_fuseLiterals,
10931093 &feature_predictableSelectExpensive,
10941094 },
10951095};
......@@ -1097,196 +1097,196 @@ pub const cpu_cortexA57 = Cpu{
10971097pub const cpu_cortexA65 = Cpu{
10981098 .name = "cortex-a65",
10991099 .llvm_name = "cortex-a65",
1100 .subfeatures = &[_]*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,
1100 .dependencies = &[_]*const Feature {
11091101 &feature_rdm,
1102 &feature_ccpp,
1103 &feature_lse,
1104 &feature_fpArmv8,
11101105 &feature_ras,
1106 &feature_lor,
11111107 &feature_vh,
1112 &feature_fpArmv8,
1113 &feature_ccpp,
1108 &feature_rcpc,
1109 &feature_dotprod,
1110 &feature_ssbs,
1111 &feature_uaops,
1112 &feature_crc,
1113 &feature_pan,
11141114 },
11151115};
11161116
11171117pub const cpu_cortexA65ae = Cpu{
11181118 .name = "cortex-a65ae",
11191119 .llvm_name = "cortex-a65ae",
1120 .subfeatures = &[_]*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,
1120 .dependencies = &[_]*const Feature {
11291121 &feature_rdm,
1122 &feature_ccpp,
1123 &feature_lse,
1124 &feature_fpArmv8,
11301125 &feature_ras,
1126 &feature_lor,
11311127 &feature_vh,
1132 &feature_fpArmv8,
1133 &feature_ccpp,
1128 &feature_rcpc,
1129 &feature_dotprod,
1130 &feature_ssbs,
1131 &feature_uaops,
1132 &feature_crc,
1133 &feature_pan,
11341134 },
11351135};
11361136
11371137pub const cpu_cortexA72 = Cpu{
11381138 .name = "cortex-a72",
11391139 .llvm_name = "cortex-a72",
1140 .subfeatures = &[_]*const Feature {
1141 &feature_fpArmv8,
1140 .dependencies = &[_]*const Feature {
1141 &feature_crc,
11421142 &feature_fuseAes,
1143 &feature_fpArmv8,
11431144 &feature_perfmon,
1144 &feature_crc,
11451145 },
11461146};
11471147
11481148pub const cpu_cortexA73 = Cpu{
11491149 .name = "cortex-a73",
11501150 .llvm_name = "cortex-a73",
1151 .subfeatures = &[_]*const Feature {
1152 &feature_fpArmv8,
1151 .dependencies = &[_]*const Feature {
1152 &feature_crc,
11531153 &feature_fuseAes,
1154 &feature_fpArmv8,
11541155 &feature_perfmon,
1155 &feature_crc,
11561156 },
11571157};
11581158
11591159pub const cpu_cortexA75 = Cpu{
11601160 .name = "cortex-a75",
11611161 .llvm_name = "cortex-a75",
1162 .subfeatures = &[_]*const Feature {
1163 &feature_crc,
1164 &feature_dotprod,
1162 .dependencies = &[_]*const Feature {
1163 &feature_rdm,
11651164 &feature_ccpp,
1166 &feature_uaops,
1167 &feature_rcpc,
1165 &feature_fuseAes,
11681166 &feature_lse,
1169 &feature_lor,
1170 &feature_pan,
1171 &feature_rdm,
11721167 &feature_perfmon,
1168 &feature_fpArmv8,
1169 &feature_lor,
11731170 &feature_ras,
11741171 &feature_vh,
1175 &feature_fpArmv8,
1176 &feature_fuseAes,
1172 &feature_rcpc,
1173 &feature_dotprod,
1174 &feature_uaops,
1175 &feature_crc,
1176 &feature_pan,
11771177 },
11781178};
11791179
11801180pub const cpu_cortexA76 = Cpu{
11811181 .name = "cortex-a76",
11821182 .llvm_name = "cortex-a76",
1183 .subfeatures = &[_]*const Feature {
1184 &feature_crc,
1185 &feature_ssbs,
1186 &feature_dotprod,
1187 &feature_uaops,
1188 &feature_rcpc,
1183 .dependencies = &[_]*const Feature {
1184 &feature_rdm,
1185 &feature_ccpp,
11891186 &feature_lse,
1187 &feature_fpArmv8,
11901188 &feature_lor,
1191 &feature_pan,
1192 &feature_rdm,
11931189 &feature_ras,
11941190 &feature_vh,
1195 &feature_fpArmv8,
1196 &feature_ccpp,
1191 &feature_rcpc,
1192 &feature_dotprod,
1193 &feature_ssbs,
1194 &feature_uaops,
1195 &feature_crc,
1196 &feature_pan,
11971197 },
11981198};
11991199
12001200pub const cpu_cortexA76ae = Cpu{
12011201 .name = "cortex-a76ae",
12021202 .llvm_name = "cortex-a76ae",
1203 .subfeatures = &[_]*const Feature {
1204 &feature_crc,
1205 &feature_ssbs,
1206 &feature_dotprod,
1207 &feature_uaops,
1208 &feature_rcpc,
1203 .dependencies = &[_]*const Feature {
1204 &feature_rdm,
1205 &feature_ccpp,
12091206 &feature_lse,
1207 &feature_fpArmv8,
12101208 &feature_lor,
1211 &feature_pan,
1212 &feature_rdm,
12131209 &feature_ras,
12141210 &feature_vh,
1215 &feature_fpArmv8,
1216 &feature_ccpp,
1211 &feature_rcpc,
1212 &feature_dotprod,
1213 &feature_ssbs,
1214 &feature_uaops,
1215 &feature_crc,
1216 &feature_pan,
12171217 },
12181218};
12191219
12201220pub const cpu_cyclone = Cpu{
12211221 .name = "cyclone",
12221222 .llvm_name = "cyclone",
1223 .subfeatures = &[_]*const Feature {
1224 &feature_arithCbzFusion,
1223 .dependencies = &[_]*const Feature {
12251224 &feature_alternateSextloadCvtF32Pattern,
1226 &feature_zczFpWorkaround,
12271225 &feature_fuseCryptoEor,
1226 &feature_fuseAes,
1227 &feature_zczGp,
1228 &feature_zczFpWorkaround,
12281229 &feature_disableLatencySchedHeuristic,
1229 &feature_zcm,
1230 &feature_zczFp,
12311230 &feature_perfmon,
12321231 &feature_fpArmv8,
1233 &feature_fuseAes,
12341232 &feature_arithBccFusion,
1235 &feature_zczGp,
1233 &feature_arithCbzFusion,
1234 &feature_zczFp,
1235 &feature_zcm,
12361236 },
12371237};
12381238
12391239pub const cpu_exynosM1 = Cpu{
12401240 .name = "exynos-m1",
12411241 .llvm_name = "exynos-m1",
1242 .subfeatures = &[_]*const Feature {
1243 &feature_useReciprocalSquareRoot,
1244 &feature_usePostraScheduler,
1245 &feature_crc,
1246 &feature_zczFp,
1247 &feature_slowPaired128,
1242 .dependencies = &[_]*const Feature {
1243 &feature_customCheapAsMove,
1244 &feature_fuseAes,
12481245 &feature_force32bitJumpTables,
1249 &feature_slowMisaligned128store,
1246 &feature_usePostraScheduler,
12501247 &feature_perfmon,
12511248 &feature_fpArmv8,
1252 &feature_fuseAes,
1253 &feature_customCheapAsMove,
1249 &feature_slowMisaligned128store,
1250 &feature_useReciprocalSquareRoot,
1251 &feature_crc,
1252 &feature_slowPaired128,
1253 &feature_zczFp,
12541254 },
12551255};
12561256
12571257pub const cpu_exynosM2 = Cpu{
12581258 .name = "exynos-m2",
12591259 .llvm_name = "exynos-m2",
1260 .subfeatures = &[_]*const Feature {
1261 &feature_usePostraScheduler,
1262 &feature_crc,
1263 &feature_zczFp,
1264 &feature_slowPaired128,
1260 .dependencies = &[_]*const Feature {
1261 &feature_customCheapAsMove,
1262 &feature_fuseAes,
12651263 &feature_force32bitJumpTables,
1266 &feature_slowMisaligned128store,
1264 &feature_usePostraScheduler,
12671265 &feature_perfmon,
12681266 &feature_fpArmv8,
1269 &feature_fuseAes,
1270 &feature_customCheapAsMove,
1267 &feature_slowMisaligned128store,
1268 &feature_crc,
1269 &feature_slowPaired128,
1270 &feature_zczFp,
12711271 },
12721272};
12731273
12741274pub const cpu_exynosM3 = Cpu{
12751275 .name = "exynos-m3",
12761276 .llvm_name = "exynos-m3",
1277 .subfeatures = &[_]*const Feature {
1278 &feature_fuseAddress,
1279 &feature_usePostraScheduler,
1280 &feature_crc,
1281 &feature_zczFp,
1282 &feature_fuseLiterals,
1283 &feature_lslFast,
1284 &feature_fuseCsel,
1277 .dependencies = &[_]*const Feature {
1278 &feature_customCheapAsMove,
1279 &feature_fuseAes,
12851280 &feature_force32bitJumpTables,
1281 &feature_usePostraScheduler,
12861282 &feature_perfmon,
12871283 &feature_fpArmv8,
1288 &feature_fuseAes,
1289 &feature_customCheapAsMove,
1284 &feature_fuseAddress,
1285 &feature_fuseCsel,
1286 &feature_lslFast,
1287 &feature_zczFp,
1288 &feature_crc,
1289 &feature_fuseLiterals,
12901290 &feature_predictableSelectExpensive,
12911291 },
12921292};
......@@ -1294,81 +1294,81 @@ pub const cpu_exynosM3 = Cpu{
12941294pub const cpu_exynosM4 = Cpu{
12951295 .name = "exynos-m4",
12961296 .llvm_name = "exynos-m4",
1297 .subfeatures = &[_]*const Feature {
1298 &feature_fuseLiterals,
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,
1297 .dependencies = &[_]*const Feature {
1298 &feature_customCheapAsMove,
13081299 &feature_lse,
1309 &feature_pan,
1310 &feature_ras,
1311 &feature_fuseAes,
1300 &feature_perfmon,
13121301 &feature_fuseAddress,
1313 &feature_rdm,
1302 &feature_dotprod,
13141303 &feature_arithCbzFusion,
1315 &feature_crc,
13161304 &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,
13171313 &feature_lslFast,
1318 &feature_lor,
1319 &feature_perfmon,
1314 &feature_crc,
1315 &feature_fuseLiterals,
1316 &feature_pan,
13201317 &feature_fpArmv8,
1321 &feature_ccpp,
1322 &feature_customCheapAsMove,
1318 &feature_lor,
1319 &feature_ras,
1320 &feature_vh,
1321 &feature_arithBccFusion,
1322 &feature_uaops,
13231323 },
13241324};
13251325
13261326pub const cpu_exynosM5 = Cpu{
13271327 .name = "exynos-m5",
13281328 .llvm_name = "exynos-m5",
1329 .subfeatures = &[_]*const Feature {
1330 &feature_fuseLiterals,
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,
1329 .dependencies = &[_]*const Feature {
1330 &feature_customCheapAsMove,
13401331 &feature_lse,
1341 &feature_pan,
1342 &feature_ras,
1343 &feature_fuseAes,
1332 &feature_perfmon,
13441333 &feature_fuseAddress,
1345 &feature_rdm,
1334 &feature_dotprod,
13461335 &feature_arithCbzFusion,
1347 &feature_crc,
13481336 &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,
13491345 &feature_lslFast,
1350 &feature_lor,
1351 &feature_perfmon,
1346 &feature_crc,
1347 &feature_fuseLiterals,
1348 &feature_pan,
13521349 &feature_fpArmv8,
1353 &feature_ccpp,
1354 &feature_customCheapAsMove,
1350 &feature_lor,
1351 &feature_ras,
1352 &feature_vh,
1353 &feature_arithBccFusion,
1354 &feature_uaops,
13551355 },
13561356};
13571357
13581358pub const cpu_falkor = Cpu{
13591359 .name = "falkor",
13601360 .llvm_name = "falkor",
1361 .subfeatures = &[_]*const Feature {
1362 &feature_usePostraScheduler,
1363 &feature_crc,
1364 &feature_zczFp,
1365 &feature_lslFast,
1366 &feature_slowStrqroStore,
1361 .dependencies = &[_]*const Feature {
1362 &feature_customCheapAsMove,
13671363 &feature_rdm,
1364 &feature_zczGp,
1365 &feature_usePostraScheduler,
13681366 &feature_perfmon,
13691367 &feature_fpArmv8,
1370 &feature_zczGp,
1371 &feature_customCheapAsMove,
1368 &feature_lslFast,
1369 &feature_zczFp,
1370 &feature_crc,
1371 &feature_slowStrqroStore,
13721372 &feature_predictableSelectExpensive,
13731373 },
13741374};
......@@ -1376,7 +1376,7 @@ pub const cpu_falkor = Cpu{
13761376pub const cpu_generic = Cpu{
13771377 .name = "generic",
13781378 .llvm_name = "generic",
1379 .subfeatures = &[_]*const Feature {
1379 .dependencies = &[_]*const Feature {
13801380 &feature_trbe,
13811381 &feature_ete,
13821382 &feature_fpArmv8,
......@@ -1390,15 +1390,15 @@ pub const cpu_generic = Cpu{
13901390pub const cpu_kryo = Cpu{
13911391 .name = "kryo",
13921392 .llvm_name = "kryo",
1393 .subfeatures = &[_]*const Feature {
1393 .dependencies = &[_]*const Feature {
1394 &feature_customCheapAsMove,
1395 &feature_zczGp,
13941396 &feature_usePostraScheduler,
1395 &feature_crc,
1396 &feature_zczFp,
1397 &feature_lslFast,
13981397 &feature_perfmon,
13991398 &feature_fpArmv8,
1400 &feature_zczGp,
1401 &feature_customCheapAsMove,
1399 &feature_lslFast,
1400 &feature_zczFp,
1401 &feature_crc,
14021402 &feature_predictableSelectExpensive,
14031403 },
14041404};
......@@ -1406,89 +1406,89 @@ pub const cpu_kryo = Cpu{
14061406pub const cpu_neoverseE1 = Cpu{
14071407 .name = "neoverse-e1",
14081408 .llvm_name = "neoverse-e1",
1409 .subfeatures = &[_]*const Feature {
1410 &feature_crc,
1411 &feature_ssbs,
1412 &feature_dotprod,
1413 &feature_uaops,
1414 &feature_rcpc,
1409 .dependencies = &[_]*const Feature {
1410 &feature_rdm,
1411 &feature_ccpp,
14151412 &feature_lse,
1413 &feature_fpArmv8,
14161414 &feature_lor,
1417 &feature_pan,
1418 &feature_rdm,
14191415 &feature_ras,
14201416 &feature_vh,
1421 &feature_fpArmv8,
1422 &feature_ccpp,
1417 &feature_rcpc,
1418 &feature_dotprod,
1419 &feature_ssbs,
1420 &feature_uaops,
1421 &feature_crc,
1422 &feature_pan,
14231423 },
14241424};
14251425
14261426pub const cpu_neoverseN1 = Cpu{
14271427 .name = "neoverse-n1",
14281428 .llvm_name = "neoverse-n1",
1429 .subfeatures = &[_]*const Feature {
1430 &feature_ssbs,
1431 &feature_dotprod,
1432 &feature_crc,
1433 &feature_uaops,
1434 &feature_rcpc,
1429 .dependencies = &[_]*const Feature {
1430 &feature_rdm,
1431 &feature_ccpp,
14351432 &feature_lse,
1436 &feature_spe,
1433 &feature_fpArmv8,
14371434 &feature_lor,
1438 &feature_pan,
1439 &feature_rdm,
14401435 &feature_ras,
14411436 &feature_vh,
1442 &feature_fpArmv8,
1443 &feature_ccpp,
1437 &feature_rcpc,
1438 &feature_dotprod,
1439 &feature_ssbs,
1440 &feature_uaops,
1441 &feature_crc,
1442 &feature_pan,
1443 &feature_spe,
14441444 },
14451445};
14461446
14471447pub const cpu_saphira = Cpu{
14481448 .name = "saphira",
14491449 .llvm_name = "saphira",
1450 .subfeatures = &[_]*const Feature {
1451 &feature_uaops,
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,
1450 .dependencies = &[_]*const Feature {
1451 &feature_customCheapAsMove,
14611452 &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,
14721453 &feature_fmi,
1473 &feature_spe,
1474 &feature_lor,
14751454 &feature_perfmon,
1476 &feature_fpArmv8,
1455 &feature_sel2,
1456 &feature_dotprod,
1457 &feature_am,
1458 &feature_zczFp,
1459 &feature_mpam,
14771460 &feature_ccpp,
1461 &feature_dit,
14781462 &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,
14801479 &feature_pa,
1480 &feature_predictableSelectExpensive,
14811481 },
14821482};
14831483
14841484pub const cpu_thunderx = Cpu{
14851485 .name = "thunderx",
14861486 .llvm_name = "thunderx",
1487 .subfeatures = &[_]*const Feature {
1487 .dependencies = &[_]*const Feature {
14881488 &feature_usePostraScheduler,
1489 &feature_crc,
14901489 &feature_perfmon,
14911490 &feature_fpArmv8,
1491 &feature_crc,
14921492 &feature_predictableSelectExpensive,
14931493 },
14941494};
......@@ -1496,17 +1496,17 @@ pub const cpu_thunderx = Cpu{
14961496pub const cpu_thunderx2t99 = Cpu{
14971497 .name = "thunderx2t99",
14981498 .llvm_name = "thunderx2t99",
1499 .subfeatures = &[_]*const Feature {
1500 &feature_usePostraScheduler,
1501 &feature_crc,
1499 .dependencies = &[_]*const Feature {
1500 &feature_rdm,
15021501 &feature_lse,
1503 &feature_lor,
1502 &feature_usePostraScheduler,
15041503 &feature_aggressiveFma,
1505 &feature_pan,
1506 &feature_rdm,
1507 &feature_vh,
15081504 &feature_fpArmv8,
1505 &feature_lor,
1506 &feature_vh,
15091507 &feature_arithBccFusion,
1508 &feature_crc,
1509 &feature_pan,
15101510 &feature_predictableSelectExpensive,
15111511 },
15121512};
......@@ -1514,11 +1514,11 @@ pub const cpu_thunderx2t99 = Cpu{
15141514pub const cpu_thunderxt81 = Cpu{
15151515 .name = "thunderxt81",
15161516 .llvm_name = "thunderxt81",
1517 .subfeatures = &[_]*const Feature {
1517 .dependencies = &[_]*const Feature {
15181518 &feature_usePostraScheduler,
1519 &feature_crc,
15201519 &feature_perfmon,
15211520 &feature_fpArmv8,
1521 &feature_crc,
15221522 &feature_predictableSelectExpensive,
15231523 },
15241524};
......@@ -1526,11 +1526,11 @@ pub const cpu_thunderxt81 = Cpu{
15261526pub const cpu_thunderxt83 = Cpu{
15271527 .name = "thunderxt83",
15281528 .llvm_name = "thunderxt83",
1529 .subfeatures = &[_]*const Feature {
1529 .dependencies = &[_]*const Feature {
15301530 &feature_usePostraScheduler,
1531 &feature_crc,
15321531 &feature_perfmon,
15331532 &feature_fpArmv8,
1533 &feature_crc,
15341534 &feature_predictableSelectExpensive,
15351535 },
15361536};
......@@ -1538,11 +1538,11 @@ pub const cpu_thunderxt83 = Cpu{
15381538pub const cpu_thunderxt88 = Cpu{
15391539 .name = "thunderxt88",
15401540 .llvm_name = "thunderxt88",
1541 .subfeatures = &[_]*const Feature {
1541 .dependencies = &[_]*const Feature {
15421542 &feature_usePostraScheduler,
1543 &feature_crc,
15441543 &feature_perfmon,
15451544 &feature_fpArmv8,
1545 &feature_crc,
15461546 &feature_predictableSelectExpensive,
15471547 },
15481548};
......@@ -1550,23 +1550,23 @@ pub const cpu_thunderxt88 = Cpu{
15501550pub const cpu_tsv110 = Cpu{
15511551 .name = "tsv110",
15521552 .llvm_name = "tsv110",
1553 .subfeatures = &[_]*const Feature {
1554 &feature_usePostraScheduler,
1555 &feature_crc,
1556 &feature_dotprod,
1553 .dependencies = &[_]*const Feature {
1554 &feature_customCheapAsMove,
1555 &feature_rdm,
15571556 &feature_ccpp,
1558 &feature_uaops,
1557 &feature_fuseAes,
15591558 &feature_lse,
1560 &feature_lor,
1561 &feature_spe,
1562 &feature_pan,
1563 &feature_rdm,
1559 &feature_usePostraScheduler,
15641560 &feature_perfmon,
1561 &feature_fpArmv8,
1562 &feature_lor,
15651563 &feature_ras,
15661564 &feature_vh,
1567 &feature_fpArmv8,
1568 &feature_fuseAes,
1569 &feature_customCheapAsMove,
1565 &feature_dotprod,
1566 &feature_uaops,
1567 &feature_crc,
1568 &feature_pan,
1569 &feature_spe,
15701570 },
15711571};
15721572
lib/std/target/amdgpu.zig+580-580
......@@ -4,196 +4,196 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_BitInsts16 = Feature{
55 .name = "16-bit-insts",
66 .description = "Has i16/f16 instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_addNoCarryInsts = Feature{
1212 .name = "add-no-carry-insts",
1313 .description = "Have VALU add/sub instructions without carry out",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_apertureRegs = Feature{
1919 .name = "aperture-regs",
2020 .description = "Has Memory Aperture Base and Size Registers",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_atomicFaddInsts = Feature{
2626 .name = "atomic-fadd-insts",
2727 .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 {
2929 },
3030};
3131
3232pub const feature_autoWaitcntBeforeBarrier = Feature{
3333 .name = "auto-waitcnt-before-barrier",
3434 .description = "Hardware automatically inserts waitcnt before barrier",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_ciInsts = Feature{
4040 .name = "ci-insts",
4141 .description = "Additional instructions for CI+",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_codeObjectV3 = Feature{
4747 .name = "code-object-v3",
4848 .description = "Generate code object version 3",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_cumode = Feature{
5454 .name = "cumode",
5555 .description = "Enable CU wavefront execution mode",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_dlInsts = Feature{
6161 .name = "dl-insts",
6262 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_dpp = Feature{
6868 .name = "dpp",
6969 .description = "Support DPP (Data Parallel Primitives) extension",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 },
7272};
7373
7474pub const feature_dpp8 = Feature{
7575 .name = "dpp8",
7676 .description = "Support DPP8 (Data Parallel Primitives) extension",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 },
7979};
8080
8181pub const feature_noSramEccSupport = Feature{
8282 .name = "no-sram-ecc-support",
8383 .description = "Hardware does not support SRAM ECC",
84 .subfeatures = &[_]*const Feature {
84 .dependencies = &[_]*const Feature {
8585 },
8686};
8787
8888pub const feature_noXnackSupport = Feature{
8989 .name = "no-xnack-support",
9090 .description = "Hardware does not support XNACK",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 },
9393};
9494
9595pub const feature_dot1Insts = Feature{
9696 .name = "dot1-insts",
9797 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
98 .subfeatures = &[_]*const Feature {
98 .dependencies = &[_]*const Feature {
9999 },
100100};
101101
102102pub const feature_dot2Insts = Feature{
103103 .name = "dot2-insts",
104104 .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 {
106106 },
107107};
108108
109109pub const feature_dot3Insts = Feature{
110110 .name = "dot3-insts",
111111 .description = "Has v_dot8c_i32_i4 instruction",
112 .subfeatures = &[_]*const Feature {
112 .dependencies = &[_]*const Feature {
113113 },
114114};
115115
116116pub const feature_dot4Insts = Feature{
117117 .name = "dot4-insts",
118118 .description = "Has v_dot2c_i32_i16 instruction",
119 .subfeatures = &[_]*const Feature {
119 .dependencies = &[_]*const Feature {
120120 },
121121};
122122
123123pub const feature_dot5Insts = Feature{
124124 .name = "dot5-insts",
125125 .description = "Has v_dot2c_f32_f16 instruction",
126 .subfeatures = &[_]*const Feature {
126 .dependencies = &[_]*const Feature {
127127 },
128128};
129129
130130pub const feature_dot6Insts = Feature{
131131 .name = "dot6-insts",
132132 .description = "Has v_dot4c_i32_i8 instruction",
133 .subfeatures = &[_]*const Feature {
133 .dependencies = &[_]*const Feature {
134134 },
135135};
136136
137137pub const feature_DumpCode = Feature{
138138 .name = "DumpCode",
139139 .description = "Dump MachineInstrs in the CodeEmitter",
140 .subfeatures = &[_]*const Feature {
140 .dependencies = &[_]*const Feature {
141141 },
142142};
143143
144144pub const feature_dumpcode = Feature{
145145 .name = "dumpcode",
146146 .description = "Dump MachineInstrs in the CodeEmitter",
147 .subfeatures = &[_]*const Feature {
147 .dependencies = &[_]*const Feature {
148148 },
149149};
150150
151151pub const feature_enableDs128 = Feature{
152152 .name = "enable-ds128",
153153 .description = "Use ds_{read|write}_b128",
154 .subfeatures = &[_]*const Feature {
154 .dependencies = &[_]*const Feature {
155155 },
156156};
157157
158158pub const feature_loadStoreOpt = Feature{
159159 .name = "load-store-opt",
160160 .description = "Enable SI load/store optimizer pass",
161 .subfeatures = &[_]*const Feature {
161 .dependencies = &[_]*const Feature {
162162 },
163163};
164164
165165pub const feature_enablePrtStrictNull = Feature{
166166 .name = "enable-prt-strict-null",
167167 .description = "Enable zeroing of result registers for sparse texture fetches",
168 .subfeatures = &[_]*const Feature {
168 .dependencies = &[_]*const Feature {
169169 },
170170};
171171
172172pub const feature_siScheduler = Feature{
173173 .name = "si-scheduler",
174174 .description = "Enable SI Machine Scheduler",
175 .subfeatures = &[_]*const Feature {
175 .dependencies = &[_]*const Feature {
176176 },
177177};
178178
179179pub const feature_unsafeDsOffsetFolding = Feature{
180180 .name = "unsafe-ds-offset-folding",
181181 .description = "Force using DS instruction immediate offsets on SI",
182 .subfeatures = &[_]*const Feature {
182 .dependencies = &[_]*const Feature {
183183 },
184184};
185185
186186pub const feature_fmaf = Feature{
187187 .name = "fmaf",
188188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
189 .subfeatures = &[_]*const Feature {
189 .dependencies = &[_]*const Feature {
190190 },
191191};
192192
193193pub const feature_fp16Denormals = Feature{
194194 .name = "fp16-denormals",
195195 .description = "Enable half precision denormal handling",
196 .subfeatures = &[_]*const Feature {
196 .dependencies = &[_]*const Feature {
197197 &feature_fp64,
198198 },
199199};
......@@ -201,21 +201,21 @@ pub const feature_fp16Denormals = Feature{
201201pub const feature_fp32Denormals = Feature{
202202 .name = "fp32-denormals",
203203 .description = "Enable single precision denormal handling",
204 .subfeatures = &[_]*const Feature {
204 .dependencies = &[_]*const Feature {
205205 },
206206};
207207
208208pub const feature_fp64 = Feature{
209209 .name = "fp64",
210210 .description = "Enable double precision operations",
211 .subfeatures = &[_]*const Feature {
211 .dependencies = &[_]*const Feature {
212212 },
213213};
214214
215215pub const feature_fp64Denormals = Feature{
216216 .name = "fp64-denormals",
217217 .description = "Enable double and half precision denormal handling",
218 .subfeatures = &[_]*const Feature {
218 .dependencies = &[_]*const Feature {
219219 &feature_fp64,
220220 },
221221};
......@@ -223,7 +223,7 @@ pub const feature_fp64Denormals = Feature{
223223pub const feature_fp64Fp16Denormals = Feature{
224224 .name = "fp64-fp16-denormals",
225225 .description = "Enable double and half precision denormal handling",
226 .subfeatures = &[_]*const Feature {
226 .dependencies = &[_]*const Feature {
227227 &feature_fp64,
228228 },
229229};
......@@ -231,497 +231,497 @@ pub const feature_fp64Fp16Denormals = Feature{
231231pub const feature_fpExceptions = Feature{
232232 .name = "fp-exceptions",
233233 .description = "Enable floating point exceptions",
234 .subfeatures = &[_]*const Feature {
234 .dependencies = &[_]*const Feature {
235235 },
236236};
237237
238238pub const feature_fastFmaf = Feature{
239239 .name = "fast-fmaf",
240240 .description = "Assuming f32 fma is at least as fast as mul + add",
241 .subfeatures = &[_]*const Feature {
241 .dependencies = &[_]*const Feature {
242242 },
243243};
244244
245245pub const feature_flatAddressSpace = Feature{
246246 .name = "flat-address-space",
247247 .description = "Support flat address space",
248 .subfeatures = &[_]*const Feature {
248 .dependencies = &[_]*const Feature {
249249 },
250250};
251251
252252pub const feature_flatForGlobal = Feature{
253253 .name = "flat-for-global",
254254 .description = "Force to generate flat instruction for global",
255 .subfeatures = &[_]*const Feature {
255 .dependencies = &[_]*const Feature {
256256 },
257257};
258258
259259pub const feature_flatGlobalInsts = Feature{
260260 .name = "flat-global-insts",
261261 .description = "Have global_* flat memory instructions",
262 .subfeatures = &[_]*const Feature {
262 .dependencies = &[_]*const Feature {
263263 },
264264};
265265
266266pub const feature_flatInstOffsets = Feature{
267267 .name = "flat-inst-offsets",
268268 .description = "Flat instructions have immediate offset addressing mode",
269 .subfeatures = &[_]*const Feature {
269 .dependencies = &[_]*const Feature {
270270 },
271271};
272272
273273pub const feature_flatScratchInsts = Feature{
274274 .name = "flat-scratch-insts",
275275 .description = "Have scratch_* flat memory instructions",
276 .subfeatures = &[_]*const Feature {
276 .dependencies = &[_]*const Feature {
277277 },
278278};
279279
280280pub const feature_flatSegmentOffsetBug = Feature{
281281 .name = "flat-segment-offset-bug",
282282 .description = "GFX10 bug, inst_offset ignored in flat segment",
283 .subfeatures = &[_]*const Feature {
283 .dependencies = &[_]*const Feature {
284284 },
285285};
286286
287287pub const feature_fmaMixInsts = Feature{
288288 .name = "fma-mix-insts",
289289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
290 .subfeatures = &[_]*const Feature {
290 .dependencies = &[_]*const Feature {
291291 },
292292};
293293
294294pub const feature_gcn3Encoding = Feature{
295295 .name = "gcn3-encoding",
296296 .description = "Encoding format for VI",
297 .subfeatures = &[_]*const Feature {
297 .dependencies = &[_]*const Feature {
298298 },
299299};
300300
301301pub const feature_gfx7Gfx8Gfx9Insts = Feature{
302302 .name = "gfx7-gfx8-gfx9-insts",
303303 .description = "Instructions shared in GFX7, GFX8, GFX9",
304 .subfeatures = &[_]*const Feature {
304 .dependencies = &[_]*const Feature {
305305 },
306306};
307307
308308pub const feature_gfx8Insts = Feature{
309309 .name = "gfx8-insts",
310310 .description = "Additional instructions for GFX8+",
311 .subfeatures = &[_]*const Feature {
311 .dependencies = &[_]*const Feature {
312312 },
313313};
314314
315315pub const feature_gfx9Insts = Feature{
316316 .name = "gfx9-insts",
317317 .description = "Additional instructions for GFX9+",
318 .subfeatures = &[_]*const Feature {
318 .dependencies = &[_]*const Feature {
319319 },
320320};
321321
322322pub const feature_gfx10Insts = Feature{
323323 .name = "gfx10-insts",
324324 .description = "Additional instructions for GFX10+",
325 .subfeatures = &[_]*const Feature {
325 .dependencies = &[_]*const Feature {
326326 },
327327};
328328
329329pub const feature_instFwdPrefetchBug = Feature{
330330 .name = "inst-fwd-prefetch-bug",
331331 .description = "S_INST_PREFETCH instruction causes shader to hang",
332 .subfeatures = &[_]*const Feature {
332 .dependencies = &[_]*const Feature {
333333 },
334334};
335335
336336pub const feature_intClampInsts = Feature{
337337 .name = "int-clamp-insts",
338338 .description = "Support clamp for integer destination",
339 .subfeatures = &[_]*const Feature {
339 .dependencies = &[_]*const Feature {
340340 },
341341};
342342
343343pub const feature_inv2piInlineImm = Feature{
344344 .name = "inv-2pi-inline-imm",
345345 .description = "Has 1 / (2 * pi) as inline immediate",
346 .subfeatures = &[_]*const Feature {
346 .dependencies = &[_]*const Feature {
347347 },
348348};
349349
350350pub const feature_ldsbankcount16 = Feature{
351351 .name = "ldsbankcount16",
352352 .description = "The number of LDS banks per compute unit.",
353 .subfeatures = &[_]*const Feature {
353 .dependencies = &[_]*const Feature {
354354 },
355355};
356356
357357pub const feature_ldsbankcount32 = Feature{
358358 .name = "ldsbankcount32",
359359 .description = "The number of LDS banks per compute unit.",
360 .subfeatures = &[_]*const Feature {
360 .dependencies = &[_]*const Feature {
361361 },
362362};
363363
364364pub const feature_ldsBranchVmemWarHazard = Feature{
365365 .name = "lds-branch-vmem-war-hazard",
366366 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
367 .subfeatures = &[_]*const Feature {
367 .dependencies = &[_]*const Feature {
368368 },
369369};
370370
371371pub const feature_ldsMisalignedBug = Feature{
372372 .name = "lds-misaligned-bug",
373373 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
374 .subfeatures = &[_]*const Feature {
374 .dependencies = &[_]*const Feature {
375375 },
376376};
377377
378378pub const feature_localmemorysize0 = Feature{
379379 .name = "localmemorysize0",
380380 .description = "The size of local memory in bytes",
381 .subfeatures = &[_]*const Feature {
381 .dependencies = &[_]*const Feature {
382382 },
383383};
384384
385385pub const feature_localmemorysize32768 = Feature{
386386 .name = "localmemorysize32768",
387387 .description = "The size of local memory in bytes",
388 .subfeatures = &[_]*const Feature {
388 .dependencies = &[_]*const Feature {
389389 },
390390};
391391
392392pub const feature_localmemorysize65536 = Feature{
393393 .name = "localmemorysize65536",
394394 .description = "The size of local memory in bytes",
395 .subfeatures = &[_]*const Feature {
395 .dependencies = &[_]*const Feature {
396396 },
397397};
398398
399399pub const feature_maiInsts = Feature{
400400 .name = "mai-insts",
401401 .description = "Has mAI instructions",
402 .subfeatures = &[_]*const Feature {
402 .dependencies = &[_]*const Feature {
403403 },
404404};
405405
406406pub const feature_mfmaInlineLiteralBug = Feature{
407407 .name = "mfma-inline-literal-bug",
408408 .description = "MFMA cannot use inline literal as SrcC",
409 .subfeatures = &[_]*const Feature {
409 .dependencies = &[_]*const Feature {
410410 },
411411};
412412
413413pub const feature_mimgR128 = Feature{
414414 .name = "mimg-r128",
415415 .description = "Support 128-bit texture resources",
416 .subfeatures = &[_]*const Feature {
416 .dependencies = &[_]*const Feature {
417417 },
418418};
419419
420420pub const feature_madMixInsts = Feature{
421421 .name = "mad-mix-insts",
422422 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
423 .subfeatures = &[_]*const Feature {
423 .dependencies = &[_]*const Feature {
424424 },
425425};
426426
427427pub const feature_maxPrivateElementSize4 = Feature{
428428 .name = "max-private-element-size-4",
429429 .description = "Maximum private access size may be 4",
430 .subfeatures = &[_]*const Feature {
430 .dependencies = &[_]*const Feature {
431431 },
432432};
433433
434434pub const feature_maxPrivateElementSize8 = Feature{
435435 .name = "max-private-element-size-8",
436436 .description = "Maximum private access size may be 8",
437 .subfeatures = &[_]*const Feature {
437 .dependencies = &[_]*const Feature {
438438 },
439439};
440440
441441pub const feature_maxPrivateElementSize16 = Feature{
442442 .name = "max-private-element-size-16",
443443 .description = "Maximum private access size may be 16",
444 .subfeatures = &[_]*const Feature {
444 .dependencies = &[_]*const Feature {
445445 },
446446};
447447
448448pub const feature_movrel = Feature{
449449 .name = "movrel",
450450 .description = "Has v_movrel*_b32 instructions",
451 .subfeatures = &[_]*const Feature {
451 .dependencies = &[_]*const Feature {
452452 },
453453};
454454
455455pub const feature_nsaEncoding = Feature{
456456 .name = "nsa-encoding",
457457 .description = "Support NSA encoding for image instructions",
458 .subfeatures = &[_]*const Feature {
458 .dependencies = &[_]*const Feature {
459459 },
460460};
461461
462462pub const feature_nsaToVmemBug = Feature{
463463 .name = "nsa-to-vmem-bug",
464464 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
465 .subfeatures = &[_]*const Feature {
465 .dependencies = &[_]*const Feature {
466466 },
467467};
468468
469469pub const feature_noDataDepHazard = Feature{
470470 .name = "no-data-dep-hazard",
471471 .description = "Does not need SW waitstates",
472 .subfeatures = &[_]*const Feature {
472 .dependencies = &[_]*const Feature {
473473 },
474474};
475475
476476pub const feature_noSdstCmpx = Feature{
477477 .name = "no-sdst-cmpx",
478478 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
479 .subfeatures = &[_]*const Feature {
479 .dependencies = &[_]*const Feature {
480480 },
481481};
482482
483483pub const feature_offset3fBug = Feature{
484484 .name = "offset-3f-bug",
485485 .description = "Branch offset of 3f hardware bug",
486 .subfeatures = &[_]*const Feature {
486 .dependencies = &[_]*const Feature {
487487 },
488488};
489489
490490pub const feature_pkFmacF16Inst = Feature{
491491 .name = "pk-fmac-f16-inst",
492492 .description = "Has v_pk_fmac_f16 instruction",
493 .subfeatures = &[_]*const Feature {
493 .dependencies = &[_]*const Feature {
494494 },
495495};
496496
497497pub const feature_promoteAlloca = Feature{
498498 .name = "promote-alloca",
499499 .description = "Enable promote alloca pass",
500 .subfeatures = &[_]*const Feature {
500 .dependencies = &[_]*const Feature {
501501 },
502502};
503503
504504pub const feature_r128A16 = Feature{
505505 .name = "r128-a16",
506506 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
507 .subfeatures = &[_]*const Feature {
507 .dependencies = &[_]*const Feature {
508508 },
509509};
510510
511511pub const feature_registerBanking = Feature{
512512 .name = "register-banking",
513513 .description = "Has register banking",
514 .subfeatures = &[_]*const Feature {
514 .dependencies = &[_]*const Feature {
515515 },
516516};
517517
518518pub const feature_sdwa = Feature{
519519 .name = "sdwa",
520520 .description = "Support SDWA (Sub-DWORD Addressing) extension",
521 .subfeatures = &[_]*const Feature {
521 .dependencies = &[_]*const Feature {
522522 },
523523};
524524
525525pub const feature_sdwaMav = Feature{
526526 .name = "sdwa-mav",
527527 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
528 .subfeatures = &[_]*const Feature {
528 .dependencies = &[_]*const Feature {
529529 },
530530};
531531
532532pub const feature_sdwaOmod = Feature{
533533 .name = "sdwa-omod",
534534 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
535 .subfeatures = &[_]*const Feature {
535 .dependencies = &[_]*const Feature {
536536 },
537537};
538538
539539pub const feature_sdwaOutModsVopc = Feature{
540540 .name = "sdwa-out-mods-vopc",
541541 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
542 .subfeatures = &[_]*const Feature {
542 .dependencies = &[_]*const Feature {
543543 },
544544};
545545
546546pub const feature_sdwaScalar = Feature{
547547 .name = "sdwa-scalar",
548548 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
549 .subfeatures = &[_]*const Feature {
549 .dependencies = &[_]*const Feature {
550550 },
551551};
552552
553553pub const feature_sdwaSdst = Feature{
554554 .name = "sdwa-sdst",
555555 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
556 .subfeatures = &[_]*const Feature {
556 .dependencies = &[_]*const Feature {
557557 },
558558};
559559
560560pub const feature_sgprInitBug = Feature{
561561 .name = "sgpr-init-bug",
562562 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
563 .subfeatures = &[_]*const Feature {
563 .dependencies = &[_]*const Feature {
564564 },
565565};
566566
567567pub const feature_smemToVectorWriteHazard = Feature{
568568 .name = "smem-to-vector-write-hazard",
569569 .description = "s_load_dword followed by v_cmp page faults",
570 .subfeatures = &[_]*const Feature {
570 .dependencies = &[_]*const Feature {
571571 },
572572};
573573
574574pub const feature_sMemrealtime = Feature{
575575 .name = "s-memrealtime",
576576 .description = "Has s_memrealtime instruction",
577 .subfeatures = &[_]*const Feature {
577 .dependencies = &[_]*const Feature {
578578 },
579579};
580580
581581pub const feature_sramEcc = Feature{
582582 .name = "sram-ecc",
583583 .description = "Enable SRAM ECC",
584 .subfeatures = &[_]*const Feature {
584 .dependencies = &[_]*const Feature {
585585 },
586586};
587587
588588pub const feature_scalarAtomics = Feature{
589589 .name = "scalar-atomics",
590590 .description = "Has atomic scalar memory instructions",
591 .subfeatures = &[_]*const Feature {
591 .dependencies = &[_]*const Feature {
592592 },
593593};
594594
595595pub const feature_scalarFlatScratchInsts = Feature{
596596 .name = "scalar-flat-scratch-insts",
597597 .description = "Have s_scratch_* flat memory instructions",
598 .subfeatures = &[_]*const Feature {
598 .dependencies = &[_]*const Feature {
599599 },
600600};
601601
602602pub const feature_scalarStores = Feature{
603603 .name = "scalar-stores",
604604 .description = "Has store scalar memory instructions",
605 .subfeatures = &[_]*const Feature {
605 .dependencies = &[_]*const Feature {
606606 },
607607};
608608
609609pub const feature_trapHandler = Feature{
610610 .name = "trap-handler",
611611 .description = "Trap handler support",
612 .subfeatures = &[_]*const Feature {
612 .dependencies = &[_]*const Feature {
613613 },
614614};
615615
616616pub const feature_trigReducedRange = Feature{
617617 .name = "trig-reduced-range",
618618 .description = "Requires use of fract on arguments to trig instructions",
619 .subfeatures = &[_]*const Feature {
619 .dependencies = &[_]*const Feature {
620620 },
621621};
622622
623623pub const feature_unalignedBufferAccess = Feature{
624624 .name = "unaligned-buffer-access",
625625 .description = "Support unaligned global loads and stores",
626 .subfeatures = &[_]*const Feature {
626 .dependencies = &[_]*const Feature {
627627 },
628628};
629629
630630pub const feature_unalignedScratchAccess = Feature{
631631 .name = "unaligned-scratch-access",
632632 .description = "Support unaligned scratch loads and stores",
633 .subfeatures = &[_]*const Feature {
633 .dependencies = &[_]*const Feature {
634634 },
635635};
636636
637637pub const feature_unpackedD16Vmem = Feature{
638638 .name = "unpacked-d16-vmem",
639639 .description = "Has unpacked d16 vmem instructions",
640 .subfeatures = &[_]*const Feature {
640 .dependencies = &[_]*const Feature {
641641 },
642642};
643643
644644pub const feature_vgprIndexMode = Feature{
645645 .name = "vgpr-index-mode",
646646 .description = "Has VGPR mode register indexing",
647 .subfeatures = &[_]*const Feature {
647 .dependencies = &[_]*const Feature {
648648 },
649649};
650650
651651pub const feature_vmemToScalarWriteHazard = Feature{
652652 .name = "vmem-to-scalar-write-hazard",
653653 .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 {
655655 },
656656};
657657
658658pub const feature_vop3Literal = Feature{
659659 .name = "vop3-literal",
660660 .description = "Can use one literal in VOP3",
661 .subfeatures = &[_]*const Feature {
661 .dependencies = &[_]*const Feature {
662662 },
663663};
664664
665665pub const feature_vop3p = Feature{
666666 .name = "vop3p",
667667 .description = "Has VOP3P packed instructions",
668 .subfeatures = &[_]*const Feature {
668 .dependencies = &[_]*const Feature {
669669 },
670670};
671671
672672pub const feature_vcmpxExecWarHazard = Feature{
673673 .name = "vcmpx-exec-war-hazard",
674674 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
675 .subfeatures = &[_]*const Feature {
675 .dependencies = &[_]*const Feature {
676676 },
677677};
678678
679679pub const feature_vcmpxPermlaneHazard = Feature{
680680 .name = "vcmpx-permlane-hazard",
681681 .description = "TODO: describe me",
682 .subfeatures = &[_]*const Feature {
682 .dependencies = &[_]*const Feature {
683683 },
684684};
685685
686686pub const feature_vscnt = Feature{
687687 .name = "vscnt",
688688 .description = "Has separate store vscnt counter",
689 .subfeatures = &[_]*const Feature {
689 .dependencies = &[_]*const Feature {
690690 },
691691};
692692
693693pub const feature_wavefrontsize16 = Feature{
694694 .name = "wavefrontsize16",
695695 .description = "The number of threads per wavefront",
696 .subfeatures = &[_]*const Feature {
696 .dependencies = &[_]*const Feature {
697697 },
698698};
699699
700700pub const feature_wavefrontsize32 = Feature{
701701 .name = "wavefrontsize32",
702702 .description = "The number of threads per wavefront",
703 .subfeatures = &[_]*const Feature {
703 .dependencies = &[_]*const Feature {
704704 },
705705};
706706
707707pub const feature_wavefrontsize64 = Feature{
708708 .name = "wavefrontsize64",
709709 .description = "The number of threads per wavefront",
710 .subfeatures = &[_]*const Feature {
710 .dependencies = &[_]*const Feature {
711711 },
712712};
713713
714714pub const feature_xnack = Feature{
715715 .name = "xnack",
716716 .description = "Enable XNACK support",
717 .subfeatures = &[_]*const Feature {
717 .dependencies = &[_]*const Feature {
718718 },
719719};
720720
721721pub const feature_halfRate64Ops = Feature{
722722 .name = "half-rate-64-ops",
723723 .description = "Most fp64 instructions are half rate instead of quarter",
724 .subfeatures = &[_]*const Feature {
724 .dependencies = &[_]*const Feature {
725725 },
726726};
727727
......@@ -834,53 +834,53 @@ pub const features = &[_]*const Feature {
834834pub const cpu_bonaire = Cpu{
835835 .name = "bonaire",
836836 .llvm_name = "bonaire",
837 .subfeatures = &[_]*const Feature {
837 .dependencies = &[_]*const Feature {
838838 &feature_codeObjectV3,
839839 &feature_noXnackSupport,
840840 &feature_ldsbankcount32,
841 &feature_noSramEccSupport,
842841 &feature_flatAddressSpace,
842 &feature_fp64,
843843 &feature_mimgR128,
844 &feature_trigReducedRange,
845844 &feature_gfx7Gfx8Gfx9Insts,
846 &feature_ciInsts,
847 &feature_wavefrontsize64,
848 &feature_fp64,
849845 &feature_movrel,
850846 &feature_localmemorysize65536,
847 &feature_ciInsts,
848 &feature_noSramEccSupport,
849 &feature_wavefrontsize64,
850 &feature_trigReducedRange,
851851 },
852852};
853853
854854pub const cpu_carrizo = Cpu{
855855 .name = "carrizo",
856856 .llvm_name = "carrizo",
857 .subfeatures = &[_]*const Feature {
857 .dependencies = &[_]*const Feature {
858858 &feature_codeObjectV3,
859859 &feature_fastFmaf,
860860 &feature_ldsbankcount32,
861861 &feature_unpackedD16Vmem,
862 &feature_fp64,
863 &feature_sMemrealtime,
864 &feature_BitInsts16,
865 &feature_wavefrontsize64,
866 &feature_sdwa,
867 &feature_flatAddressSpace,
868 &feature_sdwaMav,
862869 &feature_mimgR128,
863 &feature_inv2piInlineImm,
864870 &feature_ciInsts,
871 &feature_noSramEccSupport,
872 &feature_inv2piInlineImm,
865873 &feature_vgprIndexMode,
866 &feature_scalarStores,
867874 &feature_gcn3Encoding,
868 &feature_fp64,
869 &feature_dpp,
870 &feature_trigReducedRange,
871 &feature_gfx7Gfx8Gfx9Insts,
872 &feature_sMemrealtime,
875 &feature_gfx8Insts,
876 &feature_scalarStores,
877 &feature_intClampInsts,
873878 &feature_movrel,
874879 &feature_localmemorysize65536,
875 &feature_noSramEccSupport,
876 &feature_gfx8Insts,
877 &feature_flatAddressSpace,
878 &feature_BitInsts16,
879 &feature_sdwaMav,
880 &feature_sdwa,
881880 &feature_sdwaOutModsVopc,
882 &feature_wavefrontsize64,
883 &feature_intClampInsts,
881 &feature_dpp,
882 &feature_gfx7Gfx8Gfx9Insts,
883 &feature_trigReducedRange,
884884 &feature_xnack,
885885 &feature_halfRate64Ops,
886886 },
......@@ -889,40 +889,40 @@ pub const cpu_carrizo = Cpu{
889889pub const cpu_fiji = Cpu{
890890 .name = "fiji",
891891 .llvm_name = "fiji",
892 .subfeatures = &[_]*const Feature {
892 .dependencies = &[_]*const Feature {
893893 &feature_codeObjectV3,
894894 &feature_noXnackSupport,
895895 &feature_ldsbankcount32,
896896 &feature_unpackedD16Vmem,
897 &feature_fp64,
898 &feature_sMemrealtime,
899 &feature_BitInsts16,
900 &feature_wavefrontsize64,
901 &feature_sdwa,
902 &feature_flatAddressSpace,
903 &feature_sdwaMav,
897904 &feature_mimgR128,
898 &feature_inv2piInlineImm,
899905 &feature_ciInsts,
906 &feature_noSramEccSupport,
907 &feature_inv2piInlineImm,
900908 &feature_vgprIndexMode,
901 &feature_scalarStores,
902909 &feature_gcn3Encoding,
903 &feature_fp64,
904 &feature_dpp,
905 &feature_trigReducedRange,
906 &feature_gfx7Gfx8Gfx9Insts,
907 &feature_sMemrealtime,
910 &feature_gfx8Insts,
911 &feature_scalarStores,
912 &feature_intClampInsts,
908913 &feature_movrel,
909914 &feature_localmemorysize65536,
910 &feature_noSramEccSupport,
911 &feature_gfx8Insts,
912 &feature_flatAddressSpace,
913 &feature_BitInsts16,
914 &feature_sdwaMav,
915 &feature_sdwa,
916915 &feature_sdwaOutModsVopc,
917 &feature_wavefrontsize64,
918 &feature_intClampInsts,
916 &feature_dpp,
917 &feature_gfx7Gfx8Gfx9Insts,
918 &feature_trigReducedRange,
919919 },
920920};
921921
922922pub const cpu_generic = Cpu{
923923 .name = "generic",
924924 .llvm_name = "generic",
925 .subfeatures = &[_]*const Feature {
925 .dependencies = &[_]*const Feature {
926926 &feature_wavefrontsize64,
927927 },
928928};
......@@ -930,7 +930,7 @@ pub const cpu_generic = Cpu{
930930pub const cpu_genericHsa = Cpu{
931931 .name = "generic-hsa",
932932 .llvm_name = "generic-hsa",
933 .subfeatures = &[_]*const Feature {
933 .dependencies = &[_]*const Feature {
934934 &feature_flatAddressSpace,
935935 &feature_wavefrontsize64,
936936 },
......@@ -939,45 +939,45 @@ pub const cpu_genericHsa = Cpu{
939939pub const cpu_gfx1010 = Cpu{
940940 .name = "gfx1010",
941941 .llvm_name = "gfx1010",
942 .subfeatures = &[_]*const Feature {
942 .dependencies = &[_]*const Feature {
943943 &feature_codeObjectV3,
944944 &feature_dlInsts,
945945 &feature_noXnackSupport,
946946 &feature_flatSegmentOffsetBug,
947 &feature_mimgR128,
947 &feature_noSdstCmpx,
948 &feature_flatScratchInsts,
949 &feature_fp64,
950 &feature_sMemrealtime,
948951 &feature_addNoCarryInsts,
949 &feature_dpp8,
952 &feature_vop3p,
953 &feature_fastFmaf,
954 &feature_BitInsts16,
955 &feature_sdwa,
950956 &feature_gfx9Insts,
957 &feature_flatAddressSpace,
958 &feature_vop3Literal,
959 &feature_apertureRegs,
960 &feature_mimgR128,
961 &feature_sdwaScalar,
951962 &feature_ciInsts,
963 &feature_noSramEccSupport,
952964 &feature_inv2piInlineImm,
953 &feature_fastFmaf,
954 &feature_registerBanking,
955 &feature_apertureRegs,
956 &feature_flatGlobalInsts,
957 &feature_fp64,
965 &feature_gfx8Insts,
966 &feature_intClampInsts,
958967 &feature_vscnt,
959 &feature_flatScratchInsts,
960 &feature_dpp,
961 &feature_sMemrealtime,
962 &feature_vop3p,
963 &feature_flatInstOffsets,
964 &feature_sdwaScalar,
965 &feature_sdwaSdst,
966968 &feature_movrel,
967969 &feature_localmemorysize65536,
968 &feature_noSdstCmpx,
969 &feature_pkFmacF16Inst,
970 &feature_noSramEccSupport,
971 &feature_vop3Literal,
972 &feature_gfx8Insts,
973 &feature_flatAddressSpace,
974 &feature_BitInsts16,
975970 &feature_gfx10Insts,
976 &feature_sdwa,
977 &feature_intClampInsts,
978 &feature_noDataDepHazard,
979 &feature_fmaMixInsts,
971 &feature_flatGlobalInsts,
980972 &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,
981981 &feature_instFwdPrefetchBug,
982982 &feature_ldsbankcount32,
983983 &feature_ldsBranchVmemWarHazard,
......@@ -999,7 +999,7 @@ pub const cpu_gfx1010 = Cpu{
999999pub const cpu_gfx1011 = Cpu{
10001000 .name = "gfx1011",
10011001 .llvm_name = "gfx1011",
1002 .subfeatures = &[_]*const Feature {
1002 .dependencies = &[_]*const Feature {
10031003 &feature_codeObjectV3,
10041004 &feature_dlInsts,
10051005 &feature_noXnackSupport,
......@@ -1008,40 +1008,40 @@ pub const cpu_gfx1011 = Cpu{
10081008 &feature_dot5Insts,
10091009 &feature_dot6Insts,
10101010 &feature_flatSegmentOffsetBug,
1011 &feature_mimgR128,
1011 &feature_noSdstCmpx,
1012 &feature_flatScratchInsts,
1013 &feature_fp64,
1014 &feature_sMemrealtime,
10121015 &feature_addNoCarryInsts,
1013 &feature_dpp8,
1016 &feature_vop3p,
1017 &feature_fastFmaf,
1018 &feature_BitInsts16,
1019 &feature_sdwa,
10141020 &feature_gfx9Insts,
1021 &feature_flatAddressSpace,
1022 &feature_vop3Literal,
1023 &feature_apertureRegs,
1024 &feature_mimgR128,
1025 &feature_sdwaScalar,
10151026 &feature_ciInsts,
1027 &feature_noSramEccSupport,
10161028 &feature_inv2piInlineImm,
1017 &feature_fastFmaf,
1018 &feature_registerBanking,
1019 &feature_apertureRegs,
1020 &feature_flatGlobalInsts,
1021 &feature_fp64,
1029 &feature_gfx8Insts,
1030 &feature_intClampInsts,
10221031 &feature_vscnt,
1023 &feature_flatScratchInsts,
1024 &feature_dpp,
1025 &feature_sMemrealtime,
1026 &feature_vop3p,
1027 &feature_flatInstOffsets,
1028 &feature_sdwaScalar,
1029 &feature_sdwaSdst,
10301032 &feature_movrel,
10311033 &feature_localmemorysize65536,
1032 &feature_noSdstCmpx,
1033 &feature_pkFmacF16Inst,
1034 &feature_noSramEccSupport,
1035 &feature_vop3Literal,
1036 &feature_gfx8Insts,
1037 &feature_flatAddressSpace,
1038 &feature_BitInsts16,
10391034 &feature_gfx10Insts,
1040 &feature_sdwa,
1041 &feature_intClampInsts,
1042 &feature_noDataDepHazard,
1043 &feature_fmaMixInsts,
1035 &feature_flatGlobalInsts,
10441036 &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,
10451045 &feature_instFwdPrefetchBug,
10461046 &feature_ldsbankcount32,
10471047 &feature_ldsBranchVmemWarHazard,
......@@ -1062,7 +1062,7 @@ pub const cpu_gfx1011 = Cpu{
10621062pub const cpu_gfx1012 = Cpu{
10631063 .name = "gfx1012",
10641064 .llvm_name = "gfx1012",
1065 .subfeatures = &[_]*const Feature {
1065 .dependencies = &[_]*const Feature {
10661066 &feature_codeObjectV3,
10671067 &feature_dlInsts,
10681068 &feature_noXnackSupport,
......@@ -1071,40 +1071,40 @@ pub const cpu_gfx1012 = Cpu{
10711071 &feature_dot5Insts,
10721072 &feature_dot6Insts,
10731073 &feature_flatSegmentOffsetBug,
1074 &feature_mimgR128,
1074 &feature_noSdstCmpx,
1075 &feature_flatScratchInsts,
1076 &feature_fp64,
1077 &feature_sMemrealtime,
10751078 &feature_addNoCarryInsts,
1076 &feature_dpp8,
1079 &feature_vop3p,
1080 &feature_fastFmaf,
1081 &feature_BitInsts16,
1082 &feature_sdwa,
10771083 &feature_gfx9Insts,
1084 &feature_flatAddressSpace,
1085 &feature_vop3Literal,
1086 &feature_apertureRegs,
1087 &feature_mimgR128,
1088 &feature_sdwaScalar,
10781089 &feature_ciInsts,
1090 &feature_noSramEccSupport,
10791091 &feature_inv2piInlineImm,
1080 &feature_fastFmaf,
1081 &feature_registerBanking,
1082 &feature_apertureRegs,
1083 &feature_flatGlobalInsts,
1084 &feature_fp64,
1092 &feature_gfx8Insts,
1093 &feature_intClampInsts,
10851094 &feature_vscnt,
1086 &feature_flatScratchInsts,
1087 &feature_dpp,
1088 &feature_sMemrealtime,
1089 &feature_vop3p,
1090 &feature_flatInstOffsets,
1091 &feature_sdwaScalar,
1092 &feature_sdwaSdst,
10931095 &feature_movrel,
10941096 &feature_localmemorysize65536,
1095 &feature_noSdstCmpx,
1096 &feature_pkFmacF16Inst,
1097 &feature_noSramEccSupport,
1098 &feature_vop3Literal,
1099 &feature_gfx8Insts,
1100 &feature_flatAddressSpace,
1101 &feature_BitInsts16,
11021097 &feature_gfx10Insts,
1103 &feature_sdwa,
1104 &feature_intClampInsts,
1105 &feature_noDataDepHazard,
1106 &feature_fmaMixInsts,
1098 &feature_flatGlobalInsts,
11071099 &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,
11081108 &feature_instFwdPrefetchBug,
11091109 &feature_ldsbankcount32,
11101110 &feature_ldsBranchVmemWarHazard,
......@@ -1126,18 +1126,18 @@ pub const cpu_gfx1012 = Cpu{
11261126pub const cpu_gfx600 = Cpu{
11271127 .name = "gfx600",
11281128 .llvm_name = "gfx600",
1129 .subfeatures = &[_]*const Feature {
1129 .dependencies = &[_]*const Feature {
11301130 &feature_codeObjectV3,
11311131 &feature_noXnackSupport,
11321132 &feature_fastFmaf,
11331133 &feature_ldsbankcount32,
1134 &feature_noSramEccSupport,
1135 &feature_mimgR128,
1136 &feature_trigReducedRange,
1137 &feature_wavefrontsize64,
11381134 &feature_localmemorysize32768,
11391135 &feature_fp64,
1136 &feature_mimgR128,
11401137 &feature_movrel,
1138 &feature_noSramEccSupport,
1139 &feature_wavefrontsize64,
1140 &feature_trigReducedRange,
11411141 &feature_halfRate64Ops,
11421142 },
11431143};
......@@ -1145,58 +1145,58 @@ pub const cpu_gfx600 = Cpu{
11451145pub const cpu_gfx601 = Cpu{
11461146 .name = "gfx601",
11471147 .llvm_name = "gfx601",
1148 .subfeatures = &[_]*const Feature {
1148 .dependencies = &[_]*const Feature {
11491149 &feature_codeObjectV3,
11501150 &feature_noXnackSupport,
11511151 &feature_ldsbankcount32,
1152 &feature_noSramEccSupport,
1153 &feature_mimgR128,
1154 &feature_trigReducedRange,
1155 &feature_wavefrontsize64,
11561152 &feature_localmemorysize32768,
11571153 &feature_fp64,
1154 &feature_mimgR128,
11581155 &feature_movrel,
1156 &feature_noSramEccSupport,
1157 &feature_wavefrontsize64,
1158 &feature_trigReducedRange,
11591159 },
11601160};
11611161
11621162pub const cpu_gfx700 = Cpu{
11631163 .name = "gfx700",
11641164 .llvm_name = "gfx700",
1165 .subfeatures = &[_]*const Feature {
1165 .dependencies = &[_]*const Feature {
11661166 &feature_codeObjectV3,
11671167 &feature_noXnackSupport,
11681168 &feature_ldsbankcount32,
1169 &feature_noSramEccSupport,
11701169 &feature_flatAddressSpace,
1170 &feature_fp64,
11711171 &feature_mimgR128,
1172 &feature_trigReducedRange,
11731172 &feature_gfx7Gfx8Gfx9Insts,
1174 &feature_ciInsts,
1175 &feature_wavefrontsize64,
1176 &feature_fp64,
11771173 &feature_movrel,
11781174 &feature_localmemorysize65536,
1175 &feature_ciInsts,
1176 &feature_noSramEccSupport,
1177 &feature_wavefrontsize64,
1178 &feature_trigReducedRange,
11791179 },
11801180};
11811181
11821182pub const cpu_gfx701 = Cpu{
11831183 .name = "gfx701",
11841184 .llvm_name = "gfx701",
1185 .subfeatures = &[_]*const Feature {
1185 .dependencies = &[_]*const Feature {
11861186 &feature_codeObjectV3,
11871187 &feature_noXnackSupport,
11881188 &feature_fastFmaf,
11891189 &feature_ldsbankcount32,
1190 &feature_noSramEccSupport,
11911190 &feature_flatAddressSpace,
1191 &feature_fp64,
11921192 &feature_mimgR128,
1193 &feature_trigReducedRange,
11941193 &feature_gfx7Gfx8Gfx9Insts,
1195 &feature_ciInsts,
1196 &feature_wavefrontsize64,
1197 &feature_fp64,
11981194 &feature_movrel,
11991195 &feature_localmemorysize65536,
1196 &feature_ciInsts,
1197 &feature_noSramEccSupport,
1198 &feature_wavefrontsize64,
1199 &feature_trigReducedRange,
12001200 &feature_halfRate64Ops,
12011201 },
12021202};
......@@ -1204,94 +1204,94 @@ pub const cpu_gfx701 = Cpu{
12041204pub const cpu_gfx702 = Cpu{
12051205 .name = "gfx702",
12061206 .llvm_name = "gfx702",
1207 .subfeatures = &[_]*const Feature {
1207 .dependencies = &[_]*const Feature {
12081208 &feature_codeObjectV3,
12091209 &feature_noXnackSupport,
12101210 &feature_fastFmaf,
12111211 &feature_ldsbankcount16,
1212 &feature_noSramEccSupport,
12131212 &feature_flatAddressSpace,
1213 &feature_fp64,
12141214 &feature_mimgR128,
1215 &feature_trigReducedRange,
12161215 &feature_gfx7Gfx8Gfx9Insts,
1217 &feature_ciInsts,
1218 &feature_wavefrontsize64,
1219 &feature_fp64,
12201216 &feature_movrel,
12211217 &feature_localmemorysize65536,
1218 &feature_ciInsts,
1219 &feature_noSramEccSupport,
1220 &feature_wavefrontsize64,
1221 &feature_trigReducedRange,
12221222 },
12231223};
12241224
12251225pub const cpu_gfx703 = Cpu{
12261226 .name = "gfx703",
12271227 .llvm_name = "gfx703",
1228 .subfeatures = &[_]*const Feature {
1228 .dependencies = &[_]*const Feature {
12291229 &feature_codeObjectV3,
12301230 &feature_noXnackSupport,
12311231 &feature_ldsbankcount16,
1232 &feature_noSramEccSupport,
12331232 &feature_flatAddressSpace,
1233 &feature_fp64,
12341234 &feature_mimgR128,
1235 &feature_trigReducedRange,
12361235 &feature_gfx7Gfx8Gfx9Insts,
1237 &feature_ciInsts,
1238 &feature_wavefrontsize64,
1239 &feature_fp64,
12401236 &feature_movrel,
12411237 &feature_localmemorysize65536,
1238 &feature_ciInsts,
1239 &feature_noSramEccSupport,
1240 &feature_wavefrontsize64,
1241 &feature_trigReducedRange,
12421242 },
12431243};
12441244
12451245pub const cpu_gfx704 = Cpu{
12461246 .name = "gfx704",
12471247 .llvm_name = "gfx704",
1248 .subfeatures = &[_]*const Feature {
1248 .dependencies = &[_]*const Feature {
12491249 &feature_codeObjectV3,
12501250 &feature_noXnackSupport,
12511251 &feature_ldsbankcount32,
1252 &feature_noSramEccSupport,
12531252 &feature_flatAddressSpace,
1253 &feature_fp64,
12541254 &feature_mimgR128,
1255 &feature_trigReducedRange,
12561255 &feature_gfx7Gfx8Gfx9Insts,
1257 &feature_ciInsts,
1258 &feature_wavefrontsize64,
1259 &feature_fp64,
12601256 &feature_movrel,
12611257 &feature_localmemorysize65536,
1258 &feature_ciInsts,
1259 &feature_noSramEccSupport,
1260 &feature_wavefrontsize64,
1261 &feature_trigReducedRange,
12621262 },
12631263};
12641264
12651265pub const cpu_gfx801 = Cpu{
12661266 .name = "gfx801",
12671267 .llvm_name = "gfx801",
1268 .subfeatures = &[_]*const Feature {
1268 .dependencies = &[_]*const Feature {
12691269 &feature_codeObjectV3,
12701270 &feature_fastFmaf,
12711271 &feature_ldsbankcount32,
12721272 &feature_unpackedD16Vmem,
1273 &feature_fp64,
1274 &feature_sMemrealtime,
1275 &feature_BitInsts16,
1276 &feature_wavefrontsize64,
1277 &feature_sdwa,
1278 &feature_flatAddressSpace,
1279 &feature_sdwaMav,
12731280 &feature_mimgR128,
1274 &feature_inv2piInlineImm,
12751281 &feature_ciInsts,
1282 &feature_noSramEccSupport,
1283 &feature_inv2piInlineImm,
12761284 &feature_vgprIndexMode,
1277 &feature_scalarStores,
12781285 &feature_gcn3Encoding,
1279 &feature_fp64,
1280 &feature_dpp,
1281 &feature_trigReducedRange,
1282 &feature_gfx7Gfx8Gfx9Insts,
1283 &feature_sMemrealtime,
1286 &feature_gfx8Insts,
1287 &feature_scalarStores,
1288 &feature_intClampInsts,
12841289 &feature_movrel,
12851290 &feature_localmemorysize65536,
1286 &feature_noSramEccSupport,
1287 &feature_gfx8Insts,
1288 &feature_flatAddressSpace,
1289 &feature_BitInsts16,
1290 &feature_sdwaMav,
1291 &feature_sdwa,
12921291 &feature_sdwaOutModsVopc,
1293 &feature_wavefrontsize64,
1294 &feature_intClampInsts,
1292 &feature_dpp,
1293 &feature_gfx7Gfx8Gfx9Insts,
1294 &feature_trigReducedRange,
12951295 &feature_xnack,
12961296 &feature_halfRate64Ops,
12971297 },
......@@ -1300,98 +1300,98 @@ pub const cpu_gfx801 = Cpu{
13001300pub const cpu_gfx802 = Cpu{
13011301 .name = "gfx802",
13021302 .llvm_name = "gfx802",
1303 .subfeatures = &[_]*const Feature {
1303 .dependencies = &[_]*const Feature {
13041304 &feature_codeObjectV3,
13051305 &feature_noXnackSupport,
13061306 &feature_ldsbankcount32,
13071307 &feature_sgprInitBug,
13081308 &feature_unpackedD16Vmem,
1309 &feature_fp64,
1310 &feature_sMemrealtime,
1311 &feature_BitInsts16,
1312 &feature_wavefrontsize64,
1313 &feature_sdwa,
1314 &feature_flatAddressSpace,
1315 &feature_sdwaMav,
13091316 &feature_mimgR128,
1310 &feature_inv2piInlineImm,
13111317 &feature_ciInsts,
1318 &feature_noSramEccSupport,
1319 &feature_inv2piInlineImm,
13121320 &feature_vgprIndexMode,
1313 &feature_scalarStores,
13141321 &feature_gcn3Encoding,
1315 &feature_fp64,
1316 &feature_dpp,
1317 &feature_trigReducedRange,
1318 &feature_gfx7Gfx8Gfx9Insts,
1319 &feature_sMemrealtime,
1322 &feature_gfx8Insts,
1323 &feature_scalarStores,
1324 &feature_intClampInsts,
13201325 &feature_movrel,
13211326 &feature_localmemorysize65536,
1322 &feature_noSramEccSupport,
1323 &feature_gfx8Insts,
1324 &feature_flatAddressSpace,
1325 &feature_BitInsts16,
1326 &feature_sdwaMav,
1327 &feature_sdwa,
13281327 &feature_sdwaOutModsVopc,
1329 &feature_wavefrontsize64,
1330 &feature_intClampInsts,
1328 &feature_dpp,
1329 &feature_gfx7Gfx8Gfx9Insts,
1330 &feature_trigReducedRange,
13311331 },
13321332};
13331333
13341334pub const cpu_gfx803 = Cpu{
13351335 .name = "gfx803",
13361336 .llvm_name = "gfx803",
1337 .subfeatures = &[_]*const Feature {
1337 .dependencies = &[_]*const Feature {
13381338 &feature_codeObjectV3,
13391339 &feature_noXnackSupport,
13401340 &feature_ldsbankcount32,
13411341 &feature_unpackedD16Vmem,
1342 &feature_fp64,
1343 &feature_sMemrealtime,
1344 &feature_BitInsts16,
1345 &feature_wavefrontsize64,
1346 &feature_sdwa,
1347 &feature_flatAddressSpace,
1348 &feature_sdwaMav,
13421349 &feature_mimgR128,
1343 &feature_inv2piInlineImm,
13441350 &feature_ciInsts,
1351 &feature_noSramEccSupport,
1352 &feature_inv2piInlineImm,
13451353 &feature_vgprIndexMode,
1346 &feature_scalarStores,
13471354 &feature_gcn3Encoding,
1348 &feature_fp64,
1349 &feature_dpp,
1350 &feature_trigReducedRange,
1351 &feature_gfx7Gfx8Gfx9Insts,
1352 &feature_sMemrealtime,
1355 &feature_gfx8Insts,
1356 &feature_scalarStores,
1357 &feature_intClampInsts,
13531358 &feature_movrel,
13541359 &feature_localmemorysize65536,
1355 &feature_noSramEccSupport,
1356 &feature_gfx8Insts,
1357 &feature_flatAddressSpace,
1358 &feature_BitInsts16,
1359 &feature_sdwaMav,
1360 &feature_sdwa,
13611360 &feature_sdwaOutModsVopc,
1362 &feature_wavefrontsize64,
1363 &feature_intClampInsts,
1361 &feature_dpp,
1362 &feature_gfx7Gfx8Gfx9Insts,
1363 &feature_trigReducedRange,
13641364 },
13651365};
13661366
13671367pub const cpu_gfx810 = Cpu{
13681368 .name = "gfx810",
13691369 .llvm_name = "gfx810",
1370 .subfeatures = &[_]*const Feature {
1370 .dependencies = &[_]*const Feature {
13711371 &feature_codeObjectV3,
13721372 &feature_ldsbankcount16,
1373 &feature_fp64,
1374 &feature_sMemrealtime,
1375 &feature_BitInsts16,
1376 &feature_wavefrontsize64,
1377 &feature_sdwa,
1378 &feature_flatAddressSpace,
1379 &feature_sdwaMav,
13731380 &feature_mimgR128,
1374 &feature_inv2piInlineImm,
13751381 &feature_ciInsts,
1382 &feature_noSramEccSupport,
1383 &feature_inv2piInlineImm,
13761384 &feature_vgprIndexMode,
1377 &feature_scalarStores,
13781385 &feature_gcn3Encoding,
1379 &feature_fp64,
1380 &feature_dpp,
1381 &feature_trigReducedRange,
1382 &feature_gfx7Gfx8Gfx9Insts,
1383 &feature_sMemrealtime,
1386 &feature_gfx8Insts,
1387 &feature_scalarStores,
1388 &feature_intClampInsts,
13841389 &feature_movrel,
13851390 &feature_localmemorysize65536,
1386 &feature_noSramEccSupport,
1387 &feature_gfx8Insts,
1388 &feature_flatAddressSpace,
1389 &feature_BitInsts16,
1390 &feature_sdwaMav,
1391 &feature_sdwa,
13921391 &feature_sdwaOutModsVopc,
1393 &feature_wavefrontsize64,
1394 &feature_intClampInsts,
1392 &feature_dpp,
1393 &feature_gfx7Gfx8Gfx9Insts,
1394 &feature_trigReducedRange,
13951395 &feature_xnack,
13961396 },
13971397};
......@@ -1399,40 +1399,40 @@ pub const cpu_gfx810 = Cpu{
13991399pub const cpu_gfx900 = Cpu{
14001400 .name = "gfx900",
14011401 .llvm_name = "gfx900",
1402 .subfeatures = &[_]*const Feature {
1402 .dependencies = &[_]*const Feature {
14031403 &feature_codeObjectV3,
14041404 &feature_noSramEccSupport,
14051405 &feature_noXnackSupport,
1406 &feature_flatScratchInsts,
1407 &feature_fp64,
14061408 &feature_r128A16,
1409 &feature_sMemrealtime,
14071410 &feature_addNoCarryInsts,
1408 &feature_inv2piInlineImm,
1411 &feature_vop3p,
1412 &feature_fastFmaf,
1413 &feature_BitInsts16,
1414 &feature_wavefrontsize64,
1415 &feature_sdwa,
14091416 &feature_gfx9Insts,
1417 &feature_flatAddressSpace,
1418 &feature_apertureRegs,
1419 &feature_sdwaScalar,
14101420 &feature_ciInsts,
1421 &feature_scalarAtomics,
1422 &feature_scalarFlatScratchInsts,
1423 &feature_inv2piInlineImm,
14111424 &feature_vgprIndexMode,
1412 &feature_fastFmaf,
1413 &feature_scalarStores,
14141425 &feature_gcn3Encoding,
1415 &feature_apertureRegs,
1416 &feature_scalarAtomics,
1426 &feature_gfx8Insts,
1427 &feature_scalarStores,
1428 &feature_intClampInsts,
1429 &feature_localmemorysize65536,
14171430 &feature_flatGlobalInsts,
1418 &feature_fp64,
1419 &feature_flatScratchInsts,
1431 &feature_sdwaOmod,
14201432 &feature_dpp,
1421 &feature_scalarFlatScratchInsts,
14221433 &feature_gfx7Gfx8Gfx9Insts,
1423 &feature_sMemrealtime,
1424 &feature_vop3p,
1425 &feature_flatInstOffsets,
1426 &feature_sdwaScalar,
14271434 &feature_sdwaSdst,
1428 &feature_localmemorysize65536,
1429 &feature_gfx8Insts,
1430 &feature_flatAddressSpace,
1431 &feature_BitInsts16,
1432 &feature_sdwa,
1433 &feature_wavefrontsize64,
1434 &feature_intClampInsts,
1435 &feature_sdwaOmod,
1435 &feature_flatInstOffsets,
14361436 &feature_ldsbankcount32,
14371437 &feature_madMixInsts,
14381438 },
......@@ -1441,39 +1441,39 @@ pub const cpu_gfx900 = Cpu{
14411441pub const cpu_gfx902 = Cpu{
14421442 .name = "gfx902",
14431443 .llvm_name = "gfx902",
1444 .subfeatures = &[_]*const Feature {
1444 .dependencies = &[_]*const Feature {
14451445 &feature_codeObjectV3,
14461446 &feature_noSramEccSupport,
1447 &feature_flatScratchInsts,
1448 &feature_fp64,
14471449 &feature_r128A16,
1450 &feature_sMemrealtime,
14481451 &feature_addNoCarryInsts,
1449 &feature_inv2piInlineImm,
1452 &feature_vop3p,
1453 &feature_fastFmaf,
1454 &feature_BitInsts16,
1455 &feature_wavefrontsize64,
1456 &feature_sdwa,
14501457 &feature_gfx9Insts,
1458 &feature_flatAddressSpace,
1459 &feature_apertureRegs,
1460 &feature_sdwaScalar,
14511461 &feature_ciInsts,
1462 &feature_scalarAtomics,
1463 &feature_scalarFlatScratchInsts,
1464 &feature_inv2piInlineImm,
14521465 &feature_vgprIndexMode,
1453 &feature_fastFmaf,
1454 &feature_scalarStores,
14551466 &feature_gcn3Encoding,
1456 &feature_apertureRegs,
1457 &feature_scalarAtomics,
1467 &feature_gfx8Insts,
1468 &feature_scalarStores,
1469 &feature_intClampInsts,
1470 &feature_localmemorysize65536,
14581471 &feature_flatGlobalInsts,
1459 &feature_fp64,
1460 &feature_flatScratchInsts,
1472 &feature_sdwaOmod,
14611473 &feature_dpp,
1462 &feature_scalarFlatScratchInsts,
14631474 &feature_gfx7Gfx8Gfx9Insts,
1464 &feature_sMemrealtime,
1465 &feature_vop3p,
1466 &feature_flatInstOffsets,
1467 &feature_sdwaScalar,
14681475 &feature_sdwaSdst,
1469 &feature_localmemorysize65536,
1470 &feature_gfx8Insts,
1471 &feature_flatAddressSpace,
1472 &feature_BitInsts16,
1473 &feature_sdwa,
1474 &feature_wavefrontsize64,
1475 &feature_intClampInsts,
1476 &feature_sdwaOmod,
1476 &feature_flatInstOffsets,
14771477 &feature_ldsbankcount32,
14781478 &feature_madMixInsts,
14791479 &feature_xnack,
......@@ -1483,41 +1483,41 @@ pub const cpu_gfx902 = Cpu{
14831483pub const cpu_gfx904 = Cpu{
14841484 .name = "gfx904",
14851485 .llvm_name = "gfx904",
1486 .subfeatures = &[_]*const Feature {
1486 .dependencies = &[_]*const Feature {
14871487 &feature_codeObjectV3,
14881488 &feature_noSramEccSupport,
14891489 &feature_noXnackSupport,
14901490 &feature_fmaMixInsts,
1491 &feature_flatScratchInsts,
1492 &feature_fp64,
14911493 &feature_r128A16,
1494 &feature_sMemrealtime,
14921495 &feature_addNoCarryInsts,
1493 &feature_inv2piInlineImm,
1496 &feature_vop3p,
1497 &feature_fastFmaf,
1498 &feature_BitInsts16,
1499 &feature_wavefrontsize64,
1500 &feature_sdwa,
14941501 &feature_gfx9Insts,
1502 &feature_flatAddressSpace,
1503 &feature_apertureRegs,
1504 &feature_sdwaScalar,
14951505 &feature_ciInsts,
1506 &feature_scalarAtomics,
1507 &feature_scalarFlatScratchInsts,
1508 &feature_inv2piInlineImm,
14961509 &feature_vgprIndexMode,
1497 &feature_fastFmaf,
1498 &feature_scalarStores,
14991510 &feature_gcn3Encoding,
1500 &feature_apertureRegs,
1501 &feature_scalarAtomics,
1511 &feature_gfx8Insts,
1512 &feature_scalarStores,
1513 &feature_intClampInsts,
1514 &feature_localmemorysize65536,
15021515 &feature_flatGlobalInsts,
1503 &feature_fp64,
1504 &feature_flatScratchInsts,
1516 &feature_sdwaOmod,
15051517 &feature_dpp,
1506 &feature_scalarFlatScratchInsts,
15071518 &feature_gfx7Gfx8Gfx9Insts,
1508 &feature_sMemrealtime,
1509 &feature_vop3p,
1510 &feature_flatInstOffsets,
1511 &feature_sdwaScalar,
15121519 &feature_sdwaSdst,
1513 &feature_localmemorysize65536,
1514 &feature_gfx8Insts,
1515 &feature_flatAddressSpace,
1516 &feature_BitInsts16,
1517 &feature_sdwa,
1518 &feature_wavefrontsize64,
1519 &feature_intClampInsts,
1520 &feature_sdwaOmod,
1520 &feature_flatInstOffsets,
15211521 &feature_ldsbankcount32,
15221522 },
15231523};
......@@ -1525,43 +1525,43 @@ pub const cpu_gfx904 = Cpu{
15251525pub const cpu_gfx906 = Cpu{
15261526 .name = "gfx906",
15271527 .llvm_name = "gfx906",
1528 .subfeatures = &[_]*const Feature {
1528 .dependencies = &[_]*const Feature {
15291529 &feature_codeObjectV3,
15301530 &feature_dlInsts,
15311531 &feature_noXnackSupport,
15321532 &feature_dot1Insts,
15331533 &feature_dot2Insts,
15341534 &feature_fmaMixInsts,
1535 &feature_flatScratchInsts,
1536 &feature_fp64,
15351537 &feature_r128A16,
1538 &feature_sMemrealtime,
15361539 &feature_addNoCarryInsts,
1537 &feature_inv2piInlineImm,
1540 &feature_vop3p,
1541 &feature_fastFmaf,
1542 &feature_BitInsts16,
1543 &feature_wavefrontsize64,
1544 &feature_sdwa,
15381545 &feature_gfx9Insts,
1546 &feature_flatAddressSpace,
1547 &feature_apertureRegs,
1548 &feature_sdwaScalar,
15391549 &feature_ciInsts,
1550 &feature_scalarAtomics,
1551 &feature_scalarFlatScratchInsts,
1552 &feature_inv2piInlineImm,
15401553 &feature_vgprIndexMode,
1541 &feature_fastFmaf,
1542 &feature_scalarStores,
15431554 &feature_gcn3Encoding,
1544 &feature_apertureRegs,
1545 &feature_scalarAtomics,
1555 &feature_gfx8Insts,
1556 &feature_scalarStores,
1557 &feature_intClampInsts,
1558 &feature_localmemorysize65536,
15461559 &feature_flatGlobalInsts,
1547 &feature_fp64,
1548 &feature_flatScratchInsts,
1560 &feature_sdwaOmod,
15491561 &feature_dpp,
1550 &feature_scalarFlatScratchInsts,
15511562 &feature_gfx7Gfx8Gfx9Insts,
1552 &feature_sMemrealtime,
1553 &feature_vop3p,
1554 &feature_flatInstOffsets,
1555 &feature_sdwaScalar,
15561563 &feature_sdwaSdst,
1557 &feature_localmemorysize65536,
1558 &feature_gfx8Insts,
1559 &feature_flatAddressSpace,
1560 &feature_BitInsts16,
1561 &feature_sdwa,
1562 &feature_wavefrontsize64,
1563 &feature_intClampInsts,
1564 &feature_sdwaOmod,
1564 &feature_flatInstOffsets,
15651565 &feature_ldsbankcount32,
15661566 &feature_halfRate64Ops,
15671567 },
......@@ -1570,7 +1570,7 @@ pub const cpu_gfx906 = Cpu{
15701570pub const cpu_gfx908 = Cpu{
15711571 .name = "gfx908",
15721572 .llvm_name = "gfx908",
1573 .subfeatures = &[_]*const Feature {
1573 .dependencies = &[_]*const Feature {
15741574 &feature_atomicFaddInsts,
15751575 &feature_codeObjectV3,
15761576 &feature_dlInsts,
......@@ -1581,36 +1581,36 @@ pub const cpu_gfx908 = Cpu{
15811581 &feature_dot5Insts,
15821582 &feature_dot6Insts,
15831583 &feature_fmaMixInsts,
1584 &feature_flatScratchInsts,
1585 &feature_fp64,
15841586 &feature_r128A16,
1587 &feature_sMemrealtime,
15851588 &feature_addNoCarryInsts,
1586 &feature_inv2piInlineImm,
1589 &feature_vop3p,
1590 &feature_fastFmaf,
1591 &feature_BitInsts16,
1592 &feature_wavefrontsize64,
1593 &feature_sdwa,
15871594 &feature_gfx9Insts,
1595 &feature_flatAddressSpace,
1596 &feature_apertureRegs,
1597 &feature_sdwaScalar,
15881598 &feature_ciInsts,
1599 &feature_scalarAtomics,
1600 &feature_scalarFlatScratchInsts,
1601 &feature_inv2piInlineImm,
15891602 &feature_vgprIndexMode,
1590 &feature_fastFmaf,
1591 &feature_scalarStores,
15921603 &feature_gcn3Encoding,
1593 &feature_apertureRegs,
1594 &feature_scalarAtomics,
1604 &feature_gfx8Insts,
1605 &feature_scalarStores,
1606 &feature_intClampInsts,
1607 &feature_localmemorysize65536,
15951608 &feature_flatGlobalInsts,
1596 &feature_fp64,
1597 &feature_flatScratchInsts,
1609 &feature_sdwaOmod,
15981610 &feature_dpp,
1599 &feature_scalarFlatScratchInsts,
16001611 &feature_gfx7Gfx8Gfx9Insts,
1601 &feature_sMemrealtime,
1602 &feature_vop3p,
1603 &feature_flatInstOffsets,
1604 &feature_sdwaScalar,
16051612 &feature_sdwaSdst,
1606 &feature_localmemorysize65536,
1607 &feature_gfx8Insts,
1608 &feature_flatAddressSpace,
1609 &feature_BitInsts16,
1610 &feature_sdwa,
1611 &feature_wavefrontsize64,
1612 &feature_intClampInsts,
1613 &feature_sdwaOmod,
1613 &feature_flatInstOffsets,
16141614 &feature_ldsbankcount32,
16151615 &feature_maiInsts,
16161616 &feature_mfmaInlineLiteralBug,
......@@ -1623,38 +1623,38 @@ pub const cpu_gfx908 = Cpu{
16231623pub const cpu_gfx909 = Cpu{
16241624 .name = "gfx909",
16251625 .llvm_name = "gfx909",
1626 .subfeatures = &[_]*const Feature {
1626 .dependencies = &[_]*const Feature {
16271627 &feature_codeObjectV3,
1628 &feature_flatScratchInsts,
1629 &feature_fp64,
16281630 &feature_r128A16,
1631 &feature_sMemrealtime,
16291632 &feature_addNoCarryInsts,
1630 &feature_inv2piInlineImm,
1633 &feature_vop3p,
1634 &feature_fastFmaf,
1635 &feature_BitInsts16,
1636 &feature_wavefrontsize64,
1637 &feature_sdwa,
16311638 &feature_gfx9Insts,
1639 &feature_flatAddressSpace,
1640 &feature_apertureRegs,
1641 &feature_sdwaScalar,
16321642 &feature_ciInsts,
1643 &feature_scalarAtomics,
1644 &feature_scalarFlatScratchInsts,
1645 &feature_inv2piInlineImm,
16331646 &feature_vgprIndexMode,
1634 &feature_fastFmaf,
1635 &feature_scalarStores,
16361647 &feature_gcn3Encoding,
1637 &feature_apertureRegs,
1638 &feature_scalarAtomics,
1648 &feature_gfx8Insts,
1649 &feature_scalarStores,
1650 &feature_intClampInsts,
1651 &feature_localmemorysize65536,
16391652 &feature_flatGlobalInsts,
1640 &feature_fp64,
1641 &feature_flatScratchInsts,
1653 &feature_sdwaOmod,
16421654 &feature_dpp,
1643 &feature_scalarFlatScratchInsts,
16441655 &feature_gfx7Gfx8Gfx9Insts,
1645 &feature_sMemrealtime,
1646 &feature_vop3p,
1647 &feature_flatInstOffsets,
1648 &feature_sdwaScalar,
16491656 &feature_sdwaSdst,
1650 &feature_localmemorysize65536,
1651 &feature_gfx8Insts,
1652 &feature_flatAddressSpace,
1653 &feature_BitInsts16,
1654 &feature_sdwa,
1655 &feature_wavefrontsize64,
1656 &feature_intClampInsts,
1657 &feature_sdwaOmod,
1657 &feature_flatInstOffsets,
16581658 &feature_ldsbankcount32,
16591659 &feature_madMixInsts,
16601660 &feature_xnack,
......@@ -1664,38 +1664,38 @@ pub const cpu_gfx909 = Cpu{
16641664pub const cpu_hainan = Cpu{
16651665 .name = "hainan",
16661666 .llvm_name = "hainan",
1667 .subfeatures = &[_]*const Feature {
1667 .dependencies = &[_]*const Feature {
16681668 &feature_codeObjectV3,
16691669 &feature_noXnackSupport,
16701670 &feature_ldsbankcount32,
1671 &feature_noSramEccSupport,
1672 &feature_mimgR128,
1673 &feature_trigReducedRange,
1674 &feature_wavefrontsize64,
16751671 &feature_localmemorysize32768,
16761672 &feature_fp64,
1673 &feature_mimgR128,
16771674 &feature_movrel,
1675 &feature_noSramEccSupport,
1676 &feature_wavefrontsize64,
1677 &feature_trigReducedRange,
16781678 },
16791679};
16801680
16811681pub const cpu_hawaii = Cpu{
16821682 .name = "hawaii",
16831683 .llvm_name = "hawaii",
1684 .subfeatures = &[_]*const Feature {
1684 .dependencies = &[_]*const Feature {
16851685 &feature_codeObjectV3,
16861686 &feature_noXnackSupport,
16871687 &feature_fastFmaf,
16881688 &feature_ldsbankcount32,
1689 &feature_noSramEccSupport,
16901689 &feature_flatAddressSpace,
1690 &feature_fp64,
16911691 &feature_mimgR128,
1692 &feature_trigReducedRange,
16931692 &feature_gfx7Gfx8Gfx9Insts,
1694 &feature_ciInsts,
1695 &feature_wavefrontsize64,
1696 &feature_fp64,
16971693 &feature_movrel,
16981694 &feature_localmemorysize65536,
1695 &feature_ciInsts,
1696 &feature_noSramEccSupport,
1697 &feature_wavefrontsize64,
1698 &feature_trigReducedRange,
16991699 &feature_halfRate64Ops,
17001700 },
17011701};
......@@ -1703,225 +1703,225 @@ pub const cpu_hawaii = Cpu{
17031703pub const cpu_iceland = Cpu{
17041704 .name = "iceland",
17051705 .llvm_name = "iceland",
1706 .subfeatures = &[_]*const Feature {
1706 .dependencies = &[_]*const Feature {
17071707 &feature_codeObjectV3,
17081708 &feature_noXnackSupport,
17091709 &feature_ldsbankcount32,
17101710 &feature_sgprInitBug,
17111711 &feature_unpackedD16Vmem,
1712 &feature_fp64,
1713 &feature_sMemrealtime,
1714 &feature_BitInsts16,
1715 &feature_wavefrontsize64,
1716 &feature_sdwa,
1717 &feature_flatAddressSpace,
1718 &feature_sdwaMav,
17121719 &feature_mimgR128,
1713 &feature_inv2piInlineImm,
17141720 &feature_ciInsts,
1721 &feature_noSramEccSupport,
1722 &feature_inv2piInlineImm,
17151723 &feature_vgprIndexMode,
1716 &feature_scalarStores,
17171724 &feature_gcn3Encoding,
1718 &feature_fp64,
1719 &feature_dpp,
1720 &feature_trigReducedRange,
1721 &feature_gfx7Gfx8Gfx9Insts,
1722 &feature_sMemrealtime,
1725 &feature_gfx8Insts,
1726 &feature_scalarStores,
1727 &feature_intClampInsts,
17231728 &feature_movrel,
17241729 &feature_localmemorysize65536,
1725 &feature_noSramEccSupport,
1726 &feature_gfx8Insts,
1727 &feature_flatAddressSpace,
1728 &feature_BitInsts16,
1729 &feature_sdwaMav,
1730 &feature_sdwa,
17311730 &feature_sdwaOutModsVopc,
1732 &feature_wavefrontsize64,
1733 &feature_intClampInsts,
1731 &feature_dpp,
1732 &feature_gfx7Gfx8Gfx9Insts,
1733 &feature_trigReducedRange,
17341734 },
17351735};
17361736
17371737pub const cpu_kabini = Cpu{
17381738 .name = "kabini",
17391739 .llvm_name = "kabini",
1740 .subfeatures = &[_]*const Feature {
1740 .dependencies = &[_]*const Feature {
17411741 &feature_codeObjectV3,
17421742 &feature_noXnackSupport,
17431743 &feature_ldsbankcount16,
1744 &feature_noSramEccSupport,
17451744 &feature_flatAddressSpace,
1745 &feature_fp64,
17461746 &feature_mimgR128,
1747 &feature_trigReducedRange,
17481747 &feature_gfx7Gfx8Gfx9Insts,
1749 &feature_ciInsts,
1750 &feature_wavefrontsize64,
1751 &feature_fp64,
17521748 &feature_movrel,
17531749 &feature_localmemorysize65536,
1750 &feature_ciInsts,
1751 &feature_noSramEccSupport,
1752 &feature_wavefrontsize64,
1753 &feature_trigReducedRange,
17541754 },
17551755};
17561756
17571757pub const cpu_kaveri = Cpu{
17581758 .name = "kaveri",
17591759 .llvm_name = "kaveri",
1760 .subfeatures = &[_]*const Feature {
1760 .dependencies = &[_]*const Feature {
17611761 &feature_codeObjectV3,
17621762 &feature_noXnackSupport,
17631763 &feature_ldsbankcount32,
1764 &feature_noSramEccSupport,
17651764 &feature_flatAddressSpace,
1765 &feature_fp64,
17661766 &feature_mimgR128,
1767 &feature_trigReducedRange,
17681767 &feature_gfx7Gfx8Gfx9Insts,
1769 &feature_ciInsts,
1770 &feature_wavefrontsize64,
1771 &feature_fp64,
17721768 &feature_movrel,
17731769 &feature_localmemorysize65536,
1770 &feature_ciInsts,
1771 &feature_noSramEccSupport,
1772 &feature_wavefrontsize64,
1773 &feature_trigReducedRange,
17741774 },
17751775};
17761776
17771777pub const cpu_mullins = Cpu{
17781778 .name = "mullins",
17791779 .llvm_name = "mullins",
1780 .subfeatures = &[_]*const Feature {
1780 .dependencies = &[_]*const Feature {
17811781 &feature_codeObjectV3,
17821782 &feature_noXnackSupport,
17831783 &feature_ldsbankcount16,
1784 &feature_noSramEccSupport,
17851784 &feature_flatAddressSpace,
1785 &feature_fp64,
17861786 &feature_mimgR128,
1787 &feature_trigReducedRange,
17881787 &feature_gfx7Gfx8Gfx9Insts,
1789 &feature_ciInsts,
1790 &feature_wavefrontsize64,
1791 &feature_fp64,
17921788 &feature_movrel,
17931789 &feature_localmemorysize65536,
1790 &feature_ciInsts,
1791 &feature_noSramEccSupport,
1792 &feature_wavefrontsize64,
1793 &feature_trigReducedRange,
17941794 },
17951795};
17961796
17971797pub const cpu_oland = Cpu{
17981798 .name = "oland",
17991799 .llvm_name = "oland",
1800 .subfeatures = &[_]*const Feature {
1800 .dependencies = &[_]*const Feature {
18011801 &feature_codeObjectV3,
18021802 &feature_noXnackSupport,
18031803 &feature_ldsbankcount32,
1804 &feature_noSramEccSupport,
1805 &feature_mimgR128,
1806 &feature_trigReducedRange,
1807 &feature_wavefrontsize64,
18081804 &feature_localmemorysize32768,
18091805 &feature_fp64,
1806 &feature_mimgR128,
18101807 &feature_movrel,
1808 &feature_noSramEccSupport,
1809 &feature_wavefrontsize64,
1810 &feature_trigReducedRange,
18111811 },
18121812};
18131813
18141814pub const cpu_pitcairn = Cpu{
18151815 .name = "pitcairn",
18161816 .llvm_name = "pitcairn",
1817 .subfeatures = &[_]*const Feature {
1817 .dependencies = &[_]*const Feature {
18181818 &feature_codeObjectV3,
18191819 &feature_noXnackSupport,
18201820 &feature_ldsbankcount32,
1821 &feature_noSramEccSupport,
1822 &feature_mimgR128,
1823 &feature_trigReducedRange,
1824 &feature_wavefrontsize64,
18251821 &feature_localmemorysize32768,
18261822 &feature_fp64,
1823 &feature_mimgR128,
18271824 &feature_movrel,
1825 &feature_noSramEccSupport,
1826 &feature_wavefrontsize64,
1827 &feature_trigReducedRange,
18281828 },
18291829};
18301830
18311831pub const cpu_polaris10 = Cpu{
18321832 .name = "polaris10",
18331833 .llvm_name = "polaris10",
1834 .subfeatures = &[_]*const Feature {
1834 .dependencies = &[_]*const Feature {
18351835 &feature_codeObjectV3,
18361836 &feature_noXnackSupport,
18371837 &feature_ldsbankcount32,
18381838 &feature_unpackedD16Vmem,
1839 &feature_fp64,
1840 &feature_sMemrealtime,
1841 &feature_BitInsts16,
1842 &feature_wavefrontsize64,
1843 &feature_sdwa,
1844 &feature_flatAddressSpace,
1845 &feature_sdwaMav,
18391846 &feature_mimgR128,
1840 &feature_inv2piInlineImm,
18411847 &feature_ciInsts,
1848 &feature_noSramEccSupport,
1849 &feature_inv2piInlineImm,
18421850 &feature_vgprIndexMode,
1843 &feature_scalarStores,
18441851 &feature_gcn3Encoding,
1845 &feature_fp64,
1846 &feature_dpp,
1847 &feature_trigReducedRange,
1848 &feature_gfx7Gfx8Gfx9Insts,
1849 &feature_sMemrealtime,
1852 &feature_gfx8Insts,
1853 &feature_scalarStores,
1854 &feature_intClampInsts,
18501855 &feature_movrel,
18511856 &feature_localmemorysize65536,
1852 &feature_noSramEccSupport,
1853 &feature_gfx8Insts,
1854 &feature_flatAddressSpace,
1855 &feature_BitInsts16,
1856 &feature_sdwaMav,
1857 &feature_sdwa,
18581857 &feature_sdwaOutModsVopc,
1859 &feature_wavefrontsize64,
1860 &feature_intClampInsts,
1858 &feature_dpp,
1859 &feature_gfx7Gfx8Gfx9Insts,
1860 &feature_trigReducedRange,
18611861 },
18621862};
18631863
18641864pub const cpu_polaris11 = Cpu{
18651865 .name = "polaris11",
18661866 .llvm_name = "polaris11",
1867 .subfeatures = &[_]*const Feature {
1867 .dependencies = &[_]*const Feature {
18681868 &feature_codeObjectV3,
18691869 &feature_noXnackSupport,
18701870 &feature_ldsbankcount32,
18711871 &feature_unpackedD16Vmem,
1872 &feature_fp64,
1873 &feature_sMemrealtime,
1874 &feature_BitInsts16,
1875 &feature_wavefrontsize64,
1876 &feature_sdwa,
1877 &feature_flatAddressSpace,
1878 &feature_sdwaMav,
18721879 &feature_mimgR128,
1873 &feature_inv2piInlineImm,
18741880 &feature_ciInsts,
1881 &feature_noSramEccSupport,
1882 &feature_inv2piInlineImm,
18751883 &feature_vgprIndexMode,
1876 &feature_scalarStores,
18771884 &feature_gcn3Encoding,
1878 &feature_fp64,
1879 &feature_dpp,
1880 &feature_trigReducedRange,
1881 &feature_gfx7Gfx8Gfx9Insts,
1882 &feature_sMemrealtime,
1885 &feature_gfx8Insts,
1886 &feature_scalarStores,
1887 &feature_intClampInsts,
18831888 &feature_movrel,
18841889 &feature_localmemorysize65536,
1885 &feature_noSramEccSupport,
1886 &feature_gfx8Insts,
1887 &feature_flatAddressSpace,
1888 &feature_BitInsts16,
1889 &feature_sdwaMav,
1890 &feature_sdwa,
18911890 &feature_sdwaOutModsVopc,
1892 &feature_wavefrontsize64,
1893 &feature_intClampInsts,
1891 &feature_dpp,
1892 &feature_gfx7Gfx8Gfx9Insts,
1893 &feature_trigReducedRange,
18941894 },
18951895};
18961896
18971897pub const cpu_stoney = Cpu{
18981898 .name = "stoney",
18991899 .llvm_name = "stoney",
1900 .subfeatures = &[_]*const Feature {
1900 .dependencies = &[_]*const Feature {
19011901 &feature_codeObjectV3,
19021902 &feature_ldsbankcount16,
1903 &feature_fp64,
1904 &feature_sMemrealtime,
1905 &feature_BitInsts16,
1906 &feature_wavefrontsize64,
1907 &feature_sdwa,
1908 &feature_flatAddressSpace,
1909 &feature_sdwaMav,
19031910 &feature_mimgR128,
1904 &feature_inv2piInlineImm,
19051911 &feature_ciInsts,
1912 &feature_noSramEccSupport,
1913 &feature_inv2piInlineImm,
19061914 &feature_vgprIndexMode,
1907 &feature_scalarStores,
19081915 &feature_gcn3Encoding,
1909 &feature_fp64,
1910 &feature_dpp,
1911 &feature_trigReducedRange,
1912 &feature_gfx7Gfx8Gfx9Insts,
1913 &feature_sMemrealtime,
1916 &feature_gfx8Insts,
1917 &feature_scalarStores,
1918 &feature_intClampInsts,
19141919 &feature_movrel,
19151920 &feature_localmemorysize65536,
1916 &feature_noSramEccSupport,
1917 &feature_gfx8Insts,
1918 &feature_flatAddressSpace,
1919 &feature_BitInsts16,
1920 &feature_sdwaMav,
1921 &feature_sdwa,
19221921 &feature_sdwaOutModsVopc,
1923 &feature_wavefrontsize64,
1924 &feature_intClampInsts,
1922 &feature_dpp,
1923 &feature_gfx7Gfx8Gfx9Insts,
1924 &feature_trigReducedRange,
19251925 &feature_xnack,
19261926 },
19271927};
......@@ -1929,18 +1929,18 @@ pub const cpu_stoney = Cpu{
19291929pub const cpu_tahiti = Cpu{
19301930 .name = "tahiti",
19311931 .llvm_name = "tahiti",
1932 .subfeatures = &[_]*const Feature {
1932 .dependencies = &[_]*const Feature {
19331933 &feature_codeObjectV3,
19341934 &feature_noXnackSupport,
19351935 &feature_fastFmaf,
19361936 &feature_ldsbankcount32,
1937 &feature_noSramEccSupport,
1938 &feature_mimgR128,
1939 &feature_trigReducedRange,
1940 &feature_wavefrontsize64,
19411937 &feature_localmemorysize32768,
19421938 &feature_fp64,
1939 &feature_mimgR128,
19431940 &feature_movrel,
1941 &feature_noSramEccSupport,
1942 &feature_wavefrontsize64,
1943 &feature_trigReducedRange,
19441944 &feature_halfRate64Ops,
19451945 },
19461946};
......@@ -1948,51 +1948,51 @@ pub const cpu_tahiti = Cpu{
19481948pub const cpu_tonga = Cpu{
19491949 .name = "tonga",
19501950 .llvm_name = "tonga",
1951 .subfeatures = &[_]*const Feature {
1951 .dependencies = &[_]*const Feature {
19521952 &feature_codeObjectV3,
19531953 &feature_noXnackSupport,
19541954 &feature_ldsbankcount32,
19551955 &feature_sgprInitBug,
19561956 &feature_unpackedD16Vmem,
1957 &feature_fp64,
1958 &feature_sMemrealtime,
1959 &feature_BitInsts16,
1960 &feature_wavefrontsize64,
1961 &feature_sdwa,
1962 &feature_flatAddressSpace,
1963 &feature_sdwaMav,
19571964 &feature_mimgR128,
1958 &feature_inv2piInlineImm,
19591965 &feature_ciInsts,
1966 &feature_noSramEccSupport,
1967 &feature_inv2piInlineImm,
19601968 &feature_vgprIndexMode,
1961 &feature_scalarStores,
19621969 &feature_gcn3Encoding,
1963 &feature_fp64,
1964 &feature_dpp,
1965 &feature_trigReducedRange,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_sMemrealtime,
1970 &feature_gfx8Insts,
1971 &feature_scalarStores,
1972 &feature_intClampInsts,
19681973 &feature_movrel,
19691974 &feature_localmemorysize65536,
1970 &feature_noSramEccSupport,
1971 &feature_gfx8Insts,
1972 &feature_flatAddressSpace,
1973 &feature_BitInsts16,
1974 &feature_sdwaMav,
1975 &feature_sdwa,
19761975 &feature_sdwaOutModsVopc,
1977 &feature_wavefrontsize64,
1978 &feature_intClampInsts,
1976 &feature_dpp,
1977 &feature_gfx7Gfx8Gfx9Insts,
1978 &feature_trigReducedRange,
19791979 },
19801980};
19811981
19821982pub const cpu_verde = Cpu{
19831983 .name = "verde",
19841984 .llvm_name = "verde",
1985 .subfeatures = &[_]*const Feature {
1985 .dependencies = &[_]*const Feature {
19861986 &feature_codeObjectV3,
19871987 &feature_noXnackSupport,
19881988 &feature_ldsbankcount32,
1989 &feature_noSramEccSupport,
1990 &feature_mimgR128,
1991 &feature_trigReducedRange,
1992 &feature_wavefrontsize64,
19931989 &feature_localmemorysize32768,
19941990 &feature_fp64,
1991 &feature_mimgR128,
19951992 &feature_movrel,
1993 &feature_noSramEccSupport,
1994 &feature_wavefrontsize64,
1995 &feature_trigReducedRange,
19961996 },
19971997};
19981998
lib/std/target/arm.zig+510-510
......@@ -4,146 +4,146 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_msecext8 = Feature{
55 .name = "8msecext",
66 .description = "Enable support for ARMv8-M Security Extensions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_aclass = Feature{
1212 .name = "aclass",
1313 .description = "Is application profile ('A' series)",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_aes = Feature{
1919 .name = "aes",
2020 .description = "Enable AES support",
21 .subfeatures = &[_]*const Feature {
22 &feature_fpregs,
21 .dependencies = &[_]*const Feature {
2322 &feature_d32,
23 &feature_fpregs,
2424 },
2525};
2626
2727pub const feature_acquireRelease = Feature{
2828 .name = "acquire-release",
2929 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
30 .subfeatures = &[_]*const Feature {
30 .dependencies = &[_]*const Feature {
3131 },
3232};
3333
3434pub const feature_avoidMovsShop = Feature{
3535 .name = "avoid-movs-shop",
3636 .description = "Avoid movs instructions with shifter operand",
37 .subfeatures = &[_]*const Feature {
37 .dependencies = &[_]*const Feature {
3838 },
3939};
4040
4141pub const feature_avoidPartialCpsr = Feature{
4242 .name = "avoid-partial-cpsr",
4343 .description = "Avoid CPSR partial update for OOO execution",
44 .subfeatures = &[_]*const Feature {
44 .dependencies = &[_]*const Feature {
4545 },
4646};
4747
4848pub const feature_crc = Feature{
4949 .name = "crc",
5050 .description = "Enable support for CRC instructions",
51 .subfeatures = &[_]*const Feature {
51 .dependencies = &[_]*const Feature {
5252 },
5353};
5454
5555pub const feature_cheapPredicableCpsr = Feature{
5656 .name = "cheap-predicable-cpsr",
5757 .description = "Disable +1 predication cost for instructions updating CPSR",
58 .subfeatures = &[_]*const Feature {
58 .dependencies = &[_]*const Feature {
5959 },
6060};
6161
6262pub const feature_vldnAlign = Feature{
6363 .name = "vldn-align",
6464 .description = "Check for VLDn unaligned access",
65 .subfeatures = &[_]*const Feature {
65 .dependencies = &[_]*const Feature {
6666 },
6767};
6868
6969pub const feature_crypto = Feature{
7070 .name = "crypto",
7171 .description = "Enable support for Cryptography extensions",
72 .subfeatures = &[_]*const Feature {
73 &feature_fpregs,
72 .dependencies = &[_]*const Feature {
7473 &feature_d32,
74 &feature_fpregs,
7575 },
7676};
7777
7878pub const feature_d32 = Feature{
7979 .name = "d32",
8080 .description = "Extend FP to 32 double registers",
81 .subfeatures = &[_]*const Feature {
81 .dependencies = &[_]*const Feature {
8282 },
8383};
8484
8585pub const feature_db = Feature{
8686 .name = "db",
8787 .description = "Has data barrier (dmb/dsb) instructions",
88 .subfeatures = &[_]*const Feature {
88 .dependencies = &[_]*const Feature {
8989 },
9090};
9191
9292pub const feature_dfb = Feature{
9393 .name = "dfb",
9494 .description = "Has full data barrier (dfb) instruction",
95 .subfeatures = &[_]*const Feature {
95 .dependencies = &[_]*const Feature {
9696 },
9797};
9898
9999pub const feature_dsp = Feature{
100100 .name = "dsp",
101101 .description = "Supports DSP instructions in ARM and/or Thumb2",
102 .subfeatures = &[_]*const Feature {
102 .dependencies = &[_]*const Feature {
103103 },
104104};
105105
106106pub const feature_dontWidenVmovs = Feature{
107107 .name = "dont-widen-vmovs",
108108 .description = "Don't widen VMOVS to VMOVD",
109 .subfeatures = &[_]*const Feature {
109 .dependencies = &[_]*const Feature {
110110 },
111111};
112112
113113pub const feature_dotprod = Feature{
114114 .name = "dotprod",
115115 .description = "Enable support for dot product instructions",
116 .subfeatures = &[_]*const Feature {
117 &feature_fpregs,
116 .dependencies = &[_]*const Feature {
118117 &feature_d32,
118 &feature_fpregs,
119119 },
120120};
121121
122122pub const feature_executeOnly = Feature{
123123 .name = "execute-only",
124124 .description = "Enable the generation of execute only code.",
125 .subfeatures = &[_]*const Feature {
125 .dependencies = &[_]*const Feature {
126126 },
127127};
128128
129129pub const feature_expandFpMlx = Feature{
130130 .name = "expand-fp-mlx",
131131 .description = "Expand VFP/NEON MLA/MLS instructions",
132 .subfeatures = &[_]*const Feature {
132 .dependencies = &[_]*const Feature {
133133 },
134134};
135135
136136pub const feature_fp16 = Feature{
137137 .name = "fp16",
138138 .description = "Enable half-precision floating point",
139 .subfeatures = &[_]*const Feature {
139 .dependencies = &[_]*const Feature {
140140 },
141141};
142142
143143pub const feature_fp16fml = Feature{
144144 .name = "fp16fml",
145145 .description = "Enable full half-precision floating point fml instructions",
146 .subfeatures = &[_]*const Feature {
146 .dependencies = &[_]*const Feature {
147147 &feature_fp16,
148148 &feature_fpregs,
149149 },
......@@ -152,7 +152,7 @@ pub const feature_fp16fml = Feature{
152152pub const feature_fp64 = Feature{
153153 .name = "fp64",
154154 .description = "Floating point unit supports double precision",
155 .subfeatures = &[_]*const Feature {
155 .dependencies = &[_]*const Feature {
156156 &feature_fpregs,
157157 },
158158};
......@@ -160,24 +160,24 @@ pub const feature_fp64 = Feature{
160160pub const feature_fpao = Feature{
161161 .name = "fpao",
162162 .description = "Enable fast computation of positive address offsets",
163 .subfeatures = &[_]*const Feature {
163 .dependencies = &[_]*const Feature {
164164 },
165165};
166166
167167pub const feature_fpArmv8 = Feature{
168168 .name = "fp-armv8",
169169 .description = "Enable ARMv8 FP",
170 .subfeatures = &[_]*const Feature {
171 &feature_fp16,
170 .dependencies = &[_]*const Feature {
172171 &feature_fpregs,
173172 &feature_d32,
173 &feature_fp16,
174174 },
175175};
176176
177177pub const feature_fpArmv8d16 = Feature{
178178 .name = "fp-armv8d16",
179179 .description = "Enable ARMv8 FP with only 16 d-registers",
180 .subfeatures = &[_]*const Feature {
180 .dependencies = &[_]*const Feature {
181181 &feature_fp16,
182182 &feature_fpregs,
183183 },
......@@ -186,7 +186,7 @@ pub const feature_fpArmv8d16 = Feature{
186186pub const feature_fpArmv8d16sp = Feature{
187187 .name = "fp-armv8d16sp",
188188 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
189 .subfeatures = &[_]*const Feature {
189 .dependencies = &[_]*const Feature {
190190 &feature_fp16,
191191 &feature_fpregs,
192192 },
......@@ -195,24 +195,24 @@ pub const feature_fpArmv8d16sp = Feature{
195195pub const feature_fpArmv8sp = Feature{
196196 .name = "fp-armv8sp",
197197 .description = "Enable ARMv8 FP with no double precision",
198 .subfeatures = &[_]*const Feature {
199 &feature_fp16,
198 .dependencies = &[_]*const Feature {
200199 &feature_fpregs,
201200 &feature_d32,
201 &feature_fp16,
202202 },
203203};
204204
205205pub const feature_fpregs = Feature{
206206 .name = "fpregs",
207207 .description = "Enable FP registers",
208 .subfeatures = &[_]*const Feature {
208 .dependencies = &[_]*const Feature {
209209 },
210210};
211211
212212pub const feature_fpregs16 = Feature{
213213 .name = "fpregs16",
214214 .description = "Enable 16-bit FP registers",
215 .subfeatures = &[_]*const Feature {
215 .dependencies = &[_]*const Feature {
216216 &feature_fpregs,
217217 },
218218};
......@@ -220,7 +220,7 @@ pub const feature_fpregs16 = Feature{
220220pub const feature_fpregs64 = Feature{
221221 .name = "fpregs64",
222222 .description = "Enable 64-bit FP registers",
223 .subfeatures = &[_]*const Feature {
223 .dependencies = &[_]*const Feature {
224224 &feature_fpregs,
225225 },
226226};
......@@ -228,314 +228,314 @@ pub const feature_fpregs64 = Feature{
228228pub const feature_fullfp16 = Feature{
229229 .name = "fullfp16",
230230 .description = "Enable full half-precision floating point",
231 .subfeatures = &[_]*const Feature {
232 &feature_fp16,
231 .dependencies = &[_]*const Feature {
233232 &feature_fpregs,
233 &feature_fp16,
234234 },
235235};
236236
237237pub const feature_fuseAes = Feature{
238238 .name = "fuse-aes",
239239 .description = "CPU fuses AES crypto operations",
240 .subfeatures = &[_]*const Feature {
240 .dependencies = &[_]*const Feature {
241241 },
242242};
243243
244244pub const feature_fuseLiterals = Feature{
245245 .name = "fuse-literals",
246246 .description = "CPU fuses literal generation operations",
247 .subfeatures = &[_]*const Feature {
247 .dependencies = &[_]*const Feature {
248248 },
249249};
250250
251251pub const feature_hwdivArm = Feature{
252252 .name = "hwdiv-arm",
253253 .description = "Enable divide instructions in ARM mode",
254 .subfeatures = &[_]*const Feature {
254 .dependencies = &[_]*const Feature {
255255 },
256256};
257257
258258pub const feature_hwdiv = Feature{
259259 .name = "hwdiv",
260260 .description = "Enable divide instructions in Thumb",
261 .subfeatures = &[_]*const Feature {
261 .dependencies = &[_]*const Feature {
262262 },
263263};
264264
265265pub const feature_noBranchPredictor = Feature{
266266 .name = "no-branch-predictor",
267267 .description = "Has no branch predictor",
268 .subfeatures = &[_]*const Feature {
268 .dependencies = &[_]*const Feature {
269269 },
270270};
271271
272272pub const feature_retAddrStack = Feature{
273273 .name = "ret-addr-stack",
274274 .description = "Has return address stack",
275 .subfeatures = &[_]*const Feature {
275 .dependencies = &[_]*const Feature {
276276 },
277277};
278278
279279pub const feature_slowfpvmlx = Feature{
280280 .name = "slowfpvmlx",
281281 .description = "Disable VFP / NEON MAC instructions",
282 .subfeatures = &[_]*const Feature {
282 .dependencies = &[_]*const Feature {
283283 },
284284};
285285
286286pub const feature_vmlxHazards = Feature{
287287 .name = "vmlx-hazards",
288288 .description = "Has VMLx hazards",
289 .subfeatures = &[_]*const Feature {
289 .dependencies = &[_]*const Feature {
290290 },
291291};
292292
293293pub const feature_lob = Feature{
294294 .name = "lob",
295295 .description = "Enable Low Overhead Branch extensions",
296 .subfeatures = &[_]*const Feature {
296 .dependencies = &[_]*const Feature {
297297 },
298298};
299299
300300pub const feature_longCalls = Feature{
301301 .name = "long-calls",
302302 .description = "Generate calls via indirect call instructions",
303 .subfeatures = &[_]*const Feature {
303 .dependencies = &[_]*const Feature {
304304 },
305305};
306306
307307pub const feature_mclass = Feature{
308308 .name = "mclass",
309309 .description = "Is microcontroller profile ('M' series)",
310 .subfeatures = &[_]*const Feature {
310 .dependencies = &[_]*const Feature {
311311 },
312312};
313313
314314pub const feature_mp = Feature{
315315 .name = "mp",
316316 .description = "Supports Multiprocessing extension",
317 .subfeatures = &[_]*const Feature {
317 .dependencies = &[_]*const Feature {
318318 },
319319};
320320
321321pub const feature_mve1beat = Feature{
322322 .name = "mve1beat",
323323 .description = "Model MVE instructions as a 1 beat per tick architecture",
324 .subfeatures = &[_]*const Feature {
324 .dependencies = &[_]*const Feature {
325325 },
326326};
327327
328328pub const feature_mve2beat = Feature{
329329 .name = "mve2beat",
330330 .description = "Model MVE instructions as a 2 beats per tick architecture",
331 .subfeatures = &[_]*const Feature {
331 .dependencies = &[_]*const Feature {
332332 },
333333};
334334
335335pub const feature_mve4beat = Feature{
336336 .name = "mve4beat",
337337 .description = "Model MVE instructions as a 4 beats per tick architecture",
338 .subfeatures = &[_]*const Feature {
338 .dependencies = &[_]*const Feature {
339339 },
340340};
341341
342342pub const feature_muxedUnits = Feature{
343343 .name = "muxed-units",
344344 .description = "Has muxed AGU and NEON/FPU",
345 .subfeatures = &[_]*const Feature {
345 .dependencies = &[_]*const Feature {
346346 },
347347};
348348
349349pub const feature_neon = Feature{
350350 .name = "neon",
351351 .description = "Enable NEON instructions",
352 .subfeatures = &[_]*const Feature {
353 &feature_fpregs,
352 .dependencies = &[_]*const Feature {
354353 &feature_d32,
354 &feature_fpregs,
355355 },
356356};
357357
358358pub const feature_neonfp = Feature{
359359 .name = "neonfp",
360360 .description = "Use NEON for single precision FP",
361 .subfeatures = &[_]*const Feature {
361 .dependencies = &[_]*const Feature {
362362 },
363363};
364364
365365pub const feature_neonFpmovs = Feature{
366366 .name = "neon-fpmovs",
367367 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
368 .subfeatures = &[_]*const Feature {
368 .dependencies = &[_]*const Feature {
369369 },
370370};
371371
372372pub const feature_naclTrap = Feature{
373373 .name = "nacl-trap",
374374 .description = "NaCl trap",
375 .subfeatures = &[_]*const Feature {
375 .dependencies = &[_]*const Feature {
376376 },
377377};
378378
379379pub const feature_noarm = Feature{
380380 .name = "noarm",
381381 .description = "Does not support ARM mode execution",
382 .subfeatures = &[_]*const Feature {
382 .dependencies = &[_]*const Feature {
383383 },
384384};
385385
386386pub const feature_noMovt = Feature{
387387 .name = "no-movt",
388388 .description = "Don't use movt/movw pairs for 32-bit imms",
389 .subfeatures = &[_]*const Feature {
389 .dependencies = &[_]*const Feature {
390390 },
391391};
392392
393393pub const feature_noNegImmediates = Feature{
394394 .name = "no-neg-immediates",
395395 .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 {
397397 },
398398};
399399
400400pub const feature_disablePostraScheduler = Feature{
401401 .name = "disable-postra-scheduler",
402402 .description = "Don't schedule again after register allocation",
403 .subfeatures = &[_]*const Feature {
403 .dependencies = &[_]*const Feature {
404404 },
405405};
406406
407407pub const feature_nonpipelinedVfp = Feature{
408408 .name = "nonpipelined-vfp",
409409 .description = "VFP instructions are not pipelined",
410 .subfeatures = &[_]*const Feature {
410 .dependencies = &[_]*const Feature {
411411 },
412412};
413413
414414pub const feature_perfmon = Feature{
415415 .name = "perfmon",
416416 .description = "Enable support for Performance Monitor extensions",
417 .subfeatures = &[_]*const Feature {
417 .dependencies = &[_]*const Feature {
418418 },
419419};
420420
421421pub const feature_bit32 = Feature{
422422 .name = "32bit",
423423 .description = "Prefer 32-bit Thumb instrs",
424 .subfeatures = &[_]*const Feature {
424 .dependencies = &[_]*const Feature {
425425 },
426426};
427427
428428pub const feature_preferIshst = Feature{
429429 .name = "prefer-ishst",
430430 .description = "Prefer ISHST barriers",
431 .subfeatures = &[_]*const Feature {
431 .dependencies = &[_]*const Feature {
432432 },
433433};
434434
435435pub const feature_loopAlign = Feature{
436436 .name = "loop-align",
437437 .description = "Prefer 32-bit alignment for loops",
438 .subfeatures = &[_]*const Feature {
438 .dependencies = &[_]*const Feature {
439439 },
440440};
441441
442442pub const feature_preferVmovsr = Feature{
443443 .name = "prefer-vmovsr",
444444 .description = "Prefer VMOVSR",
445 .subfeatures = &[_]*const Feature {
445 .dependencies = &[_]*const Feature {
446446 },
447447};
448448
449449pub const feature_profUnpr = Feature{
450450 .name = "prof-unpr",
451451 .description = "Is profitable to unpredicate",
452 .subfeatures = &[_]*const Feature {
452 .dependencies = &[_]*const Feature {
453453 },
454454};
455455
456456pub const feature_ras = Feature{
457457 .name = "ras",
458458 .description = "Enable Reliability, Availability and Serviceability extensions",
459 .subfeatures = &[_]*const Feature {
459 .dependencies = &[_]*const Feature {
460460 },
461461};
462462
463463pub const feature_rclass = Feature{
464464 .name = "rclass",
465465 .description = "Is realtime profile ('R' series)",
466 .subfeatures = &[_]*const Feature {
466 .dependencies = &[_]*const Feature {
467467 },
468468};
469469
470470pub const feature_readTpHard = Feature{
471471 .name = "read-tp-hard",
472472 .description = "Reading thread pointer from register",
473 .subfeatures = &[_]*const Feature {
473 .dependencies = &[_]*const Feature {
474474 },
475475};
476476
477477pub const feature_reserveR9 = Feature{
478478 .name = "reserve-r9",
479479 .description = "Reserve R9, making it unavailable as GPR",
480 .subfeatures = &[_]*const Feature {
480 .dependencies = &[_]*const Feature {
481481 },
482482};
483483
484484pub const feature_sb = Feature{
485485 .name = "sb",
486486 .description = "Enable v8.5a Speculation Barrier",
487 .subfeatures = &[_]*const Feature {
487 .dependencies = &[_]*const Feature {
488488 },
489489};
490490
491491pub const feature_sha2 = Feature{
492492 .name = "sha2",
493493 .description = "Enable SHA1 and SHA256 support",
494 .subfeatures = &[_]*const Feature {
495 &feature_fpregs,
494 .dependencies = &[_]*const Feature {
496495 &feature_d32,
496 &feature_fpregs,
497497 },
498498};
499499
500500pub const feature_slowFpBrcc = Feature{
501501 .name = "slow-fp-brcc",
502502 .description = "FP compare + branch is slow",
503 .subfeatures = &[_]*const Feature {
503 .dependencies = &[_]*const Feature {
504504 },
505505};
506506
507507pub const feature_slowLoadDSubreg = Feature{
508508 .name = "slow-load-D-subreg",
509509 .description = "Loading into D subregs is slow",
510 .subfeatures = &[_]*const Feature {
510 .dependencies = &[_]*const Feature {
511511 },
512512};
513513
514514pub const feature_slowOddReg = Feature{
515515 .name = "slow-odd-reg",
516516 .description = "VLDM/VSTM starting with an odd register is slow",
517 .subfeatures = &[_]*const Feature {
517 .dependencies = &[_]*const Feature {
518518 },
519519};
520520
521521pub const feature_slowVdup32 = Feature{
522522 .name = "slow-vdup32",
523523 .description = "Has slow VDUP32 - prefer VMOV",
524 .subfeatures = &[_]*const Feature {
524 .dependencies = &[_]*const Feature {
525525 },
526526};
527527
528528pub const feature_slowVgetlni32 = Feature{
529529 .name = "slow-vgetlni32",
530530 .description = "Has slow VGETLNi32 - prefer VMOV",
531 .subfeatures = &[_]*const Feature {
531 .dependencies = &[_]*const Feature {
532532 },
533533};
534534
535535pub const feature_splatVfpNeon = Feature{
536536 .name = "splat-vfp-neon",
537537 .description = "Splat register from VFP to NEON",
538 .subfeatures = &[_]*const Feature {
538 .dependencies = &[_]*const Feature {
539539 &feature_dontWidenVmovs,
540540 },
541541};
......@@ -543,56 +543,56 @@ pub const feature_splatVfpNeon = Feature{
543543pub const feature_strictAlign = Feature{
544544 .name = "strict-align",
545545 .description = "Disallow all unaligned memory access",
546 .subfeatures = &[_]*const Feature {
546 .dependencies = &[_]*const Feature {
547547 },
548548};
549549
550550pub const feature_thumb2 = Feature{
551551 .name = "thumb2",
552552 .description = "Enable Thumb2 instructions",
553 .subfeatures = &[_]*const Feature {
553 .dependencies = &[_]*const Feature {
554554 },
555555};
556556
557557pub const feature_trustzone = Feature{
558558 .name = "trustzone",
559559 .description = "Enable support for TrustZone security extensions",
560 .subfeatures = &[_]*const Feature {
560 .dependencies = &[_]*const Feature {
561561 },
562562};
563563
564564pub const feature_useAa = Feature{
565565 .name = "use-aa",
566566 .description = "Use alias analysis during codegen",
567 .subfeatures = &[_]*const Feature {
567 .dependencies = &[_]*const Feature {
568568 },
569569};
570570
571571pub const feature_useMisched = Feature{
572572 .name = "use-misched",
573573 .description = "Use the MachineScheduler",
574 .subfeatures = &[_]*const Feature {
574 .dependencies = &[_]*const Feature {
575575 },
576576};
577577
578578pub const feature_wideStrideVfp = Feature{
579579 .name = "wide-stride-vfp",
580580 .description = "Use a wide stride when allocating VFP registers",
581 .subfeatures = &[_]*const Feature {
581 .dependencies = &[_]*const Feature {
582582 },
583583};
584584
585585pub const feature_v7clrex = Feature{
586586 .name = "v7clrex",
587587 .description = "Has v7 clrex instruction",
588 .subfeatures = &[_]*const Feature {
588 .dependencies = &[_]*const Feature {
589589 },
590590};
591591
592592pub const feature_vfp2 = Feature{
593593 .name = "vfp2",
594594 .description = "Enable VFP2 instructions",
595 .subfeatures = &[_]*const Feature {
595 .dependencies = &[_]*const Feature {
596596 &feature_fpregs,
597597 },
598598};
......@@ -600,7 +600,7 @@ pub const feature_vfp2 = Feature{
600600pub const feature_vfp2sp = Feature{
601601 .name = "vfp2sp",
602602 .description = "Enable VFP2 instructions with no double precision",
603 .subfeatures = &[_]*const Feature {
603 .dependencies = &[_]*const Feature {
604604 &feature_fpregs,
605605 },
606606};
......@@ -608,16 +608,16 @@ pub const feature_vfp2sp = Feature{
608608pub const feature_vfp3 = Feature{
609609 .name = "vfp3",
610610 .description = "Enable VFP3 instructions",
611 .subfeatures = &[_]*const Feature {
612 &feature_fpregs,
611 .dependencies = &[_]*const Feature {
613612 &feature_d32,
613 &feature_fpregs,
614614 },
615615};
616616
617617pub const feature_vfp3d16 = Feature{
618618 .name = "vfp3d16",
619619 .description = "Enable VFP3 instructions with only 16 d-registers",
620 .subfeatures = &[_]*const Feature {
620 .dependencies = &[_]*const Feature {
621621 &feature_fpregs,
622622 },
623623};
......@@ -625,7 +625,7 @@ pub const feature_vfp3d16 = Feature{
625625pub const feature_vfp3d16sp = Feature{
626626 .name = "vfp3d16sp",
627627 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
628 .subfeatures = &[_]*const Feature {
628 .dependencies = &[_]*const Feature {
629629 &feature_fpregs,
630630 },
631631};
......@@ -633,61 +633,61 @@ pub const feature_vfp3d16sp = Feature{
633633pub const feature_vfp3sp = Feature{
634634 .name = "vfp3sp",
635635 .description = "Enable VFP3 instructions with no double precision",
636 .subfeatures = &[_]*const Feature {
637 &feature_fpregs,
636 .dependencies = &[_]*const Feature {
638637 &feature_d32,
638 &feature_fpregs,
639639 },
640640};
641641
642642pub const feature_vfp4 = Feature{
643643 .name = "vfp4",
644644 .description = "Enable VFP4 instructions",
645 .subfeatures = &[_]*const Feature {
646 &feature_fp16,
645 .dependencies = &[_]*const Feature {
647646 &feature_fpregs,
648647 &feature_d32,
648 &feature_fp16,
649649 },
650650};
651651
652652pub const feature_vfp4d16 = Feature{
653653 .name = "vfp4d16",
654654 .description = "Enable VFP4 instructions with only 16 d-registers",
655 .subfeatures = &[_]*const Feature {
656 &feature_fp16,
655 .dependencies = &[_]*const Feature {
657656 &feature_fpregs,
657 &feature_fp16,
658658 },
659659};
660660
661661pub const feature_vfp4d16sp = Feature{
662662 .name = "vfp4d16sp",
663663 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
664 .subfeatures = &[_]*const Feature {
665 &feature_fp16,
664 .dependencies = &[_]*const Feature {
666665 &feature_fpregs,
666 &feature_fp16,
667667 },
668668};
669669
670670pub const feature_vfp4sp = Feature{
671671 .name = "vfp4sp",
672672 .description = "Enable VFP4 instructions with no double precision",
673 .subfeatures = &[_]*const Feature {
674 &feature_fp16,
673 .dependencies = &[_]*const Feature {
675674 &feature_fpregs,
676675 &feature_d32,
676 &feature_fp16,
677677 },
678678};
679679
680680pub const feature_vmlxForwarding = Feature{
681681 .name = "vmlx-forwarding",
682682 .description = "Has multiplier accumulator forwarding",
683 .subfeatures = &[_]*const Feature {
683 .dependencies = &[_]*const Feature {
684684 },
685685};
686686
687687pub const feature_virtualization = Feature{
688688 .name = "virtualization",
689689 .description = "Supports Virtualization extension",
690 .subfeatures = &[_]*const Feature {
690 .dependencies = &[_]*const Feature {
691691 &feature_hwdiv,
692692 &feature_hwdivArm,
693693 },
......@@ -696,7 +696,7 @@ pub const feature_virtualization = Feature{
696696pub const feature_zcz = Feature{
697697 .name = "zcz",
698698 .description = "Has zero-cycle zeroing instructions",
699 .subfeatures = &[_]*const Feature {
699 .dependencies = &[_]*const Feature {
700700 },
701701};
702702
......@@ -799,42 +799,42 @@ pub const features = &[_]*const Feature {
799799pub const cpu_arm1020e = Cpu{
800800 .name = "arm1020e",
801801 .llvm_name = "arm1020e",
802 .subfeatures = &[_]*const Feature {
802 .dependencies = &[_]*const Feature {
803803 },
804804};
805805
806806pub const cpu_arm1020t = Cpu{
807807 .name = "arm1020t",
808808 .llvm_name = "arm1020t",
809 .subfeatures = &[_]*const Feature {
809 .dependencies = &[_]*const Feature {
810810 },
811811};
812812
813813pub const cpu_arm1022e = Cpu{
814814 .name = "arm1022e",
815815 .llvm_name = "arm1022e",
816 .subfeatures = &[_]*const Feature {
816 .dependencies = &[_]*const Feature {
817817 },
818818};
819819
820820pub const cpu_arm10e = Cpu{
821821 .name = "arm10e",
822822 .llvm_name = "arm10e",
823 .subfeatures = &[_]*const Feature {
823 .dependencies = &[_]*const Feature {
824824 },
825825};
826826
827827pub const cpu_arm10tdmi = Cpu{
828828 .name = "arm10tdmi",
829829 .llvm_name = "arm10tdmi",
830 .subfeatures = &[_]*const Feature {
830 .dependencies = &[_]*const Feature {
831831 },
832832};
833833
834834pub const cpu_arm1136jS = Cpu{
835835 .name = "arm1136j-s",
836836 .llvm_name = "arm1136j-s",
837 .subfeatures = &[_]*const Feature {
837 .dependencies = &[_]*const Feature {
838838 &feature_dsp,
839839 },
840840};
......@@ -842,7 +842,7 @@ pub const cpu_arm1136jS = Cpu{
842842pub const cpu_arm1136jfS = Cpu{
843843 .name = "arm1136jf-s",
844844 .llvm_name = "arm1136jf-s",
845 .subfeatures = &[_]*const Feature {
845 .dependencies = &[_]*const Feature {
846846 &feature_dsp,
847847 &feature_slowfpvmlx,
848848 &feature_fpregs,
......@@ -853,18 +853,18 @@ pub const cpu_arm1136jfS = Cpu{
853853pub const cpu_arm1156t2S = Cpu{
854854 .name = "arm1156t2-s",
855855 .llvm_name = "arm1156t2-s",
856 .subfeatures = &[_]*const Feature {
857 &feature_dsp,
856 .dependencies = &[_]*const Feature {
858857 &feature_thumb2,
858 &feature_dsp,
859859 },
860860};
861861
862862pub const cpu_arm1156t2fS = Cpu{
863863 .name = "arm1156t2f-s",
864864 .llvm_name = "arm1156t2f-s",
865 .subfeatures = &[_]*const Feature {
866 &feature_dsp,
865 .dependencies = &[_]*const Feature {
867866 &feature_thumb2,
867 &feature_dsp,
868868 &feature_slowfpvmlx,
869869 &feature_fpregs,
870870 &feature_vfp2,
......@@ -874,7 +874,7 @@ pub const cpu_arm1156t2fS = Cpu{
874874pub const cpu_arm1176jS = Cpu{
875875 .name = "arm1176j-s",
876876 .llvm_name = "arm1176j-s",
877 .subfeatures = &[_]*const Feature {
877 .dependencies = &[_]*const Feature {
878878 &feature_trustzone,
879879 },
880880};
......@@ -882,7 +882,7 @@ pub const cpu_arm1176jS = Cpu{
882882pub const cpu_arm1176jzS = Cpu{
883883 .name = "arm1176jz-s",
884884 .llvm_name = "arm1176jz-s",
885 .subfeatures = &[_]*const Feature {
885 .dependencies = &[_]*const Feature {
886886 &feature_trustzone,
887887 },
888888};
......@@ -890,7 +890,7 @@ pub const cpu_arm1176jzS = Cpu{
890890pub const cpu_arm1176jzfS = Cpu{
891891 .name = "arm1176jzf-s",
892892 .llvm_name = "arm1176jzf-s",
893 .subfeatures = &[_]*const Feature {
893 .dependencies = &[_]*const Feature {
894894 &feature_trustzone,
895895 &feature_slowfpvmlx,
896896 &feature_fpregs,
......@@ -901,134 +901,134 @@ pub const cpu_arm1176jzfS = Cpu{
901901pub const cpu_arm710t = Cpu{
902902 .name = "arm710t",
903903 .llvm_name = "arm710t",
904 .subfeatures = &[_]*const Feature {
904 .dependencies = &[_]*const Feature {
905905 },
906906};
907907
908908pub const cpu_arm720t = Cpu{
909909 .name = "arm720t",
910910 .llvm_name = "arm720t",
911 .subfeatures = &[_]*const Feature {
911 .dependencies = &[_]*const Feature {
912912 },
913913};
914914
915915pub const cpu_arm7tdmi = Cpu{
916916 .name = "arm7tdmi",
917917 .llvm_name = "arm7tdmi",
918 .subfeatures = &[_]*const Feature {
918 .dependencies = &[_]*const Feature {
919919 },
920920};
921921
922922pub const cpu_arm7tdmiS = Cpu{
923923 .name = "arm7tdmi-s",
924924 .llvm_name = "arm7tdmi-s",
925 .subfeatures = &[_]*const Feature {
925 .dependencies = &[_]*const Feature {
926926 },
927927};
928928
929929pub const cpu_arm8 = Cpu{
930930 .name = "arm8",
931931 .llvm_name = "arm8",
932 .subfeatures = &[_]*const Feature {
932 .dependencies = &[_]*const Feature {
933933 },
934934};
935935
936936pub const cpu_arm810 = Cpu{
937937 .name = "arm810",
938938 .llvm_name = "arm810",
939 .subfeatures = &[_]*const Feature {
939 .dependencies = &[_]*const Feature {
940940 },
941941};
942942
943943pub const cpu_arm9 = Cpu{
944944 .name = "arm9",
945945 .llvm_name = "arm9",
946 .subfeatures = &[_]*const Feature {
946 .dependencies = &[_]*const Feature {
947947 },
948948};
949949
950950pub const cpu_arm920 = Cpu{
951951 .name = "arm920",
952952 .llvm_name = "arm920",
953 .subfeatures = &[_]*const Feature {
953 .dependencies = &[_]*const Feature {
954954 },
955955};
956956
957957pub const cpu_arm920t = Cpu{
958958 .name = "arm920t",
959959 .llvm_name = "arm920t",
960 .subfeatures = &[_]*const Feature {
960 .dependencies = &[_]*const Feature {
961961 },
962962};
963963
964964pub const cpu_arm922t = Cpu{
965965 .name = "arm922t",
966966 .llvm_name = "arm922t",
967 .subfeatures = &[_]*const Feature {
967 .dependencies = &[_]*const Feature {
968968 },
969969};
970970
971971pub const cpu_arm926ejS = Cpu{
972972 .name = "arm926ej-s",
973973 .llvm_name = "arm926ej-s",
974 .subfeatures = &[_]*const Feature {
974 .dependencies = &[_]*const Feature {
975975 },
976976};
977977
978978pub const cpu_arm940t = Cpu{
979979 .name = "arm940t",
980980 .llvm_name = "arm940t",
981 .subfeatures = &[_]*const Feature {
981 .dependencies = &[_]*const Feature {
982982 },
983983};
984984
985985pub const cpu_arm946eS = Cpu{
986986 .name = "arm946e-s",
987987 .llvm_name = "arm946e-s",
988 .subfeatures = &[_]*const Feature {
988 .dependencies = &[_]*const Feature {
989989 },
990990};
991991
992992pub const cpu_arm966eS = Cpu{
993993 .name = "arm966e-s",
994994 .llvm_name = "arm966e-s",
995 .subfeatures = &[_]*const Feature {
995 .dependencies = &[_]*const Feature {
996996 },
997997};
998998
999999pub const cpu_arm968eS = Cpu{
10001000 .name = "arm968e-s",
10011001 .llvm_name = "arm968e-s",
1002 .subfeatures = &[_]*const Feature {
1002 .dependencies = &[_]*const Feature {
10031003 },
10041004};
10051005
10061006pub const cpu_arm9e = Cpu{
10071007 .name = "arm9e",
10081008 .llvm_name = "arm9e",
1009 .subfeatures = &[_]*const Feature {
1009 .dependencies = &[_]*const Feature {
10101010 },
10111011};
10121012
10131013pub const cpu_arm9tdmi = Cpu{
10141014 .name = "arm9tdmi",
10151015 .llvm_name = "arm9tdmi",
1016 .subfeatures = &[_]*const Feature {
1016 .dependencies = &[_]*const Feature {
10171017 },
10181018};
10191019
10201020pub const cpu_cortexA12 = Cpu{
10211021 .name = "cortex-a12",
10221022 .llvm_name = "cortex-a12",
1023 .subfeatures = &[_]*const Feature {
1024 &feature_fpregs,
1025 &feature_db,
1023 .dependencies = &[_]*const Feature {
10261024 &feature_d32,
10271025 &feature_perfmon,
1026 &feature_fpregs,
1027 &feature_db,
1028 &feature_thumb2,
1029 &feature_v7clrex,
10281030 &feature_dsp,
10291031 &feature_aclass,
1030 &feature_v7clrex,
1031 &feature_thumb2,
10321032 &feature_avoidPartialCpsr,
10331033 &feature_retAddrStack,
10341034 &feature_mp,
......@@ -1045,15 +1045,15 @@ pub const cpu_cortexA12 = Cpu{
10451045pub const cpu_cortexA15 = Cpu{
10461046 .name = "cortex-a15",
10471047 .llvm_name = "cortex-a15",
1048 .subfeatures = &[_]*const Feature {
1049 &feature_fpregs,
1050 &feature_db,
1048 .dependencies = &[_]*const Feature {
10511049 &feature_d32,
10521050 &feature_perfmon,
1051 &feature_fpregs,
1052 &feature_db,
1053 &feature_thumb2,
1054 &feature_v7clrex,
10531055 &feature_dsp,
10541056 &feature_aclass,
1055 &feature_v7clrex,
1056 &feature_thumb2,
10571057 &feature_avoidPartialCpsr,
10581058 &feature_vldnAlign,
10591059 &feature_dontWidenVmovs,
......@@ -1073,15 +1073,15 @@ pub const cpu_cortexA15 = Cpu{
10731073pub const cpu_cortexA17 = Cpu{
10741074 .name = "cortex-a17",
10751075 .llvm_name = "cortex-a17",
1076 .subfeatures = &[_]*const Feature {
1077 &feature_fpregs,
1078 &feature_db,
1076 .dependencies = &[_]*const Feature {
10791077 &feature_d32,
10801078 &feature_perfmon,
1079 &feature_fpregs,
1080 &feature_db,
1081 &feature_thumb2,
1082 &feature_v7clrex,
10811083 &feature_dsp,
10821084 &feature_aclass,
1083 &feature_v7clrex,
1084 &feature_thumb2,
10851085 &feature_avoidPartialCpsr,
10861086 &feature_retAddrStack,
10871087 &feature_mp,
......@@ -1098,22 +1098,22 @@ pub const cpu_cortexA17 = Cpu{
10981098pub const cpu_cortexA32 = Cpu{
10991099 .name = "cortex-a32",
11001100 .llvm_name = "cortex-a32",
1101 .subfeatures = &[_]*const Feature {
1102 &feature_hwdiv,
1103 &feature_trustzone,
1101 .dependencies = &[_]*const Feature {
1102 &feature_d32,
1103 &feature_hwdivArm,
11041104 &feature_fpregs,
11051105 &feature_db,
1106 &feature_acquireRelease,
1107 &feature_d32,
1106 &feature_crc,
1107 &feature_fp16,
11081108 &feature_perfmon,
1109 &feature_thumb2,
11091110 &feature_mp,
1110 &feature_hwdivArm,
1111 &feature_acquireRelease,
1112 &feature_hwdiv,
1113 &feature_trustzone,
1114 &feature_v7clrex,
11111115 &feature_dsp,
11121116 &feature_aclass,
1113 &feature_fp16,
1114 &feature_v7clrex,
1115 &feature_crc,
1116 &feature_thumb2,
11171117 &feature_crypto,
11181118 },
11191119};
......@@ -1121,22 +1121,22 @@ pub const cpu_cortexA32 = Cpu{
11211121pub const cpu_cortexA35 = Cpu{
11221122 .name = "cortex-a35",
11231123 .llvm_name = "cortex-a35",
1124 .subfeatures = &[_]*const Feature {
1125 &feature_hwdiv,
1126 &feature_trustzone,
1124 .dependencies = &[_]*const Feature {
1125 &feature_d32,
1126 &feature_hwdivArm,
11271127 &feature_fpregs,
11281128 &feature_db,
1129 &feature_acquireRelease,
1130 &feature_d32,
1129 &feature_crc,
1130 &feature_fp16,
11311131 &feature_perfmon,
1132 &feature_thumb2,
11321133 &feature_mp,
1133 &feature_hwdivArm,
1134 &feature_acquireRelease,
1135 &feature_hwdiv,
1136 &feature_trustzone,
1137 &feature_v7clrex,
11341138 &feature_dsp,
11351139 &feature_aclass,
1136 &feature_fp16,
1137 &feature_v7clrex,
1138 &feature_crc,
1139 &feature_thumb2,
11401140 &feature_crypto,
11411141 },
11421142};
......@@ -1144,15 +1144,15 @@ pub const cpu_cortexA35 = Cpu{
11441144pub const cpu_cortexA5 = Cpu{
11451145 .name = "cortex-a5",
11461146 .llvm_name = "cortex-a5",
1147 .subfeatures = &[_]*const Feature {
1148 &feature_fpregs,
1149 &feature_db,
1147 .dependencies = &[_]*const Feature {
11501148 &feature_d32,
11511149 &feature_perfmon,
1150 &feature_fpregs,
1151 &feature_db,
1152 &feature_thumb2,
1153 &feature_v7clrex,
11521154 &feature_dsp,
11531155 &feature_aclass,
1154 &feature_v7clrex,
1155 &feature_thumb2,
11561156 &feature_retAddrStack,
11571157 &feature_slowfpvmlx,
11581158 &feature_mp,
......@@ -1167,22 +1167,22 @@ pub const cpu_cortexA5 = Cpu{
11671167pub const cpu_cortexA53 = Cpu{
11681168 .name = "cortex-a53",
11691169 .llvm_name = "cortex-a53",
1170 .subfeatures = &[_]*const Feature {
1171 &feature_hwdiv,
1172 &feature_trustzone,
1170 .dependencies = &[_]*const Feature {
1171 &feature_d32,
1172 &feature_hwdivArm,
11731173 &feature_fpregs,
11741174 &feature_db,
1175 &feature_acquireRelease,
1176 &feature_d32,
1175 &feature_crc,
1176 &feature_fp16,
11771177 &feature_perfmon,
1178 &feature_thumb2,
11781179 &feature_mp,
1179 &feature_hwdivArm,
1180 &feature_acquireRelease,
1181 &feature_hwdiv,
1182 &feature_trustzone,
1183 &feature_v7clrex,
11801184 &feature_dsp,
11811185 &feature_aclass,
1182 &feature_fp16,
1183 &feature_v7clrex,
1184 &feature_crc,
1185 &feature_thumb2,
11861186 &feature_crypto,
11871187 &feature_fpao,
11881188 },
......@@ -1191,23 +1191,23 @@ pub const cpu_cortexA53 = Cpu{
11911191pub const cpu_cortexA55 = Cpu{
11921192 .name = "cortex-a55",
11931193 .llvm_name = "cortex-a55",
1194 .subfeatures = &[_]*const Feature {
1195 &feature_hwdiv,
1196 &feature_trustzone,
1194 .dependencies = &[_]*const Feature {
1195 &feature_d32,
1196 &feature_hwdivArm,
11971197 &feature_fpregs,
11981198 &feature_db,
1199 &feature_acquireRelease,
1200 &feature_d32,
1199 &feature_crc,
1200 &feature_fp16,
1201 &feature_ras,
12011202 &feature_perfmon,
1203 &feature_thumb2,
12021204 &feature_mp,
1203 &feature_ras,
1204 &feature_hwdivArm,
1205 &feature_acquireRelease,
1206 &feature_hwdiv,
1207 &feature_trustzone,
1208 &feature_v7clrex,
12051209 &feature_dsp,
12061210 &feature_aclass,
1207 &feature_fp16,
1208 &feature_v7clrex,
1209 &feature_crc,
1210 &feature_thumb2,
12111211 &feature_dotprod,
12121212 },
12131213};
......@@ -1215,22 +1215,22 @@ pub const cpu_cortexA55 = Cpu{
12151215pub const cpu_cortexA57 = Cpu{
12161216 .name = "cortex-a57",
12171217 .llvm_name = "cortex-a57",
1218 .subfeatures = &[_]*const Feature {
1219 &feature_hwdiv,
1220 &feature_trustzone,
1218 .dependencies = &[_]*const Feature {
1219 &feature_d32,
1220 &feature_hwdivArm,
12211221 &feature_fpregs,
12221222 &feature_db,
1223 &feature_acquireRelease,
1224 &feature_d32,
1223 &feature_crc,
1224 &feature_fp16,
12251225 &feature_perfmon,
1226 &feature_thumb2,
12261227 &feature_mp,
1227 &feature_hwdivArm,
1228 &feature_acquireRelease,
1229 &feature_hwdiv,
1230 &feature_trustzone,
1231 &feature_v7clrex,
12281232 &feature_dsp,
12291233 &feature_aclass,
1230 &feature_fp16,
1231 &feature_v7clrex,
1232 &feature_crc,
1233 &feature_thumb2,
12341234 &feature_avoidPartialCpsr,
12351235 &feature_cheapPredicableCpsr,
12361236 &feature_crypto,
......@@ -1241,15 +1241,15 @@ pub const cpu_cortexA57 = Cpu{
12411241pub const cpu_cortexA7 = Cpu{
12421242 .name = "cortex-a7",
12431243 .llvm_name = "cortex-a7",
1244 .subfeatures = &[_]*const Feature {
1245 &feature_fpregs,
1246 &feature_db,
1244 .dependencies = &[_]*const Feature {
12471245 &feature_d32,
12481246 &feature_perfmon,
1247 &feature_fpregs,
1248 &feature_db,
1249 &feature_thumb2,
1250 &feature_v7clrex,
12491251 &feature_dsp,
12501252 &feature_aclass,
1251 &feature_v7clrex,
1252 &feature_thumb2,
12531253 &feature_retAddrStack,
12541254 &feature_slowfpvmlx,
12551255 &feature_vmlxHazards,
......@@ -1268,22 +1268,22 @@ pub const cpu_cortexA7 = Cpu{
12681268pub const cpu_cortexA72 = Cpu{
12691269 .name = "cortex-a72",
12701270 .llvm_name = "cortex-a72",
1271 .subfeatures = &[_]*const Feature {
1272 &feature_hwdiv,
1273 &feature_trustzone,
1271 .dependencies = &[_]*const Feature {
1272 &feature_d32,
1273 &feature_hwdivArm,
12741274 &feature_fpregs,
12751275 &feature_db,
1276 &feature_acquireRelease,
1277 &feature_d32,
1276 &feature_crc,
1277 &feature_fp16,
12781278 &feature_perfmon,
1279 &feature_thumb2,
12791280 &feature_mp,
1280 &feature_hwdivArm,
1281 &feature_acquireRelease,
1282 &feature_hwdiv,
1283 &feature_trustzone,
1284 &feature_v7clrex,
12811285 &feature_dsp,
12821286 &feature_aclass,
1283 &feature_fp16,
1284 &feature_v7clrex,
1285 &feature_crc,
1286 &feature_thumb2,
12871287 &feature_crypto,
12881288 },
12891289};
......@@ -1291,22 +1291,22 @@ pub const cpu_cortexA72 = Cpu{
12911291pub const cpu_cortexA73 = Cpu{
12921292 .name = "cortex-a73",
12931293 .llvm_name = "cortex-a73",
1294 .subfeatures = &[_]*const Feature {
1295 &feature_hwdiv,
1296 &feature_trustzone,
1294 .dependencies = &[_]*const Feature {
1295 &feature_d32,
1296 &feature_hwdivArm,
12971297 &feature_fpregs,
12981298 &feature_db,
1299 &feature_acquireRelease,
1300 &feature_d32,
1299 &feature_crc,
1300 &feature_fp16,
13011301 &feature_perfmon,
1302 &feature_thumb2,
13021303 &feature_mp,
1303 &feature_hwdivArm,
1304 &feature_acquireRelease,
1305 &feature_hwdiv,
1306 &feature_trustzone,
1307 &feature_v7clrex,
13041308 &feature_dsp,
13051309 &feature_aclass,
1306 &feature_fp16,
1307 &feature_v7clrex,
1308 &feature_crc,
1309 &feature_thumb2,
13101310 &feature_crypto,
13111311 },
13121312};
......@@ -1314,23 +1314,23 @@ pub const cpu_cortexA73 = Cpu{
13141314pub const cpu_cortexA75 = Cpu{
13151315 .name = "cortex-a75",
13161316 .llvm_name = "cortex-a75",
1317 .subfeatures = &[_]*const Feature {
1318 &feature_hwdiv,
1319 &feature_trustzone,
1317 .dependencies = &[_]*const Feature {
1318 &feature_d32,
1319 &feature_hwdivArm,
13201320 &feature_fpregs,
13211321 &feature_db,
1322 &feature_acquireRelease,
1323 &feature_d32,
1322 &feature_crc,
1323 &feature_fp16,
1324 &feature_ras,
13241325 &feature_perfmon,
1326 &feature_thumb2,
13251327 &feature_mp,
1326 &feature_ras,
1327 &feature_hwdivArm,
1328 &feature_acquireRelease,
1329 &feature_hwdiv,
1330 &feature_trustzone,
1331 &feature_v7clrex,
13281332 &feature_dsp,
13291333 &feature_aclass,
1330 &feature_fp16,
1331 &feature_v7clrex,
1332 &feature_crc,
1333 &feature_thumb2,
13341334 &feature_dotprod,
13351335 },
13361336};
......@@ -1338,23 +1338,23 @@ pub const cpu_cortexA75 = Cpu{
13381338pub const cpu_cortexA76 = Cpu{
13391339 .name = "cortex-a76",
13401340 .llvm_name = "cortex-a76",
1341 .subfeatures = &[_]*const Feature {
1342 &feature_hwdiv,
1343 &feature_trustzone,
1341 .dependencies = &[_]*const Feature {
1342 &feature_d32,
1343 &feature_hwdivArm,
13441344 &feature_fpregs,
13451345 &feature_db,
1346 &feature_acquireRelease,
1347 &feature_d32,
1346 &feature_crc,
1347 &feature_fp16,
1348 &feature_ras,
13481349 &feature_perfmon,
1350 &feature_thumb2,
13491351 &feature_mp,
1350 &feature_ras,
1351 &feature_hwdivArm,
1352 &feature_acquireRelease,
1353 &feature_hwdiv,
1354 &feature_trustzone,
1355 &feature_v7clrex,
13521356 &feature_dsp,
13531357 &feature_aclass,
1354 &feature_fp16,
1355 &feature_v7clrex,
1356 &feature_crc,
1357 &feature_thumb2,
13581358 &feature_crypto,
13591359 &feature_dotprod,
13601360 &feature_fullfp16,
......@@ -1364,23 +1364,23 @@ pub const cpu_cortexA76 = Cpu{
13641364pub const cpu_cortexA76ae = Cpu{
13651365 .name = "cortex-a76ae",
13661366 .llvm_name = "cortex-a76ae",
1367 .subfeatures = &[_]*const Feature {
1368 &feature_hwdiv,
1369 &feature_trustzone,
1367 .dependencies = &[_]*const Feature {
1368 &feature_d32,
1369 &feature_hwdivArm,
13701370 &feature_fpregs,
13711371 &feature_db,
1372 &feature_acquireRelease,
1373 &feature_d32,
1372 &feature_crc,
1373 &feature_fp16,
1374 &feature_ras,
13741375 &feature_perfmon,
1376 &feature_thumb2,
13751377 &feature_mp,
1376 &feature_ras,
1377 &feature_hwdivArm,
1378 &feature_acquireRelease,
1379 &feature_hwdiv,
1380 &feature_trustzone,
1381 &feature_v7clrex,
13781382 &feature_dsp,
13791383 &feature_aclass,
1380 &feature_fp16,
1381 &feature_v7clrex,
1382 &feature_crc,
1383 &feature_thumb2,
13841384 &feature_crypto,
13851385 &feature_dotprod,
13861386 &feature_fullfp16,
......@@ -1390,15 +1390,15 @@ pub const cpu_cortexA76ae = Cpu{
13901390pub const cpu_cortexA8 = Cpu{
13911391 .name = "cortex-a8",
13921392 .llvm_name = "cortex-a8",
1393 .subfeatures = &[_]*const Feature {
1394 &feature_fpregs,
1395 &feature_db,
1393 .dependencies = &[_]*const Feature {
13961394 &feature_d32,
13971395 &feature_perfmon,
1396 &feature_fpregs,
1397 &feature_db,
1398 &feature_thumb2,
1399 &feature_v7clrex,
13981400 &feature_dsp,
13991401 &feature_aclass,
1400 &feature_v7clrex,
1401 &feature_thumb2,
14021402 &feature_retAddrStack,
14031403 &feature_slowfpvmlx,
14041404 &feature_vmlxHazards,
......@@ -1412,15 +1412,15 @@ pub const cpu_cortexA8 = Cpu{
14121412pub const cpu_cortexA9 = Cpu{
14131413 .name = "cortex-a9",
14141414 .llvm_name = "cortex-a9",
1415 .subfeatures = &[_]*const Feature {
1416 &feature_fpregs,
1417 &feature_db,
1415 .dependencies = &[_]*const Feature {
14181416 &feature_d32,
14191417 &feature_perfmon,
1418 &feature_fpregs,
1419 &feature_db,
1420 &feature_thumb2,
1421 &feature_v7clrex,
14201422 &feature_dsp,
14211423 &feature_aclass,
1422 &feature_v7clrex,
1423 &feature_thumb2,
14241424 &feature_avoidPartialCpsr,
14251425 &feature_vldnAlign,
14261426 &feature_expandFpMlx,
......@@ -1439,48 +1439,48 @@ pub const cpu_cortexA9 = Cpu{
14391439pub const cpu_cortexM0 = Cpu{
14401440 .name = "cortex-m0",
14411441 .llvm_name = "cortex-m0",
1442 .subfeatures = &[_]*const Feature {
1442 .dependencies = &[_]*const Feature {
14431443 &feature_db,
1444 &feature_mclass,
14441445 &feature_strictAlign,
14451446 &feature_noarm,
1446 &feature_mclass,
14471447 },
14481448};
14491449
14501450pub const cpu_cortexM0plus = Cpu{
14511451 .name = "cortex-m0plus",
14521452 .llvm_name = "cortex-m0plus",
1453 .subfeatures = &[_]*const Feature {
1453 .dependencies = &[_]*const Feature {
14541454 &feature_db,
1455 &feature_mclass,
14551456 &feature_strictAlign,
14561457 &feature_noarm,
1457 &feature_mclass,
14581458 },
14591459};
14601460
14611461pub const cpu_cortexM1 = Cpu{
14621462 .name = "cortex-m1",
14631463 .llvm_name = "cortex-m1",
1464 .subfeatures = &[_]*const Feature {
1464 .dependencies = &[_]*const Feature {
14651465 &feature_db,
1466 &feature_mclass,
14661467 &feature_strictAlign,
14671468 &feature_noarm,
1468 &feature_mclass,
14691469 },
14701470};
14711471
14721472pub const cpu_cortexM23 = Cpu{
14731473 .name = "cortex-m23",
14741474 .llvm_name = "cortex-m23",
1475 .subfeatures = &[_]*const Feature {
1476 &feature_hwdiv,
1477 &feature_msecext8,
1475 .dependencies = &[_]*const Feature {
1476 &feature_mclass,
14781477 &feature_db,
1478 &feature_msecext8,
14791479 &feature_strictAlign,
14801480 &feature_acquireRelease,
1481 &feature_noarm,
1481 &feature_hwdiv,
14821482 &feature_v7clrex,
1483 &feature_mclass,
1483 &feature_noarm,
14841484 &feature_noMovt,
14851485 },
14861486};
......@@ -1488,14 +1488,14 @@ pub const cpu_cortexM23 = Cpu{
14881488pub const cpu_cortexM3 = Cpu{
14891489 .name = "cortex-m3",
14901490 .llvm_name = "cortex-m3",
1491 .subfeatures = &[_]*const Feature {
1492 &feature_hwdiv,
1493 &feature_db,
1491 .dependencies = &[_]*const Feature {
14941492 &feature_perfmon,
1495 &feature_noarm,
1496 &feature_v7clrex,
1493 &feature_db,
14971494 &feature_mclass,
14981495 &feature_thumb2,
1496 &feature_hwdiv,
1497 &feature_v7clrex,
1498 &feature_noarm,
14991499 &feature_noBranchPredictor,
15001500 &feature_loopAlign,
15011501 &feature_useAa,
......@@ -1506,16 +1506,16 @@ pub const cpu_cortexM3 = Cpu{
15061506pub const cpu_cortexM33 = Cpu{
15071507 .name = "cortex-m33",
15081508 .llvm_name = "cortex-m33",
1509 .subfeatures = &[_]*const Feature {
1510 &feature_hwdiv,
1511 &feature_msecext8,
1512 &feature_db,
1513 &feature_acquireRelease,
1509 .dependencies = &[_]*const Feature {
15141510 &feature_perfmon,
1515 &feature_noarm,
1516 &feature_v7clrex,
15171511 &feature_mclass,
1512 &feature_db,
1513 &feature_msecext8,
15181514 &feature_thumb2,
1515 &feature_acquireRelease,
1516 &feature_hwdiv,
1517 &feature_v7clrex,
1518 &feature_noarm,
15191519 &feature_dsp,
15201520 &feature_fp16,
15211521 &feature_fpregs,
......@@ -1531,16 +1531,16 @@ pub const cpu_cortexM33 = Cpu{
15311531pub const cpu_cortexM35p = Cpu{
15321532 .name = "cortex-m35p",
15331533 .llvm_name = "cortex-m35p",
1534 .subfeatures = &[_]*const Feature {
1535 &feature_hwdiv,
1536 &feature_msecext8,
1537 &feature_db,
1538 &feature_acquireRelease,
1534 .dependencies = &[_]*const Feature {
15391535 &feature_perfmon,
1540 &feature_noarm,
1541 &feature_v7clrex,
15421536 &feature_mclass,
1537 &feature_db,
1538 &feature_msecext8,
15431539 &feature_thumb2,
1540 &feature_acquireRelease,
1541 &feature_hwdiv,
1542 &feature_v7clrex,
1543 &feature_noarm,
15441544 &feature_dsp,
15451545 &feature_fp16,
15461546 &feature_fpregs,
......@@ -1556,22 +1556,22 @@ pub const cpu_cortexM35p = Cpu{
15561556pub const cpu_cortexM4 = Cpu{
15571557 .name = "cortex-m4",
15581558 .llvm_name = "cortex-m4",
1559 .subfeatures = &[_]*const Feature {
1560 &feature_hwdiv,
1561 &feature_db,
1559 .dependencies = &[_]*const Feature {
15621560 &feature_perfmon,
1563 &feature_noarm,
1564 &feature_dsp,
1565 &feature_v7clrex,
1561 &feature_db,
15661562 &feature_mclass,
15671563 &feature_thumb2,
1564 &feature_hwdiv,
1565 &feature_v7clrex,
1566 &feature_dsp,
1567 &feature_noarm,
15681568 &feature_noBranchPredictor,
15691569 &feature_slowfpvmlx,
15701570 &feature_loopAlign,
15711571 &feature_useAa,
15721572 &feature_useMisched,
1573 &feature_fp16,
15741573 &feature_fpregs,
1574 &feature_fp16,
15751575 &feature_vfp4d16sp,
15761576 },
15771577};
......@@ -1579,15 +1579,15 @@ pub const cpu_cortexM4 = Cpu{
15791579pub const cpu_cortexM7 = Cpu{
15801580 .name = "cortex-m7",
15811581 .llvm_name = "cortex-m7",
1582 .subfeatures = &[_]*const Feature {
1583 &feature_hwdiv,
1584 &feature_db,
1582 .dependencies = &[_]*const Feature {
15851583 &feature_perfmon,
1586 &feature_noarm,
1587 &feature_dsp,
1588 &feature_v7clrex,
1584 &feature_db,
15891585 &feature_mclass,
15901586 &feature_thumb2,
1587 &feature_hwdiv,
1588 &feature_v7clrex,
1589 &feature_dsp,
1590 &feature_noarm,
15911591 &feature_fp16,
15921592 &feature_fpregs,
15931593 &feature_fpArmv8d16,
......@@ -1597,14 +1597,14 @@ pub const cpu_cortexM7 = Cpu{
15971597pub const cpu_cortexR4 = Cpu{
15981598 .name = "cortex-r4",
15991599 .llvm_name = "cortex-r4",
1600 .subfeatures = &[_]*const Feature {
1601 &feature_hwdiv,
1602 &feature_rclass,
1603 &feature_db,
1600 .dependencies = &[_]*const Feature {
16041601 &feature_perfmon,
1605 &feature_dsp,
1606 &feature_v7clrex,
1602 &feature_db,
16071603 &feature_thumb2,
1604 &feature_rclass,
1605 &feature_hwdiv,
1606 &feature_v7clrex,
1607 &feature_dsp,
16081608 &feature_avoidPartialCpsr,
16091609 &feature_retAddrStack,
16101610 },
......@@ -1613,14 +1613,14 @@ pub const cpu_cortexR4 = Cpu{
16131613pub const cpu_cortexR4f = Cpu{
16141614 .name = "cortex-r4f",
16151615 .llvm_name = "cortex-r4f",
1616 .subfeatures = &[_]*const Feature {
1617 &feature_hwdiv,
1618 &feature_rclass,
1619 &feature_db,
1616 .dependencies = &[_]*const Feature {
16201617 &feature_perfmon,
1621 &feature_dsp,
1622 &feature_v7clrex,
1618 &feature_db,
16231619 &feature_thumb2,
1620 &feature_rclass,
1621 &feature_hwdiv,
1622 &feature_v7clrex,
1623 &feature_dsp,
16241624 &feature_avoidPartialCpsr,
16251625 &feature_retAddrStack,
16261626 &feature_slowfpvmlx,
......@@ -1633,14 +1633,14 @@ pub const cpu_cortexR4f = Cpu{
16331633pub const cpu_cortexR5 = Cpu{
16341634 .name = "cortex-r5",
16351635 .llvm_name = "cortex-r5",
1636 .subfeatures = &[_]*const Feature {
1637 &feature_hwdiv,
1638 &feature_rclass,
1639 &feature_db,
1636 .dependencies = &[_]*const Feature {
16401637 &feature_perfmon,
1641 &feature_dsp,
1642 &feature_v7clrex,
1638 &feature_db,
16431639 &feature_thumb2,
1640 &feature_rclass,
1641 &feature_hwdiv,
1642 &feature_v7clrex,
1643 &feature_dsp,
16441644 &feature_avoidPartialCpsr,
16451645 &feature_hwdivArm,
16461646 &feature_retAddrStack,
......@@ -1654,22 +1654,22 @@ pub const cpu_cortexR5 = Cpu{
16541654pub const cpu_cortexR52 = Cpu{
16551655 .name = "cortex-r52",
16561656 .llvm_name = "cortex-r52",
1657 .subfeatures = &[_]*const Feature {
1658 &feature_hwdiv,
1659 &feature_rclass,
1657 .dependencies = &[_]*const Feature {
1658 &feature_d32,
1659 &feature_hwdivArm,
16601660 &feature_fpregs,
16611661 &feature_db,
1662 &feature_acquireRelease,
1663 &feature_d32,
1662 &feature_crc,
1663 &feature_fp16,
16641664 &feature_perfmon,
1665 &feature_thumb2,
1666 &feature_rclass,
16651667 &feature_mp,
1668 &feature_acquireRelease,
1669 &feature_hwdiv,
1670 &feature_v7clrex,
16661671 &feature_dfb,
1667 &feature_hwdivArm,
16681672 &feature_dsp,
1669 &feature_fp16,
1670 &feature_v7clrex,
1671 &feature_crc,
1672 &feature_thumb2,
16731673 &feature_fpao,
16741674 &feature_useAa,
16751675 &feature_useMisched,
......@@ -1679,14 +1679,14 @@ pub const cpu_cortexR52 = Cpu{
16791679pub const cpu_cortexR7 = Cpu{
16801680 .name = "cortex-r7",
16811681 .llvm_name = "cortex-r7",
1682 .subfeatures = &[_]*const Feature {
1683 &feature_hwdiv,
1684 &feature_rclass,
1685 &feature_db,
1682 .dependencies = &[_]*const Feature {
16861683 &feature_perfmon,
1687 &feature_dsp,
1688 &feature_v7clrex,
1684 &feature_db,
16891685 &feature_thumb2,
1686 &feature_rclass,
1687 &feature_hwdiv,
1688 &feature_v7clrex,
1689 &feature_dsp,
16901690 &feature_avoidPartialCpsr,
16911691 &feature_fp16,
16921692 &feature_hwdivArm,
......@@ -1702,14 +1702,14 @@ pub const cpu_cortexR7 = Cpu{
17021702pub const cpu_cortexR8 = Cpu{
17031703 .name = "cortex-r8",
17041704 .llvm_name = "cortex-r8",
1705 .subfeatures = &[_]*const Feature {
1706 &feature_hwdiv,
1707 &feature_rclass,
1708 &feature_db,
1705 .dependencies = &[_]*const Feature {
17091706 &feature_perfmon,
1710 &feature_dsp,
1711 &feature_v7clrex,
1707 &feature_db,
17121708 &feature_thumb2,
1709 &feature_rclass,
1710 &feature_hwdiv,
1711 &feature_v7clrex,
1712 &feature_dsp,
17131713 &feature_avoidPartialCpsr,
17141714 &feature_fp16,
17151715 &feature_hwdivArm,
......@@ -1725,22 +1725,22 @@ pub const cpu_cortexR8 = Cpu{
17251725pub const cpu_cyclone = Cpu{
17261726 .name = "cyclone",
17271727 .llvm_name = "cyclone",
1728 .subfeatures = &[_]*const Feature {
1729 &feature_hwdiv,
1730 &feature_trustzone,
1728 .dependencies = &[_]*const Feature {
1729 &feature_d32,
1730 &feature_hwdivArm,
17311731 &feature_fpregs,
17321732 &feature_db,
1733 &feature_acquireRelease,
1734 &feature_d32,
1733 &feature_crc,
1734 &feature_fp16,
17351735 &feature_perfmon,
1736 &feature_thumb2,
17361737 &feature_mp,
1737 &feature_hwdivArm,
1738 &feature_acquireRelease,
1739 &feature_hwdiv,
1740 &feature_trustzone,
1741 &feature_v7clrex,
17381742 &feature_dsp,
17391743 &feature_aclass,
1740 &feature_fp16,
1741 &feature_v7clrex,
1742 &feature_crc,
1743 &feature_thumb2,
17441744 &feature_avoidMovsShop,
17451745 &feature_avoidPartialCpsr,
17461746 &feature_crypto,
......@@ -1757,217 +1757,217 @@ pub const cpu_cyclone = Cpu{
17571757pub const cpu_ep9312 = Cpu{
17581758 .name = "ep9312",
17591759 .llvm_name = "ep9312",
1760 .subfeatures = &[_]*const Feature {
1760 .dependencies = &[_]*const Feature {
17611761 },
17621762};
17631763
17641764pub const cpu_exynosM1 = Cpu{
17651765 .name = "exynos-m1",
17661766 .llvm_name = "exynos-m1",
1767 .subfeatures = &[_]*const Feature {
1768 &feature_hwdiv,
1769 &feature_trustzone,
1767 .dependencies = &[_]*const Feature {
1768 &feature_d32,
1769 &feature_hwdivArm,
17701770 &feature_fpregs,
17711771 &feature_db,
1772 &feature_acquireRelease,
1773 &feature_d32,
1772 &feature_crc,
1773 &feature_fp16,
17741774 &feature_perfmon,
1775 &feature_thumb2,
17751776 &feature_mp,
1776 &feature_hwdivArm,
1777 &feature_acquireRelease,
1778 &feature_hwdiv,
1779 &feature_trustzone,
1780 &feature_v7clrex,
17771781 &feature_dsp,
17781782 &feature_aclass,
1779 &feature_fp16,
1780 &feature_v7clrex,
1781 &feature_crc,
1782 &feature_thumb2,
1783 &feature_slowVdup32,
1784 &feature_expandFpMlx,
1785 &feature_slowVgetlni32,
17861783 &feature_fuseLiterals,
1784 &feature_profUnpr,
17871785 &feature_wideStrideVfp,
1788 &feature_slowFpBrcc,
1789 &feature_retAddrStack,
1786 &feature_slowVdup32,
1787 &feature_slowVgetlni32,
17901788 &feature_dontWidenVmovs,
1791 &feature_zcz,
17921789 &feature_fuseAes,
1793 &feature_slowfpvmlx,
1794 &feature_profUnpr,
1790 &feature_retAddrStack,
1791 &feature_expandFpMlx,
1792 &feature_zcz,
17951793 &feature_useAa,
1794 &feature_slowfpvmlx,
1795 &feature_slowFpBrcc,
17961796 },
17971797};
17981798
17991799pub const cpu_exynosM2 = Cpu{
18001800 .name = "exynos-m2",
18011801 .llvm_name = "exynos-m2",
1802 .subfeatures = &[_]*const Feature {
1803 &feature_hwdiv,
1804 &feature_trustzone,
1802 .dependencies = &[_]*const Feature {
1803 &feature_d32,
1804 &feature_hwdivArm,
18051805 &feature_fpregs,
18061806 &feature_db,
1807 &feature_acquireRelease,
1808 &feature_d32,
1807 &feature_crc,
1808 &feature_fp16,
18091809 &feature_perfmon,
1810 &feature_thumb2,
18101811 &feature_mp,
1811 &feature_hwdivArm,
1812 &feature_acquireRelease,
1813 &feature_hwdiv,
1814 &feature_trustzone,
1815 &feature_v7clrex,
18121816 &feature_dsp,
18131817 &feature_aclass,
1814 &feature_fp16,
1815 &feature_v7clrex,
1816 &feature_crc,
1817 &feature_thumb2,
1818 &feature_slowVdup32,
1819 &feature_expandFpMlx,
1820 &feature_slowVgetlni32,
18211818 &feature_fuseLiterals,
1819 &feature_profUnpr,
18221820 &feature_wideStrideVfp,
1823 &feature_slowFpBrcc,
1824 &feature_retAddrStack,
1821 &feature_slowVdup32,
1822 &feature_slowVgetlni32,
18251823 &feature_dontWidenVmovs,
1826 &feature_zcz,
18271824 &feature_fuseAes,
1828 &feature_slowfpvmlx,
1829 &feature_profUnpr,
1825 &feature_retAddrStack,
1826 &feature_expandFpMlx,
1827 &feature_zcz,
18301828 &feature_useAa,
1829 &feature_slowfpvmlx,
1830 &feature_slowFpBrcc,
18311831 },
18321832};
18331833
18341834pub const cpu_exynosM3 = Cpu{
18351835 .name = "exynos-m3",
18361836 .llvm_name = "exynos-m3",
1837 .subfeatures = &[_]*const Feature {
1838 &feature_hwdiv,
1839 &feature_trustzone,
1837 .dependencies = &[_]*const Feature {
1838 &feature_d32,
1839 &feature_hwdivArm,
18401840 &feature_fpregs,
18411841 &feature_db,
1842 &feature_acquireRelease,
1843 &feature_d32,
1842 &feature_crc,
1843 &feature_fp16,
18441844 &feature_perfmon,
1845 &feature_thumb2,
18451846 &feature_mp,
1846 &feature_hwdivArm,
1847 &feature_acquireRelease,
1848 &feature_hwdiv,
1849 &feature_trustzone,
1850 &feature_v7clrex,
18471851 &feature_dsp,
18481852 &feature_aclass,
1849 &feature_fp16,
1850 &feature_v7clrex,
1851 &feature_crc,
1852 &feature_thumb2,
1853 &feature_slowVdup32,
1854 &feature_expandFpMlx,
1855 &feature_slowVgetlni32,
18561853 &feature_fuseLiterals,
1854 &feature_profUnpr,
18571855 &feature_wideStrideVfp,
1858 &feature_slowFpBrcc,
1859 &feature_retAddrStack,
1856 &feature_slowVdup32,
1857 &feature_slowVgetlni32,
18601858 &feature_dontWidenVmovs,
1861 &feature_zcz,
18621859 &feature_fuseAes,
1863 &feature_slowfpvmlx,
1864 &feature_profUnpr,
1860 &feature_retAddrStack,
1861 &feature_expandFpMlx,
1862 &feature_zcz,
18651863 &feature_useAa,
1864 &feature_slowfpvmlx,
1865 &feature_slowFpBrcc,
18661866 },
18671867};
18681868
18691869pub const cpu_exynosM4 = Cpu{
18701870 .name = "exynos-m4",
18711871 .llvm_name = "exynos-m4",
1872 .subfeatures = &[_]*const Feature {
1873 &feature_hwdiv,
1874 &feature_trustzone,
1872 .dependencies = &[_]*const Feature {
1873 &feature_d32,
1874 &feature_hwdivArm,
18751875 &feature_fpregs,
18761876 &feature_db,
1877 &feature_acquireRelease,
1878 &feature_d32,
1877 &feature_crc,
1878 &feature_fp16,
1879 &feature_ras,
18791880 &feature_perfmon,
1881 &feature_thumb2,
18801882 &feature_mp,
1881 &feature_ras,
1882 &feature_hwdivArm,
1883 &feature_acquireRelease,
1884 &feature_hwdiv,
1885 &feature_trustzone,
1886 &feature_v7clrex,
18831887 &feature_dsp,
18841888 &feature_aclass,
1885 &feature_fp16,
1886 &feature_v7clrex,
1887 &feature_crc,
1888 &feature_thumb2,
18891889 &feature_dotprod,
18901890 &feature_fullfp16,
1891 &feature_slowVdup32,
1892 &feature_expandFpMlx,
1893 &feature_slowVgetlni32,
18941891 &feature_fuseLiterals,
1892 &feature_profUnpr,
18951893 &feature_wideStrideVfp,
1896 &feature_slowFpBrcc,
1897 &feature_retAddrStack,
1894 &feature_slowVdup32,
1895 &feature_slowVgetlni32,
18981896 &feature_dontWidenVmovs,
1899 &feature_zcz,
19001897 &feature_fuseAes,
1901 &feature_slowfpvmlx,
1902 &feature_profUnpr,
1898 &feature_retAddrStack,
1899 &feature_expandFpMlx,
1900 &feature_zcz,
19031901 &feature_useAa,
1902 &feature_slowfpvmlx,
1903 &feature_slowFpBrcc,
19041904 },
19051905};
19061906
19071907pub const cpu_exynosM5 = Cpu{
19081908 .name = "exynos-m5",
19091909 .llvm_name = "exynos-m5",
1910 .subfeatures = &[_]*const Feature {
1911 &feature_hwdiv,
1912 &feature_trustzone,
1910 .dependencies = &[_]*const Feature {
1911 &feature_d32,
1912 &feature_hwdivArm,
19131913 &feature_fpregs,
19141914 &feature_db,
1915 &feature_acquireRelease,
1916 &feature_d32,
1915 &feature_crc,
1916 &feature_fp16,
1917 &feature_ras,
19171918 &feature_perfmon,
1919 &feature_thumb2,
19181920 &feature_mp,
1919 &feature_ras,
1920 &feature_hwdivArm,
1921 &feature_acquireRelease,
1922 &feature_hwdiv,
1923 &feature_trustzone,
1924 &feature_v7clrex,
19211925 &feature_dsp,
19221926 &feature_aclass,
1923 &feature_fp16,
1924 &feature_v7clrex,
1925 &feature_crc,
1926 &feature_thumb2,
19271927 &feature_dotprod,
19281928 &feature_fullfp16,
1929 &feature_slowVdup32,
1930 &feature_expandFpMlx,
1931 &feature_slowVgetlni32,
19321929 &feature_fuseLiterals,
1930 &feature_profUnpr,
19331931 &feature_wideStrideVfp,
1934 &feature_slowFpBrcc,
1935 &feature_retAddrStack,
1932 &feature_slowVdup32,
1933 &feature_slowVgetlni32,
19361934 &feature_dontWidenVmovs,
1937 &feature_zcz,
19381935 &feature_fuseAes,
1939 &feature_slowfpvmlx,
1940 &feature_profUnpr,
1936 &feature_retAddrStack,
1937 &feature_expandFpMlx,
1938 &feature_zcz,
19411939 &feature_useAa,
1940 &feature_slowfpvmlx,
1941 &feature_slowFpBrcc,
19421942 },
19431943};
19441944
19451945pub const cpu_generic = Cpu{
19461946 .name = "generic",
19471947 .llvm_name = "generic",
1948 .subfeatures = &[_]*const Feature {
1948 .dependencies = &[_]*const Feature {
19491949 },
19501950};
19511951
19521952pub const cpu_iwmmxt = Cpu{
19531953 .name = "iwmmxt",
19541954 .llvm_name = "iwmmxt",
1955 .subfeatures = &[_]*const Feature {
1955 .dependencies = &[_]*const Feature {
19561956 },
19571957};
19581958
19591959pub const cpu_krait = Cpu{
19601960 .name = "krait",
19611961 .llvm_name = "krait",
1962 .subfeatures = &[_]*const Feature {
1963 &feature_fpregs,
1964 &feature_db,
1962 .dependencies = &[_]*const Feature {
19651963 &feature_d32,
19661964 &feature_perfmon,
1965 &feature_fpregs,
1966 &feature_db,
1967 &feature_thumb2,
1968 &feature_v7clrex,
19671969 &feature_dsp,
19681970 &feature_aclass,
1969 &feature_v7clrex,
1970 &feature_thumb2,
19711971 &feature_avoidPartialCpsr,
19721972 &feature_vldnAlign,
19731973 &feature_fp16,
......@@ -1983,22 +1983,22 @@ pub const cpu_krait = Cpu{
19831983pub const cpu_kryo = Cpu{
19841984 .name = "kryo",
19851985 .llvm_name = "kryo",
1986 .subfeatures = &[_]*const Feature {
1987 &feature_hwdiv,
1988 &feature_trustzone,
1986 .dependencies = &[_]*const Feature {
1987 &feature_d32,
1988 &feature_hwdivArm,
19891989 &feature_fpregs,
19901990 &feature_db,
1991 &feature_acquireRelease,
1992 &feature_d32,
1991 &feature_crc,
1992 &feature_fp16,
19931993 &feature_perfmon,
1994 &feature_thumb2,
19941995 &feature_mp,
1995 &feature_hwdivArm,
1996 &feature_acquireRelease,
1997 &feature_hwdiv,
1998 &feature_trustzone,
1999 &feature_v7clrex,
19962000 &feature_dsp,
19972001 &feature_aclass,
1998 &feature_fp16,
1999 &feature_v7clrex,
2000 &feature_crc,
2001 &feature_thumb2,
20022002 &feature_crypto,
20032003 },
20042004};
......@@ -2006,7 +2006,7 @@ pub const cpu_kryo = Cpu{
20062006pub const cpu_mpcore = Cpu{
20072007 .name = "mpcore",
20082008 .llvm_name = "mpcore",
2009 .subfeatures = &[_]*const Feature {
2009 .dependencies = &[_]*const Feature {
20102010 &feature_slowfpvmlx,
20112011 &feature_fpregs,
20122012 &feature_vfp2,
......@@ -2016,30 +2016,30 @@ pub const cpu_mpcore = Cpu{
20162016pub const cpu_mpcorenovfp = Cpu{
20172017 .name = "mpcorenovfp",
20182018 .llvm_name = "mpcorenovfp",
2019 .subfeatures = &[_]*const Feature {
2019 .dependencies = &[_]*const Feature {
20202020 },
20212021};
20222022
20232023pub const cpu_neoverseN1 = Cpu{
20242024 .name = "neoverse-n1",
20252025 .llvm_name = "neoverse-n1",
2026 .subfeatures = &[_]*const Feature {
2027 &feature_hwdiv,
2028 &feature_trustzone,
2026 .dependencies = &[_]*const Feature {
2027 &feature_d32,
2028 &feature_hwdivArm,
20292029 &feature_fpregs,
20302030 &feature_db,
2031 &feature_acquireRelease,
2032 &feature_d32,
2031 &feature_crc,
2032 &feature_fp16,
2033 &feature_ras,
20332034 &feature_perfmon,
2035 &feature_thumb2,
20342036 &feature_mp,
2035 &feature_ras,
2036 &feature_hwdivArm,
2037 &feature_acquireRelease,
2038 &feature_hwdiv,
2039 &feature_trustzone,
2040 &feature_v7clrex,
20372041 &feature_dsp,
20382042 &feature_aclass,
2039 &feature_fp16,
2040 &feature_v7clrex,
2041 &feature_crc,
2042 &feature_thumb2,
20432043 &feature_crypto,
20442044 &feature_dotprod,
20452045 },
......@@ -2048,25 +2048,25 @@ pub const cpu_neoverseN1 = Cpu{
20482048pub const cpu_sc000 = Cpu{
20492049 .name = "sc000",
20502050 .llvm_name = "sc000",
2051 .subfeatures = &[_]*const Feature {
2051 .dependencies = &[_]*const Feature {
20522052 &feature_db,
2053 &feature_mclass,
20532054 &feature_strictAlign,
20542055 &feature_noarm,
2055 &feature_mclass,
20562056 },
20572057};
20582058
20592059pub const cpu_sc300 = Cpu{
20602060 .name = "sc300",
20612061 .llvm_name = "sc300",
2062 .subfeatures = &[_]*const Feature {
2063 &feature_hwdiv,
2064 &feature_db,
2062 .dependencies = &[_]*const Feature {
20652063 &feature_perfmon,
2066 &feature_noarm,
2067 &feature_v7clrex,
2064 &feature_db,
20682065 &feature_mclass,
20692066 &feature_thumb2,
2067 &feature_hwdiv,
2068 &feature_v7clrex,
2069 &feature_noarm,
20702070 &feature_noBranchPredictor,
20712071 &feature_useAa,
20722072 &feature_useMisched,
......@@ -2076,43 +2076,43 @@ pub const cpu_sc300 = Cpu{
20762076pub const cpu_strongarm = Cpu{
20772077 .name = "strongarm",
20782078 .llvm_name = "strongarm",
2079 .subfeatures = &[_]*const Feature {
2079 .dependencies = &[_]*const Feature {
20802080 },
20812081};
20822082
20832083pub const cpu_strongarm110 = Cpu{
20842084 .name = "strongarm110",
20852085 .llvm_name = "strongarm110",
2086 .subfeatures = &[_]*const Feature {
2086 .dependencies = &[_]*const Feature {
20872087 },
20882088};
20892089
20902090pub const cpu_strongarm1100 = Cpu{
20912091 .name = "strongarm1100",
20922092 .llvm_name = "strongarm1100",
2093 .subfeatures = &[_]*const Feature {
2093 .dependencies = &[_]*const Feature {
20942094 },
20952095};
20962096
20972097pub const cpu_strongarm1110 = Cpu{
20982098 .name = "strongarm1110",
20992099 .llvm_name = "strongarm1110",
2100 .subfeatures = &[_]*const Feature {
2100 .dependencies = &[_]*const Feature {
21012101 },
21022102};
21032103
21042104pub const cpu_swift = Cpu{
21052105 .name = "swift",
21062106 .llvm_name = "swift",
2107 .subfeatures = &[_]*const Feature {
2108 &feature_fpregs,
2109 &feature_db,
2107 .dependencies = &[_]*const Feature {
21102108 &feature_d32,
21112109 &feature_perfmon,
2110 &feature_fpregs,
2111 &feature_db,
2112 &feature_thumb2,
2113 &feature_v7clrex,
21122114 &feature_dsp,
21132115 &feature_aclass,
2114 &feature_v7clrex,
2115 &feature_thumb2,
21162116 &feature_avoidMovsShop,
21172117 &feature_avoidPartialCpsr,
21182118 &feature_hwdivArm,
......@@ -2139,7 +2139,7 @@ pub const cpu_swift = Cpu{
21392139pub const cpu_xscale = Cpu{
21402140 .name = "xscale",
21412141 .llvm_name = "xscale",
2142 .subfeatures = &[_]*const Feature {
2142 .dependencies = &[_]*const Feature {
21432143 },
21442144};
21452145
lib/std/target/avr.zig+1613-1613
......@@ -4,126 +4,126 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_addsubiw = Feature{
55 .name = "addsubiw",
66 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_break = Feature{
1212 .name = "break",
1313 .description = "The device supports the `BREAK` debugging instruction",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_des = Feature{
1919 .name = "des",
2020 .description = "The device supports the `DES k` encryption instruction",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_eijmpcall = Feature{
2626 .name = "eijmpcall",
2727 .description = "The device supports the `EIJMP`/`EICALL` instructions",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_elpm = Feature{
3333 .name = "elpm",
3434 .description = "The device supports the ELPM instruction",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_elpmx = Feature{
4040 .name = "elpmx",
4141 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_ijmpcall = Feature{
4747 .name = "ijmpcall",
4848 .description = "The device supports `IJMP`/`ICALL`instructions",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_jmpcall = Feature{
5454 .name = "jmpcall",
5555 .description = "The device supports the `JMP` and `CALL` instructions",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_lpm = Feature{
6161 .name = "lpm",
6262 .description = "The device supports the `LPM` instruction",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_lpmx = Feature{
6868 .name = "lpmx",
6969 .description = "The device supports the `LPM Rd, Z[+]` instruction",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 },
7272};
7373
7474pub const feature_movw = Feature{
7575 .name = "movw",
7676 .description = "The device supports the 16-bit MOVW instruction",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 },
7979};
8080
8181pub const feature_mul = Feature{
8282 .name = "mul",
8383 .description = "The device supports the multiplication instructions",
84 .subfeatures = &[_]*const Feature {
84 .dependencies = &[_]*const Feature {
8585 },
8686};
8787
8888pub const feature_rmw = Feature{
8989 .name = "rmw",
9090 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 },
9393};
9494
9595pub const feature_spm = Feature{
9696 .name = "spm",
9797 .description = "The device supports the `SPM` instruction",
98 .subfeatures = &[_]*const Feature {
98 .dependencies = &[_]*const Feature {
9999 },
100100};
101101
102102pub const feature_spmx = Feature{
103103 .name = "spmx",
104104 .description = "The device supports the `SPM Z+` instruction",
105 .subfeatures = &[_]*const Feature {
105 .dependencies = &[_]*const Feature {
106106 },
107107};
108108
109109pub const feature_sram = Feature{
110110 .name = "sram",
111111 .description = "The device has random access memory",
112 .subfeatures = &[_]*const Feature {
112 .dependencies = &[_]*const Feature {
113113 },
114114};
115115
116116pub const feature_smallstack = Feature{
117117 .name = "smallstack",
118118 .description = "The device has an 8-bit stack pointer",
119 .subfeatures = &[_]*const Feature {
119 .dependencies = &[_]*const Feature {
120120 },
121121};
122122
123123pub const feature_tinyencoding = Feature{
124124 .name = "tinyencoding",
125125 .description = "The device has Tiny core specific instruction encodings",
126 .subfeatures = &[_]*const Feature {
126 .dependencies = &[_]*const Feature {
127127 },
128128};
129129
......@@ -151,48 +151,48 @@ pub const features = &[_]*const Feature {
151151pub const cpu_at43usb320 = Cpu{
152152 .name = "at43usb320",
153153 .llvm_name = "at43usb320",
154 .subfeatures = &[_]*const Feature {
155 &feature_addsubiw,
156 &feature_jmpcall,
157 &feature_lpm,
154 .dependencies = &[_]*const Feature {
158155 &feature_elpm,
159 &feature_sram,
156 &feature_lpm,
160157 &feature_ijmpcall,
158 &feature_sram,
159 &feature_jmpcall,
160 &feature_addsubiw,
161161 },
162162};
163163
164164pub const cpu_at43usb355 = Cpu{
165165 .name = "at43usb355",
166166 .llvm_name = "at43usb355",
167 .subfeatures = &[_]*const Feature {
168 &feature_addsubiw,
169 &feature_jmpcall,
167 .dependencies = &[_]*const Feature {
170168 &feature_lpm,
171 &feature_sram,
172169 &feature_ijmpcall,
170 &feature_sram,
171 &feature_jmpcall,
172 &feature_addsubiw,
173173 },
174174};
175175
176176pub const cpu_at76c711 = Cpu{
177177 .name = "at76c711",
178178 .llvm_name = "at76c711",
179 .subfeatures = &[_]*const Feature {
180 &feature_addsubiw,
181 &feature_jmpcall,
179 .dependencies = &[_]*const Feature {
182180 &feature_lpm,
183 &feature_sram,
184181 &feature_ijmpcall,
182 &feature_sram,
183 &feature_jmpcall,
184 &feature_addsubiw,
185185 },
186186};
187187
188188pub const cpu_at86rf401 = Cpu{
189189 .name = "at86rf401",
190190 .llvm_name = "at86rf401",
191 .subfeatures = &[_]*const Feature {
192 &feature_addsubiw,
191 .dependencies = &[_]*const Feature {
193192 &feature_lpm,
194 &feature_sram,
195193 &feature_ijmpcall,
194 &feature_sram,
195 &feature_addsubiw,
196196 &feature_lpmx,
197197 &feature_movw,
198198 },
......@@ -201,450 +201,450 @@ pub const cpu_at86rf401 = Cpu{
201201pub const cpu_at90c8534 = Cpu{
202202 .name = "at90c8534",
203203 .llvm_name = "at90c8534",
204 .subfeatures = &[_]*const Feature {
205 &feature_addsubiw,
204 .dependencies = &[_]*const Feature {
206205 &feature_lpm,
207 &feature_sram,
208206 &feature_ijmpcall,
207 &feature_sram,
208 &feature_addsubiw,
209209 },
210210};
211211
212212pub const cpu_at90can128 = Cpu{
213213 .name = "at90can128",
214214 .llvm_name = "at90can128",
215 .subfeatures = &[_]*const Feature {
215 .dependencies = &[_]*const Feature {
216216 &feature_lpmx,
217 &feature_elpm,
217218 &feature_spm,
218 &feature_addsubiw,
219 &feature_jmpcall,
220219 &feature_lpm,
221 &feature_break,
222 &feature_mul,
223 &feature_elpm,
220 &feature_ijmpcall,
224221 &feature_elpmx,
225222 &feature_sram,
226 &feature_ijmpcall,
223 &feature_break,
224 &feature_jmpcall,
225 &feature_mul,
227226 &feature_movw,
227 &feature_addsubiw,
228228 },
229229};
230230
231231pub const cpu_at90can32 = Cpu{
232232 .name = "at90can32",
233233 .llvm_name = "at90can32",
234 .subfeatures = &[_]*const Feature {
234 .dependencies = &[_]*const Feature {
235235 &feature_lpmx,
236 &feature_spm,
237 &feature_addsubiw,
238 &feature_jmpcall,
239236 &feature_lpm,
237 &feature_spm,
238 &feature_ijmpcall,
239 &feature_sram,
240240 &feature_break,
241 &feature_jmpcall,
241242 &feature_mul,
242 &feature_sram,
243 &feature_ijmpcall,
244243 &feature_movw,
244 &feature_addsubiw,
245245 },
246246};
247247
248248pub const cpu_at90can64 = Cpu{
249249 .name = "at90can64",
250250 .llvm_name = "at90can64",
251 .subfeatures = &[_]*const Feature {
251 .dependencies = &[_]*const Feature {
252252 &feature_lpmx,
253 &feature_spm,
254 &feature_addsubiw,
255 &feature_jmpcall,
256253 &feature_lpm,
254 &feature_spm,
255 &feature_ijmpcall,
256 &feature_sram,
257257 &feature_break,
258 &feature_jmpcall,
258259 &feature_mul,
259 &feature_sram,
260 &feature_ijmpcall,
261260 &feature_movw,
261 &feature_addsubiw,
262262 },
263263};
264264
265265pub const cpu_at90pwm1 = Cpu{
266266 .name = "at90pwm1",
267267 .llvm_name = "at90pwm1",
268 .subfeatures = &[_]*const Feature {
268 .dependencies = &[_]*const Feature {
269269 &feature_lpmx,
270 &feature_lpm,
270271 &feature_spm,
271 &feature_addsubiw,
272 &feature_ijmpcall,
273 &feature_sram,
272274 &feature_break,
273 &feature_lpm,
274275 &feature_mul,
275 &feature_sram,
276 &feature_ijmpcall,
277276 &feature_movw,
277 &feature_addsubiw,
278278 },
279279};
280280
281281pub const cpu_at90pwm161 = Cpu{
282282 .name = "at90pwm161",
283283 .llvm_name = "at90pwm161",
284 .subfeatures = &[_]*const Feature {
284 .dependencies = &[_]*const Feature {
285285 &feature_lpmx,
286 &feature_spm,
287 &feature_addsubiw,
288 &feature_jmpcall,
289286 &feature_lpm,
287 &feature_spm,
288 &feature_ijmpcall,
289 &feature_sram,
290290 &feature_break,
291 &feature_jmpcall,
291292 &feature_mul,
292 &feature_sram,
293 &feature_ijmpcall,
294293 &feature_movw,
294 &feature_addsubiw,
295295 },
296296};
297297
298298pub const cpu_at90pwm2 = Cpu{
299299 .name = "at90pwm2",
300300 .llvm_name = "at90pwm2",
301 .subfeatures = &[_]*const Feature {
301 .dependencies = &[_]*const Feature {
302302 &feature_lpmx,
303 &feature_lpm,
303304 &feature_spm,
304 &feature_addsubiw,
305 &feature_ijmpcall,
306 &feature_sram,
305307 &feature_break,
306 &feature_lpm,
307308 &feature_mul,
308 &feature_sram,
309 &feature_ijmpcall,
310309 &feature_movw,
310 &feature_addsubiw,
311311 },
312312};
313313
314314pub const cpu_at90pwm216 = Cpu{
315315 .name = "at90pwm216",
316316 .llvm_name = "at90pwm216",
317 .subfeatures = &[_]*const Feature {
317 .dependencies = &[_]*const Feature {
318318 &feature_lpmx,
319 &feature_spm,
320 &feature_addsubiw,
321 &feature_jmpcall,
322319 &feature_lpm,
320 &feature_spm,
321 &feature_ijmpcall,
322 &feature_sram,
323323 &feature_break,
324 &feature_jmpcall,
324325 &feature_mul,
325 &feature_sram,
326 &feature_ijmpcall,
327326 &feature_movw,
327 &feature_addsubiw,
328328 },
329329};
330330
331331pub const cpu_at90pwm2b = Cpu{
332332 .name = "at90pwm2b",
333333 .llvm_name = "at90pwm2b",
334 .subfeatures = &[_]*const Feature {
334 .dependencies = &[_]*const Feature {
335335 &feature_lpmx,
336 &feature_lpm,
336337 &feature_spm,
337 &feature_addsubiw,
338 &feature_ijmpcall,
339 &feature_sram,
338340 &feature_break,
339 &feature_lpm,
340341 &feature_mul,
341 &feature_sram,
342 &feature_ijmpcall,
343342 &feature_movw,
343 &feature_addsubiw,
344344 },
345345};
346346
347347pub const cpu_at90pwm3 = Cpu{
348348 .name = "at90pwm3",
349349 .llvm_name = "at90pwm3",
350 .subfeatures = &[_]*const Feature {
350 .dependencies = &[_]*const Feature {
351351 &feature_lpmx,
352 &feature_lpm,
352353 &feature_spm,
353 &feature_addsubiw,
354 &feature_ijmpcall,
355 &feature_sram,
354356 &feature_break,
355 &feature_lpm,
356357 &feature_mul,
357 &feature_sram,
358 &feature_ijmpcall,
359358 &feature_movw,
359 &feature_addsubiw,
360360 },
361361};
362362
363363pub const cpu_at90pwm316 = Cpu{
364364 .name = "at90pwm316",
365365 .llvm_name = "at90pwm316",
366 .subfeatures = &[_]*const Feature {
366 .dependencies = &[_]*const Feature {
367367 &feature_lpmx,
368 &feature_spm,
369 &feature_addsubiw,
370 &feature_jmpcall,
371368 &feature_lpm,
369 &feature_spm,
370 &feature_ijmpcall,
371 &feature_sram,
372372 &feature_break,
373 &feature_jmpcall,
373374 &feature_mul,
374 &feature_sram,
375 &feature_ijmpcall,
376375 &feature_movw,
376 &feature_addsubiw,
377377 },
378378};
379379
380380pub const cpu_at90pwm3b = Cpu{
381381 .name = "at90pwm3b",
382382 .llvm_name = "at90pwm3b",
383 .subfeatures = &[_]*const Feature {
383 .dependencies = &[_]*const Feature {
384384 &feature_lpmx,
385 &feature_lpm,
385386 &feature_spm,
386 &feature_addsubiw,
387 &feature_ijmpcall,
388 &feature_sram,
387389 &feature_break,
388 &feature_lpm,
389390 &feature_mul,
390 &feature_sram,
391 &feature_ijmpcall,
392391 &feature_movw,
392 &feature_addsubiw,
393393 },
394394};
395395
396396pub const cpu_at90pwm81 = Cpu{
397397 .name = "at90pwm81",
398398 .llvm_name = "at90pwm81",
399 .subfeatures = &[_]*const Feature {
399 .dependencies = &[_]*const Feature {
400400 &feature_lpmx,
401 &feature_lpm,
401402 &feature_spm,
402 &feature_addsubiw,
403 &feature_ijmpcall,
404 &feature_sram,
403405 &feature_break,
404 &feature_lpm,
405406 &feature_mul,
406 &feature_sram,
407 &feature_ijmpcall,
408407 &feature_movw,
408 &feature_addsubiw,
409409 },
410410};
411411
412412pub const cpu_at90s1200 = Cpu{
413413 .name = "at90s1200",
414414 .llvm_name = "at90s1200",
415 .subfeatures = &[_]*const Feature {
415 .dependencies = &[_]*const Feature {
416416 },
417417};
418418
419419pub const cpu_at90s2313 = Cpu{
420420 .name = "at90s2313",
421421 .llvm_name = "at90s2313",
422 .subfeatures = &[_]*const Feature {
423 &feature_addsubiw,
422 .dependencies = &[_]*const Feature {
424423 &feature_lpm,
425 &feature_sram,
426424 &feature_ijmpcall,
425 &feature_sram,
426 &feature_addsubiw,
427427 },
428428};
429429
430430pub const cpu_at90s2323 = Cpu{
431431 .name = "at90s2323",
432432 .llvm_name = "at90s2323",
433 .subfeatures = &[_]*const Feature {
434 &feature_addsubiw,
433 .dependencies = &[_]*const Feature {
435434 &feature_lpm,
436 &feature_sram,
437435 &feature_ijmpcall,
436 &feature_sram,
437 &feature_addsubiw,
438438 },
439439};
440440
441441pub const cpu_at90s2333 = Cpu{
442442 .name = "at90s2333",
443443 .llvm_name = "at90s2333",
444 .subfeatures = &[_]*const Feature {
445 &feature_addsubiw,
444 .dependencies = &[_]*const Feature {
446445 &feature_lpm,
447 &feature_sram,
448446 &feature_ijmpcall,
447 &feature_sram,
448 &feature_addsubiw,
449449 },
450450};
451451
452452pub const cpu_at90s2343 = Cpu{
453453 .name = "at90s2343",
454454 .llvm_name = "at90s2343",
455 .subfeatures = &[_]*const Feature {
456 &feature_addsubiw,
455 .dependencies = &[_]*const Feature {
457456 &feature_lpm,
458 &feature_sram,
459457 &feature_ijmpcall,
458 &feature_sram,
459 &feature_addsubiw,
460460 },
461461};
462462
463463pub const cpu_at90s4414 = Cpu{
464464 .name = "at90s4414",
465465 .llvm_name = "at90s4414",
466 .subfeatures = &[_]*const Feature {
467 &feature_addsubiw,
466 .dependencies = &[_]*const Feature {
468467 &feature_lpm,
469 &feature_sram,
470468 &feature_ijmpcall,
469 &feature_sram,
470 &feature_addsubiw,
471471 },
472472};
473473
474474pub const cpu_at90s4433 = Cpu{
475475 .name = "at90s4433",
476476 .llvm_name = "at90s4433",
477 .subfeatures = &[_]*const Feature {
478 &feature_addsubiw,
477 .dependencies = &[_]*const Feature {
479478 &feature_lpm,
480 &feature_sram,
481479 &feature_ijmpcall,
480 &feature_sram,
481 &feature_addsubiw,
482482 },
483483};
484484
485485pub const cpu_at90s4434 = Cpu{
486486 .name = "at90s4434",
487487 .llvm_name = "at90s4434",
488 .subfeatures = &[_]*const Feature {
489 &feature_addsubiw,
488 .dependencies = &[_]*const Feature {
490489 &feature_lpm,
491 &feature_sram,
492490 &feature_ijmpcall,
491 &feature_sram,
492 &feature_addsubiw,
493493 },
494494};
495495
496496pub const cpu_at90s8515 = Cpu{
497497 .name = "at90s8515",
498498 .llvm_name = "at90s8515",
499 .subfeatures = &[_]*const Feature {
500 &feature_addsubiw,
499 .dependencies = &[_]*const Feature {
501500 &feature_lpm,
502 &feature_sram,
503501 &feature_ijmpcall,
502 &feature_sram,
503 &feature_addsubiw,
504504 },
505505};
506506
507507pub const cpu_at90s8535 = Cpu{
508508 .name = "at90s8535",
509509 .llvm_name = "at90s8535",
510 .subfeatures = &[_]*const Feature {
511 &feature_addsubiw,
510 .dependencies = &[_]*const Feature {
512511 &feature_lpm,
513 &feature_sram,
514512 &feature_ijmpcall,
513 &feature_sram,
514 &feature_addsubiw,
515515 },
516516};
517517
518518pub const cpu_at90scr100 = Cpu{
519519 .name = "at90scr100",
520520 .llvm_name = "at90scr100",
521 .subfeatures = &[_]*const Feature {
521 .dependencies = &[_]*const Feature {
522522 &feature_lpmx,
523 &feature_spm,
524 &feature_addsubiw,
525 &feature_jmpcall,
526523 &feature_lpm,
524 &feature_spm,
525 &feature_ijmpcall,
526 &feature_sram,
527527 &feature_break,
528 &feature_jmpcall,
528529 &feature_mul,
529 &feature_sram,
530 &feature_ijmpcall,
531530 &feature_movw,
531 &feature_addsubiw,
532532 },
533533};
534534
535535pub const cpu_at90usb1286 = Cpu{
536536 .name = "at90usb1286",
537537 .llvm_name = "at90usb1286",
538 .subfeatures = &[_]*const Feature {
538 .dependencies = &[_]*const Feature {
539539 &feature_lpmx,
540 &feature_elpm,
540541 &feature_spm,
541 &feature_addsubiw,
542 &feature_jmpcall,
543542 &feature_lpm,
544 &feature_break,
545 &feature_mul,
546 &feature_elpm,
543 &feature_ijmpcall,
547544 &feature_elpmx,
548545 &feature_sram,
549 &feature_ijmpcall,
546 &feature_break,
547 &feature_jmpcall,
548 &feature_mul,
550549 &feature_movw,
550 &feature_addsubiw,
551551 },
552552};
553553
554554pub const cpu_at90usb1287 = Cpu{
555555 .name = "at90usb1287",
556556 .llvm_name = "at90usb1287",
557 .subfeatures = &[_]*const Feature {
557 .dependencies = &[_]*const Feature {
558558 &feature_lpmx,
559 &feature_elpm,
559560 &feature_spm,
560 &feature_addsubiw,
561 &feature_jmpcall,
562561 &feature_lpm,
563 &feature_break,
564 &feature_mul,
565 &feature_elpm,
562 &feature_ijmpcall,
566563 &feature_elpmx,
567564 &feature_sram,
568 &feature_ijmpcall,
565 &feature_break,
566 &feature_jmpcall,
567 &feature_mul,
569568 &feature_movw,
569 &feature_addsubiw,
570570 },
571571};
572572
573573pub const cpu_at90usb162 = Cpu{
574574 .name = "at90usb162",
575575 .llvm_name = "at90usb162",
576 .subfeatures = &[_]*const Feature {
576 .dependencies = &[_]*const Feature {
577577 &feature_lpmx,
578 &feature_spm,
579 &feature_addsubiw,
580 &feature_jmpcall,
581578 &feature_lpm,
582 &feature_break,
583 &feature_sram,
579 &feature_spm,
584580 &feature_ijmpcall,
581 &feature_sram,
582 &feature_break,
583 &feature_jmpcall,
585584 &feature_movw,
585 &feature_addsubiw,
586586 },
587587};
588588
589589pub const cpu_at90usb646 = Cpu{
590590 .name = "at90usb646",
591591 .llvm_name = "at90usb646",
592 .subfeatures = &[_]*const Feature {
592 .dependencies = &[_]*const Feature {
593593 &feature_lpmx,
594 &feature_spm,
595 &feature_addsubiw,
596 &feature_jmpcall,
597594 &feature_lpm,
595 &feature_spm,
596 &feature_ijmpcall,
597 &feature_sram,
598598 &feature_break,
599 &feature_jmpcall,
599600 &feature_mul,
600 &feature_sram,
601 &feature_ijmpcall,
602601 &feature_movw,
602 &feature_addsubiw,
603603 },
604604};
605605
606606pub const cpu_at90usb647 = Cpu{
607607 .name = "at90usb647",
608608 .llvm_name = "at90usb647",
609 .subfeatures = &[_]*const Feature {
609 .dependencies = &[_]*const Feature {
610610 &feature_lpmx,
611 &feature_spm,
612 &feature_addsubiw,
613 &feature_jmpcall,
614611 &feature_lpm,
612 &feature_spm,
613 &feature_ijmpcall,
614 &feature_sram,
615615 &feature_break,
616 &feature_jmpcall,
616617 &feature_mul,
617 &feature_sram,
618 &feature_ijmpcall,
619618 &feature_movw,
619 &feature_addsubiw,
620620 },
621621};
622622
623623pub const cpu_at90usb82 = Cpu{
624624 .name = "at90usb82",
625625 .llvm_name = "at90usb82",
626 .subfeatures = &[_]*const Feature {
626 .dependencies = &[_]*const Feature {
627627 &feature_lpmx,
628 &feature_spm,
629 &feature_addsubiw,
630 &feature_jmpcall,
631628 &feature_lpm,
632 &feature_break,
633 &feature_sram,
629 &feature_spm,
634630 &feature_ijmpcall,
631 &feature_sram,
632 &feature_break,
633 &feature_jmpcall,
635634 &feature_movw,
635 &feature_addsubiw,
636636 },
637637};
638638
639639pub const cpu_at94k = Cpu{
640640 .name = "at94k",
641641 .llvm_name = "at94k",
642 .subfeatures = &[_]*const Feature {
643 &feature_addsubiw,
644 &feature_jmpcall,
642 .dependencies = &[_]*const Feature {
645643 &feature_lpm,
646 &feature_sram,
647644 &feature_ijmpcall,
645 &feature_sram,
646 &feature_jmpcall,
647 &feature_addsubiw,
648648 &feature_lpmx,
649649 &feature_movw,
650650 &feature_mul,
......@@ -654,326 +654,326 @@ pub const cpu_at94k = Cpu{
654654pub const cpu_ata5272 = Cpu{
655655 .name = "ata5272",
656656 .llvm_name = "ata5272",
657 .subfeatures = &[_]*const Feature {
657 .dependencies = &[_]*const Feature {
658658 &feature_lpmx,
659 &feature_lpm,
659660 &feature_spm,
660 &feature_addsubiw,
661 &feature_break,
662 &feature_lpm,
663 &feature_sram,
664661 &feature_ijmpcall,
662 &feature_sram,
663 &feature_break,
665664 &feature_movw,
665 &feature_addsubiw,
666666 },
667667};
668668
669669pub const cpu_ata5505 = Cpu{
670670 .name = "ata5505",
671671 .llvm_name = "ata5505",
672 .subfeatures = &[_]*const Feature {
672 .dependencies = &[_]*const Feature {
673673 &feature_lpmx,
674 &feature_spm,
675 &feature_addsubiw,
676 &feature_jmpcall,
677674 &feature_lpm,
678 &feature_break,
679 &feature_sram,
675 &feature_spm,
680676 &feature_ijmpcall,
677 &feature_sram,
678 &feature_break,
679 &feature_jmpcall,
681680 &feature_movw,
681 &feature_addsubiw,
682682 },
683683};
684684
685685pub const cpu_ata5790 = Cpu{
686686 .name = "ata5790",
687687 .llvm_name = "ata5790",
688 .subfeatures = &[_]*const Feature {
688 .dependencies = &[_]*const Feature {
689689 &feature_lpmx,
690 &feature_spm,
691 &feature_addsubiw,
692 &feature_jmpcall,
693690 &feature_lpm,
691 &feature_spm,
692 &feature_ijmpcall,
693 &feature_sram,
694694 &feature_break,
695 &feature_jmpcall,
695696 &feature_mul,
696 &feature_sram,
697 &feature_ijmpcall,
698697 &feature_movw,
698 &feature_addsubiw,
699699 },
700700};
701701
702702pub const cpu_ata5795 = Cpu{
703703 .name = "ata5795",
704704 .llvm_name = "ata5795",
705 .subfeatures = &[_]*const Feature {
705 .dependencies = &[_]*const Feature {
706706 &feature_lpmx,
707 &feature_spm,
708 &feature_addsubiw,
709 &feature_jmpcall,
710707 &feature_lpm,
708 &feature_spm,
709 &feature_ijmpcall,
710 &feature_sram,
711711 &feature_break,
712 &feature_jmpcall,
712713 &feature_mul,
713 &feature_sram,
714 &feature_ijmpcall,
715714 &feature_movw,
715 &feature_addsubiw,
716716 },
717717};
718718
719719pub const cpu_ata6285 = Cpu{
720720 .name = "ata6285",
721721 .llvm_name = "ata6285",
722 .subfeatures = &[_]*const Feature {
722 .dependencies = &[_]*const Feature {
723723 &feature_lpmx,
724 &feature_lpm,
724725 &feature_spm,
725 &feature_addsubiw,
726 &feature_ijmpcall,
727 &feature_sram,
726728 &feature_break,
727 &feature_lpm,
728729 &feature_mul,
729 &feature_sram,
730 &feature_ijmpcall,
731730 &feature_movw,
731 &feature_addsubiw,
732732 },
733733};
734734
735735pub const cpu_ata6286 = Cpu{
736736 .name = "ata6286",
737737 .llvm_name = "ata6286",
738 .subfeatures = &[_]*const Feature {
738 .dependencies = &[_]*const Feature {
739739 &feature_lpmx,
740 &feature_lpm,
740741 &feature_spm,
741 &feature_addsubiw,
742 &feature_ijmpcall,
743 &feature_sram,
742744 &feature_break,
743 &feature_lpm,
744745 &feature_mul,
745 &feature_sram,
746 &feature_ijmpcall,
747746 &feature_movw,
747 &feature_addsubiw,
748748 },
749749};
750750
751751pub const cpu_ata6289 = Cpu{
752752 .name = "ata6289",
753753 .llvm_name = "ata6289",
754 .subfeatures = &[_]*const Feature {
754 .dependencies = &[_]*const Feature {
755755 &feature_lpmx,
756 &feature_lpm,
756757 &feature_spm,
757 &feature_addsubiw,
758 &feature_ijmpcall,
759 &feature_sram,
758760 &feature_break,
759 &feature_lpm,
760761 &feature_mul,
761 &feature_sram,
762 &feature_ijmpcall,
763762 &feature_movw,
763 &feature_addsubiw,
764764 },
765765};
766766
767767pub const cpu_atmega103 = Cpu{
768768 .name = "atmega103",
769769 .llvm_name = "atmega103",
770 .subfeatures = &[_]*const Feature {
771 &feature_addsubiw,
772 &feature_jmpcall,
773 &feature_lpm,
770 .dependencies = &[_]*const Feature {
774771 &feature_elpm,
775 &feature_sram,
772 &feature_lpm,
776773 &feature_ijmpcall,
774 &feature_sram,
775 &feature_jmpcall,
776 &feature_addsubiw,
777777 },
778778};
779779
780780pub const cpu_atmega128 = Cpu{
781781 .name = "atmega128",
782782 .llvm_name = "atmega128",
783 .subfeatures = &[_]*const Feature {
783 .dependencies = &[_]*const Feature {
784784 &feature_lpmx,
785 &feature_elpm,
785786 &feature_spm,
786 &feature_addsubiw,
787 &feature_jmpcall,
788787 &feature_lpm,
789 &feature_break,
790 &feature_mul,
791 &feature_elpm,
788 &feature_ijmpcall,
792789 &feature_elpmx,
793790 &feature_sram,
794 &feature_ijmpcall,
791 &feature_break,
792 &feature_jmpcall,
793 &feature_mul,
795794 &feature_movw,
795 &feature_addsubiw,
796796 },
797797};
798798
799799pub const cpu_atmega1280 = Cpu{
800800 .name = "atmega1280",
801801 .llvm_name = "atmega1280",
802 .subfeatures = &[_]*const Feature {
802 .dependencies = &[_]*const Feature {
803803 &feature_lpmx,
804 &feature_elpm,
804805 &feature_spm,
805 &feature_addsubiw,
806 &feature_jmpcall,
807806 &feature_lpm,
808 &feature_break,
809 &feature_mul,
810 &feature_elpm,
807 &feature_ijmpcall,
811808 &feature_elpmx,
812809 &feature_sram,
813 &feature_ijmpcall,
810 &feature_break,
811 &feature_jmpcall,
812 &feature_mul,
814813 &feature_movw,
814 &feature_addsubiw,
815815 },
816816};
817817
818818pub const cpu_atmega1281 = Cpu{
819819 .name = "atmega1281",
820820 .llvm_name = "atmega1281",
821 .subfeatures = &[_]*const Feature {
821 .dependencies = &[_]*const Feature {
822822 &feature_lpmx,
823 &feature_elpm,
823824 &feature_spm,
824 &feature_addsubiw,
825 &feature_jmpcall,
826825 &feature_lpm,
827 &feature_break,
828 &feature_mul,
829 &feature_elpm,
826 &feature_ijmpcall,
830827 &feature_elpmx,
831828 &feature_sram,
832 &feature_ijmpcall,
829 &feature_break,
830 &feature_jmpcall,
831 &feature_mul,
833832 &feature_movw,
833 &feature_addsubiw,
834834 },
835835};
836836
837837pub const cpu_atmega1284 = Cpu{
838838 .name = "atmega1284",
839839 .llvm_name = "atmega1284",
840 .subfeatures = &[_]*const Feature {
840 .dependencies = &[_]*const Feature {
841841 &feature_lpmx,
842 &feature_elpm,
842843 &feature_spm,
843 &feature_addsubiw,
844 &feature_jmpcall,
845844 &feature_lpm,
846 &feature_break,
847 &feature_mul,
848 &feature_elpm,
845 &feature_ijmpcall,
849846 &feature_elpmx,
850847 &feature_sram,
851 &feature_ijmpcall,
848 &feature_break,
849 &feature_jmpcall,
850 &feature_mul,
852851 &feature_movw,
852 &feature_addsubiw,
853853 },
854854};
855855
856856pub const cpu_atmega1284p = Cpu{
857857 .name = "atmega1284p",
858858 .llvm_name = "atmega1284p",
859 .subfeatures = &[_]*const Feature {
859 .dependencies = &[_]*const Feature {
860860 &feature_lpmx,
861 &feature_elpm,
861862 &feature_spm,
862 &feature_addsubiw,
863 &feature_jmpcall,
864863 &feature_lpm,
865 &feature_break,
866 &feature_mul,
867 &feature_elpm,
864 &feature_ijmpcall,
868865 &feature_elpmx,
869866 &feature_sram,
870 &feature_ijmpcall,
867 &feature_break,
868 &feature_jmpcall,
869 &feature_mul,
871870 &feature_movw,
871 &feature_addsubiw,
872872 },
873873};
874874
875875pub const cpu_atmega1284rfr2 = Cpu{
876876 .name = "atmega1284rfr2",
877877 .llvm_name = "atmega1284rfr2",
878 .subfeatures = &[_]*const Feature {
878 .dependencies = &[_]*const Feature {
879879 &feature_lpmx,
880 &feature_elpm,
880881 &feature_spm,
881 &feature_addsubiw,
882 &feature_jmpcall,
883882 &feature_lpm,
884 &feature_break,
885 &feature_mul,
886 &feature_elpm,
883 &feature_ijmpcall,
887884 &feature_elpmx,
888885 &feature_sram,
889 &feature_ijmpcall,
886 &feature_break,
887 &feature_jmpcall,
888 &feature_mul,
890889 &feature_movw,
890 &feature_addsubiw,
891891 },
892892};
893893
894894pub const cpu_atmega128a = Cpu{
895895 .name = "atmega128a",
896896 .llvm_name = "atmega128a",
897 .subfeatures = &[_]*const Feature {
897 .dependencies = &[_]*const Feature {
898898 &feature_lpmx,
899 &feature_elpm,
899900 &feature_spm,
900 &feature_addsubiw,
901 &feature_jmpcall,
902901 &feature_lpm,
903 &feature_break,
904 &feature_mul,
905 &feature_elpm,
902 &feature_ijmpcall,
906903 &feature_elpmx,
907904 &feature_sram,
908 &feature_ijmpcall,
905 &feature_break,
906 &feature_jmpcall,
907 &feature_mul,
909908 &feature_movw,
909 &feature_addsubiw,
910910 },
911911};
912912
913913pub const cpu_atmega128rfa1 = Cpu{
914914 .name = "atmega128rfa1",
915915 .llvm_name = "atmega128rfa1",
916 .subfeatures = &[_]*const Feature {
916 .dependencies = &[_]*const Feature {
917917 &feature_lpmx,
918 &feature_elpm,
918919 &feature_spm,
919 &feature_addsubiw,
920 &feature_jmpcall,
921920 &feature_lpm,
922 &feature_break,
923 &feature_mul,
924 &feature_elpm,
921 &feature_ijmpcall,
925922 &feature_elpmx,
926923 &feature_sram,
927 &feature_ijmpcall,
924 &feature_break,
925 &feature_jmpcall,
926 &feature_mul,
928927 &feature_movw,
928 &feature_addsubiw,
929929 },
930930};
931931
932932pub const cpu_atmega128rfr2 = Cpu{
933933 .name = "atmega128rfr2",
934934 .llvm_name = "atmega128rfr2",
935 .subfeatures = &[_]*const Feature {
935 .dependencies = &[_]*const Feature {
936936 &feature_lpmx,
937 &feature_elpm,
937938 &feature_spm,
938 &feature_addsubiw,
939 &feature_jmpcall,
940939 &feature_lpm,
941 &feature_break,
942 &feature_mul,
943 &feature_elpm,
940 &feature_ijmpcall,
944941 &feature_elpmx,
945942 &feature_sram,
946 &feature_ijmpcall,
943 &feature_break,
944 &feature_jmpcall,
945 &feature_mul,
947946 &feature_movw,
947 &feature_addsubiw,
948948 },
949949};
950950
951951pub const cpu_atmega16 = Cpu{
952952 .name = "atmega16",
953953 .llvm_name = "atmega16",
954 .subfeatures = &[_]*const Feature {
954 .dependencies = &[_]*const Feature {
955955 &feature_lpmx,
956 &feature_spm,
957 &feature_addsubiw,
958 &feature_jmpcall,
959956 &feature_lpm,
957 &feature_spm,
958 &feature_ijmpcall,
959 &feature_sram,
960960 &feature_break,
961 &feature_jmpcall,
961962 &feature_mul,
962 &feature_sram,
963 &feature_ijmpcall,
964963 &feature_movw,
964 &feature_addsubiw,
965965 },
966966};
967967
968968pub const cpu_atmega161 = Cpu{
969969 .name = "atmega161",
970970 .llvm_name = "atmega161",
971 .subfeatures = &[_]*const Feature {
972 &feature_addsubiw,
973 &feature_jmpcall,
971 .dependencies = &[_]*const Feature {
974972 &feature_lpm,
975 &feature_sram,
976973 &feature_ijmpcall,
974 &feature_sram,
975 &feature_jmpcall,
976 &feature_addsubiw,
977977 &feature_lpmx,
978978 &feature_movw,
979979 &feature_mul,
......@@ -984,29 +984,29 @@ pub const cpu_atmega161 = Cpu{
984984pub const cpu_atmega162 = Cpu{
985985 .name = "atmega162",
986986 .llvm_name = "atmega162",
987 .subfeatures = &[_]*const Feature {
987 .dependencies = &[_]*const Feature {
988988 &feature_lpmx,
989 &feature_spm,
990 &feature_addsubiw,
991 &feature_jmpcall,
992989 &feature_lpm,
990 &feature_spm,
991 &feature_ijmpcall,
992 &feature_sram,
993993 &feature_break,
994 &feature_jmpcall,
994995 &feature_mul,
995 &feature_sram,
996 &feature_ijmpcall,
997996 &feature_movw,
997 &feature_addsubiw,
998998 },
999999};
10001000
10011001pub const cpu_atmega163 = Cpu{
10021002 .name = "atmega163",
10031003 .llvm_name = "atmega163",
1004 .subfeatures = &[_]*const Feature {
1005 &feature_addsubiw,
1006 &feature_jmpcall,
1004 .dependencies = &[_]*const Feature {
10071005 &feature_lpm,
1008 &feature_sram,
10091006 &feature_ijmpcall,
1007 &feature_sram,
1008 &feature_jmpcall,
1009 &feature_addsubiw,
10101010 &feature_lpmx,
10111011 &feature_movw,
10121012 &feature_mul,
......@@ -1017,1508 +1017,1508 @@ pub const cpu_atmega163 = Cpu{
10171017pub const cpu_atmega164a = Cpu{
10181018 .name = "atmega164a",
10191019 .llvm_name = "atmega164a",
1020 .subfeatures = &[_]*const Feature {
1020 .dependencies = &[_]*const Feature {
10211021 &feature_lpmx,
1022 &feature_spm,
1023 &feature_addsubiw,
1024 &feature_jmpcall,
10251022 &feature_lpm,
1023 &feature_spm,
1024 &feature_ijmpcall,
1025 &feature_sram,
10261026 &feature_break,
1027 &feature_jmpcall,
10271028 &feature_mul,
1028 &feature_sram,
1029 &feature_ijmpcall,
10301029 &feature_movw,
1030 &feature_addsubiw,
10311031 },
10321032};
10331033
10341034pub const cpu_atmega164p = Cpu{
10351035 .name = "atmega164p",
10361036 .llvm_name = "atmega164p",
1037 .subfeatures = &[_]*const Feature {
1037 .dependencies = &[_]*const Feature {
10381038 &feature_lpmx,
1039 &feature_spm,
1040 &feature_addsubiw,
1041 &feature_jmpcall,
10421039 &feature_lpm,
1040 &feature_spm,
1041 &feature_ijmpcall,
1042 &feature_sram,
10431043 &feature_break,
1044 &feature_jmpcall,
10441045 &feature_mul,
1045 &feature_sram,
1046 &feature_ijmpcall,
10471046 &feature_movw,
1047 &feature_addsubiw,
10481048 },
10491049};
10501050
10511051pub const cpu_atmega164pa = Cpu{
10521052 .name = "atmega164pa",
10531053 .llvm_name = "atmega164pa",
1054 .subfeatures = &[_]*const Feature {
1054 .dependencies = &[_]*const Feature {
10551055 &feature_lpmx,
1056 &feature_spm,
1057 &feature_addsubiw,
1058 &feature_jmpcall,
10591056 &feature_lpm,
1057 &feature_spm,
1058 &feature_ijmpcall,
1059 &feature_sram,
10601060 &feature_break,
1061 &feature_jmpcall,
10611062 &feature_mul,
1062 &feature_sram,
1063 &feature_ijmpcall,
10641063 &feature_movw,
1064 &feature_addsubiw,
10651065 },
10661066};
10671067
10681068pub const cpu_atmega165 = Cpu{
10691069 .name = "atmega165",
10701070 .llvm_name = "atmega165",
1071 .subfeatures = &[_]*const Feature {
1071 .dependencies = &[_]*const Feature {
10721072 &feature_lpmx,
1073 &feature_spm,
1074 &feature_addsubiw,
1075 &feature_jmpcall,
10761073 &feature_lpm,
1074 &feature_spm,
1075 &feature_ijmpcall,
1076 &feature_sram,
10771077 &feature_break,
1078 &feature_jmpcall,
10781079 &feature_mul,
1079 &feature_sram,
1080 &feature_ijmpcall,
10811080 &feature_movw,
1081 &feature_addsubiw,
10821082 },
10831083};
10841084
10851085pub const cpu_atmega165a = Cpu{
10861086 .name = "atmega165a",
10871087 .llvm_name = "atmega165a",
1088 .subfeatures = &[_]*const Feature {
1088 .dependencies = &[_]*const Feature {
10891089 &feature_lpmx,
1090 &feature_spm,
1091 &feature_addsubiw,
1092 &feature_jmpcall,
10931090 &feature_lpm,
1091 &feature_spm,
1092 &feature_ijmpcall,
1093 &feature_sram,
10941094 &feature_break,
1095 &feature_jmpcall,
10951096 &feature_mul,
1096 &feature_sram,
1097 &feature_ijmpcall,
10981097 &feature_movw,
1098 &feature_addsubiw,
10991099 },
11001100};
11011101
11021102pub const cpu_atmega165p = Cpu{
11031103 .name = "atmega165p",
11041104 .llvm_name = "atmega165p",
1105 .subfeatures = &[_]*const Feature {
1105 .dependencies = &[_]*const Feature {
11061106 &feature_lpmx,
1107 &feature_spm,
1108 &feature_addsubiw,
1109 &feature_jmpcall,
11101107 &feature_lpm,
1108 &feature_spm,
1109 &feature_ijmpcall,
1110 &feature_sram,
11111111 &feature_break,
1112 &feature_jmpcall,
11121113 &feature_mul,
1113 &feature_sram,
1114 &feature_ijmpcall,
11151114 &feature_movw,
1115 &feature_addsubiw,
11161116 },
11171117};
11181118
11191119pub const cpu_atmega165pa = Cpu{
11201120 .name = "atmega165pa",
11211121 .llvm_name = "atmega165pa",
1122 .subfeatures = &[_]*const Feature {
1122 .dependencies = &[_]*const Feature {
11231123 &feature_lpmx,
1124 &feature_spm,
1125 &feature_addsubiw,
1126 &feature_jmpcall,
11271124 &feature_lpm,
1125 &feature_spm,
1126 &feature_ijmpcall,
1127 &feature_sram,
11281128 &feature_break,
1129 &feature_jmpcall,
11291130 &feature_mul,
1130 &feature_sram,
1131 &feature_ijmpcall,
11321131 &feature_movw,
1132 &feature_addsubiw,
11331133 },
11341134};
11351135
11361136pub const cpu_atmega168 = Cpu{
11371137 .name = "atmega168",
11381138 .llvm_name = "atmega168",
1139 .subfeatures = &[_]*const Feature {
1139 .dependencies = &[_]*const Feature {
11401140 &feature_lpmx,
1141 &feature_spm,
1142 &feature_addsubiw,
1143 &feature_jmpcall,
11441141 &feature_lpm,
1142 &feature_spm,
1143 &feature_ijmpcall,
1144 &feature_sram,
11451145 &feature_break,
1146 &feature_jmpcall,
11461147 &feature_mul,
1147 &feature_sram,
1148 &feature_ijmpcall,
11491148 &feature_movw,
1149 &feature_addsubiw,
11501150 },
11511151};
11521152
11531153pub const cpu_atmega168a = Cpu{
11541154 .name = "atmega168a",
11551155 .llvm_name = "atmega168a",
1156 .subfeatures = &[_]*const Feature {
1156 .dependencies = &[_]*const Feature {
11571157 &feature_lpmx,
1158 &feature_spm,
1159 &feature_addsubiw,
1160 &feature_jmpcall,
11611158 &feature_lpm,
1159 &feature_spm,
1160 &feature_ijmpcall,
1161 &feature_sram,
11621162 &feature_break,
1163 &feature_jmpcall,
11631164 &feature_mul,
1164 &feature_sram,
1165 &feature_ijmpcall,
11661165 &feature_movw,
1166 &feature_addsubiw,
11671167 },
11681168};
11691169
11701170pub const cpu_atmega168p = Cpu{
11711171 .name = "atmega168p",
11721172 .llvm_name = "atmega168p",
1173 .subfeatures = &[_]*const Feature {
1173 .dependencies = &[_]*const Feature {
11741174 &feature_lpmx,
1175 &feature_spm,
1176 &feature_addsubiw,
1177 &feature_jmpcall,
11781175 &feature_lpm,
1176 &feature_spm,
1177 &feature_ijmpcall,
1178 &feature_sram,
11791179 &feature_break,
1180 &feature_jmpcall,
11801181 &feature_mul,
1181 &feature_sram,
1182 &feature_ijmpcall,
11831182 &feature_movw,
1183 &feature_addsubiw,
11841184 },
11851185};
11861186
11871187pub const cpu_atmega168pa = Cpu{
11881188 .name = "atmega168pa",
11891189 .llvm_name = "atmega168pa",
1190 .subfeatures = &[_]*const Feature {
1190 .dependencies = &[_]*const Feature {
11911191 &feature_lpmx,
1192 &feature_spm,
1193 &feature_addsubiw,
1194 &feature_jmpcall,
11951192 &feature_lpm,
1193 &feature_spm,
1194 &feature_ijmpcall,
1195 &feature_sram,
11961196 &feature_break,
1197 &feature_jmpcall,
11971198 &feature_mul,
1198 &feature_sram,
1199 &feature_ijmpcall,
12001199 &feature_movw,
1200 &feature_addsubiw,
12011201 },
12021202};
12031203
12041204pub const cpu_atmega169 = Cpu{
12051205 .name = "atmega169",
12061206 .llvm_name = "atmega169",
1207 .subfeatures = &[_]*const Feature {
1207 .dependencies = &[_]*const Feature {
12081208 &feature_lpmx,
1209 &feature_spm,
1210 &feature_addsubiw,
1211 &feature_jmpcall,
12121209 &feature_lpm,
1210 &feature_spm,
1211 &feature_ijmpcall,
1212 &feature_sram,
12131213 &feature_break,
1214 &feature_jmpcall,
12141215 &feature_mul,
1215 &feature_sram,
1216 &feature_ijmpcall,
12171216 &feature_movw,
1217 &feature_addsubiw,
12181218 },
12191219};
12201220
12211221pub const cpu_atmega169a = Cpu{
12221222 .name = "atmega169a",
12231223 .llvm_name = "atmega169a",
1224 .subfeatures = &[_]*const Feature {
1224 .dependencies = &[_]*const Feature {
12251225 &feature_lpmx,
1226 &feature_spm,
1227 &feature_addsubiw,
1228 &feature_jmpcall,
12291226 &feature_lpm,
1227 &feature_spm,
1228 &feature_ijmpcall,
1229 &feature_sram,
12301230 &feature_break,
1231 &feature_jmpcall,
12311232 &feature_mul,
1232 &feature_sram,
1233 &feature_ijmpcall,
12341233 &feature_movw,
1234 &feature_addsubiw,
12351235 },
12361236};
12371237
12381238pub const cpu_atmega169p = Cpu{
12391239 .name = "atmega169p",
12401240 .llvm_name = "atmega169p",
1241 .subfeatures = &[_]*const Feature {
1241 .dependencies = &[_]*const Feature {
12421242 &feature_lpmx,
1243 &feature_spm,
1244 &feature_addsubiw,
1245 &feature_jmpcall,
12461243 &feature_lpm,
1244 &feature_spm,
1245 &feature_ijmpcall,
1246 &feature_sram,
12471247 &feature_break,
1248 &feature_jmpcall,
12481249 &feature_mul,
1249 &feature_sram,
1250 &feature_ijmpcall,
12511250 &feature_movw,
1251 &feature_addsubiw,
12521252 },
12531253};
12541254
12551255pub const cpu_atmega169pa = Cpu{
12561256 .name = "atmega169pa",
12571257 .llvm_name = "atmega169pa",
1258 .subfeatures = &[_]*const Feature {
1258 .dependencies = &[_]*const Feature {
12591259 &feature_lpmx,
1260 &feature_spm,
1261 &feature_addsubiw,
1262 &feature_jmpcall,
12631260 &feature_lpm,
1261 &feature_spm,
1262 &feature_ijmpcall,
1263 &feature_sram,
12641264 &feature_break,
1265 &feature_jmpcall,
12651266 &feature_mul,
1266 &feature_sram,
1267 &feature_ijmpcall,
12681267 &feature_movw,
1268 &feature_addsubiw,
12691269 },
12701270};
12711271
12721272pub const cpu_atmega16a = Cpu{
12731273 .name = "atmega16a",
12741274 .llvm_name = "atmega16a",
1275 .subfeatures = &[_]*const Feature {
1275 .dependencies = &[_]*const Feature {
12761276 &feature_lpmx,
1277 &feature_spm,
1278 &feature_addsubiw,
1279 &feature_jmpcall,
12801277 &feature_lpm,
1278 &feature_spm,
1279 &feature_ijmpcall,
1280 &feature_sram,
12811281 &feature_break,
1282 &feature_jmpcall,
12821283 &feature_mul,
1283 &feature_sram,
1284 &feature_ijmpcall,
12851284 &feature_movw,
1285 &feature_addsubiw,
12861286 },
12871287};
12881288
12891289pub const cpu_atmega16hva = Cpu{
12901290 .name = "atmega16hva",
12911291 .llvm_name = "atmega16hva",
1292 .subfeatures = &[_]*const Feature {
1292 .dependencies = &[_]*const Feature {
12931293 &feature_lpmx,
1294 &feature_spm,
1295 &feature_addsubiw,
1296 &feature_jmpcall,
12971294 &feature_lpm,
1295 &feature_spm,
1296 &feature_ijmpcall,
1297 &feature_sram,
12981298 &feature_break,
1299 &feature_jmpcall,
12991300 &feature_mul,
1300 &feature_sram,
1301 &feature_ijmpcall,
13021301 &feature_movw,
1302 &feature_addsubiw,
13031303 },
13041304};
13051305
13061306pub const cpu_atmega16hva2 = Cpu{
13071307 .name = "atmega16hva2",
13081308 .llvm_name = "atmega16hva2",
1309 .subfeatures = &[_]*const Feature {
1309 .dependencies = &[_]*const Feature {
13101310 &feature_lpmx,
1311 &feature_spm,
1312 &feature_addsubiw,
1313 &feature_jmpcall,
13141311 &feature_lpm,
1312 &feature_spm,
1313 &feature_ijmpcall,
1314 &feature_sram,
13151315 &feature_break,
1316 &feature_jmpcall,
13161317 &feature_mul,
1317 &feature_sram,
1318 &feature_ijmpcall,
13191318 &feature_movw,
1319 &feature_addsubiw,
13201320 },
13211321};
13221322
13231323pub const cpu_atmega16hvb = Cpu{
13241324 .name = "atmega16hvb",
13251325 .llvm_name = "atmega16hvb",
1326 .subfeatures = &[_]*const Feature {
1326 .dependencies = &[_]*const Feature {
13271327 &feature_lpmx,
1328 &feature_spm,
1329 &feature_addsubiw,
1330 &feature_jmpcall,
13311328 &feature_lpm,
1329 &feature_spm,
1330 &feature_ijmpcall,
1331 &feature_sram,
13321332 &feature_break,
1333 &feature_jmpcall,
13331334 &feature_mul,
1334 &feature_sram,
1335 &feature_ijmpcall,
13361335 &feature_movw,
1336 &feature_addsubiw,
13371337 },
13381338};
13391339
13401340pub const cpu_atmega16hvbrevb = Cpu{
13411341 .name = "atmega16hvbrevb",
13421342 .llvm_name = "atmega16hvbrevb",
1343 .subfeatures = &[_]*const Feature {
1343 .dependencies = &[_]*const Feature {
13441344 &feature_lpmx,
1345 &feature_spm,
1346 &feature_addsubiw,
1347 &feature_jmpcall,
13481345 &feature_lpm,
1346 &feature_spm,
1347 &feature_ijmpcall,
1348 &feature_sram,
13491349 &feature_break,
1350 &feature_jmpcall,
13501351 &feature_mul,
1351 &feature_sram,
1352 &feature_ijmpcall,
13531352 &feature_movw,
1353 &feature_addsubiw,
13541354 },
13551355};
13561356
13571357pub const cpu_atmega16m1 = Cpu{
13581358 .name = "atmega16m1",
13591359 .llvm_name = "atmega16m1",
1360 .subfeatures = &[_]*const Feature {
1360 .dependencies = &[_]*const Feature {
13611361 &feature_lpmx,
1362 &feature_spm,
1363 &feature_addsubiw,
1364 &feature_jmpcall,
13651362 &feature_lpm,
1363 &feature_spm,
1364 &feature_ijmpcall,
1365 &feature_sram,
13661366 &feature_break,
1367 &feature_jmpcall,
13671368 &feature_mul,
1368 &feature_sram,
1369 &feature_ijmpcall,
13701369 &feature_movw,
1370 &feature_addsubiw,
13711371 },
13721372};
13731373
13741374pub const cpu_atmega16u2 = Cpu{
13751375 .name = "atmega16u2",
13761376 .llvm_name = "atmega16u2",
1377 .subfeatures = &[_]*const Feature {
1377 .dependencies = &[_]*const Feature {
13781378 &feature_lpmx,
1379 &feature_spm,
1380 &feature_addsubiw,
1381 &feature_jmpcall,
13821379 &feature_lpm,
1383 &feature_break,
1384 &feature_sram,
1380 &feature_spm,
13851381 &feature_ijmpcall,
1382 &feature_sram,
1383 &feature_break,
1384 &feature_jmpcall,
13861385 &feature_movw,
1386 &feature_addsubiw,
13871387 },
13881388};
13891389
13901390pub const cpu_atmega16u4 = Cpu{
13911391 .name = "atmega16u4",
13921392 .llvm_name = "atmega16u4",
1393 .subfeatures = &[_]*const Feature {
1393 .dependencies = &[_]*const Feature {
13941394 &feature_lpmx,
1395 &feature_spm,
1396 &feature_addsubiw,
1397 &feature_jmpcall,
13981395 &feature_lpm,
1396 &feature_spm,
1397 &feature_ijmpcall,
1398 &feature_sram,
13991399 &feature_break,
1400 &feature_jmpcall,
14001401 &feature_mul,
1401 &feature_sram,
1402 &feature_ijmpcall,
14031402 &feature_movw,
1403 &feature_addsubiw,
14041404 },
14051405};
14061406
14071407pub const cpu_atmega2560 = Cpu{
14081408 .name = "atmega2560",
14091409 .llvm_name = "atmega2560",
1410 .subfeatures = &[_]*const Feature {
1410 .dependencies = &[_]*const Feature {
14111411 &feature_lpmx,
1412 &feature_spm,
1413 &feature_addsubiw,
1414 &feature_jmpcall,
1412 &feature_elpm,
14151413 &feature_lpm,
1414 &feature_spm,
1415 &feature_ijmpcall,
1416 &feature_movw,
1417 &feature_sram,
14161418 &feature_break,
1419 &feature_jmpcall,
14171420 &feature_mul,
1418 &feature_elpm,
14191421 &feature_elpmx,
1420 &feature_sram,
1421 &feature_ijmpcall,
1422 &feature_movw,
1422 &feature_addsubiw,
14231423 },
14241424};
14251425
14261426pub const cpu_atmega2561 = Cpu{
14271427 .name = "atmega2561",
14281428 .llvm_name = "atmega2561",
1429 .subfeatures = &[_]*const Feature {
1429 .dependencies = &[_]*const Feature {
14301430 &feature_lpmx,
1431 &feature_spm,
1432 &feature_addsubiw,
1433 &feature_jmpcall,
1431 &feature_elpm,
14341432 &feature_lpm,
1433 &feature_spm,
1434 &feature_ijmpcall,
1435 &feature_movw,
1436 &feature_sram,
14351437 &feature_break,
1438 &feature_jmpcall,
14361439 &feature_mul,
1437 &feature_elpm,
14381440 &feature_elpmx,
1439 &feature_sram,
1440 &feature_ijmpcall,
1441 &feature_movw,
1441 &feature_addsubiw,
14421442 },
14431443};
14441444
14451445pub const cpu_atmega2564rfr2 = Cpu{
14461446 .name = "atmega2564rfr2",
14471447 .llvm_name = "atmega2564rfr2",
1448 .subfeatures = &[_]*const Feature {
1448 .dependencies = &[_]*const Feature {
14491449 &feature_lpmx,
1450 &feature_spm,
1451 &feature_addsubiw,
1452 &feature_jmpcall,
1450 &feature_elpm,
14531451 &feature_lpm,
1452 &feature_spm,
1453 &feature_ijmpcall,
1454 &feature_movw,
1455 &feature_sram,
14541456 &feature_break,
1457 &feature_jmpcall,
14551458 &feature_mul,
1456 &feature_elpm,
14571459 &feature_elpmx,
1458 &feature_sram,
1459 &feature_ijmpcall,
1460 &feature_movw,
1460 &feature_addsubiw,
14611461 },
14621462};
14631463
14641464pub const cpu_atmega256rfr2 = Cpu{
14651465 .name = "atmega256rfr2",
14661466 .llvm_name = "atmega256rfr2",
1467 .subfeatures = &[_]*const Feature {
1467 .dependencies = &[_]*const Feature {
14681468 &feature_lpmx,
1469 &feature_spm,
1470 &feature_addsubiw,
1471 &feature_jmpcall,
1469 &feature_elpm,
14721470 &feature_lpm,
1471 &feature_spm,
1472 &feature_ijmpcall,
1473 &feature_movw,
1474 &feature_sram,
14731475 &feature_break,
1476 &feature_jmpcall,
14741477 &feature_mul,
1475 &feature_elpm,
14761478 &feature_elpmx,
1477 &feature_sram,
1478 &feature_ijmpcall,
1479 &feature_movw,
1479 &feature_addsubiw,
14801480 },
14811481};
14821482
14831483pub const cpu_atmega32 = Cpu{
14841484 .name = "atmega32",
14851485 .llvm_name = "atmega32",
1486 .subfeatures = &[_]*const Feature {
1486 .dependencies = &[_]*const Feature {
14871487 &feature_lpmx,
1488 &feature_spm,
1489 &feature_addsubiw,
1490 &feature_jmpcall,
14911488 &feature_lpm,
1489 &feature_spm,
1490 &feature_ijmpcall,
1491 &feature_sram,
14921492 &feature_break,
1493 &feature_jmpcall,
14931494 &feature_mul,
1494 &feature_sram,
1495 &feature_ijmpcall,
14961495 &feature_movw,
1496 &feature_addsubiw,
14971497 },
14981498};
14991499
15001500pub const cpu_atmega323 = Cpu{
15011501 .name = "atmega323",
15021502 .llvm_name = "atmega323",
1503 .subfeatures = &[_]*const Feature {
1503 .dependencies = &[_]*const Feature {
15041504 &feature_lpmx,
1505 &feature_spm,
1506 &feature_addsubiw,
1507 &feature_jmpcall,
15081505 &feature_lpm,
1506 &feature_spm,
1507 &feature_ijmpcall,
1508 &feature_sram,
15091509 &feature_break,
1510 &feature_jmpcall,
15101511 &feature_mul,
1511 &feature_sram,
1512 &feature_ijmpcall,
15131512 &feature_movw,
1513 &feature_addsubiw,
15141514 },
15151515};
15161516
15171517pub const cpu_atmega324a = Cpu{
15181518 .name = "atmega324a",
15191519 .llvm_name = "atmega324a",
1520 .subfeatures = &[_]*const Feature {
1520 .dependencies = &[_]*const Feature {
15211521 &feature_lpmx,
1522 &feature_spm,
1523 &feature_addsubiw,
1524 &feature_jmpcall,
15251522 &feature_lpm,
1523 &feature_spm,
1524 &feature_ijmpcall,
1525 &feature_sram,
15261526 &feature_break,
1527 &feature_jmpcall,
15271528 &feature_mul,
1528 &feature_sram,
1529 &feature_ijmpcall,
15301529 &feature_movw,
1530 &feature_addsubiw,
15311531 },
15321532};
15331533
15341534pub const cpu_atmega324p = Cpu{
15351535 .name = "atmega324p",
15361536 .llvm_name = "atmega324p",
1537 .subfeatures = &[_]*const Feature {
1537 .dependencies = &[_]*const Feature {
15381538 &feature_lpmx,
1539 &feature_spm,
1540 &feature_addsubiw,
1541 &feature_jmpcall,
15421539 &feature_lpm,
1540 &feature_spm,
1541 &feature_ijmpcall,
1542 &feature_sram,
15431543 &feature_break,
1544 &feature_jmpcall,
15441545 &feature_mul,
1545 &feature_sram,
1546 &feature_ijmpcall,
15471546 &feature_movw,
1547 &feature_addsubiw,
15481548 },
15491549};
15501550
15511551pub const cpu_atmega324pa = Cpu{
15521552 .name = "atmega324pa",
15531553 .llvm_name = "atmega324pa",
1554 .subfeatures = &[_]*const Feature {
1554 .dependencies = &[_]*const Feature {
15551555 &feature_lpmx,
1556 &feature_spm,
1557 &feature_addsubiw,
1558 &feature_jmpcall,
15591556 &feature_lpm,
1557 &feature_spm,
1558 &feature_ijmpcall,
1559 &feature_sram,
15601560 &feature_break,
1561 &feature_jmpcall,
15611562 &feature_mul,
1562 &feature_sram,
1563 &feature_ijmpcall,
15641563 &feature_movw,
1564 &feature_addsubiw,
15651565 },
15661566};
15671567
15681568pub const cpu_atmega325 = Cpu{
15691569 .name = "atmega325",
15701570 .llvm_name = "atmega325",
1571 .subfeatures = &[_]*const Feature {
1571 .dependencies = &[_]*const Feature {
15721572 &feature_lpmx,
1573 &feature_spm,
1574 &feature_addsubiw,
1575 &feature_jmpcall,
15761573 &feature_lpm,
1574 &feature_spm,
1575 &feature_ijmpcall,
1576 &feature_sram,
15771577 &feature_break,
1578 &feature_jmpcall,
15781579 &feature_mul,
1579 &feature_sram,
1580 &feature_ijmpcall,
15811580 &feature_movw,
1581 &feature_addsubiw,
15821582 },
15831583};
15841584
15851585pub const cpu_atmega3250 = Cpu{
15861586 .name = "atmega3250",
15871587 .llvm_name = "atmega3250",
1588 .subfeatures = &[_]*const Feature {
1588 .dependencies = &[_]*const Feature {
15891589 &feature_lpmx,
1590 &feature_spm,
1591 &feature_addsubiw,
1592 &feature_jmpcall,
15931590 &feature_lpm,
1591 &feature_spm,
1592 &feature_ijmpcall,
1593 &feature_sram,
15941594 &feature_break,
1595 &feature_jmpcall,
15951596 &feature_mul,
1596 &feature_sram,
1597 &feature_ijmpcall,
15981597 &feature_movw,
1598 &feature_addsubiw,
15991599 },
16001600};
16011601
16021602pub const cpu_atmega3250a = Cpu{
16031603 .name = "atmega3250a",
16041604 .llvm_name = "atmega3250a",
1605 .subfeatures = &[_]*const Feature {
1605 .dependencies = &[_]*const Feature {
16061606 &feature_lpmx,
1607 &feature_spm,
1608 &feature_addsubiw,
1609 &feature_jmpcall,
16101607 &feature_lpm,
1608 &feature_spm,
1609 &feature_ijmpcall,
1610 &feature_sram,
16111611 &feature_break,
1612 &feature_jmpcall,
16121613 &feature_mul,
1613 &feature_sram,
1614 &feature_ijmpcall,
16151614 &feature_movw,
1615 &feature_addsubiw,
16161616 },
16171617};
16181618
16191619pub const cpu_atmega3250p = Cpu{
16201620 .name = "atmega3250p",
16211621 .llvm_name = "atmega3250p",
1622 .subfeatures = &[_]*const Feature {
1622 .dependencies = &[_]*const Feature {
16231623 &feature_lpmx,
1624 &feature_spm,
1625 &feature_addsubiw,
1626 &feature_jmpcall,
16271624 &feature_lpm,
1625 &feature_spm,
1626 &feature_ijmpcall,
1627 &feature_sram,
16281628 &feature_break,
1629 &feature_jmpcall,
16291630 &feature_mul,
1630 &feature_sram,
1631 &feature_ijmpcall,
16321631 &feature_movw,
1632 &feature_addsubiw,
16331633 },
16341634};
16351635
16361636pub const cpu_atmega3250pa = Cpu{
16371637 .name = "atmega3250pa",
16381638 .llvm_name = "atmega3250pa",
1639 .subfeatures = &[_]*const Feature {
1639 .dependencies = &[_]*const Feature {
16401640 &feature_lpmx,
1641 &feature_spm,
1642 &feature_addsubiw,
1643 &feature_jmpcall,
16441641 &feature_lpm,
1642 &feature_spm,
1643 &feature_ijmpcall,
1644 &feature_sram,
16451645 &feature_break,
1646 &feature_jmpcall,
16461647 &feature_mul,
1647 &feature_sram,
1648 &feature_ijmpcall,
16491648 &feature_movw,
1649 &feature_addsubiw,
16501650 },
16511651};
16521652
16531653pub const cpu_atmega325a = Cpu{
16541654 .name = "atmega325a",
16551655 .llvm_name = "atmega325a",
1656 .subfeatures = &[_]*const Feature {
1656 .dependencies = &[_]*const Feature {
16571657 &feature_lpmx,
1658 &feature_spm,
1659 &feature_addsubiw,
1660 &feature_jmpcall,
16611658 &feature_lpm,
1659 &feature_spm,
1660 &feature_ijmpcall,
1661 &feature_sram,
16621662 &feature_break,
1663 &feature_jmpcall,
16631664 &feature_mul,
1664 &feature_sram,
1665 &feature_ijmpcall,
16661665 &feature_movw,
1666 &feature_addsubiw,
16671667 },
16681668};
16691669
16701670pub const cpu_atmega325p = Cpu{
16711671 .name = "atmega325p",
16721672 .llvm_name = "atmega325p",
1673 .subfeatures = &[_]*const Feature {
1673 .dependencies = &[_]*const Feature {
16741674 &feature_lpmx,
1675 &feature_spm,
1676 &feature_addsubiw,
1677 &feature_jmpcall,
16781675 &feature_lpm,
1676 &feature_spm,
1677 &feature_ijmpcall,
1678 &feature_sram,
16791679 &feature_break,
1680 &feature_jmpcall,
16801681 &feature_mul,
1681 &feature_sram,
1682 &feature_ijmpcall,
16831682 &feature_movw,
1683 &feature_addsubiw,
16841684 },
16851685};
16861686
16871687pub const cpu_atmega325pa = Cpu{
16881688 .name = "atmega325pa",
16891689 .llvm_name = "atmega325pa",
1690 .subfeatures = &[_]*const Feature {
1690 .dependencies = &[_]*const Feature {
16911691 &feature_lpmx,
1692 &feature_spm,
1693 &feature_addsubiw,
1694 &feature_jmpcall,
16951692 &feature_lpm,
1693 &feature_spm,
1694 &feature_ijmpcall,
1695 &feature_sram,
16961696 &feature_break,
1697 &feature_jmpcall,
16971698 &feature_mul,
1698 &feature_sram,
1699 &feature_ijmpcall,
17001699 &feature_movw,
1700 &feature_addsubiw,
17011701 },
17021702};
17031703
17041704pub const cpu_atmega328 = Cpu{
17051705 .name = "atmega328",
17061706 .llvm_name = "atmega328",
1707 .subfeatures = &[_]*const Feature {
1707 .dependencies = &[_]*const Feature {
17081708 &feature_lpmx,
1709 &feature_spm,
1710 &feature_addsubiw,
1711 &feature_jmpcall,
17121709 &feature_lpm,
1710 &feature_spm,
1711 &feature_ijmpcall,
1712 &feature_sram,
17131713 &feature_break,
1714 &feature_jmpcall,
17141715 &feature_mul,
1715 &feature_sram,
1716 &feature_ijmpcall,
17171716 &feature_movw,
1717 &feature_addsubiw,
17181718 },
17191719};
17201720
17211721pub const cpu_atmega328p = Cpu{
17221722 .name = "atmega328p",
17231723 .llvm_name = "atmega328p",
1724 .subfeatures = &[_]*const Feature {
1724 .dependencies = &[_]*const Feature {
17251725 &feature_lpmx,
1726 &feature_spm,
1727 &feature_addsubiw,
1728 &feature_jmpcall,
17291726 &feature_lpm,
1727 &feature_spm,
1728 &feature_ijmpcall,
1729 &feature_sram,
17301730 &feature_break,
1731 &feature_jmpcall,
17311732 &feature_mul,
1732 &feature_sram,
1733 &feature_ijmpcall,
17341733 &feature_movw,
1734 &feature_addsubiw,
17351735 },
17361736};
17371737
17381738pub const cpu_atmega329 = Cpu{
17391739 .name = "atmega329",
17401740 .llvm_name = "atmega329",
1741 .subfeatures = &[_]*const Feature {
1741 .dependencies = &[_]*const Feature {
17421742 &feature_lpmx,
1743 &feature_spm,
1744 &feature_addsubiw,
1745 &feature_jmpcall,
17461743 &feature_lpm,
1744 &feature_spm,
1745 &feature_ijmpcall,
1746 &feature_sram,
17471747 &feature_break,
1748 &feature_jmpcall,
17481749 &feature_mul,
1749 &feature_sram,
1750 &feature_ijmpcall,
17511750 &feature_movw,
1751 &feature_addsubiw,
17521752 },
17531753};
17541754
17551755pub const cpu_atmega3290 = Cpu{
17561756 .name = "atmega3290",
17571757 .llvm_name = "atmega3290",
1758 .subfeatures = &[_]*const Feature {
1758 .dependencies = &[_]*const Feature {
17591759 &feature_lpmx,
1760 &feature_spm,
1761 &feature_addsubiw,
1762 &feature_jmpcall,
17631760 &feature_lpm,
1761 &feature_spm,
1762 &feature_ijmpcall,
1763 &feature_sram,
17641764 &feature_break,
1765 &feature_jmpcall,
17651766 &feature_mul,
1766 &feature_sram,
1767 &feature_ijmpcall,
17681767 &feature_movw,
1768 &feature_addsubiw,
17691769 },
17701770};
17711771
17721772pub const cpu_atmega3290a = Cpu{
17731773 .name = "atmega3290a",
17741774 .llvm_name = "atmega3290a",
1775 .subfeatures = &[_]*const Feature {
1775 .dependencies = &[_]*const Feature {
17761776 &feature_lpmx,
1777 &feature_spm,
1778 &feature_addsubiw,
1779 &feature_jmpcall,
17801777 &feature_lpm,
1778 &feature_spm,
1779 &feature_ijmpcall,
1780 &feature_sram,
17811781 &feature_break,
1782 &feature_jmpcall,
17821783 &feature_mul,
1783 &feature_sram,
1784 &feature_ijmpcall,
17851784 &feature_movw,
1785 &feature_addsubiw,
17861786 },
17871787};
17881788
17891789pub const cpu_atmega3290p = Cpu{
17901790 .name = "atmega3290p",
17911791 .llvm_name = "atmega3290p",
1792 .subfeatures = &[_]*const Feature {
1792 .dependencies = &[_]*const Feature {
17931793 &feature_lpmx,
1794 &feature_spm,
1795 &feature_addsubiw,
1796 &feature_jmpcall,
17971794 &feature_lpm,
1795 &feature_spm,
1796 &feature_ijmpcall,
1797 &feature_sram,
17981798 &feature_break,
1799 &feature_jmpcall,
17991800 &feature_mul,
1800 &feature_sram,
1801 &feature_ijmpcall,
18021801 &feature_movw,
1802 &feature_addsubiw,
18031803 },
18041804};
18051805
18061806pub const cpu_atmega3290pa = Cpu{
18071807 .name = "atmega3290pa",
18081808 .llvm_name = "atmega3290pa",
1809 .subfeatures = &[_]*const Feature {
1809 .dependencies = &[_]*const Feature {
18101810 &feature_lpmx,
1811 &feature_spm,
1812 &feature_addsubiw,
1813 &feature_jmpcall,
18141811 &feature_lpm,
1812 &feature_spm,
1813 &feature_ijmpcall,
1814 &feature_sram,
18151815 &feature_break,
1816 &feature_jmpcall,
18161817 &feature_mul,
1817 &feature_sram,
1818 &feature_ijmpcall,
18191818 &feature_movw,
1819 &feature_addsubiw,
18201820 },
18211821};
18221822
18231823pub const cpu_atmega329a = Cpu{
18241824 .name = "atmega329a",
18251825 .llvm_name = "atmega329a",
1826 .subfeatures = &[_]*const Feature {
1826 .dependencies = &[_]*const Feature {
18271827 &feature_lpmx,
1828 &feature_spm,
1829 &feature_addsubiw,
1830 &feature_jmpcall,
18311828 &feature_lpm,
1829 &feature_spm,
1830 &feature_ijmpcall,
1831 &feature_sram,
18321832 &feature_break,
1833 &feature_jmpcall,
18331834 &feature_mul,
1834 &feature_sram,
1835 &feature_ijmpcall,
18361835 &feature_movw,
1836 &feature_addsubiw,
18371837 },
18381838};
18391839
18401840pub const cpu_atmega329p = Cpu{
18411841 .name = "atmega329p",
18421842 .llvm_name = "atmega329p",
1843 .subfeatures = &[_]*const Feature {
1843 .dependencies = &[_]*const Feature {
18441844 &feature_lpmx,
1845 &feature_spm,
1846 &feature_addsubiw,
1847 &feature_jmpcall,
18481845 &feature_lpm,
1846 &feature_spm,
1847 &feature_ijmpcall,
1848 &feature_sram,
18491849 &feature_break,
1850 &feature_jmpcall,
18501851 &feature_mul,
1851 &feature_sram,
1852 &feature_ijmpcall,
18531852 &feature_movw,
1853 &feature_addsubiw,
18541854 },
18551855};
18561856
18571857pub const cpu_atmega329pa = Cpu{
18581858 .name = "atmega329pa",
18591859 .llvm_name = "atmega329pa",
1860 .subfeatures = &[_]*const Feature {
1860 .dependencies = &[_]*const Feature {
18611861 &feature_lpmx,
1862 &feature_spm,
1863 &feature_addsubiw,
1864 &feature_jmpcall,
18651862 &feature_lpm,
1863 &feature_spm,
1864 &feature_ijmpcall,
1865 &feature_sram,
18661866 &feature_break,
1867 &feature_jmpcall,
18671868 &feature_mul,
1868 &feature_sram,
1869 &feature_ijmpcall,
18701869 &feature_movw,
1870 &feature_addsubiw,
18711871 },
18721872};
18731873
18741874pub const cpu_atmega32a = Cpu{
18751875 .name = "atmega32a",
18761876 .llvm_name = "atmega32a",
1877 .subfeatures = &[_]*const Feature {
1877 .dependencies = &[_]*const Feature {
18781878 &feature_lpmx,
1879 &feature_spm,
1880 &feature_addsubiw,
1881 &feature_jmpcall,
18821879 &feature_lpm,
1880 &feature_spm,
1881 &feature_ijmpcall,
1882 &feature_sram,
18831883 &feature_break,
1884 &feature_jmpcall,
18841885 &feature_mul,
1885 &feature_sram,
1886 &feature_ijmpcall,
18871886 &feature_movw,
1887 &feature_addsubiw,
18881888 },
18891889};
18901890
18911891pub const cpu_atmega32c1 = Cpu{
18921892 .name = "atmega32c1",
18931893 .llvm_name = "atmega32c1",
1894 .subfeatures = &[_]*const Feature {
1894 .dependencies = &[_]*const Feature {
18951895 &feature_lpmx,
1896 &feature_spm,
1897 &feature_addsubiw,
1898 &feature_jmpcall,
18991896 &feature_lpm,
1897 &feature_spm,
1898 &feature_ijmpcall,
1899 &feature_sram,
19001900 &feature_break,
1901 &feature_jmpcall,
19011902 &feature_mul,
1902 &feature_sram,
1903 &feature_ijmpcall,
19041903 &feature_movw,
1904 &feature_addsubiw,
19051905 },
19061906};
19071907
19081908pub const cpu_atmega32hvb = Cpu{
19091909 .name = "atmega32hvb",
19101910 .llvm_name = "atmega32hvb",
1911 .subfeatures = &[_]*const Feature {
1911 .dependencies = &[_]*const Feature {
19121912 &feature_lpmx,
1913 &feature_spm,
1914 &feature_addsubiw,
1915 &feature_jmpcall,
19161913 &feature_lpm,
1914 &feature_spm,
1915 &feature_ijmpcall,
1916 &feature_sram,
19171917 &feature_break,
1918 &feature_jmpcall,
19181919 &feature_mul,
1919 &feature_sram,
1920 &feature_ijmpcall,
19211920 &feature_movw,
1921 &feature_addsubiw,
19221922 },
19231923};
19241924
19251925pub const cpu_atmega32hvbrevb = Cpu{
19261926 .name = "atmega32hvbrevb",
19271927 .llvm_name = "atmega32hvbrevb",
1928 .subfeatures = &[_]*const Feature {
1928 .dependencies = &[_]*const Feature {
19291929 &feature_lpmx,
1930 &feature_spm,
1931 &feature_addsubiw,
1932 &feature_jmpcall,
19331930 &feature_lpm,
1931 &feature_spm,
1932 &feature_ijmpcall,
1933 &feature_sram,
19341934 &feature_break,
1935 &feature_jmpcall,
19351936 &feature_mul,
1936 &feature_sram,
1937 &feature_ijmpcall,
19381937 &feature_movw,
1938 &feature_addsubiw,
19391939 },
19401940};
19411941
19421942pub const cpu_atmega32m1 = Cpu{
19431943 .name = "atmega32m1",
19441944 .llvm_name = "atmega32m1",
1945 .subfeatures = &[_]*const Feature {
1945 .dependencies = &[_]*const Feature {
19461946 &feature_lpmx,
1947 &feature_spm,
1948 &feature_addsubiw,
1949 &feature_jmpcall,
19501947 &feature_lpm,
1951 &feature_break,
1952 &feature_mul,
1953 &feature_sram,
1948 &feature_spm,
19541949 &feature_ijmpcall,
1950 &feature_sram,
1951 &feature_break,
1952 &feature_jmpcall,
1953 &feature_mul,
19551954 &feature_movw,
1955 &feature_addsubiw,
19561956 },
19571957};
19581958
19591959pub const cpu_atmega32u2 = Cpu{
19601960 .name = "atmega32u2",
19611961 .llvm_name = "atmega32u2",
1962 .subfeatures = &[_]*const Feature {
1962 .dependencies = &[_]*const Feature {
19631963 &feature_lpmx,
1964 &feature_spm,
1965 &feature_addsubiw,
1966 &feature_jmpcall,
19671964 &feature_lpm,
1968 &feature_break,
1969 &feature_sram,
1965 &feature_spm,
19701966 &feature_ijmpcall,
1967 &feature_sram,
1968 &feature_break,
1969 &feature_jmpcall,
19711970 &feature_movw,
1971 &feature_addsubiw,
19721972 },
19731973};
19741974
19751975pub const cpu_atmega32u4 = Cpu{
19761976 .name = "atmega32u4",
19771977 .llvm_name = "atmega32u4",
1978 .subfeatures = &[_]*const Feature {
1978 .dependencies = &[_]*const Feature {
19791979 &feature_lpmx,
1980 &feature_spm,
1981 &feature_addsubiw,
1982 &feature_jmpcall,
19831980 &feature_lpm,
1981 &feature_spm,
1982 &feature_ijmpcall,
1983 &feature_sram,
19841984 &feature_break,
1985 &feature_jmpcall,
19851986 &feature_mul,
1986 &feature_sram,
1987 &feature_ijmpcall,
19881987 &feature_movw,
1988 &feature_addsubiw,
19891989 },
19901990};
19911991
19921992pub const cpu_atmega32u6 = Cpu{
19931993 .name = "atmega32u6",
19941994 .llvm_name = "atmega32u6",
1995 .subfeatures = &[_]*const Feature {
1995 .dependencies = &[_]*const Feature {
19961996 &feature_lpmx,
1997 &feature_spm,
1998 &feature_addsubiw,
1999 &feature_jmpcall,
20001997 &feature_lpm,
1998 &feature_spm,
1999 &feature_ijmpcall,
2000 &feature_sram,
20012001 &feature_break,
2002 &feature_jmpcall,
20022003 &feature_mul,
2003 &feature_sram,
2004 &feature_ijmpcall,
20052004 &feature_movw,
2005 &feature_addsubiw,
20062006 },
20072007};
20082008
20092009pub const cpu_atmega406 = Cpu{
20102010 .name = "atmega406",
20112011 .llvm_name = "atmega406",
2012 .subfeatures = &[_]*const Feature {
2012 .dependencies = &[_]*const Feature {
20132013 &feature_lpmx,
2014 &feature_spm,
2015 &feature_addsubiw,
2016 &feature_jmpcall,
20172014 &feature_lpm,
2015 &feature_spm,
2016 &feature_ijmpcall,
2017 &feature_sram,
20182018 &feature_break,
2019 &feature_jmpcall,
20192020 &feature_mul,
2020 &feature_sram,
2021 &feature_ijmpcall,
20222021 &feature_movw,
2022 &feature_addsubiw,
20232023 },
20242024};
20252025
20262026pub const cpu_atmega48 = Cpu{
20272027 .name = "atmega48",
20282028 .llvm_name = "atmega48",
2029 .subfeatures = &[_]*const Feature {
2029 .dependencies = &[_]*const Feature {
20302030 &feature_lpmx,
2031 &feature_lpm,
20312032 &feature_spm,
2032 &feature_addsubiw,
2033 &feature_ijmpcall,
2034 &feature_sram,
20332035 &feature_break,
2034 &feature_lpm,
20352036 &feature_mul,
2036 &feature_sram,
2037 &feature_ijmpcall,
20382037 &feature_movw,
2038 &feature_addsubiw,
20392039 },
20402040};
20412041
20422042pub const cpu_atmega48a = Cpu{
20432043 .name = "atmega48a",
20442044 .llvm_name = "atmega48a",
2045 .subfeatures = &[_]*const Feature {
2045 .dependencies = &[_]*const Feature {
20462046 &feature_lpmx,
2047 &feature_lpm,
20472048 &feature_spm,
2048 &feature_addsubiw,
2049 &feature_ijmpcall,
2050 &feature_sram,
20492051 &feature_break,
2050 &feature_lpm,
20512052 &feature_mul,
2052 &feature_sram,
2053 &feature_ijmpcall,
20542053 &feature_movw,
2054 &feature_addsubiw,
20552055 },
20562056};
20572057
20582058pub const cpu_atmega48p = Cpu{
20592059 .name = "atmega48p",
20602060 .llvm_name = "atmega48p",
2061 .subfeatures = &[_]*const Feature {
2061 .dependencies = &[_]*const Feature {
20622062 &feature_lpmx,
2063 &feature_lpm,
20632064 &feature_spm,
2064 &feature_addsubiw,
2065 &feature_ijmpcall,
2066 &feature_sram,
20652067 &feature_break,
2066 &feature_lpm,
20672068 &feature_mul,
2068 &feature_sram,
2069 &feature_ijmpcall,
20702069 &feature_movw,
2070 &feature_addsubiw,
20712071 },
20722072};
20732073
20742074pub const cpu_atmega48pa = Cpu{
20752075 .name = "atmega48pa",
20762076 .llvm_name = "atmega48pa",
2077 .subfeatures = &[_]*const Feature {
2077 .dependencies = &[_]*const Feature {
20782078 &feature_lpmx,
2079 &feature_lpm,
20792080 &feature_spm,
2080 &feature_addsubiw,
2081 &feature_ijmpcall,
2082 &feature_sram,
20812083 &feature_break,
2082 &feature_lpm,
20832084 &feature_mul,
2084 &feature_sram,
2085 &feature_ijmpcall,
20862085 &feature_movw,
2086 &feature_addsubiw,
20872087 },
20882088};
20892089
20902090pub const cpu_atmega64 = Cpu{
20912091 .name = "atmega64",
20922092 .llvm_name = "atmega64",
2093 .subfeatures = &[_]*const Feature {
2093 .dependencies = &[_]*const Feature {
20942094 &feature_lpmx,
2095 &feature_spm,
2096 &feature_addsubiw,
2097 &feature_jmpcall,
20982095 &feature_lpm,
2096 &feature_spm,
2097 &feature_ijmpcall,
2098 &feature_sram,
20992099 &feature_break,
2100 &feature_jmpcall,
21002101 &feature_mul,
2101 &feature_sram,
2102 &feature_ijmpcall,
21032102 &feature_movw,
2103 &feature_addsubiw,
21042104 },
21052105};
21062106
21072107pub const cpu_atmega640 = Cpu{
21082108 .name = "atmega640",
21092109 .llvm_name = "atmega640",
2110 .subfeatures = &[_]*const Feature {
2110 .dependencies = &[_]*const Feature {
21112111 &feature_lpmx,
2112 &feature_spm,
2113 &feature_addsubiw,
2114 &feature_jmpcall,
21152112 &feature_lpm,
2113 &feature_spm,
2114 &feature_ijmpcall,
2115 &feature_sram,
21162116 &feature_break,
2117 &feature_jmpcall,
21172118 &feature_mul,
2118 &feature_sram,
2119 &feature_ijmpcall,
21202119 &feature_movw,
2120 &feature_addsubiw,
21212121 },
21222122};
21232123
21242124pub const cpu_atmega644 = Cpu{
21252125 .name = "atmega644",
21262126 .llvm_name = "atmega644",
2127 .subfeatures = &[_]*const Feature {
2127 .dependencies = &[_]*const Feature {
21282128 &feature_lpmx,
2129 &feature_spm,
2130 &feature_addsubiw,
2131 &feature_jmpcall,
21322129 &feature_lpm,
2130 &feature_spm,
2131 &feature_ijmpcall,
2132 &feature_sram,
21332133 &feature_break,
2134 &feature_jmpcall,
21342135 &feature_mul,
2135 &feature_sram,
2136 &feature_ijmpcall,
21372136 &feature_movw,
2137 &feature_addsubiw,
21382138 },
21392139};
21402140
21412141pub const cpu_atmega644a = Cpu{
21422142 .name = "atmega644a",
21432143 .llvm_name = "atmega644a",
2144 .subfeatures = &[_]*const Feature {
2144 .dependencies = &[_]*const Feature {
21452145 &feature_lpmx,
2146 &feature_spm,
2147 &feature_addsubiw,
2148 &feature_jmpcall,
21492146 &feature_lpm,
2147 &feature_spm,
2148 &feature_ijmpcall,
2149 &feature_sram,
21502150 &feature_break,
2151 &feature_jmpcall,
21512152 &feature_mul,
2152 &feature_sram,
2153 &feature_ijmpcall,
21542153 &feature_movw,
2154 &feature_addsubiw,
21552155 },
21562156};
21572157
21582158pub const cpu_atmega644p = Cpu{
21592159 .name = "atmega644p",
21602160 .llvm_name = "atmega644p",
2161 .subfeatures = &[_]*const Feature {
2161 .dependencies = &[_]*const Feature {
21622162 &feature_lpmx,
2163 &feature_spm,
2164 &feature_addsubiw,
2165 &feature_jmpcall,
21662163 &feature_lpm,
2164 &feature_spm,
2165 &feature_ijmpcall,
2166 &feature_sram,
21672167 &feature_break,
2168 &feature_jmpcall,
21682169 &feature_mul,
2169 &feature_sram,
2170 &feature_ijmpcall,
21712170 &feature_movw,
2171 &feature_addsubiw,
21722172 },
21732173};
21742174
21752175pub const cpu_atmega644pa = Cpu{
21762176 .name = "atmega644pa",
21772177 .llvm_name = "atmega644pa",
2178 .subfeatures = &[_]*const Feature {
2178 .dependencies = &[_]*const Feature {
21792179 &feature_lpmx,
2180 &feature_spm,
2181 &feature_addsubiw,
2182 &feature_jmpcall,
21832180 &feature_lpm,
2181 &feature_spm,
2182 &feature_ijmpcall,
2183 &feature_sram,
21842184 &feature_break,
2185 &feature_jmpcall,
21852186 &feature_mul,
2186 &feature_sram,
2187 &feature_ijmpcall,
21882187 &feature_movw,
2188 &feature_addsubiw,
21892189 },
21902190};
21912191
21922192pub const cpu_atmega644rfr2 = Cpu{
21932193 .name = "atmega644rfr2",
21942194 .llvm_name = "atmega644rfr2",
2195 .subfeatures = &[_]*const Feature {
2195 .dependencies = &[_]*const Feature {
21962196 &feature_lpmx,
2197 &feature_spm,
2198 &feature_addsubiw,
2199 &feature_jmpcall,
22002197 &feature_lpm,
2198 &feature_spm,
2199 &feature_ijmpcall,
2200 &feature_sram,
22012201 &feature_break,
2202 &feature_jmpcall,
22022203 &feature_mul,
2203 &feature_sram,
2204 &feature_ijmpcall,
22052204 &feature_movw,
2205 &feature_addsubiw,
22062206 },
22072207};
22082208
22092209pub const cpu_atmega645 = Cpu{
22102210 .name = "atmega645",
22112211 .llvm_name = "atmega645",
2212 .subfeatures = &[_]*const Feature {
2212 .dependencies = &[_]*const Feature {
22132213 &feature_lpmx,
2214 &feature_spm,
2215 &feature_addsubiw,
2216 &feature_jmpcall,
22172214 &feature_lpm,
2215 &feature_spm,
2216 &feature_ijmpcall,
2217 &feature_sram,
22182218 &feature_break,
2219 &feature_jmpcall,
22192220 &feature_mul,
2220 &feature_sram,
2221 &feature_ijmpcall,
22222221 &feature_movw,
2222 &feature_addsubiw,
22232223 },
22242224};
22252225
22262226pub const cpu_atmega6450 = Cpu{
22272227 .name = "atmega6450",
22282228 .llvm_name = "atmega6450",
2229 .subfeatures = &[_]*const Feature {
2229 .dependencies = &[_]*const Feature {
22302230 &feature_lpmx,
2231 &feature_spm,
2232 &feature_addsubiw,
2233 &feature_jmpcall,
22342231 &feature_lpm,
2232 &feature_spm,
2233 &feature_ijmpcall,
2234 &feature_sram,
22352235 &feature_break,
2236 &feature_jmpcall,
22362237 &feature_mul,
2237 &feature_sram,
2238 &feature_ijmpcall,
22392238 &feature_movw,
2239 &feature_addsubiw,
22402240 },
22412241};
22422242
22432243pub const cpu_atmega6450a = Cpu{
22442244 .name = "atmega6450a",
22452245 .llvm_name = "atmega6450a",
2246 .subfeatures = &[_]*const Feature {
2246 .dependencies = &[_]*const Feature {
22472247 &feature_lpmx,
2248 &feature_spm,
2249 &feature_addsubiw,
2250 &feature_jmpcall,
22512248 &feature_lpm,
2249 &feature_spm,
2250 &feature_ijmpcall,
2251 &feature_sram,
22522252 &feature_break,
2253 &feature_jmpcall,
22532254 &feature_mul,
2254 &feature_sram,
2255 &feature_ijmpcall,
22562255 &feature_movw,
2256 &feature_addsubiw,
22572257 },
22582258};
22592259
22602260pub const cpu_atmega6450p = Cpu{
22612261 .name = "atmega6450p",
22622262 .llvm_name = "atmega6450p",
2263 .subfeatures = &[_]*const Feature {
2263 .dependencies = &[_]*const Feature {
22642264 &feature_lpmx,
2265 &feature_spm,
2266 &feature_addsubiw,
2267 &feature_jmpcall,
22682265 &feature_lpm,
2266 &feature_spm,
2267 &feature_ijmpcall,
2268 &feature_sram,
22692269 &feature_break,
2270 &feature_jmpcall,
22702271 &feature_mul,
2271 &feature_sram,
2272 &feature_ijmpcall,
22732272 &feature_movw,
2273 &feature_addsubiw,
22742274 },
22752275};
22762276
22772277pub const cpu_atmega645a = Cpu{
22782278 .name = "atmega645a",
22792279 .llvm_name = "atmega645a",
2280 .subfeatures = &[_]*const Feature {
2280 .dependencies = &[_]*const Feature {
22812281 &feature_lpmx,
2282 &feature_spm,
2283 &feature_addsubiw,
2284 &feature_jmpcall,
22852282 &feature_lpm,
2283 &feature_spm,
2284 &feature_ijmpcall,
2285 &feature_sram,
22862286 &feature_break,
2287 &feature_jmpcall,
22872288 &feature_mul,
2288 &feature_sram,
2289 &feature_ijmpcall,
22902289 &feature_movw,
2290 &feature_addsubiw,
22912291 },
22922292};
22932293
22942294pub const cpu_atmega645p = Cpu{
22952295 .name = "atmega645p",
22962296 .llvm_name = "atmega645p",
2297 .subfeatures = &[_]*const Feature {
2297 .dependencies = &[_]*const Feature {
22982298 &feature_lpmx,
2299 &feature_spm,
2300 &feature_addsubiw,
2301 &feature_jmpcall,
23022299 &feature_lpm,
2300 &feature_spm,
2301 &feature_ijmpcall,
2302 &feature_sram,
23032303 &feature_break,
2304 &feature_jmpcall,
23042305 &feature_mul,
2305 &feature_sram,
2306 &feature_ijmpcall,
23072306 &feature_movw,
2307 &feature_addsubiw,
23082308 },
23092309};
23102310
23112311pub const cpu_atmega649 = Cpu{
23122312 .name = "atmega649",
23132313 .llvm_name = "atmega649",
2314 .subfeatures = &[_]*const Feature {
2314 .dependencies = &[_]*const Feature {
23152315 &feature_lpmx,
2316 &feature_spm,
2317 &feature_addsubiw,
2318 &feature_jmpcall,
23192316 &feature_lpm,
2317 &feature_spm,
2318 &feature_ijmpcall,
2319 &feature_sram,
23202320 &feature_break,
2321 &feature_jmpcall,
23212322 &feature_mul,
2322 &feature_sram,
2323 &feature_ijmpcall,
23242323 &feature_movw,
2324 &feature_addsubiw,
23252325 },
23262326};
23272327
23282328pub const cpu_atmega6490 = Cpu{
23292329 .name = "atmega6490",
23302330 .llvm_name = "atmega6490",
2331 .subfeatures = &[_]*const Feature {
2331 .dependencies = &[_]*const Feature {
23322332 &feature_lpmx,
2333 &feature_spm,
2334 &feature_addsubiw,
2335 &feature_jmpcall,
23362333 &feature_lpm,
2334 &feature_spm,
2335 &feature_ijmpcall,
2336 &feature_sram,
23372337 &feature_break,
2338 &feature_jmpcall,
23382339 &feature_mul,
2339 &feature_sram,
2340 &feature_ijmpcall,
23412340 &feature_movw,
2341 &feature_addsubiw,
23422342 },
23432343};
23442344
23452345pub const cpu_atmega6490a = Cpu{
23462346 .name = "atmega6490a",
23472347 .llvm_name = "atmega6490a",
2348 .subfeatures = &[_]*const Feature {
2348 .dependencies = &[_]*const Feature {
23492349 &feature_lpmx,
2350 &feature_spm,
2351 &feature_addsubiw,
2352 &feature_jmpcall,
23532350 &feature_lpm,
2351 &feature_spm,
2352 &feature_ijmpcall,
2353 &feature_sram,
23542354 &feature_break,
2355 &feature_jmpcall,
23552356 &feature_mul,
2356 &feature_sram,
2357 &feature_ijmpcall,
23582357 &feature_movw,
2358 &feature_addsubiw,
23592359 },
23602360};
23612361
23622362pub const cpu_atmega6490p = Cpu{
23632363 .name = "atmega6490p",
23642364 .llvm_name = "atmega6490p",
2365 .subfeatures = &[_]*const Feature {
2365 .dependencies = &[_]*const Feature {
23662366 &feature_lpmx,
2367 &feature_spm,
2368 &feature_addsubiw,
2369 &feature_jmpcall,
23702367 &feature_lpm,
2368 &feature_spm,
2369 &feature_ijmpcall,
2370 &feature_sram,
23712371 &feature_break,
2372 &feature_jmpcall,
23722373 &feature_mul,
2373 &feature_sram,
2374 &feature_ijmpcall,
23752374 &feature_movw,
2375 &feature_addsubiw,
23762376 },
23772377};
23782378
23792379pub const cpu_atmega649a = Cpu{
23802380 .name = "atmega649a",
23812381 .llvm_name = "atmega649a",
2382 .subfeatures = &[_]*const Feature {
2382 .dependencies = &[_]*const Feature {
23832383 &feature_lpmx,
2384 &feature_spm,
2385 &feature_addsubiw,
2386 &feature_jmpcall,
23872384 &feature_lpm,
2385 &feature_spm,
2386 &feature_ijmpcall,
2387 &feature_sram,
23882388 &feature_break,
2389 &feature_jmpcall,
23892390 &feature_mul,
2390 &feature_sram,
2391 &feature_ijmpcall,
23922391 &feature_movw,
2392 &feature_addsubiw,
23932393 },
23942394};
23952395
23962396pub const cpu_atmega649p = Cpu{
23972397 .name = "atmega649p",
23982398 .llvm_name = "atmega649p",
2399 .subfeatures = &[_]*const Feature {
2399 .dependencies = &[_]*const Feature {
24002400 &feature_lpmx,
2401 &feature_spm,
2402 &feature_addsubiw,
2403 &feature_jmpcall,
24042401 &feature_lpm,
2402 &feature_spm,
2403 &feature_ijmpcall,
2404 &feature_sram,
24052405 &feature_break,
2406 &feature_jmpcall,
24062407 &feature_mul,
2407 &feature_sram,
2408 &feature_ijmpcall,
24092408 &feature_movw,
2409 &feature_addsubiw,
24102410 },
24112411};
24122412
24132413pub const cpu_atmega64a = Cpu{
24142414 .name = "atmega64a",
24152415 .llvm_name = "atmega64a",
2416 .subfeatures = &[_]*const Feature {
2416 .dependencies = &[_]*const Feature {
24172417 &feature_lpmx,
2418 &feature_spm,
2419 &feature_addsubiw,
2420 &feature_jmpcall,
24212418 &feature_lpm,
2419 &feature_spm,
2420 &feature_ijmpcall,
2421 &feature_sram,
24222422 &feature_break,
2423 &feature_jmpcall,
24232424 &feature_mul,
2424 &feature_sram,
2425 &feature_ijmpcall,
24262425 &feature_movw,
2426 &feature_addsubiw,
24272427 },
24282428};
24292429
24302430pub const cpu_atmega64c1 = Cpu{
24312431 .name = "atmega64c1",
24322432 .llvm_name = "atmega64c1",
2433 .subfeatures = &[_]*const Feature {
2433 .dependencies = &[_]*const Feature {
24342434 &feature_lpmx,
2435 &feature_spm,
2436 &feature_addsubiw,
2437 &feature_jmpcall,
24382435 &feature_lpm,
2436 &feature_spm,
2437 &feature_ijmpcall,
2438 &feature_sram,
24392439 &feature_break,
2440 &feature_jmpcall,
24402441 &feature_mul,
2441 &feature_sram,
2442 &feature_ijmpcall,
24432442 &feature_movw,
2443 &feature_addsubiw,
24442444 },
24452445};
24462446
24472447pub const cpu_atmega64hve = Cpu{
24482448 .name = "atmega64hve",
24492449 .llvm_name = "atmega64hve",
2450 .subfeatures = &[_]*const Feature {
2450 .dependencies = &[_]*const Feature {
24512451 &feature_lpmx,
2452 &feature_spm,
2453 &feature_addsubiw,
2454 &feature_jmpcall,
24552452 &feature_lpm,
2453 &feature_spm,
2454 &feature_ijmpcall,
2455 &feature_sram,
24562456 &feature_break,
2457 &feature_jmpcall,
24572458 &feature_mul,
2458 &feature_sram,
2459 &feature_ijmpcall,
24602459 &feature_movw,
2460 &feature_addsubiw,
24612461 },
24622462};
24632463
24642464pub const cpu_atmega64m1 = Cpu{
24652465 .name = "atmega64m1",
24662466 .llvm_name = "atmega64m1",
2467 .subfeatures = &[_]*const Feature {
2467 .dependencies = &[_]*const Feature {
24682468 &feature_lpmx,
2469 &feature_spm,
2470 &feature_addsubiw,
2471 &feature_jmpcall,
24722469 &feature_lpm,
2470 &feature_spm,
2471 &feature_ijmpcall,
2472 &feature_sram,
24732473 &feature_break,
2474 &feature_jmpcall,
24742475 &feature_mul,
2475 &feature_sram,
2476 &feature_ijmpcall,
24772476 &feature_movw,
2477 &feature_addsubiw,
24782478 },
24792479};
24802480
24812481pub const cpu_atmega64rfr2 = Cpu{
24822482 .name = "atmega64rfr2",
24832483 .llvm_name = "atmega64rfr2",
2484 .subfeatures = &[_]*const Feature {
2484 .dependencies = &[_]*const Feature {
24852485 &feature_lpmx,
2486 &feature_spm,
2487 &feature_addsubiw,
2488 &feature_jmpcall,
24892486 &feature_lpm,
2487 &feature_spm,
2488 &feature_ijmpcall,
2489 &feature_sram,
24902490 &feature_break,
2491 &feature_jmpcall,
24912492 &feature_mul,
2492 &feature_sram,
2493 &feature_ijmpcall,
24942493 &feature_movw,
2494 &feature_addsubiw,
24952495 },
24962496};
24972497
24982498pub const cpu_atmega8 = Cpu{
24992499 .name = "atmega8",
25002500 .llvm_name = "atmega8",
2501 .subfeatures = &[_]*const Feature {
2501 .dependencies = &[_]*const Feature {
25022502 &feature_lpmx,
2503 &feature_lpm,
25032504 &feature_spm,
2504 &feature_addsubiw,
2505 &feature_ijmpcall,
2506 &feature_sram,
25052507 &feature_break,
2506 &feature_lpm,
25072508 &feature_mul,
2508 &feature_sram,
2509 &feature_ijmpcall,
25102509 &feature_movw,
2510 &feature_addsubiw,
25112511 },
25122512};
25132513
25142514pub const cpu_atmega8515 = Cpu{
25152515 .name = "atmega8515",
25162516 .llvm_name = "atmega8515",
2517 .subfeatures = &[_]*const Feature {
2518 &feature_addsubiw,
2517 .dependencies = &[_]*const Feature {
25192518 &feature_lpm,
2520 &feature_sram,
25212519 &feature_ijmpcall,
2520 &feature_sram,
2521 &feature_addsubiw,
25222522 &feature_lpmx,
25232523 &feature_movw,
25242524 &feature_mul,
......@@ -2529,11 +2529,11 @@ pub const cpu_atmega8515 = Cpu{
25292529pub const cpu_atmega8535 = Cpu{
25302530 .name = "atmega8535",
25312531 .llvm_name = "atmega8535",
2532 .subfeatures = &[_]*const Feature {
2533 &feature_addsubiw,
2532 .dependencies = &[_]*const Feature {
25342533 &feature_lpm,
2535 &feature_sram,
25362534 &feature_ijmpcall,
2535 &feature_sram,
2536 &feature_addsubiw,
25372537 &feature_lpmx,
25382538 &feature_movw,
25392539 &feature_mul,
......@@ -2544,149 +2544,149 @@ pub const cpu_atmega8535 = Cpu{
25442544pub const cpu_atmega88 = Cpu{
25452545 .name = "atmega88",
25462546 .llvm_name = "atmega88",
2547 .subfeatures = &[_]*const Feature {
2547 .dependencies = &[_]*const Feature {
25482548 &feature_lpmx,
2549 &feature_lpm,
25492550 &feature_spm,
2550 &feature_addsubiw,
2551 &feature_ijmpcall,
2552 &feature_sram,
25512553 &feature_break,
2552 &feature_lpm,
25532554 &feature_mul,
2554 &feature_sram,
2555 &feature_ijmpcall,
25562555 &feature_movw,
2556 &feature_addsubiw,
25572557 },
25582558};
25592559
25602560pub const cpu_atmega88a = Cpu{
25612561 .name = "atmega88a",
25622562 .llvm_name = "atmega88a",
2563 .subfeatures = &[_]*const Feature {
2563 .dependencies = &[_]*const Feature {
25642564 &feature_lpmx,
2565 &feature_lpm,
25652566 &feature_spm,
2566 &feature_addsubiw,
2567 &feature_ijmpcall,
2568 &feature_sram,
25672569 &feature_break,
2568 &feature_lpm,
25692570 &feature_mul,
2570 &feature_sram,
2571 &feature_ijmpcall,
25722571 &feature_movw,
2572 &feature_addsubiw,
25732573 },
25742574};
25752575
25762576pub const cpu_atmega88p = Cpu{
25772577 .name = "atmega88p",
25782578 .llvm_name = "atmega88p",
2579 .subfeatures = &[_]*const Feature {
2579 .dependencies = &[_]*const Feature {
25802580 &feature_lpmx,
2581 &feature_lpm,
25812582 &feature_spm,
2582 &feature_addsubiw,
2583 &feature_ijmpcall,
2584 &feature_sram,
25832585 &feature_break,
2584 &feature_lpm,
25852586 &feature_mul,
2586 &feature_sram,
2587 &feature_ijmpcall,
25882587 &feature_movw,
2588 &feature_addsubiw,
25892589 },
25902590};
25912591
25922592pub const cpu_atmega88pa = Cpu{
25932593 .name = "atmega88pa",
25942594 .llvm_name = "atmega88pa",
2595 .subfeatures = &[_]*const Feature {
2595 .dependencies = &[_]*const Feature {
25962596 &feature_lpmx,
2597 &feature_lpm,
25972598 &feature_spm,
2598 &feature_addsubiw,
2599 &feature_ijmpcall,
2600 &feature_sram,
25992601 &feature_break,
2600 &feature_lpm,
26012602 &feature_mul,
2602 &feature_sram,
2603 &feature_ijmpcall,
26042603 &feature_movw,
2604 &feature_addsubiw,
26052605 },
26062606};
26072607
26082608pub const cpu_atmega8a = Cpu{
26092609 .name = "atmega8a",
26102610 .llvm_name = "atmega8a",
2611 .subfeatures = &[_]*const Feature {
2611 .dependencies = &[_]*const Feature {
26122612 &feature_lpmx,
2613 &feature_lpm,
26132614 &feature_spm,
2614 &feature_addsubiw,
2615 &feature_ijmpcall,
2616 &feature_sram,
26152617 &feature_break,
2616 &feature_lpm,
26172618 &feature_mul,
2618 &feature_sram,
2619 &feature_ijmpcall,
26202619 &feature_movw,
2620 &feature_addsubiw,
26212621 },
26222622};
26232623
26242624pub const cpu_atmega8hva = Cpu{
26252625 .name = "atmega8hva",
26262626 .llvm_name = "atmega8hva",
2627 .subfeatures = &[_]*const Feature {
2627 .dependencies = &[_]*const Feature {
26282628 &feature_lpmx,
2629 &feature_lpm,
26292630 &feature_spm,
2630 &feature_addsubiw,
2631 &feature_ijmpcall,
2632 &feature_sram,
26312633 &feature_break,
2632 &feature_lpm,
26332634 &feature_mul,
2634 &feature_sram,
2635 &feature_ijmpcall,
26362635 &feature_movw,
2636 &feature_addsubiw,
26372637 },
26382638};
26392639
26402640pub const cpu_atmega8u2 = Cpu{
26412641 .name = "atmega8u2",
26422642 .llvm_name = "atmega8u2",
2643 .subfeatures = &[_]*const Feature {
2643 .dependencies = &[_]*const Feature {
26442644 &feature_lpmx,
2645 &feature_spm,
2646 &feature_addsubiw,
2647 &feature_jmpcall,
26482645 &feature_lpm,
2649 &feature_break,
2650 &feature_sram,
2646 &feature_spm,
26512647 &feature_ijmpcall,
2648 &feature_sram,
2649 &feature_break,
2650 &feature_jmpcall,
26522651 &feature_movw,
2652 &feature_addsubiw,
26532653 },
26542654};
26552655
26562656pub const cpu_attiny10 = Cpu{
26572657 .name = "attiny10",
26582658 .llvm_name = "attiny10",
2659 .subfeatures = &[_]*const Feature {
2659 .dependencies = &[_]*const Feature {
26602660 &feature_break,
2661 &feature_sram,
26622661 &feature_tinyencoding,
2662 &feature_sram,
26632663 },
26642664};
26652665
26662666pub const cpu_attiny102 = Cpu{
26672667 .name = "attiny102",
26682668 .llvm_name = "attiny102",
2669 .subfeatures = &[_]*const Feature {
2669 .dependencies = &[_]*const Feature {
26702670 &feature_break,
2671 &feature_sram,
26722671 &feature_tinyencoding,
2672 &feature_sram,
26732673 },
26742674};
26752675
26762676pub const cpu_attiny104 = Cpu{
26772677 .name = "attiny104",
26782678 .llvm_name = "attiny104",
2679 .subfeatures = &[_]*const Feature {
2679 .dependencies = &[_]*const Feature {
26802680 &feature_break,
2681 &feature_sram,
26822681 &feature_tinyencoding,
2682 &feature_sram,
26832683 },
26842684};
26852685
26862686pub const cpu_attiny11 = Cpu{
26872687 .name = "attiny11",
26882688 .llvm_name = "attiny11",
2689 .subfeatures = &[_]*const Feature {
2689 .dependencies = &[_]*const Feature {
26902690 &feature_lpm,
26912691 },
26922692};
......@@ -2694,7 +2694,7 @@ pub const cpu_attiny11 = Cpu{
26942694pub const cpu_attiny12 = Cpu{
26952695 .name = "attiny12",
26962696 .llvm_name = "attiny12",
2697 .subfeatures = &[_]*const Feature {
2697 .dependencies = &[_]*const Feature {
26982698 &feature_lpm,
26992699 },
27002700};
......@@ -2702,37 +2702,37 @@ pub const cpu_attiny12 = Cpu{
27022702pub const cpu_attiny13 = Cpu{
27032703 .name = "attiny13",
27042704 .llvm_name = "attiny13",
2705 .subfeatures = &[_]*const Feature {
2705 .dependencies = &[_]*const Feature {
27062706 &feature_lpmx,
2707 &feature_spm,
2708 &feature_addsubiw,
2709 &feature_break,
27102707 &feature_lpm,
2711 &feature_sram,
2708 &feature_spm,
27122709 &feature_ijmpcall,
2710 &feature_sram,
2711 &feature_break,
27132712 &feature_movw,
2713 &feature_addsubiw,
27142714 },
27152715};
27162716
27172717pub const cpu_attiny13a = Cpu{
27182718 .name = "attiny13a",
27192719 .llvm_name = "attiny13a",
2720 .subfeatures = &[_]*const Feature {
2720 .dependencies = &[_]*const Feature {
27212721 &feature_lpmx,
2722 &feature_spm,
2723 &feature_addsubiw,
2724 &feature_break,
27252722 &feature_lpm,
2726 &feature_sram,
2723 &feature_spm,
27272724 &feature_ijmpcall,
2725 &feature_sram,
2726 &feature_break,
27282727 &feature_movw,
2728 &feature_addsubiw,
27292729 },
27302730};
27312731
27322732pub const cpu_attiny15 = Cpu{
27332733 .name = "attiny15",
27342734 .llvm_name = "attiny15",
2735 .subfeatures = &[_]*const Feature {
2735 .dependencies = &[_]*const Feature {
27362736 &feature_lpm,
27372737 },
27382738};
......@@ -2740,139 +2740,139 @@ pub const cpu_attiny15 = Cpu{
27402740pub const cpu_attiny1634 = Cpu{
27412741 .name = "attiny1634",
27422742 .llvm_name = "attiny1634",
2743 .subfeatures = &[_]*const Feature {
2743 .dependencies = &[_]*const Feature {
27442744 &feature_lpmx,
2745 &feature_spm,
2746 &feature_addsubiw,
2747 &feature_jmpcall,
27482745 &feature_lpm,
2749 &feature_break,
2750 &feature_sram,
2746 &feature_spm,
27512747 &feature_ijmpcall,
2748 &feature_sram,
2749 &feature_break,
2750 &feature_jmpcall,
27522751 &feature_movw,
2752 &feature_addsubiw,
27532753 },
27542754};
27552755
27562756pub const cpu_attiny167 = Cpu{
27572757 .name = "attiny167",
27582758 .llvm_name = "attiny167",
2759 .subfeatures = &[_]*const Feature {
2759 .dependencies = &[_]*const Feature {
27602760 &feature_lpmx,
2761 &feature_spm,
2762 &feature_addsubiw,
2763 &feature_jmpcall,
27642761 &feature_lpm,
2765 &feature_break,
2766 &feature_sram,
2762 &feature_spm,
27672763 &feature_ijmpcall,
2764 &feature_sram,
2765 &feature_break,
2766 &feature_jmpcall,
27682767 &feature_movw,
2768 &feature_addsubiw,
27692769 },
27702770};
27712771
27722772pub const cpu_attiny20 = Cpu{
27732773 .name = "attiny20",
27742774 .llvm_name = "attiny20",
2775 .subfeatures = &[_]*const Feature {
2775 .dependencies = &[_]*const Feature {
27762776 &feature_break,
2777 &feature_sram,
27782777 &feature_tinyencoding,
2778 &feature_sram,
27792779 },
27802780};
27812781
27822782pub const cpu_attiny22 = Cpu{
27832783 .name = "attiny22",
27842784 .llvm_name = "attiny22",
2785 .subfeatures = &[_]*const Feature {
2786 &feature_addsubiw,
2785 .dependencies = &[_]*const Feature {
27872786 &feature_lpm,
2788 &feature_sram,
27892787 &feature_ijmpcall,
2788 &feature_sram,
2789 &feature_addsubiw,
27902790 },
27912791};
27922792
27932793pub const cpu_attiny2313 = Cpu{
27942794 .name = "attiny2313",
27952795 .llvm_name = "attiny2313",
2796 .subfeatures = &[_]*const Feature {
2796 .dependencies = &[_]*const Feature {
27972797 &feature_lpmx,
2798 &feature_spm,
2799 &feature_addsubiw,
2800 &feature_break,
28012798 &feature_lpm,
2802 &feature_sram,
2799 &feature_spm,
28032800 &feature_ijmpcall,
2801 &feature_sram,
2802 &feature_break,
28042803 &feature_movw,
2804 &feature_addsubiw,
28052805 },
28062806};
28072807
28082808pub const cpu_attiny2313a = Cpu{
28092809 .name = "attiny2313a",
28102810 .llvm_name = "attiny2313a",
2811 .subfeatures = &[_]*const Feature {
2811 .dependencies = &[_]*const Feature {
28122812 &feature_lpmx,
2813 &feature_spm,
2814 &feature_addsubiw,
2815 &feature_break,
28162813 &feature_lpm,
2817 &feature_sram,
2814 &feature_spm,
28182815 &feature_ijmpcall,
2816 &feature_sram,
2817 &feature_break,
28192818 &feature_movw,
2819 &feature_addsubiw,
28202820 },
28212821};
28222822
28232823pub const cpu_attiny24 = Cpu{
28242824 .name = "attiny24",
28252825 .llvm_name = "attiny24",
2826 .subfeatures = &[_]*const Feature {
2826 .dependencies = &[_]*const Feature {
28272827 &feature_lpmx,
2828 &feature_spm,
2829 &feature_addsubiw,
2830 &feature_break,
28312828 &feature_lpm,
2832 &feature_sram,
2829 &feature_spm,
28332830 &feature_ijmpcall,
2831 &feature_sram,
2832 &feature_break,
28342833 &feature_movw,
2834 &feature_addsubiw,
28352835 },
28362836};
28372837
28382838pub const cpu_attiny24a = Cpu{
28392839 .name = "attiny24a",
28402840 .llvm_name = "attiny24a",
2841 .subfeatures = &[_]*const Feature {
2841 .dependencies = &[_]*const Feature {
28422842 &feature_lpmx,
2843 &feature_spm,
2844 &feature_addsubiw,
2845 &feature_break,
28462843 &feature_lpm,
2847 &feature_sram,
2844 &feature_spm,
28482845 &feature_ijmpcall,
2846 &feature_sram,
2847 &feature_break,
28492848 &feature_movw,
2849 &feature_addsubiw,
28502850 },
28512851};
28522852
28532853pub const cpu_attiny25 = Cpu{
28542854 .name = "attiny25",
28552855 .llvm_name = "attiny25",
2856 .subfeatures = &[_]*const Feature {
2856 .dependencies = &[_]*const Feature {
28572857 &feature_lpmx,
2858 &feature_spm,
2859 &feature_addsubiw,
2860 &feature_break,
28612858 &feature_lpm,
2862 &feature_sram,
2859 &feature_spm,
28632860 &feature_ijmpcall,
2861 &feature_sram,
2862 &feature_break,
28642863 &feature_movw,
2864 &feature_addsubiw,
28652865 },
28662866};
28672867
28682868pub const cpu_attiny26 = Cpu{
28692869 .name = "attiny26",
28702870 .llvm_name = "attiny26",
2871 .subfeatures = &[_]*const Feature {
2872 &feature_addsubiw,
2871 .dependencies = &[_]*const Feature {
28732872 &feature_lpm,
2874 &feature_sram,
28752873 &feature_ijmpcall,
2874 &feature_sram,
2875 &feature_addsubiw,
28762876 &feature_lpmx,
28772877 },
28782878};
......@@ -2880,37 +2880,37 @@ pub const cpu_attiny26 = Cpu{
28802880pub const cpu_attiny261 = Cpu{
28812881 .name = "attiny261",
28822882 .llvm_name = "attiny261",
2883 .subfeatures = &[_]*const Feature {
2883 .dependencies = &[_]*const Feature {
28842884 &feature_lpmx,
2885 &feature_spm,
2886 &feature_addsubiw,
2887 &feature_break,
28882885 &feature_lpm,
2889 &feature_sram,
2886 &feature_spm,
28902887 &feature_ijmpcall,
2888 &feature_sram,
2889 &feature_break,
28912890 &feature_movw,
2891 &feature_addsubiw,
28922892 },
28932893};
28942894
28952895pub const cpu_attiny261a = Cpu{
28962896 .name = "attiny261a",
28972897 .llvm_name = "attiny261a",
2898 .subfeatures = &[_]*const Feature {
2898 .dependencies = &[_]*const Feature {
28992899 &feature_lpmx,
2900 &feature_spm,
2901 &feature_addsubiw,
2902 &feature_break,
29032900 &feature_lpm,
2904 &feature_sram,
2901 &feature_spm,
29052902 &feature_ijmpcall,
2903 &feature_sram,
2904 &feature_break,
29062905 &feature_movw,
2906 &feature_addsubiw,
29072907 },
29082908};
29092909
29102910pub const cpu_attiny28 = Cpu{
29112911 .name = "attiny28",
29122912 .llvm_name = "attiny28",
2913 .subfeatures = &[_]*const Feature {
2913 .dependencies = &[_]*const Feature {
29142914 &feature_lpm,
29152915 },
29162916};
......@@ -2918,1277 +2918,1277 @@ pub const cpu_attiny28 = Cpu{
29182918pub const cpu_attiny4 = Cpu{
29192919 .name = "attiny4",
29202920 .llvm_name = "attiny4",
2921 .subfeatures = &[_]*const Feature {
2921 .dependencies = &[_]*const Feature {
29222922 &feature_break,
2923 &feature_sram,
29242923 &feature_tinyencoding,
2924 &feature_sram,
29252925 },
29262926};
29272927
29282928pub const cpu_attiny40 = Cpu{
29292929 .name = "attiny40",
29302930 .llvm_name = "attiny40",
2931 .subfeatures = &[_]*const Feature {
2931 .dependencies = &[_]*const Feature {
29322932 &feature_break,
2933 &feature_sram,
29342933 &feature_tinyencoding,
2934 &feature_sram,
29352935 },
29362936};
29372937
29382938pub const cpu_attiny4313 = Cpu{
29392939 .name = "attiny4313",
29402940 .llvm_name = "attiny4313",
2941 .subfeatures = &[_]*const Feature {
2941 .dependencies = &[_]*const Feature {
29422942 &feature_lpmx,
2943 &feature_spm,
2944 &feature_addsubiw,
2945 &feature_break,
29462943 &feature_lpm,
2947 &feature_sram,
2944 &feature_spm,
29482945 &feature_ijmpcall,
2949 &feature_movw,
2946 &feature_sram,
2947 &feature_break,
2948 &feature_movw,
2949 &feature_addsubiw,
29502950 },
29512951};
29522952
29532953pub const cpu_attiny43u = Cpu{
29542954 .name = "attiny43u",
29552955 .llvm_name = "attiny43u",
2956 .subfeatures = &[_]*const Feature {
2956 .dependencies = &[_]*const Feature {
29572957 &feature_lpmx,
2958 &feature_spm,
2959 &feature_addsubiw,
2960 &feature_break,
29612958 &feature_lpm,
2962 &feature_sram,
2959 &feature_spm,
29632960 &feature_ijmpcall,
2961 &feature_sram,
2962 &feature_break,
29642963 &feature_movw,
2964 &feature_addsubiw,
29652965 },
29662966};
29672967
29682968pub const cpu_attiny44 = Cpu{
29692969 .name = "attiny44",
29702970 .llvm_name = "attiny44",
2971 .subfeatures = &[_]*const Feature {
2971 .dependencies = &[_]*const Feature {
29722972 &feature_lpmx,
2973 &feature_spm,
2974 &feature_addsubiw,
2975 &feature_break,
29762973 &feature_lpm,
2977 &feature_sram,
2974 &feature_spm,
29782975 &feature_ijmpcall,
2976 &feature_sram,
2977 &feature_break,
29792978 &feature_movw,
2979 &feature_addsubiw,
29802980 },
29812981};
29822982
29832983pub const cpu_attiny44a = Cpu{
29842984 .name = "attiny44a",
29852985 .llvm_name = "attiny44a",
2986 .subfeatures = &[_]*const Feature {
2986 .dependencies = &[_]*const Feature {
29872987 &feature_lpmx,
2988 &feature_spm,
2989 &feature_addsubiw,
2990 &feature_break,
29912988 &feature_lpm,
2992 &feature_sram,
2989 &feature_spm,
29932990 &feature_ijmpcall,
2991 &feature_sram,
2992 &feature_break,
29942993 &feature_movw,
2994 &feature_addsubiw,
29952995 },
29962996};
29972997
29982998pub const cpu_attiny45 = Cpu{
29992999 .name = "attiny45",
30003000 .llvm_name = "attiny45",
3001 .subfeatures = &[_]*const Feature {
3001 .dependencies = &[_]*const Feature {
30023002 &feature_lpmx,
3003 &feature_spm,
3004 &feature_addsubiw,
3005 &feature_break,
30063003 &feature_lpm,
3007 &feature_sram,
3004 &feature_spm,
30083005 &feature_ijmpcall,
3006 &feature_sram,
3007 &feature_break,
30093008 &feature_movw,
3009 &feature_addsubiw,
30103010 },
30113011};
30123012
30133013pub const cpu_attiny461 = Cpu{
30143014 .name = "attiny461",
30153015 .llvm_name = "attiny461",
3016 .subfeatures = &[_]*const Feature {
3016 .dependencies = &[_]*const Feature {
30173017 &feature_lpmx,
3018 &feature_spm,
3019 &feature_addsubiw,
3020 &feature_break,
30213018 &feature_lpm,
3022 &feature_sram,
3019 &feature_spm,
30233020 &feature_ijmpcall,
3021 &feature_sram,
3022 &feature_break,
30243023 &feature_movw,
3024 &feature_addsubiw,
30253025 },
30263026};
30273027
30283028pub const cpu_attiny461a = Cpu{
30293029 .name = "attiny461a",
30303030 .llvm_name = "attiny461a",
3031 .subfeatures = &[_]*const Feature {
3031 .dependencies = &[_]*const Feature {
30323032 &feature_lpmx,
3033 &feature_spm,
3034 &feature_addsubiw,
3035 &feature_break,
30363033 &feature_lpm,
3037 &feature_sram,
3034 &feature_spm,
30383035 &feature_ijmpcall,
3036 &feature_sram,
3037 &feature_break,
30393038 &feature_movw,
3039 &feature_addsubiw,
30403040 },
30413041};
30423042
30433043pub const cpu_attiny48 = Cpu{
30443044 .name = "attiny48",
30453045 .llvm_name = "attiny48",
3046 .subfeatures = &[_]*const Feature {
3046 .dependencies = &[_]*const Feature {
30473047 &feature_lpmx,
3048 &feature_spm,
3049 &feature_addsubiw,
3050 &feature_break,
30513048 &feature_lpm,
3052 &feature_sram,
3049 &feature_spm,
30533050 &feature_ijmpcall,
3051 &feature_sram,
3052 &feature_break,
30543053 &feature_movw,
3054 &feature_addsubiw,
30553055 },
30563056};
30573057
30583058pub const cpu_attiny5 = Cpu{
30593059 .name = "attiny5",
30603060 .llvm_name = "attiny5",
3061 .subfeatures = &[_]*const Feature {
3061 .dependencies = &[_]*const Feature {
30623062 &feature_break,
3063 &feature_sram,
30643063 &feature_tinyencoding,
3064 &feature_sram,
30653065 },
30663066};
30673067
30683068pub const cpu_attiny828 = Cpu{
30693069 .name = "attiny828",
30703070 .llvm_name = "attiny828",
3071 .subfeatures = &[_]*const Feature {
3071 .dependencies = &[_]*const Feature {
30723072 &feature_lpmx,
3073 &feature_spm,
3074 &feature_addsubiw,
3075 &feature_break,
30763073 &feature_lpm,
3077 &feature_sram,
3074 &feature_spm,
30783075 &feature_ijmpcall,
3076 &feature_sram,
3077 &feature_break,
30793078 &feature_movw,
3079 &feature_addsubiw,
30803080 },
30813081};
30823082
30833083pub const cpu_attiny84 = Cpu{
30843084 .name = "attiny84",
30853085 .llvm_name = "attiny84",
3086 .subfeatures = &[_]*const Feature {
3086 .dependencies = &[_]*const Feature {
30873087 &feature_lpmx,
3088 &feature_spm,
3089 &feature_addsubiw,
3090 &feature_break,
30913088 &feature_lpm,
3092 &feature_sram,
3089 &feature_spm,
30933090 &feature_ijmpcall,
3091 &feature_sram,
3092 &feature_break,
30943093 &feature_movw,
3094 &feature_addsubiw,
30953095 },
30963096};
30973097
30983098pub const cpu_attiny84a = Cpu{
30993099 .name = "attiny84a",
31003100 .llvm_name = "attiny84a",
3101 .subfeatures = &[_]*const Feature {
3101 .dependencies = &[_]*const Feature {
31023102 &feature_lpmx,
3103 &feature_spm,
3104 &feature_addsubiw,
3105 &feature_break,
31063103 &feature_lpm,
3107 &feature_sram,
3104 &feature_spm,
31083105 &feature_ijmpcall,
3106 &feature_sram,
3107 &feature_break,
31093108 &feature_movw,
3109 &feature_addsubiw,
31103110 },
31113111};
31123112
31133113pub const cpu_attiny85 = Cpu{
31143114 .name = "attiny85",
31153115 .llvm_name = "attiny85",
3116 .subfeatures = &[_]*const Feature {
3116 .dependencies = &[_]*const Feature {
31173117 &feature_lpmx,
3118 &feature_spm,
3119 &feature_addsubiw,
3120 &feature_break,
31213118 &feature_lpm,
3122 &feature_sram,
3119 &feature_spm,
31233120 &feature_ijmpcall,
3121 &feature_sram,
3122 &feature_break,
31243123 &feature_movw,
3124 &feature_addsubiw,
31253125 },
31263126};
31273127
31283128pub const cpu_attiny861 = Cpu{
31293129 .name = "attiny861",
31303130 .llvm_name = "attiny861",
3131 .subfeatures = &[_]*const Feature {
3131 .dependencies = &[_]*const Feature {
31323132 &feature_lpmx,
3133 &feature_spm,
3134 &feature_addsubiw,
3135 &feature_break,
31363133 &feature_lpm,
3137 &feature_sram,
3134 &feature_spm,
31383135 &feature_ijmpcall,
3136 &feature_sram,
3137 &feature_break,
31393138 &feature_movw,
3139 &feature_addsubiw,
31403140 },
31413141};
31423142
31433143pub const cpu_attiny861a = Cpu{
31443144 .name = "attiny861a",
31453145 .llvm_name = "attiny861a",
3146 .subfeatures = &[_]*const Feature {
3146 .dependencies = &[_]*const Feature {
31473147 &feature_lpmx,
3148 &feature_spm,
3149 &feature_addsubiw,
3150 &feature_break,
31513148 &feature_lpm,
3152 &feature_sram,
3149 &feature_spm,
31533150 &feature_ijmpcall,
3151 &feature_sram,
3152 &feature_break,
31543153 &feature_movw,
3154 &feature_addsubiw,
31553155 },
31563156};
31573157
31583158pub const cpu_attiny87 = Cpu{
31593159 .name = "attiny87",
31603160 .llvm_name = "attiny87",
3161 .subfeatures = &[_]*const Feature {
3161 .dependencies = &[_]*const Feature {
31623162 &feature_lpmx,
3163 &feature_spm,
3164 &feature_addsubiw,
3165 &feature_break,
31663163 &feature_lpm,
3167 &feature_sram,
3164 &feature_spm,
31683165 &feature_ijmpcall,
3166 &feature_sram,
3167 &feature_break,
31693168 &feature_movw,
3169 &feature_addsubiw,
31703170 },
31713171};
31723172
31733173pub const cpu_attiny88 = Cpu{
31743174 .name = "attiny88",
31753175 .llvm_name = "attiny88",
3176 .subfeatures = &[_]*const Feature {
3176 .dependencies = &[_]*const Feature {
31773177 &feature_lpmx,
3178 &feature_spm,
3179 &feature_addsubiw,
3180 &feature_break,
31813178 &feature_lpm,
3182 &feature_sram,
3179 &feature_spm,
31833180 &feature_ijmpcall,
3181 &feature_sram,
3182 &feature_break,
31843183 &feature_movw,
3184 &feature_addsubiw,
31853185 },
31863186};
31873187
31883188pub const cpu_attiny9 = Cpu{
31893189 .name = "attiny9",
31903190 .llvm_name = "attiny9",
3191 .subfeatures = &[_]*const Feature {
3191 .dependencies = &[_]*const Feature {
31923192 &feature_break,
3193 &feature_sram,
31943193 &feature_tinyencoding,
3194 &feature_sram,
31953195 },
31963196};
31973197
31983198pub const cpu_atxmega128a1 = Cpu{
31993199 .name = "atxmega128a1",
32003200 .llvm_name = "atxmega128a1",
3201 .subfeatures = &[_]*const Feature {
3201 .dependencies = &[_]*const Feature {
32023202 &feature_lpmx,
3203 &feature_spm,
3204 &feature_addsubiw,
3205 &feature_jmpcall,
3203 &feature_elpm,
32063204 &feature_lpm,
3205 &feature_spm,
3206 &feature_ijmpcall,
3207 &feature_movw,
3208 &feature_sram,
3209 &feature_spmx,
32073210 &feature_break,
3211 &feature_jmpcall,
3212 &feature_des,
32083213 &feature_mul,
3209 &feature_elpm,
32103214 &feature_eijmpcall,
32113215 &feature_elpmx,
3212 &feature_sram,
3213 &feature_des,
3214 &feature_ijmpcall,
3215 &feature_movw,
3216 &feature_spmx,
3216 &feature_addsubiw,
32173217 },
32183218};
32193219
32203220pub const cpu_atxmega128a1u = Cpu{
32213221 .name = "atxmega128a1u",
32223222 .llvm_name = "atxmega128a1u",
3223 .subfeatures = &[_]*const Feature {
3224 &feature_rmw,
3223 .dependencies = &[_]*const Feature {
32253224 &feature_lpmx,
3225 &feature_elpm,
32263226 &feature_spm,
3227 &feature_addsubiw,
3228 &feature_jmpcall,
32293227 &feature_lpm,
3230 &feature_break,
3231 &feature_mul,
3232 &feature_elpm,
3233 &feature_eijmpcall,
3228 &feature_ijmpcall,
32343229 &feature_elpmx,
32353230 &feature_sram,
3231 &feature_spmx,
3232 &feature_break,
3233 &feature_jmpcall,
32363234 &feature_des,
3237 &feature_ijmpcall,
3235 &feature_rmw,
3236 &feature_mul,
3237 &feature_eijmpcall,
32383238 &feature_movw,
3239 &feature_spmx,
3239 &feature_addsubiw,
32403240 },
32413241};
32423242
32433243pub const cpu_atxmega128a3 = Cpu{
32443244 .name = "atxmega128a3",
32453245 .llvm_name = "atxmega128a3",
3246 .subfeatures = &[_]*const Feature {
3246 .dependencies = &[_]*const Feature {
32473247 &feature_lpmx,
3248 &feature_spm,
3249 &feature_addsubiw,
3250 &feature_jmpcall,
3248 &feature_elpm,
32513249 &feature_lpm,
3250 &feature_spm,
3251 &feature_ijmpcall,
3252 &feature_movw,
3253 &feature_sram,
3254 &feature_spmx,
32523255 &feature_break,
3256 &feature_jmpcall,
3257 &feature_des,
32533258 &feature_mul,
3254 &feature_elpm,
32553259 &feature_eijmpcall,
32563260 &feature_elpmx,
3257 &feature_sram,
3258 &feature_des,
3259 &feature_ijmpcall,
3260 &feature_movw,
3261 &feature_spmx,
3261 &feature_addsubiw,
32623262 },
32633263};
32643264
32653265pub const cpu_atxmega128a3u = Cpu{
32663266 .name = "atxmega128a3u",
32673267 .llvm_name = "atxmega128a3u",
3268 .subfeatures = &[_]*const Feature {
3269 &feature_rmw,
3268 .dependencies = &[_]*const Feature {
32703269 &feature_lpmx,
3270 &feature_elpm,
32713271 &feature_spm,
3272 &feature_addsubiw,
3273 &feature_jmpcall,
32743272 &feature_lpm,
3275 &feature_break,
3276 &feature_mul,
3277 &feature_elpm,
3278 &feature_eijmpcall,
3273 &feature_ijmpcall,
32793274 &feature_elpmx,
32803275 &feature_sram,
3276 &feature_spmx,
3277 &feature_break,
3278 &feature_jmpcall,
32813279 &feature_des,
3282 &feature_ijmpcall,
3280 &feature_rmw,
3281 &feature_mul,
3282 &feature_eijmpcall,
32833283 &feature_movw,
3284 &feature_spmx,
3284 &feature_addsubiw,
32853285 },
32863286};
32873287
32883288pub const cpu_atxmega128a4u = Cpu{
32893289 .name = "atxmega128a4u",
32903290 .llvm_name = "atxmega128a4u",
3291 .subfeatures = &[_]*const Feature {
3292 &feature_rmw,
3291 .dependencies = &[_]*const Feature {
32933292 &feature_lpmx,
3293 &feature_elpm,
32943294 &feature_spm,
3295 &feature_addsubiw,
3296 &feature_jmpcall,
32973295 &feature_lpm,
3298 &feature_break,
3299 &feature_mul,
3300 &feature_elpm,
3301 &feature_eijmpcall,
3296 &feature_ijmpcall,
33023297 &feature_elpmx,
33033298 &feature_sram,
3299 &feature_spmx,
3300 &feature_break,
3301 &feature_jmpcall,
33043302 &feature_des,
3305 &feature_ijmpcall,
3303 &feature_rmw,
3304 &feature_mul,
3305 &feature_eijmpcall,
33063306 &feature_movw,
3307 &feature_spmx,
3307 &feature_addsubiw,
33083308 },
33093309};
33103310
33113311pub const cpu_atxmega128b1 = Cpu{
33123312 .name = "atxmega128b1",
33133313 .llvm_name = "atxmega128b1",
3314 .subfeatures = &[_]*const Feature {
3315 &feature_rmw,
3314 .dependencies = &[_]*const Feature {
33163315 &feature_lpmx,
3316 &feature_elpm,
33173317 &feature_spm,
3318 &feature_addsubiw,
3319 &feature_jmpcall,
33203318 &feature_lpm,
3321 &feature_break,
3322 &feature_mul,
3323 &feature_elpm,
3324 &feature_eijmpcall,
3319 &feature_ijmpcall,
33253320 &feature_elpmx,
33263321 &feature_sram,
3322 &feature_spmx,
3323 &feature_break,
3324 &feature_jmpcall,
33273325 &feature_des,
3328 &feature_ijmpcall,
3326 &feature_rmw,
3327 &feature_mul,
3328 &feature_eijmpcall,
33293329 &feature_movw,
3330 &feature_spmx,
3330 &feature_addsubiw,
33313331 },
33323332};
33333333
33343334pub const cpu_atxmega128b3 = Cpu{
33353335 .name = "atxmega128b3",
33363336 .llvm_name = "atxmega128b3",
3337 .subfeatures = &[_]*const Feature {
3338 &feature_rmw,
3337 .dependencies = &[_]*const Feature {
33393338 &feature_lpmx,
3339 &feature_elpm,
33403340 &feature_spm,
3341 &feature_addsubiw,
3342 &feature_jmpcall,
33433341 &feature_lpm,
3344 &feature_break,
3345 &feature_mul,
3346 &feature_elpm,
3347 &feature_eijmpcall,
3342 &feature_ijmpcall,
33483343 &feature_elpmx,
33493344 &feature_sram,
3345 &feature_spmx,
3346 &feature_break,
3347 &feature_jmpcall,
33503348 &feature_des,
3351 &feature_ijmpcall,
3349 &feature_rmw,
3350 &feature_mul,
3351 &feature_eijmpcall,
33523352 &feature_movw,
3353 &feature_spmx,
3353 &feature_addsubiw,
33543354 },
33553355};
33563356
33573357pub const cpu_atxmega128c3 = Cpu{
33583358 .name = "atxmega128c3",
33593359 .llvm_name = "atxmega128c3",
3360 .subfeatures = &[_]*const Feature {
3361 &feature_rmw,
3360 .dependencies = &[_]*const Feature {
33623361 &feature_lpmx,
3362 &feature_elpm,
33633363 &feature_spm,
3364 &feature_addsubiw,
3365 &feature_jmpcall,
33663364 &feature_lpm,
3367 &feature_break,
3368 &feature_mul,
3369 &feature_elpm,
3370 &feature_eijmpcall,
3365 &feature_ijmpcall,
33713366 &feature_elpmx,
33723367 &feature_sram,
3368 &feature_spmx,
3369 &feature_break,
3370 &feature_jmpcall,
33733371 &feature_des,
3374 &feature_ijmpcall,
3372 &feature_rmw,
3373 &feature_mul,
3374 &feature_eijmpcall,
33753375 &feature_movw,
3376 &feature_spmx,
3376 &feature_addsubiw,
33773377 },
33783378};
33793379
33803380pub const cpu_atxmega128d3 = Cpu{
33813381 .name = "atxmega128d3",
33823382 .llvm_name = "atxmega128d3",
3383 .subfeatures = &[_]*const Feature {
3383 .dependencies = &[_]*const Feature {
33843384 &feature_lpmx,
3385 &feature_spm,
3386 &feature_addsubiw,
3387 &feature_jmpcall,
3385 &feature_elpm,
33883386 &feature_lpm,
3387 &feature_spm,
3388 &feature_ijmpcall,
3389 &feature_movw,
3390 &feature_sram,
3391 &feature_spmx,
33893392 &feature_break,
3393 &feature_jmpcall,
3394 &feature_des,
33903395 &feature_mul,
3391 &feature_elpm,
33923396 &feature_eijmpcall,
33933397 &feature_elpmx,
3394 &feature_sram,
3395 &feature_des,
3396 &feature_ijmpcall,
3397 &feature_movw,
3398 &feature_spmx,
3398 &feature_addsubiw,
33993399 },
34003400};
34013401
34023402pub const cpu_atxmega128d4 = Cpu{
34033403 .name = "atxmega128d4",
34043404 .llvm_name = "atxmega128d4",
3405 .subfeatures = &[_]*const Feature {
3405 .dependencies = &[_]*const Feature {
34063406 &feature_lpmx,
3407 &feature_spm,
3408 &feature_addsubiw,
3409 &feature_jmpcall,
3407 &feature_elpm,
34103408 &feature_lpm,
3409 &feature_spm,
3410 &feature_ijmpcall,
3411 &feature_movw,
3412 &feature_sram,
3413 &feature_spmx,
34113414 &feature_break,
3415 &feature_jmpcall,
3416 &feature_des,
34123417 &feature_mul,
3413 &feature_elpm,
34143418 &feature_eijmpcall,
34153419 &feature_elpmx,
3416 &feature_sram,
3417 &feature_des,
3418 &feature_ijmpcall,
3419 &feature_movw,
3420 &feature_spmx,
3420 &feature_addsubiw,
34213421 },
34223422};
34233423
34243424pub const cpu_atxmega16a4 = Cpu{
34253425 .name = "atxmega16a4",
34263426 .llvm_name = "atxmega16a4",
3427 .subfeatures = &[_]*const Feature {
3427 .dependencies = &[_]*const Feature {
34283428 &feature_lpmx,
3429 &feature_spm,
3430 &feature_addsubiw,
3431 &feature_jmpcall,
3429 &feature_elpm,
34323430 &feature_lpm,
3431 &feature_spm,
3432 &feature_ijmpcall,
3433 &feature_movw,
3434 &feature_sram,
3435 &feature_spmx,
34333436 &feature_break,
3437 &feature_jmpcall,
3438 &feature_des,
34343439 &feature_mul,
3435 &feature_elpm,
34363440 &feature_eijmpcall,
34373441 &feature_elpmx,
3438 &feature_sram,
3439 &feature_des,
3440 &feature_ijmpcall,
3441 &feature_movw,
3442 &feature_spmx,
3442 &feature_addsubiw,
34433443 },
34443444};
34453445
34463446pub const cpu_atxmega16a4u = Cpu{
34473447 .name = "atxmega16a4u",
34483448 .llvm_name = "atxmega16a4u",
3449 .subfeatures = &[_]*const Feature {
3450 &feature_rmw,
3449 .dependencies = &[_]*const Feature {
34513450 &feature_lpmx,
3451 &feature_elpm,
34523452 &feature_spm,
3453 &feature_addsubiw,
3454 &feature_jmpcall,
34553453 &feature_lpm,
3456 &feature_break,
3457 &feature_mul,
3458 &feature_elpm,
3459 &feature_eijmpcall,
3454 &feature_ijmpcall,
34603455 &feature_elpmx,
34613456 &feature_sram,
3457 &feature_spmx,
3458 &feature_break,
3459 &feature_jmpcall,
34623460 &feature_des,
3463 &feature_ijmpcall,
3461 &feature_rmw,
3462 &feature_mul,
3463 &feature_eijmpcall,
34643464 &feature_movw,
3465 &feature_spmx,
3465 &feature_addsubiw,
34663466 },
34673467};
34683468
34693469pub const cpu_atxmega16c4 = Cpu{
34703470 .name = "atxmega16c4",
34713471 .llvm_name = "atxmega16c4",
3472 .subfeatures = &[_]*const Feature {
3473 &feature_rmw,
3472 .dependencies = &[_]*const Feature {
34743473 &feature_lpmx,
3474 &feature_elpm,
34753475 &feature_spm,
3476 &feature_addsubiw,
3477 &feature_jmpcall,
34783476 &feature_lpm,
3479 &feature_break,
3480 &feature_mul,
3481 &feature_elpm,
3482 &feature_eijmpcall,
3477 &feature_ijmpcall,
34833478 &feature_elpmx,
34843479 &feature_sram,
3480 &feature_spmx,
3481 &feature_break,
3482 &feature_jmpcall,
34853483 &feature_des,
3486 &feature_ijmpcall,
3484 &feature_rmw,
3485 &feature_mul,
3486 &feature_eijmpcall,
34873487 &feature_movw,
3488 &feature_spmx,
3488 &feature_addsubiw,
34893489 },
34903490};
34913491
34923492pub const cpu_atxmega16d4 = Cpu{
34933493 .name = "atxmega16d4",
34943494 .llvm_name = "atxmega16d4",
3495 .subfeatures = &[_]*const Feature {
3495 .dependencies = &[_]*const Feature {
34963496 &feature_lpmx,
3497 &feature_spm,
3498 &feature_addsubiw,
3499 &feature_jmpcall,
3497 &feature_elpm,
35003498 &feature_lpm,
3499 &feature_spm,
3500 &feature_ijmpcall,
3501 &feature_movw,
3502 &feature_sram,
3503 &feature_spmx,
35013504 &feature_break,
3505 &feature_jmpcall,
3506 &feature_des,
35023507 &feature_mul,
3503 &feature_elpm,
35043508 &feature_eijmpcall,
35053509 &feature_elpmx,
3506 &feature_sram,
3507 &feature_des,
3508 &feature_ijmpcall,
3509 &feature_movw,
3510 &feature_spmx,
3510 &feature_addsubiw,
35113511 },
35123512};
35133513
35143514pub const cpu_atxmega16e5 = Cpu{
35153515 .name = "atxmega16e5",
35163516 .llvm_name = "atxmega16e5",
3517 .subfeatures = &[_]*const Feature {
3517 .dependencies = &[_]*const Feature {
35183518 &feature_lpmx,
3519 &feature_spm,
3520 &feature_addsubiw,
3521 &feature_jmpcall,
3519 &feature_elpm,
35223520 &feature_lpm,
3521 &feature_spm,
3522 &feature_ijmpcall,
3523 &feature_movw,
3524 &feature_sram,
3525 &feature_spmx,
35233526 &feature_break,
3527 &feature_jmpcall,
3528 &feature_des,
35243529 &feature_mul,
3525 &feature_elpm,
35263530 &feature_eijmpcall,
35273531 &feature_elpmx,
3528 &feature_sram,
3529 &feature_des,
3530 &feature_ijmpcall,
3531 &feature_movw,
3532 &feature_spmx,
3532 &feature_addsubiw,
35333533 },
35343534};
35353535
35363536pub const cpu_atxmega192a3 = Cpu{
35373537 .name = "atxmega192a3",
35383538 .llvm_name = "atxmega192a3",
3539 .subfeatures = &[_]*const Feature {
3539 .dependencies = &[_]*const Feature {
35403540 &feature_lpmx,
3541 &feature_spm,
3542 &feature_addsubiw,
3543 &feature_jmpcall,
3541 &feature_elpm,
35443542 &feature_lpm,
3543 &feature_spm,
3544 &feature_ijmpcall,
3545 &feature_movw,
3546 &feature_sram,
3547 &feature_spmx,
35453548 &feature_break,
3549 &feature_jmpcall,
3550 &feature_des,
35463551 &feature_mul,
3547 &feature_elpm,
35483552 &feature_eijmpcall,
35493553 &feature_elpmx,
3550 &feature_sram,
3551 &feature_des,
3552 &feature_ijmpcall,
3553 &feature_movw,
3554 &feature_spmx,
3554 &feature_addsubiw,
35553555 },
35563556};
35573557
35583558pub const cpu_atxmega192a3u = Cpu{
35593559 .name = "atxmega192a3u",
35603560 .llvm_name = "atxmega192a3u",
3561 .subfeatures = &[_]*const Feature {
3562 &feature_rmw,
3561 .dependencies = &[_]*const Feature {
35633562 &feature_lpmx,
3563 &feature_elpm,
35643564 &feature_spm,
3565 &feature_addsubiw,
3566 &feature_jmpcall,
35673565 &feature_lpm,
3568 &feature_break,
3569 &feature_mul,
3570 &feature_elpm,
3571 &feature_eijmpcall,
3566 &feature_ijmpcall,
35723567 &feature_elpmx,
35733568 &feature_sram,
3569 &feature_spmx,
3570 &feature_break,
3571 &feature_jmpcall,
35743572 &feature_des,
3575 &feature_ijmpcall,
3573 &feature_rmw,
3574 &feature_mul,
3575 &feature_eijmpcall,
35763576 &feature_movw,
3577 &feature_spmx,
3577 &feature_addsubiw,
35783578 },
35793579};
35803580
35813581pub const cpu_atxmega192c3 = Cpu{
35823582 .name = "atxmega192c3",
35833583 .llvm_name = "atxmega192c3",
3584 .subfeatures = &[_]*const Feature {
3585 &feature_rmw,
3584 .dependencies = &[_]*const Feature {
35863585 &feature_lpmx,
3586 &feature_elpm,
35873587 &feature_spm,
3588 &feature_addsubiw,
3589 &feature_jmpcall,
35903588 &feature_lpm,
3591 &feature_break,
3592 &feature_mul,
3593 &feature_elpm,
3594 &feature_eijmpcall,
3589 &feature_ijmpcall,
35953590 &feature_elpmx,
35963591 &feature_sram,
3592 &feature_spmx,
3593 &feature_break,
3594 &feature_jmpcall,
35973595 &feature_des,
3598 &feature_ijmpcall,
3596 &feature_rmw,
3597 &feature_mul,
3598 &feature_eijmpcall,
35993599 &feature_movw,
3600 &feature_spmx,
3600 &feature_addsubiw,
36013601 },
36023602};
36033603
36043604pub const cpu_atxmega192d3 = Cpu{
36053605 .name = "atxmega192d3",
36063606 .llvm_name = "atxmega192d3",
3607 .subfeatures = &[_]*const Feature {
3607 .dependencies = &[_]*const Feature {
36083608 &feature_lpmx,
3609 &feature_spm,
3610 &feature_addsubiw,
3611 &feature_jmpcall,
3609 &feature_elpm,
36123610 &feature_lpm,
3611 &feature_spm,
3612 &feature_ijmpcall,
3613 &feature_movw,
3614 &feature_sram,
3615 &feature_spmx,
36133616 &feature_break,
3617 &feature_jmpcall,
3618 &feature_des,
36143619 &feature_mul,
3615 &feature_elpm,
36163620 &feature_eijmpcall,
36173621 &feature_elpmx,
3618 &feature_sram,
3619 &feature_des,
3620 &feature_ijmpcall,
3621 &feature_movw,
3622 &feature_spmx,
3622 &feature_addsubiw,
36233623 },
36243624};
36253625
36263626pub const cpu_atxmega256a3 = Cpu{
36273627 .name = "atxmega256a3",
36283628 .llvm_name = "atxmega256a3",
3629 .subfeatures = &[_]*const Feature {
3629 .dependencies = &[_]*const Feature {
36303630 &feature_lpmx,
3631 &feature_spm,
3632 &feature_addsubiw,
3633 &feature_jmpcall,
3631 &feature_elpm,
36343632 &feature_lpm,
3633 &feature_spm,
3634 &feature_ijmpcall,
3635 &feature_movw,
3636 &feature_sram,
3637 &feature_spmx,
36353638 &feature_break,
3639 &feature_jmpcall,
3640 &feature_des,
36363641 &feature_mul,
3637 &feature_elpm,
36383642 &feature_eijmpcall,
36393643 &feature_elpmx,
3640 &feature_sram,
3641 &feature_des,
3642 &feature_ijmpcall,
3643 &feature_movw,
3644 &feature_spmx,
3644 &feature_addsubiw,
36453645 },
36463646};
36473647
36483648pub const cpu_atxmega256a3b = Cpu{
36493649 .name = "atxmega256a3b",
36503650 .llvm_name = "atxmega256a3b",
3651 .subfeatures = &[_]*const Feature {
3651 .dependencies = &[_]*const Feature {
36523652 &feature_lpmx,
3653 &feature_spm,
3654 &feature_addsubiw,
3655 &feature_jmpcall,
3653 &feature_elpm,
36563654 &feature_lpm,
3655 &feature_spm,
3656 &feature_ijmpcall,
3657 &feature_movw,
3658 &feature_sram,
3659 &feature_spmx,
36573660 &feature_break,
3661 &feature_jmpcall,
3662 &feature_des,
36583663 &feature_mul,
3659 &feature_elpm,
36603664 &feature_eijmpcall,
36613665 &feature_elpmx,
3662 &feature_sram,
3663 &feature_des,
3664 &feature_ijmpcall,
3665 &feature_movw,
3666 &feature_spmx,
3666 &feature_addsubiw,
36673667 },
36683668};
36693669
36703670pub const cpu_atxmega256a3bu = Cpu{
36713671 .name = "atxmega256a3bu",
36723672 .llvm_name = "atxmega256a3bu",
3673 .subfeatures = &[_]*const Feature {
3674 &feature_rmw,
3673 .dependencies = &[_]*const Feature {
36753674 &feature_lpmx,
3675 &feature_elpm,
36763676 &feature_spm,
3677 &feature_addsubiw,
3678 &feature_jmpcall,
36793677 &feature_lpm,
3680 &feature_break,
3681 &feature_mul,
3682 &feature_elpm,
3683 &feature_eijmpcall,
3678 &feature_ijmpcall,
36843679 &feature_elpmx,
36853680 &feature_sram,
3681 &feature_spmx,
3682 &feature_break,
3683 &feature_jmpcall,
36863684 &feature_des,
3687 &feature_ijmpcall,
3685 &feature_rmw,
3686 &feature_mul,
3687 &feature_eijmpcall,
36883688 &feature_movw,
3689 &feature_spmx,
3689 &feature_addsubiw,
36903690 },
36913691};
36923692
36933693pub const cpu_atxmega256a3u = Cpu{
36943694 .name = "atxmega256a3u",
36953695 .llvm_name = "atxmega256a3u",
3696 .subfeatures = &[_]*const Feature {
3697 &feature_rmw,
3696 .dependencies = &[_]*const Feature {
36983697 &feature_lpmx,
3698 &feature_elpm,
36993699 &feature_spm,
3700 &feature_addsubiw,
3701 &feature_jmpcall,
37023700 &feature_lpm,
3703 &feature_break,
3704 &feature_mul,
3705 &feature_elpm,
3706 &feature_eijmpcall,
3701 &feature_ijmpcall,
37073702 &feature_elpmx,
37083703 &feature_sram,
3704 &feature_spmx,
3705 &feature_break,
3706 &feature_jmpcall,
37093707 &feature_des,
3710 &feature_ijmpcall,
3708 &feature_rmw,
3709 &feature_mul,
3710 &feature_eijmpcall,
37113711 &feature_movw,
3712 &feature_spmx,
3712 &feature_addsubiw,
37133713 },
37143714};
37153715
37163716pub const cpu_atxmega256c3 = Cpu{
37173717 .name = "atxmega256c3",
37183718 .llvm_name = "atxmega256c3",
3719 .subfeatures = &[_]*const Feature {
3720 &feature_rmw,
3719 .dependencies = &[_]*const Feature {
37213720 &feature_lpmx,
3721 &feature_elpm,
37223722 &feature_spm,
3723 &feature_addsubiw,
3724 &feature_jmpcall,
37253723 &feature_lpm,
3726 &feature_break,
3727 &feature_mul,
3728 &feature_elpm,
3729 &feature_eijmpcall,
3724 &feature_ijmpcall,
37303725 &feature_elpmx,
37313726 &feature_sram,
3727 &feature_spmx,
3728 &feature_break,
3729 &feature_jmpcall,
37323730 &feature_des,
3733 &feature_ijmpcall,
3731 &feature_rmw,
3732 &feature_mul,
3733 &feature_eijmpcall,
37343734 &feature_movw,
3735 &feature_spmx,
3735 &feature_addsubiw,
37363736 },
37373737};
37383738
37393739pub const cpu_atxmega256d3 = Cpu{
37403740 .name = "atxmega256d3",
37413741 .llvm_name = "atxmega256d3",
3742 .subfeatures = &[_]*const Feature {
3742 .dependencies = &[_]*const Feature {
37433743 &feature_lpmx,
3744 &feature_spm,
3745 &feature_addsubiw,
3746 &feature_jmpcall,
3744 &feature_elpm,
37473745 &feature_lpm,
3746 &feature_spm,
3747 &feature_ijmpcall,
3748 &feature_movw,
3749 &feature_sram,
3750 &feature_spmx,
37483751 &feature_break,
3752 &feature_jmpcall,
3753 &feature_des,
37493754 &feature_mul,
3750 &feature_elpm,
37513755 &feature_eijmpcall,
37523756 &feature_elpmx,
3753 &feature_sram,
3754 &feature_des,
3755 &feature_ijmpcall,
3756 &feature_movw,
3757 &feature_spmx,
3757 &feature_addsubiw,
37583758 },
37593759};
37603760
37613761pub const cpu_atxmega32a4 = Cpu{
37623762 .name = "atxmega32a4",
37633763 .llvm_name = "atxmega32a4",
3764 .subfeatures = &[_]*const Feature {
3764 .dependencies = &[_]*const Feature {
37653765 &feature_lpmx,
3766 &feature_spm,
3767 &feature_addsubiw,
3768 &feature_jmpcall,
3766 &feature_elpm,
37693767 &feature_lpm,
3768 &feature_spm,
3769 &feature_ijmpcall,
3770 &feature_movw,
3771 &feature_sram,
3772 &feature_spmx,
37703773 &feature_break,
3774 &feature_jmpcall,
3775 &feature_des,
37713776 &feature_mul,
3772 &feature_elpm,
37733777 &feature_eijmpcall,
37743778 &feature_elpmx,
3775 &feature_sram,
3776 &feature_des,
3777 &feature_ijmpcall,
3778 &feature_movw,
3779 &feature_spmx,
3779 &feature_addsubiw,
37803780 },
37813781};
37823782
37833783pub const cpu_atxmega32a4u = Cpu{
37843784 .name = "atxmega32a4u",
37853785 .llvm_name = "atxmega32a4u",
3786 .subfeatures = &[_]*const Feature {
3787 &feature_rmw,
3786 .dependencies = &[_]*const Feature {
37883787 &feature_lpmx,
3788 &feature_elpm,
37893789 &feature_spm,
3790 &feature_addsubiw,
3791 &feature_jmpcall,
37923790 &feature_lpm,
3793 &feature_break,
3794 &feature_mul,
3795 &feature_elpm,
3796 &feature_eijmpcall,
3791 &feature_ijmpcall,
37973792 &feature_elpmx,
37983793 &feature_sram,
3794 &feature_spmx,
3795 &feature_break,
3796 &feature_jmpcall,
37993797 &feature_des,
3800 &feature_ijmpcall,
3798 &feature_rmw,
3799 &feature_mul,
3800 &feature_eijmpcall,
38013801 &feature_movw,
3802 &feature_spmx,
3802 &feature_addsubiw,
38033803 },
38043804};
38053805
38063806pub const cpu_atxmega32c4 = Cpu{
38073807 .name = "atxmega32c4",
38083808 .llvm_name = "atxmega32c4",
3809 .subfeatures = &[_]*const Feature {
3810 &feature_rmw,
3809 .dependencies = &[_]*const Feature {
38113810 &feature_lpmx,
3811 &feature_elpm,
38123812 &feature_spm,
3813 &feature_addsubiw,
3814 &feature_jmpcall,
38153813 &feature_lpm,
3816 &feature_break,
3817 &feature_mul,
3818 &feature_elpm,
3819 &feature_eijmpcall,
3814 &feature_ijmpcall,
38203815 &feature_elpmx,
38213816 &feature_sram,
3817 &feature_spmx,
3818 &feature_break,
3819 &feature_jmpcall,
38223820 &feature_des,
3823 &feature_ijmpcall,
3821 &feature_rmw,
3822 &feature_mul,
3823 &feature_eijmpcall,
38243824 &feature_movw,
3825 &feature_spmx,
3825 &feature_addsubiw,
38263826 },
38273827};
38283828
38293829pub const cpu_atxmega32d4 = Cpu{
38303830 .name = "atxmega32d4",
38313831 .llvm_name = "atxmega32d4",
3832 .subfeatures = &[_]*const Feature {
3832 .dependencies = &[_]*const Feature {
38333833 &feature_lpmx,
3834 &feature_spm,
3835 &feature_addsubiw,
3836 &feature_jmpcall,
3834 &feature_elpm,
38373835 &feature_lpm,
3836 &feature_spm,
3837 &feature_ijmpcall,
3838 &feature_movw,
3839 &feature_sram,
3840 &feature_spmx,
38383841 &feature_break,
3842 &feature_jmpcall,
3843 &feature_des,
38393844 &feature_mul,
3840 &feature_elpm,
38413845 &feature_eijmpcall,
38423846 &feature_elpmx,
3843 &feature_sram,
3844 &feature_des,
3845 &feature_ijmpcall,
3846 &feature_movw,
3847 &feature_spmx,
3847 &feature_addsubiw,
38483848 },
38493849};
38503850
38513851pub const cpu_atxmega32e5 = Cpu{
38523852 .name = "atxmega32e5",
38533853 .llvm_name = "atxmega32e5",
3854 .subfeatures = &[_]*const Feature {
3854 .dependencies = &[_]*const Feature {
38553855 &feature_lpmx,
3856 &feature_spm,
3857 &feature_addsubiw,
3858 &feature_jmpcall,
3856 &feature_elpm,
38593857 &feature_lpm,
3858 &feature_spm,
3859 &feature_ijmpcall,
3860 &feature_movw,
3861 &feature_sram,
3862 &feature_spmx,
38603863 &feature_break,
3864 &feature_jmpcall,
3865 &feature_des,
38613866 &feature_mul,
3862 &feature_elpm,
38633867 &feature_eijmpcall,
38643868 &feature_elpmx,
3865 &feature_sram,
3866 &feature_des,
3867 &feature_ijmpcall,
3868 &feature_movw,
3869 &feature_spmx,
3869 &feature_addsubiw,
38703870 },
38713871};
38723872
38733873pub const cpu_atxmega32x1 = Cpu{
38743874 .name = "atxmega32x1",
38753875 .llvm_name = "atxmega32x1",
3876 .subfeatures = &[_]*const Feature {
3876 .dependencies = &[_]*const Feature {
38773877 &feature_lpmx,
3878 &feature_spm,
3879 &feature_addsubiw,
3880 &feature_jmpcall,
3878 &feature_elpm,
38813879 &feature_lpm,
3880 &feature_spm,
3881 &feature_ijmpcall,
3882 &feature_movw,
3883 &feature_sram,
3884 &feature_spmx,
38823885 &feature_break,
3886 &feature_jmpcall,
3887 &feature_des,
38833888 &feature_mul,
3884 &feature_elpm,
38853889 &feature_eijmpcall,
38863890 &feature_elpmx,
3887 &feature_sram,
3888 &feature_des,
3889 &feature_ijmpcall,
3890 &feature_movw,
3891 &feature_spmx,
3891 &feature_addsubiw,
38923892 },
38933893};
38943894
38953895pub const cpu_atxmega384c3 = Cpu{
38963896 .name = "atxmega384c3",
38973897 .llvm_name = "atxmega384c3",
3898 .subfeatures = &[_]*const Feature {
3899 &feature_rmw,
3898 .dependencies = &[_]*const Feature {
39003899 &feature_lpmx,
3900 &feature_elpm,
39013901 &feature_spm,
3902 &feature_addsubiw,
3903 &feature_jmpcall,
39043902 &feature_lpm,
3905 &feature_break,
3906 &feature_mul,
3907 &feature_elpm,
3908 &feature_eijmpcall,
3903 &feature_ijmpcall,
39093904 &feature_elpmx,
39103905 &feature_sram,
3906 &feature_spmx,
3907 &feature_break,
3908 &feature_jmpcall,
39113909 &feature_des,
3912 &feature_ijmpcall,
3910 &feature_rmw,
3911 &feature_mul,
3912 &feature_eijmpcall,
39133913 &feature_movw,
3914 &feature_spmx,
3914 &feature_addsubiw,
39153915 },
39163916};
39173917
39183918pub const cpu_atxmega384d3 = Cpu{
39193919 .name = "atxmega384d3",
39203920 .llvm_name = "atxmega384d3",
3921 .subfeatures = &[_]*const Feature {
3921 .dependencies = &[_]*const Feature {
39223922 &feature_lpmx,
3923 &feature_spm,
3924 &feature_addsubiw,
3925 &feature_jmpcall,
3923 &feature_elpm,
39263924 &feature_lpm,
3925 &feature_spm,
3926 &feature_ijmpcall,
3927 &feature_movw,
3928 &feature_sram,
3929 &feature_spmx,
39273930 &feature_break,
3931 &feature_jmpcall,
3932 &feature_des,
39283933 &feature_mul,
3929 &feature_elpm,
39303934 &feature_eijmpcall,
39313935 &feature_elpmx,
3932 &feature_sram,
3933 &feature_des,
3934 &feature_ijmpcall,
3935 &feature_movw,
3936 &feature_spmx,
3936 &feature_addsubiw,
39373937 },
39383938};
39393939
39403940pub const cpu_atxmega64a1 = Cpu{
39413941 .name = "atxmega64a1",
39423942 .llvm_name = "atxmega64a1",
3943 .subfeatures = &[_]*const Feature {
3943 .dependencies = &[_]*const Feature {
39443944 &feature_lpmx,
3945 &feature_spm,
3946 &feature_addsubiw,
3947 &feature_jmpcall,
3945 &feature_elpm,
39483946 &feature_lpm,
3947 &feature_spm,
3948 &feature_ijmpcall,
3949 &feature_movw,
3950 &feature_sram,
3951 &feature_spmx,
39493952 &feature_break,
3953 &feature_jmpcall,
3954 &feature_des,
39503955 &feature_mul,
3951 &feature_elpm,
39523956 &feature_eijmpcall,
39533957 &feature_elpmx,
3954 &feature_sram,
3955 &feature_des,
3956 &feature_ijmpcall,
3957 &feature_movw,
3958 &feature_spmx,
3958 &feature_addsubiw,
39593959 },
39603960};
39613961
39623962pub const cpu_atxmega64a1u = Cpu{
39633963 .name = "atxmega64a1u",
39643964 .llvm_name = "atxmega64a1u",
3965 .subfeatures = &[_]*const Feature {
3966 &feature_rmw,
3965 .dependencies = &[_]*const Feature {
39673966 &feature_lpmx,
3967 &feature_elpm,
39683968 &feature_spm,
3969 &feature_addsubiw,
3970 &feature_jmpcall,
39713969 &feature_lpm,
3972 &feature_break,
3973 &feature_mul,
3974 &feature_elpm,
3975 &feature_eijmpcall,
3970 &feature_ijmpcall,
39763971 &feature_elpmx,
39773972 &feature_sram,
3973 &feature_spmx,
3974 &feature_break,
3975 &feature_jmpcall,
39783976 &feature_des,
3979 &feature_ijmpcall,
3977 &feature_rmw,
3978 &feature_mul,
3979 &feature_eijmpcall,
39803980 &feature_movw,
3981 &feature_spmx,
3981 &feature_addsubiw,
39823982 },
39833983};
39843984
39853985pub const cpu_atxmega64a3 = Cpu{
39863986 .name = "atxmega64a3",
39873987 .llvm_name = "atxmega64a3",
3988 .subfeatures = &[_]*const Feature {
3988 .dependencies = &[_]*const Feature {
39893989 &feature_lpmx,
3990 &feature_spm,
3991 &feature_addsubiw,
3992 &feature_jmpcall,
3990 &feature_elpm,
39933991 &feature_lpm,
3992 &feature_spm,
3993 &feature_ijmpcall,
3994 &feature_movw,
3995 &feature_sram,
3996 &feature_spmx,
39943997 &feature_break,
3998 &feature_jmpcall,
3999 &feature_des,
39954000 &feature_mul,
3996 &feature_elpm,
39974001 &feature_eijmpcall,
39984002 &feature_elpmx,
3999 &feature_sram,
4000 &feature_des,
4001 &feature_ijmpcall,
4002 &feature_movw,
4003 &feature_spmx,
4003 &feature_addsubiw,
40044004 },
40054005};
40064006
40074007pub const cpu_atxmega64a3u = Cpu{
40084008 .name = "atxmega64a3u",
40094009 .llvm_name = "atxmega64a3u",
4010 .subfeatures = &[_]*const Feature {
4011 &feature_rmw,
4010 .dependencies = &[_]*const Feature {
40124011 &feature_lpmx,
4012 &feature_elpm,
40134013 &feature_spm,
4014 &feature_addsubiw,
4015 &feature_jmpcall,
40164014 &feature_lpm,
4017 &feature_break,
4018 &feature_mul,
4019 &feature_elpm,
4020 &feature_eijmpcall,
4015 &feature_ijmpcall,
40214016 &feature_elpmx,
40224017 &feature_sram,
4018 &feature_spmx,
4019 &feature_break,
4020 &feature_jmpcall,
40234021 &feature_des,
4024 &feature_ijmpcall,
4022 &feature_rmw,
4023 &feature_mul,
4024 &feature_eijmpcall,
40254025 &feature_movw,
4026 &feature_spmx,
4026 &feature_addsubiw,
40274027 },
40284028};
40294029
40304030pub const cpu_atxmega64a4u = Cpu{
40314031 .name = "atxmega64a4u",
40324032 .llvm_name = "atxmega64a4u",
4033 .subfeatures = &[_]*const Feature {
4034 &feature_rmw,
4033 .dependencies = &[_]*const Feature {
40354034 &feature_lpmx,
4035 &feature_elpm,
40364036 &feature_spm,
4037 &feature_addsubiw,
4038 &feature_jmpcall,
40394037 &feature_lpm,
4040 &feature_break,
4041 &feature_mul,
4042 &feature_elpm,
4043 &feature_eijmpcall,
4038 &feature_ijmpcall,
40444039 &feature_elpmx,
40454040 &feature_sram,
4041 &feature_spmx,
4042 &feature_break,
4043 &feature_jmpcall,
40464044 &feature_des,
4047 &feature_ijmpcall,
4045 &feature_rmw,
4046 &feature_mul,
4047 &feature_eijmpcall,
40484048 &feature_movw,
4049 &feature_spmx,
4049 &feature_addsubiw,
40504050 },
40514051};
40524052
40534053pub const cpu_atxmega64b1 = Cpu{
40544054 .name = "atxmega64b1",
40554055 .llvm_name = "atxmega64b1",
4056 .subfeatures = &[_]*const Feature {
4057 &feature_rmw,
4056 .dependencies = &[_]*const Feature {
40584057 &feature_lpmx,
4058 &feature_elpm,
40594059 &feature_spm,
4060 &feature_addsubiw,
4061 &feature_jmpcall,
40624060 &feature_lpm,
4063 &feature_break,
4064 &feature_mul,
4065 &feature_elpm,
4066 &feature_eijmpcall,
4061 &feature_ijmpcall,
40674062 &feature_elpmx,
40684063 &feature_sram,
4064 &feature_spmx,
4065 &feature_break,
4066 &feature_jmpcall,
40694067 &feature_des,
4070 &feature_ijmpcall,
4068 &feature_rmw,
4069 &feature_mul,
4070 &feature_eijmpcall,
40714071 &feature_movw,
4072 &feature_spmx,
4072 &feature_addsubiw,
40734073 },
40744074};
40754075
40764076pub const cpu_atxmega64b3 = Cpu{
40774077 .name = "atxmega64b3",
40784078 .llvm_name = "atxmega64b3",
4079 .subfeatures = &[_]*const Feature {
4080 &feature_rmw,
4079 .dependencies = &[_]*const Feature {
40814080 &feature_lpmx,
4081 &feature_elpm,
40824082 &feature_spm,
4083 &feature_addsubiw,
4084 &feature_jmpcall,
40854083 &feature_lpm,
4086 &feature_break,
4087 &feature_mul,
4088 &feature_elpm,
4089 &feature_eijmpcall,
4084 &feature_ijmpcall,
40904085 &feature_elpmx,
40914086 &feature_sram,
4087 &feature_spmx,
4088 &feature_break,
4089 &feature_jmpcall,
40924090 &feature_des,
4093 &feature_ijmpcall,
4091 &feature_rmw,
4092 &feature_mul,
4093 &feature_eijmpcall,
40944094 &feature_movw,
4095 &feature_spmx,
4095 &feature_addsubiw,
40964096 },
40974097};
40984098
40994099pub const cpu_atxmega64c3 = Cpu{
41004100 .name = "atxmega64c3",
41014101 .llvm_name = "atxmega64c3",
4102 .subfeatures = &[_]*const Feature {
4103 &feature_rmw,
4102 .dependencies = &[_]*const Feature {
41044103 &feature_lpmx,
4104 &feature_elpm,
41054105 &feature_spm,
4106 &feature_addsubiw,
4107 &feature_jmpcall,
41084106 &feature_lpm,
4109 &feature_break,
4110 &feature_mul,
4111 &feature_elpm,
4112 &feature_eijmpcall,
4107 &feature_ijmpcall,
41134108 &feature_elpmx,
41144109 &feature_sram,
4110 &feature_spmx,
4111 &feature_break,
4112 &feature_jmpcall,
41154113 &feature_des,
4116 &feature_ijmpcall,
4114 &feature_rmw,
4115 &feature_mul,
4116 &feature_eijmpcall,
41174117 &feature_movw,
4118 &feature_spmx,
4118 &feature_addsubiw,
41194119 },
41204120};
41214121
41224122pub const cpu_atxmega64d3 = Cpu{
41234123 .name = "atxmega64d3",
41244124 .llvm_name = "atxmega64d3",
4125 .subfeatures = &[_]*const Feature {
4125 .dependencies = &[_]*const Feature {
41264126 &feature_lpmx,
4127 &feature_spm,
4128 &feature_addsubiw,
4129 &feature_jmpcall,
4130 &feature_lpm,
4131 &feature_break,
4132 &feature_mul,
41334127 &feature_elpm,
4134 &feature_eijmpcall,
4135 &feature_elpmx,
4136 &feature_sram,
4137 &feature_des,
4128 &feature_lpm,
4129 &feature_spm,
41384130 &feature_ijmpcall,
41394131 &feature_movw,
4132 &feature_sram,
41404133 &feature_spmx,
4134 &feature_break,
4135 &feature_jmpcall,
4136 &feature_des,
4137 &feature_mul,
4138 &feature_eijmpcall,
4139 &feature_elpmx,
4140 &feature_addsubiw,
41414141 },
41424142};
41434143
41444144pub const cpu_atxmega64d4 = Cpu{
41454145 .name = "atxmega64d4",
41464146 .llvm_name = "atxmega64d4",
4147 .subfeatures = &[_]*const Feature {
4147 .dependencies = &[_]*const Feature {
41484148 &feature_lpmx,
4149 &feature_spm,
4150 &feature_addsubiw,
4151 &feature_jmpcall,
4149 &feature_elpm,
41524150 &feature_lpm,
4151 &feature_spm,
4152 &feature_ijmpcall,
4153 &feature_movw,
4154 &feature_sram,
4155 &feature_spmx,
41534156 &feature_break,
4157 &feature_jmpcall,
4158 &feature_des,
41544159 &feature_mul,
4155 &feature_elpm,
41564160 &feature_eijmpcall,
41574161 &feature_elpmx,
4158 &feature_sram,
4159 &feature_des,
4160 &feature_ijmpcall,
4161 &feature_movw,
4162 &feature_spmx,
4162 &feature_addsubiw,
41634163 },
41644164};
41654165
41664166pub const cpu_atxmega8e5 = Cpu{
41674167 .name = "atxmega8e5",
41684168 .llvm_name = "atxmega8e5",
4169 .subfeatures = &[_]*const Feature {
4169 .dependencies = &[_]*const Feature {
41704170 &feature_lpmx,
4171 &feature_spm,
4172 &feature_addsubiw,
4173 &feature_jmpcall,
4171 &feature_elpm,
41744172 &feature_lpm,
4173 &feature_spm,
4174 &feature_ijmpcall,
4175 &feature_movw,
4176 &feature_sram,
4177 &feature_spmx,
41754178 &feature_break,
4179 &feature_jmpcall,
4180 &feature_des,
41764181 &feature_mul,
4177 &feature_elpm,
41784182 &feature_eijmpcall,
41794183 &feature_elpmx,
4180 &feature_sram,
4181 &feature_des,
4182 &feature_ijmpcall,
4183 &feature_movw,
4184 &feature_spmx,
4184 &feature_addsubiw,
41854185 },
41864186};
41874187
41884188pub const cpu_avr1 = Cpu{
41894189 .name = "avr1",
41904190 .llvm_name = "avr1",
4191 .subfeatures = &[_]*const Feature {
4191 .dependencies = &[_]*const Feature {
41924192 &feature_lpm,
41934193 },
41944194};
......@@ -4196,319 +4196,319 @@ pub const cpu_avr1 = Cpu{
41964196pub const cpu_avr2 = Cpu{
41974197 .name = "avr2",
41984198 .llvm_name = "avr2",
4199 .subfeatures = &[_]*const Feature {
4200 &feature_addsubiw,
4199 .dependencies = &[_]*const Feature {
42014200 &feature_lpm,
4202 &feature_sram,
42034201 &feature_ijmpcall,
4202 &feature_sram,
4203 &feature_addsubiw,
42044204 },
42054205};
42064206
42074207pub const cpu_avr25 = Cpu{
42084208 .name = "avr25",
42094209 .llvm_name = "avr25",
4210 .subfeatures = &[_]*const Feature {
4210 .dependencies = &[_]*const Feature {
42114211 &feature_lpmx,
4212 &feature_spm,
4213 &feature_addsubiw,
4214 &feature_break,
42154212 &feature_lpm,
4216 &feature_sram,
4213 &feature_spm,
42174214 &feature_ijmpcall,
4215 &feature_sram,
4216 &feature_break,
42184217 &feature_movw,
4218 &feature_addsubiw,
42194219 },
42204220};
42214221
42224222pub const cpu_avr3 = Cpu{
42234223 .name = "avr3",
42244224 .llvm_name = "avr3",
4225 .subfeatures = &[_]*const Feature {
4226 &feature_addsubiw,
4227 &feature_jmpcall,
4225 .dependencies = &[_]*const Feature {
42284226 &feature_lpm,
4229 &feature_sram,
42304227 &feature_ijmpcall,
4228 &feature_sram,
4229 &feature_jmpcall,
4230 &feature_addsubiw,
42314231 },
42324232};
42334233
42344234pub const cpu_avr31 = Cpu{
42354235 .name = "avr31",
42364236 .llvm_name = "avr31",
4237 .subfeatures = &[_]*const Feature {
4238 &feature_addsubiw,
4239 &feature_jmpcall,
4240 &feature_lpm,
4237 .dependencies = &[_]*const Feature {
42414238 &feature_elpm,
4242 &feature_sram,
4239 &feature_lpm,
42434240 &feature_ijmpcall,
4241 &feature_sram,
4242 &feature_jmpcall,
4243 &feature_addsubiw,
42444244 },
42454245};
42464246
42474247pub const cpu_avr35 = Cpu{
42484248 .name = "avr35",
42494249 .llvm_name = "avr35",
4250 .subfeatures = &[_]*const Feature {
4250 .dependencies = &[_]*const Feature {
42514251 &feature_lpmx,
4252 &feature_spm,
4253 &feature_addsubiw,
4254 &feature_jmpcall,
42554252 &feature_lpm,
4256 &feature_break,
4257 &feature_sram,
4253 &feature_spm,
42584254 &feature_ijmpcall,
4255 &feature_sram,
4256 &feature_break,
4257 &feature_jmpcall,
42594258 &feature_movw,
4259 &feature_addsubiw,
42604260 },
42614261};
42624262
42634263pub const cpu_avr4 = Cpu{
42644264 .name = "avr4",
42654265 .llvm_name = "avr4",
4266 .subfeatures = &[_]*const Feature {
4266 .dependencies = &[_]*const Feature {
42674267 &feature_lpmx,
4268 &feature_lpm,
42684269 &feature_spm,
4269 &feature_addsubiw,
4270 &feature_ijmpcall,
4271 &feature_sram,
42704272 &feature_break,
4271 &feature_lpm,
42724273 &feature_mul,
4273 &feature_sram,
4274 &feature_ijmpcall,
42754274 &feature_movw,
4275 &feature_addsubiw,
42764276 },
42774277};
42784278
42794279pub const cpu_avr5 = Cpu{
42804280 .name = "avr5",
42814281 .llvm_name = "avr5",
4282 .subfeatures = &[_]*const Feature {
4282 .dependencies = &[_]*const Feature {
42834283 &feature_lpmx,
4284 &feature_spm,
4285 &feature_addsubiw,
4286 &feature_jmpcall,
42874284 &feature_lpm,
4285 &feature_spm,
4286 &feature_ijmpcall,
4287 &feature_sram,
42884288 &feature_break,
4289 &feature_jmpcall,
42894290 &feature_mul,
4290 &feature_sram,
4291 &feature_ijmpcall,
42924291 &feature_movw,
4292 &feature_addsubiw,
42934293 },
42944294};
42954295
42964296pub const cpu_avr51 = Cpu{
42974297 .name = "avr51",
42984298 .llvm_name = "avr51",
4299 .subfeatures = &[_]*const Feature {
4299 .dependencies = &[_]*const Feature {
43004300 &feature_lpmx,
4301 &feature_elpm,
43014302 &feature_spm,
4302 &feature_addsubiw,
4303 &feature_jmpcall,
43044303 &feature_lpm,
4305 &feature_break,
4306 &feature_mul,
4307 &feature_elpm,
4304 &feature_ijmpcall,
43084305 &feature_elpmx,
43094306 &feature_sram,
4310 &feature_ijmpcall,
4307 &feature_break,
4308 &feature_jmpcall,
4309 &feature_mul,
43114310 &feature_movw,
4311 &feature_addsubiw,
43124312 },
43134313};
43144314
43154315pub const cpu_avr6 = Cpu{
43164316 .name = "avr6",
43174317 .llvm_name = "avr6",
4318 .subfeatures = &[_]*const Feature {
4318 .dependencies = &[_]*const Feature {
43194319 &feature_lpmx,
4320 &feature_spm,
4321 &feature_addsubiw,
4322 &feature_jmpcall,
4320 &feature_elpm,
43234321 &feature_lpm,
4322 &feature_spm,
4323 &feature_ijmpcall,
4324 &feature_movw,
4325 &feature_sram,
43244326 &feature_break,
4327 &feature_jmpcall,
43254328 &feature_mul,
4326 &feature_elpm,
43274329 &feature_elpmx,
4328 &feature_sram,
4329 &feature_ijmpcall,
4330 &feature_movw,
4330 &feature_addsubiw,
43314331 },
43324332};
43334333
43344334pub const cpu_avrtiny = Cpu{
43354335 .name = "avrtiny",
43364336 .llvm_name = "avrtiny",
4337 .subfeatures = &[_]*const Feature {
4337 .dependencies = &[_]*const Feature {
43384338 &feature_break,
4339 &feature_sram,
43404339 &feature_tinyencoding,
4340 &feature_sram,
43414341 },
43424342};
43434343
43444344pub const cpu_avrxmega1 = Cpu{
43454345 .name = "avrxmega1",
43464346 .llvm_name = "avrxmega1",
4347 .subfeatures = &[_]*const Feature {
4347 .dependencies = &[_]*const Feature {
43484348 &feature_lpmx,
4349 &feature_spm,
4350 &feature_addsubiw,
4351 &feature_jmpcall,
4349 &feature_elpm,
43524350 &feature_lpm,
4351 &feature_spm,
4352 &feature_ijmpcall,
4353 &feature_movw,
4354 &feature_sram,
4355 &feature_spmx,
43534356 &feature_break,
4357 &feature_jmpcall,
4358 &feature_des,
43544359 &feature_mul,
4355 &feature_elpm,
43564360 &feature_eijmpcall,
43574361 &feature_elpmx,
4358 &feature_sram,
4359 &feature_des,
4360 &feature_ijmpcall,
4361 &feature_movw,
4362 &feature_spmx,
4362 &feature_addsubiw,
43634363 },
43644364};
43654365
43664366pub const cpu_avrxmega2 = Cpu{
43674367 .name = "avrxmega2",
43684368 .llvm_name = "avrxmega2",
4369 .subfeatures = &[_]*const Feature {
4369 .dependencies = &[_]*const Feature {
43704370 &feature_lpmx,
4371 &feature_spm,
4372 &feature_addsubiw,
4373 &feature_jmpcall,
4371 &feature_elpm,
43744372 &feature_lpm,
4373 &feature_spm,
4374 &feature_ijmpcall,
4375 &feature_movw,
4376 &feature_sram,
4377 &feature_spmx,
43754378 &feature_break,
4379 &feature_jmpcall,
4380 &feature_des,
43764381 &feature_mul,
4377 &feature_elpm,
43784382 &feature_eijmpcall,
43794383 &feature_elpmx,
4380 &feature_sram,
4381 &feature_des,
4382 &feature_ijmpcall,
4383 &feature_movw,
4384 &feature_spmx,
4384 &feature_addsubiw,
43854385 },
43864386};
43874387
43884388pub const cpu_avrxmega3 = Cpu{
43894389 .name = "avrxmega3",
43904390 .llvm_name = "avrxmega3",
4391 .subfeatures = &[_]*const Feature {
4391 .dependencies = &[_]*const Feature {
43924392 &feature_lpmx,
4393 &feature_spm,
4394 &feature_addsubiw,
4395 &feature_jmpcall,
4393 &feature_elpm,
43964394 &feature_lpm,
4395 &feature_spm,
4396 &feature_ijmpcall,
4397 &feature_movw,
4398 &feature_sram,
4399 &feature_spmx,
43974400 &feature_break,
4401 &feature_jmpcall,
4402 &feature_des,
43984403 &feature_mul,
4399 &feature_elpm,
44004404 &feature_eijmpcall,
44014405 &feature_elpmx,
4402 &feature_sram,
4403 &feature_des,
4404 &feature_ijmpcall,
4405 &feature_movw,
4406 &feature_spmx,
4406 &feature_addsubiw,
44074407 },
44084408};
44094409
44104410pub const cpu_avrxmega4 = Cpu{
44114411 .name = "avrxmega4",
44124412 .llvm_name = "avrxmega4",
4413 .subfeatures = &[_]*const Feature {
4413 .dependencies = &[_]*const Feature {
44144414 &feature_lpmx,
4415 &feature_spm,
4416 &feature_addsubiw,
4417 &feature_jmpcall,
4415 &feature_elpm,
44184416 &feature_lpm,
4417 &feature_spm,
4418 &feature_ijmpcall,
4419 &feature_movw,
4420 &feature_sram,
4421 &feature_spmx,
44194422 &feature_break,
4423 &feature_jmpcall,
4424 &feature_des,
44204425 &feature_mul,
4421 &feature_elpm,
44224426 &feature_eijmpcall,
44234427 &feature_elpmx,
4424 &feature_sram,
4425 &feature_des,
4426 &feature_ijmpcall,
4427 &feature_movw,
4428 &feature_spmx,
4428 &feature_addsubiw,
44294429 },
44304430};
44314431
44324432pub const cpu_avrxmega5 = Cpu{
44334433 .name = "avrxmega5",
44344434 .llvm_name = "avrxmega5",
4435 .subfeatures = &[_]*const Feature {
4435 .dependencies = &[_]*const Feature {
44364436 &feature_lpmx,
4437 &feature_spm,
4438 &feature_addsubiw,
4439 &feature_jmpcall,
4437 &feature_elpm,
44404438 &feature_lpm,
4439 &feature_spm,
4440 &feature_ijmpcall,
4441 &feature_movw,
4442 &feature_sram,
4443 &feature_spmx,
44414444 &feature_break,
4445 &feature_jmpcall,
4446 &feature_des,
44424447 &feature_mul,
4443 &feature_elpm,
44444448 &feature_eijmpcall,
44454449 &feature_elpmx,
4446 &feature_sram,
4447 &feature_des,
4448 &feature_ijmpcall,
4449 &feature_movw,
4450 &feature_spmx,
4450 &feature_addsubiw,
44514451 },
44524452};
44534453
44544454pub const cpu_avrxmega6 = Cpu{
44554455 .name = "avrxmega6",
44564456 .llvm_name = "avrxmega6",
4457 .subfeatures = &[_]*const Feature {
4457 .dependencies = &[_]*const Feature {
44584458 &feature_lpmx,
4459 &feature_spm,
4460 &feature_addsubiw,
4461 &feature_jmpcall,
4459 &feature_elpm,
44624460 &feature_lpm,
4461 &feature_spm,
4462 &feature_ijmpcall,
4463 &feature_movw,
4464 &feature_sram,
4465 &feature_spmx,
44634466 &feature_break,
4467 &feature_jmpcall,
4468 &feature_des,
44644469 &feature_mul,
4465 &feature_elpm,
44664470 &feature_eijmpcall,
44674471 &feature_elpmx,
4468 &feature_sram,
4469 &feature_des,
4470 &feature_ijmpcall,
4471 &feature_movw,
4472 &feature_spmx,
4472 &feature_addsubiw,
44734473 },
44744474};
44754475
44764476pub const cpu_avrxmega7 = Cpu{
44774477 .name = "avrxmega7",
44784478 .llvm_name = "avrxmega7",
4479 .subfeatures = &[_]*const Feature {
4479 .dependencies = &[_]*const Feature {
44804480 &feature_lpmx,
4481 &feature_spm,
4482 &feature_addsubiw,
4483 &feature_jmpcall,
4481 &feature_elpm,
44844482 &feature_lpm,
4483 &feature_spm,
4484 &feature_ijmpcall,
4485 &feature_movw,
4486 &feature_sram,
4487 &feature_spmx,
44854488 &feature_break,
4489 &feature_jmpcall,
4490 &feature_des,
44864491 &feature_mul,
4487 &feature_elpm,
44884492 &feature_eijmpcall,
44894493 &feature_elpmx,
4490 &feature_sram,
4491 &feature_des,
4492 &feature_ijmpcall,
4493 &feature_movw,
4494 &feature_spmx,
4494 &feature_addsubiw,
44954495 },
44964496};
44974497
44984498pub const cpu_m3000 = Cpu{
44994499 .name = "m3000",
45004500 .llvm_name = "m3000",
4501 .subfeatures = &[_]*const Feature {
4501 .dependencies = &[_]*const Feature {
45024502 &feature_lpmx,
4503 &feature_spm,
4504 &feature_addsubiw,
4505 &feature_jmpcall,
45064503 &feature_lpm,
4504 &feature_spm,
4505 &feature_ijmpcall,
4506 &feature_sram,
45074507 &feature_break,
4508 &feature_jmpcall,
45084509 &feature_mul,
4509 &feature_sram,
4510 &feature_ijmpcall,
45114510 &feature_movw,
4511 &feature_addsubiw,
45124512 },
45134513};
45144514
lib/std/target/bpf.zig+8-8
......@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_alu32 = Feature{
55 .name = "alu32",
66 .description = "Enable ALU32 instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_dummy = Feature{
1212 .name = "dummy",
1313 .description = "unused feature",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_dwarfris = Feature{
1919 .name = "dwarfris",
2020 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
......@@ -31,35 +31,35 @@ pub const features = &[_]*const Feature {
3131pub const cpu_generic = Cpu{
3232 .name = "generic",
3333 .llvm_name = "generic",
34 .subfeatures = &[_]*const Feature {
34 .dependencies = &[_]*const Feature {
3535 },
3636};
3737
3838pub const cpu_probe = Cpu{
3939 .name = "probe",
4040 .llvm_name = "probe",
41 .subfeatures = &[_]*const Feature {
41 .dependencies = &[_]*const Feature {
4242 },
4343};
4444
4545pub const cpu_v1 = Cpu{
4646 .name = "v1",
4747 .llvm_name = "v1",
48 .subfeatures = &[_]*const Feature {
48 .dependencies = &[_]*const Feature {
4949 },
5050};
5151
5252pub const cpu_v2 = Cpu{
5353 .name = "v2",
5454 .llvm_name = "v2",
55 .subfeatures = &[_]*const Feature {
55 .dependencies = &[_]*const Feature {
5656 },
5757};
5858
5959pub const cpu_v3 = Cpu{
6060 .name = "v3",
6161 .llvm_name = "v3",
62 .subfeatures = &[_]*const Feature {
62 .dependencies = &[_]*const Feature {
6363 },
6464};
6565
lib/std/target/hexagon.zig+17-17
......@@ -4,35 +4,35 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_duplex = Feature{
55 .name = "duplex",
66 .description = "Enable generation of duplex instruction",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_longCalls = Feature{
1212 .name = "long-calls",
1313 .description = "Use constant-extended calls",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_mem_noshuf = Feature{
1919 .name = "mem_noshuf",
2020 .description = "Supports mem_noshuf feature",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_memops = Feature{
2626 .name = "memops",
2727 .description = "Use memop instructions",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_nvj = Feature{
3333 .name = "nvj",
3434 .description = "Support for new-value jumps",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 &feature_packets,
3737 },
3838};
......@@ -40,7 +40,7 @@ pub const feature_nvj = Feature{
4040pub const feature_nvs = Feature{
4141 .name = "nvs",
4242 .description = "Support for new-value stores",
43 .subfeatures = &[_]*const Feature {
43 .dependencies = &[_]*const Feature {
4444 &feature_packets,
4545 },
4646};
......@@ -48,28 +48,28 @@ pub const feature_nvs = Feature{
4848pub const feature_noreturnStackElim = Feature{
4949 .name = "noreturn-stack-elim",
5050 .description = "Eliminate stack allocation in a noreturn function when possible",
51 .subfeatures = &[_]*const Feature {
51 .dependencies = &[_]*const Feature {
5252 },
5353};
5454
5555pub const feature_packets = Feature{
5656 .name = "packets",
5757 .description = "Support for instruction packets",
58 .subfeatures = &[_]*const Feature {
58 .dependencies = &[_]*const Feature {
5959 },
6060};
6161
6262pub const feature_reservedR19 = Feature{
6363 .name = "reserved-r19",
6464 .description = "Reserve register R19",
65 .subfeatures = &[_]*const Feature {
65 .dependencies = &[_]*const Feature {
6666 },
6767};
6868
6969pub const feature_smallData = Feature{
7070 .name = "small-data",
7171 .description = "Allow GP-relative addressing of global variables",
72 .subfeatures = &[_]*const Feature {
72 .dependencies = &[_]*const Feature {
7373 },
7474};
7575
......@@ -89,7 +89,7 @@ pub const features = &[_]*const Feature {
8989pub const cpu_generic = Cpu{
9090 .name = "generic",
9191 .llvm_name = "generic",
92 .subfeatures = &[_]*const Feature {
92 .dependencies = &[_]*const Feature {
9393 &feature_duplex,
9494 &feature_memops,
9595 &feature_packets,
......@@ -102,7 +102,7 @@ pub const cpu_generic = Cpu{
102102pub const cpu_hexagonv5 = Cpu{
103103 .name = "hexagonv5",
104104 .llvm_name = "hexagonv5",
105 .subfeatures = &[_]*const Feature {
105 .dependencies = &[_]*const Feature {
106106 &feature_duplex,
107107 &feature_memops,
108108 &feature_packets,
......@@ -115,7 +115,7 @@ pub const cpu_hexagonv5 = Cpu{
115115pub const cpu_hexagonv55 = Cpu{
116116 .name = "hexagonv55",
117117 .llvm_name = "hexagonv55",
118 .subfeatures = &[_]*const Feature {
118 .dependencies = &[_]*const Feature {
119119 &feature_duplex,
120120 &feature_memops,
121121 &feature_packets,
......@@ -128,7 +128,7 @@ pub const cpu_hexagonv55 = Cpu{
128128pub const cpu_hexagonv60 = Cpu{
129129 .name = "hexagonv60",
130130 .llvm_name = "hexagonv60",
131 .subfeatures = &[_]*const Feature {
131 .dependencies = &[_]*const Feature {
132132 &feature_duplex,
133133 &feature_memops,
134134 &feature_packets,
......@@ -141,7 +141,7 @@ pub const cpu_hexagonv60 = Cpu{
141141pub const cpu_hexagonv62 = Cpu{
142142 .name = "hexagonv62",
143143 .llvm_name = "hexagonv62",
144 .subfeatures = &[_]*const Feature {
144 .dependencies = &[_]*const Feature {
145145 &feature_duplex,
146146 &feature_memops,
147147 &feature_packets,
......@@ -154,7 +154,7 @@ pub const cpu_hexagonv62 = Cpu{
154154pub const cpu_hexagonv65 = Cpu{
155155 .name = "hexagonv65",
156156 .llvm_name = "hexagonv65",
157 .subfeatures = &[_]*const Feature {
157 .dependencies = &[_]*const Feature {
158158 &feature_duplex,
159159 &feature_mem_noshuf,
160160 &feature_memops,
......@@ -168,7 +168,7 @@ pub const cpu_hexagonv65 = Cpu{
168168pub const cpu_hexagonv66 = Cpu{
169169 .name = "hexagonv66",
170170 .llvm_name = "hexagonv66",
171 .subfeatures = &[_]*const Feature {
171 .dependencies = &[_]*const Feature {
172172 &feature_duplex,
173173 &feature_mem_noshuf,
174174 &feature_memops,
lib/std/target/mips.zig+191-191
......@@ -4,43 +4,43 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_abs2008 = Feature{
55 .name = "abs2008",
66 .description = "Disable IEEE 754-2008 abs.fmt mode",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_crc = Feature{
1212 .name = "crc",
1313 .description = "Mips R6 CRC ASE",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_cnmips = Feature{
1919 .name = "cnmips",
2020 .description = "Octeon cnMIPS Support",
21 .subfeatures = &[_]*const Feature {
22 &feature_fp64,
21 .dependencies = &[_]*const Feature {
22 &feature_mips4_32,
2323 &feature_mips4_32r2,
2424 &feature_mips1,
25 &feature_gp64,
26 &feature_mips4_32,
27 &feature_mips5_32r2,
2825 &feature_mips3_32r2,
26 &feature_mips5_32r2,
2927 &feature_mips3_32,
28 &feature_gp64,
29 &feature_fp64,
3030 },
3131};
3232
3333pub const feature_dsp = Feature{
3434 .name = "dsp",
3535 .description = "Mips DSP ASE",
36 .subfeatures = &[_]*const Feature {
36 .dependencies = &[_]*const Feature {
3737 },
3838};
3939
4040pub const feature_dspr2 = Feature{
4141 .name = "dspr2",
4242 .description = "Mips DSP-R2 ASE",
43 .subfeatures = &[_]*const Feature {
43 .dependencies = &[_]*const Feature {
4444 &feature_dsp,
4545 },
4646};
......@@ -48,7 +48,7 @@ pub const feature_dspr2 = Feature{
4848pub const feature_dspr3 = Feature{
4949 .name = "dspr3",
5050 .description = "Mips DSP-R3 ASE",
51 .subfeatures = &[_]*const Feature {
51 .dependencies = &[_]*const Feature {
5252 &feature_dsp,
5353 },
5454};
......@@ -56,84 +56,84 @@ pub const feature_dspr3 = Feature{
5656pub const feature_eva = Feature{
5757 .name = "eva",
5858 .description = "Mips EVA ASE",
59 .subfeatures = &[_]*const Feature {
59 .dependencies = &[_]*const Feature {
6060 },
6161};
6262
6363pub const feature_fp64 = Feature{
6464 .name = "fp64",
6565 .description = "Support 64-bit FP registers",
66 .subfeatures = &[_]*const Feature {
66 .dependencies = &[_]*const Feature {
6767 },
6868};
6969
7070pub const feature_fpxx = Feature{
7171 .name = "fpxx",
7272 .description = "Support for FPXX",
73 .subfeatures = &[_]*const Feature {
73 .dependencies = &[_]*const Feature {
7474 },
7575};
7676
7777pub const feature_ginv = Feature{
7878 .name = "ginv",
7979 .description = "Mips Global Invalidate ASE",
80 .subfeatures = &[_]*const Feature {
80 .dependencies = &[_]*const Feature {
8181 },
8282};
8383
8484pub const feature_gp64 = Feature{
8585 .name = "gp64",
8686 .description = "General Purpose Registers are 64-bit wide",
87 .subfeatures = &[_]*const Feature {
87 .dependencies = &[_]*const Feature {
8888 },
8989};
9090
9191pub const feature_longCalls = Feature{
9292 .name = "long-calls",
9393 .description = "Disable use of the jal instruction",
94 .subfeatures = &[_]*const Feature {
94 .dependencies = &[_]*const Feature {
9595 },
9696};
9797
9898pub const feature_msa = Feature{
9999 .name = "msa",
100100 .description = "Mips MSA ASE",
101 .subfeatures = &[_]*const Feature {
101 .dependencies = &[_]*const Feature {
102102 },
103103};
104104
105105pub const feature_mt = Feature{
106106 .name = "mt",
107107 .description = "Mips MT ASE",
108 .subfeatures = &[_]*const Feature {
108 .dependencies = &[_]*const Feature {
109109 },
110110};
111111
112112pub const feature_nomadd4 = Feature{
113113 .name = "nomadd4",
114114 .description = "Disable 4-operand madd.fmt and related instructions",
115 .subfeatures = &[_]*const Feature {
115 .dependencies = &[_]*const Feature {
116116 },
117117};
118118
119119pub const feature_micromips = Feature{
120120 .name = "micromips",
121121 .description = "microMips mode",
122 .subfeatures = &[_]*const Feature {
122 .dependencies = &[_]*const Feature {
123123 },
124124};
125125
126126pub const feature_mips1 = Feature{
127127 .name = "mips1",
128128 .description = "Mips I ISA Support [highly experimental]",
129 .subfeatures = &[_]*const Feature {
129 .dependencies = &[_]*const Feature {
130130 },
131131};
132132
133133pub const feature_mips2 = Feature{
134134 .name = "mips2",
135135 .description = "Mips II ISA Support [highly experimental]",
136 .subfeatures = &[_]*const Feature {
136 .dependencies = &[_]*const Feature {
137137 &feature_mips1,
138138 },
139139};
......@@ -141,322 +141,322 @@ pub const feature_mips2 = Feature{
141141pub const feature_mips3 = Feature{
142142 .name = "mips3",
143143 .description = "MIPS III ISA Support [highly experimental]",
144 .subfeatures = &[_]*const Feature {
145 &feature_fp64,
144 .dependencies = &[_]*const Feature {
146145 &feature_mips1,
147 &feature_gp64,
148146 &feature_mips3_32r2,
149147 &feature_mips3_32,
148 &feature_gp64,
149 &feature_fp64,
150150 },
151151};
152152
153153pub const feature_mips3_32 = Feature{
154154 .name = "mips3_32",
155155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
156 .subfeatures = &[_]*const Feature {
156 .dependencies = &[_]*const Feature {
157157 },
158158};
159159
160160pub const feature_mips3_32r2 = Feature{
161161 .name = "mips3_32r2",
162162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
163 .subfeatures = &[_]*const Feature {
163 .dependencies = &[_]*const Feature {
164164 },
165165};
166166
167167pub const feature_mips4 = Feature{
168168 .name = "mips4",
169169 .description = "MIPS IV ISA Support",
170 .subfeatures = &[_]*const Feature {
171 &feature_fp64,
170 .dependencies = &[_]*const Feature {
171 &feature_mips4_32,
172172 &feature_mips4_32r2,
173173 &feature_mips1,
174 &feature_gp64,
175 &feature_mips4_32,
176174 &feature_mips3_32r2,
177175 &feature_mips3_32,
176 &feature_gp64,
177 &feature_fp64,
178178 },
179179};
180180
181181pub const feature_mips4_32 = Feature{
182182 .name = "mips4_32",
183183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
184 .subfeatures = &[_]*const Feature {
184 .dependencies = &[_]*const Feature {
185185 },
186186};
187187
188188pub const feature_mips4_32r2 = Feature{
189189 .name = "mips4_32r2",
190190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
191 .subfeatures = &[_]*const Feature {
191 .dependencies = &[_]*const Feature {
192192 },
193193};
194194
195195pub const feature_mips5 = Feature{
196196 .name = "mips5",
197197 .description = "MIPS V ISA Support [highly experimental]",
198 .subfeatures = &[_]*const Feature {
199 &feature_fp64,
200 &feature_mips4_32r2,
201 &feature_mips1,
198 .dependencies = &[_]*const Feature {
199 &feature_mips3_32,
202200 &feature_gp64,
203 &feature_mips4_32,
204 &feature_mips5_32r2,
201 &feature_mips1,
205202 &feature_mips3_32r2,
206 &feature_mips3_32,
203 &feature_mips5_32r2,
204 &feature_mips4_32,
205 &feature_mips4_32r2,
206 &feature_fp64,
207207 },
208208};
209209
210210pub const feature_mips5_32r2 = Feature{
211211 .name = "mips5_32r2",
212212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
213 .subfeatures = &[_]*const Feature {
213 .dependencies = &[_]*const Feature {
214214 },
215215};
216216
217217pub const feature_mips16 = Feature{
218218 .name = "mips16",
219219 .description = "Mips16 mode",
220 .subfeatures = &[_]*const Feature {
220 .dependencies = &[_]*const Feature {
221221 },
222222};
223223
224224pub const feature_mips32 = Feature{
225225 .name = "mips32",
226226 .description = "Mips32 ISA Support",
227 .subfeatures = &[_]*const Feature {
227 .dependencies = &[_]*const Feature {
228228 &feature_mips1,
229 &feature_mips4_32,
230229 &feature_mips3_32,
230 &feature_mips4_32,
231231 },
232232};
233233
234234pub const feature_mips32r2 = Feature{
235235 .name = "mips32r2",
236236 .description = "Mips32r2 ISA Support",
237 .subfeatures = &[_]*const Feature {
238 &feature_mips4_32r2,
239 &feature_mips1,
237 .dependencies = &[_]*const Feature {
240238 &feature_mips4_32,
241 &feature_mips5_32r2,
239 &feature_mips1,
242240 &feature_mips3_32r2,
241 &feature_mips5_32r2,
243242 &feature_mips3_32,
243 &feature_mips4_32r2,
244244 },
245245};
246246
247247pub const feature_mips32r3 = Feature{
248248 .name = "mips32r3",
249249 .description = "Mips32r3 ISA Support",
250 .subfeatures = &[_]*const Feature {
251 &feature_mips4_32r2,
250 .dependencies = &[_]*const Feature {
251 &feature_mips3_32,
252252 &feature_mips1,
253 &feature_mips4_32,
254 &feature_mips5_32r2,
255253 &feature_mips3_32r2,
256 &feature_mips3_32,
254 &feature_mips5_32r2,
255 &feature_mips4_32,
256 &feature_mips4_32r2,
257257 },
258258};
259259
260260pub const feature_mips32r5 = Feature{
261261 .name = "mips32r5",
262262 .description = "Mips32r5 ISA Support",
263 .subfeatures = &[_]*const Feature {
264 &feature_mips4_32r2,
265 &feature_mips1,
263 .dependencies = &[_]*const Feature {
266264 &feature_mips4_32,
267 &feature_mips5_32r2,
265 &feature_mips1,
268266 &feature_mips3_32r2,
267 &feature_mips5_32r2,
269268 &feature_mips3_32,
269 &feature_mips4_32r2,
270270 },
271271};
272272
273273pub const feature_mips32r6 = Feature{
274274 .name = "mips32r6",
275275 .description = "Mips32r6 ISA Support [experimental]",
276 .subfeatures = &[_]*const Feature {
276 .dependencies = &[_]*const Feature {
277277 &feature_abs2008,
278 &feature_fp64,
279 &feature_mips4_32r2,
280278 &feature_nan2008,
279 &feature_mips3_32,
281280 &feature_mips1,
282 &feature_mips4_32,
283 &feature_mips5_32r2,
284281 &feature_mips3_32r2,
285 &feature_mips3_32,
282 &feature_mips5_32r2,
283 &feature_mips4_32,
284 &feature_mips4_32r2,
285 &feature_fp64,
286286 },
287287};
288288
289289pub const feature_mips64 = Feature{
290290 .name = "mips64",
291291 .description = "Mips64 ISA Support",
292 .subfeatures = &[_]*const Feature {
293 &feature_fp64,
292 .dependencies = &[_]*const Feature {
293 &feature_mips4_32,
294294 &feature_mips4_32r2,
295295 &feature_mips1,
296 &feature_gp64,
297 &feature_mips4_32,
298 &feature_mips5_32r2,
299296 &feature_mips3_32r2,
297 &feature_mips5_32r2,
300298 &feature_mips3_32,
299 &feature_gp64,
300 &feature_fp64,
301301 },
302302};
303303
304304pub const feature_mips64r2 = Feature{
305305 .name = "mips64r2",
306306 .description = "Mips64r2 ISA Support",
307 .subfeatures = &[_]*const Feature {
308 &feature_fp64,
309 &feature_mips4_32r2,
310 &feature_mips1,
307 .dependencies = &[_]*const Feature {
308 &feature_mips3_32,
311309 &feature_gp64,
312 &feature_mips4_32,
313 &feature_mips5_32r2,
310 &feature_mips1,
314311 &feature_mips3_32r2,
315 &feature_mips3_32,
312 &feature_mips5_32r2,
313 &feature_mips4_32,
314 &feature_mips4_32r2,
315 &feature_fp64,
316316 },
317317};
318318
319319pub const feature_mips64r3 = Feature{
320320 .name = "mips64r3",
321321 .description = "Mips64r3 ISA Support",
322 .subfeatures = &[_]*const Feature {
323 &feature_fp64,
324 &feature_mips4_32r2,
325 &feature_mips1,
326 &feature_gp64,
322 .dependencies = &[_]*const Feature {
327323 &feature_mips4_32,
328 &feature_mips5_32r2,
324 &feature_gp64,
325 &feature_mips1,
329326 &feature_mips3_32r2,
327 &feature_mips5_32r2,
330328 &feature_mips3_32,
329 &feature_mips4_32r2,
330 &feature_fp64,
331331 },
332332};
333333
334334pub const feature_mips64r5 = Feature{
335335 .name = "mips64r5",
336336 .description = "Mips64r5 ISA Support",
337 .subfeatures = &[_]*const Feature {
338 &feature_fp64,
339 &feature_mips4_32r2,
340 &feature_mips1,
337 .dependencies = &[_]*const Feature {
338 &feature_mips3_32,
341339 &feature_gp64,
342 &feature_mips4_32,
343 &feature_mips5_32r2,
340 &feature_mips1,
344341 &feature_mips3_32r2,
345 &feature_mips3_32,
342 &feature_mips5_32r2,
343 &feature_mips4_32,
344 &feature_mips4_32r2,
345 &feature_fp64,
346346 },
347347};
348348
349349pub const feature_mips64r6 = Feature{
350350 .name = "mips64r6",
351351 .description = "Mips64r6 ISA Support [experimental]",
352 .subfeatures = &[_]*const Feature {
352 .dependencies = &[_]*const Feature {
353353 &feature_abs2008,
354 &feature_fp64,
355 &feature_mips4_32r2,
356 &feature_mips1,
357 &feature_gp64,
358 &feature_mips5_32r2,
359 &feature_mips4_32,
360354 &feature_nan2008,
355 &feature_mips4_32,
356 &feature_gp64,
357 &feature_mips1,
361358 &feature_mips3_32r2,
359 &feature_mips5_32r2,
362360 &feature_mips3_32,
361 &feature_mips4_32r2,
362 &feature_fp64,
363363 },
364364};
365365
366366pub const feature_nan2008 = Feature{
367367 .name = "nan2008",
368368 .description = "IEEE 754-2008 NaN encoding",
369 .subfeatures = &[_]*const Feature {
369 .dependencies = &[_]*const Feature {
370370 },
371371};
372372
373373pub const feature_noabicalls = Feature{
374374 .name = "noabicalls",
375375 .description = "Disable SVR4-style position-independent code",
376 .subfeatures = &[_]*const Feature {
376 .dependencies = &[_]*const Feature {
377377 },
378378};
379379
380380pub const feature_nooddspreg = Feature{
381381 .name = "nooddspreg",
382382 .description = "Disable odd numbered single-precision registers",
383 .subfeatures = &[_]*const Feature {
383 .dependencies = &[_]*const Feature {
384384 },
385385};
386386
387387pub const feature_ptr64 = Feature{
388388 .name = "ptr64",
389389 .description = "Pointers are 64-bit wide",
390 .subfeatures = &[_]*const Feature {
390 .dependencies = &[_]*const Feature {
391391 },
392392};
393393
394394pub const feature_singleFloat = Feature{
395395 .name = "single-float",
396396 .description = "Only supports single precision float",
397 .subfeatures = &[_]*const Feature {
397 .dependencies = &[_]*const Feature {
398398 },
399399};
400400
401401pub const feature_softFloat = Feature{
402402 .name = "soft-float",
403403 .description = "Does not support floating point instructions",
404 .subfeatures = &[_]*const Feature {
404 .dependencies = &[_]*const Feature {
405405 },
406406};
407407
408408pub const feature_sym32 = Feature{
409409 .name = "sym32",
410410 .description = "Symbols are 32 bit on Mips64",
411 .subfeatures = &[_]*const Feature {
411 .dependencies = &[_]*const Feature {
412412 },
413413};
414414
415415pub const feature_useIndirectJumpHazard = Feature{
416416 .name = "use-indirect-jump-hazard",
417417 .description = "Use indirect jump guards to prevent certain speculation based attacks",
418 .subfeatures = &[_]*const Feature {
418 .dependencies = &[_]*const Feature {
419419 },
420420};
421421
422422pub const feature_useTccInDiv = Feature{
423423 .name = "use-tcc-in-div",
424424 .description = "Force the assembler to use trapping",
425 .subfeatures = &[_]*const Feature {
425 .dependencies = &[_]*const Feature {
426426 },
427427};
428428
429429pub const feature_vfpu = Feature{
430430 .name = "vfpu",
431431 .description = "Enable vector FPU instructions",
432 .subfeatures = &[_]*const Feature {
432 .dependencies = &[_]*const Feature {
433433 },
434434};
435435
436436pub const feature_virt = Feature{
437437 .name = "virt",
438438 .description = "Mips Virtualization ASE",
439 .subfeatures = &[_]*const Feature {
439 .dependencies = &[_]*const Feature {
440440 },
441441};
442442
443443pub const feature_xgot = Feature{
444444 .name = "xgot",
445445 .description = "Assume 32-bit GOT",
446 .subfeatures = &[_]*const Feature {
446 .dependencies = &[_]*const Feature {
447447 },
448448};
449449
450450pub const feature_p5600 = Feature{
451451 .name = "p5600",
452452 .description = "The P5600 Processor",
453 .subfeatures = &[_]*const Feature {
454 &feature_mips4_32r2,
453 .dependencies = &[_]*const Feature {
454 &feature_mips3_32,
455455 &feature_mips1,
456 &feature_mips4_32,
457 &feature_mips5_32r2,
458456 &feature_mips3_32r2,
459 &feature_mips3_32,
457 &feature_mips5_32r2,
458 &feature_mips4_32,
459 &feature_mips4_32r2,
460460 },
461461};
462462
......@@ -516,7 +516,7 @@ pub const features = &[_]*const Feature {
516516pub const cpu_mips1 = Cpu{
517517 .name = "mips1",
518518 .llvm_name = "mips1",
519 .subfeatures = &[_]*const Feature {
519 .dependencies = &[_]*const Feature {
520520 &feature_mips1,
521521 },
522522};
......@@ -524,7 +524,7 @@ pub const cpu_mips1 = Cpu{
524524pub const cpu_mips2 = Cpu{
525525 .name = "mips2",
526526 .llvm_name = "mips2",
527 .subfeatures = &[_]*const Feature {
527 .dependencies = &[_]*const Feature {
528528 &feature_mips1,
529529 &feature_mips2,
530530 },
......@@ -533,12 +533,12 @@ pub const cpu_mips2 = Cpu{
533533pub const cpu_mips3 = Cpu{
534534 .name = "mips3",
535535 .llvm_name = "mips3",
536 .subfeatures = &[_]*const Feature {
537 &feature_fp64,
536 .dependencies = &[_]*const Feature {
538537 &feature_mips1,
539 &feature_gp64,
540538 &feature_mips3_32r2,
541539 &feature_mips3_32,
540 &feature_gp64,
541 &feature_fp64,
542542 &feature_mips3,
543543 },
544544};
......@@ -546,10 +546,10 @@ pub const cpu_mips3 = Cpu{
546546pub const cpu_mips32 = Cpu{
547547 .name = "mips32",
548548 .llvm_name = "mips32",
549 .subfeatures = &[_]*const Feature {
549 .dependencies = &[_]*const Feature {
550550 &feature_mips1,
551 &feature_mips4_32,
552551 &feature_mips3_32,
552 &feature_mips4_32,
553553 &feature_mips32,
554554 },
555555};
......@@ -557,13 +557,13 @@ pub const cpu_mips32 = Cpu{
557557pub const cpu_mips32r2 = Cpu{
558558 .name = "mips32r2",
559559 .llvm_name = "mips32r2",
560 .subfeatures = &[_]*const Feature {
561 &feature_mips4_32r2,
562 &feature_mips1,
560 .dependencies = &[_]*const Feature {
563561 &feature_mips4_32,
564 &feature_mips5_32r2,
562 &feature_mips1,
565563 &feature_mips3_32r2,
564 &feature_mips5_32r2,
566565 &feature_mips3_32,
566 &feature_mips4_32r2,
567567 &feature_mips32r2,
568568 },
569569};
......@@ -571,13 +571,13 @@ pub const cpu_mips32r2 = Cpu{
571571pub const cpu_mips32r3 = Cpu{
572572 .name = "mips32r3",
573573 .llvm_name = "mips32r3",
574 .subfeatures = &[_]*const Feature {
575 &feature_mips4_32r2,
574 .dependencies = &[_]*const Feature {
575 &feature_mips3_32,
576576 &feature_mips1,
577 &feature_mips4_32,
578 &feature_mips5_32r2,
579577 &feature_mips3_32r2,
580 &feature_mips3_32,
578 &feature_mips5_32r2,
579 &feature_mips4_32,
580 &feature_mips4_32r2,
581581 &feature_mips32r3,
582582 },
583583};
......@@ -585,13 +585,13 @@ pub const cpu_mips32r3 = Cpu{
585585pub const cpu_mips32r5 = Cpu{
586586 .name = "mips32r5",
587587 .llvm_name = "mips32r5",
588 .subfeatures = &[_]*const Feature {
589 &feature_mips4_32r2,
590 &feature_mips1,
588 .dependencies = &[_]*const Feature {
591589 &feature_mips4_32,
592 &feature_mips5_32r2,
590 &feature_mips1,
593591 &feature_mips3_32r2,
592 &feature_mips5_32r2,
594593 &feature_mips3_32,
594 &feature_mips4_32r2,
595595 &feature_mips32r5,
596596 },
597597};
......@@ -599,16 +599,16 @@ pub const cpu_mips32r5 = Cpu{
599599pub const cpu_mips32r6 = Cpu{
600600 .name = "mips32r6",
601601 .llvm_name = "mips32r6",
602 .subfeatures = &[_]*const Feature {
602 .dependencies = &[_]*const Feature {
603603 &feature_abs2008,
604 &feature_fp64,
605 &feature_mips4_32r2,
606604 &feature_nan2008,
605 &feature_mips3_32,
607606 &feature_mips1,
608 &feature_mips4_32,
609 &feature_mips5_32r2,
610607 &feature_mips3_32r2,
611 &feature_mips3_32,
608 &feature_mips5_32r2,
609 &feature_mips4_32,
610 &feature_mips4_32r2,
611 &feature_fp64,
612612 &feature_mips32r6,
613613 },
614614};
......@@ -616,14 +616,14 @@ pub const cpu_mips32r6 = Cpu{
616616pub const cpu_mips4 = Cpu{
617617 .name = "mips4",
618618 .llvm_name = "mips4",
619 .subfeatures = &[_]*const Feature {
620 &feature_fp64,
619 .dependencies = &[_]*const Feature {
620 &feature_mips4_32,
621621 &feature_mips4_32r2,
622622 &feature_mips1,
623 &feature_gp64,
624 &feature_mips4_32,
625623 &feature_mips3_32r2,
626624 &feature_mips3_32,
625 &feature_gp64,
626 &feature_fp64,
627627 &feature_mips4,
628628 },
629629};
......@@ -631,15 +631,15 @@ pub const cpu_mips4 = Cpu{
631631pub const cpu_mips5 = Cpu{
632632 .name = "mips5",
633633 .llvm_name = "mips5",
634 .subfeatures = &[_]*const Feature {
635 &feature_fp64,
636 &feature_mips4_32r2,
637 &feature_mips1,
634 .dependencies = &[_]*const Feature {
635 &feature_mips3_32,
638636 &feature_gp64,
639 &feature_mips4_32,
640 &feature_mips5_32r2,
637 &feature_mips1,
641638 &feature_mips3_32r2,
642 &feature_mips3_32,
639 &feature_mips5_32r2,
640 &feature_mips4_32,
641 &feature_mips4_32r2,
642 &feature_fp64,
643643 &feature_mips5,
644644 },
645645};
......@@ -647,15 +647,15 @@ pub const cpu_mips5 = Cpu{
647647pub const cpu_mips64 = Cpu{
648648 .name = "mips64",
649649 .llvm_name = "mips64",
650 .subfeatures = &[_]*const Feature {
651 &feature_fp64,
650 .dependencies = &[_]*const Feature {
651 &feature_mips4_32,
652652 &feature_mips4_32r2,
653653 &feature_mips1,
654 &feature_gp64,
655 &feature_mips4_32,
656 &feature_mips5_32r2,
657654 &feature_mips3_32r2,
655 &feature_mips5_32r2,
658656 &feature_mips3_32,
657 &feature_gp64,
658 &feature_fp64,
659659 &feature_mips64,
660660 },
661661};
......@@ -663,15 +663,15 @@ pub const cpu_mips64 = Cpu{
663663pub const cpu_mips64r2 = Cpu{
664664 .name = "mips64r2",
665665 .llvm_name = "mips64r2",
666 .subfeatures = &[_]*const Feature {
667 &feature_fp64,
668 &feature_mips4_32r2,
669 &feature_mips1,
666 .dependencies = &[_]*const Feature {
667 &feature_mips3_32,
670668 &feature_gp64,
671 &feature_mips4_32,
672 &feature_mips5_32r2,
669 &feature_mips1,
673670 &feature_mips3_32r2,
674 &feature_mips3_32,
671 &feature_mips5_32r2,
672 &feature_mips4_32,
673 &feature_mips4_32r2,
674 &feature_fp64,
675675 &feature_mips64r2,
676676 },
677677};
......@@ -679,15 +679,15 @@ pub const cpu_mips64r2 = Cpu{
679679pub const cpu_mips64r3 = Cpu{
680680 .name = "mips64r3",
681681 .llvm_name = "mips64r3",
682 .subfeatures = &[_]*const Feature {
683 &feature_fp64,
684 &feature_mips4_32r2,
685 &feature_mips1,
686 &feature_gp64,
682 .dependencies = &[_]*const Feature {
687683 &feature_mips4_32,
688 &feature_mips5_32r2,
684 &feature_gp64,
685 &feature_mips1,
689686 &feature_mips3_32r2,
687 &feature_mips5_32r2,
690688 &feature_mips3_32,
689 &feature_mips4_32r2,
690 &feature_fp64,
691691 &feature_mips64r3,
692692 },
693693};
......@@ -695,15 +695,15 @@ pub const cpu_mips64r3 = Cpu{
695695pub const cpu_mips64r5 = Cpu{
696696 .name = "mips64r5",
697697 .llvm_name = "mips64r5",
698 .subfeatures = &[_]*const Feature {
699 &feature_fp64,
700 &feature_mips4_32r2,
701 &feature_mips1,
698 .dependencies = &[_]*const Feature {
699 &feature_mips3_32,
702700 &feature_gp64,
703 &feature_mips4_32,
704 &feature_mips5_32r2,
701 &feature_mips1,
705702 &feature_mips3_32r2,
706 &feature_mips3_32,
703 &feature_mips5_32r2,
704 &feature_mips4_32,
705 &feature_mips4_32r2,
706 &feature_fp64,
707707 &feature_mips64r5,
708708 },
709709};
......@@ -711,17 +711,17 @@ pub const cpu_mips64r5 = Cpu{
711711pub const cpu_mips64r6 = Cpu{
712712 .name = "mips64r6",
713713 .llvm_name = "mips64r6",
714 .subfeatures = &[_]*const Feature {
714 .dependencies = &[_]*const Feature {
715715 &feature_abs2008,
716 &feature_fp64,
717 &feature_mips4_32r2,
718 &feature_mips1,
719 &feature_gp64,
720 &feature_mips5_32r2,
721 &feature_mips4_32,
722716 &feature_nan2008,
717 &feature_mips4_32,
718 &feature_gp64,
719 &feature_mips1,
723720 &feature_mips3_32r2,
721 &feature_mips5_32r2,
724722 &feature_mips3_32,
723 &feature_mips4_32r2,
724 &feature_fp64,
725725 &feature_mips64r6,
726726 },
727727};
......@@ -729,15 +729,15 @@ pub const cpu_mips64r6 = Cpu{
729729pub const cpu_octeon = Cpu{
730730 .name = "octeon",
731731 .llvm_name = "octeon",
732 .subfeatures = &[_]*const Feature {
733 &feature_fp64,
732 .dependencies = &[_]*const Feature {
733 &feature_mips4_32,
734734 &feature_mips4_32r2,
735735 &feature_mips1,
736 &feature_gp64,
737 &feature_mips4_32,
738 &feature_mips5_32r2,
739736 &feature_mips3_32r2,
737 &feature_mips5_32r2,
740738 &feature_mips3_32,
739 &feature_gp64,
740 &feature_fp64,
741741 &feature_cnmips,
742742 &feature_mips64r2,
743743 },
......@@ -746,13 +746,13 @@ pub const cpu_octeon = Cpu{
746746pub const cpu_p5600 = Cpu{
747747 .name = "p5600",
748748 .llvm_name = "p5600",
749 .subfeatures = &[_]*const Feature {
750 &feature_mips4_32r2,
749 .dependencies = &[_]*const Feature {
750 &feature_mips3_32,
751751 &feature_mips1,
752 &feature_mips4_32,
753 &feature_mips5_32r2,
754752 &feature_mips3_32r2,
755 &feature_mips3_32,
753 &feature_mips5_32r2,
754 &feature_mips4_32,
755 &feature_mips4_32r2,
756756 &feature_p5600,
757757 },
758758};
lib/std/target/msp430.zig+7-7
......@@ -4,28 +4,28 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_hwmult16 = Feature{
55 .name = "hwmult16",
66 .description = "Enable 16-bit hardware multiplier",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_hwmult32 = Feature{
1212 .name = "hwmult32",
1313 .description = "Enable 32-bit hardware multiplier",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_hwmultf5 = Feature{
1919 .name = "hwmultf5",
2020 .description = "Enable F5 series hardware multiplier",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_ext = Feature{
2626 .name = "ext",
2727 .description = "Enable MSP430-X extensions",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
......@@ -39,21 +39,21 @@ pub const features = &[_]*const Feature {
3939pub const cpu_generic = Cpu{
4040 .name = "generic",
4141 .llvm_name = "generic",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const cpu_msp430 = Cpu{
4747 .name = "msp430",
4848 .llvm_name = "msp430",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const cpu_msp430x = Cpu{
5454 .name = "msp430x",
5555 .llvm_name = "msp430x",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 &feature_ext,
5858 },
5959};
lib/std/target/nvptx.zig+40-40
......@@ -4,175 +4,175 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_ptx32 = Feature{
55 .name = "ptx32",
66 .description = "Use PTX version 3.2",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_ptx40 = Feature{
1212 .name = "ptx40",
1313 .description = "Use PTX version 4.0",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_ptx41 = Feature{
1919 .name = "ptx41",
2020 .description = "Use PTX version 4.1",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_ptx42 = Feature{
2626 .name = "ptx42",
2727 .description = "Use PTX version 4.2",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_ptx43 = Feature{
3333 .name = "ptx43",
3434 .description = "Use PTX version 4.3",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_ptx50 = Feature{
4040 .name = "ptx50",
4141 .description = "Use PTX version 5.0",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_ptx60 = Feature{
4747 .name = "ptx60",
4848 .description = "Use PTX version 6.0",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_ptx61 = Feature{
5454 .name = "ptx61",
5555 .description = "Use PTX version 6.1",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_ptx63 = Feature{
6161 .name = "ptx63",
6262 .description = "Use PTX version 6.3",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_ptx64 = Feature{
6868 .name = "ptx64",
6969 .description = "Use PTX version 6.4",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 },
7272};
7373
7474pub const feature_sm_20 = Feature{
7575 .name = "sm_20",
7676 .description = "Target SM 2.0",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 },
7979};
8080
8181pub const feature_sm_21 = Feature{
8282 .name = "sm_21",
8383 .description = "Target SM 2.1",
84 .subfeatures = &[_]*const Feature {
84 .dependencies = &[_]*const Feature {
8585 },
8686};
8787
8888pub const feature_sm_30 = Feature{
8989 .name = "sm_30",
9090 .description = "Target SM 3.0",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 },
9393};
9494
9595pub const feature_sm_32 = Feature{
9696 .name = "sm_32",
9797 .description = "Target SM 3.2",
98 .subfeatures = &[_]*const Feature {
98 .dependencies = &[_]*const Feature {
9999 },
100100};
101101
102102pub const feature_sm_35 = Feature{
103103 .name = "sm_35",
104104 .description = "Target SM 3.5",
105 .subfeatures = &[_]*const Feature {
105 .dependencies = &[_]*const Feature {
106106 },
107107};
108108
109109pub const feature_sm_37 = Feature{
110110 .name = "sm_37",
111111 .description = "Target SM 3.7",
112 .subfeatures = &[_]*const Feature {
112 .dependencies = &[_]*const Feature {
113113 },
114114};
115115
116116pub const feature_sm_50 = Feature{
117117 .name = "sm_50",
118118 .description = "Target SM 5.0",
119 .subfeatures = &[_]*const Feature {
119 .dependencies = &[_]*const Feature {
120120 },
121121};
122122
123123pub const feature_sm_52 = Feature{
124124 .name = "sm_52",
125125 .description = "Target SM 5.2",
126 .subfeatures = &[_]*const Feature {
126 .dependencies = &[_]*const Feature {
127127 },
128128};
129129
130130pub const feature_sm_53 = Feature{
131131 .name = "sm_53",
132132 .description = "Target SM 5.3",
133 .subfeatures = &[_]*const Feature {
133 .dependencies = &[_]*const Feature {
134134 },
135135};
136136
137137pub const feature_sm_60 = Feature{
138138 .name = "sm_60",
139139 .description = "Target SM 6.0",
140 .subfeatures = &[_]*const Feature {
140 .dependencies = &[_]*const Feature {
141141 },
142142};
143143
144144pub const feature_sm_61 = Feature{
145145 .name = "sm_61",
146146 .description = "Target SM 6.1",
147 .subfeatures = &[_]*const Feature {
147 .dependencies = &[_]*const Feature {
148148 },
149149};
150150
151151pub const feature_sm_62 = Feature{
152152 .name = "sm_62",
153153 .description = "Target SM 6.2",
154 .subfeatures = &[_]*const Feature {
154 .dependencies = &[_]*const Feature {
155155 },
156156};
157157
158158pub const feature_sm_70 = Feature{
159159 .name = "sm_70",
160160 .description = "Target SM 7.0",
161 .subfeatures = &[_]*const Feature {
161 .dependencies = &[_]*const Feature {
162162 },
163163};
164164
165165pub const feature_sm_72 = Feature{
166166 .name = "sm_72",
167167 .description = "Target SM 7.2",
168 .subfeatures = &[_]*const Feature {
168 .dependencies = &[_]*const Feature {
169169 },
170170};
171171
172172pub const feature_sm_75 = Feature{
173173 .name = "sm_75",
174174 .description = "Target SM 7.5",
175 .subfeatures = &[_]*const Feature {
175 .dependencies = &[_]*const Feature {
176176 },
177177};
178178
......@@ -207,7 +207,7 @@ pub const features = &[_]*const Feature {
207207pub const cpu_sm_20 = Cpu{
208208 .name = "sm_20",
209209 .llvm_name = "sm_20",
210 .subfeatures = &[_]*const Feature {
210 .dependencies = &[_]*const Feature {
211211 &feature_sm_20,
212212 },
213213};
......@@ -215,7 +215,7 @@ pub const cpu_sm_20 = Cpu{
215215pub const cpu_sm_21 = Cpu{
216216 .name = "sm_21",
217217 .llvm_name = "sm_21",
218 .subfeatures = &[_]*const Feature {
218 .dependencies = &[_]*const Feature {
219219 &feature_sm_21,
220220 },
221221};
......@@ -223,7 +223,7 @@ pub const cpu_sm_21 = Cpu{
223223pub const cpu_sm_30 = Cpu{
224224 .name = "sm_30",
225225 .llvm_name = "sm_30",
226 .subfeatures = &[_]*const Feature {
226 .dependencies = &[_]*const Feature {
227227 &feature_sm_30,
228228 },
229229};
......@@ -231,7 +231,7 @@ pub const cpu_sm_30 = Cpu{
231231pub const cpu_sm_32 = Cpu{
232232 .name = "sm_32",
233233 .llvm_name = "sm_32",
234 .subfeatures = &[_]*const Feature {
234 .dependencies = &[_]*const Feature {
235235 &feature_ptx40,
236236 &feature_sm_32,
237237 },
......@@ -240,7 +240,7 @@ pub const cpu_sm_32 = Cpu{
240240pub const cpu_sm_35 = Cpu{
241241 .name = "sm_35",
242242 .llvm_name = "sm_35",
243 .subfeatures = &[_]*const Feature {
243 .dependencies = &[_]*const Feature {
244244 &feature_sm_35,
245245 },
246246};
......@@ -248,7 +248,7 @@ pub const cpu_sm_35 = Cpu{
248248pub const cpu_sm_37 = Cpu{
249249 .name = "sm_37",
250250 .llvm_name = "sm_37",
251 .subfeatures = &[_]*const Feature {
251 .dependencies = &[_]*const Feature {
252252 &feature_ptx41,
253253 &feature_sm_37,
254254 },
......@@ -257,7 +257,7 @@ pub const cpu_sm_37 = Cpu{
257257pub const cpu_sm_50 = Cpu{
258258 .name = "sm_50",
259259 .llvm_name = "sm_50",
260 .subfeatures = &[_]*const Feature {
260 .dependencies = &[_]*const Feature {
261261 &feature_ptx40,
262262 &feature_sm_50,
263263 },
......@@ -266,7 +266,7 @@ pub const cpu_sm_50 = Cpu{
266266pub const cpu_sm_52 = Cpu{
267267 .name = "sm_52",
268268 .llvm_name = "sm_52",
269 .subfeatures = &[_]*const Feature {
269 .dependencies = &[_]*const Feature {
270270 &feature_ptx41,
271271 &feature_sm_52,
272272 },
......@@ -275,7 +275,7 @@ pub const cpu_sm_52 = Cpu{
275275pub const cpu_sm_53 = Cpu{
276276 .name = "sm_53",
277277 .llvm_name = "sm_53",
278 .subfeatures = &[_]*const Feature {
278 .dependencies = &[_]*const Feature {
279279 &feature_ptx42,
280280 &feature_sm_53,
281281 },
......@@ -284,7 +284,7 @@ pub const cpu_sm_53 = Cpu{
284284pub const cpu_sm_60 = Cpu{
285285 .name = "sm_60",
286286 .llvm_name = "sm_60",
287 .subfeatures = &[_]*const Feature {
287 .dependencies = &[_]*const Feature {
288288 &feature_ptx50,
289289 &feature_sm_60,
290290 },
......@@ -293,7 +293,7 @@ pub const cpu_sm_60 = Cpu{
293293pub const cpu_sm_61 = Cpu{
294294 .name = "sm_61",
295295 .llvm_name = "sm_61",
296 .subfeatures = &[_]*const Feature {
296 .dependencies = &[_]*const Feature {
297297 &feature_ptx50,
298298 &feature_sm_61,
299299 },
......@@ -302,7 +302,7 @@ pub const cpu_sm_61 = Cpu{
302302pub const cpu_sm_62 = Cpu{
303303 .name = "sm_62",
304304 .llvm_name = "sm_62",
305 .subfeatures = &[_]*const Feature {
305 .dependencies = &[_]*const Feature {
306306 &feature_ptx50,
307307 &feature_sm_62,
308308 },
......@@ -311,7 +311,7 @@ pub const cpu_sm_62 = Cpu{
311311pub const cpu_sm_70 = Cpu{
312312 .name = "sm_70",
313313 .llvm_name = "sm_70",
314 .subfeatures = &[_]*const Feature {
314 .dependencies = &[_]*const Feature {
315315 &feature_ptx60,
316316 &feature_sm_70,
317317 },
......@@ -320,7 +320,7 @@ pub const cpu_sm_70 = Cpu{
320320pub const cpu_sm_72 = Cpu{
321321 .name = "sm_72",
322322 .llvm_name = "sm_72",
323 .subfeatures = &[_]*const Feature {
323 .dependencies = &[_]*const Feature {
324324 &feature_ptx61,
325325 &feature_sm_72,
326326 },
......@@ -329,7 +329,7 @@ pub const cpu_sm_72 = Cpu{
329329pub const cpu_sm_75 = Cpu{
330330 .name = "sm_75",
331331 .llvm_name = "sm_75",
332 .subfeatures = &[_]*const Feature {
332 .dependencies = &[_]*const Feature {
333333 &feature_ptx63,
334334 &feature_sm_75,
335335 },
lib/std/target/powerpc.zig+88-88
......@@ -4,21 +4,21 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_bit64 = Feature{
55 .name = "64bit",
66 .description = "Enable 64-bit instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_bitregs64 = Feature{
1212 .name = "64bitregs",
1313 .description = "Enable 64-bit registers usage for ppc32 [beta]",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_altivec = Feature{
1919 .name = "altivec",
2020 .description = "Enable Altivec instructions",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 &feature_hardFloat,
2323 },
2424};
......@@ -26,14 +26,14 @@ pub const feature_altivec = Feature{
2626pub const feature_bpermd = Feature{
2727 .name = "bpermd",
2828 .description = "Enable the bpermd instruction",
29 .subfeatures = &[_]*const Feature {
29 .dependencies = &[_]*const Feature {
3030 },
3131};
3232
3333pub const feature_booke = Feature{
3434 .name = "booke",
3535 .description = "Enable Book E instructions",
36 .subfeatures = &[_]*const Feature {
36 .dependencies = &[_]*const Feature {
3737 &feature_icbt,
3838 },
3939};
......@@ -41,21 +41,21 @@ pub const feature_booke = Feature{
4141pub const feature_cmpb = Feature{
4242 .name = "cmpb",
4343 .description = "Enable the cmpb instruction",
44 .subfeatures = &[_]*const Feature {
44 .dependencies = &[_]*const Feature {
4545 },
4646};
4747
4848pub const feature_crbits = Feature{
4949 .name = "crbits",
5050 .description = "Use condition-register bits individually",
51 .subfeatures = &[_]*const Feature {
51 .dependencies = &[_]*const Feature {
5252 },
5353};
5454
5555pub const feature_directMove = Feature{
5656 .name = "direct-move",
5757 .description = "Enable Power8 direct move instructions",
58 .subfeatures = &[_]*const Feature {
58 .dependencies = &[_]*const Feature {
5959 &feature_hardFloat,
6060 },
6161};
......@@ -63,21 +63,21 @@ pub const feature_directMove = Feature{
6363pub const feature_e500 = Feature{
6464 .name = "e500",
6565 .description = "Enable E500/E500mc instructions",
66 .subfeatures = &[_]*const Feature {
66 .dependencies = &[_]*const Feature {
6767 },
6868};
6969
7070pub const feature_extdiv = Feature{
7171 .name = "extdiv",
7272 .description = "Enable extended divide instructions",
73 .subfeatures = &[_]*const Feature {
73 .dependencies = &[_]*const Feature {
7474 },
7575};
7676
7777pub const feature_fcpsgn = Feature{
7878 .name = "fcpsgn",
7979 .description = "Enable the fcpsgn instruction",
80 .subfeatures = &[_]*const Feature {
80 .dependencies = &[_]*const Feature {
8181 &feature_hardFloat,
8282 },
8383};
......@@ -85,7 +85,7 @@ pub const feature_fcpsgn = Feature{
8585pub const feature_fpcvt = Feature{
8686 .name = "fpcvt",
8787 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
88 .subfeatures = &[_]*const Feature {
88 .dependencies = &[_]*const Feature {
8989 &feature_hardFloat,
9090 },
9191};
......@@ -93,7 +93,7 @@ pub const feature_fpcvt = Feature{
9393pub const feature_fprnd = Feature{
9494 .name = "fprnd",
9595 .description = "Enable the fri[mnpz] instructions",
96 .subfeatures = &[_]*const Feature {
96 .dependencies = &[_]*const Feature {
9797 &feature_hardFloat,
9898 },
9999};
......@@ -101,7 +101,7 @@ pub const feature_fprnd = Feature{
101101pub const feature_fpu = Feature{
102102 .name = "fpu",
103103 .description = "Enable classic FPU instructions",
104 .subfeatures = &[_]*const Feature {
104 .dependencies = &[_]*const Feature {
105105 &feature_hardFloat,
106106 },
107107};
......@@ -109,7 +109,7 @@ pub const feature_fpu = Feature{
109109pub const feature_fre = Feature{
110110 .name = "fre",
111111 .description = "Enable the fre instruction",
112 .subfeatures = &[_]*const Feature {
112 .dependencies = &[_]*const Feature {
113113 &feature_hardFloat,
114114 },
115115};
......@@ -117,7 +117,7 @@ pub const feature_fre = Feature{
117117pub const feature_fres = Feature{
118118 .name = "fres",
119119 .description = "Enable the fres instruction",
120 .subfeatures = &[_]*const Feature {
120 .dependencies = &[_]*const Feature {
121121 &feature_hardFloat,
122122 },
123123};
......@@ -125,7 +125,7 @@ pub const feature_fres = Feature{
125125pub const feature_frsqrte = Feature{
126126 .name = "frsqrte",
127127 .description = "Enable the frsqrte instruction",
128 .subfeatures = &[_]*const Feature {
128 .dependencies = &[_]*const Feature {
129129 &feature_hardFloat,
130130 },
131131};
......@@ -133,7 +133,7 @@ pub const feature_frsqrte = Feature{
133133pub const feature_frsqrtes = Feature{
134134 .name = "frsqrtes",
135135 .description = "Enable the frsqrtes instruction",
136 .subfeatures = &[_]*const Feature {
136 .dependencies = &[_]*const Feature {
137137 &feature_hardFloat,
138138 },
139139};
......@@ -141,7 +141,7 @@ pub const feature_frsqrtes = Feature{
141141pub const feature_fsqrt = Feature{
142142 .name = "fsqrt",
143143 .description = "Enable the fsqrt instruction",
144 .subfeatures = &[_]*const Feature {
144 .dependencies = &[_]*const Feature {
145145 &feature_hardFloat,
146146 },
147147};
......@@ -149,7 +149,7 @@ pub const feature_fsqrt = Feature{
149149pub const feature_float128 = Feature{
150150 .name = "float128",
151151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
152 .subfeatures = &[_]*const Feature {
152 .dependencies = &[_]*const Feature {
153153 &feature_hardFloat,
154154 },
155155};
......@@ -157,56 +157,56 @@ pub const feature_float128 = Feature{
157157pub const feature_htm = Feature{
158158 .name = "htm",
159159 .description = "Enable Hardware Transactional Memory instructions",
160 .subfeatures = &[_]*const Feature {
160 .dependencies = &[_]*const Feature {
161161 },
162162};
163163
164164pub const feature_hardFloat = Feature{
165165 .name = "hard-float",
166166 .description = "Enable floating-point instructions",
167 .subfeatures = &[_]*const Feature {
167 .dependencies = &[_]*const Feature {
168168 },
169169};
170170
171171pub const feature_icbt = Feature{
172172 .name = "icbt",
173173 .description = "Enable icbt instruction",
174 .subfeatures = &[_]*const Feature {
174 .dependencies = &[_]*const Feature {
175175 },
176176};
177177
178178pub const feature_isaV30Instructions = Feature{
179179 .name = "isa-v30-instructions",
180180 .description = "Enable instructions added in ISA 3.0.",
181 .subfeatures = &[_]*const Feature {
181 .dependencies = &[_]*const Feature {
182182 },
183183};
184184
185185pub const feature_isel = Feature{
186186 .name = "isel",
187187 .description = "Enable the isel instruction",
188 .subfeatures = &[_]*const Feature {
188 .dependencies = &[_]*const Feature {
189189 },
190190};
191191
192192pub const feature_invariantFunctionDescriptors = Feature{
193193 .name = "invariant-function-descriptors",
194194 .description = "Assume function descriptors are invariant",
195 .subfeatures = &[_]*const Feature {
195 .dependencies = &[_]*const Feature {
196196 },
197197};
198198
199199pub const feature_ldbrx = Feature{
200200 .name = "ldbrx",
201201 .description = "Enable the ldbrx instruction",
202 .subfeatures = &[_]*const Feature {
202 .dependencies = &[_]*const Feature {
203203 },
204204};
205205
206206pub const feature_lfiwax = Feature{
207207 .name = "lfiwax",
208208 .description = "Enable the lfiwax instruction",
209 .subfeatures = &[_]*const Feature {
209 .dependencies = &[_]*const Feature {
210210 &feature_hardFloat,
211211 },
212212};
......@@ -214,21 +214,21 @@ pub const feature_lfiwax = Feature{
214214pub const feature_longcall = Feature{
215215 .name = "longcall",
216216 .description = "Always use indirect calls",
217 .subfeatures = &[_]*const Feature {
217 .dependencies = &[_]*const Feature {
218218 },
219219};
220220
221221pub const feature_mfocrf = Feature{
222222 .name = "mfocrf",
223223 .description = "Enable the MFOCRF instruction",
224 .subfeatures = &[_]*const Feature {
224 .dependencies = &[_]*const Feature {
225225 },
226226};
227227
228228pub const feature_msync = Feature{
229229 .name = "msync",
230230 .description = "Has only the msync instruction instead of sync",
231 .subfeatures = &[_]*const Feature {
231 .dependencies = &[_]*const Feature {
232232 &feature_icbt,
233233 },
234234};
......@@ -236,7 +236,7 @@ pub const feature_msync = Feature{
236236pub const feature_power8Altivec = Feature{
237237 .name = "power8-altivec",
238238 .description = "Enable POWER8 Altivec instructions",
239 .subfeatures = &[_]*const Feature {
239 .dependencies = &[_]*const Feature {
240240 &feature_hardFloat,
241241 },
242242};
......@@ -244,7 +244,7 @@ pub const feature_power8Altivec = Feature{
244244pub const feature_crypto = Feature{
245245 .name = "crypto",
246246 .description = "Enable POWER8 Crypto instructions",
247 .subfeatures = &[_]*const Feature {
247 .dependencies = &[_]*const Feature {
248248 &feature_hardFloat,
249249 },
250250};
......@@ -252,7 +252,7 @@ pub const feature_crypto = Feature{
252252pub const feature_power8Vector = Feature{
253253 .name = "power8-vector",
254254 .description = "Enable POWER8 vector instructions",
255 .subfeatures = &[_]*const Feature {
255 .dependencies = &[_]*const Feature {
256256 &feature_hardFloat,
257257 },
258258};
......@@ -260,7 +260,7 @@ pub const feature_power8Vector = Feature{
260260pub const feature_power9Altivec = Feature{
261261 .name = "power9-altivec",
262262 .description = "Enable POWER9 Altivec instructions",
263 .subfeatures = &[_]*const Feature {
263 .dependencies = &[_]*const Feature {
264264 &feature_isaV30Instructions,
265265 &feature_hardFloat,
266266 },
......@@ -269,7 +269,7 @@ pub const feature_power9Altivec = Feature{
269269pub const feature_power9Vector = Feature{
270270 .name = "power9-vector",
271271 .description = "Enable POWER9 vector instructions",
272 .subfeatures = &[_]*const Feature {
272 .dependencies = &[_]*const Feature {
273273 &feature_isaV30Instructions,
274274 &feature_hardFloat,
275275 },
......@@ -278,49 +278,49 @@ pub const feature_power9Vector = Feature{
278278pub const feature_popcntd = Feature{
279279 .name = "popcntd",
280280 .description = "Enable the popcnt[dw] instructions",
281 .subfeatures = &[_]*const Feature {
281 .dependencies = &[_]*const Feature {
282282 },
283283};
284284
285285pub const feature_ppc4xx = Feature{
286286 .name = "ppc4xx",
287287 .description = "Enable PPC 4xx instructions",
288 .subfeatures = &[_]*const Feature {
288 .dependencies = &[_]*const Feature {
289289 },
290290};
291291
292292pub const feature_ppc6xx = Feature{
293293 .name = "ppc6xx",
294294 .description = "Enable PPC 6xx instructions",
295 .subfeatures = &[_]*const Feature {
295 .dependencies = &[_]*const Feature {
296296 },
297297};
298298
299299pub const feature_ppcPostraSched = Feature{
300300 .name = "ppc-postra-sched",
301301 .description = "Use PowerPC post-RA scheduling strategy",
302 .subfeatures = &[_]*const Feature {
302 .dependencies = &[_]*const Feature {
303303 },
304304};
305305
306306pub const feature_ppcPreraSched = Feature{
307307 .name = "ppc-prera-sched",
308308 .description = "Use PowerPC pre-RA scheduling strategy",
309 .subfeatures = &[_]*const Feature {
309 .dependencies = &[_]*const Feature {
310310 },
311311};
312312
313313pub const feature_partwordAtomics = Feature{
314314 .name = "partword-atomics",
315315 .description = "Enable l[bh]arx and st[bh]cx.",
316 .subfeatures = &[_]*const Feature {
316 .dependencies = &[_]*const Feature {
317317 },
318318};
319319
320320pub const feature_qpx = Feature{
321321 .name = "qpx",
322322 .description = "Enable QPX instructions",
323 .subfeatures = &[_]*const Feature {
323 .dependencies = &[_]*const Feature {
324324 &feature_hardFloat,
325325 },
326326};
......@@ -328,14 +328,14 @@ pub const feature_qpx = Feature{
328328pub const feature_recipprec = Feature{
329329 .name = "recipprec",
330330 .description = "Assume higher precision reciprocal estimates",
331 .subfeatures = &[_]*const Feature {
331 .dependencies = &[_]*const Feature {
332332 },
333333};
334334
335335pub const feature_spe = Feature{
336336 .name = "spe",
337337 .description = "Enable SPE instructions",
338 .subfeatures = &[_]*const Feature {
338 .dependencies = &[_]*const Feature {
339339 &feature_hardFloat,
340340 },
341341};
......@@ -343,7 +343,7 @@ pub const feature_spe = Feature{
343343pub const feature_stfiwx = Feature{
344344 .name = "stfiwx",
345345 .description = "Enable the stfiwx instruction",
346 .subfeatures = &[_]*const Feature {
346 .dependencies = &[_]*const Feature {
347347 &feature_hardFloat,
348348 },
349349};
......@@ -351,28 +351,28 @@ pub const feature_stfiwx = Feature{
351351pub const feature_securePlt = Feature{
352352 .name = "secure-plt",
353353 .description = "Enable secure plt mode",
354 .subfeatures = &[_]*const Feature {
354 .dependencies = &[_]*const Feature {
355355 },
356356};
357357
358358pub const feature_slowPopcntd = Feature{
359359 .name = "slow-popcntd",
360360 .description = "Has slow popcnt[dw] instructions",
361 .subfeatures = &[_]*const Feature {
361 .dependencies = &[_]*const Feature {
362362 },
363363};
364364
365365pub const feature_twoConstNr = Feature{
366366 .name = "two-const-nr",
367367 .description = "Requires two constant Newton-Raphson computation",
368 .subfeatures = &[_]*const Feature {
368 .dependencies = &[_]*const Feature {
369369 },
370370};
371371
372372pub const feature_vsx = Feature{
373373 .name = "vsx",
374374 .description = "Enable VSX instructions",
375 .subfeatures = &[_]*const Feature {
375 .dependencies = &[_]*const Feature {
376376 &feature_hardFloat,
377377 },
378378};
......@@ -380,7 +380,7 @@ pub const feature_vsx = Feature{
380380pub const feature_vectorsUseTwoUnits = Feature{
381381 .name = "vectors-use-two-units",
382382 .description = "Vectors use two units",
383 .subfeatures = &[_]*const Feature {
383 .dependencies = &[_]*const Feature {
384384 },
385385};
386386
......@@ -441,7 +441,7 @@ pub const features = &[_]*const Feature {
441441pub const cpu_440 = Cpu{
442442 .name = "440",
443443 .llvm_name = "440",
444 .subfeatures = &[_]*const Feature {
444 .dependencies = &[_]*const Feature {
445445 &feature_icbt,
446446 &feature_booke,
447447 &feature_hardFloat,
......@@ -455,7 +455,7 @@ pub const cpu_440 = Cpu{
455455pub const cpu_450 = Cpu{
456456 .name = "450",
457457 .llvm_name = "450",
458 .subfeatures = &[_]*const Feature {
458 .dependencies = &[_]*const Feature {
459459 &feature_icbt,
460460 &feature_booke,
461461 &feature_hardFloat,
......@@ -469,7 +469,7 @@ pub const cpu_450 = Cpu{
469469pub const cpu_601 = Cpu{
470470 .name = "601",
471471 .llvm_name = "601",
472 .subfeatures = &[_]*const Feature {
472 .dependencies = &[_]*const Feature {
473473 &feature_hardFloat,
474474 &feature_fpu,
475475 },
......@@ -478,7 +478,7 @@ pub const cpu_601 = Cpu{
478478pub const cpu_602 = Cpu{
479479 .name = "602",
480480 .llvm_name = "602",
481 .subfeatures = &[_]*const Feature {
481 .dependencies = &[_]*const Feature {
482482 &feature_hardFloat,
483483 &feature_fpu,
484484 },
......@@ -487,7 +487,7 @@ pub const cpu_602 = Cpu{
487487pub const cpu_603 = Cpu{
488488 .name = "603",
489489 .llvm_name = "603",
490 .subfeatures = &[_]*const Feature {
490 .dependencies = &[_]*const Feature {
491491 &feature_hardFloat,
492492 &feature_fres,
493493 &feature_frsqrte,
......@@ -497,7 +497,7 @@ pub const cpu_603 = Cpu{
497497pub const cpu_e603 = Cpu{
498498 .name = "603e",
499499 .llvm_name = "603e",
500 .subfeatures = &[_]*const Feature {
500 .dependencies = &[_]*const Feature {
501501 &feature_hardFloat,
502502 &feature_fres,
503503 &feature_frsqrte,
......@@ -507,7 +507,7 @@ pub const cpu_e603 = Cpu{
507507pub const cpu_ev603 = Cpu{
508508 .name = "603ev",
509509 .llvm_name = "603ev",
510 .subfeatures = &[_]*const Feature {
510 .dependencies = &[_]*const Feature {
511511 &feature_hardFloat,
512512 &feature_fres,
513513 &feature_frsqrte,
......@@ -517,7 +517,7 @@ pub const cpu_ev603 = Cpu{
517517pub const cpu_604 = Cpu{
518518 .name = "604",
519519 .llvm_name = "604",
520 .subfeatures = &[_]*const Feature {
520 .dependencies = &[_]*const Feature {
521521 &feature_hardFloat,
522522 &feature_fres,
523523 &feature_frsqrte,
......@@ -527,7 +527,7 @@ pub const cpu_604 = Cpu{
527527pub const cpu_e604 = Cpu{
528528 .name = "604e",
529529 .llvm_name = "604e",
530 .subfeatures = &[_]*const Feature {
530 .dependencies = &[_]*const Feature {
531531 &feature_hardFloat,
532532 &feature_fres,
533533 &feature_frsqrte,
......@@ -537,7 +537,7 @@ pub const cpu_e604 = Cpu{
537537pub const cpu_620 = Cpu{
538538 .name = "620",
539539 .llvm_name = "620",
540 .subfeatures = &[_]*const Feature {
540 .dependencies = &[_]*const Feature {
541541 &feature_hardFloat,
542542 &feature_fres,
543543 &feature_frsqrte,
......@@ -547,7 +547,7 @@ pub const cpu_620 = Cpu{
547547pub const cpu_7400 = Cpu{
548548 .name = "7400",
549549 .llvm_name = "7400",
550 .subfeatures = &[_]*const Feature {
550 .dependencies = &[_]*const Feature {
551551 &feature_hardFloat,
552552 &feature_altivec,
553553 &feature_fres,
......@@ -558,7 +558,7 @@ pub const cpu_7400 = Cpu{
558558pub const cpu_7450 = Cpu{
559559 .name = "7450",
560560 .llvm_name = "7450",
561 .subfeatures = &[_]*const Feature {
561 .dependencies = &[_]*const Feature {
562562 &feature_hardFloat,
563563 &feature_altivec,
564564 &feature_fres,
......@@ -569,7 +569,7 @@ pub const cpu_7450 = Cpu{
569569pub const cpu_750 = Cpu{
570570 .name = "750",
571571 .llvm_name = "750",
572 .subfeatures = &[_]*const Feature {
572 .dependencies = &[_]*const Feature {
573573 &feature_hardFloat,
574574 &feature_fres,
575575 &feature_frsqrte,
......@@ -579,7 +579,7 @@ pub const cpu_750 = Cpu{
579579pub const cpu_970 = Cpu{
580580 .name = "970",
581581 .llvm_name = "970",
582 .subfeatures = &[_]*const Feature {
582 .dependencies = &[_]*const Feature {
583583 &feature_bit64,
584584 &feature_hardFloat,
585585 &feature_altivec,
......@@ -594,7 +594,7 @@ pub const cpu_970 = Cpu{
594594pub const cpu_a2 = Cpu{
595595 .name = "a2",
596596 .llvm_name = "a2",
597 .subfeatures = &[_]*const Feature {
597 .dependencies = &[_]*const Feature {
598598 &feature_bit64,
599599 &feature_icbt,
600600 &feature_booke,
......@@ -621,7 +621,7 @@ pub const cpu_a2 = Cpu{
621621pub const cpu_a2q = Cpu{
622622 .name = "a2q",
623623 .llvm_name = "a2q",
624 .subfeatures = &[_]*const Feature {
624 .dependencies = &[_]*const Feature {
625625 &feature_bit64,
626626 &feature_icbt,
627627 &feature_booke,
......@@ -649,7 +649,7 @@ pub const cpu_a2q = Cpu{
649649pub const cpu_e500 = Cpu{
650650 .name = "e500",
651651 .llvm_name = "e500",
652 .subfeatures = &[_]*const Feature {
652 .dependencies = &[_]*const Feature {
653653 &feature_icbt,
654654 &feature_booke,
655655 &feature_isel,
......@@ -659,7 +659,7 @@ pub const cpu_e500 = Cpu{
659659pub const cpu_e500mc = Cpu{
660660 .name = "e500mc",
661661 .llvm_name = "e500mc",
662 .subfeatures = &[_]*const Feature {
662 .dependencies = &[_]*const Feature {
663663 &feature_icbt,
664664 &feature_booke,
665665 &feature_isel,
......@@ -671,7 +671,7 @@ pub const cpu_e500mc = Cpu{
671671pub const cpu_e5500 = Cpu{
672672 .name = "e5500",
673673 .llvm_name = "e5500",
674 .subfeatures = &[_]*const Feature {
674 .dependencies = &[_]*const Feature {
675675 &feature_bit64,
676676 &feature_icbt,
677677 &feature_booke,
......@@ -685,7 +685,7 @@ pub const cpu_e5500 = Cpu{
685685pub const cpu_g3 = Cpu{
686686 .name = "g3",
687687 .llvm_name = "g3",
688 .subfeatures = &[_]*const Feature {
688 .dependencies = &[_]*const Feature {
689689 &feature_hardFloat,
690690 &feature_fres,
691691 &feature_frsqrte,
......@@ -695,7 +695,7 @@ pub const cpu_g3 = Cpu{
695695pub const cpu_g4 = Cpu{
696696 .name = "g4",
697697 .llvm_name = "g4",
698 .subfeatures = &[_]*const Feature {
698 .dependencies = &[_]*const Feature {
699699 &feature_hardFloat,
700700 &feature_altivec,
701701 &feature_fres,
......@@ -706,7 +706,7 @@ pub const cpu_g4 = Cpu{
706706pub const cpu_g4Plus = Cpu{
707707 .name = "g4+",
708708 .llvm_name = "g4+",
709 .subfeatures = &[_]*const Feature {
709 .dependencies = &[_]*const Feature {
710710 &feature_hardFloat,
711711 &feature_altivec,
712712 &feature_fres,
......@@ -717,7 +717,7 @@ pub const cpu_g4Plus = Cpu{
717717pub const cpu_g5 = Cpu{
718718 .name = "g5",
719719 .llvm_name = "g5",
720 .subfeatures = &[_]*const Feature {
720 .dependencies = &[_]*const Feature {
721721 &feature_bit64,
722722 &feature_hardFloat,
723723 &feature_altivec,
......@@ -732,7 +732,7 @@ pub const cpu_g5 = Cpu{
732732pub const cpu_generic = Cpu{
733733 .name = "generic",
734734 .llvm_name = "generic",
735 .subfeatures = &[_]*const Feature {
735 .dependencies = &[_]*const Feature {
736736 &feature_hardFloat,
737737 },
738738};
......@@ -740,7 +740,7 @@ pub const cpu_generic = Cpu{
740740pub const cpu_ppc = Cpu{
741741 .name = "ppc",
742742 .llvm_name = "ppc",
743 .subfeatures = &[_]*const Feature {
743 .dependencies = &[_]*const Feature {
744744 &feature_hardFloat,
745745 },
746746};
......@@ -748,7 +748,7 @@ pub const cpu_ppc = Cpu{
748748pub const cpu_ppc32 = Cpu{
749749 .name = "ppc32",
750750 .llvm_name = "ppc32",
751 .subfeatures = &[_]*const Feature {
751 .dependencies = &[_]*const Feature {
752752 &feature_hardFloat,
753753 },
754754};
......@@ -756,7 +756,7 @@ pub const cpu_ppc32 = Cpu{
756756pub const cpu_ppc64 = Cpu{
757757 .name = "ppc64",
758758 .llvm_name = "ppc64",
759 .subfeatures = &[_]*const Feature {
759 .dependencies = &[_]*const Feature {
760760 &feature_bit64,
761761 &feature_hardFloat,
762762 &feature_altivec,
......@@ -771,7 +771,7 @@ pub const cpu_ppc64 = Cpu{
771771pub const cpu_ppc64le = Cpu{
772772 .name = "ppc64le",
773773 .llvm_name = "ppc64le",
774 .subfeatures = &[_]*const Feature {
774 .dependencies = &[_]*const Feature {
775775 &feature_bit64,
776776 &feature_hardFloat,
777777 &feature_altivec,
......@@ -808,7 +808,7 @@ pub const cpu_ppc64le = Cpu{
808808pub const cpu_pwr3 = Cpu{
809809 .name = "pwr3",
810810 .llvm_name = "pwr3",
811 .subfeatures = &[_]*const Feature {
811 .dependencies = &[_]*const Feature {
812812 &feature_bit64,
813813 &feature_hardFloat,
814814 &feature_altivec,
......@@ -822,7 +822,7 @@ pub const cpu_pwr3 = Cpu{
822822pub const cpu_pwr4 = Cpu{
823823 .name = "pwr4",
824824 .llvm_name = "pwr4",
825 .subfeatures = &[_]*const Feature {
825 .dependencies = &[_]*const Feature {
826826 &feature_bit64,
827827 &feature_hardFloat,
828828 &feature_altivec,
......@@ -837,7 +837,7 @@ pub const cpu_pwr4 = Cpu{
837837pub const cpu_pwr5 = Cpu{
838838 .name = "pwr5",
839839 .llvm_name = "pwr5",
840 .subfeatures = &[_]*const Feature {
840 .dependencies = &[_]*const Feature {
841841 &feature_bit64,
842842 &feature_hardFloat,
843843 &feature_altivec,
......@@ -854,7 +854,7 @@ pub const cpu_pwr5 = Cpu{
854854pub const cpu_pwr5x = Cpu{
855855 .name = "pwr5x",
856856 .llvm_name = "pwr5x",
857 .subfeatures = &[_]*const Feature {
857 .dependencies = &[_]*const Feature {
858858 &feature_bit64,
859859 &feature_hardFloat,
860860 &feature_altivec,
......@@ -872,7 +872,7 @@ pub const cpu_pwr5x = Cpu{
872872pub const cpu_pwr6 = Cpu{
873873 .name = "pwr6",
874874 .llvm_name = "pwr6",
875 .subfeatures = &[_]*const Feature {
875 .dependencies = &[_]*const Feature {
876876 &feature_bit64,
877877 &feature_hardFloat,
878878 &feature_altivec,
......@@ -894,7 +894,7 @@ pub const cpu_pwr6 = Cpu{
894894pub const cpu_pwr6x = Cpu{
895895 .name = "pwr6x",
896896 .llvm_name = "pwr6x",
897 .subfeatures = &[_]*const Feature {
897 .dependencies = &[_]*const Feature {
898898 &feature_bit64,
899899 &feature_hardFloat,
900900 &feature_altivec,
......@@ -916,7 +916,7 @@ pub const cpu_pwr6x = Cpu{
916916pub const cpu_pwr7 = Cpu{
917917 .name = "pwr7",
918918 .llvm_name = "pwr7",
919 .subfeatures = &[_]*const Feature {
919 .dependencies = &[_]*const Feature {
920920 &feature_bit64,
921921 &feature_hardFloat,
922922 &feature_altivec,
......@@ -946,7 +946,7 @@ pub const cpu_pwr7 = Cpu{
946946pub const cpu_pwr8 = Cpu{
947947 .name = "pwr8",
948948 .llvm_name = "pwr8",
949 .subfeatures = &[_]*const Feature {
949 .dependencies = &[_]*const Feature {
950950 &feature_bit64,
951951 &feature_hardFloat,
952952 &feature_altivec,
......@@ -983,7 +983,7 @@ pub const cpu_pwr8 = Cpu{
983983pub const cpu_pwr9 = Cpu{
984984 .name = "pwr9",
985985 .llvm_name = "pwr9",
986 .subfeatures = &[_]*const Feature {
986 .dependencies = &[_]*const Feature {
987987 &feature_bit64,
988988 &feature_hardFloat,
989989 &feature_altivec,
lib/std/target/riscv.zig+11-11
......@@ -4,49 +4,49 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_bit64 = Feature{
55 .name = "64bit",
66 .description = "Implements RV64",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_e = Feature{
1212 .name = "e",
1313 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_rvcHints = Feature{
1919 .name = "rvc-hints",
2020 .description = "Enable RVC Hint Instructions.",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_relax = Feature{
2626 .name = "relax",
2727 .description = "Enable Linker relaxation.",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_a = Feature{
3333 .name = "a",
3434 .description = "'A' (Atomic Instructions)",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_c = Feature{
4040 .name = "c",
4141 .description = "'C' (Compressed Instructions)",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_d = Feature{
4747 .name = "d",
4848 .description = "'D' (Double-Precision Floating-Point)",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 &feature_f,
5151 },
5252};
......@@ -54,14 +54,14 @@ pub const feature_d = Feature{
5454pub const feature_f = Feature{
5555 .name = "f",
5656 .description = "'F' (Single-Precision Floating-Point)",
57 .subfeatures = &[_]*const Feature {
57 .dependencies = &[_]*const Feature {
5858 },
5959};
6060
6161pub const feature_m = Feature{
6262 .name = "m",
6363 .description = "'M' (Integer Multiplication and Division)",
64 .subfeatures = &[_]*const Feature {
64 .dependencies = &[_]*const Feature {
6565 },
6666};
6767
......@@ -80,7 +80,7 @@ pub const features = &[_]*const Feature {
8080pub const cpu_genericRv32 = Cpu{
8181 .name = "generic-rv32",
8282 .llvm_name = "generic-rv32",
83 .subfeatures = &[_]*const Feature {
83 .dependencies = &[_]*const Feature {
8484 &feature_rvcHints,
8585 },
8686};
......@@ -88,7 +88,7 @@ pub const cpu_genericRv32 = Cpu{
8888pub const cpu_genericRv64 = Cpu{
8989 .name = "generic-rv64",
9090 .llvm_name = "generic-rv64",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 &feature_bit64,
9393 &feature_rvcHints,
9494 },
lib/std/target/sparc.zig+52-52
......@@ -4,84 +4,84 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_hardQuadFloat = Feature{
55 .name = "hard-quad-float",
66 .description = "Enable quad-word floating point instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_leon = Feature{
1212 .name = "leon",
1313 .description = "Enable LEON extensions",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_noFmuls = Feature{
1919 .name = "no-fmuls",
2020 .description = "Disable the fmuls instruction.",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_noFsmuld = Feature{
2626 .name = "no-fsmuld",
2727 .description = "Disable the fsmuld instruction.",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_leonpwrpsr = Feature{
3333 .name = "leonpwrpsr",
3434 .description = "Enable the PWRPSR instruction",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_softFloat = Feature{
4040 .name = "soft-float",
4141 .description = "Use software emulation for floating point",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_softMulDiv = Feature{
4747 .name = "soft-mul-div",
4848 .description = "Use software emulation for integer multiply and divide",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_deprecatedV8 = Feature{
5454 .name = "deprecated-v8",
5555 .description = "Enable deprecated V8 instructions in V9 mode",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_v9 = Feature{
6161 .name = "v9",
6262 .description = "Enable SPARC-V9 instructions",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_vis = Feature{
6868 .name = "vis",
6969 .description = "Enable UltraSPARC Visual Instruction Set extensions",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 },
7272};
7373
7474pub const feature_vis2 = Feature{
7575 .name = "vis2",
7676 .description = "Enable Visual Instruction Set extensions II",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 },
7979};
8080
8181pub const feature_vis3 = Feature{
8282 .name = "vis3",
8383 .description = "Enable Visual Instruction Set extensions III",
84 .subfeatures = &[_]*const Feature {
84 .dependencies = &[_]*const Feature {
8585 },
8686};
8787
......@@ -103,7 +103,7 @@ pub const features = &[_]*const Feature {
103103pub const cpu_at697e = Cpu{
104104 .name = "at697e",
105105 .llvm_name = "at697e",
106 .subfeatures = &[_]*const Feature {
106 .dependencies = &[_]*const Feature {
107107 &feature_leon,
108108 },
109109};
......@@ -111,7 +111,7 @@ pub const cpu_at697e = Cpu{
111111pub const cpu_at697f = Cpu{
112112 .name = "at697f",
113113 .llvm_name = "at697f",
114 .subfeatures = &[_]*const Feature {
114 .dependencies = &[_]*const Feature {
115115 &feature_leon,
116116 },
117117};
......@@ -119,21 +119,21 @@ pub const cpu_at697f = Cpu{
119119pub const cpu_f934 = Cpu{
120120 .name = "f934",
121121 .llvm_name = "f934",
122 .subfeatures = &[_]*const Feature {
122 .dependencies = &[_]*const Feature {
123123 },
124124};
125125
126126pub const cpu_generic = Cpu{
127127 .name = "generic",
128128 .llvm_name = "generic",
129 .subfeatures = &[_]*const Feature {
129 .dependencies = &[_]*const Feature {
130130 },
131131};
132132
133133pub const cpu_gr712rc = Cpu{
134134 .name = "gr712rc",
135135 .llvm_name = "gr712rc",
136 .subfeatures = &[_]*const Feature {
136 .dependencies = &[_]*const Feature {
137137 &feature_leon,
138138 },
139139};
......@@ -141,7 +141,7 @@ pub const cpu_gr712rc = Cpu{
141141pub const cpu_gr740 = Cpu{
142142 .name = "gr740",
143143 .llvm_name = "gr740",
144 .subfeatures = &[_]*const Feature {
144 .dependencies = &[_]*const Feature {
145145 &feature_leon,
146146 &feature_leonpwrpsr,
147147 },
......@@ -150,14 +150,14 @@ pub const cpu_gr740 = Cpu{
150150pub const cpu_hypersparc = Cpu{
151151 .name = "hypersparc",
152152 .llvm_name = "hypersparc",
153 .subfeatures = &[_]*const Feature {
153 .dependencies = &[_]*const Feature {
154154 },
155155};
156156
157157pub const cpu_leon2 = Cpu{
158158 .name = "leon2",
159159 .llvm_name = "leon2",
160 .subfeatures = &[_]*const Feature {
160 .dependencies = &[_]*const Feature {
161161 &feature_leon,
162162 },
163163};
......@@ -165,7 +165,7 @@ pub const cpu_leon2 = Cpu{
165165pub const cpu_leon3 = Cpu{
166166 .name = "leon3",
167167 .llvm_name = "leon3",
168 .subfeatures = &[_]*const Feature {
168 .dependencies = &[_]*const Feature {
169169 &feature_leon,
170170 },
171171};
......@@ -173,7 +173,7 @@ pub const cpu_leon3 = Cpu{
173173pub const cpu_leon4 = Cpu{
174174 .name = "leon4",
175175 .llvm_name = "leon4",
176 .subfeatures = &[_]*const Feature {
176 .dependencies = &[_]*const Feature {
177177 &feature_leon,
178178 },
179179};
......@@ -181,7 +181,7 @@ pub const cpu_leon4 = Cpu{
181181pub const cpu_ma2080 = Cpu{
182182 .name = "ma2080",
183183 .llvm_name = "ma2080",
184 .subfeatures = &[_]*const Feature {
184 .dependencies = &[_]*const Feature {
185185 &feature_leon,
186186 },
187187};
......@@ -189,7 +189,7 @@ pub const cpu_ma2080 = Cpu{
189189pub const cpu_ma2085 = Cpu{
190190 .name = "ma2085",
191191 .llvm_name = "ma2085",
192 .subfeatures = &[_]*const Feature {
192 .dependencies = &[_]*const Feature {
193193 &feature_leon,
194194 },
195195};
......@@ -197,7 +197,7 @@ pub const cpu_ma2085 = Cpu{
197197pub const cpu_ma2100 = Cpu{
198198 .name = "ma2100",
199199 .llvm_name = "ma2100",
200 .subfeatures = &[_]*const Feature {
200 .dependencies = &[_]*const Feature {
201201 &feature_leon,
202202 },
203203};
......@@ -205,7 +205,7 @@ pub const cpu_ma2100 = Cpu{
205205pub const cpu_ma2150 = Cpu{
206206 .name = "ma2150",
207207 .llvm_name = "ma2150",
208 .subfeatures = &[_]*const Feature {
208 .dependencies = &[_]*const Feature {
209209 &feature_leon,
210210 },
211211};
......@@ -213,7 +213,7 @@ pub const cpu_ma2150 = Cpu{
213213pub const cpu_ma2155 = Cpu{
214214 .name = "ma2155",
215215 .llvm_name = "ma2155",
216 .subfeatures = &[_]*const Feature {
216 .dependencies = &[_]*const Feature {
217217 &feature_leon,
218218 },
219219};
......@@ -221,7 +221,7 @@ pub const cpu_ma2155 = Cpu{
221221pub const cpu_ma2450 = Cpu{
222222 .name = "ma2450",
223223 .llvm_name = "ma2450",
224 .subfeatures = &[_]*const Feature {
224 .dependencies = &[_]*const Feature {
225225 &feature_leon,
226226 },
227227};
......@@ -229,7 +229,7 @@ pub const cpu_ma2450 = Cpu{
229229pub const cpu_ma2455 = Cpu{
230230 .name = "ma2455",
231231 .llvm_name = "ma2455",
232 .subfeatures = &[_]*const Feature {
232 .dependencies = &[_]*const Feature {
233233 &feature_leon,
234234 },
235235};
......@@ -237,7 +237,7 @@ pub const cpu_ma2455 = Cpu{
237237pub const cpu_ma2480 = Cpu{
238238 .name = "ma2480",
239239 .llvm_name = "ma2480",
240 .subfeatures = &[_]*const Feature {
240 .dependencies = &[_]*const Feature {
241241 &feature_leon,
242242 },
243243};
......@@ -245,7 +245,7 @@ pub const cpu_ma2480 = Cpu{
245245pub const cpu_ma2485 = Cpu{
246246 .name = "ma2485",
247247 .llvm_name = "ma2485",
248 .subfeatures = &[_]*const Feature {
248 .dependencies = &[_]*const Feature {
249249 &feature_leon,
250250 },
251251};
......@@ -253,7 +253,7 @@ pub const cpu_ma2485 = Cpu{
253253pub const cpu_ma2x5x = Cpu{
254254 .name = "ma2x5x",
255255 .llvm_name = "ma2x5x",
256 .subfeatures = &[_]*const Feature {
256 .dependencies = &[_]*const Feature {
257257 &feature_leon,
258258 },
259259};
......@@ -261,7 +261,7 @@ pub const cpu_ma2x5x = Cpu{
261261pub const cpu_ma2x8x = Cpu{
262262 .name = "ma2x8x",
263263 .llvm_name = "ma2x8x",
264 .subfeatures = &[_]*const Feature {
264 .dependencies = &[_]*const Feature {
265265 &feature_leon,
266266 },
267267};
......@@ -269,7 +269,7 @@ pub const cpu_ma2x8x = Cpu{
269269pub const cpu_myriad2 = Cpu{
270270 .name = "myriad2",
271271 .llvm_name = "myriad2",
272 .subfeatures = &[_]*const Feature {
272 .dependencies = &[_]*const Feature {
273273 &feature_leon,
274274 },
275275};
......@@ -277,7 +277,7 @@ pub const cpu_myriad2 = Cpu{
277277pub const cpu_myriad21 = Cpu{
278278 .name = "myriad2.1",
279279 .llvm_name = "myriad2.1",
280 .subfeatures = &[_]*const Feature {
280 .dependencies = &[_]*const Feature {
281281 &feature_leon,
282282 },
283283};
......@@ -285,7 +285,7 @@ pub const cpu_myriad21 = Cpu{
285285pub const cpu_myriad22 = Cpu{
286286 .name = "myriad2.2",
287287 .llvm_name = "myriad2.2",
288 .subfeatures = &[_]*const Feature {
288 .dependencies = &[_]*const Feature {
289289 &feature_leon,
290290 },
291291};
......@@ -293,7 +293,7 @@ pub const cpu_myriad22 = Cpu{
293293pub const cpu_myriad23 = Cpu{
294294 .name = "myriad2.3",
295295 .llvm_name = "myriad2.3",
296 .subfeatures = &[_]*const Feature {
296 .dependencies = &[_]*const Feature {
297297 &feature_leon,
298298 },
299299};
......@@ -301,7 +301,7 @@ pub const cpu_myriad23 = Cpu{
301301pub const cpu_niagara = Cpu{
302302 .name = "niagara",
303303 .llvm_name = "niagara",
304 .subfeatures = &[_]*const Feature {
304 .dependencies = &[_]*const Feature {
305305 &feature_deprecatedV8,
306306 &feature_v9,
307307 &feature_vis,
......@@ -312,7 +312,7 @@ pub const cpu_niagara = Cpu{
312312pub const cpu_niagara2 = Cpu{
313313 .name = "niagara2",
314314 .llvm_name = "niagara2",
315 .subfeatures = &[_]*const Feature {
315 .dependencies = &[_]*const Feature {
316316 &feature_deprecatedV8,
317317 &feature_v9,
318318 &feature_vis,
......@@ -323,7 +323,7 @@ pub const cpu_niagara2 = Cpu{
323323pub const cpu_niagara3 = Cpu{
324324 .name = "niagara3",
325325 .llvm_name = "niagara3",
326 .subfeatures = &[_]*const Feature {
326 .dependencies = &[_]*const Feature {
327327 &feature_deprecatedV8,
328328 &feature_v9,
329329 &feature_vis,
......@@ -334,7 +334,7 @@ pub const cpu_niagara3 = Cpu{
334334pub const cpu_niagara4 = Cpu{
335335 .name = "niagara4",
336336 .llvm_name = "niagara4",
337 .subfeatures = &[_]*const Feature {
337 .dependencies = &[_]*const Feature {
338338 &feature_deprecatedV8,
339339 &feature_v9,
340340 &feature_vis,
......@@ -346,42 +346,42 @@ pub const cpu_niagara4 = Cpu{
346346pub const cpu_sparclet = Cpu{
347347 .name = "sparclet",
348348 .llvm_name = "sparclet",
349 .subfeatures = &[_]*const Feature {
349 .dependencies = &[_]*const Feature {
350350 },
351351};
352352
353353pub const cpu_sparclite = Cpu{
354354 .name = "sparclite",
355355 .llvm_name = "sparclite",
356 .subfeatures = &[_]*const Feature {
356 .dependencies = &[_]*const Feature {
357357 },
358358};
359359
360360pub const cpu_sparclite86x = Cpu{
361361 .name = "sparclite86x",
362362 .llvm_name = "sparclite86x",
363 .subfeatures = &[_]*const Feature {
363 .dependencies = &[_]*const Feature {
364364 },
365365};
366366
367367pub const cpu_supersparc = Cpu{
368368 .name = "supersparc",
369369 .llvm_name = "supersparc",
370 .subfeatures = &[_]*const Feature {
370 .dependencies = &[_]*const Feature {
371371 },
372372};
373373
374374pub const cpu_tsc701 = Cpu{
375375 .name = "tsc701",
376376 .llvm_name = "tsc701",
377 .subfeatures = &[_]*const Feature {
377 .dependencies = &[_]*const Feature {
378378 },
379379};
380380
381381pub const cpu_ultrasparc = Cpu{
382382 .name = "ultrasparc",
383383 .llvm_name = "ultrasparc",
384 .subfeatures = &[_]*const Feature {
384 .dependencies = &[_]*const Feature {
385385 &feature_deprecatedV8,
386386 &feature_v9,
387387 &feature_vis,
......@@ -391,7 +391,7 @@ pub const cpu_ultrasparc = Cpu{
391391pub const cpu_ultrasparc3 = Cpu{
392392 .name = "ultrasparc3",
393393 .llvm_name = "ultrasparc3",
394 .subfeatures = &[_]*const Feature {
394 .dependencies = &[_]*const Feature {
395395 &feature_deprecatedV8,
396396 &feature_v9,
397397 &feature_vis,
......@@ -402,7 +402,7 @@ pub const cpu_ultrasparc3 = Cpu{
402402pub const cpu_ut699 = Cpu{
403403 .name = "ut699",
404404 .llvm_name = "ut699",
405 .subfeatures = &[_]*const Feature {
405 .dependencies = &[_]*const Feature {
406406 &feature_leon,
407407 &feature_noFmuls,
408408 &feature_noFsmuld,
......@@ -412,7 +412,7 @@ pub const cpu_ut699 = Cpu{
412412pub const cpu_v7 = Cpu{
413413 .name = "v7",
414414 .llvm_name = "v7",
415 .subfeatures = &[_]*const Feature {
415 .dependencies = &[_]*const Feature {
416416 &feature_noFsmuld,
417417 &feature_softMulDiv,
418418 },
......@@ -421,14 +421,14 @@ pub const cpu_v7 = Cpu{
421421pub const cpu_v8 = Cpu{
422422 .name = "v8",
423423 .llvm_name = "v8",
424 .subfeatures = &[_]*const Feature {
424 .dependencies = &[_]*const Feature {
425425 },
426426};
427427
428428pub const cpu_v9 = Cpu{
429429 .name = "v9",
430430 .llvm_name = "v9",
431 .subfeatures = &[_]*const Feature {
431 .dependencies = &[_]*const Feature {
432432 &feature_v9,
433433 },
434434};
lib/std/target/systemz.zig+48-48
......@@ -4,245 +4,245 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_dfpPackedConversion = Feature{
55 .name = "dfp-packed-conversion",
66 .description = "Assume that the DFP packed-conversion facility is installed",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_dfpZonedConversion = Feature{
1212 .name = "dfp-zoned-conversion",
1313 .description = "Assume that the DFP zoned-conversion facility is installed",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_deflateConversion = Feature{
1919 .name = "deflate-conversion",
2020 .description = "Assume that the deflate-conversion facility is installed",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_distinctOps = Feature{
2626 .name = "distinct-ops",
2727 .description = "Assume that the distinct-operands facility is installed",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_enhancedDat2 = Feature{
3333 .name = "enhanced-dat-2",
3434 .description = "Assume that the enhanced-DAT facility 2 is installed",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_enhancedSort = Feature{
4040 .name = "enhanced-sort",
4141 .description = "Assume that the enhanced-sort facility is installed",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_executionHint = Feature{
4747 .name = "execution-hint",
4848 .description = "Assume that the execution-hint facility is installed",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_fpExtension = Feature{
5454 .name = "fp-extension",
5555 .description = "Assume that the floating-point extension facility is installed",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_fastSerialization = Feature{
6161 .name = "fast-serialization",
6262 .description = "Assume that the fast-serialization facility is installed",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_guardedStorage = Feature{
6868 .name = "guarded-storage",
6969 .description = "Assume that the guarded-storage facility is installed",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 },
7272};
7373
7474pub const feature_highWord = Feature{
7575 .name = "high-word",
7676 .description = "Assume that the high-word facility is installed",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 },
7979};
8080
8181pub const feature_insertReferenceBitsMultiple = Feature{
8282 .name = "insert-reference-bits-multiple",
8383 .description = "Assume that the insert-reference-bits-multiple facility is installed",
84 .subfeatures = &[_]*const Feature {
84 .dependencies = &[_]*const Feature {
8585 },
8686};
8787
8888pub const feature_interlockedAccess1 = Feature{
8989 .name = "interlocked-access1",
9090 .description = "Assume that interlocked-access facility 1 is installed",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 },
9393};
9494
9595pub const feature_loadAndTrap = Feature{
9696 .name = "load-and-trap",
9797 .description = "Assume that the load-and-trap facility is installed",
98 .subfeatures = &[_]*const Feature {
98 .dependencies = &[_]*const Feature {
9999 },
100100};
101101
102102pub const feature_loadAndZeroRightmostByte = Feature{
103103 .name = "load-and-zero-rightmost-byte",
104104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
105 .subfeatures = &[_]*const Feature {
105 .dependencies = &[_]*const Feature {
106106 },
107107};
108108
109109pub const feature_loadStoreOnCond = Feature{
110110 .name = "load-store-on-cond",
111111 .description = "Assume that the load/store-on-condition facility is installed",
112 .subfeatures = &[_]*const Feature {
112 .dependencies = &[_]*const Feature {
113113 },
114114};
115115
116116pub const feature_loadStoreOnCond2 = Feature{
117117 .name = "load-store-on-cond-2",
118118 .description = "Assume that the load/store-on-condition facility 2 is installed",
119 .subfeatures = &[_]*const Feature {
119 .dependencies = &[_]*const Feature {
120120 },
121121};
122122
123123pub const feature_messageSecurityAssistExtension3 = Feature{
124124 .name = "message-security-assist-extension3",
125125 .description = "Assume that the message-security-assist extension facility 3 is installed",
126 .subfeatures = &[_]*const Feature {
126 .dependencies = &[_]*const Feature {
127127 },
128128};
129129
130130pub const feature_messageSecurityAssistExtension4 = Feature{
131131 .name = "message-security-assist-extension4",
132132 .description = "Assume that the message-security-assist extension facility 4 is installed",
133 .subfeatures = &[_]*const Feature {
133 .dependencies = &[_]*const Feature {
134134 },
135135};
136136
137137pub const feature_messageSecurityAssistExtension5 = Feature{
138138 .name = "message-security-assist-extension5",
139139 .description = "Assume that the message-security-assist extension facility 5 is installed",
140 .subfeatures = &[_]*const Feature {
140 .dependencies = &[_]*const Feature {
141141 },
142142};
143143
144144pub const feature_messageSecurityAssistExtension7 = Feature{
145145 .name = "message-security-assist-extension7",
146146 .description = "Assume that the message-security-assist extension facility 7 is installed",
147 .subfeatures = &[_]*const Feature {
147 .dependencies = &[_]*const Feature {
148148 },
149149};
150150
151151pub const feature_messageSecurityAssistExtension8 = Feature{
152152 .name = "message-security-assist-extension8",
153153 .description = "Assume that the message-security-assist extension facility 8 is installed",
154 .subfeatures = &[_]*const Feature {
154 .dependencies = &[_]*const Feature {
155155 },
156156};
157157
158158pub const feature_messageSecurityAssistExtension9 = Feature{
159159 .name = "message-security-assist-extension9",
160160 .description = "Assume that the message-security-assist extension facility 9 is installed",
161 .subfeatures = &[_]*const Feature {
161 .dependencies = &[_]*const Feature {
162162 },
163163};
164164
165165pub const feature_miscellaneousExtensions = Feature{
166166 .name = "miscellaneous-extensions",
167167 .description = "Assume that the miscellaneous-extensions facility is installed",
168 .subfeatures = &[_]*const Feature {
168 .dependencies = &[_]*const Feature {
169169 },
170170};
171171
172172pub const feature_miscellaneousExtensions2 = Feature{
173173 .name = "miscellaneous-extensions-2",
174174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
175 .subfeatures = &[_]*const Feature {
175 .dependencies = &[_]*const Feature {
176176 },
177177};
178178
179179pub const feature_miscellaneousExtensions3 = Feature{
180180 .name = "miscellaneous-extensions-3",
181181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
182 .subfeatures = &[_]*const Feature {
182 .dependencies = &[_]*const Feature {
183183 },
184184};
185185
186186pub const feature_populationCount = Feature{
187187 .name = "population-count",
188188 .description = "Assume that the population-count facility is installed",
189 .subfeatures = &[_]*const Feature {
189 .dependencies = &[_]*const Feature {
190190 },
191191};
192192
193193pub const feature_processorAssist = Feature{
194194 .name = "processor-assist",
195195 .description = "Assume that the processor-assist facility is installed",
196 .subfeatures = &[_]*const Feature {
196 .dependencies = &[_]*const Feature {
197197 },
198198};
199199
200200pub const feature_resetReferenceBitsMultiple = Feature{
201201 .name = "reset-reference-bits-multiple",
202202 .description = "Assume that the reset-reference-bits-multiple facility is installed",
203 .subfeatures = &[_]*const Feature {
203 .dependencies = &[_]*const Feature {
204204 },
205205};
206206
207207pub const feature_transactionalExecution = Feature{
208208 .name = "transactional-execution",
209209 .description = "Assume that the transactional-execution facility is installed",
210 .subfeatures = &[_]*const Feature {
210 .dependencies = &[_]*const Feature {
211211 },
212212};
213213
214214pub const feature_vector = Feature{
215215 .name = "vector",
216216 .description = "Assume that the vectory facility is installed",
217 .subfeatures = &[_]*const Feature {
217 .dependencies = &[_]*const Feature {
218218 },
219219};
220220
221221pub const feature_vectorEnhancements1 = Feature{
222222 .name = "vector-enhancements-1",
223223 .description = "Assume that the vector enhancements facility 1 is installed",
224 .subfeatures = &[_]*const Feature {
224 .dependencies = &[_]*const Feature {
225225 },
226226};
227227
228228pub const feature_vectorEnhancements2 = Feature{
229229 .name = "vector-enhancements-2",
230230 .description = "Assume that the vector enhancements facility 2 is installed",
231 .subfeatures = &[_]*const Feature {
231 .dependencies = &[_]*const Feature {
232232 },
233233};
234234
235235pub const feature_vectorPackedDecimal = Feature{
236236 .name = "vector-packed-decimal",
237237 .description = "Assume that the vector packed decimal facility is installed",
238 .subfeatures = &[_]*const Feature {
238 .dependencies = &[_]*const Feature {
239239 },
240240};
241241
242242pub const feature_vectorPackedDecimalEnhancement = Feature{
243243 .name = "vector-packed-decimal-enhancement",
244244 .description = "Assume that the vector packed decimal enhancement facility is installed",
245 .subfeatures = &[_]*const Feature {
245 .dependencies = &[_]*const Feature {
246246 },
247247};
248248
......@@ -287,7 +287,7 @@ pub const features = &[_]*const Feature {
287287pub const cpu_arch10 = Cpu{
288288 .name = "arch10",
289289 .llvm_name = "arch10",
290 .subfeatures = &[_]*const Feature {
290 .dependencies = &[_]*const Feature {
291291 &feature_dfpZonedConversion,
292292 &feature_distinctOps,
293293 &feature_enhancedDat2,
......@@ -311,7 +311,7 @@ pub const cpu_arch10 = Cpu{
311311pub const cpu_arch11 = Cpu{
312312 .name = "arch11",
313313 .llvm_name = "arch11",
314 .subfeatures = &[_]*const Feature {
314 .dependencies = &[_]*const Feature {
315315 &feature_dfpPackedConversion,
316316 &feature_dfpZonedConversion,
317317 &feature_distinctOps,
......@@ -340,7 +340,7 @@ pub const cpu_arch11 = Cpu{
340340pub const cpu_arch12 = Cpu{
341341 .name = "arch12",
342342 .llvm_name = "arch12",
343 .subfeatures = &[_]*const Feature {
343 .dependencies = &[_]*const Feature {
344344 &feature_dfpPackedConversion,
345345 &feature_dfpZonedConversion,
346346 &feature_distinctOps,
......@@ -376,7 +376,7 @@ pub const cpu_arch12 = Cpu{
376376pub const cpu_arch13 = Cpu{
377377 .name = "arch13",
378378 .llvm_name = "arch13",
379 .subfeatures = &[_]*const Feature {
379 .dependencies = &[_]*const Feature {
380380 &feature_dfpPackedConversion,
381381 &feature_dfpZonedConversion,
382382 &feature_deflateConversion,
......@@ -418,14 +418,14 @@ pub const cpu_arch13 = Cpu{
418418pub const cpu_arch8 = Cpu{
419419 .name = "arch8",
420420 .llvm_name = "arch8",
421 .subfeatures = &[_]*const Feature {
421 .dependencies = &[_]*const Feature {
422422 },
423423};
424424
425425pub const cpu_arch9 = Cpu{
426426 .name = "arch9",
427427 .llvm_name = "arch9",
428 .subfeatures = &[_]*const Feature {
428 .dependencies = &[_]*const Feature {
429429 &feature_distinctOps,
430430 &feature_fpExtension,
431431 &feature_fastSerialization,
......@@ -442,21 +442,21 @@ pub const cpu_arch9 = Cpu{
442442pub const cpu_generic = Cpu{
443443 .name = "generic",
444444 .llvm_name = "generic",
445 .subfeatures = &[_]*const Feature {
445 .dependencies = &[_]*const Feature {
446446 },
447447};
448448
449449pub const cpu_z10 = Cpu{
450450 .name = "z10",
451451 .llvm_name = "z10",
452 .subfeatures = &[_]*const Feature {
452 .dependencies = &[_]*const Feature {
453453 },
454454};
455455
456456pub const cpu_z13 = Cpu{
457457 .name = "z13",
458458 .llvm_name = "z13",
459 .subfeatures = &[_]*const Feature {
459 .dependencies = &[_]*const Feature {
460460 &feature_dfpPackedConversion,
461461 &feature_dfpZonedConversion,
462462 &feature_distinctOps,
......@@ -485,7 +485,7 @@ pub const cpu_z13 = Cpu{
485485pub const cpu_z14 = Cpu{
486486 .name = "z14",
487487 .llvm_name = "z14",
488 .subfeatures = &[_]*const Feature {
488 .dependencies = &[_]*const Feature {
489489 &feature_dfpPackedConversion,
490490 &feature_dfpZonedConversion,
491491 &feature_distinctOps,
......@@ -521,7 +521,7 @@ pub const cpu_z14 = Cpu{
521521pub const cpu_z15 = Cpu{
522522 .name = "z15",
523523 .llvm_name = "z15",
524 .subfeatures = &[_]*const Feature {
524 .dependencies = &[_]*const Feature {
525525 &feature_dfpPackedConversion,
526526 &feature_dfpZonedConversion,
527527 &feature_deflateConversion,
......@@ -563,7 +563,7 @@ pub const cpu_z15 = Cpu{
563563pub const cpu_z196 = Cpu{
564564 .name = "z196",
565565 .llvm_name = "z196",
566 .subfeatures = &[_]*const Feature {
566 .dependencies = &[_]*const Feature {
567567 &feature_distinctOps,
568568 &feature_fpExtension,
569569 &feature_fastSerialization,
......@@ -580,7 +580,7 @@ pub const cpu_z196 = Cpu{
580580pub const cpu_zEC12 = Cpu{
581581 .name = "zEC12",
582582 .llvm_name = "zEC12",
583 .subfeatures = &[_]*const Feature {
583 .dependencies = &[_]*const Feature {
584584 &feature_dfpZonedConversion,
585585 &feature_distinctOps,
586586 &feature_enhancedDat2,
lib/std/target/wasm.zig+13-13
......@@ -4,70 +4,70 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_atomics = Feature{
55 .name = "atomics",
66 .description = "Enable Atomics",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 },
99};
1010
1111pub const feature_bulkMemory = Feature{
1212 .name = "bulk-memory",
1313 .description = "Enable bulk memory operations",
14 .subfeatures = &[_]*const Feature {
14 .dependencies = &[_]*const Feature {
1515 },
1616};
1717
1818pub const feature_exceptionHandling = Feature{
1919 .name = "exception-handling",
2020 .description = "Enable Wasm exception handling",
21 .subfeatures = &[_]*const Feature {
21 .dependencies = &[_]*const Feature {
2222 },
2323};
2424
2525pub const feature_multivalue = Feature{
2626 .name = "multivalue",
2727 .description = "Enable multivalue blocks, instructions, and functions",
28 .subfeatures = &[_]*const Feature {
28 .dependencies = &[_]*const Feature {
2929 },
3030};
3131
3232pub const feature_mutableGlobals = Feature{
3333 .name = "mutable-globals",
3434 .description = "Enable mutable globals",
35 .subfeatures = &[_]*const Feature {
35 .dependencies = &[_]*const Feature {
3636 },
3737};
3838
3939pub const feature_nontrappingFptoint = Feature{
4040 .name = "nontrapping-fptoint",
4141 .description = "Enable non-trapping float-to-int conversion operators",
42 .subfeatures = &[_]*const Feature {
42 .dependencies = &[_]*const Feature {
4343 },
4444};
4545
4646pub const feature_simd128 = Feature{
4747 .name = "simd128",
4848 .description = "Enable 128-bit SIMD",
49 .subfeatures = &[_]*const Feature {
49 .dependencies = &[_]*const Feature {
5050 },
5151};
5252
5353pub const feature_signExt = Feature{
5454 .name = "sign-ext",
5555 .description = "Enable sign extension operators",
56 .subfeatures = &[_]*const Feature {
56 .dependencies = &[_]*const Feature {
5757 },
5858};
5959
6060pub const feature_tailCall = Feature{
6161 .name = "tail-call",
6262 .description = "Enable tail call instructions",
63 .subfeatures = &[_]*const Feature {
63 .dependencies = &[_]*const Feature {
6464 },
6565};
6666
6767pub const feature_unimplementedSimd128 = Feature{
6868 .name = "unimplemented-simd128",
6969 .description = "Enable 128-bit SIMD not yet implemented in engines",
70 .subfeatures = &[_]*const Feature {
70 .dependencies = &[_]*const Feature {
7171 &feature_simd128,
7272 },
7373};
......@@ -88,7 +88,7 @@ pub const features = &[_]*const Feature {
8888pub const cpu_bleedingEdge = Cpu{
8989 .name = "bleeding-edge",
9090 .llvm_name = "bleeding-edge",
91 .subfeatures = &[_]*const Feature {
91 .dependencies = &[_]*const Feature {
9292 &feature_atomics,
9393 &feature_mutableGlobals,
9494 &feature_nontrappingFptoint,
......@@ -100,14 +100,14 @@ pub const cpu_bleedingEdge = Cpu{
100100pub const cpu_generic = Cpu{
101101 .name = "generic",
102102 .llvm_name = "generic",
103 .subfeatures = &[_]*const Feature {
103 .dependencies = &[_]*const Feature {
104104 },
105105};
106106
107107pub const cpu_mvp = Cpu{
108108 .name = "mvp",
109109 .llvm_name = "mvp",
110 .subfeatures = &[_]*const Feature {
110 .dependencies = &[_]*const Feature {
111111 },
112112};
113113
lib/std/target/x86.zig+206-206
......@@ -4,7 +4,7 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_dnow3 = Feature{
55 .name = "3dnow",
66 .description = "Enable 3DNow! instructions",
7 .subfeatures = &[_]*const Feature {
7 .dependencies = &[_]*const Feature {
88 &feature_mmx,
99 },
1010};
......@@ -12,7 +12,7 @@ pub const feature_dnow3 = Feature{
1212pub const feature_dnowa3 = Feature{
1313 .name = "3dnowa",
1414 .description = "Enable 3DNow! Athlon instructions",
15 .subfeatures = &[_]*const Feature {
15 .dependencies = &[_]*const Feature {
1616 &feature_mmx,
1717 },
1818};
......@@ -20,21 +20,21 @@ pub const feature_dnowa3 = Feature{
2020pub const feature_bit64 = Feature{
2121 .name = "64bit",
2222 .description = "Support 64-bit instructions",
23 .subfeatures = &[_]*const Feature {
23 .dependencies = &[_]*const Feature {
2424 },
2525};
2626
2727pub const feature_adx = Feature{
2828 .name = "adx",
2929 .description = "Support ADX instructions",
30 .subfeatures = &[_]*const Feature {
30 .dependencies = &[_]*const Feature {
3131 },
3232};
3333
3434pub const feature_aes = Feature{
3535 .name = "aes",
3636 .description = "Enable AES instructions",
37 .subfeatures = &[_]*const Feature {
37 .dependencies = &[_]*const Feature {
3838 &feature_sse,
3939 },
4040};
......@@ -42,7 +42,7 @@ pub const feature_aes = Feature{
4242pub const feature_avx = Feature{
4343 .name = "avx",
4444 .description = "Enable AVX instructions",
45 .subfeatures = &[_]*const Feature {
45 .dependencies = &[_]*const Feature {
4646 &feature_sse,
4747 },
4848};
......@@ -50,7 +50,7 @@ pub const feature_avx = Feature{
5050pub const feature_avx2 = Feature{
5151 .name = "avx2",
5252 .description = "Enable AVX2 instructions",
53 .subfeatures = &[_]*const Feature {
53 .dependencies = &[_]*const Feature {
5454 &feature_sse,
5555 },
5656};
......@@ -58,7 +58,7 @@ pub const feature_avx2 = Feature{
5858pub const feature_avx512f = Feature{
5959 .name = "avx512f",
6060 .description = "Enable AVX-512 instructions",
61 .subfeatures = &[_]*const Feature {
61 .dependencies = &[_]*const Feature {
6262 &feature_sse,
6363 },
6464};
......@@ -66,7 +66,7 @@ pub const feature_avx512f = Feature{
6666pub const feature_avx512bf16 = Feature{
6767 .name = "avx512bf16",
6868 .description = "Support bfloat16 floating point",
69 .subfeatures = &[_]*const Feature {
69 .dependencies = &[_]*const Feature {
7070 &feature_sse,
7171 },
7272};
......@@ -74,7 +74,7 @@ pub const feature_avx512bf16 = Feature{
7474pub const feature_avx512bitalg = Feature{
7575 .name = "avx512bitalg",
7676 .description = "Enable AVX-512 Bit Algorithms",
77 .subfeatures = &[_]*const Feature {
77 .dependencies = &[_]*const Feature {
7878 &feature_sse,
7979 },
8080};
......@@ -82,21 +82,21 @@ pub const feature_avx512bitalg = Feature{
8282pub const feature_bmi = Feature{
8383 .name = "bmi",
8484 .description = "Support BMI instructions",
85 .subfeatures = &[_]*const Feature {
85 .dependencies = &[_]*const Feature {
8686 },
8787};
8888
8989pub const feature_bmi2 = Feature{
9090 .name = "bmi2",
9191 .description = "Support BMI2 instructions",
92 .subfeatures = &[_]*const Feature {
92 .dependencies = &[_]*const Feature {
9393 },
9494};
9595
9696pub const feature_avx512bw = Feature{
9797 .name = "avx512bw",
9898 .description = "Enable AVX-512 Byte and Word Instructions",
99 .subfeatures = &[_]*const Feature {
99 .dependencies = &[_]*const Feature {
100100 &feature_sse,
101101 },
102102};
......@@ -104,14 +104,14 @@ pub const feature_avx512bw = Feature{
104104pub const feature_branchfusion = Feature{
105105 .name = "branchfusion",
106106 .description = "CMP/TEST can be fused with conditional branches",
107 .subfeatures = &[_]*const Feature {
107 .dependencies = &[_]*const Feature {
108108 },
109109};
110110
111111pub const feature_avx512cd = Feature{
112112 .name = "avx512cd",
113113 .description = "Enable AVX-512 Conflict Detection Instructions",
114 .subfeatures = &[_]*const Feature {
114 .dependencies = &[_]*const Feature {
115115 &feature_sse,
116116 },
117117};
......@@ -119,49 +119,49 @@ pub const feature_avx512cd = Feature{
119119pub const feature_cldemote = Feature{
120120 .name = "cldemote",
121121 .description = "Enable Cache Demote",
122 .subfeatures = &[_]*const Feature {
122 .dependencies = &[_]*const Feature {
123123 },
124124};
125125
126126pub const feature_clflushopt = Feature{
127127 .name = "clflushopt",
128128 .description = "Flush A Cache Line Optimized",
129 .subfeatures = &[_]*const Feature {
129 .dependencies = &[_]*const Feature {
130130 },
131131};
132132
133133pub const feature_clwb = Feature{
134134 .name = "clwb",
135135 .description = "Cache Line Write Back",
136 .subfeatures = &[_]*const Feature {
136 .dependencies = &[_]*const Feature {
137137 },
138138};
139139
140140pub const feature_clzero = Feature{
141141 .name = "clzero",
142142 .description = "Enable Cache Line Zero",
143 .subfeatures = &[_]*const Feature {
143 .dependencies = &[_]*const Feature {
144144 },
145145};
146146
147147pub const feature_cmov = Feature{
148148 .name = "cmov",
149149 .description = "Enable conditional move instructions",
150 .subfeatures = &[_]*const Feature {
150 .dependencies = &[_]*const Feature {
151151 },
152152};
153153
154154pub const feature_cx8 = Feature{
155155 .name = "cx8",
156156 .description = "Support CMPXCHG8B instructions",
157 .subfeatures = &[_]*const Feature {
157 .dependencies = &[_]*const Feature {
158158 },
159159};
160160
161161pub const feature_cx16 = Feature{
162162 .name = "cx16",
163163 .description = "64-bit with cmpxchg16b",
164 .subfeatures = &[_]*const Feature {
164 .dependencies = &[_]*const Feature {
165165 &feature_cx8,
166166 },
167167};
......@@ -169,7 +169,7 @@ pub const feature_cx16 = Feature{
169169pub const feature_avx512dq = Feature{
170170 .name = "avx512dq",
171171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
172 .subfeatures = &[_]*const Feature {
172 .dependencies = &[_]*const Feature {
173173 &feature_sse,
174174 },
175175};
......@@ -177,21 +177,21 @@ pub const feature_avx512dq = Feature{
177177pub const feature_mpx = Feature{
178178 .name = "mpx",
179179 .description = "Deprecated. Support MPX instructions",
180 .subfeatures = &[_]*const Feature {
180 .dependencies = &[_]*const Feature {
181181 },
182182};
183183
184184pub const feature_enqcmd = Feature{
185185 .name = "enqcmd",
186186 .description = "Has ENQCMD instructions",
187 .subfeatures = &[_]*const Feature {
187 .dependencies = &[_]*const Feature {
188188 },
189189};
190190
191191pub const feature_avx512er = Feature{
192192 .name = "avx512er",
193193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
194 .subfeatures = &[_]*const Feature {
194 .dependencies = &[_]*const Feature {
195195 &feature_sse,
196196 },
197197};
......@@ -199,14 +199,14 @@ pub const feature_avx512er = Feature{
199199pub const feature_ermsb = Feature{
200200 .name = "ermsb",
201201 .description = "REP MOVS/STOS are fast",
202 .subfeatures = &[_]*const Feature {
202 .dependencies = &[_]*const Feature {
203203 },
204204};
205205
206206pub const feature_f16c = Feature{
207207 .name = "f16c",
208208 .description = "Support 16-bit floating point conversion instructions",
209 .subfeatures = &[_]*const Feature {
209 .dependencies = &[_]*const Feature {
210210 &feature_sse,
211211 },
212212};
......@@ -214,7 +214,7 @@ pub const feature_f16c = Feature{
214214pub const feature_fma = Feature{
215215 .name = "fma",
216216 .description = "Enable three-operand fused multiple-add",
217 .subfeatures = &[_]*const Feature {
217 .dependencies = &[_]*const Feature {
218218 &feature_sse,
219219 },
220220};
......@@ -222,7 +222,7 @@ pub const feature_fma = Feature{
222222pub const feature_fma4 = Feature{
223223 .name = "fma4",
224224 .description = "Enable four-operand fused multiple-add",
225 .subfeatures = &[_]*const Feature {
225 .dependencies = &[_]*const Feature {
226226 &feature_sse,
227227 },
228228};
......@@ -230,42 +230,42 @@ pub const feature_fma4 = Feature{
230230pub const feature_fsgsbase = Feature{
231231 .name = "fsgsbase",
232232 .description = "Support FS/GS Base instructions",
233 .subfeatures = &[_]*const Feature {
233 .dependencies = &[_]*const Feature {
234234 },
235235};
236236
237237pub const feature_fxsr = Feature{
238238 .name = "fxsr",
239239 .description = "Support fxsave/fxrestore instructions",
240 .subfeatures = &[_]*const Feature {
240 .dependencies = &[_]*const Feature {
241241 },
242242};
243243
244244pub const feature_fast11bytenop = Feature{
245245 .name = "fast-11bytenop",
246246 .description = "Target can quickly decode up to 11 byte NOPs",
247 .subfeatures = &[_]*const Feature {
247 .dependencies = &[_]*const Feature {
248248 },
249249};
250250
251251pub const feature_fast15bytenop = Feature{
252252 .name = "fast-15bytenop",
253253 .description = "Target can quickly decode up to 15 byte NOPs",
254 .subfeatures = &[_]*const Feature {
254 .dependencies = &[_]*const Feature {
255255 },
256256};
257257
258258pub const feature_fastBextr = Feature{
259259 .name = "fast-bextr",
260260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
261 .subfeatures = &[_]*const Feature {
261 .dependencies = &[_]*const Feature {
262262 },
263263};
264264
265265pub const feature_fastHops = Feature{
266266 .name = "fast-hops",
267267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
268 .subfeatures = &[_]*const Feature {
268 .dependencies = &[_]*const Feature {
269269 &feature_sse,
270270 },
271271};
......@@ -273,63 +273,63 @@ pub const feature_fastHops = Feature{
273273pub const feature_fastLzcnt = Feature{
274274 .name = "fast-lzcnt",
275275 .description = "LZCNT instructions are as fast as most simple integer ops",
276 .subfeatures = &[_]*const Feature {
276 .dependencies = &[_]*const Feature {
277277 },
278278};
279279
280280pub const feature_fastPartialYmmOrZmmWrite = Feature{
281281 .name = "fast-partial-ymm-or-zmm-write",
282282 .description = "Partial writes to YMM/ZMM registers are fast",
283 .subfeatures = &[_]*const Feature {
283 .dependencies = &[_]*const Feature {
284284 },
285285};
286286
287287pub const feature_fastShldRotate = Feature{
288288 .name = "fast-shld-rotate",
289289 .description = "SHLD can be used as a faster rotate",
290 .subfeatures = &[_]*const Feature {
290 .dependencies = &[_]*const Feature {
291291 },
292292};
293293
294294pub const feature_fastScalarFsqrt = Feature{
295295 .name = "fast-scalar-fsqrt",
296296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
297 .subfeatures = &[_]*const Feature {
297 .dependencies = &[_]*const Feature {
298298 },
299299};
300300
301301pub const feature_fastScalarShiftMasks = Feature{
302302 .name = "fast-scalar-shift-masks",
303303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
304 .subfeatures = &[_]*const Feature {
304 .dependencies = &[_]*const Feature {
305305 },
306306};
307307
308308pub const feature_fastVariableShuffle = Feature{
309309 .name = "fast-variable-shuffle",
310310 .description = "Shuffles with variable masks are fast",
311 .subfeatures = &[_]*const Feature {
311 .dependencies = &[_]*const Feature {
312312 },
313313};
314314
315315pub const feature_fastVectorFsqrt = Feature{
316316 .name = "fast-vector-fsqrt",
317317 .description = "Vector SQRT is fast (disable Newton-Raphson)",
318 .subfeatures = &[_]*const Feature {
318 .dependencies = &[_]*const Feature {
319319 },
320320};
321321
322322pub const feature_fastVectorShiftMasks = Feature{
323323 .name = "fast-vector-shift-masks",
324324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
325 .subfeatures = &[_]*const Feature {
325 .dependencies = &[_]*const Feature {
326326 },
327327};
328328
329329pub const feature_gfni = Feature{
330330 .name = "gfni",
331331 .description = "Enable Galois Field Arithmetic Instructions",
332 .subfeatures = &[_]*const Feature {
332 .dependencies = &[_]*const Feature {
333333 &feature_sse,
334334 },
335335};
......@@ -337,14 +337,14 @@ pub const feature_gfni = Feature{
337337pub const feature_fastGather = Feature{
338338 .name = "fast-gather",
339339 .description = "Indicates if gather is reasonably fast",
340 .subfeatures = &[_]*const Feature {
340 .dependencies = &[_]*const Feature {
341341 },
342342};
343343
344344pub const feature_avx512ifma = Feature{
345345 .name = "avx512ifma",
346346 .description = "Enable AVX-512 Integer Fused Multiple-Add",
347 .subfeatures = &[_]*const Feature {
347 .dependencies = &[_]*const Feature {
348348 &feature_sse,
349349 },
350350};
......@@ -352,112 +352,112 @@ pub const feature_avx512ifma = Feature{
352352pub const feature_invpcid = Feature{
353353 .name = "invpcid",
354354 .description = "Invalidate Process-Context Identifier",
355 .subfeatures = &[_]*const Feature {
355 .dependencies = &[_]*const Feature {
356356 },
357357};
358358
359359pub const feature_sahf = Feature{
360360 .name = "sahf",
361361 .description = "Support LAHF and SAHF instructions",
362 .subfeatures = &[_]*const Feature {
362 .dependencies = &[_]*const Feature {
363363 },
364364};
365365
366366pub const feature_leaSp = Feature{
367367 .name = "lea-sp",
368368 .description = "Use LEA for adjusting the stack pointer",
369 .subfeatures = &[_]*const Feature {
369 .dependencies = &[_]*const Feature {
370370 },
371371};
372372
373373pub const feature_leaUsesAg = Feature{
374374 .name = "lea-uses-ag",
375375 .description = "LEA instruction needs inputs at AG stage",
376 .subfeatures = &[_]*const Feature {
376 .dependencies = &[_]*const Feature {
377377 },
378378};
379379
380380pub const feature_lwp = Feature{
381381 .name = "lwp",
382382 .description = "Enable LWP instructions",
383 .subfeatures = &[_]*const Feature {
383 .dependencies = &[_]*const Feature {
384384 },
385385};
386386
387387pub const feature_lzcnt = Feature{
388388 .name = "lzcnt",
389389 .description = "Support LZCNT instruction",
390 .subfeatures = &[_]*const Feature {
390 .dependencies = &[_]*const Feature {
391391 },
392392};
393393
394394pub const feature_falseDepsLzcntTzcnt = Feature{
395395 .name = "false-deps-lzcnt-tzcnt",
396396 .description = "LZCNT/TZCNT have a false dependency on dest register",
397 .subfeatures = &[_]*const Feature {
397 .dependencies = &[_]*const Feature {
398398 },
399399};
400400
401401pub const feature_mmx = Feature{
402402 .name = "mmx",
403403 .description = "Enable MMX instructions",
404 .subfeatures = &[_]*const Feature {
404 .dependencies = &[_]*const Feature {
405405 },
406406};
407407
408408pub const feature_movbe = Feature{
409409 .name = "movbe",
410410 .description = "Support MOVBE instruction",
411 .subfeatures = &[_]*const Feature {
411 .dependencies = &[_]*const Feature {
412412 },
413413};
414414
415415pub const feature_movdir64b = Feature{
416416 .name = "movdir64b",
417417 .description = "Support movdir64b instruction",
418 .subfeatures = &[_]*const Feature {
418 .dependencies = &[_]*const Feature {
419419 },
420420};
421421
422422pub const feature_movdiri = Feature{
423423 .name = "movdiri",
424424 .description = "Support movdiri instruction",
425 .subfeatures = &[_]*const Feature {
425 .dependencies = &[_]*const Feature {
426426 },
427427};
428428
429429pub const feature_mwaitx = Feature{
430430 .name = "mwaitx",
431431 .description = "Enable MONITORX/MWAITX timer functionality",
432 .subfeatures = &[_]*const Feature {
432 .dependencies = &[_]*const Feature {
433433 },
434434};
435435
436436pub const feature_macrofusion = Feature{
437437 .name = "macrofusion",
438438 .description = "Various instructions can be fused with conditional branches",
439 .subfeatures = &[_]*const Feature {
439 .dependencies = &[_]*const Feature {
440440 },
441441};
442442
443443pub const feature_mergeToThreewayBranch = Feature{
444444 .name = "merge-to-threeway-branch",
445445 .description = "Merge branches to a three-way conditional branch",
446 .subfeatures = &[_]*const Feature {
446 .dependencies = &[_]*const Feature {
447447 },
448448};
449449
450450pub const feature_nopl = Feature{
451451 .name = "nopl",
452452 .description = "Enable NOPL instruction",
453 .subfeatures = &[_]*const Feature {
453 .dependencies = &[_]*const Feature {
454454 },
455455};
456456
457457pub const feature_pclmul = Feature{
458458 .name = "pclmul",
459459 .description = "Enable packed carry-less multiplication instructions",
460 .subfeatures = &[_]*const Feature {
460 .dependencies = &[_]*const Feature {
461461 &feature_sse,
462462 },
463463};
......@@ -465,14 +465,14 @@ pub const feature_pclmul = Feature{
465465pub const feature_pconfig = Feature{
466466 .name = "pconfig",
467467 .description = "platform configuration instruction",
468 .subfeatures = &[_]*const Feature {
468 .dependencies = &[_]*const Feature {
469469 },
470470};
471471
472472pub const feature_avx512pf = Feature{
473473 .name = "avx512pf",
474474 .description = "Enable AVX-512 PreFetch Instructions",
475 .subfeatures = &[_]*const Feature {
475 .dependencies = &[_]*const Feature {
476476 &feature_sse,
477477 },
478478};
......@@ -480,107 +480,107 @@ pub const feature_avx512pf = Feature{
480480pub const feature_pku = Feature{
481481 .name = "pku",
482482 .description = "Enable protection keys",
483 .subfeatures = &[_]*const Feature {
483 .dependencies = &[_]*const Feature {
484484 },
485485};
486486
487487pub const feature_popcnt = Feature{
488488 .name = "popcnt",
489489 .description = "Support POPCNT instruction",
490 .subfeatures = &[_]*const Feature {
490 .dependencies = &[_]*const Feature {
491491 },
492492};
493493
494494pub const feature_falseDepsPopcnt = Feature{
495495 .name = "false-deps-popcnt",
496496 .description = "POPCNT has a false dependency on dest register",
497 .subfeatures = &[_]*const Feature {
497 .dependencies = &[_]*const Feature {
498498 },
499499};
500500
501501pub const feature_prefetchwt1 = Feature{
502502 .name = "prefetchwt1",
503503 .description = "Prefetch with Intent to Write and T1 Hint",
504 .subfeatures = &[_]*const Feature {
504 .dependencies = &[_]*const Feature {
505505 },
506506};
507507
508508pub const feature_prfchw = Feature{
509509 .name = "prfchw",
510510 .description = "Support PRFCHW instructions",
511 .subfeatures = &[_]*const Feature {
511 .dependencies = &[_]*const Feature {
512512 },
513513};
514514
515515pub const feature_ptwrite = Feature{
516516 .name = "ptwrite",
517517 .description = "Support ptwrite instruction",
518 .subfeatures = &[_]*const Feature {
518 .dependencies = &[_]*const Feature {
519519 },
520520};
521521
522522pub const feature_padShortFunctions = Feature{
523523 .name = "pad-short-functions",
524524 .description = "Pad short functions",
525 .subfeatures = &[_]*const Feature {
525 .dependencies = &[_]*const Feature {
526526 },
527527};
528528
529529pub const feature_prefer128Bit = Feature{
530530 .name = "prefer-128-bit",
531531 .description = "Prefer 128-bit AVX instructions",
532 .subfeatures = &[_]*const Feature {
532 .dependencies = &[_]*const Feature {
533533 },
534534};
535535
536536pub const feature_prefer256Bit = Feature{
537537 .name = "prefer-256-bit",
538538 .description = "Prefer 256-bit AVX instructions",
539 .subfeatures = &[_]*const Feature {
539 .dependencies = &[_]*const Feature {
540540 },
541541};
542542
543543pub const feature_rdpid = Feature{
544544 .name = "rdpid",
545545 .description = "Support RDPID instructions",
546 .subfeatures = &[_]*const Feature {
546 .dependencies = &[_]*const Feature {
547547 },
548548};
549549
550550pub const feature_rdrnd = Feature{
551551 .name = "rdrnd",
552552 .description = "Support RDRAND instruction",
553 .subfeatures = &[_]*const Feature {
553 .dependencies = &[_]*const Feature {
554554 },
555555};
556556
557557pub const feature_rdseed = Feature{
558558 .name = "rdseed",
559559 .description = "Support RDSEED instruction",
560 .subfeatures = &[_]*const Feature {
560 .dependencies = &[_]*const Feature {
561561 },
562562};
563563
564564pub const feature_rtm = Feature{
565565 .name = "rtm",
566566 .description = "Support RTM instructions",
567 .subfeatures = &[_]*const Feature {
567 .dependencies = &[_]*const Feature {
568568 },
569569};
570570
571571pub const feature_retpoline = Feature{
572572 .name = "retpoline",
573573 .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 {
575 &feature_retpolineIndirectBranches,
574 .dependencies = &[_]*const Feature {
576575 &feature_retpolineIndirectCalls,
576 &feature_retpolineIndirectBranches,
577577 },
578578};
579579
580580pub const feature_retpolineExternalThunk = Feature{
581581 .name = "retpoline-external-thunk",
582582 .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 {
584584 &feature_retpolineIndirectCalls,
585585 },
586586};
......@@ -588,28 +588,28 @@ pub const feature_retpolineExternalThunk = Feature{
588588pub const feature_retpolineIndirectBranches = Feature{
589589 .name = "retpoline-indirect-branches",
590590 .description = "Remove speculation of indirect branches from the generated code",
591 .subfeatures = &[_]*const Feature {
591 .dependencies = &[_]*const Feature {
592592 },
593593};
594594
595595pub const feature_retpolineIndirectCalls = Feature{
596596 .name = "retpoline-indirect-calls",
597597 .description = "Remove speculation of indirect calls from the generated code",
598 .subfeatures = &[_]*const Feature {
598 .dependencies = &[_]*const Feature {
599599 },
600600};
601601
602602pub const feature_sgx = Feature{
603603 .name = "sgx",
604604 .description = "Enable Software Guard Extensions",
605 .subfeatures = &[_]*const Feature {
605 .dependencies = &[_]*const Feature {
606606 },
607607};
608608
609609pub const feature_sha = Feature{
610610 .name = "sha",
611611 .description = "Enable SHA instructions",
612 .subfeatures = &[_]*const Feature {
612 .dependencies = &[_]*const Feature {
613613 &feature_sse,
614614 },
615615};
......@@ -617,21 +617,21 @@ pub const feature_sha = Feature{
617617pub const feature_shstk = Feature{
618618 .name = "shstk",
619619 .description = "Support CET Shadow-Stack instructions",
620 .subfeatures = &[_]*const Feature {
620 .dependencies = &[_]*const Feature {
621621 },
622622};
623623
624624pub const feature_sse = Feature{
625625 .name = "sse",
626626 .description = "Enable SSE instructions",
627 .subfeatures = &[_]*const Feature {
627 .dependencies = &[_]*const Feature {
628628 },
629629};
630630
631631pub const feature_sse2 = Feature{
632632 .name = "sse2",
633633 .description = "Enable SSE2 instructions",
634 .subfeatures = &[_]*const Feature {
634 .dependencies = &[_]*const Feature {
635635 &feature_sse,
636636 },
637637};
......@@ -639,7 +639,7 @@ pub const feature_sse2 = Feature{
639639pub const feature_sse3 = Feature{
640640 .name = "sse3",
641641 .description = "Enable SSE3 instructions",
642 .subfeatures = &[_]*const Feature {
642 .dependencies = &[_]*const Feature {
643643 &feature_sse,
644644 },
645645};
......@@ -647,7 +647,7 @@ pub const feature_sse3 = Feature{
647647pub const feature_sse4a = Feature{
648648 .name = "sse4a",
649649 .description = "Support SSE 4a instructions",
650 .subfeatures = &[_]*const Feature {
650 .dependencies = &[_]*const Feature {
651651 &feature_sse,
652652 },
653653};
......@@ -655,7 +655,7 @@ pub const feature_sse4a = Feature{
655655pub const feature_sse41 = Feature{
656656 .name = "sse4.1",
657657 .description = "Enable SSE 4.1 instructions",
658 .subfeatures = &[_]*const Feature {
658 .dependencies = &[_]*const Feature {
659659 &feature_sse,
660660 },
661661};
......@@ -663,7 +663,7 @@ pub const feature_sse41 = Feature{
663663pub const feature_sse42 = Feature{
664664 .name = "sse4.2",
665665 .description = "Enable SSE 4.2 instructions",
666 .subfeatures = &[_]*const Feature {
666 .dependencies = &[_]*const Feature {
667667 &feature_sse,
668668 },
669669};
......@@ -671,14 +671,14 @@ pub const feature_sse42 = Feature{
671671pub const feature_sseUnalignedMem = Feature{
672672 .name = "sse-unaligned-mem",
673673 .description = "Allow unaligned memory operands with SSE instructions",
674 .subfeatures = &[_]*const Feature {
674 .dependencies = &[_]*const Feature {
675675 },
676676};
677677
678678pub const feature_ssse3 = Feature{
679679 .name = "ssse3",
680680 .description = "Enable SSSE3 instructions",
681 .subfeatures = &[_]*const Feature {
681 .dependencies = &[_]*const Feature {
682682 &feature_sse,
683683 },
684684};
......@@ -686,105 +686,105 @@ pub const feature_ssse3 = Feature{
686686pub const feature_slow3opsLea = Feature{
687687 .name = "slow-3ops-lea",
688688 .description = "LEA instruction with 3 ops or certain registers is slow",
689 .subfeatures = &[_]*const Feature {
689 .dependencies = &[_]*const Feature {
690690 },
691691};
692692
693693pub const feature_idivlToDivb = Feature{
694694 .name = "idivl-to-divb",
695695 .description = "Use 8-bit divide for positive values less than 256",
696 .subfeatures = &[_]*const Feature {
696 .dependencies = &[_]*const Feature {
697697 },
698698};
699699
700700pub const feature_idivqToDivl = Feature{
701701 .name = "idivq-to-divl",
702702 .description = "Use 32-bit divide for positive values less than 2^32",
703 .subfeatures = &[_]*const Feature {
703 .dependencies = &[_]*const Feature {
704704 },
705705};
706706
707707pub const feature_slowIncdec = Feature{
708708 .name = "slow-incdec",
709709 .description = "INC and DEC instructions are slower than ADD and SUB",
710 .subfeatures = &[_]*const Feature {
710 .dependencies = &[_]*const Feature {
711711 },
712712};
713713
714714pub const feature_slowLea = Feature{
715715 .name = "slow-lea",
716716 .description = "LEA instruction with certain arguments is slow",
717 .subfeatures = &[_]*const Feature {
717 .dependencies = &[_]*const Feature {
718718 },
719719};
720720
721721pub const feature_slowPmaddwd = Feature{
722722 .name = "slow-pmaddwd",
723723 .description = "PMADDWD is slower than PMULLD",
724 .subfeatures = &[_]*const Feature {
724 .dependencies = &[_]*const Feature {
725725 },
726726};
727727
728728pub const feature_slowPmulld = Feature{
729729 .name = "slow-pmulld",
730730 .description = "PMULLD instruction is slow",
731 .subfeatures = &[_]*const Feature {
731 .dependencies = &[_]*const Feature {
732732 },
733733};
734734
735735pub const feature_slowShld = Feature{
736736 .name = "slow-shld",
737737 .description = "SHLD instruction is slow",
738 .subfeatures = &[_]*const Feature {
738 .dependencies = &[_]*const Feature {
739739 },
740740};
741741
742742pub const feature_slowTwoMemOps = Feature{
743743 .name = "slow-two-mem-ops",
744744 .description = "Two memory operand instructions are slow",
745 .subfeatures = &[_]*const Feature {
745 .dependencies = &[_]*const Feature {
746746 },
747747};
748748
749749pub const feature_slowUnalignedMem16 = Feature{
750750 .name = "slow-unaligned-mem-16",
751751 .description = "Slow unaligned 16-byte memory access",
752 .subfeatures = &[_]*const Feature {
752 .dependencies = &[_]*const Feature {
753753 },
754754};
755755
756756pub const feature_slowUnalignedMem32 = Feature{
757757 .name = "slow-unaligned-mem-32",
758758 .description = "Slow unaligned 32-byte memory access",
759 .subfeatures = &[_]*const Feature {
759 .dependencies = &[_]*const Feature {
760760 },
761761};
762762
763763pub const feature_softFloat = Feature{
764764 .name = "soft-float",
765765 .description = "Use software floating point features",
766 .subfeatures = &[_]*const Feature {
766 .dependencies = &[_]*const Feature {
767767 },
768768};
769769
770770pub const feature_tbm = Feature{
771771 .name = "tbm",
772772 .description = "Enable TBM instructions",
773 .subfeatures = &[_]*const Feature {
773 .dependencies = &[_]*const Feature {
774774 },
775775};
776776
777777pub const feature_useAa = Feature{
778778 .name = "use-aa",
779779 .description = "Use alias analysis during codegen",
780 .subfeatures = &[_]*const Feature {
780 .dependencies = &[_]*const Feature {
781781 },
782782};
783783
784784pub const feature_vaes = Feature{
785785 .name = "vaes",
786786 .description = "Promote selected AES instructions to AVX512/AVX registers",
787 .subfeatures = &[_]*const Feature {
787 .dependencies = &[_]*const Feature {
788788 &feature_sse,
789789 },
790790};
......@@ -792,7 +792,7 @@ pub const feature_vaes = Feature{
792792pub const feature_avx512vbmi = Feature{
793793 .name = "avx512vbmi",
794794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
795 .subfeatures = &[_]*const Feature {
795 .dependencies = &[_]*const Feature {
796796 &feature_sse,
797797 },
798798};
......@@ -800,7 +800,7 @@ pub const feature_avx512vbmi = Feature{
800800pub const feature_avx512vbmi2 = Feature{
801801 .name = "avx512vbmi2",
802802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
803 .subfeatures = &[_]*const Feature {
803 .dependencies = &[_]*const Feature {
804804 &feature_sse,
805805 },
806806};
......@@ -808,7 +808,7 @@ pub const feature_avx512vbmi2 = Feature{
808808pub const feature_avx512vl = Feature{
809809 .name = "avx512vl",
810810 .description = "Enable AVX-512 Vector Length eXtensions",
811 .subfeatures = &[_]*const Feature {
811 .dependencies = &[_]*const Feature {
812812 &feature_sse,
813813 },
814814};
......@@ -816,7 +816,7 @@ pub const feature_avx512vl = Feature{
816816pub const feature_avx512vnni = Feature{
817817 .name = "avx512vnni",
818818 .description = "Enable AVX-512 Vector Neural Network Instructions",
819 .subfeatures = &[_]*const Feature {
819 .dependencies = &[_]*const Feature {
820820 &feature_sse,
821821 },
822822};
......@@ -824,7 +824,7 @@ pub const feature_avx512vnni = Feature{
824824pub const feature_avx512vp2intersect = Feature{
825825 .name = "avx512vp2intersect",
826826 .description = "Enable AVX-512 vp2intersect",
827 .subfeatures = &[_]*const Feature {
827 .dependencies = &[_]*const Feature {
828828 &feature_sse,
829829 },
830830};
......@@ -832,7 +832,7 @@ pub const feature_avx512vp2intersect = Feature{
832832pub const feature_vpclmulqdq = Feature{
833833 .name = "vpclmulqdq",
834834 .description = "Enable vpclmulqdq instructions",
835 .subfeatures = &[_]*const Feature {
835 .dependencies = &[_]*const Feature {
836836 &feature_sse,
837837 },
838838};
......@@ -840,7 +840,7 @@ pub const feature_vpclmulqdq = Feature{
840840pub const feature_avx512vpopcntdq = Feature{
841841 .name = "avx512vpopcntdq",
842842 .description = "Enable AVX-512 Population Count Instructions",
843 .subfeatures = &[_]*const Feature {
843 .dependencies = &[_]*const Feature {
844844 &feature_sse,
845845 },
846846};
......@@ -848,28 +848,28 @@ pub const feature_avx512vpopcntdq = Feature{
848848pub const feature_waitpkg = Feature{
849849 .name = "waitpkg",
850850 .description = "Wait and pause enhancements",
851 .subfeatures = &[_]*const Feature {
851 .dependencies = &[_]*const Feature {
852852 },
853853};
854854
855855pub const feature_wbnoinvd = Feature{
856856 .name = "wbnoinvd",
857857 .description = "Write Back No Invalidate",
858 .subfeatures = &[_]*const Feature {
858 .dependencies = &[_]*const Feature {
859859 },
860860};
861861
862862pub const feature_x87 = Feature{
863863 .name = "x87",
864864 .description = "Enable X87 float instructions",
865 .subfeatures = &[_]*const Feature {
865 .dependencies = &[_]*const Feature {
866866 },
867867};
868868
869869pub const feature_xop = Feature{
870870 .name = "xop",
871871 .description = "Enable XOP instructions",
872 .subfeatures = &[_]*const Feature {
872 .dependencies = &[_]*const Feature {
873873 &feature_sse,
874874 },
875875};
......@@ -877,49 +877,49 @@ pub const feature_xop = Feature{
877877pub const feature_xsave = Feature{
878878 .name = "xsave",
879879 .description = "Support xsave instructions",
880 .subfeatures = &[_]*const Feature {
880 .dependencies = &[_]*const Feature {
881881 },
882882};
883883
884884pub const feature_xsavec = Feature{
885885 .name = "xsavec",
886886 .description = "Support xsavec instructions",
887 .subfeatures = &[_]*const Feature {
887 .dependencies = &[_]*const Feature {
888888 },
889889};
890890
891891pub const feature_xsaveopt = Feature{
892892 .name = "xsaveopt",
893893 .description = "Support xsaveopt instructions",
894 .subfeatures = &[_]*const Feature {
894 .dependencies = &[_]*const Feature {
895895 },
896896};
897897
898898pub const feature_xsaves = Feature{
899899 .name = "xsaves",
900900 .description = "Support xsaves instructions",
901 .subfeatures = &[_]*const Feature {
901 .dependencies = &[_]*const Feature {
902902 },
903903};
904904
905905pub const feature_bitMode16 = Feature{
906906 .name = "16bit-mode",
907907 .description = "16-bit mode (i8086)",
908 .subfeatures = &[_]*const Feature {
908 .dependencies = &[_]*const Feature {
909909 },
910910};
911911
912912pub const feature_bitMode32 = Feature{
913913 .name = "32bit-mode",
914914 .description = "32-bit mode (80386)",
915 .subfeatures = &[_]*const Feature {
915 .dependencies = &[_]*const Feature {
916916 },
917917};
918918
919919pub const feature_bitMode64 = Feature{
920920 .name = "64bit-mode",
921921 .description = "64-bit mode (x86_64)",
922 .subfeatures = &[_]*const Feature {
922 .dependencies = &[_]*const Feature {
923923 },
924924};
925925
......@@ -1055,7 +1055,7 @@ pub const features = &[_]*const Feature {
10551055pub const cpu_amdfam10 = Cpu{
10561056 .name = "amdfam10",
10571057 .llvm_name = "amdfam10",
1058 .subfeatures = &[_]*const Feature {
1058 .dependencies = &[_]*const Feature {
10591059 &feature_mmx,
10601060 &feature_dnowa3,
10611061 &feature_bit64,
......@@ -1078,7 +1078,7 @@ pub const cpu_amdfam10 = Cpu{
10781078pub const cpu_athlon = Cpu{
10791079 .name = "athlon",
10801080 .llvm_name = "athlon",
1081 .subfeatures = &[_]*const Feature {
1081 .dependencies = &[_]*const Feature {
10821082 &feature_mmx,
10831083 &feature_dnowa3,
10841084 &feature_cmov,
......@@ -1093,7 +1093,7 @@ pub const cpu_athlon = Cpu{
10931093pub const cpu_athlon4 = Cpu{
10941094 .name = "athlon-4",
10951095 .llvm_name = "athlon-4",
1096 .subfeatures = &[_]*const Feature {
1096 .dependencies = &[_]*const Feature {
10971097 &feature_mmx,
10981098 &feature_dnowa3,
10991099 &feature_cmov,
......@@ -1110,7 +1110,7 @@ pub const cpu_athlon4 = Cpu{
11101110pub const cpu_athlonFx = Cpu{
11111111 .name = "athlon-fx",
11121112 .llvm_name = "athlon-fx",
1113 .subfeatures = &[_]*const Feature {
1113 .dependencies = &[_]*const Feature {
11141114 &feature_mmx,
11151115 &feature_dnowa3,
11161116 &feature_bit64,
......@@ -1130,7 +1130,7 @@ pub const cpu_athlonFx = Cpu{
11301130pub const cpu_athlonMp = Cpu{
11311131 .name = "athlon-mp",
11321132 .llvm_name = "athlon-mp",
1133 .subfeatures = &[_]*const Feature {
1133 .dependencies = &[_]*const Feature {
11341134 &feature_mmx,
11351135 &feature_dnowa3,
11361136 &feature_cmov,
......@@ -1147,7 +1147,7 @@ pub const cpu_athlonMp = Cpu{
11471147pub const cpu_athlonTbird = Cpu{
11481148 .name = "athlon-tbird",
11491149 .llvm_name = "athlon-tbird",
1150 .subfeatures = &[_]*const Feature {
1150 .dependencies = &[_]*const Feature {
11511151 &feature_mmx,
11521152 &feature_dnowa3,
11531153 &feature_cmov,
......@@ -1162,7 +1162,7 @@ pub const cpu_athlonTbird = Cpu{
11621162pub const cpu_athlonXp = Cpu{
11631163 .name = "athlon-xp",
11641164 .llvm_name = "athlon-xp",
1165 .subfeatures = &[_]*const Feature {
1165 .dependencies = &[_]*const Feature {
11661166 &feature_mmx,
11671167 &feature_dnowa3,
11681168 &feature_cmov,
......@@ -1179,7 +1179,7 @@ pub const cpu_athlonXp = Cpu{
11791179pub const cpu_athlon64 = Cpu{
11801180 .name = "athlon64",
11811181 .llvm_name = "athlon64",
1182 .subfeatures = &[_]*const Feature {
1182 .dependencies = &[_]*const Feature {
11831183 &feature_mmx,
11841184 &feature_dnowa3,
11851185 &feature_bit64,
......@@ -1199,7 +1199,7 @@ pub const cpu_athlon64 = Cpu{
11991199pub const cpu_athlon64Sse3 = Cpu{
12001200 .name = "athlon64-sse3",
12011201 .llvm_name = "athlon64-sse3",
1202 .subfeatures = &[_]*const Feature {
1202 .dependencies = &[_]*const Feature {
12031203 &feature_mmx,
12041204 &feature_dnowa3,
12051205 &feature_bit64,
......@@ -1220,7 +1220,7 @@ pub const cpu_athlon64Sse3 = Cpu{
12201220pub const cpu_atom = Cpu{
12211221 .name = "atom",
12221222 .llvm_name = "atom",
1223 .subfeatures = &[_]*const Feature {
1223 .dependencies = &[_]*const Feature {
12241224 &feature_bit64,
12251225 &feature_cmov,
12261226 &feature_cx8,
......@@ -1246,7 +1246,7 @@ pub const cpu_atom = Cpu{
12461246pub const cpu_barcelona = Cpu{
12471247 .name = "barcelona",
12481248 .llvm_name = "barcelona",
1249 .subfeatures = &[_]*const Feature {
1249 .dependencies = &[_]*const Feature {
12501250 &feature_mmx,
12511251 &feature_dnowa3,
12521252 &feature_bit64,
......@@ -1269,7 +1269,7 @@ pub const cpu_barcelona = Cpu{
12691269pub const cpu_bdver1 = Cpu{
12701270 .name = "bdver1",
12711271 .llvm_name = "bdver1",
1272 .subfeatures = &[_]*const Feature {
1272 .dependencies = &[_]*const Feature {
12731273 &feature_bit64,
12741274 &feature_sse,
12751275 &feature_aes,
......@@ -1298,7 +1298,7 @@ pub const cpu_bdver1 = Cpu{
12981298pub const cpu_bdver2 = Cpu{
12991299 .name = "bdver2",
13001300 .llvm_name = "bdver2",
1301 .subfeatures = &[_]*const Feature {
1301 .dependencies = &[_]*const Feature {
13021302 &feature_bit64,
13031303 &feature_sse,
13041304 &feature_aes,
......@@ -1332,7 +1332,7 @@ pub const cpu_bdver2 = Cpu{
13321332pub const cpu_bdver3 = Cpu{
13331333 .name = "bdver3",
13341334 .llvm_name = "bdver3",
1335 .subfeatures = &[_]*const Feature {
1335 .dependencies = &[_]*const Feature {
13361336 &feature_bit64,
13371337 &feature_sse,
13381338 &feature_aes,
......@@ -1368,7 +1368,7 @@ pub const cpu_bdver3 = Cpu{
13681368pub const cpu_bdver4 = Cpu{
13691369 .name = "bdver4",
13701370 .llvm_name = "bdver4",
1371 .subfeatures = &[_]*const Feature {
1371 .dependencies = &[_]*const Feature {
13721372 &feature_bit64,
13731373 &feature_sse,
13741374 &feature_aes,
......@@ -1407,7 +1407,7 @@ pub const cpu_bdver4 = Cpu{
14071407pub const cpu_bonnell = Cpu{
14081408 .name = "bonnell",
14091409 .llvm_name = "bonnell",
1410 .subfeatures = &[_]*const Feature {
1410 .dependencies = &[_]*const Feature {
14111411 &feature_bit64,
14121412 &feature_cmov,
14131413 &feature_cx8,
......@@ -1433,7 +1433,7 @@ pub const cpu_bonnell = Cpu{
14331433pub const cpu_broadwell = Cpu{
14341434 .name = "broadwell",
14351435 .llvm_name = "broadwell",
1436 .subfeatures = &[_]*const Feature {
1436 .dependencies = &[_]*const Feature {
14371437 &feature_bit64,
14381438 &feature_adx,
14391439 &feature_sse,
......@@ -1479,7 +1479,7 @@ pub const cpu_broadwell = Cpu{
14791479pub const cpu_btver1 = Cpu{
14801480 .name = "btver1",
14811481 .llvm_name = "btver1",
1482 .subfeatures = &[_]*const Feature {
1482 .dependencies = &[_]*const Feature {
14831483 &feature_bit64,
14841484 &feature_cmov,
14851485 &feature_cx8,
......@@ -1505,7 +1505,7 @@ pub const cpu_btver1 = Cpu{
15051505pub const cpu_btver2 = Cpu{
15061506 .name = "btver2",
15071507 .llvm_name = "btver2",
1508 .subfeatures = &[_]*const Feature {
1508 .dependencies = &[_]*const Feature {
15091509 &feature_bit64,
15101510 &feature_sse,
15111511 &feature_aes,
......@@ -1543,7 +1543,7 @@ pub const cpu_btver2 = Cpu{
15431543pub const cpu_c3 = Cpu{
15441544 .name = "c3",
15451545 .llvm_name = "c3",
1546 .subfeatures = &[_]*const Feature {
1546 .dependencies = &[_]*const Feature {
15471547 &feature_mmx,
15481548 &feature_dnow3,
15491549 &feature_slowUnalignedMem16,
......@@ -1554,7 +1554,7 @@ pub const cpu_c3 = Cpu{
15541554pub const cpu_c32 = Cpu{
15551555 .name = "c3-2",
15561556 .llvm_name = "c3-2",
1557 .subfeatures = &[_]*const Feature {
1557 .dependencies = &[_]*const Feature {
15581558 &feature_cmov,
15591559 &feature_cx8,
15601560 &feature_fxsr,
......@@ -1568,7 +1568,7 @@ pub const cpu_c32 = Cpu{
15681568pub const cpu_cannonlake = Cpu{
15691569 .name = "cannonlake",
15701570 .llvm_name = "cannonlake",
1571 .subfeatures = &[_]*const Feature {
1571 .dependencies = &[_]*const Feature {
15721572 &feature_bit64,
15731573 &feature_adx,
15741574 &feature_sse,
......@@ -1629,7 +1629,7 @@ pub const cpu_cannonlake = Cpu{
16291629pub const cpu_cascadelake = Cpu{
16301630 .name = "cascadelake",
16311631 .llvm_name = "cascadelake",
1632 .subfeatures = &[_]*const Feature {
1632 .dependencies = &[_]*const Feature {
16331633 &feature_bit64,
16341634 &feature_adx,
16351635 &feature_sse,
......@@ -1689,7 +1689,7 @@ pub const cpu_cascadelake = Cpu{
16891689pub const cpu_cooperlake = Cpu{
16901690 .name = "cooperlake",
16911691 .llvm_name = "cooperlake",
1692 .subfeatures = &[_]*const Feature {
1692 .dependencies = &[_]*const Feature {
16931693 &feature_bit64,
16941694 &feature_adx,
16951695 &feature_sse,
......@@ -1750,7 +1750,7 @@ pub const cpu_cooperlake = Cpu{
17501750pub const cpu_coreAvxI = Cpu{
17511751 .name = "core-avx-i",
17521752 .llvm_name = "core-avx-i",
1753 .subfeatures = &[_]*const Feature {
1753 .dependencies = &[_]*const Feature {
17541754 &feature_bit64,
17551755 &feature_sse,
17561756 &feature_avx,
......@@ -1784,7 +1784,7 @@ pub const cpu_coreAvxI = Cpu{
17841784pub const cpu_coreAvx2 = Cpu{
17851785 .name = "core-avx2",
17861786 .llvm_name = "core-avx2",
1787 .subfeatures = &[_]*const Feature {
1787 .dependencies = &[_]*const Feature {
17881788 &feature_bit64,
17891789 &feature_sse,
17901790 &feature_avx,
......@@ -1827,7 +1827,7 @@ pub const cpu_coreAvx2 = Cpu{
18271827pub const cpu_core2 = Cpu{
18281828 .name = "core2",
18291829 .llvm_name = "core2",
1830 .subfeatures = &[_]*const Feature {
1830 .dependencies = &[_]*const Feature {
18311831 &feature_bit64,
18321832 &feature_cmov,
18331833 &feature_cx8,
......@@ -1847,7 +1847,7 @@ pub const cpu_core2 = Cpu{
18471847pub const cpu_corei7 = Cpu{
18481848 .name = "corei7",
18491849 .llvm_name = "corei7",
1850 .subfeatures = &[_]*const Feature {
1850 .dependencies = &[_]*const Feature {
18511851 &feature_bit64,
18521852 &feature_cmov,
18531853 &feature_cx8,
......@@ -1867,7 +1867,7 @@ pub const cpu_corei7 = Cpu{
18671867pub const cpu_corei7Avx = Cpu{
18681868 .name = "corei7-avx",
18691869 .llvm_name = "corei7-avx",
1870 .subfeatures = &[_]*const Feature {
1870 .dependencies = &[_]*const Feature {
18711871 &feature_bit64,
18721872 &feature_sse,
18731873 &feature_avx,
......@@ -1898,7 +1898,7 @@ pub const cpu_corei7Avx = Cpu{
18981898pub const cpu_generic = Cpu{
18991899 .name = "generic",
19001900 .llvm_name = "generic",
1901 .subfeatures = &[_]*const Feature {
1901 .dependencies = &[_]*const Feature {
19021902 &feature_cx8,
19031903 &feature_slowUnalignedMem16,
19041904 &feature_x87,
......@@ -1908,7 +1908,7 @@ pub const cpu_generic = Cpu{
19081908pub const cpu_geode = Cpu{
19091909 .name = "geode",
19101910 .llvm_name = "geode",
1911 .subfeatures = &[_]*const Feature {
1911 .dependencies = &[_]*const Feature {
19121912 &feature_mmx,
19131913 &feature_dnowa3,
19141914 &feature_cx8,
......@@ -1920,7 +1920,7 @@ pub const cpu_geode = Cpu{
19201920pub const cpu_goldmont = Cpu{
19211921 .name = "goldmont",
19221922 .llvm_name = "goldmont",
1923 .subfeatures = &[_]*const Feature {
1923 .dependencies = &[_]*const Feature {
19241924 &feature_bit64,
19251925 &feature_sse,
19261926 &feature_aes,
......@@ -1957,7 +1957,7 @@ pub const cpu_goldmont = Cpu{
19571957pub const cpu_goldmontPlus = Cpu{
19581958 .name = "goldmont-plus",
19591959 .llvm_name = "goldmont-plus",
1960 .subfeatures = &[_]*const Feature {
1960 .dependencies = &[_]*const Feature {
19611961 &feature_bit64,
19621962 &feature_sse,
19631963 &feature_aes,
......@@ -1996,7 +1996,7 @@ pub const cpu_goldmontPlus = Cpu{
19961996pub const cpu_haswell = Cpu{
19971997 .name = "haswell",
19981998 .llvm_name = "haswell",
1999 .subfeatures = &[_]*const Feature {
1999 .dependencies = &[_]*const Feature {
20002000 &feature_bit64,
20012001 &feature_sse,
20022002 &feature_avx,
......@@ -2039,7 +2039,7 @@ pub const cpu_haswell = Cpu{
20392039pub const cpu_i386 = Cpu{
20402040 .name = "i386",
20412041 .llvm_name = "i386",
2042 .subfeatures = &[_]*const Feature {
2042 .dependencies = &[_]*const Feature {
20432043 &feature_slowUnalignedMem16,
20442044 &feature_x87,
20452045 },
......@@ -2048,7 +2048,7 @@ pub const cpu_i386 = Cpu{
20482048pub const cpu_i486 = Cpu{
20492049 .name = "i486",
20502050 .llvm_name = "i486",
2051 .subfeatures = &[_]*const Feature {
2051 .dependencies = &[_]*const Feature {
20522052 &feature_slowUnalignedMem16,
20532053 &feature_x87,
20542054 },
......@@ -2057,7 +2057,7 @@ pub const cpu_i486 = Cpu{
20572057pub const cpu_i586 = Cpu{
20582058 .name = "i586",
20592059 .llvm_name = "i586",
2060 .subfeatures = &[_]*const Feature {
2060 .dependencies = &[_]*const Feature {
20612061 &feature_cx8,
20622062 &feature_slowUnalignedMem16,
20632063 &feature_x87,
......@@ -2067,7 +2067,7 @@ pub const cpu_i586 = Cpu{
20672067pub const cpu_i686 = Cpu{
20682068 .name = "i686",
20692069 .llvm_name = "i686",
2070 .subfeatures = &[_]*const Feature {
2070 .dependencies = &[_]*const Feature {
20712071 &feature_cmov,
20722072 &feature_cx8,
20732073 &feature_slowUnalignedMem16,
......@@ -2078,7 +2078,7 @@ pub const cpu_i686 = Cpu{
20782078pub const cpu_icelakeClient = Cpu{
20792079 .name = "icelake-client",
20802080 .llvm_name = "icelake-client",
2081 .subfeatures = &[_]*const Feature {
2081 .dependencies = &[_]*const Feature {
20822082 &feature_bit64,
20832083 &feature_adx,
20842084 &feature_sse,
......@@ -2148,7 +2148,7 @@ pub const cpu_icelakeClient = Cpu{
21482148pub const cpu_icelakeServer = Cpu{
21492149 .name = "icelake-server",
21502150 .llvm_name = "icelake-server",
2151 .subfeatures = &[_]*const Feature {
2151 .dependencies = &[_]*const Feature {
21522152 &feature_bit64,
21532153 &feature_adx,
21542154 &feature_sse,
......@@ -2220,7 +2220,7 @@ pub const cpu_icelakeServer = Cpu{
22202220pub const cpu_ivybridge = Cpu{
22212221 .name = "ivybridge",
22222222 .llvm_name = "ivybridge",
2223 .subfeatures = &[_]*const Feature {
2223 .dependencies = &[_]*const Feature {
22242224 &feature_bit64,
22252225 &feature_sse,
22262226 &feature_avx,
......@@ -2254,7 +2254,7 @@ pub const cpu_ivybridge = Cpu{
22542254pub const cpu_k6 = Cpu{
22552255 .name = "k6",
22562256 .llvm_name = "k6",
2257 .subfeatures = &[_]*const Feature {
2257 .dependencies = &[_]*const Feature {
22582258 &feature_cx8,
22592259 &feature_mmx,
22602260 &feature_slowUnalignedMem16,
......@@ -2265,7 +2265,7 @@ pub const cpu_k6 = Cpu{
22652265pub const cpu_k62 = Cpu{
22662266 .name = "k6-2",
22672267 .llvm_name = "k6-2",
2268 .subfeatures = &[_]*const Feature {
2268 .dependencies = &[_]*const Feature {
22692269 &feature_mmx,
22702270 &feature_dnow3,
22712271 &feature_cx8,
......@@ -2277,7 +2277,7 @@ pub const cpu_k62 = Cpu{
22772277pub const cpu_k63 = Cpu{
22782278 .name = "k6-3",
22792279 .llvm_name = "k6-3",
2280 .subfeatures = &[_]*const Feature {
2280 .dependencies = &[_]*const Feature {
22812281 &feature_mmx,
22822282 &feature_dnow3,
22832283 &feature_cx8,
......@@ -2289,7 +2289,7 @@ pub const cpu_k63 = Cpu{
22892289pub const cpu_k8 = Cpu{
22902290 .name = "k8",
22912291 .llvm_name = "k8",
2292 .subfeatures = &[_]*const Feature {
2292 .dependencies = &[_]*const Feature {
22932293 &feature_mmx,
22942294 &feature_dnowa3,
22952295 &feature_bit64,
......@@ -2309,7 +2309,7 @@ pub const cpu_k8 = Cpu{
23092309pub const cpu_k8Sse3 = Cpu{
23102310 .name = "k8-sse3",
23112311 .llvm_name = "k8-sse3",
2312 .subfeatures = &[_]*const Feature {
2312 .dependencies = &[_]*const Feature {
23132313 &feature_mmx,
23142314 &feature_dnowa3,
23152315 &feature_bit64,
......@@ -2330,7 +2330,7 @@ pub const cpu_k8Sse3 = Cpu{
23302330pub const cpu_knl = Cpu{
23312331 .name = "knl",
23322332 .llvm_name = "knl",
2333 .subfeatures = &[_]*const Feature {
2333 .dependencies = &[_]*const Feature {
23342334 &feature_bit64,
23352335 &feature_adx,
23362336 &feature_sse,
......@@ -2375,7 +2375,7 @@ pub const cpu_knl = Cpu{
23752375pub const cpu_knm = Cpu{
23762376 .name = "knm",
23772377 .llvm_name = "knm",
2378 .subfeatures = &[_]*const Feature {
2378 .dependencies = &[_]*const Feature {
23792379 &feature_bit64,
23802380 &feature_adx,
23812381 &feature_sse,
......@@ -2421,14 +2421,14 @@ pub const cpu_knm = Cpu{
24212421pub const cpu_lakemont = Cpu{
24222422 .name = "lakemont",
24232423 .llvm_name = "lakemont",
2424 .subfeatures = &[_]*const Feature {
2424 .dependencies = &[_]*const Feature {
24252425 },
24262426};
24272427
24282428pub const cpu_nehalem = Cpu{
24292429 .name = "nehalem",
24302430 .llvm_name = "nehalem",
2431 .subfeatures = &[_]*const Feature {
2431 .dependencies = &[_]*const Feature {
24322432 &feature_bit64,
24332433 &feature_cmov,
24342434 &feature_cx8,
......@@ -2448,7 +2448,7 @@ pub const cpu_nehalem = Cpu{
24482448pub const cpu_nocona = Cpu{
24492449 .name = "nocona",
24502450 .llvm_name = "nocona",
2451 .subfeatures = &[_]*const Feature {
2451 .dependencies = &[_]*const Feature {
24522452 &feature_bit64,
24532453 &feature_cmov,
24542454 &feature_cx8,
......@@ -2466,7 +2466,7 @@ pub const cpu_nocona = Cpu{
24662466pub const cpu_opteron = Cpu{
24672467 .name = "opteron",
24682468 .llvm_name = "opteron",
2469 .subfeatures = &[_]*const Feature {
2469 .dependencies = &[_]*const Feature {
24702470 &feature_mmx,
24712471 &feature_dnowa3,
24722472 &feature_bit64,
......@@ -2486,7 +2486,7 @@ pub const cpu_opteron = Cpu{
24862486pub const cpu_opteronSse3 = Cpu{
24872487 .name = "opteron-sse3",
24882488 .llvm_name = "opteron-sse3",
2489 .subfeatures = &[_]*const Feature {
2489 .dependencies = &[_]*const Feature {
24902490 &feature_mmx,
24912491 &feature_dnowa3,
24922492 &feature_bit64,
......@@ -2507,7 +2507,7 @@ pub const cpu_opteronSse3 = Cpu{
25072507pub const cpu_penryn = Cpu{
25082508 .name = "penryn",
25092509 .llvm_name = "penryn",
2510 .subfeatures = &[_]*const Feature {
2510 .dependencies = &[_]*const Feature {
25112511 &feature_bit64,
25122512 &feature_cmov,
25132513 &feature_cx8,
......@@ -2527,7 +2527,7 @@ pub const cpu_penryn = Cpu{
25272527pub const cpu_pentium = Cpu{
25282528 .name = "pentium",
25292529 .llvm_name = "pentium",
2530 .subfeatures = &[_]*const Feature {
2530 .dependencies = &[_]*const Feature {
25312531 &feature_cx8,
25322532 &feature_slowUnalignedMem16,
25332533 &feature_x87,
......@@ -2537,7 +2537,7 @@ pub const cpu_pentium = Cpu{
25372537pub const cpu_pentiumM = Cpu{
25382538 .name = "pentium-m",
25392539 .llvm_name = "pentium-m",
2540 .subfeatures = &[_]*const Feature {
2540 .dependencies = &[_]*const Feature {
25412541 &feature_cmov,
25422542 &feature_cx8,
25432543 &feature_fxsr,
......@@ -2553,7 +2553,7 @@ pub const cpu_pentiumM = Cpu{
25532553pub const cpu_pentiumMmx = Cpu{
25542554 .name = "pentium-mmx",
25552555 .llvm_name = "pentium-mmx",
2556 .subfeatures = &[_]*const Feature {
2556 .dependencies = &[_]*const Feature {
25572557 &feature_cx8,
25582558 &feature_mmx,
25592559 &feature_slowUnalignedMem16,
......@@ -2564,7 +2564,7 @@ pub const cpu_pentiumMmx = Cpu{
25642564pub const cpu_pentium2 = Cpu{
25652565 .name = "pentium2",
25662566 .llvm_name = "pentium2",
2567 .subfeatures = &[_]*const Feature {
2567 .dependencies = &[_]*const Feature {
25682568 &feature_cmov,
25692569 &feature_cx8,
25702570 &feature_fxsr,
......@@ -2578,7 +2578,7 @@ pub const cpu_pentium2 = Cpu{
25782578pub const cpu_pentium3 = Cpu{
25792579 .name = "pentium3",
25802580 .llvm_name = "pentium3",
2581 .subfeatures = &[_]*const Feature {
2581 .dependencies = &[_]*const Feature {
25822582 &feature_cmov,
25832583 &feature_cx8,
25842584 &feature_fxsr,
......@@ -2593,7 +2593,7 @@ pub const cpu_pentium3 = Cpu{
25932593pub const cpu_pentium3m = Cpu{
25942594 .name = "pentium3m",
25952595 .llvm_name = "pentium3m",
2596 .subfeatures = &[_]*const Feature {
2596 .dependencies = &[_]*const Feature {
25972597 &feature_cmov,
25982598 &feature_cx8,
25992599 &feature_fxsr,
......@@ -2608,7 +2608,7 @@ pub const cpu_pentium3m = Cpu{
26082608pub const cpu_pentium4 = Cpu{
26092609 .name = "pentium4",
26102610 .llvm_name = "pentium4",
2611 .subfeatures = &[_]*const Feature {
2611 .dependencies = &[_]*const Feature {
26122612 &feature_cmov,
26132613 &feature_cx8,
26142614 &feature_fxsr,
......@@ -2624,7 +2624,7 @@ pub const cpu_pentium4 = Cpu{
26242624pub const cpu_pentium4m = Cpu{
26252625 .name = "pentium4m",
26262626 .llvm_name = "pentium4m",
2627 .subfeatures = &[_]*const Feature {
2627 .dependencies = &[_]*const Feature {
26282628 &feature_cmov,
26292629 &feature_cx8,
26302630 &feature_fxsr,
......@@ -2640,7 +2640,7 @@ pub const cpu_pentium4m = Cpu{
26402640pub const cpu_pentiumpro = Cpu{
26412641 .name = "pentiumpro",
26422642 .llvm_name = "pentiumpro",
2643 .subfeatures = &[_]*const Feature {
2643 .dependencies = &[_]*const Feature {
26442644 &feature_cmov,
26452645 &feature_cx8,
26462646 &feature_nopl,
......@@ -2652,7 +2652,7 @@ pub const cpu_pentiumpro = Cpu{
26522652pub const cpu_prescott = Cpu{
26532653 .name = "prescott",
26542654 .llvm_name = "prescott",
2655 .subfeatures = &[_]*const Feature {
2655 .dependencies = &[_]*const Feature {
26562656 &feature_cmov,
26572657 &feature_cx8,
26582658 &feature_fxsr,
......@@ -2668,7 +2668,7 @@ pub const cpu_prescott = Cpu{
26682668pub const cpu_sandybridge = Cpu{
26692669 .name = "sandybridge",
26702670 .llvm_name = "sandybridge",
2671 .subfeatures = &[_]*const Feature {
2671 .dependencies = &[_]*const Feature {
26722672 &feature_bit64,
26732673 &feature_sse,
26742674 &feature_avx,
......@@ -2699,7 +2699,7 @@ pub const cpu_sandybridge = Cpu{
26992699pub const cpu_silvermont = Cpu{
27002700 .name = "silvermont",
27012701 .llvm_name = "silvermont",
2702 .subfeatures = &[_]*const Feature {
2702 .dependencies = &[_]*const Feature {
27032703 &feature_bit64,
27042704 &feature_cmov,
27052705 &feature_cx8,
......@@ -2729,7 +2729,7 @@ pub const cpu_silvermont = Cpu{
27292729pub const cpu_skx = Cpu{
27302730 .name = "skx",
27312731 .llvm_name = "skx",
2732 .subfeatures = &[_]*const Feature {
2732 .dependencies = &[_]*const Feature {
27332733 &feature_bit64,
27342734 &feature_adx,
27352735 &feature_sse,
......@@ -2788,7 +2788,7 @@ pub const cpu_skx = Cpu{
27882788pub const cpu_skylake = Cpu{
27892789 .name = "skylake",
27902790 .llvm_name = "skylake",
2791 .subfeatures = &[_]*const Feature {
2791 .dependencies = &[_]*const Feature {
27922792 &feature_bit64,
27932793 &feature_adx,
27942794 &feature_sse,
......@@ -2840,7 +2840,7 @@ pub const cpu_skylake = Cpu{
28402840pub const cpu_skylakeAvx512 = Cpu{
28412841 .name = "skylake-avx512",
28422842 .llvm_name = "skylake-avx512",
2843 .subfeatures = &[_]*const Feature {
2843 .dependencies = &[_]*const Feature {
28442844 &feature_bit64,
28452845 &feature_adx,
28462846 &feature_sse,
......@@ -2899,7 +2899,7 @@ pub const cpu_skylakeAvx512 = Cpu{
28992899pub const cpu_slm = Cpu{
29002900 .name = "slm",
29012901 .llvm_name = "slm",
2902 .subfeatures = &[_]*const Feature {
2902 .dependencies = &[_]*const Feature {
29032903 &feature_bit64,
29042904 &feature_cmov,
29052905 &feature_cx8,
......@@ -2929,7 +2929,7 @@ pub const cpu_slm = Cpu{
29292929pub const cpu_tigerlake = Cpu{
29302930 .name = "tigerlake",
29312931 .llvm_name = "tigerlake",
2932 .subfeatures = &[_]*const Feature {
2932 .dependencies = &[_]*const Feature {
29332933 &feature_bit64,
29342934 &feature_adx,
29352935 &feature_sse,
......@@ -3003,7 +3003,7 @@ pub const cpu_tigerlake = Cpu{
30033003pub const cpu_tremont = Cpu{
30043004 .name = "tremont",
30053005 .llvm_name = "tremont",
3006 .subfeatures = &[_]*const Feature {
3006 .dependencies = &[_]*const Feature {
30073007 &feature_bit64,
30083008 &feature_sse,
30093009 &feature_aes,
......@@ -3047,7 +3047,7 @@ pub const cpu_tremont = Cpu{
30473047pub const cpu_westmere = Cpu{
30483048 .name = "westmere",
30493049 .llvm_name = "westmere",
3050 .subfeatures = &[_]*const Feature {
3050 .dependencies = &[_]*const Feature {
30513051 &feature_bit64,
30523052 &feature_cmov,
30533053 &feature_cx8,
......@@ -3068,7 +3068,7 @@ pub const cpu_westmere = Cpu{
30683068pub const cpu_winchipC6 = Cpu{
30693069 .name = "winchip-c6",
30703070 .llvm_name = "winchip-c6",
3071 .subfeatures = &[_]*const Feature {
3071 .dependencies = &[_]*const Feature {
30723072 &feature_mmx,
30733073 &feature_slowUnalignedMem16,
30743074 &feature_x87,
......@@ -3078,7 +3078,7 @@ pub const cpu_winchipC6 = Cpu{
30783078pub const cpu_winchip2 = Cpu{
30793079 .name = "winchip2",
30803080 .llvm_name = "winchip2",
3081 .subfeatures = &[_]*const Feature {
3081 .dependencies = &[_]*const Feature {
30823082 &feature_mmx,
30833083 &feature_dnow3,
30843084 &feature_slowUnalignedMem16,
......@@ -3089,7 +3089,7 @@ pub const cpu_winchip2 = Cpu{
30893089pub const cpu_x8664 = Cpu{
30903090 .name = "x86-64",
30913091 .llvm_name = "x86-64",
3092 .subfeatures = &[_]*const Feature {
3092 .dependencies = &[_]*const Feature {
30933093 &feature_bit64,
30943094 &feature_cmov,
30953095 &feature_cx8,
......@@ -3108,7 +3108,7 @@ pub const cpu_x8664 = Cpu{
31083108pub const cpu_yonah = Cpu{
31093109 .name = "yonah",
31103110 .llvm_name = "yonah",
3111 .subfeatures = &[_]*const Feature {
3111 .dependencies = &[_]*const Feature {
31123112 &feature_cmov,
31133113 &feature_cx8,
31143114 &feature_fxsr,
......@@ -3124,7 +3124,7 @@ pub const cpu_yonah = Cpu{
31243124pub const cpu_znver1 = Cpu{
31253125 .name = "znver1",
31263126 .llvm_name = "znver1",
3127 .subfeatures = &[_]*const Feature {
3127 .dependencies = &[_]*const Feature {
31283128 &feature_bit64,
31293129 &feature_adx,
31303130 &feature_sse,
......@@ -3171,7 +3171,7 @@ pub const cpu_znver1 = Cpu{
31713171pub const cpu_znver2 = Cpu{
31723172 .name = "znver2",
31733173 .llvm_name = "znver2",
3174 .subfeatures = &[_]*const Feature {
3174 .dependencies = &[_]*const Feature {
31753175 &feature_bit64,
31763176 &feature_adx,
31773177 &feature_sse,
src/main.cpp+6-6
......@@ -135,7 +135,7 @@ static int print_full_usage(const char *arg0, FILE *file, int return_code) {
135135 "Targets Options:\n"
136136 " --list-features [arch] list available features for the given architecture\n"
137137 " --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"
139139 , arg0);
140140 return return_code;
141141}
......@@ -540,7 +540,7 @@ int main(int argc, char **argv) {
540540
541541 const char *targets_list_features_arch = nullptr;
542542 const char *targets_list_cpus_arch = nullptr;
543 bool targets_show_subfeatures = false;
543 bool targets_show_dependencies = false;
544544
545545 ZigList<const char *> llvm_argv = {0};
546546 llvm_argv.append("zig (LLVM option parsing)");
......@@ -792,8 +792,8 @@ int main(int argc, char **argv) {
792792 cur_pkg = cur_pkg->parent;
793793 } else if (strcmp(arg, "-ffunction-sections") == 0) {
794794 function_sections = true;
795 } else if (strcmp(arg, "--show-subfeatures") == 0) {
796 targets_show_subfeatures = true;
795 } else if (strcmp(arg, "--show-dependencies") == 0) {
796 targets_show_dependencies = true;
797797 } else if (i + 1 >= argc) {
798798 fprintf(stderr, "Expected another argument after %s\n", arg);
799799 return print_error_usage(arg0);
......@@ -1448,13 +1448,13 @@ int main(int argc, char **argv) {
14481448 stage2_list_features_for_arch(
14491449 targets_list_features_arch,
14501450 strlen(targets_list_features_arch),
1451 targets_show_subfeatures);
1451 targets_show_dependencies);
14521452 return 0;
14531453 } else if (targets_list_cpus_arch != nullptr) {
14541454 stage2_list_cpus_for_arch(
14551455 targets_list_cpus_arch,
14561456 strlen(targets_list_cpus_arch),
1457 targets_show_subfeatures);
1457 targets_show_dependencies);
14581458 return 0;
14591459 } else {
14601460 return print_target_list(stdout);