authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2019-12-20 20:07:29-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
logc8f1e0d6d8f3ccfa952e9612903783baa9b2c12f
treebf2d3b89fb8475715caa14d5e2b3cffcf85b3a92
parentc131e50ea7ea0fb95d188c3d0f71ef77bcc96952
signaturelock-open Commit is signed but in an unrecognized format.

Remove llvm_name from features


16 files changed, 3246 insertions(+), 4072 deletions(-)

lib/std/target.zig-1
......@@ -861,7 +861,6 @@ pub const x86 = @import("target/x86.zig");
861861pub const Feature = struct {
862862 name: []const u8,
863863 description: []const u8,
864 llvm_name: []const u8,
865864
866865 subfeatures: []*const Feature,
867866};
lib/std/target/aarch64.zig+418-571
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_aes = Feature{
55 .name = "aes",
66 .description = "Enable AES support",
7 .llvm_name = "aes",
87 .subfeatures = &[_]*const Feature {
98 &feature_fpArmv8,
109 },
......@@ -13,7 +12,6 @@ pub const feature_aes = Feature{
1312pub const feature_am = Feature{
1413 .name = "am",
1514 .description = "Enable v8.4-A Activity Monitors extension",
16 .llvm_name = "am",
1715 .subfeatures = &[_]*const Feature {
1816 },
1917};
......@@ -21,7 +19,6 @@ pub const feature_am = Feature{
2119pub const feature_aggressiveFma = Feature{
2220 .name = "aggressive-fma",
2321 .description = "Enable Aggressive FMA for floating-point.",
24 .llvm_name = "aggressive-fma",
2522 .subfeatures = &[_]*const Feature {
2623 },
2724};
......@@ -29,7 +26,6 @@ pub const feature_aggressiveFma = Feature{
2926pub const feature_altnzcv = Feature{
3027 .name = "altnzcv",
3128 .description = "Enable alternative NZCV format for floating point comparisons",
32 .llvm_name = "altnzcv",
3329 .subfeatures = &[_]*const Feature {
3430 },
3531};
......@@ -37,7 +33,6 @@ pub const feature_altnzcv = Feature{
3733pub const feature_alternateSextloadCvtF32Pattern = Feature{
3834 .name = "alternate-sextload-cvt-f32-pattern",
3935 .description = "Use alternative pattern for sextload convert to f32",
40 .llvm_name = "alternate-sextload-cvt-f32-pattern",
4136 .subfeatures = &[_]*const Feature {
4237 },
4338};
......@@ -45,7 +40,6 @@ pub const feature_alternateSextloadCvtF32Pattern = Feature{
4540pub const feature_arithBccFusion = Feature{
4641 .name = "arith-bcc-fusion",
4742 .description = "CPU fuses arithmetic+bcc operations",
48 .llvm_name = "arith-bcc-fusion",
4943 .subfeatures = &[_]*const Feature {
5044 },
5145};
......@@ -53,7 +47,6 @@ pub const feature_arithBccFusion = Feature{
5347pub const feature_arithCbzFusion = Feature{
5448 .name = "arith-cbz-fusion",
5549 .description = "CPU fuses arithmetic + cbz/cbnz operations",
56 .llvm_name = "arith-cbz-fusion",
5750 .subfeatures = &[_]*const Feature {
5851 },
5952};
......@@ -61,7 +54,6 @@ pub const feature_arithCbzFusion = Feature{
6154pub const feature_balanceFpOps = Feature{
6255 .name = "balance-fp-ops",
6356 .description = "balance mix of odd and even D-registers for fp multiply(-accumulate) ops",
64 .llvm_name = "balance-fp-ops",
6557 .subfeatures = &[_]*const Feature {
6658 },
6759};
......@@ -69,7 +61,6 @@ pub const feature_balanceFpOps = Feature{
6961pub const feature_bti = Feature{
7062 .name = "bti",
7163 .description = "Enable Branch Target Identification",
72 .llvm_name = "bti",
7364 .subfeatures = &[_]*const Feature {
7465 },
7566};
......@@ -77,7 +68,6 @@ pub const feature_bti = Feature{
7768pub const feature_ccidx = Feature{
7869 .name = "ccidx",
7970 .description = "Enable v8.3-A Extend of the CCSIDR number of sets",
80 .llvm_name = "ccidx",
8171 .subfeatures = &[_]*const Feature {
8272 },
8373};
......@@ -85,7 +75,6 @@ pub const feature_ccidx = Feature{
8575pub const feature_ccpp = Feature{
8676 .name = "ccpp",
8777 .description = "Enable v8.2 data Cache Clean to Point of Persistence",
88 .llvm_name = "ccpp",
8978 .subfeatures = &[_]*const Feature {
9079 },
9180};
......@@ -93,7 +82,6 @@ pub const feature_ccpp = Feature{
9382pub const feature_crc = Feature{
9483 .name = "crc",
9584 .description = "Enable ARMv8 CRC-32 checksum instructions",
96 .llvm_name = "crc",
9785 .subfeatures = &[_]*const Feature {
9886 },
9987};
......@@ -101,7 +89,6 @@ pub const feature_crc = Feature{
10189pub const feature_ccdp = Feature{
10290 .name = "ccdp",
10391 .description = "Enable v8.5 Cache Clean to Point of Deep Persistence",
104 .llvm_name = "ccdp",
10592 .subfeatures = &[_]*const Feature {
10693 },
10794};
......@@ -109,7 +96,6 @@ pub const feature_ccdp = Feature{
10996pub const feature_callSavedX8 = Feature{
11097 .name = "call-saved-x8",
11198 .description = "Make X8 callee saved.",
112 .llvm_name = "call-saved-x8",
11399 .subfeatures = &[_]*const Feature {
114100 },
115101};
......@@ -117,7 +103,6 @@ pub const feature_callSavedX8 = Feature{
117103pub const feature_callSavedX9 = Feature{
118104 .name = "call-saved-x9",
119105 .description = "Make X9 callee saved.",
120 .llvm_name = "call-saved-x9",
121106 .subfeatures = &[_]*const Feature {
122107 },
123108};
......@@ -125,7 +110,6 @@ pub const feature_callSavedX9 = Feature{
125110pub const feature_callSavedX10 = Feature{
126111 .name = "call-saved-x10",
127112 .description = "Make X10 callee saved.",
128 .llvm_name = "call-saved-x10",
129113 .subfeatures = &[_]*const Feature {
130114 },
131115};
......@@ -133,7 +117,6 @@ pub const feature_callSavedX10 = Feature{
133117pub const feature_callSavedX11 = Feature{
134118 .name = "call-saved-x11",
135119 .description = "Make X11 callee saved.",
136 .llvm_name = "call-saved-x11",
137120 .subfeatures = &[_]*const Feature {
138121 },
139122};
......@@ -141,7 +124,6 @@ pub const feature_callSavedX11 = Feature{
141124pub const feature_callSavedX12 = Feature{
142125 .name = "call-saved-x12",
143126 .description = "Make X12 callee saved.",
144 .llvm_name = "call-saved-x12",
145127 .subfeatures = &[_]*const Feature {
146128 },
147129};
......@@ -149,7 +131,6 @@ pub const feature_callSavedX12 = Feature{
149131pub const feature_callSavedX13 = Feature{
150132 .name = "call-saved-x13",
151133 .description = "Make X13 callee saved.",
152 .llvm_name = "call-saved-x13",
153134 .subfeatures = &[_]*const Feature {
154135 },
155136};
......@@ -157,7 +138,6 @@ pub const feature_callSavedX13 = Feature{
157138pub const feature_callSavedX14 = Feature{
158139 .name = "call-saved-x14",
159140 .description = "Make X14 callee saved.",
160 .llvm_name = "call-saved-x14",
161141 .subfeatures = &[_]*const Feature {
162142 },
163143};
......@@ -165,7 +145,6 @@ pub const feature_callSavedX14 = Feature{
165145pub const feature_callSavedX15 = Feature{
166146 .name = "call-saved-x15",
167147 .description = "Make X15 callee saved.",
168 .llvm_name = "call-saved-x15",
169148 .subfeatures = &[_]*const Feature {
170149 },
171150};
......@@ -173,7 +152,6 @@ pub const feature_callSavedX15 = Feature{
173152pub const feature_callSavedX18 = Feature{
174153 .name = "call-saved-x18",
175154 .description = "Make X18 callee saved.",
176 .llvm_name = "call-saved-x18",
177155 .subfeatures = &[_]*const Feature {
178156 },
179157};
......@@ -181,7 +159,6 @@ pub const feature_callSavedX18 = Feature{
181159pub const feature_complxnum = Feature{
182160 .name = "complxnum",
183161 .description = "Enable v8.3-A Floating-point complex number support",
184 .llvm_name = "complxnum",
185162 .subfeatures = &[_]*const Feature {
186163 &feature_fpArmv8,
187164 },
......@@ -190,7 +167,6 @@ pub const feature_complxnum = Feature{
190167pub const feature_crypto = Feature{
191168 .name = "crypto",
192169 .description = "Enable cryptographic instructions",
193 .llvm_name = "crypto",
194170 .subfeatures = &[_]*const Feature {
195171 &feature_fpArmv8,
196172 },
......@@ -199,7 +175,6 @@ pub const feature_crypto = Feature{
199175pub const feature_customCheapAsMove = Feature{
200176 .name = "custom-cheap-as-move",
201177 .description = "Use custom handling of cheap instructions",
202 .llvm_name = "custom-cheap-as-move",
203178 .subfeatures = &[_]*const Feature {
204179 },
205180};
......@@ -207,7 +182,6 @@ pub const feature_customCheapAsMove = Feature{
207182pub const feature_dit = Feature{
208183 .name = "dit",
209184 .description = "Enable v8.4-A Data Independent Timing instructions",
210 .llvm_name = "dit",
211185 .subfeatures = &[_]*const Feature {
212186 },
213187};
......@@ -215,7 +189,6 @@ pub const feature_dit = Feature{
215189pub const feature_disableLatencySchedHeuristic = Feature{
216190 .name = "disable-latency-sched-heuristic",
217191 .description = "Disable latency scheduling heuristic",
218 .llvm_name = "disable-latency-sched-heuristic",
219192 .subfeatures = &[_]*const Feature {
220193 },
221194};
......@@ -223,7 +196,6 @@ pub const feature_disableLatencySchedHeuristic = Feature{
223196pub const feature_dotprod = Feature{
224197 .name = "dotprod",
225198 .description = "Enable dot product support",
226 .llvm_name = "dotprod",
227199 .subfeatures = &[_]*const Feature {
228200 },
229201};
......@@ -231,7 +203,6 @@ pub const feature_dotprod = Feature{
231203pub const feature_ete = Feature{
232204 .name = "ete",
233205 .description = "Enable Embedded Trace Extension",
234 .llvm_name = "ete",
235206 .subfeatures = &[_]*const Feature {
236207 &feature_trbe,
237208 },
......@@ -240,7 +211,6 @@ pub const feature_ete = Feature{
240211pub const feature_exynosCheapAsMove = Feature{
241212 .name = "exynos-cheap-as-move",
242213 .description = "Use Exynos specific handling of cheap instructions",
243 .llvm_name = "exynos-cheap-as-move",
244214 .subfeatures = &[_]*const Feature {
245215 &feature_customCheapAsMove,
246216 },
......@@ -249,7 +219,6 @@ pub const feature_exynosCheapAsMove = Feature{
249219pub const feature_fmi = Feature{
250220 .name = "fmi",
251221 .description = "Enable v8.4-A Flag Manipulation Instructions",
252 .llvm_name = "fmi",
253222 .subfeatures = &[_]*const Feature {
254223 },
255224};
......@@ -257,7 +226,6 @@ pub const feature_fmi = Feature{
257226pub const feature_fp16fml = Feature{
258227 .name = "fp16fml",
259228 .description = "Enable FP16 FML instructions",
260 .llvm_name = "fp16fml",
261229 .subfeatures = &[_]*const Feature {
262230 &feature_fpArmv8,
263231 },
......@@ -266,7 +234,6 @@ pub const feature_fp16fml = Feature{
266234pub const feature_fpArmv8 = Feature{
267235 .name = "fp-armv8",
268236 .description = "Enable ARMv8 FP",
269 .llvm_name = "fp-armv8",
270237 .subfeatures = &[_]*const Feature {
271238 },
272239};
......@@ -274,7 +241,6 @@ pub const feature_fpArmv8 = Feature{
274241pub const feature_fptoint = Feature{
275242 .name = "fptoint",
276243 .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",
277 .llvm_name = "fptoint",
278244 .subfeatures = &[_]*const Feature {
279245 },
280246};
......@@ -282,7 +248,6 @@ pub const feature_fptoint = Feature{
282248pub const feature_force32bitJumpTables = Feature{
283249 .name = "force-32bit-jump-tables",
284250 .description = "Force jump table entries to be 32-bits wide except at MinSize",
285 .llvm_name = "force-32bit-jump-tables",
286251 .subfeatures = &[_]*const Feature {
287252 },
288253};
......@@ -290,7 +255,6 @@ pub const feature_force32bitJumpTables = Feature{
290255pub const feature_fullfp16 = Feature{
291256 .name = "fullfp16",
292257 .description = "Full FP16",
293 .llvm_name = "fullfp16",
294258 .subfeatures = &[_]*const Feature {
295259 &feature_fpArmv8,
296260 },
......@@ -299,7 +263,6 @@ pub const feature_fullfp16 = Feature{
299263pub const feature_fuseAes = Feature{
300264 .name = "fuse-aes",
301265 .description = "CPU fuses AES crypto operations",
302 .llvm_name = "fuse-aes",
303266 .subfeatures = &[_]*const Feature {
304267 },
305268};
......@@ -307,7 +270,6 @@ pub const feature_fuseAes = Feature{
307270pub const feature_fuseAddress = Feature{
308271 .name = "fuse-address",
309272 .description = "CPU fuses address generation and memory operations",
310 .llvm_name = "fuse-address",
311273 .subfeatures = &[_]*const Feature {
312274 },
313275};
......@@ -315,7 +277,6 @@ pub const feature_fuseAddress = Feature{
315277pub const feature_fuseArithLogic = Feature{
316278 .name = "fuse-arith-logic",
317279 .description = "CPU fuses arithmetic and logic operations",
318 .llvm_name = "fuse-arith-logic",
319280 .subfeatures = &[_]*const Feature {
320281 },
321282};
......@@ -323,7 +284,6 @@ pub const feature_fuseArithLogic = Feature{
323284pub const feature_fuseCsel = Feature{
324285 .name = "fuse-csel",
325286 .description = "CPU fuses conditional select operations",
326 .llvm_name = "fuse-csel",
327287 .subfeatures = &[_]*const Feature {
328288 },
329289};
......@@ -331,7 +291,6 @@ pub const feature_fuseCsel = Feature{
331291pub const feature_fuseCryptoEor = Feature{
332292 .name = "fuse-crypto-eor",
333293 .description = "CPU fuses AES/PMULL and EOR operations",
334 .llvm_name = "fuse-crypto-eor",
335294 .subfeatures = &[_]*const Feature {
336295 },
337296};
......@@ -339,7 +298,6 @@ pub const feature_fuseCryptoEor = Feature{
339298pub const feature_fuseLiterals = Feature{
340299 .name = "fuse-literals",
341300 .description = "CPU fuses literal generation operations",
342 .llvm_name = "fuse-literals",
343301 .subfeatures = &[_]*const Feature {
344302 },
345303};
......@@ -347,7 +305,6 @@ pub const feature_fuseLiterals = Feature{
347305pub const feature_jsconv = Feature{
348306 .name = "jsconv",
349307 .description = "Enable v8.3-A JavaScript FP conversion enchancement",
350 .llvm_name = "jsconv",
351308 .subfeatures = &[_]*const Feature {
352309 &feature_fpArmv8,
353310 },
......@@ -356,7 +313,6 @@ pub const feature_jsconv = Feature{
356313pub const feature_lor = Feature{
357314 .name = "lor",
358315 .description = "Enables ARM v8.1 Limited Ordering Regions extension",
359 .llvm_name = "lor",
360316 .subfeatures = &[_]*const Feature {
361317 },
362318};
......@@ -364,7 +320,6 @@ pub const feature_lor = Feature{
364320pub const feature_lse = Feature{
365321 .name = "lse",
366322 .description = "Enable ARMv8.1 Large System Extension (LSE) atomic instructions",
367 .llvm_name = "lse",
368323 .subfeatures = &[_]*const Feature {
369324 },
370325};
......@@ -372,7 +327,6 @@ pub const feature_lse = Feature{
372327pub const feature_lslFast = Feature{
373328 .name = "lsl-fast",
374329 .description = "CPU has a fastpath logical shift of up to 3 places",
375 .llvm_name = "lsl-fast",
376330 .subfeatures = &[_]*const Feature {
377331 },
378332};
......@@ -380,7 +334,6 @@ pub const feature_lslFast = Feature{
380334pub const feature_mpam = Feature{
381335 .name = "mpam",
382336 .description = "Enable v8.4-A Memory system Partitioning and Monitoring extension",
383 .llvm_name = "mpam",
384337 .subfeatures = &[_]*const Feature {
385338 },
386339};
......@@ -388,7 +341,6 @@ pub const feature_mpam = Feature{
388341pub const feature_mte = Feature{
389342 .name = "mte",
390343 .description = "Enable Memory Tagging Extension",
391 .llvm_name = "mte",
392344 .subfeatures = &[_]*const Feature {
393345 },
394346};
......@@ -396,7 +348,6 @@ pub const feature_mte = Feature{
396348pub const feature_neon = Feature{
397349 .name = "neon",
398350 .description = "Enable Advanced SIMD instructions",
399 .llvm_name = "neon",
400351 .subfeatures = &[_]*const Feature {
401352 &feature_fpArmv8,
402353 },
......@@ -405,7 +356,6 @@ pub const feature_neon = Feature{
405356pub const feature_nv = Feature{
406357 .name = "nv",
407358 .description = "Enable v8.4-A Nested Virtualization Enchancement",
408 .llvm_name = "nv",
409359 .subfeatures = &[_]*const Feature {
410360 },
411361};
......@@ -413,7 +363,6 @@ pub const feature_nv = Feature{
413363pub const feature_noNegImmediates = Feature{
414364 .name = "no-neg-immediates",
415365 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
416 .llvm_name = "no-neg-immediates",
417366 .subfeatures = &[_]*const Feature {
418367 },
419368};
......@@ -421,7 +370,6 @@ pub const feature_noNegImmediates = Feature{
421370pub const feature_pa = Feature{
422371 .name = "pa",
423372 .description = "Enable v8.3-A Pointer Authentication enchancement",
424 .llvm_name = "pa",
425373 .subfeatures = &[_]*const Feature {
426374 },
427375};
......@@ -429,7 +377,6 @@ pub const feature_pa = Feature{
429377pub const feature_pan = Feature{
430378 .name = "pan",
431379 .description = "Enables ARM v8.1 Privileged Access-Never extension",
432 .llvm_name = "pan",
433380 .subfeatures = &[_]*const Feature {
434381 },
435382};
......@@ -437,7 +384,6 @@ pub const feature_pan = Feature{
437384pub const feature_panRwv = Feature{
438385 .name = "pan-rwv",
439386 .description = "Enable v8.2 PAN s1e1R and s1e1W Variants",
440 .llvm_name = "pan-rwv",
441387 .subfeatures = &[_]*const Feature {
442388 &feature_pan,
443389 },
......@@ -446,7 +392,6 @@ pub const feature_panRwv = Feature{
446392pub const feature_perfmon = Feature{
447393 .name = "perfmon",
448394 .description = "Enable ARMv8 PMUv3 Performance Monitors extension",
449 .llvm_name = "perfmon",
450395 .subfeatures = &[_]*const Feature {
451396 },
452397};
......@@ -454,7 +399,6 @@ pub const feature_perfmon = Feature{
454399pub const feature_usePostraScheduler = Feature{
455400 .name = "use-postra-scheduler",
456401 .description = "Schedule again after register allocation",
457 .llvm_name = "use-postra-scheduler",
458402 .subfeatures = &[_]*const Feature {
459403 },
460404};
......@@ -462,7 +406,6 @@ pub const feature_usePostraScheduler = Feature{
462406pub const feature_predres = Feature{
463407 .name = "predres",
464408 .description = "Enable v8.5a execution and data prediction invalidation instructions",
465 .llvm_name = "predres",
466409 .subfeatures = &[_]*const Feature {
467410 },
468411};
......@@ -470,7 +413,6 @@ pub const feature_predres = Feature{
470413pub const feature_predictableSelectExpensive = Feature{
471414 .name = "predictable-select-expensive",
472415 .description = "Prefer likely predicted branches over selects",
473 .llvm_name = "predictable-select-expensive",
474416 .subfeatures = &[_]*const Feature {
475417 },
476418};
......@@ -478,7 +420,6 @@ pub const feature_predictableSelectExpensive = Feature{
478420pub const feature_uaops = Feature{
479421 .name = "uaops",
480422 .description = "Enable v8.2 UAO PState",
481 .llvm_name = "uaops",
482423 .subfeatures = &[_]*const Feature {
483424 },
484425};
......@@ -486,7 +427,6 @@ pub const feature_uaops = Feature{
486427pub const feature_ras = Feature{
487428 .name = "ras",
488429 .description = "Enable ARMv8 Reliability, Availability and Serviceability Extensions",
489 .llvm_name = "ras",
490430 .subfeatures = &[_]*const Feature {
491431 },
492432};
......@@ -494,7 +434,6 @@ pub const feature_ras = Feature{
494434pub const feature_rasv8_4 = Feature{
495435 .name = "rasv8_4",
496436 .description = "Enable v8.4-A Reliability, Availability and Serviceability extension",
497 .llvm_name = "rasv8_4",
498437 .subfeatures = &[_]*const Feature {
499438 &feature_ras,
500439 },
......@@ -503,7 +442,6 @@ pub const feature_rasv8_4 = Feature{
503442pub const feature_rcpc = Feature{
504443 .name = "rcpc",
505444 .description = "Enable support for RCPC extension",
506 .llvm_name = "rcpc",
507445 .subfeatures = &[_]*const Feature {
508446 },
509447};
......@@ -511,7 +449,6 @@ pub const feature_rcpc = Feature{
511449pub const feature_rcpcImmo = Feature{
512450 .name = "rcpc-immo",
513451 .description = "Enable v8.4-A RCPC instructions with Immediate Offsets",
514 .llvm_name = "rcpc-immo",
515452 .subfeatures = &[_]*const Feature {
516453 &feature_rcpc,
517454 },
......@@ -520,7 +457,6 @@ pub const feature_rcpcImmo = Feature{
520457pub const feature_rdm = Feature{
521458 .name = "rdm",
522459 .description = "Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions",
523 .llvm_name = "rdm",
524460 .subfeatures = &[_]*const Feature {
525461 },
526462};
......@@ -528,7 +464,6 @@ pub const feature_rdm = Feature{
528464pub const feature_rand = Feature{
529465 .name = "rand",
530466 .description = "Enable Random Number generation instructions",
531 .llvm_name = "rand",
532467 .subfeatures = &[_]*const Feature {
533468 },
534469};
......@@ -536,7 +471,6 @@ pub const feature_rand = Feature{
536471pub const feature_reserveX1 = Feature{
537472 .name = "reserve-x1",
538473 .description = "Reserve X1, making it unavailable as a GPR",
539 .llvm_name = "reserve-x1",
540474 .subfeatures = &[_]*const Feature {
541475 },
542476};
......@@ -544,7 +478,6 @@ pub const feature_reserveX1 = Feature{
544478pub const feature_reserveX2 = Feature{
545479 .name = "reserve-x2",
546480 .description = "Reserve X2, making it unavailable as a GPR",
547 .llvm_name = "reserve-x2",
548481 .subfeatures = &[_]*const Feature {
549482 },
550483};
......@@ -552,7 +485,6 @@ pub const feature_reserveX2 = Feature{
552485pub const feature_reserveX3 = Feature{
553486 .name = "reserve-x3",
554487 .description = "Reserve X3, making it unavailable as a GPR",
555 .llvm_name = "reserve-x3",
556488 .subfeatures = &[_]*const Feature {
557489 },
558490};
......@@ -560,7 +492,6 @@ pub const feature_reserveX3 = Feature{
560492pub const feature_reserveX4 = Feature{
561493 .name = "reserve-x4",
562494 .description = "Reserve X4, making it unavailable as a GPR",
563 .llvm_name = "reserve-x4",
564495 .subfeatures = &[_]*const Feature {
565496 },
566497};
......@@ -568,7 +499,6 @@ pub const feature_reserveX4 = Feature{
568499pub const feature_reserveX5 = Feature{
569500 .name = "reserve-x5",
570501 .description = "Reserve X5, making it unavailable as a GPR",
571 .llvm_name = "reserve-x5",
572502 .subfeatures = &[_]*const Feature {
573503 },
574504};
......@@ -576,7 +506,6 @@ pub const feature_reserveX5 = Feature{
576506pub const feature_reserveX6 = Feature{
577507 .name = "reserve-x6",
578508 .description = "Reserve X6, making it unavailable as a GPR",
579 .llvm_name = "reserve-x6",
580509 .subfeatures = &[_]*const Feature {
581510 },
582511};
......@@ -584,7 +513,6 @@ pub const feature_reserveX6 = Feature{
584513pub const feature_reserveX7 = Feature{
585514 .name = "reserve-x7",
586515 .description = "Reserve X7, making it unavailable as a GPR",
587 .llvm_name = "reserve-x7",
588516 .subfeatures = &[_]*const Feature {
589517 },
590518};
......@@ -592,7 +520,6 @@ pub const feature_reserveX7 = Feature{
592520pub const feature_reserveX9 = Feature{
593521 .name = "reserve-x9",
594522 .description = "Reserve X9, making it unavailable as a GPR",
595 .llvm_name = "reserve-x9",
596523 .subfeatures = &[_]*const Feature {
597524 },
598525};
......@@ -600,7 +527,6 @@ pub const feature_reserveX9 = Feature{
600527pub const feature_reserveX10 = Feature{
601528 .name = "reserve-x10",
602529 .description = "Reserve X10, making it unavailable as a GPR",
603 .llvm_name = "reserve-x10",
604530 .subfeatures = &[_]*const Feature {
605531 },
606532};
......@@ -608,7 +534,6 @@ pub const feature_reserveX10 = Feature{
608534pub const feature_reserveX11 = Feature{
609535 .name = "reserve-x11",
610536 .description = "Reserve X11, making it unavailable as a GPR",
611 .llvm_name = "reserve-x11",
612537 .subfeatures = &[_]*const Feature {
613538 },
614539};
......@@ -616,7 +541,6 @@ pub const feature_reserveX11 = Feature{
616541pub const feature_reserveX12 = Feature{
617542 .name = "reserve-x12",
618543 .description = "Reserve X12, making it unavailable as a GPR",
619 .llvm_name = "reserve-x12",
620544 .subfeatures = &[_]*const Feature {
621545 },
622546};
......@@ -624,7 +548,6 @@ pub const feature_reserveX12 = Feature{
624548pub const feature_reserveX13 = Feature{
625549 .name = "reserve-x13",
626550 .description = "Reserve X13, making it unavailable as a GPR",
627 .llvm_name = "reserve-x13",
628551 .subfeatures = &[_]*const Feature {
629552 },
630553};
......@@ -632,7 +555,6 @@ pub const feature_reserveX13 = Feature{
632555pub const feature_reserveX14 = Feature{
633556 .name = "reserve-x14",
634557 .description = "Reserve X14, making it unavailable as a GPR",
635 .llvm_name = "reserve-x14",
636558 .subfeatures = &[_]*const Feature {
637559 },
638560};
......@@ -640,7 +562,6 @@ pub const feature_reserveX14 = Feature{
640562pub const feature_reserveX15 = Feature{
641563 .name = "reserve-x15",
642564 .description = "Reserve X15, making it unavailable as a GPR",
643 .llvm_name = "reserve-x15",
644565 .subfeatures = &[_]*const Feature {
645566 },
646567};
......@@ -648,7 +569,6 @@ pub const feature_reserveX15 = Feature{
648569pub const feature_reserveX18 = Feature{
649570 .name = "reserve-x18",
650571 .description = "Reserve X18, making it unavailable as a GPR",
651 .llvm_name = "reserve-x18",
652572 .subfeatures = &[_]*const Feature {
653573 },
654574};
......@@ -656,7 +576,6 @@ pub const feature_reserveX18 = Feature{
656576pub const feature_reserveX20 = Feature{
657577 .name = "reserve-x20",
658578 .description = "Reserve X20, making it unavailable as a GPR",
659 .llvm_name = "reserve-x20",
660579 .subfeatures = &[_]*const Feature {
661580 },
662581};
......@@ -664,7 +583,6 @@ pub const feature_reserveX20 = Feature{
664583pub const feature_reserveX21 = Feature{
665584 .name = "reserve-x21",
666585 .description = "Reserve X21, making it unavailable as a GPR",
667 .llvm_name = "reserve-x21",
668586 .subfeatures = &[_]*const Feature {
669587 },
670588};
......@@ -672,7 +590,6 @@ pub const feature_reserveX21 = Feature{
672590pub const feature_reserveX22 = Feature{
673591 .name = "reserve-x22",
674592 .description = "Reserve X22, making it unavailable as a GPR",
675 .llvm_name = "reserve-x22",
676593 .subfeatures = &[_]*const Feature {
677594 },
678595};
......@@ -680,7 +597,6 @@ pub const feature_reserveX22 = Feature{
680597pub const feature_reserveX23 = Feature{
681598 .name = "reserve-x23",
682599 .description = "Reserve X23, making it unavailable as a GPR",
683 .llvm_name = "reserve-x23",
684600 .subfeatures = &[_]*const Feature {
685601 },
686602};
......@@ -688,7 +604,6 @@ pub const feature_reserveX23 = Feature{
688604pub const feature_reserveX24 = Feature{
689605 .name = "reserve-x24",
690606 .description = "Reserve X24, making it unavailable as a GPR",
691 .llvm_name = "reserve-x24",
692607 .subfeatures = &[_]*const Feature {
693608 },
694609};
......@@ -696,7 +611,6 @@ pub const feature_reserveX24 = Feature{
696611pub const feature_reserveX25 = Feature{
697612 .name = "reserve-x25",
698613 .description = "Reserve X25, making it unavailable as a GPR",
699 .llvm_name = "reserve-x25",
700614 .subfeatures = &[_]*const Feature {
701615 },
702616};
......@@ -704,7 +618,6 @@ pub const feature_reserveX25 = Feature{
704618pub const feature_reserveX26 = Feature{
705619 .name = "reserve-x26",
706620 .description = "Reserve X26, making it unavailable as a GPR",
707 .llvm_name = "reserve-x26",
708621 .subfeatures = &[_]*const Feature {
709622 },
710623};
......@@ -712,7 +625,6 @@ pub const feature_reserveX26 = Feature{
712625pub const feature_reserveX27 = Feature{
713626 .name = "reserve-x27",
714627 .description = "Reserve X27, making it unavailable as a GPR",
715 .llvm_name = "reserve-x27",
716628 .subfeatures = &[_]*const Feature {
717629 },
718630};
......@@ -720,7 +632,6 @@ pub const feature_reserveX27 = Feature{
720632pub const feature_reserveX28 = Feature{
721633 .name = "reserve-x28",
722634 .description = "Reserve X28, making it unavailable as a GPR",
723 .llvm_name = "reserve-x28",
724635 .subfeatures = &[_]*const Feature {
725636 },
726637};
......@@ -728,7 +639,6 @@ pub const feature_reserveX28 = Feature{
728639pub const feature_sb = Feature{
729640 .name = "sb",
730641 .description = "Enable v8.5 Speculation Barrier",
731 .llvm_name = "sb",
732642 .subfeatures = &[_]*const Feature {
733643 },
734644};
......@@ -736,7 +646,6 @@ pub const feature_sb = Feature{
736646pub const feature_sel2 = Feature{
737647 .name = "sel2",
738648 .description = "Enable v8.4-A Secure Exception Level 2 extension",
739 .llvm_name = "sel2",
740649 .subfeatures = &[_]*const Feature {
741650 },
742651};
......@@ -744,7 +653,6 @@ pub const feature_sel2 = Feature{
744653pub const feature_sha2 = Feature{
745654 .name = "sha2",
746655 .description = "Enable SHA1 and SHA256 support",
747 .llvm_name = "sha2",
748656 .subfeatures = &[_]*const Feature {
749657 &feature_fpArmv8,
750658 },
......@@ -753,7 +661,6 @@ pub const feature_sha2 = Feature{
753661pub const feature_sha3 = Feature{
754662 .name = "sha3",
755663 .description = "Enable SHA512 and SHA3 support",
756 .llvm_name = "sha3",
757664 .subfeatures = &[_]*const Feature {
758665 &feature_fpArmv8,
759666 },
......@@ -762,7 +669,6 @@ pub const feature_sha3 = Feature{
762669pub const feature_sm4 = Feature{
763670 .name = "sm4",
764671 .description = "Enable SM3 and SM4 support",
765 .llvm_name = "sm4",
766672 .subfeatures = &[_]*const Feature {
767673 &feature_fpArmv8,
768674 },
......@@ -771,7 +677,6 @@ pub const feature_sm4 = Feature{
771677pub const feature_spe = Feature{
772678 .name = "spe",
773679 .description = "Enable Statistical Profiling extension",
774 .llvm_name = "spe",
775680 .subfeatures = &[_]*const Feature {
776681 },
777682};
......@@ -779,7 +684,6 @@ pub const feature_spe = Feature{
779684pub const feature_ssbs = Feature{
780685 .name = "ssbs",
781686 .description = "Enable Speculative Store Bypass Safe bit",
782 .llvm_name = "ssbs",
783687 .subfeatures = &[_]*const Feature {
784688 },
785689};
......@@ -787,7 +691,6 @@ pub const feature_ssbs = Feature{
787691pub const feature_sve = Feature{
788692 .name = "sve",
789693 .description = "Enable Scalable Vector Extension (SVE) instructions",
790 .llvm_name = "sve",
791694 .subfeatures = &[_]*const Feature {
792695 },
793696};
......@@ -795,7 +698,6 @@ pub const feature_sve = Feature{
795698pub const feature_sve2 = Feature{
796699 .name = "sve2",
797700 .description = "Enable Scalable Vector Extension 2 (SVE2) instructions",
798 .llvm_name = "sve2",
799701 .subfeatures = &[_]*const Feature {
800702 &feature_sve,
801703 },
......@@ -804,7 +706,6 @@ pub const feature_sve2 = Feature{
804706pub const feature_sve2Aes = Feature{
805707 .name = "sve2-aes",
806708 .description = "Enable AES SVE2 instructions",
807 .llvm_name = "sve2-aes",
808709 .subfeatures = &[_]*const Feature {
809710 &feature_fpArmv8,
810711 &feature_sve,
......@@ -814,7 +715,6 @@ pub const feature_sve2Aes = Feature{
814715pub const feature_sve2Bitperm = Feature{
815716 .name = "sve2-bitperm",
816717 .description = "Enable bit permutation SVE2 instructions",
817 .llvm_name = "sve2-bitperm",
818718 .subfeatures = &[_]*const Feature {
819719 &feature_sve,
820720 },
......@@ -823,7 +723,6 @@ pub const feature_sve2Bitperm = Feature{
823723pub const feature_sve2Sha3 = Feature{
824724 .name = "sve2-sha3",
825725 .description = "Enable SHA3 SVE2 instructions",
826 .llvm_name = "sve2-sha3",
827726 .subfeatures = &[_]*const Feature {
828727 &feature_fpArmv8,
829728 &feature_sve,
......@@ -833,7 +732,6 @@ pub const feature_sve2Sha3 = Feature{
833732pub const feature_sve2Sm4 = Feature{
834733 .name = "sve2-sm4",
835734 .description = "Enable SM4 SVE2 instructions",
836 .llvm_name = "sve2-sm4",
837735 .subfeatures = &[_]*const Feature {
838736 &feature_fpArmv8,
839737 &feature_sve,
......@@ -843,7 +741,6 @@ pub const feature_sve2Sm4 = Feature{
843741pub const feature_slowMisaligned128store = Feature{
844742 .name = "slow-misaligned-128store",
845743 .description = "Misaligned 128 bit stores are slow",
846 .llvm_name = "slow-misaligned-128store",
847744 .subfeatures = &[_]*const Feature {
848745 },
849746};
......@@ -851,7 +748,6 @@ pub const feature_slowMisaligned128store = Feature{
851748pub const feature_slowPaired128 = Feature{
852749 .name = "slow-paired-128",
853750 .description = "Paired 128 bit loads and stores are slow",
854 .llvm_name = "slow-paired-128",
855751 .subfeatures = &[_]*const Feature {
856752 },
857753};
......@@ -859,7 +755,6 @@ pub const feature_slowPaired128 = Feature{
859755pub const feature_slowStrqroStore = Feature{
860756 .name = "slow-strqro-store",
861757 .description = "STR of Q register with register offset is slow",
862 .llvm_name = "slow-strqro-store",
863758 .subfeatures = &[_]*const Feature {
864759 },
865760};
......@@ -867,7 +762,6 @@ pub const feature_slowStrqroStore = Feature{
867762pub const feature_specrestrict = Feature{
868763 .name = "specrestrict",
869764 .description = "Enable architectural speculation restriction",
870 .llvm_name = "specrestrict",
871765 .subfeatures = &[_]*const Feature {
872766 },
873767};
......@@ -875,7 +769,6 @@ pub const feature_specrestrict = Feature{
875769pub const feature_strictAlign = Feature{
876770 .name = "strict-align",
877771 .description = "Disallow all unaligned memory access",
878 .llvm_name = "strict-align",
879772 .subfeatures = &[_]*const Feature {
880773 },
881774};
......@@ -883,7 +776,6 @@ pub const feature_strictAlign = Feature{
883776pub const feature_tlbRmi = Feature{
884777 .name = "tlb-rmi",
885778 .description = "Enable v8.4-A TLB Range and Maintenance Instructions",
886 .llvm_name = "tlb-rmi",
887779 .subfeatures = &[_]*const Feature {
888780 },
889781};
......@@ -891,7 +783,6 @@ pub const feature_tlbRmi = Feature{
891783pub const feature_tme = Feature{
892784 .name = "tme",
893785 .description = "Enable Transactional Memory Extension",
894 .llvm_name = "tme",
895786 .subfeatures = &[_]*const Feature {
896787 },
897788};
......@@ -899,7 +790,6 @@ pub const feature_tme = Feature{
899790pub const feature_tracev84 = Feature{
900791 .name = "tracev8.4",
901792 .description = "Enable v8.4-A Trace extension",
902 .llvm_name = "tracev8.4",
903793 .subfeatures = &[_]*const Feature {
904794 },
905795};
......@@ -907,7 +797,6 @@ pub const feature_tracev84 = Feature{
907797pub const feature_trbe = Feature{
908798 .name = "trbe",
909799 .description = "Enable Trace Buffer Extension",
910 .llvm_name = "trbe",
911800 .subfeatures = &[_]*const Feature {
912801 },
913802};
......@@ -915,7 +804,6 @@ pub const feature_trbe = Feature{
915804pub const feature_taggedGlobals = Feature{
916805 .name = "tagged-globals",
917806 .description = "Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits",
918 .llvm_name = "tagged-globals",
919807 .subfeatures = &[_]*const Feature {
920808 },
921809};
......@@ -923,7 +811,6 @@ pub const feature_taggedGlobals = Feature{
923811pub const feature_useAa = Feature{
924812 .name = "use-aa",
925813 .description = "Use alias analysis during codegen",
926 .llvm_name = "use-aa",
927814 .subfeatures = &[_]*const Feature {
928815 },
929816};
......@@ -931,7 +818,6 @@ pub const feature_useAa = Feature{
931818pub const feature_tpidrEl1 = Feature{
932819 .name = "tpidr-el1",
933820 .description = "Permit use of TPIDR_EL1 for the TLS base",
934 .llvm_name = "tpidr-el1",
935821 .subfeatures = &[_]*const Feature {
936822 },
937823};
......@@ -939,7 +825,6 @@ pub const feature_tpidrEl1 = Feature{
939825pub const feature_tpidrEl2 = Feature{
940826 .name = "tpidr-el2",
941827 .description = "Permit use of TPIDR_EL2 for the TLS base",
942 .llvm_name = "tpidr-el2",
943828 .subfeatures = &[_]*const Feature {
944829 },
945830};
......@@ -947,7 +832,6 @@ pub const feature_tpidrEl2 = Feature{
947832pub const feature_tpidrEl3 = Feature{
948833 .name = "tpidr-el3",
949834 .description = "Permit use of TPIDR_EL3 for the TLS base",
950 .llvm_name = "tpidr-el3",
951835 .subfeatures = &[_]*const Feature {
952836 },
953837};
......@@ -955,7 +839,6 @@ pub const feature_tpidrEl3 = Feature{
955839pub const feature_useReciprocalSquareRoot = Feature{
956840 .name = "use-reciprocal-square-root",
957841 .description = "Use the reciprocal square root approximation",
958 .llvm_name = "use-reciprocal-square-root",
959842 .subfeatures = &[_]*const Feature {
960843 },
961844};
......@@ -963,7 +846,6 @@ pub const feature_useReciprocalSquareRoot = Feature{
963846pub const feature_vh = Feature{
964847 .name = "vh",
965848 .description = "Enables ARM v8.1 Virtual Host extension",
966 .llvm_name = "vh",
967849 .subfeatures = &[_]*const Feature {
968850 },
969851};
......@@ -971,7 +853,6 @@ pub const feature_vh = Feature{
971853pub const feature_zcm = Feature{
972854 .name = "zcm",
973855 .description = "Has zero-cycle register moves",
974 .llvm_name = "zcm",
975856 .subfeatures = &[_]*const Feature {
976857 },
977858};
......@@ -979,7 +860,6 @@ pub const feature_zcm = Feature{
979860pub const feature_zcz = Feature{
980861 .name = "zcz",
981862 .description = "Has zero-cycle zeroing instructions",
982 .llvm_name = "zcz",
983863 .subfeatures = &[_]*const Feature {
984864 &feature_zczGp,
985865 &feature_zczFp,
......@@ -989,7 +869,6 @@ pub const feature_zcz = Feature{
989869pub const feature_zczFp = Feature{
990870 .name = "zcz-fp",
991871 .description = "Has zero-cycle zeroing instructions for FP registers",
992 .llvm_name = "zcz-fp",
993872 .subfeatures = &[_]*const Feature {
994873 },
995874};
......@@ -997,7 +876,6 @@ pub const feature_zczFp = Feature{
997876pub const feature_zczFpWorkaround = Feature{
998877 .name = "zcz-fp-workaround",
999878 .description = "The zero-cycle floating-point zeroing instruction has a bug",
1000 .llvm_name = "zcz-fp-workaround",
1001879 .subfeatures = &[_]*const Feature {
1002880 },
1003881};
......@@ -1005,7 +883,6 @@ pub const feature_zczFpWorkaround = Feature{
1005883pub const feature_zczGp = Feature{
1006884 .name = "zcz-gp",
1007885 .description = "Has zero-cycle zeroing instructions for generic registers",
1008 .llvm_name = "zcz-gp",
1009886 .subfeatures = &[_]*const Feature {
1010887 },
1011888};
......@@ -1013,127 +890,121 @@ pub const feature_zczGp = Feature{
1013890pub const feature_v81a = Feature{
1014891 .name = "v8.1a",
1015892 .description = "Support ARM v8.1a instructions",
1016 .llvm_name = "v8.1a",
1017893 .subfeatures = &[_]*const Feature {
1018 &feature_rdm,
1019 &feature_lse,
1020894 &feature_lor,
1021 &feature_crc,
1022895 &feature_pan,
896 &feature_lse,
897 &feature_rdm,
1023898 &feature_vh,
899 &feature_crc,
1024900 },
1025901};
1026902
1027903pub const feature_v82a = Feature{
1028904 .name = "v8.2a",
1029905 .description = "Support ARM v8.2a instructions",
1030 .llvm_name = "v8.2a",
1031906 .subfeatures = &[_]*const Feature {
1032 &feature_rdm,
1033907 &feature_ccpp,
908 &feature_lor,
909 &feature_pan,
1034910 &feature_lse,
911 &feature_rdm,
912 &feature_vh,
1035913 &feature_ras,
1036 &feature_lor,
1037914 &feature_crc,
1038 &feature_pan,
1039915 &feature_uaops,
1040 &feature_vh,
1041916 },
1042917};
1043918
1044919pub const feature_v83a = Feature{
1045920 .name = "v8.3a",
1046921 .description = "Support ARM v8.3a instructions",
1047 .llvm_name = "v8.3a",
1048922 .subfeatures = &[_]*const Feature {
1049 &feature_rdm,
1050 &feature_pa,
1051923 &feature_ccpp,
1052 &feature_uaops,
1053 &feature_lse,
1054 &feature_fpArmv8,
1055 &feature_ras,
1056924 &feature_lor,
1057925 &feature_pan,
1058 &feature_crc,
926 &feature_lse,
927 &feature_rdm,
928 &feature_ras,
929 &feature_vh,
930 &feature_fpArmv8,
931 &feature_uaops,
1059932 &feature_rcpc,
1060933 &feature_ccidx,
1061 &feature_vh,
934 &feature_crc,
935 &feature_pa,
1062936 },
1063937};
1064938
1065939pub const feature_v84a = Feature{
1066940 .name = "v8.4a",
1067941 .description = "Support ARM v8.4a instructions",
1068 .llvm_name = "v8.4a",
1069942 .subfeatures = &[_]*const Feature {
1070 &feature_am,
1071 &feature_nv,
1072943 &feature_ccpp,
944 &feature_lor,
1073945 &feature_dotprod,
946 &feature_fpArmv8,
947 &feature_crc,
948 &feature_fmi,
949 &feature_tracev84,
950 &feature_tlbRmi,
951 &feature_rdm,
952 &feature_ccidx,
953 &feature_mpam,
954 &feature_pan,
1074955 &feature_lse,
1075956 &feature_rcpc,
1076957 &feature_uaops,
1077 &feature_ccidx,
1078 &feature_vh,
1079 &feature_tracev84,
1080 &feature_rdm,
1081 &feature_fpArmv8,
958 &feature_sel2,
959 &feature_nv,
960 &feature_am,
1082961 &feature_dit,
1083 &feature_mpam,
962 &feature_vh,
1084963 &feature_ras,
1085 &feature_tlbRmi,
1086 &feature_fmi,
1087 &feature_crc,
1088964 &feature_pa,
1089 &feature_sel2,
1090 &feature_lor,
1091 &feature_pan,
1092965 },
1093966};
1094967
1095968pub const feature_v85a = Feature{
1096969 .name = "v8.5a",
1097970 .description = "Support ARM v8.5a instructions",
1098 .llvm_name = "v8.5a",
1099971 .subfeatures = &[_]*const Feature {
1100 &feature_am,
1101 &feature_nv,
1102 &feature_specrestrict,
1103972 &feature_ccpp,
973 &feature_lor,
1104974 &feature_dotprod,
1105 &feature_lse,
1106 &feature_ccdp,
975 &feature_fpArmv8,
976 &feature_ssbs,
977 &feature_crc,
978 &feature_fmi,
979 &feature_bti,
980 &feature_tracev84,
981 &feature_tlbRmi,
982 &feature_fptoint,
983 &feature_rdm,
1107984 &feature_sb,
1108 &feature_rcpc,
1109985 &feature_ccidx,
986 &feature_mpam,
987 &feature_pan,
988 &feature_lse,
989 &feature_predres,
990 &feature_rcpc,
1110991 &feature_uaops,
992 &feature_sel2,
993 &feature_nv,
994 &feature_am,
995 &feature_dit,
996 &feature_specrestrict,
1111997 &feature_vh,
1112998 &feature_altnzcv,
1113 &feature_tracev84,
1114 &feature_rdm,
1115 &feature_ssbs,
1116 &feature_fpArmv8,
1117 &feature_dit,
1118 &feature_mpam,
1119999 &feature_ras,
1120 &feature_tlbRmi,
1121 &feature_fmi,
1122 &feature_crc,
1123 &feature_predres,
1000 &feature_ccdp,
11241001 &feature_pa,
1125 &feature_sel2,
1126 &feature_lor,
1127 &feature_fptoint,
1128 &feature_bti,
1129 &feature_pan,
11301002 },
11311003};
11321004
11331005pub const feature_a35 = Feature{
11341006 .name = "a35",
11351007 .description = "Cortex-A35 ARM processors",
1136 .llvm_name = "a35",
11371008 .subfeatures = &[_]*const Feature {
11381009 &feature_fpArmv8,
11391010 &feature_perfmon,
......@@ -1144,15 +1015,14 @@ pub const feature_a35 = Feature{
11441015pub const feature_a53 = Feature{
11451016 .name = "a53",
11461017 .description = "Cortex-A53 ARM processors",
1147 .llvm_name = "a53",
11481018 .subfeatures = &[_]*const Feature {
1149 &feature_usePostraScheduler,
1150 &feature_customCheapAsMove,
1151 &feature_fuseAes,
1019 &feature_useAa,
11521020 &feature_balanceFpOps,
1153 &feature_fpArmv8,
1021 &feature_fuseAes,
1022 &feature_usePostraScheduler,
11541023 &feature_perfmon,
1155 &feature_useAa,
1024 &feature_fpArmv8,
1025 &feature_customCheapAsMove,
11561026 &feature_crc,
11571027 },
11581028};
......@@ -1160,38 +1030,36 @@ pub const feature_a53 = Feature{
11601030pub const feature_a55 = Feature{
11611031 .name = "a55",
11621032 .description = "Cortex-A55 ARM processors",
1163 .llvm_name = "a55",
11641033 .subfeatures = &[_]*const Feature {
1165 &feature_rdm,
11661034 &feature_fuseAes,
11671035 &feature_ccpp,
1168 &feature_lse,
1169 &feature_fpArmv8,
1170 &feature_perfmon,
1171 &feature_ras,
1172 &feature_dotprod,
11731036 &feature_lor,
1037 &feature_dotprod,
1038 &feature_perfmon,
11741039 &feature_pan,
1175 &feature_crc,
1176 &feature_rcpc,
1177 &feature_uaops,
1040 &feature_lse,
1041 &feature_rdm,
1042 &feature_ras,
11781043 &feature_vh,
1044 &feature_fpArmv8,
1045 &feature_uaops,
1046 &feature_rcpc,
1047 &feature_crc,
11791048 },
11801049};
11811050
11821051pub const feature_a57 = Feature{
11831052 .name = "a57",
11841053 .description = "Cortex-A57 ARM processors",
1185 .llvm_name = "a57",
11861054 .subfeatures = &[_]*const Feature {
1187 &feature_usePostraScheduler,
1188 &feature_customCheapAsMove,
1189 &feature_fuseAes,
1055 &feature_fuseLiterals,
11901056 &feature_balanceFpOps,
1191 &feature_fpArmv8,
1192 &feature_perfmon,
11931057 &feature_predictableSelectExpensive,
1194 &feature_fuseLiterals,
1058 &feature_fuseAes,
1059 &feature_usePostraScheduler,
1060 &feature_perfmon,
1061 &feature_fpArmv8,
1062 &feature_customCheapAsMove,
11951063 &feature_crc,
11961064 },
11971065};
......@@ -1199,352 +1067,335 @@ pub const feature_a57 = Feature{
11991067pub const feature_a65 = Feature{
12001068 .name = "a65",
12011069 .description = "Cortex-A65 ARM processors",
1202 .llvm_name = "a65",
12031070 .subfeatures = &[_]*const Feature {
1204 &feature_rdm,
1071 &feature_rcpc,
12051072 &feature_ccpp,
1206 &feature_lse,
1207 &feature_fpArmv8,
1208 &feature_ras,
1209 &feature_dotprod,
12101073 &feature_lor,
1074 &feature_dotprod,
12111075 &feature_pan,
1212 &feature_crc,
1213 &feature_rcpc,
1214 &feature_uaops,
1076 &feature_lse,
1077 &feature_rdm,
12151078 &feature_vh,
1079 &feature_fpArmv8,
1080 &feature_uaops,
1081 &feature_ras,
12161082 &feature_ssbs,
1083 &feature_crc,
12171084 },
12181085};
12191086
12201087pub const feature_a72 = Feature{
12211088 .name = "a72",
12221089 .description = "Cortex-A72 ARM processors",
1223 .llvm_name = "a72",
12241090 .subfeatures = &[_]*const Feature {
12251091 &feature_fpArmv8,
1226 &feature_perfmon,
1227 &feature_crc,
12281092 &feature_fuseAes,
1093 &feature_crc,
1094 &feature_perfmon,
12291095 },
12301096};
12311097
12321098pub const feature_a73 = Feature{
12331099 .name = "a73",
12341100 .description = "Cortex-A73 ARM processors",
1235 .llvm_name = "a73",
12361101 .subfeatures = &[_]*const Feature {
12371102 &feature_fpArmv8,
1238 &feature_perfmon,
1239 &feature_crc,
12401103 &feature_fuseAes,
1104 &feature_crc,
1105 &feature_perfmon,
12411106 },
12421107};
12431108
12441109pub const feature_a75 = Feature{
12451110 .name = "a75",
12461111 .description = "Cortex-A75 ARM processors",
1247 .llvm_name = "a75",
12481112 .subfeatures = &[_]*const Feature {
1249 &feature_rdm,
12501113 &feature_fuseAes,
12511114 &feature_ccpp,
1252 &feature_lse,
1253 &feature_fpArmv8,
1254 &feature_perfmon,
1255 &feature_ras,
1256 &feature_dotprod,
12571115 &feature_lor,
1116 &feature_dotprod,
1117 &feature_perfmon,
12581118 &feature_pan,
1259 &feature_crc,
1260 &feature_rcpc,
1261 &feature_uaops,
1119 &feature_lse,
1120 &feature_rdm,
1121 &feature_ras,
12621122 &feature_vh,
1123 &feature_fpArmv8,
1124 &feature_uaops,
1125 &feature_rcpc,
1126 &feature_crc,
12631127 },
12641128};
12651129
12661130pub const feature_a76 = Feature{
12671131 .name = "a76",
12681132 .description = "Cortex-A76 ARM processors",
1269 .llvm_name = "a76",
12701133 .subfeatures = &[_]*const Feature {
1271 &feature_rdm,
12721134 &feature_ccpp,
1273 &feature_lse,
1274 &feature_fpArmv8,
1275 &feature_ras,
1276 &feature_dotprod,
12771135 &feature_lor,
1136 &feature_dotprod,
12781137 &feature_pan,
1279 &feature_crc,
1280 &feature_rcpc,
1281 &feature_uaops,
1138 &feature_lse,
1139 &feature_rdm,
1140 &feature_ras,
12821141 &feature_vh,
1142 &feature_fpArmv8,
1143 &feature_uaops,
1144 &feature_rcpc,
12831145 &feature_ssbs,
1146 &feature_crc,
12841147 },
12851148};
12861149
12871150pub const feature_cyclone = Feature{
12881151 .name = "cyclone",
12891152 .description = "Cyclone",
1290 .llvm_name = "cyclone",
12911153 .subfeatures = &[_]*const Feature {
1292 &feature_zczGp,
1293 &feature_arithBccFusion,
1294 &feature_fuseAes,
1295 &feature_zczFp,
12961154 &feature_zczFpWorkaround,
1297 &feature_fpArmv8,
1298 &feature_perfmon,
1299 &feature_disableLatencySchedHeuristic,
1155 &feature_fuseAes,
13001156 &feature_zcm,
13011157 &feature_arithCbzFusion,
1302 &feature_fuseCryptoEor,
1158 &feature_perfmon,
13031159 &feature_alternateSextloadCvtF32Pattern,
1160 &feature_arithBccFusion,
1161 &feature_disableLatencySchedHeuristic,
1162 &feature_zczGp,
1163 &feature_fuseCryptoEor,
1164 &feature_fpArmv8,
1165 &feature_zczFp,
13041166 },
13051167};
13061168
13071169pub const feature_exynosm1 = Feature{
13081170 .name = "exynosm1",
13091171 .description = "Samsung Exynos-M1 processors",
1310 .llvm_name = "exynosm1",
13111172 .subfeatures = &[_]*const Feature {
1173 &feature_useReciprocalSquareRoot,
1174 &feature_fuseAes,
13121175 &feature_usePostraScheduler,
13131176 &feature_slowMisaligned128store,
1314 &feature_customCheapAsMove,
1315 &feature_fuseAes,
1316 &feature_zczFp,
1317 &feature_fpArmv8,
13181177 &feature_perfmon,
1319 &feature_slowPaired128,
1320 &feature_useReciprocalSquareRoot,
1178 &feature_fpArmv8,
1179 &feature_customCheapAsMove,
13211180 &feature_force32bitJumpTables,
1181 &feature_zczFp,
13221182 &feature_crc,
1183 &feature_slowPaired128,
13231184 },
13241185};
13251186
13261187pub const feature_exynosm2 = Feature{
13271188 .name = "exynosm2",
13281189 .description = "Samsung Exynos-M2 processors",
1329 .llvm_name = "exynosm2",
13301190 .subfeatures = &[_]*const Feature {
1191 &feature_fuseAes,
13311192 &feature_usePostraScheduler,
13321193 &feature_slowMisaligned128store,
1333 &feature_customCheapAsMove,
1334 &feature_fuseAes,
1335 &feature_zczFp,
1336 &feature_fpArmv8,
13371194 &feature_perfmon,
1338 &feature_slowPaired128,
1195 &feature_fpArmv8,
1196 &feature_customCheapAsMove,
13391197 &feature_force32bitJumpTables,
1198 &feature_zczFp,
13401199 &feature_crc,
1200 &feature_slowPaired128,
13411201 },
13421202};
13431203
13441204pub const feature_exynosm3 = Feature{
13451205 .name = "exynosm3",
13461206 .description = "Samsung Exynos-M3 processors",
1347 .llvm_name = "exynosm3",
13481207 .subfeatures = &[_]*const Feature {
1349 &feature_usePostraScheduler,
1350 &feature_customCheapAsMove,
1208 &feature_fuseLiterals,
1209 &feature_predictableSelectExpensive,
13511210 &feature_fuseAes,
13521211 &feature_fuseAddress,
1353 &feature_zczFp,
1354 &feature_fpArmv8,
1212 &feature_fuseCsel,
1213 &feature_usePostraScheduler,
13551214 &feature_perfmon,
1356 &feature_predictableSelectExpensive,
1357 &feature_fuseLiterals,
1215 &feature_fpArmv8,
1216 &feature_customCheapAsMove,
1217 &feature_lslFast,
13581218 &feature_force32bitJumpTables,
1219 &feature_zczFp,
13591220 &feature_crc,
1360 &feature_lslFast,
1361 &feature_fuseCsel,
13621221 },
13631222};
13641223
13651224pub const feature_exynosm4 = Feature{
13661225 .name = "exynosm4",
13671226 .description = "Samsung Exynos-M4 processors",
1368 .llvm_name = "exynosm4",
13691227 .subfeatures = &[_]*const Feature {
1228 &feature_fuseLiterals,
1229 &feature_fuseAes,
13701230 &feature_ccpp,
1371 &feature_perfmon,
1231 &feature_lor,
13721232 &feature_dotprod,
1373 &feature_fuseArithLogic,
1374 &feature_force32bitJumpTables,
1375 &feature_lslFast,
1376 &feature_zczGp,
1233 &feature_fpArmv8,
13771234 &feature_customCheapAsMove,
1378 &feature_fuseAes,
1235 &feature_lslFast,
1236 &feature_crc,
13791237 &feature_fuseAddress,
1380 &feature_lse,
13811238 &feature_arithCbzFusion,
1382 &feature_uaops,
1239 &feature_perfmon,
1240 &feature_arithBccFusion,
1241 &feature_zczGp,
1242 &feature_rdm,
1243 &feature_force32bitJumpTables,
1244 &feature_pan,
1245 &feature_lse,
13831246 &feature_fuseCsel,
1247 &feature_uaops,
1248 &feature_fuseArithLogic,
1249 &feature_usePostraScheduler,
13841250 &feature_vh,
1385 &feature_rdm,
1386 &feature_fpArmv8,
13871251 &feature_ras,
1388 &feature_fuseLiterals,
1389 &feature_crc,
1390 &feature_usePostraScheduler,
1391 &feature_arithBccFusion,
13921252 &feature_zczFp,
1393 &feature_lor,
1394 &feature_pan,
13951253 },
13961254};
13971255
13981256pub const feature_falkor = Feature{
13991257 .name = "falkor",
14001258 .description = "Qualcomm Falkor processors",
1401 .llvm_name = "falkor",
14021259 .subfeatures = &[_]*const Feature {
1403 &feature_rdm,
1260 &feature_predictableSelectExpensive,
14041261 &feature_usePostraScheduler,
1405 &feature_zczGp,
1262 &feature_perfmon,
14061263 &feature_slowStrqroStore,
1264 &feature_rdm,
1265 &feature_zczGp,
1266 &feature_fpArmv8,
14071267 &feature_customCheapAsMove,
1268 &feature_lslFast,
14081269 &feature_zczFp,
1409 &feature_fpArmv8,
1410 &feature_perfmon,
1411 &feature_predictableSelectExpensive,
14121270 &feature_crc,
1413 &feature_lslFast,
14141271 },
14151272};
14161273
14171274pub const feature_kryo = Feature{
14181275 .name = "kryo",
14191276 .description = "Qualcomm Kryo processors",
1420 .llvm_name = "kryo",
14211277 .subfeatures = &[_]*const Feature {
1278 &feature_predictableSelectExpensive,
14221279 &feature_usePostraScheduler,
1280 &feature_perfmon,
14231281 &feature_zczGp,
1282 &feature_fpArmv8,
14241283 &feature_customCheapAsMove,
1284 &feature_lslFast,
14251285 &feature_zczFp,
1426 &feature_fpArmv8,
1427 &feature_perfmon,
1428 &feature_predictableSelectExpensive,
14291286 &feature_crc,
1430 &feature_lslFast,
14311287 },
14321288};
14331289
14341290pub const feature_neoversee1 = Feature{
14351291 .name = "neoversee1",
14361292 .description = "Neoverse E1 ARM processors",
1437 .llvm_name = "neoversee1",
14381293 .subfeatures = &[_]*const Feature {
1439 &feature_rdm,
14401294 &feature_ccpp,
1441 &feature_lse,
1442 &feature_fpArmv8,
1443 &feature_ras,
1444 &feature_dotprod,
14451295 &feature_lor,
1296 &feature_dotprod,
14461297 &feature_pan,
1447 &feature_crc,
1448 &feature_rcpc,
1449 &feature_uaops,
1298 &feature_lse,
1299 &feature_rdm,
1300 &feature_ras,
14501301 &feature_vh,
1302 &feature_fpArmv8,
1303 &feature_uaops,
1304 &feature_rcpc,
14511305 &feature_ssbs,
1306 &feature_crc,
14521307 },
14531308};
14541309
14551310pub const feature_neoversen1 = Feature{
14561311 .name = "neoversen1",
14571312 .description = "Neoverse N1 ARM processors",
1458 .llvm_name = "neoversen1",
14591313 .subfeatures = &[_]*const Feature {
1460 &feature_rdm,
14611314 &feature_ccpp,
1462 &feature_lse,
1463 &feature_fpArmv8,
1464 &feature_ras,
1465 &feature_dotprod,
14661315 &feature_lor,
1467 &feature_spe,
1468 &feature_pan,
1469 &feature_crc,
1470 &feature_rcpc,
1471 &feature_uaops,
1316 &feature_dotprod,
1317 &feature_spe,
1318 &feature_pan,
1319 &feature_lse,
1320 &feature_rdm,
1321 &feature_ras,
14721322 &feature_vh,
1323 &feature_fpArmv8,
1324 &feature_uaops,
1325 &feature_rcpc,
14731326 &feature_ssbs,
1327 &feature_crc,
14741328 },
14751329};
14761330
14771331pub const feature_saphira = Feature{
14781332 .name = "saphira",
14791333 .description = "Qualcomm Saphira processors",
1480 .llvm_name = "saphira",
14811334 .subfeatures = &[_]*const Feature {
1482 &feature_am,
1483 &feature_nv,
14841335 &feature_ccpp,
1485 &feature_predictableSelectExpensive,
1486 &feature_perfmon,
1336 &feature_lor,
14871337 &feature_dotprod,
1488 &feature_spe,
1338 &feature_fpArmv8,
1339 &feature_customCheapAsMove,
14891340 &feature_lslFast,
1341 &feature_crc,
1342 &feature_fmi,
1343 &feature_predictableSelectExpensive,
1344 &feature_tracev84,
1345 &feature_tlbRmi,
1346 &feature_perfmon,
14901347 &feature_zczGp,
1491 &feature_customCheapAsMove,
1348 &feature_rdm,
1349 &feature_ccidx,
1350 &feature_mpam,
1351 &feature_pan,
14921352 &feature_lse,
14931353 &feature_rcpc,
14941354 &feature_uaops,
1495 &feature_ccidx,
1496 &feature_vh,
1497 &feature_tracev84,
1498 &feature_rdm,
1499 &feature_fpArmv8,
1355 &feature_sel2,
1356 &feature_usePostraScheduler,
1357 &feature_nv,
1358 &feature_am,
1359 &feature_spe,
15001360 &feature_dit,
1501 &feature_mpam,
1361 &feature_vh,
15021362 &feature_ras,
1503 &feature_tlbRmi,
1504 &feature_fmi,
1505 &feature_crc,
1506 &feature_usePostraScheduler,
1507 &feature_pa,
15081363 &feature_zczFp,
1509 &feature_sel2,
1510 &feature_lor,
1511 &feature_pan,
1364 &feature_pa,
15121365 },
15131366};
15141367
15151368pub const feature_tsv110 = Feature{
15161369 .name = "tsv110",
15171370 .description = "HiSilicon TS-V110 processors",
1518 .llvm_name = "tsv110",
15191371 .subfeatures = &[_]*const Feature {
1520 &feature_rdm,
1521 &feature_usePostraScheduler,
1522 &feature_customCheapAsMove,
15231372 &feature_fuseAes,
1373 &feature_usePostraScheduler,
15241374 &feature_ccpp,
1525 &feature_lse,
1526 &feature_fpArmv8,
1527 &feature_perfmon,
1528 &feature_ras,
1529 &feature_dotprod,
15301375 &feature_lor,
1376 &feature_dotprod,
1377 &feature_uaops,
1378 &feature_perfmon,
15311379 &feature_spe,
1532 &feature_crc,
15331380 &feature_pan,
1534 &feature_uaops,
1381 &feature_lse,
1382 &feature_rdm,
15351383 &feature_vh,
1384 &feature_fpArmv8,
1385 &feature_customCheapAsMove,
1386 &feature_ras,
1387 &feature_crc,
15361388 },
15371389};
15381390
15391391pub const feature_thunderx = Feature{
15401392 .name = "thunderx",
15411393 .description = "Cavium ThunderX processors",
1542 .llvm_name = "thunderx",
15431394 .subfeatures = &[_]*const Feature {
1544 &feature_usePostraScheduler,
15451395 &feature_predictableSelectExpensive,
1546 &feature_fpArmv8,
1396 &feature_usePostraScheduler,
15471397 &feature_perfmon,
1398 &feature_fpArmv8,
15481399 &feature_crc,
15491400 },
15501401};
......@@ -1552,31 +1403,29 @@ pub const feature_thunderx = Feature{
15521403pub const feature_thunderx2t99 = Feature{
15531404 .name = "thunderx2t99",
15541405 .description = "Cavium ThunderX2 processors",
1555 .llvm_name = "thunderx2t99",
15561406 .subfeatures = &[_]*const Feature {
1557 &feature_rdm,
1558 &feature_usePostraScheduler,
1559 &feature_arithBccFusion,
1560 &feature_lse,
1561 &feature_fpArmv8,
15621407 &feature_predictableSelectExpensive,
1408 &feature_usePostraScheduler,
15631409 &feature_lor,
1564 &feature_crc,
1410 &feature_lse,
15651411 &feature_pan,
1412 &feature_arithBccFusion,
1413 &feature_rdm,
15661414 &feature_aggressiveFma,
15671415 &feature_vh,
1416 &feature_fpArmv8,
1417 &feature_crc,
15681418 },
15691419};
15701420
15711421pub const feature_thunderxt81 = Feature{
15721422 .name = "thunderxt81",
15731423 .description = "Cavium ThunderX processors",
1574 .llvm_name = "thunderxt81",
15751424 .subfeatures = &[_]*const Feature {
1576 &feature_usePostraScheduler,
15771425 &feature_predictableSelectExpensive,
1578 &feature_fpArmv8,
1426 &feature_usePostraScheduler,
15791427 &feature_perfmon,
1428 &feature_fpArmv8,
15801429 &feature_crc,
15811430 },
15821431};
......@@ -1584,12 +1433,11 @@ pub const feature_thunderxt81 = Feature{
15841433pub const feature_thunderxt83 = Feature{
15851434 .name = "thunderxt83",
15861435 .description = "Cavium ThunderX processors",
1587 .llvm_name = "thunderxt83",
15881436 .subfeatures = &[_]*const Feature {
1589 &feature_usePostraScheduler,
15901437 &feature_predictableSelectExpensive,
1591 &feature_fpArmv8,
1438 &feature_usePostraScheduler,
15921439 &feature_perfmon,
1440 &feature_fpArmv8,
15931441 &feature_crc,
15941442 },
15951443};
......@@ -1597,12 +1445,11 @@ pub const feature_thunderxt83 = Feature{
15971445pub const feature_thunderxt88 = Feature{
15981446 .name = "thunderxt88",
15991447 .description = "Cavium ThunderX processors",
1600 .llvm_name = "thunderxt88",
16011448 .subfeatures = &[_]*const Feature {
1602 &feature_usePostraScheduler,
16031449 &feature_predictableSelectExpensive,
1604 &feature_fpArmv8,
1450 &feature_usePostraScheduler,
16051451 &feature_perfmon,
1452 &feature_fpArmv8,
16061453 &feature_crc,
16071454 },
16081455};
......@@ -1767,18 +1614,18 @@ pub const cpu_appleLatest = Cpu{
17671614 .name = "apple-latest",
17681615 .llvm_name = "apple-latest",
17691616 .subfeatures = &[_]*const Feature {
1770 &feature_zczGp,
1771 &feature_arithBccFusion,
1772 &feature_fuseAes,
1773 &feature_zczFp,
17741617 &feature_zczFpWorkaround,
1775 &feature_fpArmv8,
1776 &feature_perfmon,
1777 &feature_disableLatencySchedHeuristic,
1618 &feature_fuseAes,
17781619 &feature_zcm,
17791620 &feature_arithCbzFusion,
1780 &feature_fuseCryptoEor,
1621 &feature_perfmon,
17811622 &feature_alternateSextloadCvtF32Pattern,
1623 &feature_arithBccFusion,
1624 &feature_disableLatencySchedHeuristic,
1625 &feature_zczGp,
1626 &feature_fuseCryptoEor,
1627 &feature_fpArmv8,
1628 &feature_zczFp,
17821629 &feature_cyclone,
17831630 },
17841631};
......@@ -1798,13 +1645,13 @@ pub const cpu_cortexA53 = Cpu{
17981645 .name = "cortex-a53",
17991646 .llvm_name = "cortex-a53",
18001647 .subfeatures = &[_]*const Feature {
1801 &feature_usePostraScheduler,
1802 &feature_customCheapAsMove,
1803 &feature_fuseAes,
1648 &feature_useAa,
18041649 &feature_balanceFpOps,
1805 &feature_fpArmv8,
1650 &feature_fuseAes,
1651 &feature_usePostraScheduler,
18061652 &feature_perfmon,
1807 &feature_useAa,
1653 &feature_fpArmv8,
1654 &feature_customCheapAsMove,
18081655 &feature_crc,
18091656 &feature_a53,
18101657 },
......@@ -1814,20 +1661,20 @@ pub const cpu_cortexA55 = Cpu{
18141661 .name = "cortex-a55",
18151662 .llvm_name = "cortex-a55",
18161663 .subfeatures = &[_]*const Feature {
1817 &feature_rdm,
18181664 &feature_fuseAes,
18191665 &feature_ccpp,
1820 &feature_lse,
1821 &feature_fpArmv8,
1822 &feature_perfmon,
1823 &feature_ras,
1824 &feature_dotprod,
18251666 &feature_lor,
1667 &feature_dotprod,
1668 &feature_perfmon,
18261669 &feature_pan,
1827 &feature_crc,
1828 &feature_rcpc,
1829 &feature_uaops,
1670 &feature_lse,
1671 &feature_rdm,
1672 &feature_ras,
18301673 &feature_vh,
1674 &feature_fpArmv8,
1675 &feature_uaops,
1676 &feature_rcpc,
1677 &feature_crc,
18311678 &feature_a55,
18321679 },
18331680};
......@@ -1836,14 +1683,14 @@ pub const cpu_cortexA57 = Cpu{
18361683 .name = "cortex-a57",
18371684 .llvm_name = "cortex-a57",
18381685 .subfeatures = &[_]*const Feature {
1839 &feature_usePostraScheduler,
1840 &feature_customCheapAsMove,
1841 &feature_fuseAes,
1686 &feature_fuseLiterals,
18421687 &feature_balanceFpOps,
1843 &feature_fpArmv8,
1844 &feature_perfmon,
18451688 &feature_predictableSelectExpensive,
1846 &feature_fuseLiterals,
1689 &feature_fuseAes,
1690 &feature_usePostraScheduler,
1691 &feature_perfmon,
1692 &feature_fpArmv8,
1693 &feature_customCheapAsMove,
18471694 &feature_crc,
18481695 &feature_a57,
18491696 },
......@@ -1853,19 +1700,19 @@ pub const cpu_cortexA65 = Cpu{
18531700 .name = "cortex-a65",
18541701 .llvm_name = "cortex-a65",
18551702 .subfeatures = &[_]*const Feature {
1856 &feature_rdm,
1703 &feature_rcpc,
18571704 &feature_ccpp,
1858 &feature_lse,
1859 &feature_fpArmv8,
1860 &feature_ras,
1861 &feature_dotprod,
18621705 &feature_lor,
1706 &feature_dotprod,
18631707 &feature_pan,
1864 &feature_crc,
1865 &feature_rcpc,
1866 &feature_uaops,
1708 &feature_lse,
1709 &feature_rdm,
18671710 &feature_vh,
1711 &feature_fpArmv8,
1712 &feature_uaops,
1713 &feature_ras,
18681714 &feature_ssbs,
1715 &feature_crc,
18691716 &feature_a65,
18701717 },
18711718};
......@@ -1874,19 +1721,19 @@ pub const cpu_cortexA65ae = Cpu{
18741721 .name = "cortex-a65ae",
18751722 .llvm_name = "cortex-a65ae",
18761723 .subfeatures = &[_]*const Feature {
1877 &feature_rdm,
1724 &feature_rcpc,
18781725 &feature_ccpp,
1879 &feature_lse,
1880 &feature_fpArmv8,
1881 &feature_ras,
1882 &feature_dotprod,
18831726 &feature_lor,
1727 &feature_dotprod,
18841728 &feature_pan,
1885 &feature_crc,
1886 &feature_rcpc,
1887 &feature_uaops,
1729 &feature_lse,
1730 &feature_rdm,
18881731 &feature_vh,
1732 &feature_fpArmv8,
1733 &feature_uaops,
1734 &feature_ras,
18891735 &feature_ssbs,
1736 &feature_crc,
18901737 &feature_a65,
18911738 },
18921739};
......@@ -1896,9 +1743,9 @@ pub const cpu_cortexA72 = Cpu{
18961743 .llvm_name = "cortex-a72",
18971744 .subfeatures = &[_]*const Feature {
18981745 &feature_fpArmv8,
1899 &feature_perfmon,
1900 &feature_crc,
19011746 &feature_fuseAes,
1747 &feature_crc,
1748 &feature_perfmon,
19021749 &feature_a72,
19031750 },
19041751};
......@@ -1908,9 +1755,9 @@ pub const cpu_cortexA73 = Cpu{
19081755 .llvm_name = "cortex-a73",
19091756 .subfeatures = &[_]*const Feature {
19101757 &feature_fpArmv8,
1911 &feature_perfmon,
1912 &feature_crc,
19131758 &feature_fuseAes,
1759 &feature_crc,
1760 &feature_perfmon,
19141761 &feature_a73,
19151762 },
19161763};
......@@ -1919,20 +1766,20 @@ pub const cpu_cortexA75 = Cpu{
19191766 .name = "cortex-a75",
19201767 .llvm_name = "cortex-a75",
19211768 .subfeatures = &[_]*const Feature {
1922 &feature_rdm,
19231769 &feature_fuseAes,
19241770 &feature_ccpp,
1925 &feature_lse,
1926 &feature_fpArmv8,
1927 &feature_perfmon,
1928 &feature_ras,
1929 &feature_dotprod,
19301771 &feature_lor,
1772 &feature_dotprod,
1773 &feature_perfmon,
19311774 &feature_pan,
1932 &feature_crc,
1933 &feature_rcpc,
1934 &feature_uaops,
1775 &feature_lse,
1776 &feature_rdm,
1777 &feature_ras,
19351778 &feature_vh,
1779 &feature_fpArmv8,
1780 &feature_uaops,
1781 &feature_rcpc,
1782 &feature_crc,
19361783 &feature_a75,
19371784 },
19381785};
......@@ -1941,19 +1788,19 @@ pub const cpu_cortexA76 = Cpu{
19411788 .name = "cortex-a76",
19421789 .llvm_name = "cortex-a76",
19431790 .subfeatures = &[_]*const Feature {
1944 &feature_rdm,
19451791 &feature_ccpp,
1946 &feature_lse,
1947 &feature_fpArmv8,
1948 &feature_ras,
1949 &feature_dotprod,
19501792 &feature_lor,
1793 &feature_dotprod,
19511794 &feature_pan,
1952 &feature_crc,
1953 &feature_rcpc,
1954 &feature_uaops,
1795 &feature_lse,
1796 &feature_rdm,
1797 &feature_ras,
19551798 &feature_vh,
1799 &feature_fpArmv8,
1800 &feature_uaops,
1801 &feature_rcpc,
19561802 &feature_ssbs,
1803 &feature_crc,
19571804 &feature_a76,
19581805 },
19591806};
......@@ -1962,39 +1809,39 @@ pub const cpu_cortexA76ae = Cpu{
19621809 .name = "cortex-a76ae",
19631810 .llvm_name = "cortex-a76ae",
19641811 .subfeatures = &[_]*const Feature {
1965 &feature_rdm,
19661812 &feature_ccpp,
1967 &feature_lse,
1968 &feature_fpArmv8,
1969 &feature_ras,
1970 &feature_dotprod,
19711813 &feature_lor,
1814 &feature_dotprod,
19721815 &feature_pan,
1973 &feature_crc,
1974 &feature_rcpc,
1975 &feature_uaops,
1816 &feature_lse,
1817 &feature_rdm,
1818 &feature_ras,
19761819 &feature_vh,
1820 &feature_fpArmv8,
1821 &feature_uaops,
1822 &feature_rcpc,
19771823 &feature_ssbs,
1824 &feature_crc,
19781825 &feature_a76,
19791826 },
19801827};
19811828
19821829pub const cpu_cyclone = Cpu{
19831830 .name = "cyclone",
1984 .llvm_name = "cyclone",
1985 .subfeatures = &[_]*const Feature {
1986 &feature_zczGp,
1987 &feature_arithBccFusion,
1988 &feature_fuseAes,
1989 &feature_zczFp,
1831 .llvm_name = "cyclone",
1832 .subfeatures = &[_]*const Feature {
19901833 &feature_zczFpWorkaround,
1991 &feature_fpArmv8,
1992 &feature_perfmon,
1993 &feature_disableLatencySchedHeuristic,
1834 &feature_fuseAes,
19941835 &feature_zcm,
19951836 &feature_arithCbzFusion,
1996 &feature_fuseCryptoEor,
1837 &feature_perfmon,
19971838 &feature_alternateSextloadCvtF32Pattern,
1839 &feature_arithBccFusion,
1840 &feature_disableLatencySchedHeuristic,
1841 &feature_zczGp,
1842 &feature_fuseCryptoEor,
1843 &feature_fpArmv8,
1844 &feature_zczFp,
19981845 &feature_cyclone,
19991846 },
20001847};
......@@ -2003,17 +1850,17 @@ pub const cpu_exynosM1 = Cpu{
20031850 .name = "exynos-m1",
20041851 .llvm_name = "exynos-m1",
20051852 .subfeatures = &[_]*const Feature {
1853 &feature_useReciprocalSquareRoot,
1854 &feature_fuseAes,
20061855 &feature_usePostraScheduler,
20071856 &feature_slowMisaligned128store,
2008 &feature_customCheapAsMove,
2009 &feature_fuseAes,
2010 &feature_zczFp,
2011 &feature_fpArmv8,
20121857 &feature_perfmon,
2013 &feature_slowPaired128,
2014 &feature_useReciprocalSquareRoot,
1858 &feature_fpArmv8,
1859 &feature_customCheapAsMove,
20151860 &feature_force32bitJumpTables,
1861 &feature_zczFp,
20161862 &feature_crc,
1863 &feature_slowPaired128,
20171864 &feature_exynosm1,
20181865 },
20191866};
......@@ -2022,16 +1869,16 @@ pub const cpu_exynosM2 = Cpu{
20221869 .name = "exynos-m2",
20231870 .llvm_name = "exynos-m2",
20241871 .subfeatures = &[_]*const Feature {
1872 &feature_fuseAes,
20251873 &feature_usePostraScheduler,
20261874 &feature_slowMisaligned128store,
2027 &feature_customCheapAsMove,
2028 &feature_fuseAes,
2029 &feature_zczFp,
2030 &feature_fpArmv8,
20311875 &feature_perfmon,
2032 &feature_slowPaired128,
1876 &feature_fpArmv8,
1877 &feature_customCheapAsMove,
20331878 &feature_force32bitJumpTables,
1879 &feature_zczFp,
20341880 &feature_crc,
1881 &feature_slowPaired128,
20351882 &feature_exynosm2,
20361883 },
20371884};
......@@ -2040,19 +1887,19 @@ pub const cpu_exynosM3 = Cpu{
20401887 .name = "exynos-m3",
20411888 .llvm_name = "exynos-m3",
20421889 .subfeatures = &[_]*const Feature {
2043 &feature_usePostraScheduler,
2044 &feature_customCheapAsMove,
1890 &feature_fuseLiterals,
1891 &feature_predictableSelectExpensive,
20451892 &feature_fuseAes,
20461893 &feature_fuseAddress,
2047 &feature_zczFp,
2048 &feature_fpArmv8,
1894 &feature_fuseCsel,
1895 &feature_usePostraScheduler,
20491896 &feature_perfmon,
2050 &feature_predictableSelectExpensive,
2051 &feature_fuseLiterals,
1897 &feature_fpArmv8,
1898 &feature_customCheapAsMove,
1899 &feature_lslFast,
20521900 &feature_force32bitJumpTables,
1901 &feature_zczFp,
20531902 &feature_crc,
2054 &feature_lslFast,
2055 &feature_fuseCsel,
20561903 &feature_exynosm3,
20571904 },
20581905};
......@@ -2061,31 +1908,31 @@ pub const cpu_exynosM4 = Cpu{
20611908 .name = "exynos-m4",
20621909 .llvm_name = "exynos-m4",
20631910 .subfeatures = &[_]*const Feature {
1911 &feature_fuseLiterals,
1912 &feature_fuseAes,
20641913 &feature_ccpp,
2065 &feature_perfmon,
1914 &feature_lor,
20661915 &feature_dotprod,
2067 &feature_fuseArithLogic,
2068 &feature_force32bitJumpTables,
2069 &feature_lslFast,
2070 &feature_zczGp,
1916 &feature_fpArmv8,
20711917 &feature_customCheapAsMove,
2072 &feature_fuseAes,
1918 &feature_lslFast,
1919 &feature_crc,
20731920 &feature_fuseAddress,
2074 &feature_lse,
20751921 &feature_arithCbzFusion,
2076 &feature_uaops,
1922 &feature_perfmon,
1923 &feature_arithBccFusion,
1924 &feature_zczGp,
1925 &feature_rdm,
1926 &feature_force32bitJumpTables,
1927 &feature_pan,
1928 &feature_lse,
20771929 &feature_fuseCsel,
1930 &feature_uaops,
1931 &feature_fuseArithLogic,
1932 &feature_usePostraScheduler,
20781933 &feature_vh,
2079 &feature_rdm,
2080 &feature_fpArmv8,
20811934 &feature_ras,
2082 &feature_fuseLiterals,
2083 &feature_crc,
2084 &feature_usePostraScheduler,
2085 &feature_arithBccFusion,
20861935 &feature_zczFp,
2087 &feature_lor,
2088 &feature_pan,
20891936 &feature_exynosm4,
20901937 },
20911938};
......@@ -2094,31 +1941,31 @@ pub const cpu_exynosM5 = Cpu{
20941941 .name = "exynos-m5",
20951942 .llvm_name = "exynos-m5",
20961943 .subfeatures = &[_]*const Feature {
1944 &feature_fuseLiterals,
1945 &feature_fuseAes,
20971946 &feature_ccpp,
2098 &feature_perfmon,
1947 &feature_lor,
20991948 &feature_dotprod,
2100 &feature_fuseArithLogic,
2101 &feature_force32bitJumpTables,
2102 &feature_lslFast,
2103 &feature_zczGp,
1949 &feature_fpArmv8,
21041950 &feature_customCheapAsMove,
2105 &feature_fuseAes,
1951 &feature_lslFast,
1952 &feature_crc,
21061953 &feature_fuseAddress,
2107 &feature_lse,
21081954 &feature_arithCbzFusion,
2109 &feature_uaops,
1955 &feature_perfmon,
1956 &feature_arithBccFusion,
1957 &feature_zczGp,
1958 &feature_rdm,
1959 &feature_force32bitJumpTables,
1960 &feature_pan,
1961 &feature_lse,
21101962 &feature_fuseCsel,
1963 &feature_uaops,
1964 &feature_fuseArithLogic,
1965 &feature_usePostraScheduler,
21111966 &feature_vh,
2112 &feature_rdm,
2113 &feature_fpArmv8,
21141967 &feature_ras,
2115 &feature_fuseLiterals,
2116 &feature_crc,
2117 &feature_usePostraScheduler,
2118 &feature_arithBccFusion,
21191968 &feature_zczFp,
2120 &feature_lor,
2121 &feature_pan,
21221969 &feature_exynosm4,
21231970 },
21241971};
......@@ -2127,17 +1974,17 @@ pub const cpu_falkor = Cpu{
21271974 .name = "falkor",
21281975 .llvm_name = "falkor",
21291976 .subfeatures = &[_]*const Feature {
2130 &feature_rdm,
1977 &feature_predictableSelectExpensive,
21311978 &feature_usePostraScheduler,
2132 &feature_zczGp,
1979 &feature_perfmon,
21331980 &feature_slowStrqroStore,
1981 &feature_rdm,
1982 &feature_zczGp,
1983 &feature_fpArmv8,
21341984 &feature_customCheapAsMove,
1985 &feature_lslFast,
21351986 &feature_zczFp,
2136 &feature_fpArmv8,
2137 &feature_perfmon,
2138 &feature_predictableSelectExpensive,
21391987 &feature_crc,
2140 &feature_lslFast,
21411988 &feature_falkor,
21421989 },
21431990};
......@@ -2160,15 +2007,15 @@ pub const cpu_kryo = Cpu{
21602007 .name = "kryo",
21612008 .llvm_name = "kryo",
21622009 .subfeatures = &[_]*const Feature {
2010 &feature_predictableSelectExpensive,
21632011 &feature_usePostraScheduler,
2012 &feature_perfmon,
21642013 &feature_zczGp,
2014 &feature_fpArmv8,
21652015 &feature_customCheapAsMove,
2016 &feature_lslFast,
21662017 &feature_zczFp,
2167 &feature_fpArmv8,
2168 &feature_perfmon,
2169 &feature_predictableSelectExpensive,
21702018 &feature_crc,
2171 &feature_lslFast,
21722019 &feature_kryo,
21732020 },
21742021};
......@@ -2177,19 +2024,19 @@ pub const cpu_neoverseE1 = Cpu{
21772024 .name = "neoverse-e1",
21782025 .llvm_name = "neoverse-e1",
21792026 .subfeatures = &[_]*const Feature {
2180 &feature_rdm,
21812027 &feature_ccpp,
2182 &feature_lse,
2183 &feature_fpArmv8,
2184 &feature_ras,
2185 &feature_dotprod,
21862028 &feature_lor,
2029 &feature_dotprod,
21872030 &feature_pan,
2188 &feature_crc,
2189 &feature_rcpc,
2190 &feature_uaops,
2031 &feature_lse,
2032 &feature_rdm,
2033 &feature_ras,
21912034 &feature_vh,
2035 &feature_fpArmv8,
2036 &feature_uaops,
2037 &feature_rcpc,
21922038 &feature_ssbs,
2039 &feature_crc,
21932040 &feature_neoversee1,
21942041 },
21952042};
......@@ -2198,20 +2045,20 @@ pub const cpu_neoverseN1 = Cpu{
21982045 .name = "neoverse-n1",
21992046 .llvm_name = "neoverse-n1",
22002047 .subfeatures = &[_]*const Feature {
2201 &feature_rdm,
22022048 &feature_ccpp,
2203 &feature_lse,
2204 &feature_fpArmv8,
2205 &feature_ras,
2206 &feature_dotprod,
22072049 &feature_lor,
2050 &feature_dotprod,
22082051 &feature_spe,
22092052 &feature_pan,
2210 &feature_crc,
2211 &feature_rcpc,
2212 &feature_uaops,
2053 &feature_lse,
2054 &feature_rdm,
2055 &feature_ras,
22132056 &feature_vh,
2057 &feature_fpArmv8,
2058 &feature_uaops,
2059 &feature_rcpc,
22142060 &feature_ssbs,
2061 &feature_crc,
22152062 &feature_neoversen1,
22162063 },
22172064};
......@@ -2220,36 +2067,36 @@ pub const cpu_saphira = Cpu{
22202067 .name = "saphira",
22212068 .llvm_name = "saphira",
22222069 .subfeatures = &[_]*const Feature {
2223 &feature_am,
2224 &feature_nv,
22252070 &feature_ccpp,
2226 &feature_predictableSelectExpensive,
2227 &feature_perfmon,
2071 &feature_lor,
22282072 &feature_dotprod,
2229 &feature_spe,
2073 &feature_fpArmv8,
2074 &feature_customCheapAsMove,
22302075 &feature_lslFast,
2076 &feature_crc,
2077 &feature_fmi,
2078 &feature_predictableSelectExpensive,
2079 &feature_tracev84,
2080 &feature_tlbRmi,
2081 &feature_perfmon,
22312082 &feature_zczGp,
2232 &feature_customCheapAsMove,
2083 &feature_rdm,
2084 &feature_ccidx,
2085 &feature_mpam,
2086 &feature_pan,
22332087 &feature_lse,
22342088 &feature_rcpc,
22352089 &feature_uaops,
2236 &feature_ccidx,
2237 &feature_vh,
2238 &feature_tracev84,
2239 &feature_rdm,
2240 &feature_fpArmv8,
2090 &feature_sel2,
2091 &feature_usePostraScheduler,
2092 &feature_nv,
2093 &feature_am,
2094 &feature_spe,
22412095 &feature_dit,
2242 &feature_mpam,
2096 &feature_vh,
22432097 &feature_ras,
2244 &feature_tlbRmi,
2245 &feature_fmi,
2246 &feature_crc,
2247 &feature_usePostraScheduler,
2248 &feature_pa,
22492098 &feature_zczFp,
2250 &feature_sel2,
2251 &feature_lor,
2252 &feature_pan,
2099 &feature_pa,
22532100 &feature_saphira,
22542101 },
22552102};
......@@ -2258,10 +2105,10 @@ pub const cpu_thunderx = Cpu{
22582105 .name = "thunderx",
22592106 .llvm_name = "thunderx",
22602107 .subfeatures = &[_]*const Feature {
2261 &feature_usePostraScheduler,
22622108 &feature_predictableSelectExpensive,
2263 &feature_fpArmv8,
2109 &feature_usePostraScheduler,
22642110 &feature_perfmon,
2111 &feature_fpArmv8,
22652112 &feature_crc,
22662113 &feature_thunderx,
22672114 },
......@@ -2271,17 +2118,17 @@ pub const cpu_thunderx2t99 = Cpu{
22712118 .name = "thunderx2t99",
22722119 .llvm_name = "thunderx2t99",
22732120 .subfeatures = &[_]*const Feature {
2274 &feature_rdm,
2275 &feature_usePostraScheduler,
2276 &feature_arithBccFusion,
2277 &feature_lse,
2278 &feature_fpArmv8,
22792121 &feature_predictableSelectExpensive,
2122 &feature_usePostraScheduler,
22802123 &feature_lor,
2281 &feature_crc,
2124 &feature_lse,
22822125 &feature_pan,
2126 &feature_arithBccFusion,
2127 &feature_rdm,
22832128 &feature_aggressiveFma,
22842129 &feature_vh,
2130 &feature_fpArmv8,
2131 &feature_crc,
22852132 &feature_thunderx2t99,
22862133 },
22872134};
......@@ -2290,10 +2137,10 @@ pub const cpu_thunderxt81 = Cpu{
22902137 .name = "thunderxt81",
22912138 .llvm_name = "thunderxt81",
22922139 .subfeatures = &[_]*const Feature {
2293 &feature_usePostraScheduler,
22942140 &feature_predictableSelectExpensive,
2295 &feature_fpArmv8,
2141 &feature_usePostraScheduler,
22962142 &feature_perfmon,
2143 &feature_fpArmv8,
22972144 &feature_crc,
22982145 &feature_thunderxt81,
22992146 },
......@@ -2303,10 +2150,10 @@ pub const cpu_thunderxt83 = Cpu{
23032150 .name = "thunderxt83",
23042151 .llvm_name = "thunderxt83",
23052152 .subfeatures = &[_]*const Feature {
2306 &feature_usePostraScheduler,
23072153 &feature_predictableSelectExpensive,
2308 &feature_fpArmv8,
2154 &feature_usePostraScheduler,
23092155 &feature_perfmon,
2156 &feature_fpArmv8,
23102157 &feature_crc,
23112158 &feature_thunderxt83,
23122159 },
......@@ -2316,10 +2163,10 @@ pub const cpu_thunderxt88 = Cpu{
23162163 .name = "thunderxt88",
23172164 .llvm_name = "thunderxt88",
23182165 .subfeatures = &[_]*const Feature {
2319 &feature_usePostraScheduler,
23202166 &feature_predictableSelectExpensive,
2321 &feature_fpArmv8,
2167 &feature_usePostraScheduler,
23222168 &feature_perfmon,
2169 &feature_fpArmv8,
23232170 &feature_crc,
23242171 &feature_thunderxt88,
23252172 },
......@@ -2329,22 +2176,22 @@ pub const cpu_tsv110 = Cpu{
23292176 .name = "tsv110",
23302177 .llvm_name = "tsv110",
23312178 .subfeatures = &[_]*const Feature {
2332 &feature_rdm,
2333 &feature_usePostraScheduler,
2334 &feature_customCheapAsMove,
23352179 &feature_fuseAes,
2180 &feature_usePostraScheduler,
23362181 &feature_ccpp,
2337 &feature_lse,
2338 &feature_fpArmv8,
2339 &feature_perfmon,
2340 &feature_ras,
2341 &feature_dotprod,
23422182 &feature_lor,
2183 &feature_dotprod,
2184 &feature_uaops,
2185 &feature_perfmon,
23432186 &feature_spe,
2344 &feature_crc,
23452187 &feature_pan,
2346 &feature_uaops,
2188 &feature_lse,
2189 &feature_rdm,
23472190 &feature_vh,
2191 &feature_fpArmv8,
2192 &feature_customCheapAsMove,
2193 &feature_ras,
2194 &feature_crc,
23482195 &feature_tsv110,
23492196 },
23502197};
lib/std/target/amdgpu.zig+541-649
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_BitInsts16 = Feature{
55 .name = "16-bit-insts",
66 .description = "Has i16/f16 instructions",
7 .llvm_name = "16-bit-insts",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_BitInsts16 = Feature{
1211pub const feature_addNoCarryInsts = Feature{
1312 .name = "add-no-carry-insts",
1413 .description = "Have VALU add/sub instructions without carry out",
15 .llvm_name = "add-no-carry-insts",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_addNoCarryInsts = Feature{
2018pub const feature_apertureRegs = Feature{
2119 .name = "aperture-regs",
2220 .description = "Has Memory Aperture Base and Size Registers",
23 .llvm_name = "aperture-regs",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_apertureRegs = Feature{
2825pub const feature_atomicFaddInsts = Feature{
2926 .name = "atomic-fadd-insts",
3027 .description = "Has buffer_atomic_add_f32, buffer_atomic_pk_add_f16, global_atomic_add_f32, global_atomic_pk_add_f16 instructions",
31 .llvm_name = "atomic-fadd-insts",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_atomicFaddInsts = Feature{
3632pub const feature_autoWaitcntBeforeBarrier = Feature{
3733 .name = "auto-waitcnt-before-barrier",
3834 .description = "Hardware automatically inserts waitcnt before barrier",
39 .llvm_name = "auto-waitcnt-before-barrier",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_autoWaitcntBeforeBarrier = Feature{
4439pub const feature_ciInsts = Feature{
4540 .name = "ci-insts",
4641 .description = "Additional instructions for CI+",
47 .llvm_name = "ci-insts",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_ciInsts = Feature{
5246pub const feature_codeObjectV3 = Feature{
5347 .name = "code-object-v3",
5448 .description = "Generate code object version 3",
55 .llvm_name = "code-object-v3",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_codeObjectV3 = Feature{
6053pub const feature_cumode = Feature{
6154 .name = "cumode",
6255 .description = "Enable CU wavefront execution mode",
63 .llvm_name = "cumode",
6456 .subfeatures = &[_]*const Feature {
6557 },
6658};
......@@ -68,7 +60,6 @@ pub const feature_cumode = Feature{
6860pub const feature_dlInsts = Feature{
6961 .name = "dl-insts",
7062 .description = "Has v_fmac_f32 and v_xnor_b32 instructions",
71 .llvm_name = "dl-insts",
7263 .subfeatures = &[_]*const Feature {
7364 },
7465};
......@@ -76,7 +67,6 @@ pub const feature_dlInsts = Feature{
7667pub const feature_dpp = Feature{
7768 .name = "dpp",
7869 .description = "Support DPP (Data Parallel Primitives) extension",
79 .llvm_name = "dpp",
8070 .subfeatures = &[_]*const Feature {
8171 },
8272};
......@@ -84,7 +74,6 @@ pub const feature_dpp = Feature{
8474pub const feature_dpp8 = Feature{
8575 .name = "dpp8",
8676 .description = "Support DPP8 (Data Parallel Primitives) extension",
87 .llvm_name = "dpp8",
8877 .subfeatures = &[_]*const Feature {
8978 },
9079};
......@@ -92,7 +81,6 @@ pub const feature_dpp8 = Feature{
9281pub const feature_noSramEccSupport = Feature{
9382 .name = "no-sram-ecc-support",
9483 .description = "Hardware does not support SRAM ECC",
95 .llvm_name = "no-sram-ecc-support",
9684 .subfeatures = &[_]*const Feature {
9785 },
9886};
......@@ -100,7 +88,6 @@ pub const feature_noSramEccSupport = Feature{
10088pub const feature_noXnackSupport = Feature{
10189 .name = "no-xnack-support",
10290 .description = "Hardware does not support XNACK",
103 .llvm_name = "no-xnack-support",
10491 .subfeatures = &[_]*const Feature {
10592 },
10693};
......@@ -108,7 +95,6 @@ pub const feature_noXnackSupport = Feature{
10895pub const feature_dot1Insts = Feature{
10996 .name = "dot1-insts",
11097 .description = "Has v_dot4_i32_i8 and v_dot8_i32_i4 instructions",
111 .llvm_name = "dot1-insts",
11298 .subfeatures = &[_]*const Feature {
11399 },
114100};
......@@ -116,7 +102,6 @@ pub const feature_dot1Insts = Feature{
116102pub const feature_dot2Insts = Feature{
117103 .name = "dot2-insts",
118104 .description = "Has v_dot2_f32_f16, v_dot2_i32_i16, v_dot2_u32_u16, v_dot4_u32_u8, v_dot8_u32_u4 instructions",
119 .llvm_name = "dot2-insts",
120105 .subfeatures = &[_]*const Feature {
121106 },
122107};
......@@ -124,7 +109,6 @@ pub const feature_dot2Insts = Feature{
124109pub const feature_dot3Insts = Feature{
125110 .name = "dot3-insts",
126111 .description = "Has v_dot8c_i32_i4 instruction",
127 .llvm_name = "dot3-insts",
128112 .subfeatures = &[_]*const Feature {
129113 },
130114};
......@@ -132,7 +116,6 @@ pub const feature_dot3Insts = Feature{
132116pub const feature_dot4Insts = Feature{
133117 .name = "dot4-insts",
134118 .description = "Has v_dot2c_i32_i16 instruction",
135 .llvm_name = "dot4-insts",
136119 .subfeatures = &[_]*const Feature {
137120 },
138121};
......@@ -140,7 +123,6 @@ pub const feature_dot4Insts = Feature{
140123pub const feature_dot5Insts = Feature{
141124 .name = "dot5-insts",
142125 .description = "Has v_dot2c_f32_f16 instruction",
143 .llvm_name = "dot5-insts",
144126 .subfeatures = &[_]*const Feature {
145127 },
146128};
......@@ -148,7 +130,6 @@ pub const feature_dot5Insts = Feature{
148130pub const feature_dot6Insts = Feature{
149131 .name = "dot6-insts",
150132 .description = "Has v_dot4c_i32_i8 instruction",
151 .llvm_name = "dot6-insts",
152133 .subfeatures = &[_]*const Feature {
153134 },
154135};
......@@ -156,7 +137,6 @@ pub const feature_dot6Insts = Feature{
156137pub const feature_DumpCode = Feature{
157138 .name = "DumpCode",
158139 .description = "Dump MachineInstrs in the CodeEmitter",
159 .llvm_name = "DumpCode",
160140 .subfeatures = &[_]*const Feature {
161141 },
162142};
......@@ -164,7 +144,6 @@ pub const feature_DumpCode = Feature{
164144pub const feature_dumpcode = Feature{
165145 .name = "dumpcode",
166146 .description = "Dump MachineInstrs in the CodeEmitter",
167 .llvm_name = "dumpcode",
168147 .subfeatures = &[_]*const Feature {
169148 },
170149};
......@@ -172,7 +151,6 @@ pub const feature_dumpcode = Feature{
172151pub const feature_enableDs128 = Feature{
173152 .name = "enable-ds128",
174153 .description = "Use ds_{read|write}_b128",
175 .llvm_name = "enable-ds128",
176154 .subfeatures = &[_]*const Feature {
177155 },
178156};
......@@ -180,7 +158,6 @@ pub const feature_enableDs128 = Feature{
180158pub const feature_loadStoreOpt = Feature{
181159 .name = "load-store-opt",
182160 .description = "Enable SI load/store optimizer pass",
183 .llvm_name = "load-store-opt",
184161 .subfeatures = &[_]*const Feature {
185162 },
186163};
......@@ -188,7 +165,6 @@ pub const feature_loadStoreOpt = Feature{
188165pub const feature_enablePrtStrictNull = Feature{
189166 .name = "enable-prt-strict-null",
190167 .description = "Enable zeroing of result registers for sparse texture fetches",
191 .llvm_name = "enable-prt-strict-null",
192168 .subfeatures = &[_]*const Feature {
193169 },
194170};
......@@ -196,7 +172,6 @@ pub const feature_enablePrtStrictNull = Feature{
196172pub const feature_siScheduler = Feature{
197173 .name = "si-scheduler",
198174 .description = "Enable SI Machine Scheduler",
199 .llvm_name = "si-scheduler",
200175 .subfeatures = &[_]*const Feature {
201176 },
202177};
......@@ -204,7 +179,6 @@ pub const feature_siScheduler = Feature{
204179pub const feature_unsafeDsOffsetFolding = Feature{
205180 .name = "unsafe-ds-offset-folding",
206181 .description = "Force using DS instruction immediate offsets on SI",
207 .llvm_name = "unsafe-ds-offset-folding",
208182 .subfeatures = &[_]*const Feature {
209183 },
210184};
......@@ -212,7 +186,6 @@ pub const feature_unsafeDsOffsetFolding = Feature{
212186pub const feature_fmaf = Feature{
213187 .name = "fmaf",
214188 .description = "Enable single precision FMA (not as fast as mul+add, but fused)",
215 .llvm_name = "fmaf",
216189 .subfeatures = &[_]*const Feature {
217190 },
218191};
......@@ -220,7 +193,6 @@ pub const feature_fmaf = Feature{
220193pub const feature_fp16Denormals = Feature{
221194 .name = "fp16-denormals",
222195 .description = "Enable half precision denormal handling",
223 .llvm_name = "fp16-denormals",
224196 .subfeatures = &[_]*const Feature {
225197 &feature_fp64,
226198 },
......@@ -229,7 +201,6 @@ pub const feature_fp16Denormals = Feature{
229201pub const feature_fp32Denormals = Feature{
230202 .name = "fp32-denormals",
231203 .description = "Enable single precision denormal handling",
232 .llvm_name = "fp32-denormals",
233204 .subfeatures = &[_]*const Feature {
234205 },
235206};
......@@ -237,7 +208,6 @@ pub const feature_fp32Denormals = Feature{
237208pub const feature_fp64 = Feature{
238209 .name = "fp64",
239210 .description = "Enable double precision operations",
240 .llvm_name = "fp64",
241211 .subfeatures = &[_]*const Feature {
242212 },
243213};
......@@ -245,7 +215,6 @@ pub const feature_fp64 = Feature{
245215pub const feature_fp64Denormals = Feature{
246216 .name = "fp64-denormals",
247217 .description = "Enable double and half precision denormal handling",
248 .llvm_name = "fp64-denormals",
249218 .subfeatures = &[_]*const Feature {
250219 &feature_fp64,
251220 },
......@@ -254,7 +223,6 @@ pub const feature_fp64Denormals = Feature{
254223pub const feature_fp64Fp16Denormals = Feature{
255224 .name = "fp64-fp16-denormals",
256225 .description = "Enable double and half precision denormal handling",
257 .llvm_name = "fp64-fp16-denormals",
258226 .subfeatures = &[_]*const Feature {
259227 &feature_fp64,
260228 },
......@@ -263,7 +231,6 @@ pub const feature_fp64Fp16Denormals = Feature{
263231pub const feature_fpExceptions = Feature{
264232 .name = "fp-exceptions",
265233 .description = "Enable floating point exceptions",
266 .llvm_name = "fp-exceptions",
267234 .subfeatures = &[_]*const Feature {
268235 },
269236};
......@@ -271,7 +238,6 @@ pub const feature_fpExceptions = Feature{
271238pub const feature_fastFmaf = Feature{
272239 .name = "fast-fmaf",
273240 .description = "Assuming f32 fma is at least as fast as mul + add",
274 .llvm_name = "fast-fmaf",
275241 .subfeatures = &[_]*const Feature {
276242 },
277243};
......@@ -279,7 +245,6 @@ pub const feature_fastFmaf = Feature{
279245pub const feature_flatAddressSpace = Feature{
280246 .name = "flat-address-space",
281247 .description = "Support flat address space",
282 .llvm_name = "flat-address-space",
283248 .subfeatures = &[_]*const Feature {
284249 },
285250};
......@@ -287,7 +252,6 @@ pub const feature_flatAddressSpace = Feature{
287252pub const feature_flatForGlobal = Feature{
288253 .name = "flat-for-global",
289254 .description = "Force to generate flat instruction for global",
290 .llvm_name = "flat-for-global",
291255 .subfeatures = &[_]*const Feature {
292256 },
293257};
......@@ -295,7 +259,6 @@ pub const feature_flatForGlobal = Feature{
295259pub const feature_flatGlobalInsts = Feature{
296260 .name = "flat-global-insts",
297261 .description = "Have global_* flat memory instructions",
298 .llvm_name = "flat-global-insts",
299262 .subfeatures = &[_]*const Feature {
300263 },
301264};
......@@ -303,7 +266,6 @@ pub const feature_flatGlobalInsts = Feature{
303266pub const feature_flatInstOffsets = Feature{
304267 .name = "flat-inst-offsets",
305268 .description = "Flat instructions have immediate offset addressing mode",
306 .llvm_name = "flat-inst-offsets",
307269 .subfeatures = &[_]*const Feature {
308270 },
309271};
......@@ -311,7 +273,6 @@ pub const feature_flatInstOffsets = Feature{
311273pub const feature_flatScratchInsts = Feature{
312274 .name = "flat-scratch-insts",
313275 .description = "Have scratch_* flat memory instructions",
314 .llvm_name = "flat-scratch-insts",
315276 .subfeatures = &[_]*const Feature {
316277 },
317278};
......@@ -319,7 +280,6 @@ pub const feature_flatScratchInsts = Feature{
319280pub const feature_flatSegmentOffsetBug = Feature{
320281 .name = "flat-segment-offset-bug",
321282 .description = "GFX10 bug, inst_offset ignored in flat segment",
322 .llvm_name = "flat-segment-offset-bug",
323283 .subfeatures = &[_]*const Feature {
324284 },
325285};
......@@ -327,7 +287,6 @@ pub const feature_flatSegmentOffsetBug = Feature{
327287pub const feature_fmaMixInsts = Feature{
328288 .name = "fma-mix-insts",
329289 .description = "Has v_fma_mix_f32, v_fma_mixlo_f16, v_fma_mixhi_f16 instructions",
330 .llvm_name = "fma-mix-insts",
331290 .subfeatures = &[_]*const Feature {
332291 },
333292};
......@@ -335,7 +294,6 @@ pub const feature_fmaMixInsts = Feature{
335294pub const feature_gcn3Encoding = Feature{
336295 .name = "gcn3-encoding",
337296 .description = "Encoding format for VI",
338 .llvm_name = "gcn3-encoding",
339297 .subfeatures = &[_]*const Feature {
340298 },
341299};
......@@ -343,7 +301,6 @@ pub const feature_gcn3Encoding = Feature{
343301pub const feature_gfx7Gfx8Gfx9Insts = Feature{
344302 .name = "gfx7-gfx8-gfx9-insts",
345303 .description = "Instructions shared in GFX7, GFX8, GFX9",
346 .llvm_name = "gfx7-gfx8-gfx9-insts",
347304 .subfeatures = &[_]*const Feature {
348305 },
349306};
......@@ -351,7 +308,6 @@ pub const feature_gfx7Gfx8Gfx9Insts = Feature{
351308pub const feature_gfx8Insts = Feature{
352309 .name = "gfx8-insts",
353310 .description = "Additional instructions for GFX8+",
354 .llvm_name = "gfx8-insts",
355311 .subfeatures = &[_]*const Feature {
356312 },
357313};
......@@ -359,45 +315,43 @@ pub const feature_gfx8Insts = Feature{
359315pub const feature_gfx9 = Feature{
360316 .name = "gfx9",
361317 .description = "GFX9 GPU generation",
362 .llvm_name = "gfx9",
363318 .subfeatures = &[_]*const Feature {
364 &feature_gfx9Insts,
319 &feature_fp64,
320 &feature_vop3p,
321 &feature_sMemrealtime,
322 &feature_gfx8Insts,
323 &feature_dpp,
324 &feature_sdwaSdst,
365325 &feature_ciInsts,
366 &feature_sdwa,
367 &feature_localmemorysize65536,
326 &feature_apertureRegs,
368327 &feature_scalarStores,
369 &feature_sdwaScalar,
370 &feature_sdwaSdst,
328 &feature_intClampInsts,
371329 &feature_gcn3Encoding,
372 &feature_apertureRegs,
373330 &feature_flatScratchInsts,
374 &feature_r128A16,
375 &feature_flatAddressSpace,
376 &feature_dpp,
377 &feature_addNoCarryInsts,
378 &feature_inv2piInlineImm,
379 &feature_fp64,
380 &feature_BitInsts16,
381 &feature_vgprIndexMode,
331 &feature_gfx7Gfx8Gfx9Insts,
382332 &feature_wavefrontsize64,
383 &feature_gfx8Insts,
384 &feature_flatGlobalInsts,
385 &feature_scalarFlatScratchInsts,
386333 &feature_scalarAtomics,
387 &feature_flatInstOffsets,
388 &feature_gfx7Gfx8Gfx9Insts,
389 &feature_vop3p,
390 &feature_sMemrealtime,
391 &feature_intClampInsts,
334 &feature_sdwaScalar,
392335 &feature_fastFmaf,
336 &feature_vgprIndexMode,
337 &feature_scalarFlatScratchInsts,
338 &feature_sdwa,
393339 &feature_sdwaOmod,
340 &feature_localmemorysize65536,
341 &feature_flatAddressSpace,
342 &feature_addNoCarryInsts,
343 &feature_flatInstOffsets,
344 &feature_inv2piInlineImm,
345 &feature_gfx9Insts,
346 &feature_flatGlobalInsts,
347 &feature_BitInsts16,
348 &feature_r128A16,
394349 },
395350};
396351
397352pub const feature_gfx9Insts = Feature{
398353 .name = "gfx9-insts",
399354 .description = "Additional instructions for GFX9+",
400 .llvm_name = "gfx9-insts",
401355 .subfeatures = &[_]*const Feature {
402356 },
403357};
......@@ -405,49 +359,47 @@ pub const feature_gfx9Insts = Feature{
405359pub const feature_gfx10 = Feature{
406360 .name = "gfx10",
407361 .description = "GFX10 GPU generation",
408 .llvm_name = "gfx10",
409362 .subfeatures = &[_]*const Feature {
410 &feature_movrel,
411 &feature_gfx9Insts,
412 &feature_ciInsts,
413 &feature_noSramEccSupport,
414 &feature_noSdstCmpx,
415 &feature_fmaMixInsts,
416 &feature_sdwa,
417 &feature_localmemorysize65536,
418 &feature_sdwaScalar,
363 &feature_registerBanking,
364 &feature_fp64,
365 &feature_vop3p,
366 &feature_sMemrealtime,
367 &feature_gfx8Insts,
368 &feature_dpp,
419369 &feature_sdwaSdst,
370 &feature_ciInsts,
420371 &feature_apertureRegs,
372 &feature_intClampInsts,
421373 &feature_flatScratchInsts,
374 &feature_sdwaScalar,
375 &feature_fastFmaf,
376 &feature_pkFmacF16Inst,
422377 &feature_vscnt,
423 &feature_noDataDepHazard,
378 &feature_movrel,
379 &feature_fmaMixInsts,
380 &feature_noSramEccSupport,
381 &feature_sdwa,
382 &feature_sdwaOmod,
383 &feature_vop3Literal,
384 &feature_dpp8,
385 &feature_gfx10Insts,
386 &feature_localmemorysize65536,
387 &feature_mimgR128,
424388 &feature_flatAddressSpace,
425 &feature_dpp,
426389 &feature_addNoCarryInsts,
390 &feature_noDataDepHazard,
391 &feature_flatInstOffsets,
427392 &feature_inv2piInlineImm,
428 &feature_fp64,
429 &feature_dpp8,
430 &feature_BitInsts16,
431 &feature_registerBanking,
432 &feature_gfx8Insts,
393 &feature_gfx9Insts,
433394 &feature_flatGlobalInsts,
434 &feature_flatInstOffsets,
435 &feature_pkFmacF16Inst,
436 &feature_vop3p,
437 &feature_mimgR128,
438 &feature_intClampInsts,
439 &feature_sMemrealtime,
440 &feature_fastFmaf,
441 &feature_vop3Literal,
442 &feature_sdwaOmod,
443 &feature_gfx10Insts,
395 &feature_BitInsts16,
396 &feature_noSdstCmpx,
444397 },
445398};
446399
447400pub const feature_gfx10Insts = Feature{
448401 .name = "gfx10-insts",
449402 .description = "Additional instructions for GFX10+",
450 .llvm_name = "gfx10-insts",
451403 .subfeatures = &[_]*const Feature {
452404 },
453405};
......@@ -455,7 +407,6 @@ pub const feature_gfx10Insts = Feature{
455407pub const feature_instFwdPrefetchBug = Feature{
456408 .name = "inst-fwd-prefetch-bug",
457409 .description = "S_INST_PREFETCH instruction causes shader to hang",
458 .llvm_name = "inst-fwd-prefetch-bug",
459410 .subfeatures = &[_]*const Feature {
460411 },
461412};
......@@ -463,7 +414,6 @@ pub const feature_instFwdPrefetchBug = Feature{
463414pub const feature_intClampInsts = Feature{
464415 .name = "int-clamp-insts",
465416 .description = "Support clamp for integer destination",
466 .llvm_name = "int-clamp-insts",
467417 .subfeatures = &[_]*const Feature {
468418 },
469419};
......@@ -471,7 +421,6 @@ pub const feature_intClampInsts = Feature{
471421pub const feature_inv2piInlineImm = Feature{
472422 .name = "inv-2pi-inline-imm",
473423 .description = "Has 1 / (2 * pi) as inline immediate",
474 .llvm_name = "inv-2pi-inline-imm",
475424 .subfeatures = &[_]*const Feature {
476425 },
477426};
......@@ -479,7 +428,6 @@ pub const feature_inv2piInlineImm = Feature{
479428pub const feature_ldsbankcount16 = Feature{
480429 .name = "ldsbankcount16",
481430 .description = "The number of LDS banks per compute unit.",
482 .llvm_name = "ldsbankcount16",
483431 .subfeatures = &[_]*const Feature {
484432 },
485433};
......@@ -487,7 +435,6 @@ pub const feature_ldsbankcount16 = Feature{
487435pub const feature_ldsbankcount32 = Feature{
488436 .name = "ldsbankcount32",
489437 .description = "The number of LDS banks per compute unit.",
490 .llvm_name = "ldsbankcount32",
491438 .subfeatures = &[_]*const Feature {
492439 },
493440};
......@@ -495,7 +442,6 @@ pub const feature_ldsbankcount32 = Feature{
495442pub const feature_ldsBranchVmemWarHazard = Feature{
496443 .name = "lds-branch-vmem-war-hazard",
497444 .description = "Switching between LDS and VMEM-tex not waiting VM_VSRC=0",
498 .llvm_name = "lds-branch-vmem-war-hazard",
499445 .subfeatures = &[_]*const Feature {
500446 },
501447};
......@@ -503,7 +449,6 @@ pub const feature_ldsBranchVmemWarHazard = Feature{
503449pub const feature_ldsMisalignedBug = Feature{
504450 .name = "lds-misaligned-bug",
505451 .description = "Some GFX10 bug with misaligned multi-dword LDS access in WGP mode",
506 .llvm_name = "lds-misaligned-bug",
507452 .subfeatures = &[_]*const Feature {
508453 },
509454};
......@@ -511,7 +456,6 @@ pub const feature_ldsMisalignedBug = Feature{
511456pub const feature_localmemorysize0 = Feature{
512457 .name = "localmemorysize0",
513458 .description = "The size of local memory in bytes",
514 .llvm_name = "localmemorysize0",
515459 .subfeatures = &[_]*const Feature {
516460 },
517461};
......@@ -519,7 +463,6 @@ pub const feature_localmemorysize0 = Feature{
519463pub const feature_localmemorysize32768 = Feature{
520464 .name = "localmemorysize32768",
521465 .description = "The size of local memory in bytes",
522 .llvm_name = "localmemorysize32768",
523466 .subfeatures = &[_]*const Feature {
524467 },
525468};
......@@ -527,7 +470,6 @@ pub const feature_localmemorysize32768 = Feature{
527470pub const feature_localmemorysize65536 = Feature{
528471 .name = "localmemorysize65536",
529472 .description = "The size of local memory in bytes",
530 .llvm_name = "localmemorysize65536",
531473 .subfeatures = &[_]*const Feature {
532474 },
533475};
......@@ -535,7 +477,6 @@ pub const feature_localmemorysize65536 = Feature{
535477pub const feature_maiInsts = Feature{
536478 .name = "mai-insts",
537479 .description = "Has mAI instructions",
538 .llvm_name = "mai-insts",
539480 .subfeatures = &[_]*const Feature {
540481 },
541482};
......@@ -543,7 +484,6 @@ pub const feature_maiInsts = Feature{
543484pub const feature_mfmaInlineLiteralBug = Feature{
544485 .name = "mfma-inline-literal-bug",
545486 .description = "MFMA cannot use inline literal as SrcC",
546 .llvm_name = "mfma-inline-literal-bug",
547487 .subfeatures = &[_]*const Feature {
548488 },
549489};
......@@ -551,7 +491,6 @@ pub const feature_mfmaInlineLiteralBug = Feature{
551491pub const feature_mimgR128 = Feature{
552492 .name = "mimg-r128",
553493 .description = "Support 128-bit texture resources",
554 .llvm_name = "mimg-r128",
555494 .subfeatures = &[_]*const Feature {
556495 },
557496};
......@@ -559,7 +498,6 @@ pub const feature_mimgR128 = Feature{
559498pub const feature_madMixInsts = Feature{
560499 .name = "mad-mix-insts",
561500 .description = "Has v_mad_mix_f32, v_mad_mixlo_f16, v_mad_mixhi_f16 instructions",
562 .llvm_name = "mad-mix-insts",
563501 .subfeatures = &[_]*const Feature {
564502 },
565503};
......@@ -567,7 +505,6 @@ pub const feature_madMixInsts = Feature{
567505pub const feature_maxPrivateElementSize4 = Feature{
568506 .name = "max-private-element-size-4",
569507 .description = "Maximum private access size may be 4",
570 .llvm_name = "max-private-element-size-4",
571508 .subfeatures = &[_]*const Feature {
572509 },
573510};
......@@ -575,7 +512,6 @@ pub const feature_maxPrivateElementSize4 = Feature{
575512pub const feature_maxPrivateElementSize8 = Feature{
576513 .name = "max-private-element-size-8",
577514 .description = "Maximum private access size may be 8",
578 .llvm_name = "max-private-element-size-8",
579515 .subfeatures = &[_]*const Feature {
580516 },
581517};
......@@ -583,7 +519,6 @@ pub const feature_maxPrivateElementSize8 = Feature{
583519pub const feature_maxPrivateElementSize16 = Feature{
584520 .name = "max-private-element-size-16",
585521 .description = "Maximum private access size may be 16",
586 .llvm_name = "max-private-element-size-16",
587522 .subfeatures = &[_]*const Feature {
588523 },
589524};
......@@ -591,7 +526,6 @@ pub const feature_maxPrivateElementSize16 = Feature{
591526pub const feature_movrel = Feature{
592527 .name = "movrel",
593528 .description = "Has v_movrel*_b32 instructions",
594 .llvm_name = "movrel",
595529 .subfeatures = &[_]*const Feature {
596530 },
597531};
......@@ -599,7 +533,6 @@ pub const feature_movrel = Feature{
599533pub const feature_nsaEncoding = Feature{
600534 .name = "nsa-encoding",
601535 .description = "Support NSA encoding for image instructions",
602 .llvm_name = "nsa-encoding",
603536 .subfeatures = &[_]*const Feature {
604537 },
605538};
......@@ -607,7 +540,6 @@ pub const feature_nsaEncoding = Feature{
607540pub const feature_nsaToVmemBug = Feature{
608541 .name = "nsa-to-vmem-bug",
609542 .description = "MIMG-NSA followed by VMEM fail if EXEC_LO or EXEC_HI equals zero",
610 .llvm_name = "nsa-to-vmem-bug",
611543 .subfeatures = &[_]*const Feature {
612544 },
613545};
......@@ -615,7 +547,6 @@ pub const feature_nsaToVmemBug = Feature{
615547pub const feature_noDataDepHazard = Feature{
616548 .name = "no-data-dep-hazard",
617549 .description = "Does not need SW waitstates",
618 .llvm_name = "no-data-dep-hazard",
619550 .subfeatures = &[_]*const Feature {
620551 },
621552};
......@@ -623,7 +554,6 @@ pub const feature_noDataDepHazard = Feature{
623554pub const feature_noSdstCmpx = Feature{
624555 .name = "no-sdst-cmpx",
625556 .description = "V_CMPX does not write VCC/SGPR in addition to EXEC",
626 .llvm_name = "no-sdst-cmpx",
627557 .subfeatures = &[_]*const Feature {
628558 },
629559};
......@@ -631,7 +561,6 @@ pub const feature_noSdstCmpx = Feature{
631561pub const feature_offset3fBug = Feature{
632562 .name = "offset-3f-bug",
633563 .description = "Branch offset of 3f hardware bug",
634 .llvm_name = "offset-3f-bug",
635564 .subfeatures = &[_]*const Feature {
636565 },
637566};
......@@ -639,7 +568,6 @@ pub const feature_offset3fBug = Feature{
639568pub const feature_pkFmacF16Inst = Feature{
640569 .name = "pk-fmac-f16-inst",
641570 .description = "Has v_pk_fmac_f16 instruction",
642 .llvm_name = "pk-fmac-f16-inst",
643571 .subfeatures = &[_]*const Feature {
644572 },
645573};
......@@ -647,7 +575,6 @@ pub const feature_pkFmacF16Inst = Feature{
647575pub const feature_promoteAlloca = Feature{
648576 .name = "promote-alloca",
649577 .description = "Enable promote alloca pass",
650 .llvm_name = "promote-alloca",
651578 .subfeatures = &[_]*const Feature {
652579 },
653580};
......@@ -655,7 +582,6 @@ pub const feature_promoteAlloca = Feature{
655582pub const feature_r128A16 = Feature{
656583 .name = "r128-a16",
657584 .description = "Support 16 bit coordindates/gradients/lod/clamp/mip types on gfx9",
658 .llvm_name = "r128-a16",
659585 .subfeatures = &[_]*const Feature {
660586 },
661587};
......@@ -663,7 +589,6 @@ pub const feature_r128A16 = Feature{
663589pub const feature_registerBanking = Feature{
664590 .name = "register-banking",
665591 .description = "Has register banking",
666 .llvm_name = "register-banking",
667592 .subfeatures = &[_]*const Feature {
668593 },
669594};
......@@ -671,7 +596,6 @@ pub const feature_registerBanking = Feature{
671596pub const feature_sdwa = Feature{
672597 .name = "sdwa",
673598 .description = "Support SDWA (Sub-DWORD Addressing) extension",
674 .llvm_name = "sdwa",
675599 .subfeatures = &[_]*const Feature {
676600 },
677601};
......@@ -679,7 +603,6 @@ pub const feature_sdwa = Feature{
679603pub const feature_sdwaMav = Feature{
680604 .name = "sdwa-mav",
681605 .description = "Support v_mac_f32/f16 with SDWA (Sub-DWORD Addressing) extension",
682 .llvm_name = "sdwa-mav",
683606 .subfeatures = &[_]*const Feature {
684607 },
685608};
......@@ -687,7 +610,6 @@ pub const feature_sdwaMav = Feature{
687610pub const feature_sdwaOmod = Feature{
688611 .name = "sdwa-omod",
689612 .description = "Support OMod with SDWA (Sub-DWORD Addressing) extension",
690 .llvm_name = "sdwa-omod",
691613 .subfeatures = &[_]*const Feature {
692614 },
693615};
......@@ -695,7 +617,6 @@ pub const feature_sdwaOmod = Feature{
695617pub const feature_sdwaOutModsVopc = Feature{
696618 .name = "sdwa-out-mods-vopc",
697619 .description = "Support clamp for VOPC with SDWA (Sub-DWORD Addressing) extension",
698 .llvm_name = "sdwa-out-mods-vopc",
699620 .subfeatures = &[_]*const Feature {
700621 },
701622};
......@@ -703,7 +624,6 @@ pub const feature_sdwaOutModsVopc = Feature{
703624pub const feature_sdwaScalar = Feature{
704625 .name = "sdwa-scalar",
705626 .description = "Support scalar register with SDWA (Sub-DWORD Addressing) extension",
706 .llvm_name = "sdwa-scalar",
707627 .subfeatures = &[_]*const Feature {
708628 },
709629};
......@@ -711,7 +631,6 @@ pub const feature_sdwaScalar = Feature{
711631pub const feature_sdwaSdst = Feature{
712632 .name = "sdwa-sdst",
713633 .description = "Support scalar dst for VOPC with SDWA (Sub-DWORD Addressing) extension",
714 .llvm_name = "sdwa-sdst",
715634 .subfeatures = &[_]*const Feature {
716635 },
717636};
......@@ -719,7 +638,6 @@ pub const feature_sdwaSdst = Feature{
719638pub const feature_sgprInitBug = Feature{
720639 .name = "sgpr-init-bug",
721640 .description = "VI SGPR initialization bug requiring a fixed SGPR allocation size",
722 .llvm_name = "sgpr-init-bug",
723641 .subfeatures = &[_]*const Feature {
724642 },
725643};
......@@ -727,7 +645,6 @@ pub const feature_sgprInitBug = Feature{
727645pub const feature_smemToVectorWriteHazard = Feature{
728646 .name = "smem-to-vector-write-hazard",
729647 .description = "s_load_dword followed by v_cmp page faults",
730 .llvm_name = "smem-to-vector-write-hazard",
731648 .subfeatures = &[_]*const Feature {
732649 },
733650};
......@@ -735,7 +652,6 @@ pub const feature_smemToVectorWriteHazard = Feature{
735652pub const feature_sMemrealtime = Feature{
736653 .name = "s-memrealtime",
737654 .description = "Has s_memrealtime instruction",
738 .llvm_name = "s-memrealtime",
739655 .subfeatures = &[_]*const Feature {
740656 },
741657};
......@@ -743,7 +659,6 @@ pub const feature_sMemrealtime = Feature{
743659pub const feature_sramEcc = Feature{
744660 .name = "sram-ecc",
745661 .description = "Enable SRAM ECC",
746 .llvm_name = "sram-ecc",
747662 .subfeatures = &[_]*const Feature {
748663 },
749664};
......@@ -751,7 +666,6 @@ pub const feature_sramEcc = Feature{
751666pub const feature_scalarAtomics = Feature{
752667 .name = "scalar-atomics",
753668 .description = "Has atomic scalar memory instructions",
754 .llvm_name = "scalar-atomics",
755669 .subfeatures = &[_]*const Feature {
756670 },
757671};
......@@ -759,7 +673,6 @@ pub const feature_scalarAtomics = Feature{
759673pub const feature_scalarFlatScratchInsts = Feature{
760674 .name = "scalar-flat-scratch-insts",
761675 .description = "Have s_scratch_* flat memory instructions",
762 .llvm_name = "scalar-flat-scratch-insts",
763676 .subfeatures = &[_]*const Feature {
764677 },
765678};
......@@ -767,7 +680,6 @@ pub const feature_scalarFlatScratchInsts = Feature{
767680pub const feature_scalarStores = Feature{
768681 .name = "scalar-stores",
769682 .description = "Has store scalar memory instructions",
770 .llvm_name = "scalar-stores",
771683 .subfeatures = &[_]*const Feature {
772684 },
773685};
......@@ -775,42 +687,39 @@ pub const feature_scalarStores = Feature{
775687pub const feature_seaIslands = Feature{
776688 .name = "sea-islands",
777689 .description = "SEA_ISLANDS GPU generation",
778 .llvm_name = "sea-islands",
779690 .subfeatures = &[_]*const Feature {
780 &feature_gfx7Gfx8Gfx9Insts,
781 &feature_mimgR128,
782 &feature_localmemorysize65536,
783 &feature_movrel,
784691 &feature_trigReducedRange,
785 &feature_wavefrontsize64,
786 &feature_flatAddressSpace,
787 &feature_ciInsts,
788692 &feature_noSramEccSupport,
789693 &feature_fp64,
694 &feature_movrel,
695 &feature_ciInsts,
696 &feature_localmemorysize65536,
697 &feature_mimgR128,
698 &feature_wavefrontsize64,
699 &feature_flatAddressSpace,
700 &feature_gfx7Gfx8Gfx9Insts,
790701 },
791702};
792703
793704pub const feature_southernIslands = Feature{
794705 .name = "southern-islands",
795706 .description = "SOUTHERN_ISLANDS GPU generation",
796 .llvm_name = "southern-islands",
797707 .subfeatures = &[_]*const Feature {
798 &feature_mimgR128,
799 &feature_movrel,
800708 &feature_localmemorysize32768,
801709 &feature_trigReducedRange,
802 &feature_ldsbankcount32,
803 &feature_wavefrontsize64,
804710 &feature_noSramEccSupport,
805 &feature_noXnackSupport,
806711 &feature_fp64,
712 &feature_movrel,
713 &feature_ldsbankcount32,
714 &feature_noXnackSupport,
715 &feature_mimgR128,
716 &feature_wavefrontsize64,
807717 },
808718};
809719
810720pub const feature_trapHandler = Feature{
811721 .name = "trap-handler",
812722 .description = "Trap handler support",
813 .llvm_name = "trap-handler",
814723 .subfeatures = &[_]*const Feature {
815724 },
816725};
......@@ -818,7 +727,6 @@ pub const feature_trapHandler = Feature{
818727pub const feature_trigReducedRange = Feature{
819728 .name = "trig-reduced-range",
820729 .description = "Requires use of fract on arguments to trig instructions",
821 .llvm_name = "trig-reduced-range",
822730 .subfeatures = &[_]*const Feature {
823731 },
824732};
......@@ -826,7 +734,6 @@ pub const feature_trigReducedRange = Feature{
826734pub const feature_unalignedBufferAccess = Feature{
827735 .name = "unaligned-buffer-access",
828736 .description = "Support unaligned global loads and stores",
829 .llvm_name = "unaligned-buffer-access",
830737 .subfeatures = &[_]*const Feature {
831738 },
832739};
......@@ -834,7 +741,6 @@ pub const feature_unalignedBufferAccess = Feature{
834741pub const feature_unalignedScratchAccess = Feature{
835742 .name = "unaligned-scratch-access",
836743 .description = "Support unaligned scratch loads and stores",
837 .llvm_name = "unaligned-scratch-access",
838744 .subfeatures = &[_]*const Feature {
839745 },
840746};
......@@ -842,7 +748,6 @@ pub const feature_unalignedScratchAccess = Feature{
842748pub const feature_unpackedD16Vmem = Feature{
843749 .name = "unpacked-d16-vmem",
844750 .description = "Has unpacked d16 vmem instructions",
845 .llvm_name = "unpacked-d16-vmem",
846751 .subfeatures = &[_]*const Feature {
847752 },
848753};
......@@ -850,7 +755,6 @@ pub const feature_unpackedD16Vmem = Feature{
850755pub const feature_vgprIndexMode = Feature{
851756 .name = "vgpr-index-mode",
852757 .description = "Has VGPR mode register indexing",
853 .llvm_name = "vgpr-index-mode",
854758 .subfeatures = &[_]*const Feature {
855759 },
856760};
......@@ -858,7 +762,6 @@ pub const feature_vgprIndexMode = Feature{
858762pub const feature_vmemToScalarWriteHazard = Feature{
859763 .name = "vmem-to-scalar-write-hazard",
860764 .description = "VMEM instruction followed by scalar writing to EXEC mask, M0 or SGPR leads to incorrect execution.",
861 .llvm_name = "vmem-to-scalar-write-hazard",
862765 .subfeatures = &[_]*const Feature {
863766 },
864767};
......@@ -866,7 +769,6 @@ pub const feature_vmemToScalarWriteHazard = Feature{
866769pub const feature_vop3Literal = Feature{
867770 .name = "vop3-literal",
868771 .description = "Can use one literal in VOP3",
869 .llvm_name = "vop3-literal",
870772 .subfeatures = &[_]*const Feature {
871773 },
872774};
......@@ -874,7 +776,6 @@ pub const feature_vop3Literal = Feature{
874776pub const feature_vop3p = Feature{
875777 .name = "vop3p",
876778 .description = "Has VOP3P packed instructions",
877 .llvm_name = "vop3p",
878779 .subfeatures = &[_]*const Feature {
879780 },
880781};
......@@ -882,7 +783,6 @@ pub const feature_vop3p = Feature{
882783pub const feature_vcmpxExecWarHazard = Feature{
883784 .name = "vcmpx-exec-war-hazard",
884785 .description = "V_CMPX WAR hazard on EXEC (V_CMPX issue ONLY)",
885 .llvm_name = "vcmpx-exec-war-hazard",
886786 .subfeatures = &[_]*const Feature {
887787 },
888788};
......@@ -890,7 +790,6 @@ pub const feature_vcmpxExecWarHazard = Feature{
890790pub const feature_vcmpxPermlaneHazard = Feature{
891791 .name = "vcmpx-permlane-hazard",
892792 .description = "TODO: describe me",
893 .llvm_name = "vcmpx-permlane-hazard",
894793 .subfeatures = &[_]*const Feature {
895794 },
896795};
......@@ -898,37 +797,35 @@ pub const feature_vcmpxPermlaneHazard = Feature{
898797pub const feature_volcanicIslands = Feature{
899798 .name = "volcanic-islands",
900799 .description = "VOLCANIC_ISLANDS GPU generation",
901 .llvm_name = "volcanic-islands",
902800 .subfeatures = &[_]*const Feature {
903 &feature_movrel,
801 &feature_fp64,
802 &feature_sMemrealtime,
803 &feature_gfx8Insts,
804 &feature_dpp,
904805 &feature_ciInsts,
806 &feature_scalarStores,
807 &feature_intClampInsts,
808 &feature_gcn3Encoding,
809 &feature_gfx7Gfx8Gfx9Insts,
810 &feature_wavefrontsize64,
811 &feature_movrel,
812 &feature_vgprIndexMode,
813 &feature_trigReducedRange,
905814 &feature_noSramEccSupport,
906815 &feature_sdwa,
816 &feature_sdwaMav,
817 &feature_sdwaOutModsVopc,
907818 &feature_localmemorysize65536,
908 &feature_scalarStores,
909 &feature_gcn3Encoding,
819 &feature_mimgR128,
910820 &feature_flatAddressSpace,
911 &feature_dpp,
912821 &feature_inv2piInlineImm,
913 &feature_fp64,
914822 &feature_BitInsts16,
915 &feature_trigReducedRange,
916 &feature_vgprIndexMode,
917 &feature_wavefrontsize64,
918 &feature_gfx8Insts,
919 &feature_gfx7Gfx8Gfx9Insts,
920 &feature_mimgR128,
921 &feature_intClampInsts,
922 &feature_sMemrealtime,
923 &feature_sdwaMav,
924 &feature_sdwaOutModsVopc,
925823 },
926824};
927825
928826pub const feature_vscnt = Feature{
929827 .name = "vscnt",
930828 .description = "Has separate store vscnt counter",
931 .llvm_name = "vscnt",
932829 .subfeatures = &[_]*const Feature {
933830 },
934831};
......@@ -936,7 +833,6 @@ pub const feature_vscnt = Feature{
936833pub const feature_wavefrontsize16 = Feature{
937834 .name = "wavefrontsize16",
938835 .description = "The number of threads per wavefront",
939 .llvm_name = "wavefrontsize16",
940836 .subfeatures = &[_]*const Feature {
941837 },
942838};
......@@ -944,7 +840,6 @@ pub const feature_wavefrontsize16 = Feature{
944840pub const feature_wavefrontsize32 = Feature{
945841 .name = "wavefrontsize32",
946842 .description = "The number of threads per wavefront",
947 .llvm_name = "wavefrontsize32",
948843 .subfeatures = &[_]*const Feature {
949844 },
950845};
......@@ -952,7 +847,6 @@ pub const feature_wavefrontsize32 = Feature{
952847pub const feature_wavefrontsize64 = Feature{
953848 .name = "wavefrontsize64",
954849 .description = "The number of threads per wavefront",
955 .llvm_name = "wavefrontsize64",
956850 .subfeatures = &[_]*const Feature {
957851 },
958852};
......@@ -960,7 +854,6 @@ pub const feature_wavefrontsize64 = Feature{
960854pub const feature_xnack = Feature{
961855 .name = "xnack",
962856 .description = "Enable XNACK support",
963 .llvm_name = "xnack",
964857 .subfeatures = &[_]*const Feature {
965858 },
966859};
......@@ -968,7 +861,6 @@ pub const feature_xnack = Feature{
968861pub const feature_halfRate64Ops = Feature{
969862 .name = "half-rate-64-ops",
970863 .description = "Most fp64 instructions are half rate instead of quarter",
971 .llvm_name = "half-rate-64-ops",
972864 .subfeatures = &[_]*const Feature {
973865 },
974866};
......@@ -1091,16 +983,16 @@ pub const cpu_bonaire = Cpu{
1091983 &feature_codeObjectV3,
1092984 &feature_noXnackSupport,
1093985 &feature_ldsbankcount32,
1094 &feature_gfx7Gfx8Gfx9Insts,
1095 &feature_mimgR128,
1096 &feature_localmemorysize65536,
1097 &feature_movrel,
1098986 &feature_trigReducedRange,
1099 &feature_wavefrontsize64,
1100 &feature_flatAddressSpace,
1101 &feature_ciInsts,
1102987 &feature_noSramEccSupport,
1103988 &feature_fp64,
989 &feature_movrel,
990 &feature_ciInsts,
991 &feature_localmemorysize65536,
992 &feature_mimgR128,
993 &feature_wavefrontsize64,
994 &feature_flatAddressSpace,
995 &feature_gfx7Gfx8Gfx9Insts,
1104996 &feature_seaIslands,
1105997 },
1106998};
......@@ -1113,28 +1005,28 @@ pub const cpu_carrizo = Cpu{
11131005 &feature_fastFmaf,
11141006 &feature_ldsbankcount32,
11151007 &feature_unpackedD16Vmem,
1116 &feature_movrel,
1008 &feature_fp64,
1009 &feature_sMemrealtime,
1010 &feature_gfx8Insts,
1011 &feature_dpp,
11171012 &feature_ciInsts,
1013 &feature_scalarStores,
1014 &feature_intClampInsts,
1015 &feature_gcn3Encoding,
1016 &feature_gfx7Gfx8Gfx9Insts,
1017 &feature_wavefrontsize64,
1018 &feature_movrel,
1019 &feature_vgprIndexMode,
1020 &feature_trigReducedRange,
11181021 &feature_noSramEccSupport,
11191022 &feature_sdwa,
1023 &feature_sdwaMav,
1024 &feature_sdwaOutModsVopc,
11201025 &feature_localmemorysize65536,
1121 &feature_scalarStores,
1122 &feature_gcn3Encoding,
1026 &feature_mimgR128,
11231027 &feature_flatAddressSpace,
1124 &feature_dpp,
11251028 &feature_inv2piInlineImm,
1126 &feature_fp64,
11271029 &feature_BitInsts16,
1128 &feature_trigReducedRange,
1129 &feature_vgprIndexMode,
1130 &feature_wavefrontsize64,
1131 &feature_gfx8Insts,
1132 &feature_gfx7Gfx8Gfx9Insts,
1133 &feature_mimgR128,
1134 &feature_intClampInsts,
1135 &feature_sMemrealtime,
1136 &feature_sdwaMav,
1137 &feature_sdwaOutModsVopc,
11381030 &feature_volcanicIslands,
11391031 &feature_xnack,
11401032 &feature_halfRate64Ops,
......@@ -1149,28 +1041,28 @@ pub const cpu_fiji = Cpu{
11491041 &feature_noXnackSupport,
11501042 &feature_ldsbankcount32,
11511043 &feature_unpackedD16Vmem,
1152 &feature_movrel,
1044 &feature_fp64,
1045 &feature_sMemrealtime,
1046 &feature_gfx8Insts,
1047 &feature_dpp,
11531048 &feature_ciInsts,
1049 &feature_scalarStores,
1050 &feature_intClampInsts,
1051 &feature_gcn3Encoding,
1052 &feature_gfx7Gfx8Gfx9Insts,
1053 &feature_wavefrontsize64,
1054 &feature_movrel,
1055 &feature_vgprIndexMode,
1056 &feature_trigReducedRange,
11541057 &feature_noSramEccSupport,
11551058 &feature_sdwa,
1059 &feature_sdwaMav,
1060 &feature_sdwaOutModsVopc,
11561061 &feature_localmemorysize65536,
1157 &feature_scalarStores,
1158 &feature_gcn3Encoding,
1062 &feature_mimgR128,
11591063 &feature_flatAddressSpace,
1160 &feature_dpp,
11611064 &feature_inv2piInlineImm,
1162 &feature_fp64,
11631065 &feature_BitInsts16,
1164 &feature_trigReducedRange,
1165 &feature_vgprIndexMode,
1166 &feature_wavefrontsize64,
1167 &feature_gfx8Insts,
1168 &feature_gfx7Gfx8Gfx9Insts,
1169 &feature_mimgR128,
1170 &feature_intClampInsts,
1171 &feature_sMemrealtime,
1172 &feature_sdwaMav,
1173 &feature_sdwaOutModsVopc,
11741066 &feature_volcanicIslands,
11751067 },
11761068};
......@@ -1200,40 +1092,40 @@ pub const cpu_gfx1010 = Cpu{
12001092 &feature_dlInsts,
12011093 &feature_noXnackSupport,
12021094 &feature_flatSegmentOffsetBug,
1203 &feature_movrel,
1204 &feature_gfx9Insts,
1205 &feature_ciInsts,
1206 &feature_noSramEccSupport,
1207 &feature_noSdstCmpx,
1208 &feature_fmaMixInsts,
1209 &feature_sdwa,
1210 &feature_localmemorysize65536,
1211 &feature_sdwaScalar,
1095 &feature_registerBanking,
1096 &feature_fp64,
1097 &feature_vop3p,
1098 &feature_sMemrealtime,
1099 &feature_gfx8Insts,
1100 &feature_dpp,
12121101 &feature_sdwaSdst,
1102 &feature_ciInsts,
12131103 &feature_apertureRegs,
1104 &feature_intClampInsts,
12141105 &feature_flatScratchInsts,
1106 &feature_sdwaScalar,
1107 &feature_fastFmaf,
1108 &feature_pkFmacF16Inst,
12151109 &feature_vscnt,
1216 &feature_noDataDepHazard,
1110 &feature_movrel,
1111 &feature_fmaMixInsts,
1112 &feature_noSramEccSupport,
1113 &feature_sdwa,
1114 &feature_sdwaOmod,
1115 &feature_vop3Literal,
1116 &feature_dpp8,
1117 &feature_gfx10Insts,
1118 &feature_localmemorysize65536,
1119 &feature_mimgR128,
12171120 &feature_flatAddressSpace,
1218 &feature_dpp,
12191121 &feature_addNoCarryInsts,
1122 &feature_noDataDepHazard,
1123 &feature_flatInstOffsets,
12201124 &feature_inv2piInlineImm,
1221 &feature_fp64,
1222 &feature_dpp8,
1223 &feature_BitInsts16,
1224 &feature_registerBanking,
1225 &feature_gfx8Insts,
1125 &feature_gfx9Insts,
12261126 &feature_flatGlobalInsts,
1227 &feature_flatInstOffsets,
1228 &feature_pkFmacF16Inst,
1229 &feature_vop3p,
1230 &feature_mimgR128,
1231 &feature_intClampInsts,
1232 &feature_sMemrealtime,
1233 &feature_fastFmaf,
1234 &feature_vop3Literal,
1235 &feature_sdwaOmod,
1236 &feature_gfx10Insts,
1127 &feature_BitInsts16,
1128 &feature_noSdstCmpx,
12371129 &feature_gfx10,
12381130 &feature_instFwdPrefetchBug,
12391131 &feature_ldsbankcount32,
......@@ -1265,40 +1157,40 @@ pub const cpu_gfx1011 = Cpu{
12651157 &feature_dot5Insts,
12661158 &feature_dot6Insts,
12671159 &feature_flatSegmentOffsetBug,
1268 &feature_movrel,
1269 &feature_gfx9Insts,
1270 &feature_ciInsts,
1271 &feature_noSramEccSupport,
1272 &feature_noSdstCmpx,
1273 &feature_fmaMixInsts,
1274 &feature_sdwa,
1275 &feature_localmemorysize65536,
1276 &feature_sdwaScalar,
1160 &feature_registerBanking,
1161 &feature_fp64,
1162 &feature_vop3p,
1163 &feature_sMemrealtime,
1164 &feature_gfx8Insts,
1165 &feature_dpp,
12771166 &feature_sdwaSdst,
1167 &feature_ciInsts,
12781168 &feature_apertureRegs,
1169 &feature_intClampInsts,
12791170 &feature_flatScratchInsts,
1171 &feature_sdwaScalar,
1172 &feature_fastFmaf,
1173 &feature_pkFmacF16Inst,
12801174 &feature_vscnt,
1281 &feature_noDataDepHazard,
1175 &feature_movrel,
1176 &feature_fmaMixInsts,
1177 &feature_noSramEccSupport,
1178 &feature_sdwa,
1179 &feature_sdwaOmod,
1180 &feature_vop3Literal,
1181 &feature_dpp8,
1182 &feature_gfx10Insts,
1183 &feature_localmemorysize65536,
1184 &feature_mimgR128,
12821185 &feature_flatAddressSpace,
1283 &feature_dpp,
12841186 &feature_addNoCarryInsts,
1187 &feature_noDataDepHazard,
1188 &feature_flatInstOffsets,
12851189 &feature_inv2piInlineImm,
1286 &feature_fp64,
1287 &feature_dpp8,
1288 &feature_BitInsts16,
1289 &feature_registerBanking,
1290 &feature_gfx8Insts,
1190 &feature_gfx9Insts,
12911191 &feature_flatGlobalInsts,
1292 &feature_flatInstOffsets,
1293 &feature_pkFmacF16Inst,
1294 &feature_vop3p,
1295 &feature_mimgR128,
1296 &feature_intClampInsts,
1297 &feature_sMemrealtime,
1298 &feature_fastFmaf,
1299 &feature_vop3Literal,
1300 &feature_sdwaOmod,
1301 &feature_gfx10Insts,
1192 &feature_BitInsts16,
1193 &feature_noSdstCmpx,
13021194 &feature_gfx10,
13031195 &feature_instFwdPrefetchBug,
13041196 &feature_ldsbankcount32,
......@@ -1329,40 +1221,40 @@ pub const cpu_gfx1012 = Cpu{
13291221 &feature_dot5Insts,
13301222 &feature_dot6Insts,
13311223 &feature_flatSegmentOffsetBug,
1332 &feature_movrel,
1333 &feature_gfx9Insts,
1334 &feature_ciInsts,
1335 &feature_noSramEccSupport,
1336 &feature_noSdstCmpx,
1337 &feature_fmaMixInsts,
1338 &feature_sdwa,
1339 &feature_localmemorysize65536,
1340 &feature_sdwaScalar,
1224 &feature_registerBanking,
1225 &feature_fp64,
1226 &feature_vop3p,
1227 &feature_sMemrealtime,
1228 &feature_gfx8Insts,
1229 &feature_dpp,
13411230 &feature_sdwaSdst,
1231 &feature_ciInsts,
13421232 &feature_apertureRegs,
1233 &feature_intClampInsts,
13431234 &feature_flatScratchInsts,
1235 &feature_sdwaScalar,
1236 &feature_fastFmaf,
1237 &feature_pkFmacF16Inst,
13441238 &feature_vscnt,
1345 &feature_noDataDepHazard,
1239 &feature_movrel,
1240 &feature_fmaMixInsts,
1241 &feature_noSramEccSupport,
1242 &feature_sdwa,
1243 &feature_sdwaOmod,
1244 &feature_vop3Literal,
1245 &feature_dpp8,
1246 &feature_gfx10Insts,
1247 &feature_localmemorysize65536,
1248 &feature_mimgR128,
13461249 &feature_flatAddressSpace,
1347 &feature_dpp,
13481250 &feature_addNoCarryInsts,
1251 &feature_noDataDepHazard,
1252 &feature_flatInstOffsets,
13491253 &feature_inv2piInlineImm,
1350 &feature_fp64,
1351 &feature_dpp8,
1352 &feature_BitInsts16,
1353 &feature_registerBanking,
1354 &feature_gfx8Insts,
1254 &feature_gfx9Insts,
13551255 &feature_flatGlobalInsts,
1356 &feature_flatInstOffsets,
1357 &feature_pkFmacF16Inst,
1358 &feature_vop3p,
1359 &feature_mimgR128,
1360 &feature_intClampInsts,
1361 &feature_sMemrealtime,
1362 &feature_fastFmaf,
1363 &feature_vop3Literal,
1364 &feature_sdwaOmod,
1365 &feature_gfx10Insts,
1256 &feature_BitInsts16,
1257 &feature_noSdstCmpx,
13661258 &feature_gfx10,
13671259 &feature_instFwdPrefetchBug,
13681260 &feature_ldsbankcount32,
......@@ -1390,13 +1282,13 @@ pub const cpu_gfx600 = Cpu{
13901282 &feature_noXnackSupport,
13911283 &feature_fastFmaf,
13921284 &feature_ldsbankcount32,
1393 &feature_mimgR128,
1394 &feature_movrel,
13951285 &feature_localmemorysize32768,
13961286 &feature_trigReducedRange,
1397 &feature_wavefrontsize64,
13981287 &feature_noSramEccSupport,
13991288 &feature_fp64,
1289 &feature_movrel,
1290 &feature_mimgR128,
1291 &feature_wavefrontsize64,
14001292 &feature_southernIslands,
14011293 &feature_halfRate64Ops,
14021294 },
......@@ -1409,13 +1301,13 @@ pub const cpu_gfx601 = Cpu{
14091301 &feature_codeObjectV3,
14101302 &feature_noXnackSupport,
14111303 &feature_ldsbankcount32,
1412 &feature_mimgR128,
1413 &feature_movrel,
14141304 &feature_localmemorysize32768,
14151305 &feature_trigReducedRange,
1416 &feature_wavefrontsize64,
14171306 &feature_noSramEccSupport,
14181307 &feature_fp64,
1308 &feature_movrel,
1309 &feature_mimgR128,
1310 &feature_wavefrontsize64,
14191311 &feature_southernIslands,
14201312 },
14211313};
......@@ -1427,16 +1319,16 @@ pub const cpu_gfx700 = Cpu{
14271319 &feature_codeObjectV3,
14281320 &feature_noXnackSupport,
14291321 &feature_ldsbankcount32,
1430 &feature_gfx7Gfx8Gfx9Insts,
1431 &feature_mimgR128,
1432 &feature_localmemorysize65536,
1433 &feature_movrel,
14341322 &feature_trigReducedRange,
1435 &feature_wavefrontsize64,
1436 &feature_flatAddressSpace,
1437 &feature_ciInsts,
14381323 &feature_noSramEccSupport,
14391324 &feature_fp64,
1325 &feature_movrel,
1326 &feature_ciInsts,
1327 &feature_localmemorysize65536,
1328 &feature_mimgR128,
1329 &feature_wavefrontsize64,
1330 &feature_flatAddressSpace,
1331 &feature_gfx7Gfx8Gfx9Insts,
14401332 &feature_seaIslands,
14411333 },
14421334};
......@@ -1449,16 +1341,16 @@ pub const cpu_gfx701 = Cpu{
14491341 &feature_noXnackSupport,
14501342 &feature_fastFmaf,
14511343 &feature_ldsbankcount32,
1452 &feature_gfx7Gfx8Gfx9Insts,
1453 &feature_mimgR128,
1454 &feature_localmemorysize65536,
1455 &feature_movrel,
14561344 &feature_trigReducedRange,
1457 &feature_wavefrontsize64,
1458 &feature_flatAddressSpace,
1459 &feature_ciInsts,
14601345 &feature_noSramEccSupport,
14611346 &feature_fp64,
1347 &feature_movrel,
1348 &feature_ciInsts,
1349 &feature_localmemorysize65536,
1350 &feature_mimgR128,
1351 &feature_wavefrontsize64,
1352 &feature_flatAddressSpace,
1353 &feature_gfx7Gfx8Gfx9Insts,
14621354 &feature_seaIslands,
14631355 &feature_halfRate64Ops,
14641356 },
......@@ -1472,16 +1364,16 @@ pub const cpu_gfx702 = Cpu{
14721364 &feature_noXnackSupport,
14731365 &feature_fastFmaf,
14741366 &feature_ldsbankcount16,
1475 &feature_gfx7Gfx8Gfx9Insts,
1476 &feature_mimgR128,
1477 &feature_localmemorysize65536,
1478 &feature_movrel,
14791367 &feature_trigReducedRange,
1480 &feature_wavefrontsize64,
1481 &feature_flatAddressSpace,
1482 &feature_ciInsts,
14831368 &feature_noSramEccSupport,
14841369 &feature_fp64,
1370 &feature_movrel,
1371 &feature_ciInsts,
1372 &feature_localmemorysize65536,
1373 &feature_mimgR128,
1374 &feature_wavefrontsize64,
1375 &feature_flatAddressSpace,
1376 &feature_gfx7Gfx8Gfx9Insts,
14851377 &feature_seaIslands,
14861378 },
14871379};
......@@ -1493,16 +1385,16 @@ pub const cpu_gfx703 = Cpu{
14931385 &feature_codeObjectV3,
14941386 &feature_noXnackSupport,
14951387 &feature_ldsbankcount16,
1496 &feature_gfx7Gfx8Gfx9Insts,
1497 &feature_mimgR128,
1498 &feature_localmemorysize65536,
1499 &feature_movrel,
15001388 &feature_trigReducedRange,
1501 &feature_wavefrontsize64,
1502 &feature_flatAddressSpace,
1503 &feature_ciInsts,
15041389 &feature_noSramEccSupport,
15051390 &feature_fp64,
1391 &feature_movrel,
1392 &feature_ciInsts,
1393 &feature_localmemorysize65536,
1394 &feature_mimgR128,
1395 &feature_wavefrontsize64,
1396 &feature_flatAddressSpace,
1397 &feature_gfx7Gfx8Gfx9Insts,
15061398 &feature_seaIslands,
15071399 },
15081400};
......@@ -1514,16 +1406,16 @@ pub const cpu_gfx704 = Cpu{
15141406 &feature_codeObjectV3,
15151407 &feature_noXnackSupport,
15161408 &feature_ldsbankcount32,
1517 &feature_gfx7Gfx8Gfx9Insts,
1518 &feature_mimgR128,
1519 &feature_localmemorysize65536,
1520 &feature_movrel,
15211409 &feature_trigReducedRange,
1522 &feature_wavefrontsize64,
1523 &feature_flatAddressSpace,
1524 &feature_ciInsts,
15251410 &feature_noSramEccSupport,
15261411 &feature_fp64,
1412 &feature_movrel,
1413 &feature_ciInsts,
1414 &feature_localmemorysize65536,
1415 &feature_mimgR128,
1416 &feature_wavefrontsize64,
1417 &feature_flatAddressSpace,
1418 &feature_gfx7Gfx8Gfx9Insts,
15271419 &feature_seaIslands,
15281420 },
15291421};
......@@ -1536,28 +1428,28 @@ pub const cpu_gfx801 = Cpu{
15361428 &feature_fastFmaf,
15371429 &feature_ldsbankcount32,
15381430 &feature_unpackedD16Vmem,
1539 &feature_movrel,
1431 &feature_fp64,
1432 &feature_sMemrealtime,
1433 &feature_gfx8Insts,
1434 &feature_dpp,
15401435 &feature_ciInsts,
1436 &feature_scalarStores,
1437 &feature_intClampInsts,
1438 &feature_gcn3Encoding,
1439 &feature_gfx7Gfx8Gfx9Insts,
1440 &feature_wavefrontsize64,
1441 &feature_movrel,
1442 &feature_vgprIndexMode,
1443 &feature_trigReducedRange,
15411444 &feature_noSramEccSupport,
15421445 &feature_sdwa,
1446 &feature_sdwaMav,
1447 &feature_sdwaOutModsVopc,
15431448 &feature_localmemorysize65536,
1544 &feature_scalarStores,
1545 &feature_gcn3Encoding,
1449 &feature_mimgR128,
15461450 &feature_flatAddressSpace,
1547 &feature_dpp,
15481451 &feature_inv2piInlineImm,
1549 &feature_fp64,
15501452 &feature_BitInsts16,
1551 &feature_trigReducedRange,
1552 &feature_vgprIndexMode,
1553 &feature_wavefrontsize64,
1554 &feature_gfx8Insts,
1555 &feature_gfx7Gfx8Gfx9Insts,
1556 &feature_mimgR128,
1557 &feature_intClampInsts,
1558 &feature_sMemrealtime,
1559 &feature_sdwaMav,
1560 &feature_sdwaOutModsVopc,
15611453 &feature_volcanicIslands,
15621454 &feature_xnack,
15631455 &feature_halfRate64Ops,
......@@ -1573,28 +1465,28 @@ pub const cpu_gfx802 = Cpu{
15731465 &feature_ldsbankcount32,
15741466 &feature_sgprInitBug,
15751467 &feature_unpackedD16Vmem,
1576 &feature_movrel,
1468 &feature_fp64,
1469 &feature_sMemrealtime,
1470 &feature_gfx8Insts,
1471 &feature_dpp,
15771472 &feature_ciInsts,
1473 &feature_scalarStores,
1474 &feature_intClampInsts,
1475 &feature_gcn3Encoding,
1476 &feature_gfx7Gfx8Gfx9Insts,
1477 &feature_wavefrontsize64,
1478 &feature_movrel,
1479 &feature_vgprIndexMode,
1480 &feature_trigReducedRange,
15781481 &feature_noSramEccSupport,
15791482 &feature_sdwa,
1483 &feature_sdwaMav,
1484 &feature_sdwaOutModsVopc,
15801485 &feature_localmemorysize65536,
1581 &feature_scalarStores,
1582 &feature_gcn3Encoding,
1486 &feature_mimgR128,
15831487 &feature_flatAddressSpace,
1584 &feature_dpp,
15851488 &feature_inv2piInlineImm,
1586 &feature_fp64,
15871489 &feature_BitInsts16,
1588 &feature_trigReducedRange,
1589 &feature_vgprIndexMode,
1590 &feature_wavefrontsize64,
1591 &feature_gfx8Insts,
1592 &feature_gfx7Gfx8Gfx9Insts,
1593 &feature_mimgR128,
1594 &feature_intClampInsts,
1595 &feature_sMemrealtime,
1596 &feature_sdwaMav,
1597 &feature_sdwaOutModsVopc,
15981490 &feature_volcanicIslands,
15991491 },
16001492};
......@@ -1607,28 +1499,28 @@ pub const cpu_gfx803 = Cpu{
16071499 &feature_noXnackSupport,
16081500 &feature_ldsbankcount32,
16091501 &feature_unpackedD16Vmem,
1610 &feature_movrel,
1502 &feature_fp64,
1503 &feature_sMemrealtime,
1504 &feature_gfx8Insts,
1505 &feature_dpp,
16111506 &feature_ciInsts,
1507 &feature_scalarStores,
1508 &feature_intClampInsts,
1509 &feature_gcn3Encoding,
1510 &feature_gfx7Gfx8Gfx9Insts,
1511 &feature_wavefrontsize64,
1512 &feature_movrel,
1513 &feature_vgprIndexMode,
1514 &feature_trigReducedRange,
16121515 &feature_noSramEccSupport,
16131516 &feature_sdwa,
1517 &feature_sdwaMav,
1518 &feature_sdwaOutModsVopc,
16141519 &feature_localmemorysize65536,
1615 &feature_scalarStores,
1616 &feature_gcn3Encoding,
1520 &feature_mimgR128,
16171521 &feature_flatAddressSpace,
1618 &feature_dpp,
16191522 &feature_inv2piInlineImm,
1620 &feature_fp64,
16211523 &feature_BitInsts16,
1622 &feature_trigReducedRange,
1623 &feature_vgprIndexMode,
1624 &feature_wavefrontsize64,
1625 &feature_gfx8Insts,
1626 &feature_gfx7Gfx8Gfx9Insts,
1627 &feature_mimgR128,
1628 &feature_intClampInsts,
1629 &feature_sMemrealtime,
1630 &feature_sdwaMav,
1631 &feature_sdwaOutModsVopc,
16321524 &feature_volcanicIslands,
16331525 },
16341526};
......@@ -1639,28 +1531,28 @@ pub const cpu_gfx810 = Cpu{
16391531 .subfeatures = &[_]*const Feature {
16401532 &feature_codeObjectV3,
16411533 &feature_ldsbankcount16,
1642 &feature_movrel,
1534 &feature_fp64,
1535 &feature_sMemrealtime,
1536 &feature_gfx8Insts,
1537 &feature_dpp,
16431538 &feature_ciInsts,
1539 &feature_scalarStores,
1540 &feature_intClampInsts,
1541 &feature_gcn3Encoding,
1542 &feature_gfx7Gfx8Gfx9Insts,
1543 &feature_wavefrontsize64,
1544 &feature_movrel,
1545 &feature_vgprIndexMode,
1546 &feature_trigReducedRange,
16441547 &feature_noSramEccSupport,
16451548 &feature_sdwa,
1549 &feature_sdwaMav,
1550 &feature_sdwaOutModsVopc,
16461551 &feature_localmemorysize65536,
1647 &feature_scalarStores,
1648 &feature_gcn3Encoding,
1552 &feature_mimgR128,
16491553 &feature_flatAddressSpace,
1650 &feature_dpp,
16511554 &feature_inv2piInlineImm,
1652 &feature_fp64,
16531555 &feature_BitInsts16,
1654 &feature_trigReducedRange,
1655 &feature_vgprIndexMode,
1656 &feature_wavefrontsize64,
1657 &feature_gfx8Insts,
1658 &feature_gfx7Gfx8Gfx9Insts,
1659 &feature_mimgR128,
1660 &feature_intClampInsts,
1661 &feature_sMemrealtime,
1662 &feature_sdwaMav,
1663 &feature_sdwaOutModsVopc,
16641556 &feature_volcanicIslands,
16651557 &feature_xnack,
16661558 },
......@@ -1673,36 +1565,36 @@ pub const cpu_gfx900 = Cpu{
16731565 &feature_codeObjectV3,
16741566 &feature_noSramEccSupport,
16751567 &feature_noXnackSupport,
1676 &feature_gfx9Insts,
1568 &feature_fp64,
1569 &feature_vop3p,
1570 &feature_sMemrealtime,
1571 &feature_gfx8Insts,
1572 &feature_dpp,
1573 &feature_sdwaSdst,
16771574 &feature_ciInsts,
1678 &feature_sdwa,
1679 &feature_localmemorysize65536,
1575 &feature_apertureRegs,
16801576 &feature_scalarStores,
1681 &feature_sdwaScalar,
1682 &feature_sdwaSdst,
1577 &feature_intClampInsts,
16831578 &feature_gcn3Encoding,
1684 &feature_apertureRegs,
16851579 &feature_flatScratchInsts,
1686 &feature_r128A16,
1687 &feature_flatAddressSpace,
1688 &feature_dpp,
1689 &feature_addNoCarryInsts,
1690 &feature_inv2piInlineImm,
1691 &feature_fp64,
1692 &feature_BitInsts16,
1693 &feature_vgprIndexMode,
1580 &feature_gfx7Gfx8Gfx9Insts,
16941581 &feature_wavefrontsize64,
1695 &feature_gfx8Insts,
1696 &feature_flatGlobalInsts,
1697 &feature_scalarFlatScratchInsts,
16981582 &feature_scalarAtomics,
1699 &feature_flatInstOffsets,
1700 &feature_gfx7Gfx8Gfx9Insts,
1701 &feature_vop3p,
1702 &feature_sMemrealtime,
1703 &feature_intClampInsts,
1583 &feature_sdwaScalar,
17041584 &feature_fastFmaf,
1585 &feature_vgprIndexMode,
1586 &feature_scalarFlatScratchInsts,
1587 &feature_sdwa,
17051588 &feature_sdwaOmod,
1589 &feature_localmemorysize65536,
1590 &feature_flatAddressSpace,
1591 &feature_addNoCarryInsts,
1592 &feature_flatInstOffsets,
1593 &feature_inv2piInlineImm,
1594 &feature_gfx9Insts,
1595 &feature_flatGlobalInsts,
1596 &feature_BitInsts16,
1597 &feature_r128A16,
17061598 &feature_gfx9,
17071599 &feature_ldsbankcount32,
17081600 &feature_madMixInsts,
......@@ -1715,36 +1607,36 @@ pub const cpu_gfx902 = Cpu{
17151607 .subfeatures = &[_]*const Feature {
17161608 &feature_codeObjectV3,
17171609 &feature_noSramEccSupport,
1718 &feature_gfx9Insts,
1610 &feature_fp64,
1611 &feature_vop3p,
1612 &feature_sMemrealtime,
1613 &feature_gfx8Insts,
1614 &feature_dpp,
1615 &feature_sdwaSdst,
17191616 &feature_ciInsts,
1720 &feature_sdwa,
1721 &feature_localmemorysize65536,
1617 &feature_apertureRegs,
17221618 &feature_scalarStores,
1723 &feature_sdwaScalar,
1724 &feature_sdwaSdst,
1619 &feature_intClampInsts,
17251620 &feature_gcn3Encoding,
1726 &feature_apertureRegs,
17271621 &feature_flatScratchInsts,
1728 &feature_r128A16,
1729 &feature_flatAddressSpace,
1730 &feature_dpp,
1731 &feature_addNoCarryInsts,
1732 &feature_inv2piInlineImm,
1733 &feature_fp64,
1734 &feature_BitInsts16,
1735 &feature_vgprIndexMode,
1622 &feature_gfx7Gfx8Gfx9Insts,
17361623 &feature_wavefrontsize64,
1737 &feature_gfx8Insts,
1738 &feature_flatGlobalInsts,
1739 &feature_scalarFlatScratchInsts,
17401624 &feature_scalarAtomics,
1741 &feature_flatInstOffsets,
1742 &feature_gfx7Gfx8Gfx9Insts,
1743 &feature_vop3p,
1744 &feature_sMemrealtime,
1745 &feature_intClampInsts,
1625 &feature_sdwaScalar,
17461626 &feature_fastFmaf,
1627 &feature_vgprIndexMode,
1628 &feature_scalarFlatScratchInsts,
1629 &feature_sdwa,
17471630 &feature_sdwaOmod,
1631 &feature_localmemorysize65536,
1632 &feature_flatAddressSpace,
1633 &feature_addNoCarryInsts,
1634 &feature_flatInstOffsets,
1635 &feature_inv2piInlineImm,
1636 &feature_gfx9Insts,
1637 &feature_flatGlobalInsts,
1638 &feature_BitInsts16,
1639 &feature_r128A16,
17481640 &feature_gfx9,
17491641 &feature_ldsbankcount32,
17501642 &feature_madMixInsts,
......@@ -1760,36 +1652,36 @@ pub const cpu_gfx904 = Cpu{
17601652 &feature_noSramEccSupport,
17611653 &feature_noXnackSupport,
17621654 &feature_fmaMixInsts,
1763 &feature_gfx9Insts,
1655 &feature_fp64,
1656 &feature_vop3p,
1657 &feature_sMemrealtime,
1658 &feature_gfx8Insts,
1659 &feature_dpp,
1660 &feature_sdwaSdst,
17641661 &feature_ciInsts,
1765 &feature_sdwa,
1766 &feature_localmemorysize65536,
1662 &feature_apertureRegs,
17671663 &feature_scalarStores,
1768 &feature_sdwaScalar,
1769 &feature_sdwaSdst,
1664 &feature_intClampInsts,
17701665 &feature_gcn3Encoding,
1771 &feature_apertureRegs,
17721666 &feature_flatScratchInsts,
1773 &feature_r128A16,
1774 &feature_flatAddressSpace,
1775 &feature_dpp,
1776 &feature_addNoCarryInsts,
1777 &feature_inv2piInlineImm,
1778 &feature_fp64,
1779 &feature_BitInsts16,
1780 &feature_vgprIndexMode,
1667 &feature_gfx7Gfx8Gfx9Insts,
17811668 &feature_wavefrontsize64,
1782 &feature_gfx8Insts,
1783 &feature_flatGlobalInsts,
1784 &feature_scalarFlatScratchInsts,
17851669 &feature_scalarAtomics,
1786 &feature_flatInstOffsets,
1787 &feature_gfx7Gfx8Gfx9Insts,
1788 &feature_vop3p,
1789 &feature_sMemrealtime,
1790 &feature_intClampInsts,
1670 &feature_sdwaScalar,
17911671 &feature_fastFmaf,
1672 &feature_vgprIndexMode,
1673 &feature_scalarFlatScratchInsts,
1674 &feature_sdwa,
17921675 &feature_sdwaOmod,
1676 &feature_localmemorysize65536,
1677 &feature_flatAddressSpace,
1678 &feature_addNoCarryInsts,
1679 &feature_flatInstOffsets,
1680 &feature_inv2piInlineImm,
1681 &feature_gfx9Insts,
1682 &feature_flatGlobalInsts,
1683 &feature_BitInsts16,
1684 &feature_r128A16,
17931685 &feature_gfx9,
17941686 &feature_ldsbankcount32,
17951687 },
......@@ -1805,36 +1697,36 @@ pub const cpu_gfx906 = Cpu{
18051697 &feature_dot1Insts,
18061698 &feature_dot2Insts,
18071699 &feature_fmaMixInsts,
1808 &feature_gfx9Insts,
1700 &feature_fp64,
1701 &feature_vop3p,
1702 &feature_sMemrealtime,
1703 &feature_gfx8Insts,
1704 &feature_dpp,
1705 &feature_sdwaSdst,
18091706 &feature_ciInsts,
1810 &feature_sdwa,
1811 &feature_localmemorysize65536,
1707 &feature_apertureRegs,
18121708 &feature_scalarStores,
1813 &feature_sdwaScalar,
1814 &feature_sdwaSdst,
1709 &feature_intClampInsts,
18151710 &feature_gcn3Encoding,
1816 &feature_apertureRegs,
18171711 &feature_flatScratchInsts,
1818 &feature_r128A16,
1819 &feature_flatAddressSpace,
1820 &feature_dpp,
1821 &feature_addNoCarryInsts,
1822 &feature_inv2piInlineImm,
1823 &feature_fp64,
1824 &feature_BitInsts16,
1825 &feature_vgprIndexMode,
1712 &feature_gfx7Gfx8Gfx9Insts,
18261713 &feature_wavefrontsize64,
1827 &feature_gfx8Insts,
1828 &feature_flatGlobalInsts,
1829 &feature_scalarFlatScratchInsts,
18301714 &feature_scalarAtomics,
1831 &feature_flatInstOffsets,
1832 &feature_gfx7Gfx8Gfx9Insts,
1833 &feature_vop3p,
1834 &feature_sMemrealtime,
1835 &feature_intClampInsts,
1715 &feature_sdwaScalar,
18361716 &feature_fastFmaf,
1717 &feature_vgprIndexMode,
1718 &feature_scalarFlatScratchInsts,
1719 &feature_sdwa,
18371720 &feature_sdwaOmod,
1721 &feature_localmemorysize65536,
1722 &feature_flatAddressSpace,
1723 &feature_addNoCarryInsts,
1724 &feature_flatInstOffsets,
1725 &feature_inv2piInlineImm,
1726 &feature_gfx9Insts,
1727 &feature_flatGlobalInsts,
1728 &feature_BitInsts16,
1729 &feature_r128A16,
18381730 &feature_gfx9,
18391731 &feature_ldsbankcount32,
18401732 &feature_halfRate64Ops,
......@@ -1855,36 +1747,36 @@ pub const cpu_gfx908 = Cpu{
18551747 &feature_dot5Insts,
18561748 &feature_dot6Insts,
18571749 &feature_fmaMixInsts,
1858 &feature_gfx9Insts,
1750 &feature_fp64,
1751 &feature_vop3p,
1752 &feature_sMemrealtime,
1753 &feature_gfx8Insts,
1754 &feature_dpp,
1755 &feature_sdwaSdst,
18591756 &feature_ciInsts,
1860 &feature_sdwa,
1861 &feature_localmemorysize65536,
1757 &feature_apertureRegs,
18621758 &feature_scalarStores,
1863 &feature_sdwaScalar,
1864 &feature_sdwaSdst,
1759 &feature_intClampInsts,
18651760 &feature_gcn3Encoding,
1866 &feature_apertureRegs,
18671761 &feature_flatScratchInsts,
1868 &feature_r128A16,
1869 &feature_flatAddressSpace,
1870 &feature_dpp,
1871 &feature_addNoCarryInsts,
1872 &feature_inv2piInlineImm,
1873 &feature_fp64,
1874 &feature_BitInsts16,
1875 &feature_vgprIndexMode,
1762 &feature_gfx7Gfx8Gfx9Insts,
18761763 &feature_wavefrontsize64,
1877 &feature_gfx8Insts,
1878 &feature_flatGlobalInsts,
1879 &feature_scalarFlatScratchInsts,
18801764 &feature_scalarAtomics,
1881 &feature_flatInstOffsets,
1882 &feature_gfx7Gfx8Gfx9Insts,
1883 &feature_vop3p,
1884 &feature_sMemrealtime,
1885 &feature_intClampInsts,
1765 &feature_sdwaScalar,
18861766 &feature_fastFmaf,
1767 &feature_vgprIndexMode,
1768 &feature_scalarFlatScratchInsts,
1769 &feature_sdwa,
18871770 &feature_sdwaOmod,
1771 &feature_localmemorysize65536,
1772 &feature_flatAddressSpace,
1773 &feature_addNoCarryInsts,
1774 &feature_flatInstOffsets,
1775 &feature_inv2piInlineImm,
1776 &feature_gfx9Insts,
1777 &feature_flatGlobalInsts,
1778 &feature_BitInsts16,
1779 &feature_r128A16,
18881780 &feature_gfx9,
18891781 &feature_ldsbankcount32,
18901782 &feature_maiInsts,
......@@ -1900,36 +1792,36 @@ pub const cpu_gfx909 = Cpu{
19001792 .llvm_name = "gfx909",
19011793 .subfeatures = &[_]*const Feature {
19021794 &feature_codeObjectV3,
1903 &feature_gfx9Insts,
1795 &feature_fp64,
1796 &feature_vop3p,
1797 &feature_sMemrealtime,
1798 &feature_gfx8Insts,
1799 &feature_dpp,
1800 &feature_sdwaSdst,
19041801 &feature_ciInsts,
1905 &feature_sdwa,
1906 &feature_localmemorysize65536,
1802 &feature_apertureRegs,
19071803 &feature_scalarStores,
1908 &feature_sdwaScalar,
1909 &feature_sdwaSdst,
1804 &feature_intClampInsts,
19101805 &feature_gcn3Encoding,
1911 &feature_apertureRegs,
19121806 &feature_flatScratchInsts,
1913 &feature_r128A16,
1807 &feature_gfx7Gfx8Gfx9Insts,
1808 &feature_wavefrontsize64,
1809 &feature_scalarAtomics,
1810 &feature_sdwaScalar,
1811 &feature_fastFmaf,
1812 &feature_vgprIndexMode,
1813 &feature_scalarFlatScratchInsts,
1814 &feature_sdwa,
1815 &feature_sdwaOmod,
1816 &feature_localmemorysize65536,
19141817 &feature_flatAddressSpace,
1915 &feature_dpp,
19161818 &feature_addNoCarryInsts,
1819 &feature_flatInstOffsets,
19171820 &feature_inv2piInlineImm,
1918 &feature_fp64,
1919 &feature_BitInsts16,
1920 &feature_vgprIndexMode,
1921 &feature_wavefrontsize64,
1922 &feature_gfx8Insts,
1821 &feature_gfx9Insts,
19231822 &feature_flatGlobalInsts,
1924 &feature_scalarFlatScratchInsts,
1925 &feature_scalarAtomics,
1926 &feature_flatInstOffsets,
1927 &feature_gfx7Gfx8Gfx9Insts,
1928 &feature_vop3p,
1929 &feature_sMemrealtime,
1930 &feature_intClampInsts,
1931 &feature_fastFmaf,
1932 &feature_sdwaOmod,
1823 &feature_BitInsts16,
1824 &feature_r128A16,
19331825 &feature_gfx9,
19341826 &feature_ldsbankcount32,
19351827 &feature_madMixInsts,
......@@ -1944,13 +1836,13 @@ pub const cpu_hainan = Cpu{
19441836 &feature_codeObjectV3,
19451837 &feature_noXnackSupport,
19461838 &feature_ldsbankcount32,
1947 &feature_mimgR128,
1948 &feature_movrel,
19491839 &feature_localmemorysize32768,
19501840 &feature_trigReducedRange,
1951 &feature_wavefrontsize64,
19521841 &feature_noSramEccSupport,
19531842 &feature_fp64,
1843 &feature_movrel,
1844 &feature_mimgR128,
1845 &feature_wavefrontsize64,
19541846 &feature_southernIslands,
19551847 },
19561848};
......@@ -1963,16 +1855,16 @@ pub const cpu_hawaii = Cpu{
19631855 &feature_noXnackSupport,
19641856 &feature_fastFmaf,
19651857 &feature_ldsbankcount32,
1966 &feature_gfx7Gfx8Gfx9Insts,
1967 &feature_mimgR128,
1968 &feature_localmemorysize65536,
1969 &feature_movrel,
19701858 &feature_trigReducedRange,
1971 &feature_wavefrontsize64,
1972 &feature_flatAddressSpace,
1973 &feature_ciInsts,
19741859 &feature_noSramEccSupport,
19751860 &feature_fp64,
1861 &feature_movrel,
1862 &feature_ciInsts,
1863 &feature_localmemorysize65536,
1864 &feature_mimgR128,
1865 &feature_wavefrontsize64,
1866 &feature_flatAddressSpace,
1867 &feature_gfx7Gfx8Gfx9Insts,
19761868 &feature_seaIslands,
19771869 &feature_halfRate64Ops,
19781870 },
......@@ -1987,28 +1879,28 @@ pub const cpu_iceland = Cpu{
19871879 &feature_ldsbankcount32,
19881880 &feature_sgprInitBug,
19891881 &feature_unpackedD16Vmem,
1990 &feature_movrel,
1882 &feature_fp64,
1883 &feature_sMemrealtime,
1884 &feature_gfx8Insts,
1885 &feature_dpp,
19911886 &feature_ciInsts,
1887 &feature_scalarStores,
1888 &feature_intClampInsts,
1889 &feature_gcn3Encoding,
1890 &feature_gfx7Gfx8Gfx9Insts,
1891 &feature_wavefrontsize64,
1892 &feature_movrel,
1893 &feature_vgprIndexMode,
1894 &feature_trigReducedRange,
19921895 &feature_noSramEccSupport,
19931896 &feature_sdwa,
1897 &feature_sdwaMav,
1898 &feature_sdwaOutModsVopc,
19941899 &feature_localmemorysize65536,
1995 &feature_scalarStores,
1996 &feature_gcn3Encoding,
1900 &feature_mimgR128,
19971901 &feature_flatAddressSpace,
1998 &feature_dpp,
19991902 &feature_inv2piInlineImm,
2000 &feature_fp64,
20011903 &feature_BitInsts16,
2002 &feature_trigReducedRange,
2003 &feature_vgprIndexMode,
2004 &feature_wavefrontsize64,
2005 &feature_gfx8Insts,
2006 &feature_gfx7Gfx8Gfx9Insts,
2007 &feature_mimgR128,
2008 &feature_intClampInsts,
2009 &feature_sMemrealtime,
2010 &feature_sdwaMav,
2011 &feature_sdwaOutModsVopc,
20121904 &feature_volcanicIslands,
20131905 },
20141906};
......@@ -2020,16 +1912,16 @@ pub const cpu_kabini = Cpu{
20201912 &feature_codeObjectV3,
20211913 &feature_noXnackSupport,
20221914 &feature_ldsbankcount16,
2023 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_mimgR128,
2025 &feature_localmemorysize65536,
2026 &feature_movrel,
20271915 &feature_trigReducedRange,
2028 &feature_wavefrontsize64,
2029 &feature_flatAddressSpace,
2030 &feature_ciInsts,
20311916 &feature_noSramEccSupport,
20321917 &feature_fp64,
1918 &feature_movrel,
1919 &feature_ciInsts,
1920 &feature_localmemorysize65536,
1921 &feature_mimgR128,
1922 &feature_wavefrontsize64,
1923 &feature_flatAddressSpace,
1924 &feature_gfx7Gfx8Gfx9Insts,
20331925 &feature_seaIslands,
20341926 },
20351927};
......@@ -2041,16 +1933,16 @@ pub const cpu_kaveri = Cpu{
20411933 &feature_codeObjectV3,
20421934 &feature_noXnackSupport,
20431935 &feature_ldsbankcount32,
2044 &feature_gfx7Gfx8Gfx9Insts,
2045 &feature_mimgR128,
2046 &feature_localmemorysize65536,
2047 &feature_movrel,
20481936 &feature_trigReducedRange,
2049 &feature_wavefrontsize64,
2050 &feature_flatAddressSpace,
2051 &feature_ciInsts,
20521937 &feature_noSramEccSupport,
20531938 &feature_fp64,
1939 &feature_movrel,
1940 &feature_ciInsts,
1941 &feature_localmemorysize65536,
1942 &feature_mimgR128,
1943 &feature_wavefrontsize64,
1944 &feature_flatAddressSpace,
1945 &feature_gfx7Gfx8Gfx9Insts,
20541946 &feature_seaIslands,
20551947 },
20561948};
......@@ -2062,16 +1954,16 @@ pub const cpu_mullins = Cpu{
20621954 &feature_codeObjectV3,
20631955 &feature_noXnackSupport,
20641956 &feature_ldsbankcount16,
2065 &feature_gfx7Gfx8Gfx9Insts,
2066 &feature_mimgR128,
2067 &feature_localmemorysize65536,
2068 &feature_movrel,
20691957 &feature_trigReducedRange,
2070 &feature_wavefrontsize64,
2071 &feature_flatAddressSpace,
2072 &feature_ciInsts,
20731958 &feature_noSramEccSupport,
20741959 &feature_fp64,
1960 &feature_movrel,
1961 &feature_ciInsts,
1962 &feature_localmemorysize65536,
1963 &feature_mimgR128,
1964 &feature_wavefrontsize64,
1965 &feature_flatAddressSpace,
1966 &feature_gfx7Gfx8Gfx9Insts,
20751967 &feature_seaIslands,
20761968 },
20771969};
......@@ -2083,13 +1975,13 @@ pub const cpu_oland = Cpu{
20831975 &feature_codeObjectV3,
20841976 &feature_noXnackSupport,
20851977 &feature_ldsbankcount32,
2086 &feature_mimgR128,
2087 &feature_movrel,
20881978 &feature_localmemorysize32768,
20891979 &feature_trigReducedRange,
2090 &feature_wavefrontsize64,
20911980 &feature_noSramEccSupport,
20921981 &feature_fp64,
1982 &feature_movrel,
1983 &feature_mimgR128,
1984 &feature_wavefrontsize64,
20931985 &feature_southernIslands,
20941986 },
20951987};
......@@ -2101,13 +1993,13 @@ pub const cpu_pitcairn = Cpu{
21011993 &feature_codeObjectV3,
21021994 &feature_noXnackSupport,
21031995 &feature_ldsbankcount32,
2104 &feature_mimgR128,
2105 &feature_movrel,
21061996 &feature_localmemorysize32768,
21071997 &feature_trigReducedRange,
2108 &feature_wavefrontsize64,
21091998 &feature_noSramEccSupport,
21101999 &feature_fp64,
2000 &feature_movrel,
2001 &feature_mimgR128,
2002 &feature_wavefrontsize64,
21112003 &feature_southernIslands,
21122004 },
21132005};
......@@ -2120,28 +2012,28 @@ pub const cpu_polaris10 = Cpu{
21202012 &feature_noXnackSupport,
21212013 &feature_ldsbankcount32,
21222014 &feature_unpackedD16Vmem,
2123 &feature_movrel,
2015 &feature_fp64,
2016 &feature_sMemrealtime,
2017 &feature_gfx8Insts,
2018 &feature_dpp,
21242019 &feature_ciInsts,
2020 &feature_scalarStores,
2021 &feature_intClampInsts,
2022 &feature_gcn3Encoding,
2023 &feature_gfx7Gfx8Gfx9Insts,
2024 &feature_wavefrontsize64,
2025 &feature_movrel,
2026 &feature_vgprIndexMode,
2027 &feature_trigReducedRange,
21252028 &feature_noSramEccSupport,
21262029 &feature_sdwa,
2030 &feature_sdwaMav,
2031 &feature_sdwaOutModsVopc,
21272032 &feature_localmemorysize65536,
2128 &feature_scalarStores,
2129 &feature_gcn3Encoding,
2033 &feature_mimgR128,
21302034 &feature_flatAddressSpace,
2131 &feature_dpp,
21322035 &feature_inv2piInlineImm,
2133 &feature_fp64,
21342036 &feature_BitInsts16,
2135 &feature_trigReducedRange,
2136 &feature_vgprIndexMode,
2137 &feature_wavefrontsize64,
2138 &feature_gfx8Insts,
2139 &feature_gfx7Gfx8Gfx9Insts,
2140 &feature_mimgR128,
2141 &feature_intClampInsts,
2142 &feature_sMemrealtime,
2143 &feature_sdwaMav,
2144 &feature_sdwaOutModsVopc,
21452037 &feature_volcanicIslands,
21462038 },
21472039};
......@@ -2154,28 +2046,28 @@ pub const cpu_polaris11 = Cpu{
21542046 &feature_noXnackSupport,
21552047 &feature_ldsbankcount32,
21562048 &feature_unpackedD16Vmem,
2157 &feature_movrel,
2049 &feature_fp64,
2050 &feature_sMemrealtime,
2051 &feature_gfx8Insts,
2052 &feature_dpp,
21582053 &feature_ciInsts,
2054 &feature_scalarStores,
2055 &feature_intClampInsts,
2056 &feature_gcn3Encoding,
2057 &feature_gfx7Gfx8Gfx9Insts,
2058 &feature_wavefrontsize64,
2059 &feature_movrel,
2060 &feature_vgprIndexMode,
2061 &feature_trigReducedRange,
21592062 &feature_noSramEccSupport,
21602063 &feature_sdwa,
2064 &feature_sdwaMav,
2065 &feature_sdwaOutModsVopc,
21612066 &feature_localmemorysize65536,
2162 &feature_scalarStores,
2163 &feature_gcn3Encoding,
2067 &feature_mimgR128,
21642068 &feature_flatAddressSpace,
2165 &feature_dpp,
21662069 &feature_inv2piInlineImm,
2167 &feature_fp64,
21682070 &feature_BitInsts16,
2169 &feature_trigReducedRange,
2170 &feature_vgprIndexMode,
2171 &feature_wavefrontsize64,
2172 &feature_gfx8Insts,
2173 &feature_gfx7Gfx8Gfx9Insts,
2174 &feature_mimgR128,
2175 &feature_intClampInsts,
2176 &feature_sMemrealtime,
2177 &feature_sdwaMav,
2178 &feature_sdwaOutModsVopc,
21792071 &feature_volcanicIslands,
21802072 },
21812073};
......@@ -2186,28 +2078,28 @@ pub const cpu_stoney = Cpu{
21862078 .subfeatures = &[_]*const Feature {
21872079 &feature_codeObjectV3,
21882080 &feature_ldsbankcount16,
2189 &feature_movrel,
2081 &feature_fp64,
2082 &feature_sMemrealtime,
2083 &feature_gfx8Insts,
2084 &feature_dpp,
21902085 &feature_ciInsts,
2086 &feature_scalarStores,
2087 &feature_intClampInsts,
2088 &feature_gcn3Encoding,
2089 &feature_gfx7Gfx8Gfx9Insts,
2090 &feature_wavefrontsize64,
2091 &feature_movrel,
2092 &feature_vgprIndexMode,
2093 &feature_trigReducedRange,
21912094 &feature_noSramEccSupport,
21922095 &feature_sdwa,
2096 &feature_sdwaMav,
2097 &feature_sdwaOutModsVopc,
21932098 &feature_localmemorysize65536,
2194 &feature_scalarStores,
2195 &feature_gcn3Encoding,
2099 &feature_mimgR128,
21962100 &feature_flatAddressSpace,
2197 &feature_dpp,
21982101 &feature_inv2piInlineImm,
2199 &feature_fp64,
22002102 &feature_BitInsts16,
2201 &feature_trigReducedRange,
2202 &feature_vgprIndexMode,
2203 &feature_wavefrontsize64,
2204 &feature_gfx8Insts,
2205 &feature_gfx7Gfx8Gfx9Insts,
2206 &feature_mimgR128,
2207 &feature_intClampInsts,
2208 &feature_sMemrealtime,
2209 &feature_sdwaMav,
2210 &feature_sdwaOutModsVopc,
22112103 &feature_volcanicIslands,
22122104 &feature_xnack,
22132105 },
......@@ -2221,13 +2113,13 @@ pub const cpu_tahiti = Cpu{
22212113 &feature_noXnackSupport,
22222114 &feature_fastFmaf,
22232115 &feature_ldsbankcount32,
2224 &feature_mimgR128,
2225 &feature_movrel,
22262116 &feature_localmemorysize32768,
22272117 &feature_trigReducedRange,
2228 &feature_wavefrontsize64,
22292118 &feature_noSramEccSupport,
22302119 &feature_fp64,
2120 &feature_movrel,
2121 &feature_mimgR128,
2122 &feature_wavefrontsize64,
22312123 &feature_southernIslands,
22322124 &feature_halfRate64Ops,
22332125 },
......@@ -2242,28 +2134,28 @@ pub const cpu_tonga = Cpu{
22422134 &feature_ldsbankcount32,
22432135 &feature_sgprInitBug,
22442136 &feature_unpackedD16Vmem,
2245 &feature_movrel,
2137 &feature_fp64,
2138 &feature_sMemrealtime,
2139 &feature_gfx8Insts,
2140 &feature_dpp,
22462141 &feature_ciInsts,
2142 &feature_scalarStores,
2143 &feature_intClampInsts,
2144 &feature_gcn3Encoding,
2145 &feature_gfx7Gfx8Gfx9Insts,
2146 &feature_wavefrontsize64,
2147 &feature_movrel,
2148 &feature_vgprIndexMode,
2149 &feature_trigReducedRange,
22472150 &feature_noSramEccSupport,
22482151 &feature_sdwa,
2152 &feature_sdwaMav,
2153 &feature_sdwaOutModsVopc,
22492154 &feature_localmemorysize65536,
2250 &feature_scalarStores,
2251 &feature_gcn3Encoding,
2155 &feature_mimgR128,
22522156 &feature_flatAddressSpace,
2253 &feature_dpp,
22542157 &feature_inv2piInlineImm,
2255 &feature_fp64,
22562158 &feature_BitInsts16,
2257 &feature_trigReducedRange,
2258 &feature_vgprIndexMode,
2259 &feature_wavefrontsize64,
2260 &feature_gfx8Insts,
2261 &feature_gfx7Gfx8Gfx9Insts,
2262 &feature_mimgR128,
2263 &feature_intClampInsts,
2264 &feature_sMemrealtime,
2265 &feature_sdwaMav,
2266 &feature_sdwaOutModsVopc,
22672159 &feature_volcanicIslands,
22682160 },
22692161};
......@@ -2275,13 +2167,13 @@ pub const cpu_verde = Cpu{
22752167 &feature_codeObjectV3,
22762168 &feature_noXnackSupport,
22772169 &feature_ldsbankcount32,
2278 &feature_mimgR128,
2279 &feature_movrel,
22802170 &feature_localmemorysize32768,
22812171 &feature_trigReducedRange,
2282 &feature_wavefrontsize64,
22832172 &feature_noSramEccSupport,
22842173 &feature_fp64,
2174 &feature_movrel,
2175 &feature_mimgR128,
2176 &feature_wavefrontsize64,
22852177 &feature_southernIslands,
22862178 },
22872179};
lib/std/target/arm.zig+568-743
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_armv2 = Feature{
55 .name = "armv2",
66 .description = "ARMv2 architecture",
7 .llvm_name = "armv2",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_armv2 = Feature{
1211pub const feature_armv2a = Feature{
1312 .name = "armv2a",
1413 .description = "ARMv2a architecture",
15 .llvm_name = "armv2a",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_armv2a = Feature{
2018pub const feature_armv3 = Feature{
2119 .name = "armv3",
2220 .description = "ARMv3 architecture",
23 .llvm_name = "armv3",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_armv3 = Feature{
2825pub const feature_armv3m = Feature{
2926 .name = "armv3m",
3027 .description = "ARMv3m architecture",
31 .llvm_name = "armv3m",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_armv3m = Feature{
3632pub const feature_armv4 = Feature{
3733 .name = "armv4",
3834 .description = "ARMv4 architecture",
39 .llvm_name = "armv4",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_armv4 = Feature{
4439pub const feature_armv4t = Feature{
4540 .name = "armv4t",
4641 .description = "ARMv4t architecture",
47 .llvm_name = "armv4t",
4842 .subfeatures = &[_]*const Feature {
4943 &feature_v4t,
5044 },
......@@ -53,7 +47,6 @@ pub const feature_armv4t = Feature{
5347pub const feature_armv5t = Feature{
5448 .name = "armv5t",
5549 .description = "ARMv5t architecture",
56 .llvm_name = "armv5t",
5750 .subfeatures = &[_]*const Feature {
5851 &feature_v4t,
5952 },
......@@ -62,7 +55,6 @@ pub const feature_armv5t = Feature{
6255pub const feature_armv5te = Feature{
6356 .name = "armv5te",
6457 .description = "ARMv5te architecture",
65 .llvm_name = "armv5te",
6658 .subfeatures = &[_]*const Feature {
6759 &feature_v4t,
6860 },
......@@ -71,7 +63,6 @@ pub const feature_armv5te = Feature{
7163pub const feature_armv5tej = Feature{
7264 .name = "armv5tej",
7365 .description = "ARMv5tej architecture",
74 .llvm_name = "armv5tej",
7566 .subfeatures = &[_]*const Feature {
7667 &feature_v4t,
7768 },
......@@ -80,7 +71,6 @@ pub const feature_armv5tej = Feature{
8071pub const feature_armv6 = Feature{
8172 .name = "armv6",
8273 .description = "ARMv6 architecture",
83 .llvm_name = "armv6",
8474 .subfeatures = &[_]*const Feature {
8575 &feature_v4t,
8676 &feature_dsp,
......@@ -90,7 +80,6 @@ pub const feature_armv6 = Feature{
9080pub const feature_armv6j = Feature{
9181 .name = "armv6j",
9282 .description = "ARMv7a architecture",
93 .llvm_name = "armv6j",
9483 .subfeatures = &[_]*const Feature {
9584 &feature_v4t,
9685 &feature_dsp,
......@@ -100,7 +89,6 @@ pub const feature_armv6j = Feature{
10089pub const feature_armv6k = Feature{
10190 .name = "armv6k",
10291 .description = "ARMv6k architecture",
103 .llvm_name = "armv6k",
10492 .subfeatures = &[_]*const Feature {
10593 &feature_v4t,
10694 },
......@@ -109,7 +97,6 @@ pub const feature_armv6k = Feature{
10997pub const feature_armv6kz = Feature{
11098 .name = "armv6kz",
11199 .description = "ARMv6kz architecture",
112 .llvm_name = "armv6kz",
113100 .subfeatures = &[_]*const Feature {
114101 &feature_v4t,
115102 &feature_trustzone,
......@@ -119,400 +106,379 @@ pub const feature_armv6kz = Feature{
119106pub const feature_armv6M = Feature{
120107 .name = "armv6-m",
121108 .description = "ARMv6m architecture",
122 .llvm_name = "armv6-m",
123109 .subfeatures = &[_]*const Feature {
124110 &feature_db,
125 &feature_thumbMode,
126111 &feature_mclass,
112 &feature_thumbMode,
113 &feature_strictAlign,
127114 &feature_noarm,
128115 &feature_v4t,
129 &feature_strictAlign,
130116 },
131117};
132118
133119pub const feature_armv6sM = Feature{
134120 .name = "armv6s-m",
135121 .description = "ARMv6sm architecture",
136 .llvm_name = "armv6s-m",
137122 .subfeatures = &[_]*const Feature {
138123 &feature_db,
139 &feature_thumbMode,
140124 &feature_mclass,
125 &feature_thumbMode,
126 &feature_strictAlign,
141127 &feature_noarm,
142128 &feature_v4t,
143 &feature_strictAlign,
144129 },
145130};
146131
147132pub const feature_armv6t2 = Feature{
148133 .name = "armv6t2",
149134 .description = "ARMv6t2 architecture",
150 .llvm_name = "armv6t2",
151135 .subfeatures = &[_]*const Feature {
152 &feature_v4t,
153 &feature_dsp,
154136 &feature_thumb2,
137 &feature_dsp,
138 &feature_v4t,
155139 },
156140};
157141
158142pub const feature_armv7A = Feature{
159143 .name = "armv7-a",
160144 .description = "ARMv7a architecture",
161 .llvm_name = "armv7-a",
162145 .subfeatures = &[_]*const Feature {
163 &feature_perfmon,
164 &feature_v7clrex,
165146 &feature_db,
147 &feature_dsp,
148 &feature_fpregs,
166149 &feature_thumb2,
150 &feature_v7clrex,
151 &feature_aclass,
152 &feature_perfmon,
167153 &feature_v4t,
168154 &feature_d32,
169 &feature_aclass,
170 &feature_dsp,
171 &feature_fpregs,
172155 },
173156};
174157
175158pub const feature_armv7eM = Feature{
176159 .name = "armv7e-m",
177160 .description = "ARMv7em architecture",
178 .llvm_name = "armv7e-m",
179161 .subfeatures = &[_]*const Feature {
180 &feature_perfmon,
181 &feature_v7clrex,
182162 &feature_db,
183 &feature_thumb2,
184163 &feature_mclass,
164 &feature_hwdiv,
165 &feature_dsp,
185166 &feature_thumbMode,
167 &feature_thumb2,
168 &feature_v7clrex,
169 &feature_perfmon,
186170 &feature_noarm,
187171 &feature_v4t,
188 &feature_dsp,
189 &feature_hwdiv,
190172 },
191173};
192174
193175pub const feature_armv7k = Feature{
194176 .name = "armv7k",
195177 .description = "ARMv7a architecture",
196 .llvm_name = "armv7k",
197178 .subfeatures = &[_]*const Feature {
198 &feature_v7clrex,
199179 &feature_db,
200 &feature_thumb2,
201 &feature_v4t,
202 &feature_d32,
203180 &feature_dsp,
181 &feature_fpregs,
182 &feature_thumb2,
183 &feature_v7clrex,
204184 &feature_aclass,
205185 &feature_perfmon,
206 &feature_fpregs,
186 &feature_v4t,
187 &feature_d32,
207188 },
208189};
209190
210191pub const feature_armv7M = Feature{
211192 .name = "armv7-m",
212193 .description = "ARMv7m architecture",
213 .llvm_name = "armv7-m",
214194 .subfeatures = &[_]*const Feature {
215 &feature_v7clrex,
216195 &feature_db,
217 &feature_thumb2,
218196 &feature_mclass,
197 &feature_hwdiv,
219198 &feature_thumbMode,
199 &feature_thumb2,
200 &feature_v7clrex,
201 &feature_perfmon,
220202 &feature_noarm,
221203 &feature_v4t,
222 &feature_perfmon,
223 &feature_hwdiv,
224204 },
225205};
226206
227207pub const feature_armv7R = Feature{
228208 .name = "armv7-r",
229209 .description = "ARMv7r architecture",
230 .llvm_name = "armv7-r",
231210 .subfeatures = &[_]*const Feature {
232 &feature_perfmon,
233 &feature_v7clrex,
234211 &feature_db,
235 &feature_thumb2,
236 &feature_v4t,
237212 &feature_dsp,
238213 &feature_hwdiv,
239214 &feature_rclass,
215 &feature_thumb2,
216 &feature_v7clrex,
217 &feature_perfmon,
218 &feature_v4t,
240219 },
241220};
242221
243222pub const feature_armv7s = Feature{
244223 .name = "armv7s",
245224 .description = "ARMv7a architecture",
246 .llvm_name = "armv7s",
247225 .subfeatures = &[_]*const Feature {
248 &feature_v7clrex,
249226 &feature_db,
250 &feature_thumb2,
251 &feature_v4t,
252 &feature_d32,
253227 &feature_dsp,
228 &feature_fpregs,
229 &feature_thumb2,
230 &feature_v7clrex,
254231 &feature_aclass,
255232 &feature_perfmon,
256 &feature_fpregs,
233 &feature_v4t,
234 &feature_d32,
257235 },
258236};
259237
260238pub const feature_armv7ve = Feature{
261239 .name = "armv7ve",
262240 .description = "ARMv7ve architecture",
263 .llvm_name = "armv7ve",
264241 .subfeatures = &[_]*const Feature {
265 &feature_mp,
266 &feature_perfmon,
242 &feature_db,
243 &feature_dsp,
244 &feature_hwdivArm,
267245 &feature_hwdiv,
268246 &feature_trustzone,
269 &feature_v7clrex,
270 &feature_db,
247 &feature_fpregs,
271248 &feature_thumb2,
249 &feature_v7clrex,
250 &feature_aclass,
251 &feature_mp,
252 &feature_perfmon,
272253 &feature_v4t,
273254 &feature_d32,
274 &feature_aclass,
275 &feature_hwdivArm,
276 &feature_dsp,
277 &feature_fpregs,
278255 },
279256};
280257
281258pub const feature_armv8A = Feature{
282259 .name = "armv8-a",
283260 .description = "ARMv8a architecture",
284 .llvm_name = "armv8-a",
285261 .subfeatures = &[_]*const Feature {
286 &feature_mp,
287 &feature_acquireRelease,
288 &feature_perfmon,
262 &feature_db,
263 &feature_dsp,
264 &feature_hwdivArm,
289265 &feature_hwdiv,
290266 &feature_trustzone,
291 &feature_v7clrex,
292 &feature_db,
293 &feature_thumb2,
294 &feature_fp16,
267 &feature_fpregs,
295268 &feature_v4t,
296 &feature_d32,
269 &feature_thumb2,
270 &feature_v7clrex,
297271 &feature_aclass,
298 &feature_hwdivArm,
299272 &feature_crc,
300 &feature_dsp,
301 &feature_fpregs,
273 &feature_mp,
274 &feature_acquireRelease,
275 &feature_fp16,
276 &feature_perfmon,
277 &feature_d32,
302278 },
303279};
304280
305281pub const feature_armv8Mbase = Feature{
306282 .name = "armv8-m.base",
307283 .description = "ARMv8mBaseline architecture",
308 .llvm_name = "armv8-m.base",
309284 .subfeatures = &[_]*const Feature {
310 &feature_acquireRelease,
311 &feature_v7clrex,
312285 &feature_db,
313 &feature_msecext8,
314 &feature_thumbMode,
315286 &feature_mclass,
287 &feature_hwdiv,
288 &feature_thumbMode,
289 &feature_strictAlign,
290 &feature_v7clrex,
291 &feature_msecext8,
292 &feature_acquireRelease,
316293 &feature_noarm,
317294 &feature_v4t,
318 &feature_strictAlign,
319 &feature_hwdiv,
320295 },
321296};
322297
323298pub const feature_armv8Mmain = Feature{
324299 .name = "armv8-m.main",
325300 .description = "ARMv8mMainline architecture",
326 .llvm_name = "armv8-m.main",
327301 .subfeatures = &[_]*const Feature {
328 &feature_acquireRelease,
329 &feature_v7clrex,
330302 &feature_db,
331 &feature_msecext8,
332 &feature_thumb2,
333303 &feature_mclass,
304 &feature_hwdiv,
334305 &feature_thumbMode,
306 &feature_thumb2,
307 &feature_v7clrex,
308 &feature_msecext8,
309 &feature_acquireRelease,
310 &feature_perfmon,
335311 &feature_noarm,
336312 &feature_v4t,
337 &feature_perfmon,
338 &feature_hwdiv,
339313 },
340314};
341315
342316pub const feature_armv8R = Feature{
343317 .name = "armv8-r",
344318 .description = "ARMv8r architecture",
345 .llvm_name = "armv8-r",
346319 .subfeatures = &[_]*const Feature {
347 &feature_mp,
348 &feature_acquireRelease,
349 &feature_perfmon,
350 &feature_hwdiv,
351 &feature_v7clrex,
352320 &feature_db,
353 &feature_thumb2,
354 &feature_fp16,
321 &feature_dsp,
322 &feature_hwdivArm,
323 &feature_hwdiv,
324 &feature_rclass,
325 &feature_fpregs,
355326 &feature_v4t,
356 &feature_d32,
357327 &feature_dfb,
358 &feature_hwdivArm,
328 &feature_thumb2,
329 &feature_v7clrex,
330 &feature_perfmon,
359331 &feature_crc,
360 &feature_dsp,
361 &feature_fpregs,
362 &feature_rclass,
332 &feature_mp,
333 &feature_acquireRelease,
334 &feature_fp16,
335 &feature_d32,
363336 },
364337};
365338
366339pub const feature_armv81A = Feature{
367340 .name = "armv8.1-a",
368341 .description = "ARMv81a architecture",
369 .llvm_name = "armv8.1-a",
370342 .subfeatures = &[_]*const Feature {
371 &feature_mp,
372 &feature_acquireRelease,
373 &feature_perfmon,
343 &feature_db,
344 &feature_dsp,
345 &feature_hwdivArm,
374346 &feature_hwdiv,
375347 &feature_trustzone,
376 &feature_v7clrex,
377 &feature_db,
378 &feature_thumb2,
379 &feature_fp16,
348 &feature_fpregs,
380349 &feature_v4t,
381 &feature_d32,
350 &feature_thumb2,
351 &feature_v7clrex,
382352 &feature_aclass,
383 &feature_hwdivArm,
384353 &feature_crc,
385 &feature_dsp,
386 &feature_fpregs,
354 &feature_mp,
355 &feature_acquireRelease,
356 &feature_fp16,
357 &feature_perfmon,
358 &feature_d32,
387359 },
388360};
389361
390362pub const feature_armv81Mmain = Feature{
391363 .name = "armv8.1-m.main",
392364 .description = "ARMv81mMainline architecture",
393 .llvm_name = "armv8.1-m.main",
394365 .subfeatures = &[_]*const Feature {
395 &feature_acquireRelease,
396 &feature_lob,
397 &feature_v7clrex,
398366 &feature_db,
399 &feature_msecext8,
400 &feature_thumb2,
401367 &feature_mclass,
368 &feature_hwdiv,
369 &feature_lob,
370 &feature_thumbMode,
371 &feature_thumb2,
402372 &feature_ras,
373 &feature_v7clrex,
374 &feature_msecext8,
375 &feature_acquireRelease,
376 &feature_perfmon,
403377 &feature_noarm,
404378 &feature_v4t,
405 &feature_thumbMode,
406 &feature_perfmon,
407 &feature_hwdiv,
408379 },
409380};
410381
411382pub const feature_armv82A = Feature{
412383 .name = "armv8.2-a",
413384 .description = "ARMv82a architecture",
414 .llvm_name = "armv8.2-a",
415385 .subfeatures = &[_]*const Feature {
416 &feature_mp,
417 &feature_acquireRelease,
418 &feature_perfmon,
386 &feature_db,
387 &feature_dsp,
388 &feature_hwdivArm,
419389 &feature_hwdiv,
420390 &feature_trustzone,
421 &feature_v7clrex,
422 &feature_db,
391 &feature_fpregs,
392 &feature_v4t,
423393 &feature_thumb2,
424394 &feature_ras,
425 &feature_fp16,
426 &feature_v4t,
427 &feature_d32,
395 &feature_v7clrex,
428396 &feature_aclass,
429 &feature_hwdivArm,
430397 &feature_crc,
431 &feature_dsp,
432 &feature_fpregs,
398 &feature_mp,
399 &feature_acquireRelease,
400 &feature_fp16,
401 &feature_perfmon,
402 &feature_d32,
433403 },
434404};
435405
436406pub const feature_armv83A = Feature{
437407 .name = "armv8.3-a",
438408 .description = "ARMv83a architecture",
439 .llvm_name = "armv8.3-a",
440409 .subfeatures = &[_]*const Feature {
441 &feature_mp,
442 &feature_acquireRelease,
443 &feature_perfmon,
410 &feature_db,
411 &feature_dsp,
412 &feature_hwdivArm,
444413 &feature_hwdiv,
445414 &feature_trustzone,
446 &feature_v7clrex,
447 &feature_db,
415 &feature_fpregs,
416 &feature_v4t,
448417 &feature_thumb2,
449418 &feature_ras,
450 &feature_fp16,
451 &feature_v4t,
452 &feature_d32,
419 &feature_v7clrex,
453420 &feature_aclass,
454 &feature_hwdivArm,
455421 &feature_crc,
456 &feature_dsp,
457 &feature_fpregs,
422 &feature_mp,
423 &feature_acquireRelease,
424 &feature_fp16,
425 &feature_perfmon,
426 &feature_d32,
458427 },
459428};
460429
461430pub const feature_armv84A = Feature{
462431 .name = "armv8.4-a",
463432 .description = "ARMv84a architecture",
464 .llvm_name = "armv8.4-a",
465433 .subfeatures = &[_]*const Feature {
466 &feature_mp,
467 &feature_acquireRelease,
468 &feature_perfmon,
434 &feature_db,
435 &feature_dsp,
436 &feature_hwdivArm,
469437 &feature_hwdiv,
470438 &feature_trustzone,
471 &feature_v7clrex,
472 &feature_db,
439 &feature_fpregs,
440 &feature_v4t,
473441 &feature_thumb2,
474442 &feature_ras,
475 &feature_fp16,
476 &feature_v4t,
477 &feature_d32,
443 &feature_v7clrex,
478444 &feature_aclass,
479 &feature_hwdivArm,
480445 &feature_crc,
481 &feature_dsp,
482 &feature_fpregs,
446 &feature_mp,
447 &feature_acquireRelease,
448 &feature_fp16,
449 &feature_perfmon,
450 &feature_d32,
483451 },
484452};
485453
486454pub const feature_armv85A = Feature{
487455 .name = "armv8.5-a",
488456 .description = "ARMv85a architecture",
489 .llvm_name = "armv8.5-a",
490457 .subfeatures = &[_]*const Feature {
491 &feature_mp,
492 &feature_acquireRelease,
493 &feature_perfmon,
458 &feature_db,
459 &feature_dsp,
460 &feature_hwdivArm,
494461 &feature_hwdiv,
495462 &feature_trustzone,
496 &feature_v7clrex,
497 &feature_db,
463 &feature_fpregs,
464 &feature_v4t,
498465 &feature_thumb2,
499466 &feature_ras,
500 &feature_fp16,
501 &feature_v4t,
502 &feature_d32,
503 &feature_aclass,
504 &feature_hwdivArm,
505467 &feature_sb,
468 &feature_aclass,
506469 &feature_crc,
507 &feature_dsp,
508 &feature_fpregs,
470 &feature_mp,
471 &feature_v7clrex,
472 &feature_fp16,
473 &feature_acquireRelease,
474 &feature_d32,
475 &feature_perfmon,
509476 },
510477};
511478
512479pub const feature_msecext8 = Feature{
513480 .name = "8msecext",
514481 .description = "Enable support for ARMv8-M Security Extensions",
515 .llvm_name = "8msecext",
516482 .subfeatures = &[_]*const Feature {
517483 },
518484};
......@@ -520,7 +486,6 @@ pub const feature_msecext8 = Feature{
520486pub const feature_aclass = Feature{
521487 .name = "aclass",
522488 .description = "Is application profile ('A' series)",
523 .llvm_name = "aclass",
524489 .subfeatures = &[_]*const Feature {
525490 },
526491};
......@@ -528,17 +493,15 @@ pub const feature_aclass = Feature{
528493pub const feature_aes = Feature{
529494 .name = "aes",
530495 .description = "Enable AES support",
531 .llvm_name = "aes",
532496 .subfeatures = &[_]*const Feature {
533 &feature_d32,
534497 &feature_fpregs,
498 &feature_d32,
535499 },
536500};
537501
538502pub const feature_acquireRelease = Feature{
539503 .name = "acquire-release",
540504 .description = "Has v8 acquire/release (lda/ldaex etc) instructions",
541 .llvm_name = "acquire-release",
542505 .subfeatures = &[_]*const Feature {
543506 },
544507};
......@@ -546,7 +509,6 @@ pub const feature_acquireRelease = Feature{
546509pub const feature_avoidMovsShop = Feature{
547510 .name = "avoid-movs-shop",
548511 .description = "Avoid movs instructions with shifter operand",
549 .llvm_name = "avoid-movs-shop",
550512 .subfeatures = &[_]*const Feature {
551513 },
552514};
......@@ -554,7 +516,6 @@ pub const feature_avoidMovsShop = Feature{
554516pub const feature_avoidPartialCpsr = Feature{
555517 .name = "avoid-partial-cpsr",
556518 .description = "Avoid CPSR partial update for OOO execution",
557 .llvm_name = "avoid-partial-cpsr",
558519 .subfeatures = &[_]*const Feature {
559520 },
560521};
......@@ -562,7 +523,6 @@ pub const feature_avoidPartialCpsr = Feature{
562523pub const feature_crc = Feature{
563524 .name = "crc",
564525 .description = "Enable support for CRC instructions",
565 .llvm_name = "crc",
566526 .subfeatures = &[_]*const Feature {
567527 },
568528};
......@@ -570,7 +530,6 @@ pub const feature_crc = Feature{
570530pub const feature_cheapPredicableCpsr = Feature{
571531 .name = "cheap-predicable-cpsr",
572532 .description = "Disable +1 predication cost for instructions updating CPSR",
573 .llvm_name = "cheap-predicable-cpsr",
574533 .subfeatures = &[_]*const Feature {
575534 },
576535};
......@@ -578,7 +537,6 @@ pub const feature_cheapPredicableCpsr = Feature{
578537pub const feature_vldnAlign = Feature{
579538 .name = "vldn-align",
580539 .description = "Check for VLDn unaligned access",
581 .llvm_name = "vldn-align",
582540 .subfeatures = &[_]*const Feature {
583541 },
584542};
......@@ -586,17 +544,15 @@ pub const feature_vldnAlign = Feature{
586544pub const feature_crypto = Feature{
587545 .name = "crypto",
588546 .description = "Enable support for Cryptography extensions",
589 .llvm_name = "crypto",
590547 .subfeatures = &[_]*const Feature {
591 &feature_d32,
592548 &feature_fpregs,
549 &feature_d32,
593550 },
594551};
595552
596553pub const feature_d32 = Feature{
597554 .name = "d32",
598555 .description = "Extend FP to 32 double registers",
599 .llvm_name = "d32",
600556 .subfeatures = &[_]*const Feature {
601557 },
602558};
......@@ -604,7 +560,6 @@ pub const feature_d32 = Feature{
604560pub const feature_db = Feature{
605561 .name = "db",
606562 .description = "Has data barrier (dmb/dsb) instructions",
607 .llvm_name = "db",
608563 .subfeatures = &[_]*const Feature {
609564 },
610565};
......@@ -612,7 +567,6 @@ pub const feature_db = Feature{
612567pub const feature_dfb = Feature{
613568 .name = "dfb",
614569 .description = "Has full data barrier (dfb) instruction",
615 .llvm_name = "dfb",
616570 .subfeatures = &[_]*const Feature {
617571 },
618572};
......@@ -620,7 +574,6 @@ pub const feature_dfb = Feature{
620574pub const feature_dsp = Feature{
621575 .name = "dsp",
622576 .description = "Supports DSP instructions in ARM and/or Thumb2",
623 .llvm_name = "dsp",
624577 .subfeatures = &[_]*const Feature {
625578 },
626579};
......@@ -628,7 +581,6 @@ pub const feature_dsp = Feature{
628581pub const feature_dontWidenVmovs = Feature{
629582 .name = "dont-widen-vmovs",
630583 .description = "Don't widen VMOVS to VMOVD",
631 .llvm_name = "dont-widen-vmovs",
632584 .subfeatures = &[_]*const Feature {
633585 },
634586};
......@@ -636,17 +588,15 @@ pub const feature_dontWidenVmovs = Feature{
636588pub const feature_dotprod = Feature{
637589 .name = "dotprod",
638590 .description = "Enable support for dot product instructions",
639 .llvm_name = "dotprod",
640591 .subfeatures = &[_]*const Feature {
641 &feature_d32,
642592 &feature_fpregs,
593 &feature_d32,
643594 },
644595};
645596
646597pub const feature_executeOnly = Feature{
647598 .name = "execute-only",
648599 .description = "Enable the generation of execute only code.",
649 .llvm_name = "execute-only",
650600 .subfeatures = &[_]*const Feature {
651601 },
652602};
......@@ -654,7 +604,6 @@ pub const feature_executeOnly = Feature{
654604pub const feature_expandFpMlx = Feature{
655605 .name = "expand-fp-mlx",
656606 .description = "Expand VFP/NEON MLA/MLS instructions",
657 .llvm_name = "expand-fp-mlx",
658607 .subfeatures = &[_]*const Feature {
659608 },
660609};
......@@ -662,7 +611,6 @@ pub const feature_expandFpMlx = Feature{
662611pub const feature_fp16 = Feature{
663612 .name = "fp16",
664613 .description = "Enable half-precision floating point",
665 .llvm_name = "fp16",
666614 .subfeatures = &[_]*const Feature {
667615 },
668616};
......@@ -670,7 +618,6 @@ pub const feature_fp16 = Feature{
670618pub const feature_fp16fml = Feature{
671619 .name = "fp16fml",
672620 .description = "Enable full half-precision floating point fml instructions",
673 .llvm_name = "fp16fml",
674621 .subfeatures = &[_]*const Feature {
675622 &feature_fp16,
676623 &feature_fpregs,
......@@ -680,7 +627,6 @@ pub const feature_fp16fml = Feature{
680627pub const feature_fp64 = Feature{
681628 .name = "fp64",
682629 .description = "Floating point unit supports double precision",
683 .llvm_name = "fp64",
684630 .subfeatures = &[_]*const Feature {
685631 &feature_fpregs,
686632 },
......@@ -689,7 +635,6 @@ pub const feature_fp64 = Feature{
689635pub const feature_fpao = Feature{
690636 .name = "fpao",
691637 .description = "Enable fast computation of positive address offsets",
692 .llvm_name = "fpao",
693638 .subfeatures = &[_]*const Feature {
694639 },
695640};
......@@ -697,28 +642,25 @@ pub const feature_fpao = Feature{
697642pub const feature_fpArmv8 = Feature{
698643 .name = "fp-armv8",
699644 .description = "Enable ARMv8 FP",
700 .llvm_name = "fp-armv8",
701645 .subfeatures = &[_]*const Feature {
702 &feature_fp16,
703 &feature_d32,
704646 &feature_fpregs,
647 &feature_d32,
648 &feature_fp16,
705649 },
706650};
707651
708652pub const feature_fpArmv8d16 = Feature{
709653 .name = "fp-armv8d16",
710654 .description = "Enable ARMv8 FP with only 16 d-registers",
711 .llvm_name = "fp-armv8d16",
712655 .subfeatures = &[_]*const Feature {
713 &feature_fp16,
714656 &feature_fpregs,
657 &feature_fp16,
715658 },
716659};
717660
718661pub const feature_fpArmv8d16sp = Feature{
719662 .name = "fp-armv8d16sp",
720663 .description = "Enable ARMv8 FP with only 16 d-registers and no double precision",
721 .llvm_name = "fp-armv8d16sp",
722664 .subfeatures = &[_]*const Feature {
723665 &feature_fp16,
724666 &feature_fpregs,
......@@ -728,7 +670,6 @@ pub const feature_fpArmv8d16sp = Feature{
728670pub const feature_fpArmv8sp = Feature{
729671 .name = "fp-armv8sp",
730672 .description = "Enable ARMv8 FP with no double precision",
731 .llvm_name = "fp-armv8sp",
732673 .subfeatures = &[_]*const Feature {
733674 &feature_fp16,
734675 &feature_d32,
......@@ -739,7 +680,6 @@ pub const feature_fpArmv8sp = Feature{
739680pub const feature_fpregs = Feature{
740681 .name = "fpregs",
741682 .description = "Enable FP registers",
742 .llvm_name = "fpregs",
743683 .subfeatures = &[_]*const Feature {
744684 },
745685};
......@@ -747,7 +687,6 @@ pub const feature_fpregs = Feature{
747687pub const feature_fpregs16 = Feature{
748688 .name = "fpregs16",
749689 .description = "Enable 16-bit FP registers",
750 .llvm_name = "fpregs16",
751690 .subfeatures = &[_]*const Feature {
752691 &feature_fpregs,
753692 },
......@@ -756,7 +695,6 @@ pub const feature_fpregs16 = Feature{
756695pub const feature_fpregs64 = Feature{
757696 .name = "fpregs64",
758697 .description = "Enable 64-bit FP registers",
759 .llvm_name = "fpregs64",
760698 .subfeatures = &[_]*const Feature {
761699 &feature_fpregs,
762700 },
......@@ -765,7 +703,6 @@ pub const feature_fpregs64 = Feature{
765703pub const feature_fullfp16 = Feature{
766704 .name = "fullfp16",
767705 .description = "Enable full half-precision floating point",
768 .llvm_name = "fullfp16",
769706 .subfeatures = &[_]*const Feature {
770707 &feature_fp16,
771708 &feature_fpregs,
......@@ -775,7 +712,6 @@ pub const feature_fullfp16 = Feature{
775712pub const feature_fuseAes = Feature{
776713 .name = "fuse-aes",
777714 .description = "CPU fuses AES crypto operations",
778 .llvm_name = "fuse-aes",
779715 .subfeatures = &[_]*const Feature {
780716 },
781717};
......@@ -783,7 +719,6 @@ pub const feature_fuseAes = Feature{
783719pub const feature_fuseLiterals = Feature{
784720 .name = "fuse-literals",
785721 .description = "CPU fuses literal generation operations",
786 .llvm_name = "fuse-literals",
787722 .subfeatures = &[_]*const Feature {
788723 },
789724};
......@@ -791,7 +726,6 @@ pub const feature_fuseLiterals = Feature{
791726pub const feature_hwdivArm = Feature{
792727 .name = "hwdiv-arm",
793728 .description = "Enable divide instructions in ARM mode",
794 .llvm_name = "hwdiv-arm",
795729 .subfeatures = &[_]*const Feature {
796730 },
797731};
......@@ -799,7 +733,6 @@ pub const feature_hwdivArm = Feature{
799733pub const feature_hwdiv = Feature{
800734 .name = "hwdiv",
801735 .description = "Enable divide instructions in Thumb",
802 .llvm_name = "hwdiv",
803736 .subfeatures = &[_]*const Feature {
804737 },
805738};
......@@ -807,7 +740,6 @@ pub const feature_hwdiv = Feature{
807740pub const feature_noBranchPredictor = Feature{
808741 .name = "no-branch-predictor",
809742 .description = "Has no branch predictor",
810 .llvm_name = "no-branch-predictor",
811743 .subfeatures = &[_]*const Feature {
812744 },
813745};
......@@ -815,7 +747,6 @@ pub const feature_noBranchPredictor = Feature{
815747pub const feature_retAddrStack = Feature{
816748 .name = "ret-addr-stack",
817749 .description = "Has return address stack",
818 .llvm_name = "ret-addr-stack",
819750 .subfeatures = &[_]*const Feature {
820751 },
821752};
......@@ -823,7 +754,6 @@ pub const feature_retAddrStack = Feature{
823754pub const feature_slowfpvmlx = Feature{
824755 .name = "slowfpvmlx",
825756 .description = "Disable VFP / NEON MAC instructions",
826 .llvm_name = "slowfpvmlx",
827757 .subfeatures = &[_]*const Feature {
828758 },
829759};
......@@ -831,7 +761,6 @@ pub const feature_slowfpvmlx = Feature{
831761pub const feature_vmlxHazards = Feature{
832762 .name = "vmlx-hazards",
833763 .description = "Has VMLx hazards",
834 .llvm_name = "vmlx-hazards",
835764 .subfeatures = &[_]*const Feature {
836765 },
837766};
......@@ -839,7 +768,6 @@ pub const feature_vmlxHazards = Feature{
839768pub const feature_lob = Feature{
840769 .name = "lob",
841770 .description = "Enable Low Overhead Branch extensions",
842 .llvm_name = "lob",
843771 .subfeatures = &[_]*const Feature {
844772 },
845773};
......@@ -847,7 +775,6 @@ pub const feature_lob = Feature{
847775pub const feature_longCalls = Feature{
848776 .name = "long-calls",
849777 .description = "Generate calls via indirect call instructions",
850 .llvm_name = "long-calls",
851778 .subfeatures = &[_]*const Feature {
852779 },
853780};
......@@ -855,7 +782,6 @@ pub const feature_longCalls = Feature{
855782pub const feature_mclass = Feature{
856783 .name = "mclass",
857784 .description = "Is microcontroller profile ('M' series)",
858 .llvm_name = "mclass",
859785 .subfeatures = &[_]*const Feature {
860786 },
861787};
......@@ -863,7 +789,6 @@ pub const feature_mclass = Feature{
863789pub const feature_mp = Feature{
864790 .name = "mp",
865791 .description = "Supports Multiprocessing extension",
866 .llvm_name = "mp",
867792 .subfeatures = &[_]*const Feature {
868793 },
869794};
......@@ -871,7 +796,6 @@ pub const feature_mp = Feature{
871796pub const feature_mve1beat = Feature{
872797 .name = "mve1beat",
873798 .description = "Model MVE instructions as a 1 beat per tick architecture",
874 .llvm_name = "mve1beat",
875799 .subfeatures = &[_]*const Feature {
876800 },
877801};
......@@ -879,7 +803,6 @@ pub const feature_mve1beat = Feature{
879803pub const feature_mve2beat = Feature{
880804 .name = "mve2beat",
881805 .description = "Model MVE instructions as a 2 beats per tick architecture",
882 .llvm_name = "mve2beat",
883806 .subfeatures = &[_]*const Feature {
884807 },
885808};
......@@ -887,7 +810,6 @@ pub const feature_mve2beat = Feature{
887810pub const feature_mve4beat = Feature{
888811 .name = "mve4beat",
889812 .description = "Model MVE instructions as a 4 beats per tick architecture",
890 .llvm_name = "mve4beat",
891813 .subfeatures = &[_]*const Feature {
892814 },
893815};
......@@ -895,7 +817,6 @@ pub const feature_mve4beat = Feature{
895817pub const feature_muxedUnits = Feature{
896818 .name = "muxed-units",
897819 .description = "Has muxed AGU and NEON/FPU",
898 .llvm_name = "muxed-units",
899820 .subfeatures = &[_]*const Feature {
900821 },
901822};
......@@ -903,17 +824,15 @@ pub const feature_muxedUnits = Feature{
903824pub const feature_neon = Feature{
904825 .name = "neon",
905826 .description = "Enable NEON instructions",
906 .llvm_name = "neon",
907827 .subfeatures = &[_]*const Feature {
908 &feature_d32,
909828 &feature_fpregs,
829 &feature_d32,
910830 },
911831};
912832
913833pub const feature_neonfp = Feature{
914834 .name = "neonfp",
915835 .description = "Use NEON for single precision FP",
916 .llvm_name = "neonfp",
917836 .subfeatures = &[_]*const Feature {
918837 },
919838};
......@@ -921,7 +840,6 @@ pub const feature_neonfp = Feature{
921840pub const feature_neonFpmovs = Feature{
922841 .name = "neon-fpmovs",
923842 .description = "Convert VMOVSR, VMOVRS, VMOVS to NEON",
924 .llvm_name = "neon-fpmovs",
925843 .subfeatures = &[_]*const Feature {
926844 },
927845};
......@@ -929,7 +847,6 @@ pub const feature_neonFpmovs = Feature{
929847pub const feature_naclTrap = Feature{
930848 .name = "nacl-trap",
931849 .description = "NaCl trap",
932 .llvm_name = "nacl-trap",
933850 .subfeatures = &[_]*const Feature {
934851 },
935852};
......@@ -937,7 +854,6 @@ pub const feature_naclTrap = Feature{
937854pub const feature_noarm = Feature{
938855 .name = "noarm",
939856 .description = "Does not support ARM mode execution",
940 .llvm_name = "noarm",
941857 .subfeatures = &[_]*const Feature {
942858 },
943859};
......@@ -945,7 +861,6 @@ pub const feature_noarm = Feature{
945861pub const feature_noMovt = Feature{
946862 .name = "no-movt",
947863 .description = "Don't use movt/movw pairs for 32-bit imms",
948 .llvm_name = "no-movt",
949864 .subfeatures = &[_]*const Feature {
950865 },
951866};
......@@ -953,7 +868,6 @@ pub const feature_noMovt = Feature{
953868pub const feature_noNegImmediates = Feature{
954869 .name = "no-neg-immediates",
955870 .description = "Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding.",
956 .llvm_name = "no-neg-immediates",
957871 .subfeatures = &[_]*const Feature {
958872 },
959873};
......@@ -961,7 +875,6 @@ pub const feature_noNegImmediates = Feature{
961875pub const feature_disablePostraScheduler = Feature{
962876 .name = "disable-postra-scheduler",
963877 .description = "Don't schedule again after register allocation",
964 .llvm_name = "disable-postra-scheduler",
965878 .subfeatures = &[_]*const Feature {
966879 },
967880};
......@@ -969,7 +882,6 @@ pub const feature_disablePostraScheduler = Feature{
969882pub const feature_nonpipelinedVfp = Feature{
970883 .name = "nonpipelined-vfp",
971884 .description = "VFP instructions are not pipelined",
972 .llvm_name = "nonpipelined-vfp",
973885 .subfeatures = &[_]*const Feature {
974886 },
975887};
......@@ -977,7 +889,6 @@ pub const feature_nonpipelinedVfp = Feature{
977889pub const feature_perfmon = Feature{
978890 .name = "perfmon",
979891 .description = "Enable support for Performance Monitor extensions",
980 .llvm_name = "perfmon",
981892 .subfeatures = &[_]*const Feature {
982893 },
983894};
......@@ -985,7 +896,6 @@ pub const feature_perfmon = Feature{
985896pub const feature_bit32 = Feature{
986897 .name = "32bit",
987898 .description = "Prefer 32-bit Thumb instrs",
988 .llvm_name = "32bit",
989899 .subfeatures = &[_]*const Feature {
990900 },
991901};
......@@ -993,7 +903,6 @@ pub const feature_bit32 = Feature{
993903pub const feature_preferIshst = Feature{
994904 .name = "prefer-ishst",
995905 .description = "Prefer ISHST barriers",
996 .llvm_name = "prefer-ishst",
997906 .subfeatures = &[_]*const Feature {
998907 },
999908};
......@@ -1001,7 +910,6 @@ pub const feature_preferIshst = Feature{
1001910pub const feature_loopAlign = Feature{
1002911 .name = "loop-align",
1003912 .description = "Prefer 32-bit alignment for loops",
1004 .llvm_name = "loop-align",
1005913 .subfeatures = &[_]*const Feature {
1006914 },
1007915};
......@@ -1009,7 +917,6 @@ pub const feature_loopAlign = Feature{
1009917pub const feature_preferVmovsr = Feature{
1010918 .name = "prefer-vmovsr",
1011919 .description = "Prefer VMOVSR",
1012 .llvm_name = "prefer-vmovsr",
1013920 .subfeatures = &[_]*const Feature {
1014921 },
1015922};
......@@ -1017,7 +924,6 @@ pub const feature_preferVmovsr = Feature{
1017924pub const feature_profUnpr = Feature{
1018925 .name = "prof-unpr",
1019926 .description = "Is profitable to unpredicate",
1020 .llvm_name = "prof-unpr",
1021927 .subfeatures = &[_]*const Feature {
1022928 },
1023929};
......@@ -1025,7 +931,6 @@ pub const feature_profUnpr = Feature{
1025931pub const feature_ras = Feature{
1026932 .name = "ras",
1027933 .description = "Enable Reliability, Availability and Serviceability extensions",
1028 .llvm_name = "ras",
1029934 .subfeatures = &[_]*const Feature {
1030935 },
1031936};
......@@ -1033,7 +938,6 @@ pub const feature_ras = Feature{
1033938pub const feature_rclass = Feature{
1034939 .name = "rclass",
1035940 .description = "Is realtime profile ('R' series)",
1036 .llvm_name = "rclass",
1037941 .subfeatures = &[_]*const Feature {
1038942 },
1039943};
......@@ -1041,7 +945,6 @@ pub const feature_rclass = Feature{
1041945pub const feature_readTpHard = Feature{
1042946 .name = "read-tp-hard",
1043947 .description = "Reading thread pointer from register",
1044 .llvm_name = "read-tp-hard",
1045948 .subfeatures = &[_]*const Feature {
1046949 },
1047950};
......@@ -1049,7 +952,6 @@ pub const feature_readTpHard = Feature{
1049952pub const feature_reserveR9 = Feature{
1050953 .name = "reserve-r9",
1051954 .description = "Reserve R9, making it unavailable as GPR",
1052 .llvm_name = "reserve-r9",
1053955 .subfeatures = &[_]*const Feature {
1054956 },
1055957};
......@@ -1057,7 +959,6 @@ pub const feature_reserveR9 = Feature{
1057959pub const feature_sb = Feature{
1058960 .name = "sb",
1059961 .description = "Enable v8.5a Speculation Barrier",
1060 .llvm_name = "sb",
1061962 .subfeatures = &[_]*const Feature {
1062963 },
1063964};
......@@ -1065,17 +966,15 @@ pub const feature_sb = Feature{
1065966pub const feature_sha2 = Feature{
1066967 .name = "sha2",
1067968 .description = "Enable SHA1 and SHA256 support",
1068 .llvm_name = "sha2",
1069969 .subfeatures = &[_]*const Feature {
1070 &feature_d32,
1071970 &feature_fpregs,
971 &feature_d32,
1072972 },
1073973};
1074974
1075975pub const feature_slowFpBrcc = Feature{
1076976 .name = "slow-fp-brcc",
1077977 .description = "FP compare + branch is slow",
1078 .llvm_name = "slow-fp-brcc",
1079978 .subfeatures = &[_]*const Feature {
1080979 },
1081980};
......@@ -1083,7 +982,6 @@ pub const feature_slowFpBrcc = Feature{
1083982pub const feature_slowLoadDSubreg = Feature{
1084983 .name = "slow-load-D-subreg",
1085984 .description = "Loading into D subregs is slow",
1086 .llvm_name = "slow-load-D-subreg",
1087985 .subfeatures = &[_]*const Feature {
1088986 },
1089987};
......@@ -1091,7 +989,6 @@ pub const feature_slowLoadDSubreg = Feature{
1091989pub const feature_slowOddReg = Feature{
1092990 .name = "slow-odd-reg",
1093991 .description = "VLDM/VSTM starting with an odd register is slow",
1094 .llvm_name = "slow-odd-reg",
1095992 .subfeatures = &[_]*const Feature {
1096993 },
1097994};
......@@ -1099,7 +996,6 @@ pub const feature_slowOddReg = Feature{
1099996pub const feature_slowVdup32 = Feature{
1100997 .name = "slow-vdup32",
1101998 .description = "Has slow VDUP32 - prefer VMOV",
1102 .llvm_name = "slow-vdup32",
1103999 .subfeatures = &[_]*const Feature {
11041000 },
11051001};
......@@ -1107,7 +1003,6 @@ pub const feature_slowVdup32 = Feature{
11071003pub const feature_slowVgetlni32 = Feature{
11081004 .name = "slow-vgetlni32",
11091005 .description = "Has slow VGETLNi32 - prefer VMOV",
1110 .llvm_name = "slow-vgetlni32",
11111006 .subfeatures = &[_]*const Feature {
11121007 },
11131008};
......@@ -1115,7 +1010,6 @@ pub const feature_slowVgetlni32 = Feature{
11151010pub const feature_splatVfpNeon = Feature{
11161011 .name = "splat-vfp-neon",
11171012 .description = "Splat register from VFP to NEON",
1118 .llvm_name = "splat-vfp-neon",
11191013 .subfeatures = &[_]*const Feature {
11201014 &feature_dontWidenVmovs,
11211015 },
......@@ -1124,7 +1018,6 @@ pub const feature_splatVfpNeon = Feature{
11241018pub const feature_strictAlign = Feature{
11251019 .name = "strict-align",
11261020 .description = "Disallow all unaligned memory access",
1127 .llvm_name = "strict-align",
11281021 .subfeatures = &[_]*const Feature {
11291022 },
11301023};
......@@ -1132,7 +1025,6 @@ pub const feature_strictAlign = Feature{
11321025pub const feature_thumb2 = Feature{
11331026 .name = "thumb2",
11341027 .description = "Enable Thumb2 instructions",
1135 .llvm_name = "thumb2",
11361028 .subfeatures = &[_]*const Feature {
11371029 },
11381030};
......@@ -1140,7 +1032,6 @@ pub const feature_thumb2 = Feature{
11401032pub const feature_trustzone = Feature{
11411033 .name = "trustzone",
11421034 .description = "Enable support for TrustZone security extensions",
1143 .llvm_name = "trustzone",
11441035 .subfeatures = &[_]*const Feature {
11451036 },
11461037};
......@@ -1148,7 +1039,6 @@ pub const feature_trustzone = Feature{
11481039pub const feature_useAa = Feature{
11491040 .name = "use-aa",
11501041 .description = "Use alias analysis during codegen",
1151 .llvm_name = "use-aa",
11521042 .subfeatures = &[_]*const Feature {
11531043 },
11541044};
......@@ -1156,7 +1046,6 @@ pub const feature_useAa = Feature{
11561046pub const feature_useMisched = Feature{
11571047 .name = "use-misched",
11581048 .description = "Use the MachineScheduler",
1159 .llvm_name = "use-misched",
11601049 .subfeatures = &[_]*const Feature {
11611050 },
11621051};
......@@ -1164,7 +1053,6 @@ pub const feature_useMisched = Feature{
11641053pub const feature_wideStrideVfp = Feature{
11651054 .name = "wide-stride-vfp",
11661055 .description = "Use a wide stride when allocating VFP registers",
1167 .llvm_name = "wide-stride-vfp",
11681056 .subfeatures = &[_]*const Feature {
11691057 },
11701058};
......@@ -1172,7 +1060,6 @@ pub const feature_wideStrideVfp = Feature{
11721060pub const feature_v7clrex = Feature{
11731061 .name = "v7clrex",
11741062 .description = "Has v7 clrex instruction",
1175 .llvm_name = "v7clrex",
11761063 .subfeatures = &[_]*const Feature {
11771064 },
11781065};
......@@ -1180,7 +1067,6 @@ pub const feature_v7clrex = Feature{
11801067pub const feature_vfp2 = Feature{
11811068 .name = "vfp2",
11821069 .description = "Enable VFP2 instructions",
1183 .llvm_name = "vfp2",
11841070 .subfeatures = &[_]*const Feature {
11851071 &feature_fpregs,
11861072 },
......@@ -1189,7 +1075,6 @@ pub const feature_vfp2 = Feature{
11891075pub const feature_vfp2sp = Feature{
11901076 .name = "vfp2sp",
11911077 .description = "Enable VFP2 instructions with no double precision",
1192 .llvm_name = "vfp2sp",
11931078 .subfeatures = &[_]*const Feature {
11941079 &feature_fpregs,
11951080 },
......@@ -1198,17 +1083,15 @@ pub const feature_vfp2sp = Feature{
11981083pub const feature_vfp3 = Feature{
11991084 .name = "vfp3",
12001085 .description = "Enable VFP3 instructions",
1201 .llvm_name = "vfp3",
12021086 .subfeatures = &[_]*const Feature {
1203 &feature_d32,
12041087 &feature_fpregs,
1088 &feature_d32,
12051089 },
12061090};
12071091
12081092pub const feature_vfp3d16 = Feature{
12091093 .name = "vfp3d16",
12101094 .description = "Enable VFP3 instructions with only 16 d-registers",
1211 .llvm_name = "vfp3d16",
12121095 .subfeatures = &[_]*const Feature {
12131096 &feature_fpregs,
12141097 },
......@@ -1217,7 +1100,6 @@ pub const feature_vfp3d16 = Feature{
12171100pub const feature_vfp3d16sp = Feature{
12181101 .name = "vfp3d16sp",
12191102 .description = "Enable VFP3 instructions with only 16 d-registers and no double precision",
1220 .llvm_name = "vfp3d16sp",
12211103 .subfeatures = &[_]*const Feature {
12221104 &feature_fpregs,
12231105 },
......@@ -1226,17 +1108,15 @@ pub const feature_vfp3d16sp = Feature{
12261108pub const feature_vfp3sp = Feature{
12271109 .name = "vfp3sp",
12281110 .description = "Enable VFP3 instructions with no double precision",
1229 .llvm_name = "vfp3sp",
12301111 .subfeatures = &[_]*const Feature {
1231 &feature_d32,
12321112 &feature_fpregs,
1113 &feature_d32,
12331114 },
12341115};
12351116
12361117pub const feature_vfp4 = Feature{
12371118 .name = "vfp4",
12381119 .description = "Enable VFP4 instructions",
1239 .llvm_name = "vfp4",
12401120 .subfeatures = &[_]*const Feature {
12411121 &feature_fp16,
12421122 &feature_d32,
......@@ -1247,7 +1127,6 @@ pub const feature_vfp4 = Feature{
12471127pub const feature_vfp4d16 = Feature{
12481128 .name = "vfp4d16",
12491129 .description = "Enable VFP4 instructions with only 16 d-registers",
1250 .llvm_name = "vfp4d16",
12511130 .subfeatures = &[_]*const Feature {
12521131 &feature_fp16,
12531132 &feature_fpregs,
......@@ -1257,7 +1136,6 @@ pub const feature_vfp4d16 = Feature{
12571136pub const feature_vfp4d16sp = Feature{
12581137 .name = "vfp4d16sp",
12591138 .description = "Enable VFP4 instructions with only 16 d-registers and no double precision",
1260 .llvm_name = "vfp4d16sp",
12611139 .subfeatures = &[_]*const Feature {
12621140 &feature_fp16,
12631141 &feature_fpregs,
......@@ -1267,7 +1145,6 @@ pub const feature_vfp4d16sp = Feature{
12671145pub const feature_vfp4sp = Feature{
12681146 .name = "vfp4sp",
12691147 .description = "Enable VFP4 instructions with no double precision",
1270 .llvm_name = "vfp4sp",
12711148 .subfeatures = &[_]*const Feature {
12721149 &feature_fp16,
12731150 &feature_d32,
......@@ -1278,7 +1155,6 @@ pub const feature_vfp4sp = Feature{
12781155pub const feature_vmlxForwarding = Feature{
12791156 .name = "vmlx-forwarding",
12801157 .description = "Has multiplier accumulator forwarding",
1281 .llvm_name = "vmlx-forwarding",
12821158 .subfeatures = &[_]*const Feature {
12831159 },
12841160};
......@@ -1286,17 +1162,15 @@ pub const feature_vmlxForwarding = Feature{
12861162pub const feature_virtualization = Feature{
12871163 .name = "virtualization",
12881164 .description = "Supports Virtualization extension",
1289 .llvm_name = "virtualization",
12901165 .subfeatures = &[_]*const Feature {
1291 &feature_hwdiv,
12921166 &feature_hwdivArm,
1167 &feature_hwdiv,
12931168 },
12941169};
12951170
12961171pub const feature_zcz = Feature{
12971172 .name = "zcz",
12981173 .description = "Has zero-cycle zeroing instructions",
1299 .llvm_name = "zcz",
13001174 .subfeatures = &[_]*const Feature {
13011175 },
13021176};
......@@ -1304,36 +1178,33 @@ pub const feature_zcz = Feature{
13041178pub const feature_mvefp = Feature{
13051179 .name = "mve.fp",
13061180 .description = "Support M-Class Vector Extension with integer and floating ops",
1307 .llvm_name = "mve.fp",
13081181 .subfeatures = &[_]*const Feature {
1309 &feature_v7clrex,
1310 &feature_thumb2,
1311 &feature_fp16,
1312 &feature_v4t,
13131182 &feature_dsp,
1314 &feature_perfmon,
13151183 &feature_fpregs,
1184 &feature_v4t,
1185 &feature_thumb2,
1186 &feature_v7clrex,
1187 &feature_perfmon,
1188 &feature_fp16,
13161189 },
13171190};
13181191
13191192pub const feature_mve = Feature{
13201193 .name = "mve",
13211194 .description = "Support M-Class Vector Extension with integer ops",
1322 .llvm_name = "mve",
13231195 .subfeatures = &[_]*const Feature {
1324 &feature_perfmon,
1325 &feature_v7clrex,
1326 &feature_thumb2,
1327 &feature_v4t,
13281196 &feature_dsp,
13291197 &feature_fpregs,
1198 &feature_thumb2,
1199 &feature_v7clrex,
1200 &feature_perfmon,
1201 &feature_v4t,
13301202 },
13311203};
13321204
13331205pub const feature_v4t = Feature{
13341206 .name = "v4t",
13351207 .description = "Support ARM v4T instructions",
1336 .llvm_name = "v4t",
13371208 .subfeatures = &[_]*const Feature {
13381209 },
13391210};
......@@ -1341,7 +1212,6 @@ pub const feature_v4t = Feature{
13411212pub const feature_v5te = Feature{
13421213 .name = "v5te",
13431214 .description = "Support ARM v5TE, v5TEj, and v5TExp instructions",
1344 .llvm_name = "v5te",
13451215 .subfeatures = &[_]*const Feature {
13461216 &feature_v4t,
13471217 },
......@@ -1350,7 +1220,6 @@ pub const feature_v5te = Feature{
13501220pub const feature_v5t = Feature{
13511221 .name = "v5t",
13521222 .description = "Support ARM v5T instructions",
1353 .llvm_name = "v5t",
13541223 .subfeatures = &[_]*const Feature {
13551224 &feature_v4t,
13561225 },
......@@ -1359,7 +1228,6 @@ pub const feature_v5t = Feature{
13591228pub const feature_v6k = Feature{
13601229 .name = "v6k",
13611230 .description = "Support ARM v6k instructions",
1362 .llvm_name = "v6k",
13631231 .subfeatures = &[_]*const Feature {
13641232 &feature_v4t,
13651233 },
......@@ -1368,7 +1236,6 @@ pub const feature_v6k = Feature{
13681236pub const feature_v6m = Feature{
13691237 .name = "v6m",
13701238 .description = "Support ARM v6M instructions",
1371 .llvm_name = "v6m",
13721239 .subfeatures = &[_]*const Feature {
13731240 &feature_v4t,
13741241 },
......@@ -1377,7 +1244,6 @@ pub const feature_v6m = Feature{
13771244pub const feature_v6 = Feature{
13781245 .name = "v6",
13791246 .description = "Support ARM v6 instructions",
1380 .llvm_name = "v6",
13811247 .subfeatures = &[_]*const Feature {
13821248 &feature_v4t,
13831249 },
......@@ -1386,29 +1252,26 @@ pub const feature_v6 = Feature{
13861252pub const feature_v6t2 = Feature{
13871253 .name = "v6t2",
13881254 .description = "Support ARM v6t2 instructions",
1389 .llvm_name = "v6t2",
13901255 .subfeatures = &[_]*const Feature {
1391 &feature_v4t,
13921256 &feature_thumb2,
1257 &feature_v4t,
13931258 },
13941259};
13951260
13961261pub const feature_v7 = Feature{
13971262 .name = "v7",
13981263 .description = "Support ARM v7 instructions",
1399 .llvm_name = "v7",
14001264 .subfeatures = &[_]*const Feature {
1401 &feature_v4t,
1265 &feature_thumb2,
14021266 &feature_v7clrex,
1267 &feature_v4t,
14031268 &feature_perfmon,
1404 &feature_thumb2,
14051269 },
14061270};
14071271
14081272pub const feature_v8m = Feature{
14091273 .name = "v8m",
14101274 .description = "Support ARM v8M Baseline instructions",
1411 .llvm_name = "v8m",
14121275 .subfeatures = &[_]*const Feature {
14131276 &feature_v4t,
14141277 },
......@@ -1417,114 +1280,105 @@ pub const feature_v8m = Feature{
14171280pub const feature_v8mmain = Feature{
14181281 .name = "v8m.main",
14191282 .description = "Support ARM v8M Mainline instructions",
1420 .llvm_name = "v8m.main",
14211283 .subfeatures = &[_]*const Feature {
1284 &feature_thumb2,
1285 &feature_v7clrex,
14221286 &feature_v4t,
14231287 &feature_perfmon,
1424 &feature_v7clrex,
1425 &feature_thumb2,
14261288 },
14271289};
14281290
14291291pub const feature_v8 = Feature{
14301292 .name = "v8",
14311293 .description = "Support ARM v8 instructions",
1432 .llvm_name = "v8",
14331294 .subfeatures = &[_]*const Feature {
1434 &feature_acquireRelease,
1435 &feature_v7clrex,
14361295 &feature_thumb2,
1437 &feature_v4t,
1296 &feature_v7clrex,
1297 &feature_acquireRelease,
14381298 &feature_perfmon,
1299 &feature_v4t,
14391300 },
14401301};
14411302
14421303pub const feature_v81mmain = Feature{
14431304 .name = "v8.1m.main",
14441305 .description = "Support ARM v8-1M Mainline instructions",
1445 .llvm_name = "v8.1m.main",
14461306 .subfeatures = &[_]*const Feature {
1447 &feature_v4t,
1307 &feature_thumb2,
14481308 &feature_v7clrex,
1309 &feature_v4t,
14491310 &feature_perfmon,
1450 &feature_thumb2,
14511311 },
14521312};
14531313
14541314pub const feature_v81a = Feature{
14551315 .name = "v8.1a",
14561316 .description = "Support ARM v8.1a instructions",
1457 .llvm_name = "v8.1a",
14581317 .subfeatures = &[_]*const Feature {
1459 &feature_acquireRelease,
1460 &feature_v7clrex,
14611318 &feature_thumb2,
1462 &feature_v4t,
1319 &feature_v7clrex,
1320 &feature_acquireRelease,
14631321 &feature_perfmon,
1322 &feature_v4t,
14641323 },
14651324};
14661325
14671326pub const feature_v82a = Feature{
14681327 .name = "v8.2a",
14691328 .description = "Support ARM v8.2a instructions",
1470 .llvm_name = "v8.2a",
14711329 .subfeatures = &[_]*const Feature {
1472 &feature_acquireRelease,
1473 &feature_v7clrex,
14741330 &feature_thumb2,
1475 &feature_v4t,
1331 &feature_v7clrex,
1332 &feature_acquireRelease,
14761333 &feature_perfmon,
1334 &feature_v4t,
14771335 },
14781336};
14791337
14801338pub const feature_v83a = Feature{
14811339 .name = "v8.3a",
14821340 .description = "Support ARM v8.3a instructions",
1483 .llvm_name = "v8.3a",
14841341 .subfeatures = &[_]*const Feature {
1485 &feature_acquireRelease,
1486 &feature_v7clrex,
14871342 &feature_thumb2,
1488 &feature_v4t,
1343 &feature_v7clrex,
1344 &feature_acquireRelease,
14891345 &feature_perfmon,
1346 &feature_v4t,
14901347 },
14911348};
14921349
14931350pub const feature_v84a = Feature{
14941351 .name = "v8.4a",
14951352 .description = "Support ARM v8.4a instructions",
1496 .llvm_name = "v8.4a",
14971353 .subfeatures = &[_]*const Feature {
1498 &feature_acquireRelease,
1499 &feature_v7clrex,
1354 &feature_fpregs,
15001355 &feature_thumb2,
1356 &feature_v7clrex,
1357 &feature_acquireRelease,
1358 &feature_perfmon,
15011359 &feature_v4t,
15021360 &feature_d32,
1503 &feature_perfmon,
1504 &feature_fpregs,
15051361 },
15061362};
15071363
15081364pub const feature_v85a = Feature{
15091365 .name = "v8.5a",
15101366 .description = "Support ARM v8.5a instructions",
1511 .llvm_name = "v8.5a",
15121367 .subfeatures = &[_]*const Feature {
1513 &feature_acquireRelease,
1514 &feature_v7clrex,
1368 &feature_fpregs,
15151369 &feature_thumb2,
1516 &feature_v4t,
1517 &feature_d32,
15181370 &feature_sb,
1371 &feature_v7clrex,
1372 &feature_acquireRelease,
15191373 &feature_perfmon,
1520 &feature_fpregs,
1374 &feature_v4t,
1375 &feature_d32,
15211376 },
15221377};
15231378
15241379pub const feature_iwmmxt = Feature{
15251380 .name = "iwmmxt",
15261381 .description = "ARMv5te architecture",
1527 .llvm_name = "iwmmxt",
15281382 .subfeatures = &[_]*const Feature {
15291383 &feature_v4t,
15301384 },
......@@ -1533,7 +1387,6 @@ pub const feature_iwmmxt = Feature{
15331387pub const feature_iwmmxt2 = Feature{
15341388 .name = "iwmmxt2",
15351389 .description = "ARMv5te architecture",
1536 .llvm_name = "iwmmxt2",
15371390 .subfeatures = &[_]*const Feature {
15381391 &feature_v4t,
15391392 },
......@@ -1542,7 +1395,6 @@ pub const feature_iwmmxt2 = Feature{
15421395pub const feature_softFloat = Feature{
15431396 .name = "soft-float",
15441397 .description = "Use software floating point features.",
1545 .llvm_name = "soft-float",
15461398 .subfeatures = &[_]*const Feature {
15471399 },
15481400};
......@@ -1550,7 +1402,6 @@ pub const feature_softFloat = Feature{
15501402pub const feature_thumbMode = Feature{
15511403 .name = "thumb-mode",
15521404 .description = "Thumb mode",
1553 .llvm_name = "thumb-mode",
15541405 .subfeatures = &[_]*const Feature {
15551406 },
15561407};
......@@ -1558,7 +1409,6 @@ pub const feature_thumbMode = Feature{
15581409pub const feature_a5 = Feature{
15591410 .name = "a5",
15601411 .description = "Cortex-A5 ARM processors",
1561 .llvm_name = "a5",
15621412 .subfeatures = &[_]*const Feature {
15631413 },
15641414};
......@@ -1566,7 +1416,6 @@ pub const feature_a5 = Feature{
15661416pub const feature_a7 = Feature{
15671417 .name = "a7",
15681418 .description = "Cortex-A7 ARM processors",
1569 .llvm_name = "a7",
15701419 .subfeatures = &[_]*const Feature {
15711420 },
15721421};
......@@ -1574,7 +1423,6 @@ pub const feature_a7 = Feature{
15741423pub const feature_a8 = Feature{
15751424 .name = "a8",
15761425 .description = "Cortex-A8 ARM processors",
1577 .llvm_name = "a8",
15781426 .subfeatures = &[_]*const Feature {
15791427 },
15801428};
......@@ -1582,7 +1430,6 @@ pub const feature_a8 = Feature{
15821430pub const feature_a9 = Feature{
15831431 .name = "a9",
15841432 .description = "Cortex-A9 ARM processors",
1585 .llvm_name = "a9",
15861433 .subfeatures = &[_]*const Feature {
15871434 },
15881435};
......@@ -1590,7 +1437,6 @@ pub const feature_a9 = Feature{
15901437pub const feature_a12 = Feature{
15911438 .name = "a12",
15921439 .description = "Cortex-A12 ARM processors",
1593 .llvm_name = "a12",
15941440 .subfeatures = &[_]*const Feature {
15951441 },
15961442};
......@@ -1598,7 +1444,6 @@ pub const feature_a12 = Feature{
15981444pub const feature_a15 = Feature{
15991445 .name = "a15",
16001446 .description = "Cortex-A15 ARM processors",
1601 .llvm_name = "a15",
16021447 .subfeatures = &[_]*const Feature {
16031448 },
16041449};
......@@ -1606,7 +1451,6 @@ pub const feature_a15 = Feature{
16061451pub const feature_a17 = Feature{
16071452 .name = "a17",
16081453 .description = "Cortex-A17 ARM processors",
1609 .llvm_name = "a17",
16101454 .subfeatures = &[_]*const Feature {
16111455 },
16121456};
......@@ -1614,7 +1458,6 @@ pub const feature_a17 = Feature{
16141458pub const feature_a32 = Feature{
16151459 .name = "a32",
16161460 .description = "Cortex-A32 ARM processors",
1617 .llvm_name = "a32",
16181461 .subfeatures = &[_]*const Feature {
16191462 },
16201463};
......@@ -1622,7 +1465,6 @@ pub const feature_a32 = Feature{
16221465pub const feature_a35 = Feature{
16231466 .name = "a35",
16241467 .description = "Cortex-A35 ARM processors",
1625 .llvm_name = "a35",
16261468 .subfeatures = &[_]*const Feature {
16271469 },
16281470};
......@@ -1630,7 +1472,6 @@ pub const feature_a35 = Feature{
16301472pub const feature_a53 = Feature{
16311473 .name = "a53",
16321474 .description = "Cortex-A53 ARM processors",
1633 .llvm_name = "a53",
16341475 .subfeatures = &[_]*const Feature {
16351476 },
16361477};
......@@ -1638,7 +1479,6 @@ pub const feature_a53 = Feature{
16381479pub const feature_a55 = Feature{
16391480 .name = "a55",
16401481 .description = "Cortex-A55 ARM processors",
1641 .llvm_name = "a55",
16421482 .subfeatures = &[_]*const Feature {
16431483 },
16441484};
......@@ -1646,7 +1486,6 @@ pub const feature_a55 = Feature{
16461486pub const feature_a57 = Feature{
16471487 .name = "a57",
16481488 .description = "Cortex-A57 ARM processors",
1649 .llvm_name = "a57",
16501489 .subfeatures = &[_]*const Feature {
16511490 },
16521491};
......@@ -1654,7 +1493,6 @@ pub const feature_a57 = Feature{
16541493pub const feature_a72 = Feature{
16551494 .name = "a72",
16561495 .description = "Cortex-A72 ARM processors",
1657 .llvm_name = "a72",
16581496 .subfeatures = &[_]*const Feature {
16591497 },
16601498};
......@@ -1662,7 +1500,6 @@ pub const feature_a72 = Feature{
16621500pub const feature_a73 = Feature{
16631501 .name = "a73",
16641502 .description = "Cortex-A73 ARM processors",
1665 .llvm_name = "a73",
16661503 .subfeatures = &[_]*const Feature {
16671504 },
16681505};
......@@ -1670,7 +1507,6 @@ pub const feature_a73 = Feature{
16701507pub const feature_a75 = Feature{
16711508 .name = "a75",
16721509 .description = "Cortex-A75 ARM processors",
1673 .llvm_name = "a75",
16741510 .subfeatures = &[_]*const Feature {
16751511 },
16761512};
......@@ -1678,7 +1514,6 @@ pub const feature_a75 = Feature{
16781514pub const feature_a76 = Feature{
16791515 .name = "a76",
16801516 .description = "Cortex-A76 ARM processors",
1681 .llvm_name = "a76",
16821517 .subfeatures = &[_]*const Feature {
16831518 },
16841519};
......@@ -1686,33 +1521,31 @@ pub const feature_a76 = Feature{
16861521pub const feature_exynos = Feature{
16871522 .name = "exynos",
16881523 .description = "Samsung Exynos processors",
1689 .llvm_name = "exynos",
16901524 .subfeatures = &[_]*const Feature {
1691 &feature_slowFpBrcc,
1692 &feature_slowfpvmlx,
1525 &feature_useAa,
1526 &feature_hwdivArm,
1527 &feature_zcz,
16931528 &feature_hwdiv,
1529 &feature_expandFpMlx,
16941530 &feature_slowVdup32,
1695 &feature_wideStrideVfp,
1696 &feature_fuseAes,
1531 &feature_fpregs,
16971532 &feature_slowVgetlni32,
1698 &feature_zcz,
16991533 &feature_profUnpr,
1700 &feature_d32,
1701 &feature_hwdivArm,
1534 &feature_wideStrideVfp,
17021535 &feature_retAddrStack,
1536 &feature_fuseAes,
1537 &feature_fuseLiterals,
17031538 &feature_crc,
1704 &feature_expandFpMlx,
1705 &feature_useAa,
1539 &feature_slowfpvmlx,
1540 &feature_slowFpBrcc,
17061541 &feature_dontWidenVmovs,
1707 &feature_fpregs,
1708 &feature_fuseLiterals,
1542 &feature_d32,
17091543 },
17101544};
17111545
17121546pub const feature_krait = Feature{
17131547 .name = "krait",
17141548 .description = "Qualcomm Krait processors",
1715 .llvm_name = "krait",
17161549 .subfeatures = &[_]*const Feature {
17171550 },
17181551};
......@@ -1720,7 +1553,6 @@ pub const feature_krait = Feature{
17201553pub const feature_kryo = Feature{
17211554 .name = "kryo",
17221555 .description = "Qualcomm Kryo processors",
1723 .llvm_name = "kryo",
17241556 .subfeatures = &[_]*const Feature {
17251557 },
17261558};
......@@ -1728,7 +1560,6 @@ pub const feature_kryo = Feature{
17281560pub const feature_m3 = Feature{
17291561 .name = "m3",
17301562 .description = "Cortex-M3 ARM processors",
1731 .llvm_name = "m3",
17321563 .subfeatures = &[_]*const Feature {
17331564 },
17341565};
......@@ -1736,7 +1567,6 @@ pub const feature_m3 = Feature{
17361567pub const feature_r4 = Feature{
17371568 .name = "r4",
17381569 .description = "Cortex-R4 ARM processors",
1739 .llvm_name = "r4",
17401570 .subfeatures = &[_]*const Feature {
17411571 },
17421572};
......@@ -1744,7 +1574,6 @@ pub const feature_r4 = Feature{
17441574pub const feature_r5 = Feature{
17451575 .name = "r5",
17461576 .description = "Cortex-R5 ARM processors",
1747 .llvm_name = "r5",
17481577 .subfeatures = &[_]*const Feature {
17491578 },
17501579};
......@@ -1752,7 +1581,6 @@ pub const feature_r5 = Feature{
17521581pub const feature_r7 = Feature{
17531582 .name = "r7",
17541583 .description = "Cortex-R7 ARM processors",
1755 .llvm_name = "r7",
17561584 .subfeatures = &[_]*const Feature {
17571585 },
17581586};
......@@ -1760,7 +1588,6 @@ pub const feature_r7 = Feature{
17601588pub const feature_r52 = Feature{
17611589 .name = "r52",
17621590 .description = "Cortex-R52 ARM processors",
1763 .llvm_name = "r52",
17641591 .subfeatures = &[_]*const Feature {
17651592 },
17661593};
......@@ -1768,7 +1595,6 @@ pub const feature_r52 = Feature{
17681595pub const feature_swift = Feature{
17691596 .name = "swift",
17701597 .description = "Swift ARM processors",
1771 .llvm_name = "swift",
17721598 .subfeatures = &[_]*const Feature {
17731599 },
17741600};
......@@ -1776,7 +1602,6 @@ pub const feature_swift = Feature{
17761602pub const feature_xscale = Feature{
17771603 .name = "xscale",
17781604 .description = "ARMv5te architecture",
1779 .llvm_name = "xscale",
17801605 .subfeatures = &[_]*const Feature {
17811606 &feature_v4t,
17821607 },
......@@ -2032,9 +1857,9 @@ pub const cpu_arm1156t2S = Cpu{
20321857 .name = "arm1156t2-s",
20331858 .llvm_name = "arm1156t2-s",
20341859 .subfeatures = &[_]*const Feature {
2035 &feature_v4t,
2036 &feature_dsp,
20371860 &feature_thumb2,
1861 &feature_dsp,
1862 &feature_v4t,
20381863 &feature_armv6t2,
20391864 },
20401865};
......@@ -2043,9 +1868,9 @@ pub const cpu_arm1156t2fS = Cpu{
20431868 .name = "arm1156t2f-s",
20441869 .llvm_name = "arm1156t2f-s",
20451870 .subfeatures = &[_]*const Feature {
2046 &feature_v4t,
2047 &feature_dsp,
20481871 &feature_thumb2,
1872 &feature_dsp,
1873 &feature_v4t,
20491874 &feature_armv6t2,
20501875 &feature_slowfpvmlx,
20511876 &feature_fpregs,
......@@ -2241,15 +2066,15 @@ pub const cpu_cortexA12 = Cpu{
22412066 .name = "cortex-a12",
22422067 .llvm_name = "cortex-a12",
22432068 .subfeatures = &[_]*const Feature {
2244 &feature_perfmon,
2245 &feature_v7clrex,
22462069 &feature_db,
2070 &feature_dsp,
2071 &feature_fpregs,
22472072 &feature_thumb2,
2073 &feature_v7clrex,
2074 &feature_aclass,
2075 &feature_perfmon,
22482076 &feature_v4t,
22492077 &feature_d32,
2250 &feature_aclass,
2251 &feature_dsp,
2252 &feature_fpregs,
22532078 &feature_armv7A,
22542079 &feature_avoidPartialCpsr,
22552080 &feature_retAddrStack,
......@@ -2258,8 +2083,8 @@ pub const cpu_cortexA12 = Cpu{
22582083 &feature_fp16,
22592084 &feature_vfp4,
22602085 &feature_vmlxForwarding,
2261 &feature_hwdiv,
22622086 &feature_hwdivArm,
2087 &feature_hwdiv,
22632088 &feature_virtualization,
22642089 &feature_a12,
22652090 },
......@@ -2269,15 +2094,15 @@ pub const cpu_cortexA15 = Cpu{
22692094 .name = "cortex-a15",
22702095 .llvm_name = "cortex-a15",
22712096 .subfeatures = &[_]*const Feature {
2272 &feature_perfmon,
2273 &feature_v7clrex,
22742097 &feature_db,
2098 &feature_dsp,
2099 &feature_fpregs,
22752100 &feature_thumb2,
2101 &feature_v7clrex,
2102 &feature_aclass,
2103 &feature_perfmon,
22762104 &feature_v4t,
22772105 &feature_d32,
2278 &feature_aclass,
2279 &feature_dsp,
2280 &feature_fpregs,
22812106 &feature_armv7A,
22822107 &feature_avoidPartialCpsr,
22832108 &feature_vldnAlign,
......@@ -2289,8 +2114,8 @@ pub const cpu_cortexA15 = Cpu{
22892114 &feature_trustzone,
22902115 &feature_fp16,
22912116 &feature_vfp4,
2292 &feature_hwdiv,
22932117 &feature_hwdivArm,
2118 &feature_hwdiv,
22942119 &feature_virtualization,
22952120 &feature_a15,
22962121 },
......@@ -2300,15 +2125,15 @@ pub const cpu_cortexA17 = Cpu{
23002125 .name = "cortex-a17",
23012126 .llvm_name = "cortex-a17",
23022127 .subfeatures = &[_]*const Feature {
2303 &feature_perfmon,
2304 &feature_v7clrex,
23052128 &feature_db,
2129 &feature_dsp,
2130 &feature_fpregs,
23062131 &feature_thumb2,
2132 &feature_v7clrex,
2133 &feature_aclass,
2134 &feature_perfmon,
23072135 &feature_v4t,
23082136 &feature_d32,
2309 &feature_aclass,
2310 &feature_dsp,
2311 &feature_fpregs,
23122137 &feature_armv7A,
23132138 &feature_avoidPartialCpsr,
23142139 &feature_retAddrStack,
......@@ -2317,8 +2142,8 @@ pub const cpu_cortexA17 = Cpu{
23172142 &feature_fp16,
23182143 &feature_vfp4,
23192144 &feature_vmlxForwarding,
2320 &feature_hwdiv,
23212145 &feature_hwdivArm,
2146 &feature_hwdiv,
23222147 &feature_virtualization,
23232148 &feature_a17,
23242149 },
......@@ -2328,22 +2153,22 @@ pub const cpu_cortexA32 = Cpu{
23282153 .name = "cortex-a32",
23292154 .llvm_name = "cortex-a32",
23302155 .subfeatures = &[_]*const Feature {
2331 &feature_mp,
2332 &feature_acquireRelease,
2333 &feature_perfmon,
2156 &feature_db,
2157 &feature_dsp,
2158 &feature_hwdivArm,
23342159 &feature_hwdiv,
23352160 &feature_trustzone,
2336 &feature_v7clrex,
2337 &feature_db,
2338 &feature_thumb2,
2339 &feature_fp16,
2161 &feature_fpregs,
23402162 &feature_v4t,
2341 &feature_d32,
2163 &feature_thumb2,
2164 &feature_v7clrex,
23422165 &feature_aclass,
2343 &feature_hwdivArm,
23442166 &feature_crc,
2345 &feature_dsp,
2346 &feature_fpregs,
2167 &feature_mp,
2168 &feature_acquireRelease,
2169 &feature_fp16,
2170 &feature_perfmon,
2171 &feature_d32,
23472172 &feature_armv8A,
23482173 &feature_crypto,
23492174 },
......@@ -2353,22 +2178,22 @@ pub const cpu_cortexA35 = Cpu{
23532178 .name = "cortex-a35",
23542179 .llvm_name = "cortex-a35",
23552180 .subfeatures = &[_]*const Feature {
2356 &feature_mp,
2357 &feature_acquireRelease,
2358 &feature_perfmon,
2181 &feature_db,
2182 &feature_dsp,
2183 &feature_hwdivArm,
23592184 &feature_hwdiv,
23602185 &feature_trustzone,
2361 &feature_v7clrex,
2362 &feature_db,
2363 &feature_thumb2,
2364 &feature_fp16,
2186 &feature_fpregs,
23652187 &feature_v4t,
2366 &feature_d32,
2188 &feature_thumb2,
2189 &feature_v7clrex,
23672190 &feature_aclass,
2368 &feature_hwdivArm,
23692191 &feature_crc,
2370 &feature_dsp,
2371 &feature_fpregs,
2192 &feature_mp,
2193 &feature_acquireRelease,
2194 &feature_fp16,
2195 &feature_perfmon,
2196 &feature_d32,
23722197 &feature_armv8A,
23732198 &feature_crypto,
23742199 &feature_a35,
......@@ -2379,15 +2204,15 @@ pub const cpu_cortexA5 = Cpu{
23792204 .name = "cortex-a5",
23802205 .llvm_name = "cortex-a5",
23812206 .subfeatures = &[_]*const Feature {
2382 &feature_perfmon,
2383 &feature_v7clrex,
23842207 &feature_db,
2208 &feature_dsp,
2209 &feature_fpregs,
23852210 &feature_thumb2,
2211 &feature_v7clrex,
2212 &feature_aclass,
2213 &feature_perfmon,
23862214 &feature_v4t,
23872215 &feature_d32,
2388 &feature_aclass,
2389 &feature_dsp,
2390 &feature_fpregs,
23912216 &feature_armv7A,
23922217 &feature_retAddrStack,
23932218 &feature_slowfpvmlx,
......@@ -2405,22 +2230,22 @@ pub const cpu_cortexA53 = Cpu{
24052230 .name = "cortex-a53",
24062231 .llvm_name = "cortex-a53",
24072232 .subfeatures = &[_]*const Feature {
2408 &feature_mp,
2409 &feature_acquireRelease,
2410 &feature_perfmon,
2233 &feature_db,
2234 &feature_dsp,
2235 &feature_hwdivArm,
24112236 &feature_hwdiv,
24122237 &feature_trustzone,
2413 &feature_v7clrex,
2414 &feature_db,
2415 &feature_thumb2,
2416 &feature_fp16,
2238 &feature_fpregs,
24172239 &feature_v4t,
2418 &feature_d32,
2240 &feature_thumb2,
2241 &feature_v7clrex,
24192242 &feature_aclass,
2420 &feature_hwdivArm,
24212243 &feature_crc,
2422 &feature_dsp,
2423 &feature_fpregs,
2244 &feature_mp,
2245 &feature_acquireRelease,
2246 &feature_fp16,
2247 &feature_perfmon,
2248 &feature_d32,
24242249 &feature_armv8A,
24252250 &feature_crypto,
24262251 &feature_fpao,
......@@ -2432,23 +2257,23 @@ pub const cpu_cortexA55 = Cpu{
24322257 .name = "cortex-a55",
24332258 .llvm_name = "cortex-a55",
24342259 .subfeatures = &[_]*const Feature {
2435 &feature_mp,
2436 &feature_acquireRelease,
2437 &feature_perfmon,
2260 &feature_db,
2261 &feature_dsp,
2262 &feature_hwdivArm,
24382263 &feature_hwdiv,
24392264 &feature_trustzone,
2440 &feature_v7clrex,
2441 &feature_db,
2265 &feature_fpregs,
2266 &feature_v4t,
24422267 &feature_thumb2,
24432268 &feature_ras,
2444 &feature_fp16,
2445 &feature_v4t,
2446 &feature_d32,
2269 &feature_v7clrex,
24472270 &feature_aclass,
2448 &feature_hwdivArm,
24492271 &feature_crc,
2450 &feature_dsp,
2451 &feature_fpregs,
2272 &feature_mp,
2273 &feature_acquireRelease,
2274 &feature_fp16,
2275 &feature_perfmon,
2276 &feature_d32,
24522277 &feature_armv82A,
24532278 &feature_dotprod,
24542279 &feature_a55,
......@@ -2459,22 +2284,22 @@ pub const cpu_cortexA57 = Cpu{
24592284 .name = "cortex-a57",
24602285 .llvm_name = "cortex-a57",
24612286 .subfeatures = &[_]*const Feature {
2462 &feature_mp,
2463 &feature_acquireRelease,
2464 &feature_perfmon,
2287 &feature_db,
2288 &feature_dsp,
2289 &feature_hwdivArm,
24652290 &feature_hwdiv,
24662291 &feature_trustzone,
2467 &feature_v7clrex,
2468 &feature_db,
2469 &feature_thumb2,
2470 &feature_fp16,
2292 &feature_fpregs,
24712293 &feature_v4t,
2472 &feature_d32,
2294 &feature_thumb2,
2295 &feature_v7clrex,
24732296 &feature_aclass,
2474 &feature_hwdivArm,
24752297 &feature_crc,
2476 &feature_dsp,
2477 &feature_fpregs,
2298 &feature_mp,
2299 &feature_acquireRelease,
2300 &feature_fp16,
2301 &feature_perfmon,
2302 &feature_d32,
24782303 &feature_armv8A,
24792304 &feature_avoidPartialCpsr,
24802305 &feature_cheapPredicableCpsr,
......@@ -2488,15 +2313,15 @@ pub const cpu_cortexA7 = Cpu{
24882313 .name = "cortex-a7",
24892314 .llvm_name = "cortex-a7",
24902315 .subfeatures = &[_]*const Feature {
2491 &feature_perfmon,
2492 &feature_v7clrex,
24932316 &feature_db,
2317 &feature_dsp,
2318 &feature_fpregs,
24942319 &feature_thumb2,
2320 &feature_v7clrex,
2321 &feature_aclass,
2322 &feature_perfmon,
24952323 &feature_v4t,
24962324 &feature_d32,
2497 &feature_aclass,
2498 &feature_dsp,
2499 &feature_fpregs,
25002325 &feature_armv7A,
25012326 &feature_retAddrStack,
25022327 &feature_slowfpvmlx,
......@@ -2507,8 +2332,8 @@ pub const cpu_cortexA7 = Cpu{
25072332 &feature_fp16,
25082333 &feature_vfp4,
25092334 &feature_vmlxForwarding,
2510 &feature_hwdiv,
25112335 &feature_hwdivArm,
2336 &feature_hwdiv,
25122337 &feature_virtualization,
25132338 &feature_a7,
25142339 },
......@@ -2518,22 +2343,22 @@ pub const cpu_cortexA72 = Cpu{
25182343 .name = "cortex-a72",
25192344 .llvm_name = "cortex-a72",
25202345 .subfeatures = &[_]*const Feature {
2521 &feature_mp,
2522 &feature_acquireRelease,
2523 &feature_perfmon,
2346 &feature_db,
2347 &feature_dsp,
2348 &feature_hwdivArm,
25242349 &feature_hwdiv,
25252350 &feature_trustzone,
2526 &feature_v7clrex,
2527 &feature_db,
2528 &feature_thumb2,
2529 &feature_fp16,
2351 &feature_fpregs,
25302352 &feature_v4t,
2531 &feature_d32,
2353 &feature_thumb2,
2354 &feature_v7clrex,
25322355 &feature_aclass,
2533 &feature_hwdivArm,
25342356 &feature_crc,
2535 &feature_dsp,
2536 &feature_fpregs,
2357 &feature_mp,
2358 &feature_acquireRelease,
2359 &feature_fp16,
2360 &feature_perfmon,
2361 &feature_d32,
25372362 &feature_armv8A,
25382363 &feature_crypto,
25392364 &feature_a72,
......@@ -2544,22 +2369,22 @@ pub const cpu_cortexA73 = Cpu{
25442369 .name = "cortex-a73",
25452370 .llvm_name = "cortex-a73",
25462371 .subfeatures = &[_]*const Feature {
2547 &feature_mp,
2548 &feature_acquireRelease,
2549 &feature_perfmon,
2372 &feature_db,
2373 &feature_dsp,
2374 &feature_hwdivArm,
25502375 &feature_hwdiv,
25512376 &feature_trustzone,
2552 &feature_v7clrex,
2553 &feature_db,
2554 &feature_thumb2,
2555 &feature_fp16,
2377 &feature_fpregs,
25562378 &feature_v4t,
2557 &feature_d32,
2379 &feature_thumb2,
2380 &feature_v7clrex,
25582381 &feature_aclass,
2559 &feature_hwdivArm,
25602382 &feature_crc,
2561 &feature_dsp,
2562 &feature_fpregs,
2383 &feature_mp,
2384 &feature_acquireRelease,
2385 &feature_fp16,
2386 &feature_perfmon,
2387 &feature_d32,
25632388 &feature_armv8A,
25642389 &feature_crypto,
25652390 &feature_a73,
......@@ -2570,23 +2395,23 @@ pub const cpu_cortexA75 = Cpu{
25702395 .name = "cortex-a75",
25712396 .llvm_name = "cortex-a75",
25722397 .subfeatures = &[_]*const Feature {
2573 &feature_mp,
2574 &feature_acquireRelease,
2575 &feature_perfmon,
2398 &feature_db,
2399 &feature_dsp,
2400 &feature_hwdivArm,
25762401 &feature_hwdiv,
25772402 &feature_trustzone,
2578 &feature_v7clrex,
2579 &feature_db,
2403 &feature_fpregs,
2404 &feature_v4t,
25802405 &feature_thumb2,
25812406 &feature_ras,
2582 &feature_fp16,
2583 &feature_v4t,
2584 &feature_d32,
2407 &feature_v7clrex,
25852408 &feature_aclass,
2586 &feature_hwdivArm,
25872409 &feature_crc,
2588 &feature_dsp,
2589 &feature_fpregs,
2410 &feature_mp,
2411 &feature_acquireRelease,
2412 &feature_fp16,
2413 &feature_perfmon,
2414 &feature_d32,
25902415 &feature_armv82A,
25912416 &feature_dotprod,
25922417 &feature_a75,
......@@ -2597,23 +2422,23 @@ pub const cpu_cortexA76 = Cpu{
25972422 .name = "cortex-a76",
25982423 .llvm_name = "cortex-a76",
25992424 .subfeatures = &[_]*const Feature {
2600 &feature_mp,
2601 &feature_acquireRelease,
2602 &feature_perfmon,
2425 &feature_db,
2426 &feature_dsp,
2427 &feature_hwdivArm,
26032428 &feature_hwdiv,
26042429 &feature_trustzone,
2605 &feature_v7clrex,
2606 &feature_db,
2430 &feature_fpregs,
2431 &feature_v4t,
26072432 &feature_thumb2,
26082433 &feature_ras,
2609 &feature_fp16,
2610 &feature_v4t,
2611 &feature_d32,
2434 &feature_v7clrex,
26122435 &feature_aclass,
2613 &feature_hwdivArm,
26142436 &feature_crc,
2615 &feature_dsp,
2616 &feature_fpregs,
2437 &feature_mp,
2438 &feature_acquireRelease,
2439 &feature_fp16,
2440 &feature_perfmon,
2441 &feature_d32,
26172442 &feature_armv82A,
26182443 &feature_crypto,
26192444 &feature_dotprod,
......@@ -2626,23 +2451,23 @@ pub const cpu_cortexA76ae = Cpu{
26262451 .name = "cortex-a76ae",
26272452 .llvm_name = "cortex-a76ae",
26282453 .subfeatures = &[_]*const Feature {
2629 &feature_mp,
2630 &feature_acquireRelease,
2631 &feature_perfmon,
2454 &feature_db,
2455 &feature_dsp,
2456 &feature_hwdivArm,
26322457 &feature_hwdiv,
26332458 &feature_trustzone,
2634 &feature_v7clrex,
2635 &feature_db,
2459 &feature_fpregs,
2460 &feature_v4t,
26362461 &feature_thumb2,
26372462 &feature_ras,
2638 &feature_fp16,
2639 &feature_v4t,
2640 &feature_d32,
2463 &feature_v7clrex,
26412464 &feature_aclass,
2642 &feature_hwdivArm,
26432465 &feature_crc,
2644 &feature_dsp,
2645 &feature_fpregs,
2466 &feature_mp,
2467 &feature_acquireRelease,
2468 &feature_fp16,
2469 &feature_perfmon,
2470 &feature_d32,
26462471 &feature_armv82A,
26472472 &feature_crypto,
26482473 &feature_dotprod,
......@@ -2655,15 +2480,15 @@ pub const cpu_cortexA8 = Cpu{
26552480 .name = "cortex-a8",
26562481 .llvm_name = "cortex-a8",
26572482 .subfeatures = &[_]*const Feature {
2658 &feature_perfmon,
2659 &feature_v7clrex,
26602483 &feature_db,
2484 &feature_dsp,
2485 &feature_fpregs,
26612486 &feature_thumb2,
2487 &feature_v7clrex,
2488 &feature_aclass,
2489 &feature_perfmon,
26622490 &feature_v4t,
26632491 &feature_d32,
2664 &feature_aclass,
2665 &feature_dsp,
2666 &feature_fpregs,
26672492 &feature_armv7A,
26682493 &feature_retAddrStack,
26692494 &feature_slowfpvmlx,
......@@ -2680,15 +2505,15 @@ pub const cpu_cortexA9 = Cpu{
26802505 .name = "cortex-a9",
26812506 .llvm_name = "cortex-a9",
26822507 .subfeatures = &[_]*const Feature {
2683 &feature_perfmon,
2684 &feature_v7clrex,
26852508 &feature_db,
2509 &feature_dsp,
2510 &feature_fpregs,
26862511 &feature_thumb2,
2512 &feature_v7clrex,
2513 &feature_aclass,
2514 &feature_perfmon,
26872515 &feature_v4t,
26882516 &feature_d32,
2689 &feature_aclass,
2690 &feature_dsp,
2691 &feature_fpregs,
26922517 &feature_armv7A,
26932518 &feature_avoidPartialCpsr,
26942519 &feature_vldnAlign,
......@@ -2711,11 +2536,11 @@ pub const cpu_cortexM0 = Cpu{
27112536 .llvm_name = "cortex-m0",
27122537 .subfeatures = &[_]*const Feature {
27132538 &feature_db,
2714 &feature_thumbMode,
27152539 &feature_mclass,
2540 &feature_thumbMode,
2541 &feature_strictAlign,
27162542 &feature_noarm,
27172543 &feature_v4t,
2718 &feature_strictAlign,
27192544 &feature_armv6M,
27202545 },
27212546};
......@@ -2725,11 +2550,11 @@ pub const cpu_cortexM0plus = Cpu{
27252550 .llvm_name = "cortex-m0plus",
27262551 .subfeatures = &[_]*const Feature {
27272552 &feature_db,
2728 &feature_thumbMode,
27292553 &feature_mclass,
2554 &feature_thumbMode,
2555 &feature_strictAlign,
27302556 &feature_noarm,
27312557 &feature_v4t,
2732 &feature_strictAlign,
27332558 &feature_armv6M,
27342559 },
27352560};
......@@ -2739,11 +2564,11 @@ pub const cpu_cortexM1 = Cpu{
27392564 .llvm_name = "cortex-m1",
27402565 .subfeatures = &[_]*const Feature {
27412566 &feature_db,
2742 &feature_thumbMode,
27432567 &feature_mclass,
2568 &feature_thumbMode,
2569 &feature_strictAlign,
27442570 &feature_noarm,
27452571 &feature_v4t,
2746 &feature_strictAlign,
27472572 &feature_armv6M,
27482573 },
27492574};
......@@ -2752,16 +2577,16 @@ pub const cpu_cortexM23 = Cpu{
27522577 .name = "cortex-m23",
27532578 .llvm_name = "cortex-m23",
27542579 .subfeatures = &[_]*const Feature {
2755 &feature_acquireRelease,
2756 &feature_v7clrex,
27572580 &feature_db,
2758 &feature_msecext8,
2759 &feature_thumbMode,
27602581 &feature_mclass,
2582 &feature_hwdiv,
2583 &feature_thumbMode,
2584 &feature_strictAlign,
2585 &feature_v7clrex,
2586 &feature_msecext8,
2587 &feature_acquireRelease,
27612588 &feature_noarm,
27622589 &feature_v4t,
2763 &feature_strictAlign,
2764 &feature_hwdiv,
27652590 &feature_armv8Mbase,
27662591 &feature_noMovt,
27672592 },
......@@ -2771,15 +2596,15 @@ pub const cpu_cortexM3 = Cpu{
27712596 .name = "cortex-m3",
27722597 .llvm_name = "cortex-m3",
27732598 .subfeatures = &[_]*const Feature {
2774 &feature_v7clrex,
27752599 &feature_db,
2776 &feature_thumb2,
27772600 &feature_mclass,
2601 &feature_hwdiv,
27782602 &feature_thumbMode,
2603 &feature_thumb2,
2604 &feature_v7clrex,
2605 &feature_perfmon,
27792606 &feature_noarm,
27802607 &feature_v4t,
2781 &feature_perfmon,
2782 &feature_hwdiv,
27832608 &feature_armv7M,
27842609 &feature_noBranchPredictor,
27852610 &feature_loopAlign,
......@@ -2793,17 +2618,17 @@ pub const cpu_cortexM33 = Cpu{
27932618 .name = "cortex-m33",
27942619 .llvm_name = "cortex-m33",
27952620 .subfeatures = &[_]*const Feature {
2796 &feature_acquireRelease,
2797 &feature_v7clrex,
27982621 &feature_db,
2799 &feature_msecext8,
2800 &feature_thumb2,
28012622 &feature_mclass,
2623 &feature_hwdiv,
28022624 &feature_thumbMode,
2625 &feature_thumb2,
2626 &feature_v7clrex,
2627 &feature_msecext8,
2628 &feature_acquireRelease,
2629 &feature_perfmon,
28032630 &feature_noarm,
28042631 &feature_v4t,
2805 &feature_perfmon,
2806 &feature_hwdiv,
28072632 &feature_armv8Mmain,
28082633 &feature_dsp,
28092634 &feature_fp16,
......@@ -2821,17 +2646,17 @@ pub const cpu_cortexM35p = Cpu{
28212646 .name = "cortex-m35p",
28222647 .llvm_name = "cortex-m35p",
28232648 .subfeatures = &[_]*const Feature {
2824 &feature_acquireRelease,
2825 &feature_v7clrex,
28262649 &feature_db,
2827 &feature_msecext8,
2828 &feature_thumb2,
28292650 &feature_mclass,
2651 &feature_hwdiv,
28302652 &feature_thumbMode,
2653 &feature_thumb2,
2654 &feature_v7clrex,
2655 &feature_msecext8,
2656 &feature_acquireRelease,
2657 &feature_perfmon,
28312658 &feature_noarm,
28322659 &feature_v4t,
2833 &feature_perfmon,
2834 &feature_hwdiv,
28352660 &feature_armv8Mmain,
28362661 &feature_dsp,
28372662 &feature_fp16,
......@@ -2849,16 +2674,16 @@ pub const cpu_cortexM4 = Cpu{
28492674 .name = "cortex-m4",
28502675 .llvm_name = "cortex-m4",
28512676 .subfeatures = &[_]*const Feature {
2852 &feature_perfmon,
2853 &feature_v7clrex,
28542677 &feature_db,
2855 &feature_thumb2,
28562678 &feature_mclass,
2679 &feature_hwdiv,
2680 &feature_dsp,
28572681 &feature_thumbMode,
2682 &feature_thumb2,
2683 &feature_v7clrex,
2684 &feature_perfmon,
28582685 &feature_noarm,
28592686 &feature_v4t,
2860 &feature_dsp,
2861 &feature_hwdiv,
28622687 &feature_armv7eM,
28632688 &feature_noBranchPredictor,
28642689 &feature_slowfpvmlx,
......@@ -2875,19 +2700,19 @@ pub const cpu_cortexM7 = Cpu{
28752700 .name = "cortex-m7",
28762701 .llvm_name = "cortex-m7",
28772702 .subfeatures = &[_]*const Feature {
2878 &feature_perfmon,
2879 &feature_v7clrex,
28802703 &feature_db,
2881 &feature_thumb2,
28822704 &feature_mclass,
2705 &feature_hwdiv,
2706 &feature_dsp,
28832707 &feature_thumbMode,
2708 &feature_thumb2,
2709 &feature_v7clrex,
2710 &feature_perfmon,
28842711 &feature_noarm,
28852712 &feature_v4t,
2886 &feature_dsp,
2887 &feature_hwdiv,
28882713 &feature_armv7eM,
2889 &feature_fp16,
28902714 &feature_fpregs,
2715 &feature_fp16,
28912716 &feature_fpArmv8d16,
28922717 },
28932718};
......@@ -2896,14 +2721,14 @@ pub const cpu_cortexR4 = Cpu{
28962721 .name = "cortex-r4",
28972722 .llvm_name = "cortex-r4",
28982723 .subfeatures = &[_]*const Feature {
2899 &feature_perfmon,
2900 &feature_v7clrex,
29012724 &feature_db,
2902 &feature_thumb2,
2903 &feature_v4t,
29042725 &feature_dsp,
29052726 &feature_hwdiv,
29062727 &feature_rclass,
2728 &feature_thumb2,
2729 &feature_v7clrex,
2730 &feature_perfmon,
2731 &feature_v4t,
29072732 &feature_armv7R,
29082733 &feature_avoidPartialCpsr,
29092734 &feature_retAddrStack,
......@@ -2915,14 +2740,14 @@ pub const cpu_cortexR4f = Cpu{
29152740 .name = "cortex-r4f",
29162741 .llvm_name = "cortex-r4f",
29172742 .subfeatures = &[_]*const Feature {
2918 &feature_perfmon,
2919 &feature_v7clrex,
29202743 &feature_db,
2921 &feature_thumb2,
2922 &feature_v4t,
29232744 &feature_dsp,
29242745 &feature_hwdiv,
29252746 &feature_rclass,
2747 &feature_thumb2,
2748 &feature_v7clrex,
2749 &feature_perfmon,
2750 &feature_v4t,
29262751 &feature_armv7R,
29272752 &feature_avoidPartialCpsr,
29282753 &feature_retAddrStack,
......@@ -2938,14 +2763,14 @@ pub const cpu_cortexR5 = Cpu{
29382763 .name = "cortex-r5",
29392764 .llvm_name = "cortex-r5",
29402765 .subfeatures = &[_]*const Feature {
2941 &feature_perfmon,
2942 &feature_v7clrex,
29432766 &feature_db,
2944 &feature_thumb2,
2945 &feature_v4t,
29462767 &feature_dsp,
29472768 &feature_hwdiv,
29482769 &feature_rclass,
2770 &feature_thumb2,
2771 &feature_v7clrex,
2772 &feature_perfmon,
2773 &feature_v4t,
29492774 &feature_armv7R,
29502775 &feature_avoidPartialCpsr,
29512776 &feature_hwdivArm,
......@@ -2962,22 +2787,22 @@ pub const cpu_cortexR52 = Cpu{
29622787 .name = "cortex-r52",
29632788 .llvm_name = "cortex-r52",
29642789 .subfeatures = &[_]*const Feature {
2965 &feature_mp,
2966 &feature_acquireRelease,
2967 &feature_perfmon,
2968 &feature_hwdiv,
2969 &feature_v7clrex,
29702790 &feature_db,
2971 &feature_thumb2,
2972 &feature_fp16,
2791 &feature_dsp,
2792 &feature_hwdivArm,
2793 &feature_hwdiv,
2794 &feature_rclass,
2795 &feature_fpregs,
29732796 &feature_v4t,
2974 &feature_d32,
29752797 &feature_dfb,
2976 &feature_hwdivArm,
2798 &feature_thumb2,
2799 &feature_v7clrex,
2800 &feature_perfmon,
29772801 &feature_crc,
2978 &feature_dsp,
2979 &feature_fpregs,
2980 &feature_rclass,
2802 &feature_mp,
2803 &feature_acquireRelease,
2804 &feature_fp16,
2805 &feature_d32,
29812806 &feature_armv8R,
29822807 &feature_fpao,
29832808 &feature_useAa,
......@@ -2990,14 +2815,14 @@ pub const cpu_cortexR7 = Cpu{
29902815 .name = "cortex-r7",
29912816 .llvm_name = "cortex-r7",
29922817 .subfeatures = &[_]*const Feature {
2993 &feature_perfmon,
2994 &feature_v7clrex,
29952818 &feature_db,
2996 &feature_thumb2,
2997 &feature_v4t,
29982819 &feature_dsp,
29992820 &feature_hwdiv,
30002821 &feature_rclass,
2822 &feature_thumb2,
2823 &feature_v7clrex,
2824 &feature_perfmon,
2825 &feature_v4t,
30012826 &feature_armv7R,
30022827 &feature_avoidPartialCpsr,
30032828 &feature_fp16,
......@@ -3016,14 +2841,14 @@ pub const cpu_cortexR8 = Cpu{
30162841 .name = "cortex-r8",
30172842 .llvm_name = "cortex-r8",
30182843 .subfeatures = &[_]*const Feature {
3019 &feature_perfmon,
3020 &feature_v7clrex,
30212844 &feature_db,
3022 &feature_thumb2,
3023 &feature_v4t,
30242845 &feature_dsp,
30252846 &feature_hwdiv,
30262847 &feature_rclass,
2848 &feature_thumb2,
2849 &feature_v7clrex,
2850 &feature_perfmon,
2851 &feature_v4t,
30272852 &feature_armv7R,
30282853 &feature_avoidPartialCpsr,
30292854 &feature_fp16,
......@@ -3041,22 +2866,22 @@ pub const cpu_cyclone = Cpu{
30412866 .name = "cyclone",
30422867 .llvm_name = "cyclone",
30432868 .subfeatures = &[_]*const Feature {
3044 &feature_mp,
3045 &feature_acquireRelease,
3046 &feature_perfmon,
2869 &feature_db,
2870 &feature_dsp,
2871 &feature_hwdivArm,
30472872 &feature_hwdiv,
30482873 &feature_trustzone,
3049 &feature_v7clrex,
3050 &feature_db,
3051 &feature_thumb2,
3052 &feature_fp16,
2874 &feature_fpregs,
30532875 &feature_v4t,
3054 &feature_d32,
2876 &feature_thumb2,
2877 &feature_v7clrex,
30552878 &feature_aclass,
3056 &feature_hwdivArm,
30572879 &feature_crc,
3058 &feature_dsp,
3059 &feature_fpregs,
2880 &feature_mp,
2881 &feature_acquireRelease,
2882 &feature_fp16,
2883 &feature_perfmon,
2884 &feature_d32,
30602885 &feature_armv8A,
30612886 &feature_avoidMovsShop,
30622887 &feature_avoidPartialCpsr,
......@@ -3085,36 +2910,36 @@ pub const cpu_exynosM1 = Cpu{
30852910 .name = "exynos-m1",
30862911 .llvm_name = "exynos-m1",
30872912 .subfeatures = &[_]*const Feature {
3088 &feature_mp,
3089 &feature_acquireRelease,
3090 &feature_perfmon,
2913 &feature_db,
2914 &feature_dsp,
2915 &feature_hwdivArm,
30912916 &feature_hwdiv,
30922917 &feature_trustzone,
3093 &feature_v7clrex,
3094 &feature_db,
3095 &feature_thumb2,
3096 &feature_fp16,
2918 &feature_fpregs,
30972919 &feature_v4t,
3098 &feature_d32,
2920 &feature_thumb2,
2921 &feature_v7clrex,
30992922 &feature_aclass,
3100 &feature_hwdivArm,
31012923 &feature_crc,
3102 &feature_dsp,
3103 &feature_fpregs,
2924 &feature_mp,
2925 &feature_acquireRelease,
2926 &feature_fp16,
2927 &feature_perfmon,
2928 &feature_d32,
31042929 &feature_armv8A,
3105 &feature_slowFpBrcc,
3106 &feature_slowfpvmlx,
2930 &feature_useAa,
2931 &feature_zcz,
2932 &feature_expandFpMlx,
31072933 &feature_slowVdup32,
3108 &feature_wideStrideVfp,
3109 &feature_fuseAes,
31102934 &feature_slowVgetlni32,
3111 &feature_zcz,
31122935 &feature_profUnpr,
2936 &feature_wideStrideVfp,
31132937 &feature_retAddrStack,
3114 &feature_expandFpMlx,
3115 &feature_useAa,
3116 &feature_dontWidenVmovs,
2938 &feature_fuseAes,
31172939 &feature_fuseLiterals,
2940 &feature_slowfpvmlx,
2941 &feature_slowFpBrcc,
2942 &feature_dontWidenVmovs,
31182943 &feature_exynos,
31192944 },
31202945};
......@@ -3123,36 +2948,36 @@ pub const cpu_exynosM2 = Cpu{
31232948 .name = "exynos-m2",
31242949 .llvm_name = "exynos-m2",
31252950 .subfeatures = &[_]*const Feature {
3126 &feature_mp,
3127 &feature_acquireRelease,
3128 &feature_perfmon,
2951 &feature_db,
2952 &feature_dsp,
2953 &feature_hwdivArm,
31292954 &feature_hwdiv,
31302955 &feature_trustzone,
3131 &feature_v7clrex,
3132 &feature_db,
3133 &feature_thumb2,
3134 &feature_fp16,
2956 &feature_fpregs,
31352957 &feature_v4t,
3136 &feature_d32,
2958 &feature_thumb2,
2959 &feature_v7clrex,
31372960 &feature_aclass,
3138 &feature_hwdivArm,
31392961 &feature_crc,
3140 &feature_dsp,
3141 &feature_fpregs,
2962 &feature_mp,
2963 &feature_acquireRelease,
2964 &feature_fp16,
2965 &feature_perfmon,
2966 &feature_d32,
31422967 &feature_armv8A,
3143 &feature_slowFpBrcc,
3144 &feature_slowfpvmlx,
2968 &feature_useAa,
2969 &feature_zcz,
2970 &feature_expandFpMlx,
31452971 &feature_slowVdup32,
3146 &feature_wideStrideVfp,
3147 &feature_fuseAes,
31482972 &feature_slowVgetlni32,
3149 &feature_zcz,
31502973 &feature_profUnpr,
2974 &feature_wideStrideVfp,
31512975 &feature_retAddrStack,
3152 &feature_expandFpMlx,
3153 &feature_useAa,
3154 &feature_dontWidenVmovs,
2976 &feature_fuseAes,
31552977 &feature_fuseLiterals,
2978 &feature_slowfpvmlx,
2979 &feature_slowFpBrcc,
2980 &feature_dontWidenVmovs,
31562981 &feature_exynos,
31572982 },
31582983};
......@@ -3161,36 +2986,36 @@ pub const cpu_exynosM3 = Cpu{
31612986 .name = "exynos-m3",
31622987 .llvm_name = "exynos-m3",
31632988 .subfeatures = &[_]*const Feature {
3164 &feature_mp,
3165 &feature_acquireRelease,
3166 &feature_perfmon,
2989 &feature_db,
2990 &feature_dsp,
2991 &feature_hwdivArm,
31672992 &feature_hwdiv,
31682993 &feature_trustzone,
3169 &feature_v7clrex,
3170 &feature_db,
3171 &feature_thumb2,
3172 &feature_fp16,
2994 &feature_fpregs,
31732995 &feature_v4t,
3174 &feature_d32,
2996 &feature_thumb2,
2997 &feature_v7clrex,
31752998 &feature_aclass,
3176 &feature_hwdivArm,
31772999 &feature_crc,
3178 &feature_dsp,
3179 &feature_fpregs,
3000 &feature_mp,
3001 &feature_acquireRelease,
3002 &feature_fp16,
3003 &feature_perfmon,
3004 &feature_d32,
31803005 &feature_armv8A,
3181 &feature_slowFpBrcc,
3182 &feature_slowfpvmlx,
3006 &feature_useAa,
3007 &feature_zcz,
3008 &feature_expandFpMlx,
31833009 &feature_slowVdup32,
3184 &feature_wideStrideVfp,
3185 &feature_fuseAes,
31863010 &feature_slowVgetlni32,
3187 &feature_zcz,
31883011 &feature_profUnpr,
3012 &feature_wideStrideVfp,
31893013 &feature_retAddrStack,
3190 &feature_expandFpMlx,
3191 &feature_useAa,
3192 &feature_dontWidenVmovs,
3014 &feature_fuseAes,
31933015 &feature_fuseLiterals,
3016 &feature_slowfpvmlx,
3017 &feature_slowFpBrcc,
3018 &feature_dontWidenVmovs,
31943019 &feature_exynos,
31953020 },
31963021};
......@@ -3199,39 +3024,39 @@ pub const cpu_exynosM4 = Cpu{
31993024 .name = "exynos-m4",
32003025 .llvm_name = "exynos-m4",
32013026 .subfeatures = &[_]*const Feature {
3202 &feature_mp,
3203 &feature_acquireRelease,
3204 &feature_perfmon,
3027 &feature_db,
3028 &feature_dsp,
3029 &feature_hwdivArm,
32053030 &feature_hwdiv,
32063031 &feature_trustzone,
3207 &feature_v7clrex,
3208 &feature_db,
3032 &feature_fpregs,
3033 &feature_v4t,
32093034 &feature_thumb2,
32103035 &feature_ras,
3211 &feature_fp16,
3212 &feature_v4t,
3213 &feature_d32,
3036 &feature_v7clrex,
32143037 &feature_aclass,
3215 &feature_hwdivArm,
32163038 &feature_crc,
3217 &feature_dsp,
3218 &feature_fpregs,
3039 &feature_mp,
3040 &feature_acquireRelease,
3041 &feature_fp16,
3042 &feature_perfmon,
3043 &feature_d32,
32193044 &feature_armv82A,
32203045 &feature_dotprod,
32213046 &feature_fullfp16,
3222 &feature_slowFpBrcc,
3223 &feature_slowfpvmlx,
3047 &feature_useAa,
3048 &feature_zcz,
3049 &feature_expandFpMlx,
32243050 &feature_slowVdup32,
3225 &feature_wideStrideVfp,
3226 &feature_fuseAes,
32273051 &feature_slowVgetlni32,
3228 &feature_zcz,
32293052 &feature_profUnpr,
3053 &feature_wideStrideVfp,
32303054 &feature_retAddrStack,
3231 &feature_expandFpMlx,
3232 &feature_useAa,
3233 &feature_dontWidenVmovs,
3055 &feature_fuseAes,
32343056 &feature_fuseLiterals,
3057 &feature_slowfpvmlx,
3058 &feature_slowFpBrcc,
3059 &feature_dontWidenVmovs,
32353060 &feature_exynos,
32363061 },
32373062};
......@@ -3240,39 +3065,39 @@ pub const cpu_exynosM5 = Cpu{
32403065 .name = "exynos-m5",
32413066 .llvm_name = "exynos-m5",
32423067 .subfeatures = &[_]*const Feature {
3243 &feature_mp,
3244 &feature_acquireRelease,
3245 &feature_perfmon,
3068 &feature_db,
3069 &feature_dsp,
3070 &feature_hwdivArm,
32463071 &feature_hwdiv,
32473072 &feature_trustzone,
3248 &feature_v7clrex,
3249 &feature_db,
3073 &feature_fpregs,
3074 &feature_v4t,
32503075 &feature_thumb2,
32513076 &feature_ras,
3252 &feature_fp16,
3253 &feature_v4t,
3254 &feature_d32,
3077 &feature_v7clrex,
32553078 &feature_aclass,
3256 &feature_hwdivArm,
32573079 &feature_crc,
3258 &feature_dsp,
3259 &feature_fpregs,
3080 &feature_mp,
3081 &feature_acquireRelease,
3082 &feature_fp16,
3083 &feature_perfmon,
3084 &feature_d32,
32603085 &feature_armv82A,
32613086 &feature_dotprod,
32623087 &feature_fullfp16,
3263 &feature_slowFpBrcc,
3264 &feature_slowfpvmlx,
3088 &feature_useAa,
3089 &feature_zcz,
3090 &feature_expandFpMlx,
32653091 &feature_slowVdup32,
3266 &feature_wideStrideVfp,
3267 &feature_fuseAes,
32683092 &feature_slowVgetlni32,
3269 &feature_zcz,
32703093 &feature_profUnpr,
3094 &feature_wideStrideVfp,
32713095 &feature_retAddrStack,
3272 &feature_expandFpMlx,
3273 &feature_useAa,
3274 &feature_dontWidenVmovs,
3096 &feature_fuseAes,
32753097 &feature_fuseLiterals,
3098 &feature_slowfpvmlx,
3099 &feature_slowFpBrcc,
3100 &feature_dontWidenVmovs,
32763101 &feature_exynos,
32773102 },
32783103};
......@@ -3297,15 +3122,15 @@ pub const cpu_krait = Cpu{
32973122 .name = "krait",
32983123 .llvm_name = "krait",
32993124 .subfeatures = &[_]*const Feature {
3300 &feature_perfmon,
3301 &feature_v7clrex,
33023125 &feature_db,
3126 &feature_dsp,
3127 &feature_fpregs,
33033128 &feature_thumb2,
3129 &feature_v7clrex,
3130 &feature_aclass,
3131 &feature_perfmon,
33043132 &feature_v4t,
33053133 &feature_d32,
3306 &feature_aclass,
3307 &feature_dsp,
3308 &feature_fpregs,
33093134 &feature_armv7A,
33103135 &feature_avoidPartialCpsr,
33113136 &feature_vldnAlign,
......@@ -3324,22 +3149,22 @@ pub const cpu_kryo = Cpu{
33243149 .name = "kryo",
33253150 .llvm_name = "kryo",
33263151 .subfeatures = &[_]*const Feature {
3327 &feature_mp,
3328 &feature_acquireRelease,
3329 &feature_perfmon,
3152 &feature_db,
3153 &feature_dsp,
3154 &feature_hwdivArm,
33303155 &feature_hwdiv,
33313156 &feature_trustzone,
3332 &feature_v7clrex,
3333 &feature_db,
3334 &feature_thumb2,
3335 &feature_fp16,
3157 &feature_fpregs,
33363158 &feature_v4t,
3337 &feature_d32,
3159 &feature_thumb2,
3160 &feature_v7clrex,
33383161 &feature_aclass,
3339 &feature_hwdivArm,
33403162 &feature_crc,
3341 &feature_dsp,
3342 &feature_fpregs,
3163 &feature_mp,
3164 &feature_acquireRelease,
3165 &feature_fp16,
3166 &feature_perfmon,
3167 &feature_d32,
33433168 &feature_armv8A,
33443169 &feature_crypto,
33453170 &feature_kryo,
......@@ -3371,23 +3196,23 @@ pub const cpu_neoverseN1 = Cpu{
33713196 .name = "neoverse-n1",
33723197 .llvm_name = "neoverse-n1",
33733198 .subfeatures = &[_]*const Feature {
3374 &feature_mp,
3375 &feature_acquireRelease,
3376 &feature_perfmon,
3199 &feature_db,
3200 &feature_dsp,
3201 &feature_hwdivArm,
33773202 &feature_hwdiv,
33783203 &feature_trustzone,
3379 &feature_v7clrex,
3380 &feature_db,
3204 &feature_fpregs,
3205 &feature_v4t,
33813206 &feature_thumb2,
33823207 &feature_ras,
3383 &feature_fp16,
3384 &feature_v4t,
3385 &feature_d32,
3208 &feature_v7clrex,
33863209 &feature_aclass,
3387 &feature_hwdivArm,
33883210 &feature_crc,
3389 &feature_dsp,
3390 &feature_fpregs,
3211 &feature_mp,
3212 &feature_acquireRelease,
3213 &feature_fp16,
3214 &feature_perfmon,
3215 &feature_d32,
33913216 &feature_armv82A,
33923217 &feature_crypto,
33933218 &feature_dotprod,
......@@ -3399,11 +3224,11 @@ pub const cpu_sc000 = Cpu{
33993224 .llvm_name = "sc000",
34003225 .subfeatures = &[_]*const Feature {
34013226 &feature_db,
3402 &feature_thumbMode,
34033227 &feature_mclass,
3228 &feature_thumbMode,
3229 &feature_strictAlign,
34043230 &feature_noarm,
34053231 &feature_v4t,
3406 &feature_strictAlign,
34073232 &feature_armv6M,
34083233 },
34093234};
......@@ -3412,15 +3237,15 @@ pub const cpu_sc300 = Cpu{
34123237 .name = "sc300",
34133238 .llvm_name = "sc300",
34143239 .subfeatures = &[_]*const Feature {
3415 &feature_v7clrex,
34163240 &feature_db,
3417 &feature_thumb2,
34183241 &feature_mclass,
3242 &feature_hwdiv,
34193243 &feature_thumbMode,
3244 &feature_thumb2,
3245 &feature_v7clrex,
3246 &feature_perfmon,
34203247 &feature_noarm,
34213248 &feature_v4t,
3422 &feature_perfmon,
3423 &feature_hwdiv,
34243249 &feature_armv7M,
34253250 &feature_noBranchPredictor,
34263251 &feature_useAa,
......@@ -3465,15 +3290,15 @@ pub const cpu_swift = Cpu{
34653290 .name = "swift",
34663291 .llvm_name = "swift",
34673292 .subfeatures = &[_]*const Feature {
3468 &feature_perfmon,
3469 &feature_v7clrex,
34703293 &feature_db,
3294 &feature_dsp,
3295 &feature_fpregs,
34713296 &feature_thumb2,
3297 &feature_v7clrex,
3298 &feature_aclass,
3299 &feature_perfmon,
34723300 &feature_v4t,
34733301 &feature_d32,
3474 &feature_aclass,
3475 &feature_dsp,
3476 &feature_fpregs,
34773302 &feature_armv7A,
34783303 &feature_avoidMovsShop,
34793304 &feature_avoidPartialCpsr,
lib/std/target/avr.zig+1596-1629
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_avr0 = Feature{
55 .name = "avr0",
66 .description = "The device is a part of the avr0 family",
7 .llvm_name = "avr0",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,234 +11,220 @@ pub const feature_avr0 = Feature{
1211pub const feature_avr1 = Feature{
1312 .name = "avr1",
1413 .description = "The device is a part of the avr1 family",
15 .llvm_name = "avr1",
1614 .subfeatures = &[_]*const Feature {
17 &feature_avr0,
1815 &feature_lpm,
16 &feature_avr0,
1917 },
2018};
2119
2220pub const feature_avr2 = Feature{
2321 .name = "avr2",
2422 .description = "The device is a part of the avr2 family",
25 .llvm_name = "avr2",
2623 .subfeatures = &[_]*const Feature {
2724 &feature_ijmpcall,
2825 &feature_sram,
29 &feature_avr0,
30 &feature_lpm,
3126 &feature_addsubiw,
27 &feature_lpm,
28 &feature_avr0,
3229 },
3330};
3431
3532pub const feature_avr3 = Feature{
3633 .name = "avr3",
3734 .description = "The device is a part of the avr3 family",
38 .llvm_name = "avr3",
3935 .subfeatures = &[_]*const Feature {
4036 &feature_ijmpcall,
4137 &feature_jmpcall,
4238 &feature_sram,
43 &feature_avr0,
44 &feature_lpm,
4539 &feature_addsubiw,
40 &feature_lpm,
41 &feature_avr0,
4642 },
4743};
4844
4945pub const feature_avr4 = Feature{
5046 .name = "avr4",
5147 .description = "The device is a part of the avr4 family",
52 .llvm_name = "avr4",
5348 .subfeatures = &[_]*const Feature {
49 &feature_spm,
5450 &feature_lpmx,
5551 &feature_ijmpcall,
56 &feature_movw,
5752 &feature_sram,
53 &feature_addsubiw,
5854 &feature_mul,
59 &feature_avr0,
60 &feature_lpm,
6155 &feature_break,
62 &feature_spm,
63 &feature_addsubiw,
56 &feature_lpm,
57 &feature_avr0,
58 &feature_movw,
6459 },
6560};
6661
6762pub const feature_avr5 = Feature{
6863 .name = "avr5",
6964 .description = "The device is a part of the avr5 family",
70 .llvm_name = "avr5",
7165 .subfeatures = &[_]*const Feature {
66 &feature_spm,
7267 &feature_lpmx,
73 &feature_jmpcall,
7468 &feature_ijmpcall,
75 &feature_movw,
69 &feature_jmpcall,
7670 &feature_sram,
71 &feature_addsubiw,
7772 &feature_mul,
78 &feature_avr0,
79 &feature_lpm,
8073 &feature_break,
81 &feature_spm,
82 &feature_addsubiw,
74 &feature_lpm,
75 &feature_avr0,
76 &feature_movw,
8377 },
8478};
8579
8680pub const feature_avr6 = Feature{
8781 .name = "avr6",
8882 .description = "The device is a part of the avr6 family",
89 .llvm_name = "avr6",
9083 .subfeatures = &[_]*const Feature {
84 &feature_spm,
9185 &feature_lpmx,
92 &feature_jmpcall,
9386 &feature_ijmpcall,
94 &feature_movw,
87 &feature_jmpcall,
9588 &feature_sram,
89 &feature_addsubiw,
90 &feature_elpm,
9691 &feature_mul,
97 &feature_avr0,
98 &feature_lpm,
9992 &feature_break,
100 &feature_spm,
93 &feature_lpm,
10194 &feature_elpmx,
102 &feature_elpm,
103 &feature_addsubiw,
95 &feature_avr0,
96 &feature_movw,
10497 },
10598};
10699
107100pub const feature_avr25 = Feature{
108101 .name = "avr25",
109102 .description = "The device is a part of the avr25 family",
110 .llvm_name = "avr25",
111103 .subfeatures = &[_]*const Feature {
104 &feature_spm,
112105 &feature_lpmx,
113106 &feature_ijmpcall,
114 &feature_movw,
115107 &feature_sram,
116 &feature_avr0,
117 &feature_lpm,
118 &feature_break,
119 &feature_spm,
120108 &feature_addsubiw,
109 &feature_break,
110 &feature_lpm,
111 &feature_avr0,
112 &feature_movw,
121113 },
122114};
123115
124116pub const feature_avr31 = Feature{
125117 .name = "avr31",
126118 .description = "The device is a part of the avr31 family",
127 .llvm_name = "avr31",
128119 .subfeatures = &[_]*const Feature {
129 &feature_jmpcall,
130120 &feature_ijmpcall,
121 &feature_jmpcall,
131122 &feature_sram,
132 &feature_avr0,
133 &feature_lpm,
134 &feature_elpm,
135123 &feature_addsubiw,
124 &feature_elpm,
125 &feature_lpm,
126 &feature_avr0,
136127 },
137128};
138129
139130pub const feature_avr35 = Feature{
140131 .name = "avr35",
141132 .description = "The device is a part of the avr35 family",
142 .llvm_name = "avr35",
143133 .subfeatures = &[_]*const Feature {
134 &feature_spm,
144135 &feature_lpmx,
145 &feature_jmpcall,
146136 &feature_ijmpcall,
147 &feature_movw,
137 &feature_jmpcall,
148138 &feature_sram,
149 &feature_avr0,
150 &feature_lpm,
151 &feature_break,
152 &feature_spm,
153139 &feature_addsubiw,
140 &feature_break,
141 &feature_lpm,
142 &feature_avr0,
143 &feature_movw,
154144 },
155145};
156146
157147pub const feature_avr51 = Feature{
158148 .name = "avr51",
159149 .description = "The device is a part of the avr51 family",
160 .llvm_name = "avr51",
161150 .subfeatures = &[_]*const Feature {
151 &feature_spm,
162152 &feature_lpmx,
163153 &feature_ijmpcall,
164154 &feature_jmpcall,
165 &feature_movw,
166155 &feature_sram,
156 &feature_addsubiw,
157 &feature_elpm,
167158 &feature_mul,
168 &feature_avr0,
169 &feature_lpm,
170159 &feature_break,
171 &feature_spm,
160 &feature_lpm,
172161 &feature_elpmx,
173 &feature_elpm,
174 &feature_addsubiw,
162 &feature_avr0,
163 &feature_movw,
175164 },
176165};
177166
178167pub const feature_avrtiny = Feature{
179168 .name = "avrtiny",
180169 .description = "The device is a part of the avrtiny family",
181 .llvm_name = "avrtiny",
182170 .subfeatures = &[_]*const Feature {
183 &feature_tinyencoding,
171 &feature_avr0,
184172 &feature_sram,
173 &feature_tinyencoding,
185174 &feature_break,
186 &feature_avr0,
187175 },
188176};
189177
190178pub const feature_xmega = Feature{
191179 .name = "xmega",
192180 .description = "The device is a part of the xmega family",
193 .llvm_name = "xmega",
194181 .subfeatures = &[_]*const Feature {
182 &feature_spm,
195183 &feature_lpmx,
196 &feature_jmpcall,
184 &feature_des,
197185 &feature_ijmpcall,
198 &feature_movw,
186 &feature_jmpcall,
199187 &feature_sram,
200 &feature_mul,
201 &feature_avr0,
202 &feature_spmx,
203 &feature_lpm,
188 &feature_addsubiw,
189 &feature_elpm,
204190 &feature_eijmpcall,
191 &feature_mul,
205192 &feature_break,
206 &feature_spm,
193 &feature_lpm,
207194 &feature_elpmx,
208 &feature_elpm,
209 &feature_addsubiw,
210 &feature_des,
195 &feature_avr0,
196 &feature_movw,
197 &feature_spmx,
211198 },
212199};
213200
214201pub const feature_xmegau = Feature{
215202 .name = "xmegau",
216203 .description = "The device is a part of the xmegau family",
217 .llvm_name = "xmegau",
218204 .subfeatures = &[_]*const Feature {
205 &feature_spm,
219206 &feature_lpmx,
207 &feature_des,
220208 &feature_ijmpcall,
221209 &feature_jmpcall,
222 &feature_movw,
223210 &feature_sram,
224 &feature_mul,
225 &feature_avr0,
226 &feature_spmx,
227 &feature_lpm,
228211 &feature_rmw,
212 &feature_addsubiw,
213 &feature_elpm,
229214 &feature_eijmpcall,
215 &feature_mul,
230216 &feature_break,
231 &feature_spm,
217 &feature_lpm,
232218 &feature_elpmx,
233 &feature_elpm,
234 &feature_addsubiw,
235 &feature_des,
219 &feature_avr0,
220 &feature_movw,
221 &feature_spmx,
236222 },
237223};
238224
239225pub const feature_addsubiw = Feature{
240226 .name = "addsubiw",
241227 .description = "Enable 16-bit register-immediate addition and subtraction instructions",
242 .llvm_name = "addsubiw",
243228 .subfeatures = &[_]*const Feature {
244229 },
245230};
......@@ -247,7 +232,6 @@ pub const feature_addsubiw = Feature{
247232pub const feature_break = Feature{
248233 .name = "break",
249234 .description = "The device supports the `BREAK` debugging instruction",
250 .llvm_name = "break",
251235 .subfeatures = &[_]*const Feature {
252236 },
253237};
......@@ -255,7 +239,6 @@ pub const feature_break = Feature{
255239pub const feature_des = Feature{
256240 .name = "des",
257241 .description = "The device supports the `DES k` encryption instruction",
258 .llvm_name = "des",
259242 .subfeatures = &[_]*const Feature {
260243 },
261244};
......@@ -263,7 +246,6 @@ pub const feature_des = Feature{
263246pub const feature_eijmpcall = Feature{
264247 .name = "eijmpcall",
265248 .description = "The device supports the `EIJMP`/`EICALL` instructions",
266 .llvm_name = "eijmpcall",
267249 .subfeatures = &[_]*const Feature {
268250 },
269251};
......@@ -271,7 +253,6 @@ pub const feature_eijmpcall = Feature{
271253pub const feature_elpm = Feature{
272254 .name = "elpm",
273255 .description = "The device supports the ELPM instruction",
274 .llvm_name = "elpm",
275256 .subfeatures = &[_]*const Feature {
276257 },
277258};
......@@ -279,7 +260,6 @@ pub const feature_elpm = Feature{
279260pub const feature_elpmx = Feature{
280261 .name = "elpmx",
281262 .description = "The device supports the `ELPM Rd, Z[+]` instructions",
282 .llvm_name = "elpmx",
283263 .subfeatures = &[_]*const Feature {
284264 },
285265};
......@@ -287,7 +267,6 @@ pub const feature_elpmx = Feature{
287267pub const feature_ijmpcall = Feature{
288268 .name = "ijmpcall",
289269 .description = "The device supports `IJMP`/`ICALL`instructions",
290 .llvm_name = "ijmpcall",
291270 .subfeatures = &[_]*const Feature {
292271 },
293272};
......@@ -295,7 +274,6 @@ pub const feature_ijmpcall = Feature{
295274pub const feature_jmpcall = Feature{
296275 .name = "jmpcall",
297276 .description = "The device supports the `JMP` and `CALL` instructions",
298 .llvm_name = "jmpcall",
299277 .subfeatures = &[_]*const Feature {
300278 },
301279};
......@@ -303,7 +281,6 @@ pub const feature_jmpcall = Feature{
303281pub const feature_lpm = Feature{
304282 .name = "lpm",
305283 .description = "The device supports the `LPM` instruction",
306 .llvm_name = "lpm",
307284 .subfeatures = &[_]*const Feature {
308285 },
309286};
......@@ -311,7 +288,6 @@ pub const feature_lpm = Feature{
311288pub const feature_lpmx = Feature{
312289 .name = "lpmx",
313290 .description = "The device supports the `LPM Rd, Z[+]` instruction",
314 .llvm_name = "lpmx",
315291 .subfeatures = &[_]*const Feature {
316292 },
317293};
......@@ -319,7 +295,6 @@ pub const feature_lpmx = Feature{
319295pub const feature_movw = Feature{
320296 .name = "movw",
321297 .description = "The device supports the 16-bit MOVW instruction",
322 .llvm_name = "movw",
323298 .subfeatures = &[_]*const Feature {
324299 },
325300};
......@@ -327,7 +302,6 @@ pub const feature_movw = Feature{
327302pub const feature_mul = Feature{
328303 .name = "mul",
329304 .description = "The device supports the multiplication instructions",
330 .llvm_name = "mul",
331305 .subfeatures = &[_]*const Feature {
332306 },
333307};
......@@ -335,7 +309,6 @@ pub const feature_mul = Feature{
335309pub const feature_rmw = Feature{
336310 .name = "rmw",
337311 .description = "The device supports the read-write-modify instructions: XCH, LAS, LAC, LAT",
338 .llvm_name = "rmw",
339312 .subfeatures = &[_]*const Feature {
340313 },
341314};
......@@ -343,7 +316,6 @@ pub const feature_rmw = Feature{
343316pub const feature_spm = Feature{
344317 .name = "spm",
345318 .description = "The device supports the `SPM` instruction",
346 .llvm_name = "spm",
347319 .subfeatures = &[_]*const Feature {
348320 },
349321};
......@@ -351,7 +323,6 @@ pub const feature_spm = Feature{
351323pub const feature_spmx = Feature{
352324 .name = "spmx",
353325 .description = "The device supports the `SPM Z+` instruction",
354 .llvm_name = "spmx",
355326 .subfeatures = &[_]*const Feature {
356327 },
357328};
......@@ -359,7 +330,6 @@ pub const feature_spmx = Feature{
359330pub const feature_sram = Feature{
360331 .name = "sram",
361332 .description = "The device has random access memory",
362 .llvm_name = "sram",
363333 .subfeatures = &[_]*const Feature {
364334 },
365335};
......@@ -367,31 +337,29 @@ pub const feature_sram = Feature{
367337pub const feature_special = Feature{
368338 .name = "special",
369339 .description = "Enable use of the entire instruction set - used for debugging",
370 .llvm_name = "special",
371340 .subfeatures = &[_]*const Feature {
341 &feature_spm,
372342 &feature_lpmx,
343 &feature_des,
373344 &feature_ijmpcall,
374345 &feature_jmpcall,
375 &feature_movw,
376 &feature_sram,
377 &feature_mul,
378346 &feature_rmw,
379 &feature_spmx,
380 &feature_lpm,
381 &feature_eijmpcall,
382 &feature_break,
383 &feature_spm,
384 &feature_elpmx,
347 &feature_sram,
385348 &feature_elpm,
386349 &feature_addsubiw,
387 &feature_des,
350 &feature_eijmpcall,
351 &feature_elpmx,
352 &feature_break,
353 &feature_lpm,
354 &feature_mul,
355 &feature_movw,
356 &feature_spmx,
388357 },
389358};
390359
391360pub const feature_smallstack = Feature{
392361 .name = "smallstack",
393362 .description = "The device has an 8-bit stack pointer",
394 .llvm_name = "smallstack",
395363 .subfeatures = &[_]*const Feature {
396364 },
397365};
......@@ -399,7 +367,6 @@ pub const feature_smallstack = Feature{
399367pub const feature_tinyencoding = Feature{
400368 .name = "tinyencoding",
401369 .description = "The device has Tiny core specific instruction encodings",
402 .llvm_name = "tinyencoding",
403370 .subfeatures = &[_]*const Feature {
404371 },
405372};
......@@ -444,13 +411,13 @@ pub const cpu_at43usb320 = Cpu{
444411 .name = "at43usb320",
445412 .llvm_name = "at43usb320",
446413 .subfeatures = &[_]*const Feature {
447 &feature_jmpcall,
448414 &feature_ijmpcall,
415 &feature_jmpcall,
449416 &feature_sram,
450 &feature_avr0,
451 &feature_lpm,
452 &feature_elpm,
453417 &feature_addsubiw,
418 &feature_elpm,
419 &feature_lpm,
420 &feature_avr0,
454421 &feature_avr31,
455422 },
456423};
......@@ -462,9 +429,9 @@ pub const cpu_at43usb355 = Cpu{
462429 &feature_ijmpcall,
463430 &feature_jmpcall,
464431 &feature_sram,
465 &feature_avr0,
466 &feature_lpm,
467432 &feature_addsubiw,
433 &feature_lpm,
434 &feature_avr0,
468435 &feature_avr3,
469436 },
470437};
......@@ -476,9 +443,9 @@ pub const cpu_at76c711 = Cpu{
476443 &feature_ijmpcall,
477444 &feature_jmpcall,
478445 &feature_sram,
479 &feature_avr0,
480 &feature_lpm,
481446 &feature_addsubiw,
447 &feature_lpm,
448 &feature_avr0,
482449 &feature_avr3,
483450 },
484451};
......@@ -489,9 +456,9 @@ pub const cpu_at86rf401 = Cpu{
489456 .subfeatures = &[_]*const Feature {
490457 &feature_ijmpcall,
491458 &feature_sram,
492 &feature_avr0,
493 &feature_lpm,
494459 &feature_addsubiw,
460 &feature_lpm,
461 &feature_avr0,
495462 &feature_avr2,
496463 &feature_lpmx,
497464 &feature_movw,
......@@ -504,9 +471,9 @@ pub const cpu_at90c8534 = Cpu{
504471 .subfeatures = &[_]*const Feature {
505472 &feature_ijmpcall,
506473 &feature_sram,
507 &feature_avr0,
508 &feature_lpm,
509474 &feature_addsubiw,
475 &feature_lpm,
476 &feature_avr0,
510477 &feature_avr2,
511478 },
512479};
......@@ -515,19 +482,19 @@ pub const cpu_at90can128 = Cpu{
515482 .name = "at90can128",
516483 .llvm_name = "at90can128",
517484 .subfeatures = &[_]*const Feature {
485 &feature_spm,
518486 &feature_lpmx,
519487 &feature_ijmpcall,
520488 &feature_jmpcall,
521 &feature_movw,
522489 &feature_sram,
490 &feature_addsubiw,
491 &feature_elpm,
523492 &feature_mul,
524 &feature_avr0,
525 &feature_lpm,
526493 &feature_break,
527 &feature_spm,
494 &feature_lpm,
528495 &feature_elpmx,
529 &feature_elpm,
530 &feature_addsubiw,
496 &feature_avr0,
497 &feature_movw,
531498 &feature_avr51,
532499 },
533500};
......@@ -536,17 +503,17 @@ pub const cpu_at90can32 = Cpu{
536503 .name = "at90can32",
537504 .llvm_name = "at90can32",
538505 .subfeatures = &[_]*const Feature {
506 &feature_spm,
539507 &feature_lpmx,
540 &feature_jmpcall,
541508 &feature_ijmpcall,
542 &feature_movw,
509 &feature_jmpcall,
543510 &feature_sram,
511 &feature_addsubiw,
544512 &feature_mul,
545 &feature_avr0,
546 &feature_lpm,
547513 &feature_break,
548 &feature_spm,
549 &feature_addsubiw,
514 &feature_lpm,
515 &feature_avr0,
516 &feature_movw,
550517 &feature_avr5,
551518 },
552519};
......@@ -555,17 +522,17 @@ pub const cpu_at90can64 = Cpu{
555522 .name = "at90can64",
556523 .llvm_name = "at90can64",
557524 .subfeatures = &[_]*const Feature {
525 &feature_spm,
558526 &feature_lpmx,
559 &feature_jmpcall,
560527 &feature_ijmpcall,
561 &feature_movw,
528 &feature_jmpcall,
562529 &feature_sram,
530 &feature_addsubiw,
563531 &feature_mul,
564 &feature_avr0,
565 &feature_lpm,
566532 &feature_break,
567 &feature_spm,
568 &feature_addsubiw,
533 &feature_lpm,
534 &feature_avr0,
535 &feature_movw,
569536 &feature_avr5,
570537 },
571538};
......@@ -574,16 +541,16 @@ pub const cpu_at90pwm1 = Cpu{
574541 .name = "at90pwm1",
575542 .llvm_name = "at90pwm1",
576543 .subfeatures = &[_]*const Feature {
544 &feature_spm,
577545 &feature_lpmx,
578546 &feature_ijmpcall,
579 &feature_movw,
580547 &feature_sram,
548 &feature_addsubiw,
581549 &feature_mul,
582 &feature_avr0,
583 &feature_lpm,
584550 &feature_break,
585 &feature_spm,
586 &feature_addsubiw,
551 &feature_lpm,
552 &feature_avr0,
553 &feature_movw,
587554 &feature_avr4,
588555 },
589556};
......@@ -592,17 +559,17 @@ pub const cpu_at90pwm161 = Cpu{
592559 .name = "at90pwm161",
593560 .llvm_name = "at90pwm161",
594561 .subfeatures = &[_]*const Feature {
562 &feature_spm,
595563 &feature_lpmx,
596 &feature_jmpcall,
597564 &feature_ijmpcall,
598 &feature_movw,
565 &feature_jmpcall,
599566 &feature_sram,
567 &feature_addsubiw,
600568 &feature_mul,
601 &feature_avr0,
602 &feature_lpm,
603569 &feature_break,
604 &feature_spm,
605 &feature_addsubiw,
570 &feature_lpm,
571 &feature_avr0,
572 &feature_movw,
606573 &feature_avr5,
607574 },
608575};
......@@ -611,16 +578,16 @@ pub const cpu_at90pwm2 = Cpu{
611578 .name = "at90pwm2",
612579 .llvm_name = "at90pwm2",
613580 .subfeatures = &[_]*const Feature {
581 &feature_spm,
614582 &feature_lpmx,
615583 &feature_ijmpcall,
616 &feature_movw,
617584 &feature_sram,
585 &feature_addsubiw,
618586 &feature_mul,
619 &feature_avr0,
620 &feature_lpm,
621587 &feature_break,
622 &feature_spm,
623 &feature_addsubiw,
588 &feature_lpm,
589 &feature_avr0,
590 &feature_movw,
624591 &feature_avr4,
625592 },
626593};
......@@ -629,17 +596,17 @@ pub const cpu_at90pwm216 = Cpu{
629596 .name = "at90pwm216",
630597 .llvm_name = "at90pwm216",
631598 .subfeatures = &[_]*const Feature {
599 &feature_spm,
632600 &feature_lpmx,
633 &feature_jmpcall,
634601 &feature_ijmpcall,
635 &feature_movw,
602 &feature_jmpcall,
636603 &feature_sram,
604 &feature_addsubiw,
637605 &feature_mul,
638 &feature_avr0,
639 &feature_lpm,
640606 &feature_break,
641 &feature_spm,
642 &feature_addsubiw,
607 &feature_lpm,
608 &feature_avr0,
609 &feature_movw,
643610 &feature_avr5,
644611 },
645612};
......@@ -648,16 +615,16 @@ pub const cpu_at90pwm2b = Cpu{
648615 .name = "at90pwm2b",
649616 .llvm_name = "at90pwm2b",
650617 .subfeatures = &[_]*const Feature {
618 &feature_spm,
651619 &feature_lpmx,
652620 &feature_ijmpcall,
653 &feature_movw,
654621 &feature_sram,
622 &feature_addsubiw,
655623 &feature_mul,
656 &feature_avr0,
657 &feature_lpm,
658624 &feature_break,
659 &feature_spm,
660 &feature_addsubiw,
625 &feature_lpm,
626 &feature_avr0,
627 &feature_movw,
661628 &feature_avr4,
662629 },
663630};
......@@ -666,16 +633,16 @@ pub const cpu_at90pwm3 = Cpu{
666633 .name = "at90pwm3",
667634 .llvm_name = "at90pwm3",
668635 .subfeatures = &[_]*const Feature {
636 &feature_spm,
669637 &feature_lpmx,
670638 &feature_ijmpcall,
671 &feature_movw,
672639 &feature_sram,
640 &feature_addsubiw,
673641 &feature_mul,
674 &feature_avr0,
675 &feature_lpm,
676642 &feature_break,
677 &feature_spm,
678 &feature_addsubiw,
643 &feature_lpm,
644 &feature_avr0,
645 &feature_movw,
679646 &feature_avr4,
680647 },
681648};
......@@ -684,17 +651,17 @@ pub const cpu_at90pwm316 = Cpu{
684651 .name = "at90pwm316",
685652 .llvm_name = "at90pwm316",
686653 .subfeatures = &[_]*const Feature {
654 &feature_spm,
687655 &feature_lpmx,
688 &feature_jmpcall,
689656 &feature_ijmpcall,
690 &feature_movw,
657 &feature_jmpcall,
691658 &feature_sram,
659 &feature_addsubiw,
692660 &feature_mul,
693 &feature_avr0,
694 &feature_lpm,
695661 &feature_break,
696 &feature_spm,
697 &feature_addsubiw,
662 &feature_lpm,
663 &feature_avr0,
664 &feature_movw,
698665 &feature_avr5,
699666 },
700667};
......@@ -703,16 +670,16 @@ pub const cpu_at90pwm3b = Cpu{
703670 .name = "at90pwm3b",
704671 .llvm_name = "at90pwm3b",
705672 .subfeatures = &[_]*const Feature {
673 &feature_spm,
706674 &feature_lpmx,
707675 &feature_ijmpcall,
708 &feature_movw,
709676 &feature_sram,
677 &feature_addsubiw,
710678 &feature_mul,
711 &feature_avr0,
712 &feature_lpm,
713679 &feature_break,
714 &feature_spm,
715 &feature_addsubiw,
680 &feature_lpm,
681 &feature_avr0,
682 &feature_movw,
716683 &feature_avr4,
717684 },
718685};
......@@ -721,16 +688,16 @@ pub const cpu_at90pwm81 = Cpu{
721688 .name = "at90pwm81",
722689 .llvm_name = "at90pwm81",
723690 .subfeatures = &[_]*const Feature {
691 &feature_spm,
724692 &feature_lpmx,
725693 &feature_ijmpcall,
726 &feature_movw,
727694 &feature_sram,
695 &feature_addsubiw,
728696 &feature_mul,
729 &feature_avr0,
730 &feature_lpm,
731697 &feature_break,
732 &feature_spm,
733 &feature_addsubiw,
698 &feature_lpm,
699 &feature_avr0,
700 &feature_movw,
734701 &feature_avr4,
735702 },
736703};
......@@ -749,9 +716,9 @@ pub const cpu_at90s2313 = Cpu{
749716 .subfeatures = &[_]*const Feature {
750717 &feature_ijmpcall,
751718 &feature_sram,
752 &feature_avr0,
753 &feature_lpm,
754719 &feature_addsubiw,
720 &feature_lpm,
721 &feature_avr0,
755722 &feature_avr2,
756723 },
757724};
......@@ -762,9 +729,9 @@ pub const cpu_at90s2323 = Cpu{
762729 .subfeatures = &[_]*const Feature {
763730 &feature_ijmpcall,
764731 &feature_sram,
765 &feature_avr0,
766 &feature_lpm,
767732 &feature_addsubiw,
733 &feature_lpm,
734 &feature_avr0,
768735 &feature_avr2,
769736 },
770737};
......@@ -775,9 +742,9 @@ pub const cpu_at90s2333 = Cpu{
775742 .subfeatures = &[_]*const Feature {
776743 &feature_ijmpcall,
777744 &feature_sram,
778 &feature_avr0,
779 &feature_lpm,
780745 &feature_addsubiw,
746 &feature_lpm,
747 &feature_avr0,
781748 &feature_avr2,
782749 },
783750};
......@@ -788,9 +755,9 @@ pub const cpu_at90s2343 = Cpu{
788755 .subfeatures = &[_]*const Feature {
789756 &feature_ijmpcall,
790757 &feature_sram,
791 &feature_avr0,
792 &feature_lpm,
793758 &feature_addsubiw,
759 &feature_lpm,
760 &feature_avr0,
794761 &feature_avr2,
795762 },
796763};
......@@ -801,9 +768,9 @@ pub const cpu_at90s4414 = Cpu{
801768 .subfeatures = &[_]*const Feature {
802769 &feature_ijmpcall,
803770 &feature_sram,
804 &feature_avr0,
805 &feature_lpm,
806771 &feature_addsubiw,
772 &feature_lpm,
773 &feature_avr0,
807774 &feature_avr2,
808775 },
809776};
......@@ -814,9 +781,9 @@ pub const cpu_at90s4433 = Cpu{
814781 .subfeatures = &[_]*const Feature {
815782 &feature_ijmpcall,
816783 &feature_sram,
817 &feature_avr0,
818 &feature_lpm,
819784 &feature_addsubiw,
785 &feature_lpm,
786 &feature_avr0,
820787 &feature_avr2,
821788 },
822789};
......@@ -827,9 +794,9 @@ pub const cpu_at90s4434 = Cpu{
827794 .subfeatures = &[_]*const Feature {
828795 &feature_ijmpcall,
829796 &feature_sram,
830 &feature_avr0,
831 &feature_lpm,
832797 &feature_addsubiw,
798 &feature_lpm,
799 &feature_avr0,
833800 &feature_avr2,
834801 },
835802};
......@@ -840,9 +807,9 @@ pub const cpu_at90s8515 = Cpu{
840807 .subfeatures = &[_]*const Feature {
841808 &feature_ijmpcall,
842809 &feature_sram,
843 &feature_avr0,
844 &feature_lpm,
845810 &feature_addsubiw,
811 &feature_lpm,
812 &feature_avr0,
846813 &feature_avr2,
847814 },
848815};
......@@ -853,9 +820,9 @@ pub const cpu_at90s8535 = Cpu{
853820 .subfeatures = &[_]*const Feature {
854821 &feature_ijmpcall,
855822 &feature_sram,
856 &feature_avr0,
857 &feature_lpm,
858823 &feature_addsubiw,
824 &feature_lpm,
825 &feature_avr0,
859826 &feature_avr2,
860827 },
861828};
......@@ -864,17 +831,17 @@ pub const cpu_at90scr100 = Cpu{
864831 .name = "at90scr100",
865832 .llvm_name = "at90scr100",
866833 .subfeatures = &[_]*const Feature {
834 &feature_spm,
867835 &feature_lpmx,
868 &feature_jmpcall,
869836 &feature_ijmpcall,
870 &feature_movw,
837 &feature_jmpcall,
871838 &feature_sram,
839 &feature_addsubiw,
872840 &feature_mul,
873 &feature_avr0,
874 &feature_lpm,
875841 &feature_break,
876 &feature_spm,
877 &feature_addsubiw,
842 &feature_lpm,
843 &feature_avr0,
844 &feature_movw,
878845 &feature_avr5,
879846 },
880847};
......@@ -883,19 +850,19 @@ pub const cpu_at90usb1286 = Cpu{
883850 .name = "at90usb1286",
884851 .llvm_name = "at90usb1286",
885852 .subfeatures = &[_]*const Feature {
853 &feature_spm,
886854 &feature_lpmx,
887855 &feature_ijmpcall,
888856 &feature_jmpcall,
889 &feature_movw,
890857 &feature_sram,
858 &feature_addsubiw,
859 &feature_elpm,
891860 &feature_mul,
892 &feature_avr0,
893 &feature_lpm,
894861 &feature_break,
895 &feature_spm,
862 &feature_lpm,
896863 &feature_elpmx,
897 &feature_elpm,
898 &feature_addsubiw,
864 &feature_avr0,
865 &feature_movw,
899866 &feature_avr51,
900867 },
901868};
......@@ -904,19 +871,19 @@ pub const cpu_at90usb1287 = Cpu{
904871 .name = "at90usb1287",
905872 .llvm_name = "at90usb1287",
906873 .subfeatures = &[_]*const Feature {
874 &feature_spm,
907875 &feature_lpmx,
908876 &feature_ijmpcall,
909877 &feature_jmpcall,
910 &feature_movw,
911878 &feature_sram,
879 &feature_addsubiw,
880 &feature_elpm,
912881 &feature_mul,
913 &feature_avr0,
914 &feature_lpm,
915882 &feature_break,
916 &feature_spm,
883 &feature_lpm,
917884 &feature_elpmx,
918 &feature_elpm,
919 &feature_addsubiw,
885 &feature_avr0,
886 &feature_movw,
920887 &feature_avr51,
921888 },
922889};
......@@ -925,16 +892,16 @@ pub const cpu_at90usb162 = Cpu{
925892 .name = "at90usb162",
926893 .llvm_name = "at90usb162",
927894 .subfeatures = &[_]*const Feature {
895 &feature_spm,
928896 &feature_lpmx,
929 &feature_jmpcall,
930897 &feature_ijmpcall,
931 &feature_movw,
898 &feature_jmpcall,
932899 &feature_sram,
933 &feature_avr0,
934 &feature_lpm,
935 &feature_break,
936 &feature_spm,
937900 &feature_addsubiw,
901 &feature_break,
902 &feature_lpm,
903 &feature_avr0,
904 &feature_movw,
938905 &feature_avr35,
939906 },
940907};
......@@ -943,17 +910,17 @@ pub const cpu_at90usb646 = Cpu{
943910 .name = "at90usb646",
944911 .llvm_name = "at90usb646",
945912 .subfeatures = &[_]*const Feature {
913 &feature_spm,
946914 &feature_lpmx,
947 &feature_jmpcall,
948915 &feature_ijmpcall,
949 &feature_movw,
916 &feature_jmpcall,
950917 &feature_sram,
918 &feature_addsubiw,
951919 &feature_mul,
952 &feature_avr0,
953 &feature_lpm,
954920 &feature_break,
955 &feature_spm,
956 &feature_addsubiw,
921 &feature_lpm,
922 &feature_avr0,
923 &feature_movw,
957924 &feature_avr5,
958925 },
959926};
......@@ -962,17 +929,17 @@ pub const cpu_at90usb647 = Cpu{
962929 .name = "at90usb647",
963930 .llvm_name = "at90usb647",
964931 .subfeatures = &[_]*const Feature {
932 &feature_spm,
965933 &feature_lpmx,
966 &feature_jmpcall,
967934 &feature_ijmpcall,
968 &feature_movw,
935 &feature_jmpcall,
969936 &feature_sram,
937 &feature_addsubiw,
970938 &feature_mul,
971 &feature_avr0,
972 &feature_lpm,
973939 &feature_break,
974 &feature_spm,
975 &feature_addsubiw,
940 &feature_lpm,
941 &feature_avr0,
942 &feature_movw,
976943 &feature_avr5,
977944 },
978945};
......@@ -981,16 +948,16 @@ pub const cpu_at90usb82 = Cpu{
981948 .name = "at90usb82",
982949 .llvm_name = "at90usb82",
983950 .subfeatures = &[_]*const Feature {
951 &feature_spm,
984952 &feature_lpmx,
985 &feature_jmpcall,
986953 &feature_ijmpcall,
987 &feature_movw,
954 &feature_jmpcall,
988955 &feature_sram,
989 &feature_avr0,
990 &feature_lpm,
991 &feature_break,
992 &feature_spm,
993956 &feature_addsubiw,
957 &feature_break,
958 &feature_lpm,
959 &feature_avr0,
960 &feature_movw,
994961 &feature_avr35,
995962 },
996963};
......@@ -1002,9 +969,9 @@ pub const cpu_at94k = Cpu{
1002969 &feature_ijmpcall,
1003970 &feature_jmpcall,
1004971 &feature_sram,
1005 &feature_avr0,
1006 &feature_lpm,
1007972 &feature_addsubiw,
973 &feature_lpm,
974 &feature_avr0,
1008975 &feature_avr3,
1009976 &feature_lpmx,
1010977 &feature_movw,
......@@ -1016,15 +983,15 @@ pub const cpu_ata5272 = Cpu{
1016983 .name = "ata5272",
1017984 .llvm_name = "ata5272",
1018985 .subfeatures = &[_]*const Feature {
986 &feature_spm,
1019987 &feature_lpmx,
1020988 &feature_ijmpcall,
1021 &feature_movw,
1022989 &feature_sram,
1023 &feature_avr0,
1024 &feature_lpm,
1025 &feature_break,
1026 &feature_spm,
1027990 &feature_addsubiw,
991 &feature_break,
992 &feature_lpm,
993 &feature_avr0,
994 &feature_movw,
1028995 &feature_avr25,
1029996 },
1030997};
......@@ -1033,16 +1000,16 @@ pub const cpu_ata5505 = Cpu{
10331000 .name = "ata5505",
10341001 .llvm_name = "ata5505",
10351002 .subfeatures = &[_]*const Feature {
1003 &feature_spm,
10361004 &feature_lpmx,
1037 &feature_jmpcall,
10381005 &feature_ijmpcall,
1039 &feature_movw,
1006 &feature_jmpcall,
10401007 &feature_sram,
1041 &feature_avr0,
1042 &feature_lpm,
1043 &feature_break,
1044 &feature_spm,
10451008 &feature_addsubiw,
1009 &feature_break,
1010 &feature_lpm,
1011 &feature_avr0,
1012 &feature_movw,
10461013 &feature_avr35,
10471014 },
10481015};
......@@ -1051,17 +1018,17 @@ pub const cpu_ata5790 = Cpu{
10511018 .name = "ata5790",
10521019 .llvm_name = "ata5790",
10531020 .subfeatures = &[_]*const Feature {
1021 &feature_spm,
10541022 &feature_lpmx,
1055 &feature_jmpcall,
10561023 &feature_ijmpcall,
1057 &feature_movw,
1024 &feature_jmpcall,
10581025 &feature_sram,
1026 &feature_addsubiw,
10591027 &feature_mul,
1060 &feature_avr0,
1061 &feature_lpm,
10621028 &feature_break,
1063 &feature_spm,
1064 &feature_addsubiw,
1029 &feature_lpm,
1030 &feature_avr0,
1031 &feature_movw,
10651032 &feature_avr5,
10661033 },
10671034};
......@@ -1070,17 +1037,17 @@ pub const cpu_ata5795 = Cpu{
10701037 .name = "ata5795",
10711038 .llvm_name = "ata5795",
10721039 .subfeatures = &[_]*const Feature {
1040 &feature_spm,
10731041 &feature_lpmx,
1074 &feature_jmpcall,
10751042 &feature_ijmpcall,
1076 &feature_movw,
1043 &feature_jmpcall,
10771044 &feature_sram,
1045 &feature_addsubiw,
10781046 &feature_mul,
1079 &feature_avr0,
1080 &feature_lpm,
10811047 &feature_break,
1082 &feature_spm,
1083 &feature_addsubiw,
1048 &feature_lpm,
1049 &feature_avr0,
1050 &feature_movw,
10841051 &feature_avr5,
10851052 },
10861053};
......@@ -1089,16 +1056,16 @@ pub const cpu_ata6285 = Cpu{
10891056 .name = "ata6285",
10901057 .llvm_name = "ata6285",
10911058 .subfeatures = &[_]*const Feature {
1059 &feature_spm,
10921060 &feature_lpmx,
10931061 &feature_ijmpcall,
1094 &feature_movw,
10951062 &feature_sram,
1063 &feature_addsubiw,
10961064 &feature_mul,
1097 &feature_avr0,
1098 &feature_lpm,
10991065 &feature_break,
1100 &feature_spm,
1101 &feature_addsubiw,
1066 &feature_lpm,
1067 &feature_avr0,
1068 &feature_movw,
11021069 &feature_avr4,
11031070 },
11041071};
......@@ -1107,16 +1074,16 @@ pub const cpu_ata6286 = Cpu{
11071074 .name = "ata6286",
11081075 .llvm_name = "ata6286",
11091076 .subfeatures = &[_]*const Feature {
1077 &feature_spm,
11101078 &feature_lpmx,
11111079 &feature_ijmpcall,
1112 &feature_movw,
11131080 &feature_sram,
1081 &feature_addsubiw,
11141082 &feature_mul,
1115 &feature_avr0,
1116 &feature_lpm,
11171083 &feature_break,
1118 &feature_spm,
1119 &feature_addsubiw,
1084 &feature_lpm,
1085 &feature_avr0,
1086 &feature_movw,
11201087 &feature_avr4,
11211088 },
11221089};
......@@ -1125,16 +1092,16 @@ pub const cpu_ata6289 = Cpu{
11251092 .name = "ata6289",
11261093 .llvm_name = "ata6289",
11271094 .subfeatures = &[_]*const Feature {
1095 &feature_spm,
11281096 &feature_lpmx,
11291097 &feature_ijmpcall,
1130 &feature_movw,
11311098 &feature_sram,
1099 &feature_addsubiw,
11321100 &feature_mul,
1133 &feature_avr0,
1134 &feature_lpm,
11351101 &feature_break,
1136 &feature_spm,
1137 &feature_addsubiw,
1102 &feature_lpm,
1103 &feature_avr0,
1104 &feature_movw,
11381105 &feature_avr4,
11391106 },
11401107};
......@@ -1143,13 +1110,13 @@ pub const cpu_atmega103 = Cpu{
11431110 .name = "atmega103",
11441111 .llvm_name = "atmega103",
11451112 .subfeatures = &[_]*const Feature {
1146 &feature_jmpcall,
11471113 &feature_ijmpcall,
1114 &feature_jmpcall,
11481115 &feature_sram,
1149 &feature_avr0,
1150 &feature_lpm,
1151 &feature_elpm,
11521116 &feature_addsubiw,
1117 &feature_elpm,
1118 &feature_lpm,
1119 &feature_avr0,
11531120 &feature_avr31,
11541121 },
11551122};
......@@ -1158,19 +1125,19 @@ pub const cpu_atmega128 = Cpu{
11581125 .name = "atmega128",
11591126 .llvm_name = "atmega128",
11601127 .subfeatures = &[_]*const Feature {
1128 &feature_spm,
11611129 &feature_lpmx,
11621130 &feature_ijmpcall,
11631131 &feature_jmpcall,
1164 &feature_movw,
11651132 &feature_sram,
1133 &feature_addsubiw,
1134 &feature_elpm,
11661135 &feature_mul,
1167 &feature_avr0,
1168 &feature_lpm,
11691136 &feature_break,
1170 &feature_spm,
1137 &feature_lpm,
11711138 &feature_elpmx,
1172 &feature_elpm,
1173 &feature_addsubiw,
1139 &feature_avr0,
1140 &feature_movw,
11741141 &feature_avr51,
11751142 },
11761143};
......@@ -1179,19 +1146,19 @@ pub const cpu_atmega1280 = Cpu{
11791146 .name = "atmega1280",
11801147 .llvm_name = "atmega1280",
11811148 .subfeatures = &[_]*const Feature {
1149 &feature_spm,
11821150 &feature_lpmx,
11831151 &feature_ijmpcall,
11841152 &feature_jmpcall,
1185 &feature_movw,
11861153 &feature_sram,
1154 &feature_addsubiw,
1155 &feature_elpm,
11871156 &feature_mul,
1188 &feature_avr0,
1189 &feature_lpm,
11901157 &feature_break,
1191 &feature_spm,
1158 &feature_lpm,
11921159 &feature_elpmx,
1193 &feature_elpm,
1194 &feature_addsubiw,
1160 &feature_avr0,
1161 &feature_movw,
11951162 &feature_avr51,
11961163 },
11971164};
......@@ -1200,19 +1167,19 @@ pub const cpu_atmega1281 = Cpu{
12001167 .name = "atmega1281",
12011168 .llvm_name = "atmega1281",
12021169 .subfeatures = &[_]*const Feature {
1170 &feature_spm,
12031171 &feature_lpmx,
12041172 &feature_ijmpcall,
12051173 &feature_jmpcall,
1206 &feature_movw,
12071174 &feature_sram,
1175 &feature_addsubiw,
1176 &feature_elpm,
12081177 &feature_mul,
1209 &feature_avr0,
1210 &feature_lpm,
12111178 &feature_break,
1212 &feature_spm,
1179 &feature_lpm,
12131180 &feature_elpmx,
1214 &feature_elpm,
1215 &feature_addsubiw,
1181 &feature_avr0,
1182 &feature_movw,
12161183 &feature_avr51,
12171184 },
12181185};
......@@ -1221,19 +1188,19 @@ pub const cpu_atmega1284 = Cpu{
12211188 .name = "atmega1284",
12221189 .llvm_name = "atmega1284",
12231190 .subfeatures = &[_]*const Feature {
1191 &feature_spm,
12241192 &feature_lpmx,
12251193 &feature_ijmpcall,
12261194 &feature_jmpcall,
1227 &feature_movw,
12281195 &feature_sram,
1196 &feature_addsubiw,
1197 &feature_elpm,
12291198 &feature_mul,
1230 &feature_avr0,
1231 &feature_lpm,
12321199 &feature_break,
1233 &feature_spm,
1200 &feature_lpm,
12341201 &feature_elpmx,
1235 &feature_elpm,
1236 &feature_addsubiw,
1202 &feature_avr0,
1203 &feature_movw,
12371204 &feature_avr51,
12381205 },
12391206};
......@@ -1242,19 +1209,19 @@ pub const cpu_atmega1284p = Cpu{
12421209 .name = "atmega1284p",
12431210 .llvm_name = "atmega1284p",
12441211 .subfeatures = &[_]*const Feature {
1212 &feature_spm,
12451213 &feature_lpmx,
12461214 &feature_ijmpcall,
12471215 &feature_jmpcall,
1248 &feature_movw,
12491216 &feature_sram,
1217 &feature_addsubiw,
1218 &feature_elpm,
12501219 &feature_mul,
1251 &feature_avr0,
1252 &feature_lpm,
12531220 &feature_break,
1254 &feature_spm,
1221 &feature_lpm,
12551222 &feature_elpmx,
1256 &feature_elpm,
1257 &feature_addsubiw,
1223 &feature_avr0,
1224 &feature_movw,
12581225 &feature_avr51,
12591226 },
12601227};
......@@ -1263,19 +1230,19 @@ pub const cpu_atmega1284rfr2 = Cpu{
12631230 .name = "atmega1284rfr2",
12641231 .llvm_name = "atmega1284rfr2",
12651232 .subfeatures = &[_]*const Feature {
1233 &feature_spm,
12661234 &feature_lpmx,
12671235 &feature_ijmpcall,
12681236 &feature_jmpcall,
1269 &feature_movw,
12701237 &feature_sram,
1238 &feature_addsubiw,
1239 &feature_elpm,
12711240 &feature_mul,
1272 &feature_avr0,
1273 &feature_lpm,
12741241 &feature_break,
1275 &feature_spm,
1242 &feature_lpm,
12761243 &feature_elpmx,
1277 &feature_elpm,
1278 &feature_addsubiw,
1244 &feature_avr0,
1245 &feature_movw,
12791246 &feature_avr51,
12801247 },
12811248};
......@@ -1284,19 +1251,19 @@ pub const cpu_atmega128a = Cpu{
12841251 .name = "atmega128a",
12851252 .llvm_name = "atmega128a",
12861253 .subfeatures = &[_]*const Feature {
1254 &feature_spm,
12871255 &feature_lpmx,
12881256 &feature_ijmpcall,
12891257 &feature_jmpcall,
1290 &feature_movw,
12911258 &feature_sram,
1259 &feature_addsubiw,
1260 &feature_elpm,
12921261 &feature_mul,
1293 &feature_avr0,
1294 &feature_lpm,
12951262 &feature_break,
1296 &feature_spm,
1263 &feature_lpm,
12971264 &feature_elpmx,
1298 &feature_elpm,
1299 &feature_addsubiw,
1265 &feature_avr0,
1266 &feature_movw,
13001267 &feature_avr51,
13011268 },
13021269};
......@@ -1305,19 +1272,19 @@ pub const cpu_atmega128rfa1 = Cpu{
13051272 .name = "atmega128rfa1",
13061273 .llvm_name = "atmega128rfa1",
13071274 .subfeatures = &[_]*const Feature {
1275 &feature_spm,
13081276 &feature_lpmx,
13091277 &feature_ijmpcall,
13101278 &feature_jmpcall,
1311 &feature_movw,
13121279 &feature_sram,
1280 &feature_addsubiw,
1281 &feature_elpm,
13131282 &feature_mul,
1314 &feature_avr0,
1315 &feature_lpm,
13161283 &feature_break,
1317 &feature_spm,
1284 &feature_lpm,
13181285 &feature_elpmx,
1319 &feature_elpm,
1320 &feature_addsubiw,
1286 &feature_avr0,
1287 &feature_movw,
13211288 &feature_avr51,
13221289 },
13231290};
......@@ -1326,19 +1293,19 @@ pub const cpu_atmega128rfr2 = Cpu{
13261293 .name = "atmega128rfr2",
13271294 .llvm_name = "atmega128rfr2",
13281295 .subfeatures = &[_]*const Feature {
1296 &feature_spm,
13291297 &feature_lpmx,
13301298 &feature_ijmpcall,
13311299 &feature_jmpcall,
1332 &feature_movw,
13331300 &feature_sram,
1301 &feature_addsubiw,
1302 &feature_elpm,
13341303 &feature_mul,
1335 &feature_avr0,
1336 &feature_lpm,
13371304 &feature_break,
1338 &feature_spm,
1305 &feature_lpm,
13391306 &feature_elpmx,
1340 &feature_elpm,
1341 &feature_addsubiw,
1307 &feature_avr0,
1308 &feature_movw,
13421309 &feature_avr51,
13431310 },
13441311};
......@@ -1347,17 +1314,17 @@ pub const cpu_atmega16 = Cpu{
13471314 .name = "atmega16",
13481315 .llvm_name = "atmega16",
13491316 .subfeatures = &[_]*const Feature {
1317 &feature_spm,
13501318 &feature_lpmx,
1351 &feature_jmpcall,
13521319 &feature_ijmpcall,
1353 &feature_movw,
1320 &feature_jmpcall,
13541321 &feature_sram,
1322 &feature_addsubiw,
13551323 &feature_mul,
1356 &feature_avr0,
1357 &feature_lpm,
13581324 &feature_break,
1359 &feature_spm,
1360 &feature_addsubiw,
1325 &feature_lpm,
1326 &feature_avr0,
1327 &feature_movw,
13611328 &feature_avr5,
13621329 },
13631330};
......@@ -1369,9 +1336,9 @@ pub const cpu_atmega161 = Cpu{
13691336 &feature_ijmpcall,
13701337 &feature_jmpcall,
13711338 &feature_sram,
1372 &feature_avr0,
1373 &feature_lpm,
13741339 &feature_addsubiw,
1340 &feature_lpm,
1341 &feature_avr0,
13751342 &feature_avr3,
13761343 &feature_lpmx,
13771344 &feature_movw,
......@@ -1384,17 +1351,17 @@ pub const cpu_atmega162 = Cpu{
13841351 .name = "atmega162",
13851352 .llvm_name = "atmega162",
13861353 .subfeatures = &[_]*const Feature {
1354 &feature_spm,
13871355 &feature_lpmx,
1388 &feature_jmpcall,
13891356 &feature_ijmpcall,
1390 &feature_movw,
1357 &feature_jmpcall,
13911358 &feature_sram,
1359 &feature_addsubiw,
13921360 &feature_mul,
1393 &feature_avr0,
1394 &feature_lpm,
13951361 &feature_break,
1396 &feature_spm,
1397 &feature_addsubiw,
1362 &feature_lpm,
1363 &feature_avr0,
1364 &feature_movw,
13981365 &feature_avr5,
13991366 },
14001367};
......@@ -1406,9 +1373,9 @@ pub const cpu_atmega163 = Cpu{
14061373 &feature_ijmpcall,
14071374 &feature_jmpcall,
14081375 &feature_sram,
1409 &feature_avr0,
1410 &feature_lpm,
14111376 &feature_addsubiw,
1377 &feature_lpm,
1378 &feature_avr0,
14121379 &feature_avr3,
14131380 &feature_lpmx,
14141381 &feature_movw,
......@@ -1421,17 +1388,17 @@ pub const cpu_atmega164a = Cpu{
14211388 .name = "atmega164a",
14221389 .llvm_name = "atmega164a",
14231390 .subfeatures = &[_]*const Feature {
1391 &feature_spm,
14241392 &feature_lpmx,
1425 &feature_jmpcall,
14261393 &feature_ijmpcall,
1427 &feature_movw,
1394 &feature_jmpcall,
14281395 &feature_sram,
1396 &feature_addsubiw,
14291397 &feature_mul,
1430 &feature_avr0,
1431 &feature_lpm,
14321398 &feature_break,
1433 &feature_spm,
1434 &feature_addsubiw,
1399 &feature_lpm,
1400 &feature_avr0,
1401 &feature_movw,
14351402 &feature_avr5,
14361403 },
14371404};
......@@ -1440,17 +1407,17 @@ pub const cpu_atmega164p = Cpu{
14401407 .name = "atmega164p",
14411408 .llvm_name = "atmega164p",
14421409 .subfeatures = &[_]*const Feature {
1410 &feature_spm,
14431411 &feature_lpmx,
1444 &feature_jmpcall,
14451412 &feature_ijmpcall,
1446 &feature_movw,
1413 &feature_jmpcall,
14471414 &feature_sram,
1415 &feature_addsubiw,
14481416 &feature_mul,
1449 &feature_avr0,
1450 &feature_lpm,
14511417 &feature_break,
1452 &feature_spm,
1453 &feature_addsubiw,
1418 &feature_lpm,
1419 &feature_avr0,
1420 &feature_movw,
14541421 &feature_avr5,
14551422 },
14561423};
......@@ -1459,17 +1426,17 @@ pub const cpu_atmega164pa = Cpu{
14591426 .name = "atmega164pa",
14601427 .llvm_name = "atmega164pa",
14611428 .subfeatures = &[_]*const Feature {
1429 &feature_spm,
14621430 &feature_lpmx,
1463 &feature_jmpcall,
14641431 &feature_ijmpcall,
1465 &feature_movw,
1432 &feature_jmpcall,
14661433 &feature_sram,
1434 &feature_addsubiw,
14671435 &feature_mul,
1468 &feature_avr0,
1469 &feature_lpm,
14701436 &feature_break,
1471 &feature_spm,
1472 &feature_addsubiw,
1437 &feature_lpm,
1438 &feature_avr0,
1439 &feature_movw,
14731440 &feature_avr5,
14741441 },
14751442};
......@@ -1478,17 +1445,17 @@ pub const cpu_atmega165 = Cpu{
14781445 .name = "atmega165",
14791446 .llvm_name = "atmega165",
14801447 .subfeatures = &[_]*const Feature {
1448 &feature_spm,
14811449 &feature_lpmx,
1482 &feature_jmpcall,
14831450 &feature_ijmpcall,
1484 &feature_movw,
1451 &feature_jmpcall,
14851452 &feature_sram,
1453 &feature_addsubiw,
14861454 &feature_mul,
1487 &feature_avr0,
1488 &feature_lpm,
14891455 &feature_break,
1490 &feature_spm,
1491 &feature_addsubiw,
1456 &feature_lpm,
1457 &feature_avr0,
1458 &feature_movw,
14921459 &feature_avr5,
14931460 },
14941461};
......@@ -1497,17 +1464,17 @@ pub const cpu_atmega165a = Cpu{
14971464 .name = "atmega165a",
14981465 .llvm_name = "atmega165a",
14991466 .subfeatures = &[_]*const Feature {
1467 &feature_spm,
15001468 &feature_lpmx,
1501 &feature_jmpcall,
15021469 &feature_ijmpcall,
1503 &feature_movw,
1470 &feature_jmpcall,
15041471 &feature_sram,
1472 &feature_addsubiw,
15051473 &feature_mul,
1506 &feature_avr0,
1507 &feature_lpm,
15081474 &feature_break,
1509 &feature_spm,
1510 &feature_addsubiw,
1475 &feature_lpm,
1476 &feature_avr0,
1477 &feature_movw,
15111478 &feature_avr5,
15121479 },
15131480};
......@@ -1516,17 +1483,17 @@ pub const cpu_atmega165p = Cpu{
15161483 .name = "atmega165p",
15171484 .llvm_name = "atmega165p",
15181485 .subfeatures = &[_]*const Feature {
1486 &feature_spm,
15191487 &feature_lpmx,
1520 &feature_jmpcall,
15211488 &feature_ijmpcall,
1522 &feature_movw,
1489 &feature_jmpcall,
15231490 &feature_sram,
1491 &feature_addsubiw,
15241492 &feature_mul,
1525 &feature_avr0,
1526 &feature_lpm,
15271493 &feature_break,
1528 &feature_spm,
1529 &feature_addsubiw,
1494 &feature_lpm,
1495 &feature_avr0,
1496 &feature_movw,
15301497 &feature_avr5,
15311498 },
15321499};
......@@ -1535,17 +1502,17 @@ pub const cpu_atmega165pa = Cpu{
15351502 .name = "atmega165pa",
15361503 .llvm_name = "atmega165pa",
15371504 .subfeatures = &[_]*const Feature {
1505 &feature_spm,
15381506 &feature_lpmx,
1539 &feature_jmpcall,
15401507 &feature_ijmpcall,
1541 &feature_movw,
1508 &feature_jmpcall,
15421509 &feature_sram,
1510 &feature_addsubiw,
15431511 &feature_mul,
1544 &feature_avr0,
1545 &feature_lpm,
15461512 &feature_break,
1547 &feature_spm,
1548 &feature_addsubiw,
1513 &feature_lpm,
1514 &feature_avr0,
1515 &feature_movw,
15491516 &feature_avr5,
15501517 },
15511518};
......@@ -1554,17 +1521,17 @@ pub const cpu_atmega168 = Cpu{
15541521 .name = "atmega168",
15551522 .llvm_name = "atmega168",
15561523 .subfeatures = &[_]*const Feature {
1524 &feature_spm,
15571525 &feature_lpmx,
1558 &feature_jmpcall,
15591526 &feature_ijmpcall,
1560 &feature_movw,
1527 &feature_jmpcall,
15611528 &feature_sram,
1529 &feature_addsubiw,
15621530 &feature_mul,
1563 &feature_avr0,
1564 &feature_lpm,
15651531 &feature_break,
1566 &feature_spm,
1567 &feature_addsubiw,
1532 &feature_lpm,
1533 &feature_avr0,
1534 &feature_movw,
15681535 &feature_avr5,
15691536 },
15701537};
......@@ -1573,17 +1540,17 @@ pub const cpu_atmega168a = Cpu{
15731540 .name = "atmega168a",
15741541 .llvm_name = "atmega168a",
15751542 .subfeatures = &[_]*const Feature {
1543 &feature_spm,
15761544 &feature_lpmx,
1577 &feature_jmpcall,
15781545 &feature_ijmpcall,
1579 &feature_movw,
1546 &feature_jmpcall,
15801547 &feature_sram,
1548 &feature_addsubiw,
15811549 &feature_mul,
1582 &feature_avr0,
1583 &feature_lpm,
15841550 &feature_break,
1585 &feature_spm,
1586 &feature_addsubiw,
1551 &feature_lpm,
1552 &feature_avr0,
1553 &feature_movw,
15871554 &feature_avr5,
15881555 },
15891556};
......@@ -1592,17 +1559,17 @@ pub const cpu_atmega168p = Cpu{
15921559 .name = "atmega168p",
15931560 .llvm_name = "atmega168p",
15941561 .subfeatures = &[_]*const Feature {
1562 &feature_spm,
15951563 &feature_lpmx,
1596 &feature_jmpcall,
15971564 &feature_ijmpcall,
1598 &feature_movw,
1565 &feature_jmpcall,
15991566 &feature_sram,
1567 &feature_addsubiw,
16001568 &feature_mul,
1601 &feature_avr0,
1602 &feature_lpm,
16031569 &feature_break,
1604 &feature_spm,
1605 &feature_addsubiw,
1570 &feature_lpm,
1571 &feature_avr0,
1572 &feature_movw,
16061573 &feature_avr5,
16071574 },
16081575};
......@@ -1611,17 +1578,17 @@ pub const cpu_atmega168pa = Cpu{
16111578 .name = "atmega168pa",
16121579 .llvm_name = "atmega168pa",
16131580 .subfeatures = &[_]*const Feature {
1581 &feature_spm,
16141582 &feature_lpmx,
1615 &feature_jmpcall,
16161583 &feature_ijmpcall,
1617 &feature_movw,
1584 &feature_jmpcall,
16181585 &feature_sram,
1586 &feature_addsubiw,
16191587 &feature_mul,
1620 &feature_avr0,
1621 &feature_lpm,
16221588 &feature_break,
1623 &feature_spm,
1624 &feature_addsubiw,
1589 &feature_lpm,
1590 &feature_avr0,
1591 &feature_movw,
16251592 &feature_avr5,
16261593 },
16271594};
......@@ -1630,17 +1597,17 @@ pub const cpu_atmega169 = Cpu{
16301597 .name = "atmega169",
16311598 .llvm_name = "atmega169",
16321599 .subfeatures = &[_]*const Feature {
1600 &feature_spm,
16331601 &feature_lpmx,
1634 &feature_jmpcall,
16351602 &feature_ijmpcall,
1636 &feature_movw,
1603 &feature_jmpcall,
16371604 &feature_sram,
1605 &feature_addsubiw,
16381606 &feature_mul,
1639 &feature_avr0,
1640 &feature_lpm,
16411607 &feature_break,
1642 &feature_spm,
1643 &feature_addsubiw,
1608 &feature_lpm,
1609 &feature_avr0,
1610 &feature_movw,
16441611 &feature_avr5,
16451612 },
16461613};
......@@ -1649,17 +1616,17 @@ pub const cpu_atmega169a = Cpu{
16491616 .name = "atmega169a",
16501617 .llvm_name = "atmega169a",
16511618 .subfeatures = &[_]*const Feature {
1619 &feature_spm,
16521620 &feature_lpmx,
1653 &feature_jmpcall,
16541621 &feature_ijmpcall,
1655 &feature_movw,
1622 &feature_jmpcall,
16561623 &feature_sram,
1624 &feature_addsubiw,
16571625 &feature_mul,
1658 &feature_avr0,
1659 &feature_lpm,
16601626 &feature_break,
1661 &feature_spm,
1662 &feature_addsubiw,
1627 &feature_lpm,
1628 &feature_avr0,
1629 &feature_movw,
16631630 &feature_avr5,
16641631 },
16651632};
......@@ -1668,17 +1635,17 @@ pub const cpu_atmega169p = Cpu{
16681635 .name = "atmega169p",
16691636 .llvm_name = "atmega169p",
16701637 .subfeatures = &[_]*const Feature {
1638 &feature_spm,
16711639 &feature_lpmx,
1672 &feature_jmpcall,
16731640 &feature_ijmpcall,
1674 &feature_movw,
1641 &feature_jmpcall,
16751642 &feature_sram,
1643 &feature_addsubiw,
16761644 &feature_mul,
1677 &feature_avr0,
1678 &feature_lpm,
16791645 &feature_break,
1680 &feature_spm,
1681 &feature_addsubiw,
1646 &feature_lpm,
1647 &feature_avr0,
1648 &feature_movw,
16821649 &feature_avr5,
16831650 },
16841651};
......@@ -1687,17 +1654,17 @@ pub const cpu_atmega169pa = Cpu{
16871654 .name = "atmega169pa",
16881655 .llvm_name = "atmega169pa",
16891656 .subfeatures = &[_]*const Feature {
1657 &feature_spm,
16901658 &feature_lpmx,
1691 &feature_jmpcall,
16921659 &feature_ijmpcall,
1693 &feature_movw,
1660 &feature_jmpcall,
16941661 &feature_sram,
1662 &feature_addsubiw,
16951663 &feature_mul,
1696 &feature_avr0,
1697 &feature_lpm,
16981664 &feature_break,
1699 &feature_spm,
1700 &feature_addsubiw,
1665 &feature_lpm,
1666 &feature_avr0,
1667 &feature_movw,
17011668 &feature_avr5,
17021669 },
17031670};
......@@ -1706,17 +1673,17 @@ pub const cpu_atmega16a = Cpu{
17061673 .name = "atmega16a",
17071674 .llvm_name = "atmega16a",
17081675 .subfeatures = &[_]*const Feature {
1676 &feature_spm,
17091677 &feature_lpmx,
1710 &feature_jmpcall,
17111678 &feature_ijmpcall,
1712 &feature_movw,
1679 &feature_jmpcall,
17131680 &feature_sram,
1681 &feature_addsubiw,
17141682 &feature_mul,
1715 &feature_avr0,
1716 &feature_lpm,
17171683 &feature_break,
1718 &feature_spm,
1719 &feature_addsubiw,
1684 &feature_lpm,
1685 &feature_avr0,
1686 &feature_movw,
17201687 &feature_avr5,
17211688 },
17221689};
......@@ -1725,17 +1692,17 @@ pub const cpu_atmega16hva = Cpu{
17251692 .name = "atmega16hva",
17261693 .llvm_name = "atmega16hva",
17271694 .subfeatures = &[_]*const Feature {
1695 &feature_spm,
17281696 &feature_lpmx,
1729 &feature_jmpcall,
17301697 &feature_ijmpcall,
1731 &feature_movw,
1698 &feature_jmpcall,
17321699 &feature_sram,
1700 &feature_addsubiw,
17331701 &feature_mul,
1734 &feature_avr0,
1735 &feature_lpm,
17361702 &feature_break,
1737 &feature_spm,
1738 &feature_addsubiw,
1703 &feature_lpm,
1704 &feature_avr0,
1705 &feature_movw,
17391706 &feature_avr5,
17401707 },
17411708};
......@@ -1744,17 +1711,17 @@ pub const cpu_atmega16hva2 = Cpu{
17441711 .name = "atmega16hva2",
17451712 .llvm_name = "atmega16hva2",
17461713 .subfeatures = &[_]*const Feature {
1714 &feature_spm,
17471715 &feature_lpmx,
1748 &feature_jmpcall,
17491716 &feature_ijmpcall,
1750 &feature_movw,
1717 &feature_jmpcall,
17511718 &feature_sram,
1719 &feature_addsubiw,
17521720 &feature_mul,
1753 &feature_avr0,
1754 &feature_lpm,
17551721 &feature_break,
1756 &feature_spm,
1757 &feature_addsubiw,
1722 &feature_lpm,
1723 &feature_avr0,
1724 &feature_movw,
17581725 &feature_avr5,
17591726 },
17601727};
......@@ -1763,17 +1730,17 @@ pub const cpu_atmega16hvb = Cpu{
17631730 .name = "atmega16hvb",
17641731 .llvm_name = "atmega16hvb",
17651732 .subfeatures = &[_]*const Feature {
1733 &feature_spm,
17661734 &feature_lpmx,
1767 &feature_jmpcall,
17681735 &feature_ijmpcall,
1769 &feature_movw,
1736 &feature_jmpcall,
17701737 &feature_sram,
1738 &feature_addsubiw,
17711739 &feature_mul,
1772 &feature_avr0,
1773 &feature_lpm,
17741740 &feature_break,
1775 &feature_spm,
1776 &feature_addsubiw,
1741 &feature_lpm,
1742 &feature_avr0,
1743 &feature_movw,
17771744 &feature_avr5,
17781745 },
17791746};
......@@ -1782,17 +1749,17 @@ pub const cpu_atmega16hvbrevb = Cpu{
17821749 .name = "atmega16hvbrevb",
17831750 .llvm_name = "atmega16hvbrevb",
17841751 .subfeatures = &[_]*const Feature {
1752 &feature_spm,
17851753 &feature_lpmx,
1786 &feature_jmpcall,
17871754 &feature_ijmpcall,
1788 &feature_movw,
1755 &feature_jmpcall,
17891756 &feature_sram,
1757 &feature_addsubiw,
17901758 &feature_mul,
1791 &feature_avr0,
1792 &feature_lpm,
17931759 &feature_break,
1794 &feature_spm,
1795 &feature_addsubiw,
1760 &feature_lpm,
1761 &feature_avr0,
1762 &feature_movw,
17961763 &feature_avr5,
17971764 },
17981765};
......@@ -1801,17 +1768,17 @@ pub const cpu_atmega16m1 = Cpu{
18011768 .name = "atmega16m1",
18021769 .llvm_name = "atmega16m1",
18031770 .subfeatures = &[_]*const Feature {
1771 &feature_spm,
18041772 &feature_lpmx,
1805 &feature_jmpcall,
18061773 &feature_ijmpcall,
1807 &feature_movw,
1774 &feature_jmpcall,
18081775 &feature_sram,
1776 &feature_addsubiw,
18091777 &feature_mul,
1810 &feature_avr0,
1811 &feature_lpm,
18121778 &feature_break,
1813 &feature_spm,
1814 &feature_addsubiw,
1779 &feature_lpm,
1780 &feature_avr0,
1781 &feature_movw,
18151782 &feature_avr5,
18161783 },
18171784};
......@@ -1820,16 +1787,16 @@ pub const cpu_atmega16u2 = Cpu{
18201787 .name = "atmega16u2",
18211788 .llvm_name = "atmega16u2",
18221789 .subfeatures = &[_]*const Feature {
1790 &feature_spm,
18231791 &feature_lpmx,
1824 &feature_jmpcall,
18251792 &feature_ijmpcall,
1826 &feature_movw,
1793 &feature_jmpcall,
18271794 &feature_sram,
1828 &feature_avr0,
1829 &feature_lpm,
1830 &feature_break,
1831 &feature_spm,
18321795 &feature_addsubiw,
1796 &feature_break,
1797 &feature_lpm,
1798 &feature_avr0,
1799 &feature_movw,
18331800 &feature_avr35,
18341801 },
18351802};
......@@ -1838,17 +1805,17 @@ pub const cpu_atmega16u4 = Cpu{
18381805 .name = "atmega16u4",
18391806 .llvm_name = "atmega16u4",
18401807 .subfeatures = &[_]*const Feature {
1808 &feature_spm,
18411809 &feature_lpmx,
1842 &feature_jmpcall,
18431810 &feature_ijmpcall,
1844 &feature_movw,
1811 &feature_jmpcall,
18451812 &feature_sram,
1813 &feature_addsubiw,
18461814 &feature_mul,
1847 &feature_avr0,
1848 &feature_lpm,
18491815 &feature_break,
1850 &feature_spm,
1851 &feature_addsubiw,
1816 &feature_lpm,
1817 &feature_avr0,
1818 &feature_movw,
18521819 &feature_avr5,
18531820 },
18541821};
......@@ -1857,19 +1824,19 @@ pub const cpu_atmega2560 = Cpu{
18571824 .name = "atmega2560",
18581825 .llvm_name = "atmega2560",
18591826 .subfeatures = &[_]*const Feature {
1827 &feature_spm,
18601828 &feature_lpmx,
1861 &feature_jmpcall,
18621829 &feature_ijmpcall,
1863 &feature_movw,
1830 &feature_jmpcall,
18641831 &feature_sram,
1832 &feature_addsubiw,
1833 &feature_elpm,
18651834 &feature_mul,
1866 &feature_avr0,
1867 &feature_lpm,
18681835 &feature_break,
1869 &feature_spm,
1836 &feature_lpm,
18701837 &feature_elpmx,
1871 &feature_elpm,
1872 &feature_addsubiw,
1838 &feature_avr0,
1839 &feature_movw,
18731840 &feature_avr6,
18741841 },
18751842};
......@@ -1878,19 +1845,19 @@ pub const cpu_atmega2561 = Cpu{
18781845 .name = "atmega2561",
18791846 .llvm_name = "atmega2561",
18801847 .subfeatures = &[_]*const Feature {
1848 &feature_spm,
18811849 &feature_lpmx,
1882 &feature_jmpcall,
18831850 &feature_ijmpcall,
1884 &feature_movw,
1851 &feature_jmpcall,
18851852 &feature_sram,
1853 &feature_addsubiw,
1854 &feature_elpm,
18861855 &feature_mul,
1887 &feature_avr0,
1888 &feature_lpm,
18891856 &feature_break,
1890 &feature_spm,
1857 &feature_lpm,
18911858 &feature_elpmx,
1892 &feature_elpm,
1893 &feature_addsubiw,
1859 &feature_avr0,
1860 &feature_movw,
18941861 &feature_avr6,
18951862 },
18961863};
......@@ -1899,19 +1866,19 @@ pub const cpu_atmega2564rfr2 = Cpu{
18991866 .name = "atmega2564rfr2",
19001867 .llvm_name = "atmega2564rfr2",
19011868 .subfeatures = &[_]*const Feature {
1869 &feature_spm,
19021870 &feature_lpmx,
1903 &feature_jmpcall,
19041871 &feature_ijmpcall,
1905 &feature_movw,
1872 &feature_jmpcall,
19061873 &feature_sram,
1874 &feature_addsubiw,
1875 &feature_elpm,
19071876 &feature_mul,
1908 &feature_avr0,
1909 &feature_lpm,
19101877 &feature_break,
1911 &feature_spm,
1878 &feature_lpm,
19121879 &feature_elpmx,
1913 &feature_elpm,
1914 &feature_addsubiw,
1880 &feature_avr0,
1881 &feature_movw,
19151882 &feature_avr6,
19161883 },
19171884};
......@@ -1920,19 +1887,19 @@ pub const cpu_atmega256rfr2 = Cpu{
19201887 .name = "atmega256rfr2",
19211888 .llvm_name = "atmega256rfr2",
19221889 .subfeatures = &[_]*const Feature {
1890 &feature_spm,
19231891 &feature_lpmx,
1924 &feature_jmpcall,
19251892 &feature_ijmpcall,
1926 &feature_movw,
1893 &feature_jmpcall,
19271894 &feature_sram,
1895 &feature_addsubiw,
1896 &feature_elpm,
19281897 &feature_mul,
1929 &feature_avr0,
1930 &feature_lpm,
19311898 &feature_break,
1932 &feature_spm,
1899 &feature_lpm,
19331900 &feature_elpmx,
1934 &feature_elpm,
1935 &feature_addsubiw,
1901 &feature_avr0,
1902 &feature_movw,
19361903 &feature_avr6,
19371904 },
19381905};
......@@ -1941,17 +1908,17 @@ pub const cpu_atmega32 = Cpu{
19411908 .name = "atmega32",
19421909 .llvm_name = "atmega32",
19431910 .subfeatures = &[_]*const Feature {
1911 &feature_spm,
19441912 &feature_lpmx,
1945 &feature_jmpcall,
19461913 &feature_ijmpcall,
1947 &feature_movw,
1914 &feature_jmpcall,
19481915 &feature_sram,
1916 &feature_addsubiw,
19491917 &feature_mul,
1950 &feature_avr0,
1951 &feature_lpm,
19521918 &feature_break,
1953 &feature_spm,
1954 &feature_addsubiw,
1919 &feature_lpm,
1920 &feature_avr0,
1921 &feature_movw,
19551922 &feature_avr5,
19561923 },
19571924};
......@@ -1960,17 +1927,17 @@ pub const cpu_atmega323 = Cpu{
19601927 .name = "atmega323",
19611928 .llvm_name = "atmega323",
19621929 .subfeatures = &[_]*const Feature {
1930 &feature_spm,
19631931 &feature_lpmx,
1964 &feature_jmpcall,
19651932 &feature_ijmpcall,
1966 &feature_movw,
1933 &feature_jmpcall,
19671934 &feature_sram,
1935 &feature_addsubiw,
19681936 &feature_mul,
1969 &feature_avr0,
1970 &feature_lpm,
19711937 &feature_break,
1972 &feature_spm,
1973 &feature_addsubiw,
1938 &feature_lpm,
1939 &feature_avr0,
1940 &feature_movw,
19741941 &feature_avr5,
19751942 },
19761943};
......@@ -1979,17 +1946,17 @@ pub const cpu_atmega324a = Cpu{
19791946 .name = "atmega324a",
19801947 .llvm_name = "atmega324a",
19811948 .subfeatures = &[_]*const Feature {
1949 &feature_spm,
19821950 &feature_lpmx,
1983 &feature_jmpcall,
19841951 &feature_ijmpcall,
1985 &feature_movw,
1952 &feature_jmpcall,
19861953 &feature_sram,
1954 &feature_addsubiw,
19871955 &feature_mul,
1988 &feature_avr0,
1989 &feature_lpm,
19901956 &feature_break,
1991 &feature_spm,
1992 &feature_addsubiw,
1957 &feature_lpm,
1958 &feature_avr0,
1959 &feature_movw,
19931960 &feature_avr5,
19941961 },
19951962};
......@@ -1998,17 +1965,17 @@ pub const cpu_atmega324p = Cpu{
19981965 .name = "atmega324p",
19991966 .llvm_name = "atmega324p",
20001967 .subfeatures = &[_]*const Feature {
1968 &feature_spm,
20011969 &feature_lpmx,
2002 &feature_jmpcall,
20031970 &feature_ijmpcall,
2004 &feature_movw,
1971 &feature_jmpcall,
20051972 &feature_sram,
1973 &feature_addsubiw,
20061974 &feature_mul,
2007 &feature_avr0,
2008 &feature_lpm,
20091975 &feature_break,
2010 &feature_spm,
2011 &feature_addsubiw,
1976 &feature_lpm,
1977 &feature_avr0,
1978 &feature_movw,
20121979 &feature_avr5,
20131980 },
20141981};
......@@ -2017,17 +1984,17 @@ pub const cpu_atmega324pa = Cpu{
20171984 .name = "atmega324pa",
20181985 .llvm_name = "atmega324pa",
20191986 .subfeatures = &[_]*const Feature {
1987 &feature_spm,
20201988 &feature_lpmx,
2021 &feature_jmpcall,
20221989 &feature_ijmpcall,
2023 &feature_movw,
1990 &feature_jmpcall,
20241991 &feature_sram,
1992 &feature_addsubiw,
20251993 &feature_mul,
2026 &feature_avr0,
2027 &feature_lpm,
20281994 &feature_break,
2029 &feature_spm,
2030 &feature_addsubiw,
1995 &feature_lpm,
1996 &feature_avr0,
1997 &feature_movw,
20311998 &feature_avr5,
20321999 },
20332000};
......@@ -2036,17 +2003,17 @@ pub const cpu_atmega325 = Cpu{
20362003 .name = "atmega325",
20372004 .llvm_name = "atmega325",
20382005 .subfeatures = &[_]*const Feature {
2006 &feature_spm,
20392007 &feature_lpmx,
2040 &feature_jmpcall,
20412008 &feature_ijmpcall,
2042 &feature_movw,
2009 &feature_jmpcall,
20432010 &feature_sram,
2011 &feature_addsubiw,
20442012 &feature_mul,
2045 &feature_avr0,
2046 &feature_lpm,
20472013 &feature_break,
2048 &feature_spm,
2049 &feature_addsubiw,
2014 &feature_lpm,
2015 &feature_avr0,
2016 &feature_movw,
20502017 &feature_avr5,
20512018 },
20522019};
......@@ -2055,17 +2022,17 @@ pub const cpu_atmega3250 = Cpu{
20552022 .name = "atmega3250",
20562023 .llvm_name = "atmega3250",
20572024 .subfeatures = &[_]*const Feature {
2025 &feature_spm,
20582026 &feature_lpmx,
2059 &feature_jmpcall,
20602027 &feature_ijmpcall,
2061 &feature_movw,
2028 &feature_jmpcall,
20622029 &feature_sram,
2030 &feature_addsubiw,
20632031 &feature_mul,
2064 &feature_avr0,
2065 &feature_lpm,
20662032 &feature_break,
2067 &feature_spm,
2068 &feature_addsubiw,
2033 &feature_lpm,
2034 &feature_avr0,
2035 &feature_movw,
20692036 &feature_avr5,
20702037 },
20712038};
......@@ -2074,17 +2041,17 @@ pub const cpu_atmega3250a = Cpu{
20742041 .name = "atmega3250a",
20752042 .llvm_name = "atmega3250a",
20762043 .subfeatures = &[_]*const Feature {
2044 &feature_spm,
20772045 &feature_lpmx,
2078 &feature_jmpcall,
20792046 &feature_ijmpcall,
2080 &feature_movw,
2047 &feature_jmpcall,
20812048 &feature_sram,
2049 &feature_addsubiw,
20822050 &feature_mul,
2083 &feature_avr0,
2084 &feature_lpm,
20852051 &feature_break,
2086 &feature_spm,
2087 &feature_addsubiw,
2052 &feature_lpm,
2053 &feature_avr0,
2054 &feature_movw,
20882055 &feature_avr5,
20892056 },
20902057};
......@@ -2093,17 +2060,17 @@ pub const cpu_atmega3250p = Cpu{
20932060 .name = "atmega3250p",
20942061 .llvm_name = "atmega3250p",
20952062 .subfeatures = &[_]*const Feature {
2063 &feature_spm,
20962064 &feature_lpmx,
2097 &feature_jmpcall,
20982065 &feature_ijmpcall,
2099 &feature_movw,
2066 &feature_jmpcall,
21002067 &feature_sram,
2068 &feature_addsubiw,
21012069 &feature_mul,
2102 &feature_avr0,
2103 &feature_lpm,
21042070 &feature_break,
2105 &feature_spm,
2106 &feature_addsubiw,
2071 &feature_lpm,
2072 &feature_avr0,
2073 &feature_movw,
21072074 &feature_avr5,
21082075 },
21092076};
......@@ -2112,17 +2079,17 @@ pub const cpu_atmega3250pa = Cpu{
21122079 .name = "atmega3250pa",
21132080 .llvm_name = "atmega3250pa",
21142081 .subfeatures = &[_]*const Feature {
2082 &feature_spm,
21152083 &feature_lpmx,
2116 &feature_jmpcall,
21172084 &feature_ijmpcall,
2118 &feature_movw,
2085 &feature_jmpcall,
21192086 &feature_sram,
2087 &feature_addsubiw,
21202088 &feature_mul,
2121 &feature_avr0,
2122 &feature_lpm,
21232089 &feature_break,
2124 &feature_spm,
2125 &feature_addsubiw,
2090 &feature_lpm,
2091 &feature_avr0,
2092 &feature_movw,
21262093 &feature_avr5,
21272094 },
21282095};
......@@ -2131,17 +2098,17 @@ pub const cpu_atmega325a = Cpu{
21312098 .name = "atmega325a",
21322099 .llvm_name = "atmega325a",
21332100 .subfeatures = &[_]*const Feature {
2101 &feature_spm,
21342102 &feature_lpmx,
2135 &feature_jmpcall,
21362103 &feature_ijmpcall,
2137 &feature_movw,
2104 &feature_jmpcall,
21382105 &feature_sram,
2106 &feature_addsubiw,
21392107 &feature_mul,
2140 &feature_avr0,
2141 &feature_lpm,
21422108 &feature_break,
2143 &feature_spm,
2144 &feature_addsubiw,
2109 &feature_lpm,
2110 &feature_avr0,
2111 &feature_movw,
21452112 &feature_avr5,
21462113 },
21472114};
......@@ -2150,17 +2117,17 @@ pub const cpu_atmega325p = Cpu{
21502117 .name = "atmega325p",
21512118 .llvm_name = "atmega325p",
21522119 .subfeatures = &[_]*const Feature {
2120 &feature_spm,
21532121 &feature_lpmx,
2154 &feature_jmpcall,
21552122 &feature_ijmpcall,
2156 &feature_movw,
2123 &feature_jmpcall,
21572124 &feature_sram,
2125 &feature_addsubiw,
21582126 &feature_mul,
2159 &feature_avr0,
2160 &feature_lpm,
21612127 &feature_break,
2162 &feature_spm,
2163 &feature_addsubiw,
2128 &feature_lpm,
2129 &feature_avr0,
2130 &feature_movw,
21642131 &feature_avr5,
21652132 },
21662133};
......@@ -2169,17 +2136,17 @@ pub const cpu_atmega325pa = Cpu{
21692136 .name = "atmega325pa",
21702137 .llvm_name = "atmega325pa",
21712138 .subfeatures = &[_]*const Feature {
2139 &feature_spm,
21722140 &feature_lpmx,
2173 &feature_jmpcall,
21742141 &feature_ijmpcall,
2175 &feature_movw,
2142 &feature_jmpcall,
21762143 &feature_sram,
2144 &feature_addsubiw,
21772145 &feature_mul,
2178 &feature_avr0,
2179 &feature_lpm,
21802146 &feature_break,
2181 &feature_spm,
2182 &feature_addsubiw,
2147 &feature_lpm,
2148 &feature_avr0,
2149 &feature_movw,
21832150 &feature_avr5,
21842151 },
21852152};
......@@ -2188,17 +2155,17 @@ pub const cpu_atmega328 = Cpu{
21882155 .name = "atmega328",
21892156 .llvm_name = "atmega328",
21902157 .subfeatures = &[_]*const Feature {
2158 &feature_spm,
21912159 &feature_lpmx,
2192 &feature_jmpcall,
21932160 &feature_ijmpcall,
2194 &feature_movw,
2161 &feature_jmpcall,
21952162 &feature_sram,
2163 &feature_addsubiw,
21962164 &feature_mul,
2197 &feature_avr0,
2198 &feature_lpm,
21992165 &feature_break,
2200 &feature_spm,
2201 &feature_addsubiw,
2166 &feature_lpm,
2167 &feature_avr0,
2168 &feature_movw,
22022169 &feature_avr5,
22032170 },
22042171};
......@@ -2207,17 +2174,17 @@ pub const cpu_atmega328p = Cpu{
22072174 .name = "atmega328p",
22082175 .llvm_name = "atmega328p",
22092176 .subfeatures = &[_]*const Feature {
2177 &feature_spm,
22102178 &feature_lpmx,
2211 &feature_jmpcall,
22122179 &feature_ijmpcall,
2213 &feature_movw,
2180 &feature_jmpcall,
22142181 &feature_sram,
2182 &feature_addsubiw,
22152183 &feature_mul,
2216 &feature_avr0,
2217 &feature_lpm,
22182184 &feature_break,
2219 &feature_spm,
2220 &feature_addsubiw,
2185 &feature_lpm,
2186 &feature_avr0,
2187 &feature_movw,
22212188 &feature_avr5,
22222189 },
22232190};
......@@ -2226,17 +2193,17 @@ pub const cpu_atmega329 = Cpu{
22262193 .name = "atmega329",
22272194 .llvm_name = "atmega329",
22282195 .subfeatures = &[_]*const Feature {
2196 &feature_spm,
22292197 &feature_lpmx,
2230 &feature_jmpcall,
22312198 &feature_ijmpcall,
2232 &feature_movw,
2199 &feature_jmpcall,
22332200 &feature_sram,
2201 &feature_addsubiw,
22342202 &feature_mul,
2235 &feature_avr0,
2236 &feature_lpm,
22372203 &feature_break,
2238 &feature_spm,
2239 &feature_addsubiw,
2204 &feature_lpm,
2205 &feature_avr0,
2206 &feature_movw,
22402207 &feature_avr5,
22412208 },
22422209};
......@@ -2245,17 +2212,17 @@ pub const cpu_atmega3290 = Cpu{
22452212 .name = "atmega3290",
22462213 .llvm_name = "atmega3290",
22472214 .subfeatures = &[_]*const Feature {
2215 &feature_spm,
22482216 &feature_lpmx,
2249 &feature_jmpcall,
22502217 &feature_ijmpcall,
2251 &feature_movw,
2218 &feature_jmpcall,
22522219 &feature_sram,
2220 &feature_addsubiw,
22532221 &feature_mul,
2254 &feature_avr0,
2255 &feature_lpm,
22562222 &feature_break,
2257 &feature_spm,
2258 &feature_addsubiw,
2223 &feature_lpm,
2224 &feature_avr0,
2225 &feature_movw,
22592226 &feature_avr5,
22602227 },
22612228};
......@@ -2264,17 +2231,17 @@ pub const cpu_atmega3290a = Cpu{
22642231 .name = "atmega3290a",
22652232 .llvm_name = "atmega3290a",
22662233 .subfeatures = &[_]*const Feature {
2234 &feature_spm,
22672235 &feature_lpmx,
2268 &feature_jmpcall,
22692236 &feature_ijmpcall,
2270 &feature_movw,
2237 &feature_jmpcall,
22712238 &feature_sram,
2239 &feature_addsubiw,
22722240 &feature_mul,
2273 &feature_avr0,
2274 &feature_lpm,
22752241 &feature_break,
2276 &feature_spm,
2277 &feature_addsubiw,
2242 &feature_lpm,
2243 &feature_avr0,
2244 &feature_movw,
22782245 &feature_avr5,
22792246 },
22802247};
......@@ -2283,17 +2250,17 @@ pub const cpu_atmega3290p = Cpu{
22832250 .name = "atmega3290p",
22842251 .llvm_name = "atmega3290p",
22852252 .subfeatures = &[_]*const Feature {
2253 &feature_spm,
22862254 &feature_lpmx,
2287 &feature_jmpcall,
22882255 &feature_ijmpcall,
2289 &feature_movw,
2256 &feature_jmpcall,
22902257 &feature_sram,
2258 &feature_addsubiw,
22912259 &feature_mul,
2292 &feature_avr0,
2293 &feature_lpm,
22942260 &feature_break,
2295 &feature_spm,
2296 &feature_addsubiw,
2261 &feature_lpm,
2262 &feature_avr0,
2263 &feature_movw,
22972264 &feature_avr5,
22982265 },
22992266};
......@@ -2302,17 +2269,17 @@ pub const cpu_atmega3290pa = Cpu{
23022269 .name = "atmega3290pa",
23032270 .llvm_name = "atmega3290pa",
23042271 .subfeatures = &[_]*const Feature {
2272 &feature_spm,
23052273 &feature_lpmx,
2306 &feature_jmpcall,
23072274 &feature_ijmpcall,
2308 &feature_movw,
2275 &feature_jmpcall,
23092276 &feature_sram,
2277 &feature_addsubiw,
23102278 &feature_mul,
2311 &feature_avr0,
2312 &feature_lpm,
23132279 &feature_break,
2314 &feature_spm,
2315 &feature_addsubiw,
2280 &feature_lpm,
2281 &feature_avr0,
2282 &feature_movw,
23162283 &feature_avr5,
23172284 },
23182285};
......@@ -2321,17 +2288,17 @@ pub const cpu_atmega329a = Cpu{
23212288 .name = "atmega329a",
23222289 .llvm_name = "atmega329a",
23232290 .subfeatures = &[_]*const Feature {
2291 &feature_spm,
23242292 &feature_lpmx,
2325 &feature_jmpcall,
23262293 &feature_ijmpcall,
2327 &feature_movw,
2294 &feature_jmpcall,
23282295 &feature_sram,
2296 &feature_addsubiw,
23292297 &feature_mul,
2330 &feature_avr0,
2331 &feature_lpm,
23322298 &feature_break,
2333 &feature_spm,
2334 &feature_addsubiw,
2299 &feature_lpm,
2300 &feature_avr0,
2301 &feature_movw,
23352302 &feature_avr5,
23362303 },
23372304};
......@@ -2340,17 +2307,17 @@ pub const cpu_atmega329p = Cpu{
23402307 .name = "atmega329p",
23412308 .llvm_name = "atmega329p",
23422309 .subfeatures = &[_]*const Feature {
2310 &feature_spm,
23432311 &feature_lpmx,
2344 &feature_jmpcall,
23452312 &feature_ijmpcall,
2346 &feature_movw,
2313 &feature_jmpcall,
23472314 &feature_sram,
2315 &feature_addsubiw,
23482316 &feature_mul,
2349 &feature_avr0,
2350 &feature_lpm,
23512317 &feature_break,
2352 &feature_spm,
2353 &feature_addsubiw,
2318 &feature_lpm,
2319 &feature_avr0,
2320 &feature_movw,
23542321 &feature_avr5,
23552322 },
23562323};
......@@ -2359,17 +2326,17 @@ pub const cpu_atmega329pa = Cpu{
23592326 .name = "atmega329pa",
23602327 .llvm_name = "atmega329pa",
23612328 .subfeatures = &[_]*const Feature {
2329 &feature_spm,
23622330 &feature_lpmx,
2363 &feature_jmpcall,
23642331 &feature_ijmpcall,
2365 &feature_movw,
2332 &feature_jmpcall,
23662333 &feature_sram,
2334 &feature_addsubiw,
23672335 &feature_mul,
2368 &feature_avr0,
2369 &feature_lpm,
23702336 &feature_break,
2371 &feature_spm,
2372 &feature_addsubiw,
2337 &feature_lpm,
2338 &feature_avr0,
2339 &feature_movw,
23732340 &feature_avr5,
23742341 },
23752342};
......@@ -2378,17 +2345,17 @@ pub const cpu_atmega32a = Cpu{
23782345 .name = "atmega32a",
23792346 .llvm_name = "atmega32a",
23802347 .subfeatures = &[_]*const Feature {
2348 &feature_spm,
23812349 &feature_lpmx,
2382 &feature_jmpcall,
23832350 &feature_ijmpcall,
2384 &feature_movw,
2351 &feature_jmpcall,
23852352 &feature_sram,
2353 &feature_addsubiw,
23862354 &feature_mul,
2387 &feature_avr0,
2388 &feature_lpm,
23892355 &feature_break,
2390 &feature_spm,
2391 &feature_addsubiw,
2356 &feature_lpm,
2357 &feature_avr0,
2358 &feature_movw,
23922359 &feature_avr5,
23932360 },
23942361};
......@@ -2397,17 +2364,17 @@ pub const cpu_atmega32c1 = Cpu{
23972364 .name = "atmega32c1",
23982365 .llvm_name = "atmega32c1",
23992366 .subfeatures = &[_]*const Feature {
2367 &feature_spm,
24002368 &feature_lpmx,
2401 &feature_jmpcall,
24022369 &feature_ijmpcall,
2403 &feature_movw,
2370 &feature_jmpcall,
24042371 &feature_sram,
2372 &feature_addsubiw,
24052373 &feature_mul,
2406 &feature_avr0,
2407 &feature_lpm,
24082374 &feature_break,
2409 &feature_spm,
2410 &feature_addsubiw,
2375 &feature_lpm,
2376 &feature_avr0,
2377 &feature_movw,
24112378 &feature_avr5,
24122379 },
24132380};
......@@ -2416,17 +2383,17 @@ pub const cpu_atmega32hvb = Cpu{
24162383 .name = "atmega32hvb",
24172384 .llvm_name = "atmega32hvb",
24182385 .subfeatures = &[_]*const Feature {
2386 &feature_spm,
24192387 &feature_lpmx,
2420 &feature_jmpcall,
24212388 &feature_ijmpcall,
2422 &feature_movw,
2389 &feature_jmpcall,
24232390 &feature_sram,
2391 &feature_addsubiw,
24242392 &feature_mul,
2425 &feature_avr0,
2426 &feature_lpm,
24272393 &feature_break,
2428 &feature_spm,
2429 &feature_addsubiw,
2394 &feature_lpm,
2395 &feature_avr0,
2396 &feature_movw,
24302397 &feature_avr5,
24312398 },
24322399};
......@@ -2435,17 +2402,17 @@ pub const cpu_atmega32hvbrevb = Cpu{
24352402 .name = "atmega32hvbrevb",
24362403 .llvm_name = "atmega32hvbrevb",
24372404 .subfeatures = &[_]*const Feature {
2405 &feature_spm,
24382406 &feature_lpmx,
2439 &feature_jmpcall,
24402407 &feature_ijmpcall,
2441 &feature_movw,
2408 &feature_jmpcall,
24422409 &feature_sram,
2410 &feature_addsubiw,
24432411 &feature_mul,
2444 &feature_avr0,
2445 &feature_lpm,
24462412 &feature_break,
2447 &feature_spm,
2448 &feature_addsubiw,
2413 &feature_lpm,
2414 &feature_avr0,
2415 &feature_movw,
24492416 &feature_avr5,
24502417 },
24512418};
......@@ -2454,17 +2421,17 @@ pub const cpu_atmega32m1 = Cpu{
24542421 .name = "atmega32m1",
24552422 .llvm_name = "atmega32m1",
24562423 .subfeatures = &[_]*const Feature {
2424 &feature_spm,
24572425 &feature_lpmx,
2458 &feature_jmpcall,
24592426 &feature_ijmpcall,
2460 &feature_movw,
2427 &feature_jmpcall,
24612428 &feature_sram,
2429 &feature_addsubiw,
24622430 &feature_mul,
2463 &feature_avr0,
2464 &feature_lpm,
24652431 &feature_break,
2466 &feature_spm,
2467 &feature_addsubiw,
2432 &feature_lpm,
2433 &feature_avr0,
2434 &feature_movw,
24682435 &feature_avr5,
24692436 },
24702437};
......@@ -2473,16 +2440,16 @@ pub const cpu_atmega32u2 = Cpu{
24732440 .name = "atmega32u2",
24742441 .llvm_name = "atmega32u2",
24752442 .subfeatures = &[_]*const Feature {
2443 &feature_spm,
24762444 &feature_lpmx,
2477 &feature_jmpcall,
24782445 &feature_ijmpcall,
2479 &feature_movw,
2446 &feature_jmpcall,
24802447 &feature_sram,
2481 &feature_avr0,
2482 &feature_lpm,
2483 &feature_break,
2484 &feature_spm,
24852448 &feature_addsubiw,
2449 &feature_break,
2450 &feature_lpm,
2451 &feature_avr0,
2452 &feature_movw,
24862453 &feature_avr35,
24872454 },
24882455};
......@@ -2491,17 +2458,17 @@ pub const cpu_atmega32u4 = Cpu{
24912458 .name = "atmega32u4",
24922459 .llvm_name = "atmega32u4",
24932460 .subfeatures = &[_]*const Feature {
2461 &feature_spm,
24942462 &feature_lpmx,
2495 &feature_jmpcall,
24962463 &feature_ijmpcall,
2497 &feature_movw,
2464 &feature_jmpcall,
24982465 &feature_sram,
2466 &feature_addsubiw,
24992467 &feature_mul,
2500 &feature_avr0,
2501 &feature_lpm,
25022468 &feature_break,
2503 &feature_spm,
2504 &feature_addsubiw,
2469 &feature_lpm,
2470 &feature_avr0,
2471 &feature_movw,
25052472 &feature_avr5,
25062473 },
25072474};
......@@ -2510,17 +2477,17 @@ pub const cpu_atmega32u6 = Cpu{
25102477 .name = "atmega32u6",
25112478 .llvm_name = "atmega32u6",
25122479 .subfeatures = &[_]*const Feature {
2480 &feature_spm,
25132481 &feature_lpmx,
2514 &feature_jmpcall,
25152482 &feature_ijmpcall,
2516 &feature_movw,
2483 &feature_jmpcall,
25172484 &feature_sram,
2485 &feature_addsubiw,
25182486 &feature_mul,
2519 &feature_avr0,
2520 &feature_lpm,
25212487 &feature_break,
2522 &feature_spm,
2523 &feature_addsubiw,
2488 &feature_lpm,
2489 &feature_avr0,
2490 &feature_movw,
25242491 &feature_avr5,
25252492 },
25262493};
......@@ -2529,17 +2496,17 @@ pub const cpu_atmega406 = Cpu{
25292496 .name = "atmega406",
25302497 .llvm_name = "atmega406",
25312498 .subfeatures = &[_]*const Feature {
2499 &feature_spm,
25322500 &feature_lpmx,
2533 &feature_jmpcall,
25342501 &feature_ijmpcall,
2535 &feature_movw,
2502 &feature_jmpcall,
25362503 &feature_sram,
2504 &feature_addsubiw,
25372505 &feature_mul,
2538 &feature_avr0,
2539 &feature_lpm,
25402506 &feature_break,
2541 &feature_spm,
2542 &feature_addsubiw,
2507 &feature_lpm,
2508 &feature_avr0,
2509 &feature_movw,
25432510 &feature_avr5,
25442511 },
25452512};
......@@ -2548,16 +2515,16 @@ pub const cpu_atmega48 = Cpu{
25482515 .name = "atmega48",
25492516 .llvm_name = "atmega48",
25502517 .subfeatures = &[_]*const Feature {
2518 &feature_spm,
25512519 &feature_lpmx,
25522520 &feature_ijmpcall,
2553 &feature_movw,
25542521 &feature_sram,
2522 &feature_addsubiw,
25552523 &feature_mul,
2556 &feature_avr0,
2557 &feature_lpm,
25582524 &feature_break,
2559 &feature_spm,
2560 &feature_addsubiw,
2525 &feature_lpm,
2526 &feature_avr0,
2527 &feature_movw,
25612528 &feature_avr4,
25622529 },
25632530};
......@@ -2566,16 +2533,16 @@ pub const cpu_atmega48a = Cpu{
25662533 .name = "atmega48a",
25672534 .llvm_name = "atmega48a",
25682535 .subfeatures = &[_]*const Feature {
2536 &feature_spm,
25692537 &feature_lpmx,
25702538 &feature_ijmpcall,
2571 &feature_movw,
25722539 &feature_sram,
2540 &feature_addsubiw,
25732541 &feature_mul,
2574 &feature_avr0,
2575 &feature_lpm,
25762542 &feature_break,
2577 &feature_spm,
2578 &feature_addsubiw,
2543 &feature_lpm,
2544 &feature_avr0,
2545 &feature_movw,
25792546 &feature_avr4,
25802547 },
25812548};
......@@ -2584,16 +2551,16 @@ pub const cpu_atmega48p = Cpu{
25842551 .name = "atmega48p",
25852552 .llvm_name = "atmega48p",
25862553 .subfeatures = &[_]*const Feature {
2554 &feature_spm,
25872555 &feature_lpmx,
25882556 &feature_ijmpcall,
2589 &feature_movw,
25902557 &feature_sram,
2558 &feature_addsubiw,
25912559 &feature_mul,
2592 &feature_avr0,
2593 &feature_lpm,
25942560 &feature_break,
2595 &feature_spm,
2596 &feature_addsubiw,
2561 &feature_lpm,
2562 &feature_avr0,
2563 &feature_movw,
25972564 &feature_avr4,
25982565 },
25992566};
......@@ -2602,16 +2569,16 @@ pub const cpu_atmega48pa = Cpu{
26022569 .name = "atmega48pa",
26032570 .llvm_name = "atmega48pa",
26042571 .subfeatures = &[_]*const Feature {
2572 &feature_spm,
26052573 &feature_lpmx,
26062574 &feature_ijmpcall,
2607 &feature_movw,
26082575 &feature_sram,
2576 &feature_addsubiw,
26092577 &feature_mul,
2610 &feature_avr0,
2611 &feature_lpm,
26122578 &feature_break,
2613 &feature_spm,
2614 &feature_addsubiw,
2579 &feature_lpm,
2580 &feature_avr0,
2581 &feature_movw,
26152582 &feature_avr4,
26162583 },
26172584};
......@@ -2620,17 +2587,17 @@ pub const cpu_atmega64 = Cpu{
26202587 .name = "atmega64",
26212588 .llvm_name = "atmega64",
26222589 .subfeatures = &[_]*const Feature {
2590 &feature_spm,
26232591 &feature_lpmx,
2624 &feature_jmpcall,
26252592 &feature_ijmpcall,
2626 &feature_movw,
2593 &feature_jmpcall,
26272594 &feature_sram,
2595 &feature_addsubiw,
26282596 &feature_mul,
2629 &feature_avr0,
2630 &feature_lpm,
26312597 &feature_break,
2632 &feature_spm,
2633 &feature_addsubiw,
2598 &feature_lpm,
2599 &feature_avr0,
2600 &feature_movw,
26342601 &feature_avr5,
26352602 },
26362603};
......@@ -2639,17 +2606,17 @@ pub const cpu_atmega640 = Cpu{
26392606 .name = "atmega640",
26402607 .llvm_name = "atmega640",
26412608 .subfeatures = &[_]*const Feature {
2609 &feature_spm,
26422610 &feature_lpmx,
2643 &feature_jmpcall,
26442611 &feature_ijmpcall,
2645 &feature_movw,
2612 &feature_jmpcall,
26462613 &feature_sram,
2614 &feature_addsubiw,
26472615 &feature_mul,
2648 &feature_avr0,
2649 &feature_lpm,
26502616 &feature_break,
2651 &feature_spm,
2652 &feature_addsubiw,
2617 &feature_lpm,
2618 &feature_avr0,
2619 &feature_movw,
26532620 &feature_avr5,
26542621 },
26552622};
......@@ -2658,17 +2625,17 @@ pub const cpu_atmega644 = Cpu{
26582625 .name = "atmega644",
26592626 .llvm_name = "atmega644",
26602627 .subfeatures = &[_]*const Feature {
2628 &feature_spm,
26612629 &feature_lpmx,
2662 &feature_jmpcall,
26632630 &feature_ijmpcall,
2664 &feature_movw,
2631 &feature_jmpcall,
26652632 &feature_sram,
2633 &feature_addsubiw,
26662634 &feature_mul,
2667 &feature_avr0,
2668 &feature_lpm,
26692635 &feature_break,
2670 &feature_spm,
2671 &feature_addsubiw,
2636 &feature_lpm,
2637 &feature_avr0,
2638 &feature_movw,
26722639 &feature_avr5,
26732640 },
26742641};
......@@ -2677,17 +2644,17 @@ pub const cpu_atmega644a = Cpu{
26772644 .name = "atmega644a",
26782645 .llvm_name = "atmega644a",
26792646 .subfeatures = &[_]*const Feature {
2647 &feature_spm,
26802648 &feature_lpmx,
2681 &feature_jmpcall,
26822649 &feature_ijmpcall,
2683 &feature_movw,
2650 &feature_jmpcall,
26842651 &feature_sram,
2652 &feature_addsubiw,
26852653 &feature_mul,
2686 &feature_avr0,
2687 &feature_lpm,
26882654 &feature_break,
2689 &feature_spm,
2690 &feature_addsubiw,
2655 &feature_lpm,
2656 &feature_avr0,
2657 &feature_movw,
26912658 &feature_avr5,
26922659 },
26932660};
......@@ -2696,17 +2663,17 @@ pub const cpu_atmega644p = Cpu{
26962663 .name = "atmega644p",
26972664 .llvm_name = "atmega644p",
26982665 .subfeatures = &[_]*const Feature {
2666 &feature_spm,
26992667 &feature_lpmx,
2700 &feature_jmpcall,
27012668 &feature_ijmpcall,
2702 &feature_movw,
2669 &feature_jmpcall,
27032670 &feature_sram,
2671 &feature_addsubiw,
27042672 &feature_mul,
2705 &feature_avr0,
2706 &feature_lpm,
27072673 &feature_break,
2708 &feature_spm,
2709 &feature_addsubiw,
2674 &feature_lpm,
2675 &feature_avr0,
2676 &feature_movw,
27102677 &feature_avr5,
27112678 },
27122679};
......@@ -2715,17 +2682,17 @@ pub const cpu_atmega644pa = Cpu{
27152682 .name = "atmega644pa",
27162683 .llvm_name = "atmega644pa",
27172684 .subfeatures = &[_]*const Feature {
2685 &feature_spm,
27182686 &feature_lpmx,
2719 &feature_jmpcall,
27202687 &feature_ijmpcall,
2721 &feature_movw,
2688 &feature_jmpcall,
27222689 &feature_sram,
2690 &feature_addsubiw,
27232691 &feature_mul,
2724 &feature_avr0,
2725 &feature_lpm,
27262692 &feature_break,
2727 &feature_spm,
2728 &feature_addsubiw,
2693 &feature_lpm,
2694 &feature_avr0,
2695 &feature_movw,
27292696 &feature_avr5,
27302697 },
27312698};
......@@ -2734,17 +2701,17 @@ pub const cpu_atmega644rfr2 = Cpu{
27342701 .name = "atmega644rfr2",
27352702 .llvm_name = "atmega644rfr2",
27362703 .subfeatures = &[_]*const Feature {
2704 &feature_spm,
27372705 &feature_lpmx,
2738 &feature_jmpcall,
27392706 &feature_ijmpcall,
2740 &feature_movw,
2707 &feature_jmpcall,
27412708 &feature_sram,
2709 &feature_addsubiw,
27422710 &feature_mul,
2743 &feature_avr0,
2744 &feature_lpm,
27452711 &feature_break,
2746 &feature_spm,
2747 &feature_addsubiw,
2712 &feature_lpm,
2713 &feature_avr0,
2714 &feature_movw,
27482715 &feature_avr5,
27492716 },
27502717};
......@@ -2753,17 +2720,17 @@ pub const cpu_atmega645 = Cpu{
27532720 .name = "atmega645",
27542721 .llvm_name = "atmega645",
27552722 .subfeatures = &[_]*const Feature {
2723 &feature_spm,
27562724 &feature_lpmx,
2757 &feature_jmpcall,
27582725 &feature_ijmpcall,
2759 &feature_movw,
2726 &feature_jmpcall,
27602727 &feature_sram,
2728 &feature_addsubiw,
27612729 &feature_mul,
2762 &feature_avr0,
2763 &feature_lpm,
27642730 &feature_break,
2765 &feature_spm,
2766 &feature_addsubiw,
2731 &feature_lpm,
2732 &feature_avr0,
2733 &feature_movw,
27672734 &feature_avr5,
27682735 },
27692736};
......@@ -2772,17 +2739,17 @@ pub const cpu_atmega6450 = Cpu{
27722739 .name = "atmega6450",
27732740 .llvm_name = "atmega6450",
27742741 .subfeatures = &[_]*const Feature {
2742 &feature_spm,
27752743 &feature_lpmx,
2776 &feature_jmpcall,
27772744 &feature_ijmpcall,
2778 &feature_movw,
2745 &feature_jmpcall,
27792746 &feature_sram,
2747 &feature_addsubiw,
27802748 &feature_mul,
2781 &feature_avr0,
2782 &feature_lpm,
27832749 &feature_break,
2784 &feature_spm,
2785 &feature_addsubiw,
2750 &feature_lpm,
2751 &feature_avr0,
2752 &feature_movw,
27862753 &feature_avr5,
27872754 },
27882755};
......@@ -2791,17 +2758,17 @@ pub const cpu_atmega6450a = Cpu{
27912758 .name = "atmega6450a",
27922759 .llvm_name = "atmega6450a",
27932760 .subfeatures = &[_]*const Feature {
2761 &feature_spm,
27942762 &feature_lpmx,
2795 &feature_jmpcall,
27962763 &feature_ijmpcall,
2797 &feature_movw,
2764 &feature_jmpcall,
27982765 &feature_sram,
2766 &feature_addsubiw,
27992767 &feature_mul,
2800 &feature_avr0,
2801 &feature_lpm,
28022768 &feature_break,
2803 &feature_spm,
2804 &feature_addsubiw,
2769 &feature_lpm,
2770 &feature_avr0,
2771 &feature_movw,
28052772 &feature_avr5,
28062773 },
28072774};
......@@ -2810,17 +2777,17 @@ pub const cpu_atmega6450p = Cpu{
28102777 .name = "atmega6450p",
28112778 .llvm_name = "atmega6450p",
28122779 .subfeatures = &[_]*const Feature {
2780 &feature_spm,
28132781 &feature_lpmx,
2814 &feature_jmpcall,
28152782 &feature_ijmpcall,
2816 &feature_movw,
2783 &feature_jmpcall,
28172784 &feature_sram,
2785 &feature_addsubiw,
28182786 &feature_mul,
2819 &feature_avr0,
2820 &feature_lpm,
28212787 &feature_break,
2822 &feature_spm,
2823 &feature_addsubiw,
2788 &feature_lpm,
2789 &feature_avr0,
2790 &feature_movw,
28242791 &feature_avr5,
28252792 },
28262793};
......@@ -2829,17 +2796,17 @@ pub const cpu_atmega645a = Cpu{
28292796 .name = "atmega645a",
28302797 .llvm_name = "atmega645a",
28312798 .subfeatures = &[_]*const Feature {
2799 &feature_spm,
28322800 &feature_lpmx,
2833 &feature_jmpcall,
28342801 &feature_ijmpcall,
2835 &feature_movw,
2802 &feature_jmpcall,
28362803 &feature_sram,
2804 &feature_addsubiw,
28372805 &feature_mul,
2838 &feature_avr0,
2839 &feature_lpm,
28402806 &feature_break,
2841 &feature_spm,
2842 &feature_addsubiw,
2807 &feature_lpm,
2808 &feature_avr0,
2809 &feature_movw,
28432810 &feature_avr5,
28442811 },
28452812};
......@@ -2848,17 +2815,17 @@ pub const cpu_atmega645p = Cpu{
28482815 .name = "atmega645p",
28492816 .llvm_name = "atmega645p",
28502817 .subfeatures = &[_]*const Feature {
2818 &feature_spm,
28512819 &feature_lpmx,
2852 &feature_jmpcall,
28532820 &feature_ijmpcall,
2854 &feature_movw,
2821 &feature_jmpcall,
28552822 &feature_sram,
2823 &feature_addsubiw,
28562824 &feature_mul,
2857 &feature_avr0,
2858 &feature_lpm,
28592825 &feature_break,
2860 &feature_spm,
2861 &feature_addsubiw,
2826 &feature_lpm,
2827 &feature_avr0,
2828 &feature_movw,
28622829 &feature_avr5,
28632830 },
28642831};
......@@ -2867,17 +2834,17 @@ pub const cpu_atmega649 = Cpu{
28672834 .name = "atmega649",
28682835 .llvm_name = "atmega649",
28692836 .subfeatures = &[_]*const Feature {
2837 &feature_spm,
28702838 &feature_lpmx,
2871 &feature_jmpcall,
28722839 &feature_ijmpcall,
2873 &feature_movw,
2840 &feature_jmpcall,
28742841 &feature_sram,
2842 &feature_addsubiw,
28752843 &feature_mul,
2876 &feature_avr0,
2877 &feature_lpm,
28782844 &feature_break,
2879 &feature_spm,
2880 &feature_addsubiw,
2845 &feature_lpm,
2846 &feature_avr0,
2847 &feature_movw,
28812848 &feature_avr5,
28822849 },
28832850};
......@@ -2886,17 +2853,17 @@ pub const cpu_atmega6490 = Cpu{
28862853 .name = "atmega6490",
28872854 .llvm_name = "atmega6490",
28882855 .subfeatures = &[_]*const Feature {
2856 &feature_spm,
28892857 &feature_lpmx,
2890 &feature_jmpcall,
28912858 &feature_ijmpcall,
2892 &feature_movw,
2859 &feature_jmpcall,
28932860 &feature_sram,
2861 &feature_addsubiw,
28942862 &feature_mul,
2895 &feature_avr0,
2896 &feature_lpm,
28972863 &feature_break,
2898 &feature_spm,
2899 &feature_addsubiw,
2864 &feature_lpm,
2865 &feature_avr0,
2866 &feature_movw,
29002867 &feature_avr5,
29012868 },
29022869};
......@@ -2905,17 +2872,17 @@ pub const cpu_atmega6490a = Cpu{
29052872 .name = "atmega6490a",
29062873 .llvm_name = "atmega6490a",
29072874 .subfeatures = &[_]*const Feature {
2875 &feature_spm,
29082876 &feature_lpmx,
2909 &feature_jmpcall,
29102877 &feature_ijmpcall,
2911 &feature_movw,
2878 &feature_jmpcall,
29122879 &feature_sram,
2880 &feature_addsubiw,
29132881 &feature_mul,
2914 &feature_avr0,
2915 &feature_lpm,
29162882 &feature_break,
2917 &feature_spm,
2918 &feature_addsubiw,
2883 &feature_lpm,
2884 &feature_avr0,
2885 &feature_movw,
29192886 &feature_avr5,
29202887 },
29212888};
......@@ -2924,17 +2891,17 @@ pub const cpu_atmega6490p = Cpu{
29242891 .name = "atmega6490p",
29252892 .llvm_name = "atmega6490p",
29262893 .subfeatures = &[_]*const Feature {
2894 &feature_spm,
29272895 &feature_lpmx,
2928 &feature_jmpcall,
29292896 &feature_ijmpcall,
2930 &feature_movw,
2897 &feature_jmpcall,
29312898 &feature_sram,
2899 &feature_addsubiw,
29322900 &feature_mul,
2933 &feature_avr0,
2934 &feature_lpm,
29352901 &feature_break,
2936 &feature_spm,
2937 &feature_addsubiw,
2902 &feature_lpm,
2903 &feature_avr0,
2904 &feature_movw,
29382905 &feature_avr5,
29392906 },
29402907};
......@@ -2943,17 +2910,17 @@ pub const cpu_atmega649a = Cpu{
29432910 .name = "atmega649a",
29442911 .llvm_name = "atmega649a",
29452912 .subfeatures = &[_]*const Feature {
2913 &feature_spm,
29462914 &feature_lpmx,
2947 &feature_jmpcall,
29482915 &feature_ijmpcall,
2949 &feature_movw,
2916 &feature_jmpcall,
29502917 &feature_sram,
2918 &feature_addsubiw,
29512919 &feature_mul,
2952 &feature_avr0,
2953 &feature_lpm,
29542920 &feature_break,
2955 &feature_spm,
2956 &feature_addsubiw,
2921 &feature_lpm,
2922 &feature_avr0,
2923 &feature_movw,
29572924 &feature_avr5,
29582925 },
29592926};
......@@ -2962,17 +2929,17 @@ pub const cpu_atmega649p = Cpu{
29622929 .name = "atmega649p",
29632930 .llvm_name = "atmega649p",
29642931 .subfeatures = &[_]*const Feature {
2932 &feature_spm,
29652933 &feature_lpmx,
2966 &feature_jmpcall,
29672934 &feature_ijmpcall,
2968 &feature_movw,
2935 &feature_jmpcall,
29692936 &feature_sram,
2937 &feature_addsubiw,
29702938 &feature_mul,
2971 &feature_avr0,
2972 &feature_lpm,
29732939 &feature_break,
2974 &feature_spm,
2975 &feature_addsubiw,
2940 &feature_lpm,
2941 &feature_avr0,
2942 &feature_movw,
29762943 &feature_avr5,
29772944 },
29782945};
......@@ -2981,17 +2948,17 @@ pub const cpu_atmega64a = Cpu{
29812948 .name = "atmega64a",
29822949 .llvm_name = "atmega64a",
29832950 .subfeatures = &[_]*const Feature {
2951 &feature_spm,
29842952 &feature_lpmx,
2985 &feature_jmpcall,
29862953 &feature_ijmpcall,
2987 &feature_movw,
2954 &feature_jmpcall,
29882955 &feature_sram,
2956 &feature_addsubiw,
29892957 &feature_mul,
2990 &feature_avr0,
2991 &feature_lpm,
29922958 &feature_break,
2993 &feature_spm,
2994 &feature_addsubiw,
2959 &feature_lpm,
2960 &feature_avr0,
2961 &feature_movw,
29952962 &feature_avr5,
29962963 },
29972964};
......@@ -3000,17 +2967,17 @@ pub const cpu_atmega64c1 = Cpu{
30002967 .name = "atmega64c1",
30012968 .llvm_name = "atmega64c1",
30022969 .subfeatures = &[_]*const Feature {
2970 &feature_spm,
30032971 &feature_lpmx,
3004 &feature_jmpcall,
30052972 &feature_ijmpcall,
3006 &feature_movw,
2973 &feature_jmpcall,
30072974 &feature_sram,
2975 &feature_addsubiw,
30082976 &feature_mul,
3009 &feature_avr0,
3010 &feature_lpm,
30112977 &feature_break,
3012 &feature_spm,
3013 &feature_addsubiw,
2978 &feature_lpm,
2979 &feature_avr0,
2980 &feature_movw,
30142981 &feature_avr5,
30152982 },
30162983};
......@@ -3019,17 +2986,17 @@ pub const cpu_atmega64hve = Cpu{
30192986 .name = "atmega64hve",
30202987 .llvm_name = "atmega64hve",
30212988 .subfeatures = &[_]*const Feature {
2989 &feature_spm,
30222990 &feature_lpmx,
3023 &feature_jmpcall,
30242991 &feature_ijmpcall,
3025 &feature_movw,
2992 &feature_jmpcall,
30262993 &feature_sram,
2994 &feature_addsubiw,
30272995 &feature_mul,
3028 &feature_avr0,
3029 &feature_lpm,
30302996 &feature_break,
3031 &feature_spm,
3032 &feature_addsubiw,
2997 &feature_lpm,
2998 &feature_avr0,
2999 &feature_movw,
30333000 &feature_avr5,
30343001 },
30353002};
......@@ -3038,17 +3005,17 @@ pub const cpu_atmega64m1 = Cpu{
30383005 .name = "atmega64m1",
30393006 .llvm_name = "atmega64m1",
30403007 .subfeatures = &[_]*const Feature {
3008 &feature_spm,
30413009 &feature_lpmx,
3042 &feature_jmpcall,
30433010 &feature_ijmpcall,
3044 &feature_movw,
3011 &feature_jmpcall,
30453012 &feature_sram,
3013 &feature_addsubiw,
30463014 &feature_mul,
3047 &feature_avr0,
3048 &feature_lpm,
30493015 &feature_break,
3050 &feature_spm,
3051 &feature_addsubiw,
3016 &feature_lpm,
3017 &feature_avr0,
3018 &feature_movw,
30523019 &feature_avr5,
30533020 },
30543021};
......@@ -3057,17 +3024,17 @@ pub const cpu_atmega64rfr2 = Cpu{
30573024 .name = "atmega64rfr2",
30583025 .llvm_name = "atmega64rfr2",
30593026 .subfeatures = &[_]*const Feature {
3027 &feature_spm,
30603028 &feature_lpmx,
3061 &feature_jmpcall,
30623029 &feature_ijmpcall,
3063 &feature_movw,
3030 &feature_jmpcall,
30643031 &feature_sram,
3032 &feature_addsubiw,
30653033 &feature_mul,
3066 &feature_avr0,
3067 &feature_lpm,
30683034 &feature_break,
3069 &feature_spm,
3070 &feature_addsubiw,
3035 &feature_lpm,
3036 &feature_avr0,
3037 &feature_movw,
30713038 &feature_avr5,
30723039 },
30733040};
......@@ -3076,16 +3043,16 @@ pub const cpu_atmega8 = Cpu{
30763043 .name = "atmega8",
30773044 .llvm_name = "atmega8",
30783045 .subfeatures = &[_]*const Feature {
3046 &feature_spm,
30793047 &feature_lpmx,
30803048 &feature_ijmpcall,
3081 &feature_movw,
30823049 &feature_sram,
3050 &feature_addsubiw,
30833051 &feature_mul,
3084 &feature_avr0,
3085 &feature_lpm,
30863052 &feature_break,
3087 &feature_spm,
3088 &feature_addsubiw,
3053 &feature_lpm,
3054 &feature_avr0,
3055 &feature_movw,
30893056 &feature_avr4,
30903057 },
30913058};
......@@ -3096,9 +3063,9 @@ pub const cpu_atmega8515 = Cpu{
30963063 .subfeatures = &[_]*const Feature {
30973064 &feature_ijmpcall,
30983065 &feature_sram,
3099 &feature_avr0,
3100 &feature_lpm,
31013066 &feature_addsubiw,
3067 &feature_lpm,
3068 &feature_avr0,
31023069 &feature_avr2,
31033070 &feature_lpmx,
31043071 &feature_movw,
......@@ -3113,9 +3080,9 @@ pub const cpu_atmega8535 = Cpu{
31133080 .subfeatures = &[_]*const Feature {
31143081 &feature_ijmpcall,
31153082 &feature_sram,
3116 &feature_avr0,
3117 &feature_lpm,
31183083 &feature_addsubiw,
3084 &feature_lpm,
3085 &feature_avr0,
31193086 &feature_avr2,
31203087 &feature_lpmx,
31213088 &feature_movw,
......@@ -3128,16 +3095,16 @@ pub const cpu_atmega88 = Cpu{
31283095 .name = "atmega88",
31293096 .llvm_name = "atmega88",
31303097 .subfeatures = &[_]*const Feature {
3098 &feature_spm,
31313099 &feature_lpmx,
31323100 &feature_ijmpcall,
3133 &feature_movw,
31343101 &feature_sram,
3102 &feature_addsubiw,
31353103 &feature_mul,
3136 &feature_avr0,
3137 &feature_lpm,
31383104 &feature_break,
3139 &feature_spm,
3140 &feature_addsubiw,
3105 &feature_lpm,
3106 &feature_avr0,
3107 &feature_movw,
31413108 &feature_avr4,
31423109 },
31433110};
......@@ -3146,16 +3113,16 @@ pub const cpu_atmega88a = Cpu{
31463113 .name = "atmega88a",
31473114 .llvm_name = "atmega88a",
31483115 .subfeatures = &[_]*const Feature {
3116 &feature_spm,
31493117 &feature_lpmx,
31503118 &feature_ijmpcall,
3151 &feature_movw,
31523119 &feature_sram,
3120 &feature_addsubiw,
31533121 &feature_mul,
3154 &feature_avr0,
3155 &feature_lpm,
31563122 &feature_break,
3157 &feature_spm,
3158 &feature_addsubiw,
3123 &feature_lpm,
3124 &feature_avr0,
3125 &feature_movw,
31593126 &feature_avr4,
31603127 },
31613128};
......@@ -3164,16 +3131,16 @@ pub const cpu_atmega88p = Cpu{
31643131 .name = "atmega88p",
31653132 .llvm_name = "atmega88p",
31663133 .subfeatures = &[_]*const Feature {
3134 &feature_spm,
31673135 &feature_lpmx,
31683136 &feature_ijmpcall,
3169 &feature_movw,
31703137 &feature_sram,
3138 &feature_addsubiw,
31713139 &feature_mul,
3172 &feature_avr0,
3173 &feature_lpm,
31743140 &feature_break,
3175 &feature_spm,
3176 &feature_addsubiw,
3141 &feature_lpm,
3142 &feature_avr0,
3143 &feature_movw,
31773144 &feature_avr4,
31783145 },
31793146};
......@@ -3182,16 +3149,16 @@ pub const cpu_atmega88pa = Cpu{
31823149 .name = "atmega88pa",
31833150 .llvm_name = "atmega88pa",
31843151 .subfeatures = &[_]*const Feature {
3152 &feature_spm,
31853153 &feature_lpmx,
31863154 &feature_ijmpcall,
3187 &feature_movw,
31883155 &feature_sram,
3156 &feature_addsubiw,
31893157 &feature_mul,
3190 &feature_avr0,
3191 &feature_lpm,
31923158 &feature_break,
3193 &feature_spm,
3194 &feature_addsubiw,
3159 &feature_lpm,
3160 &feature_avr0,
3161 &feature_movw,
31953162 &feature_avr4,
31963163 },
31973164};
......@@ -3200,16 +3167,16 @@ pub const cpu_atmega8a = Cpu{
32003167 .name = "atmega8a",
32013168 .llvm_name = "atmega8a",
32023169 .subfeatures = &[_]*const Feature {
3170 &feature_spm,
32033171 &feature_lpmx,
32043172 &feature_ijmpcall,
3205 &feature_movw,
32063173 &feature_sram,
3174 &feature_addsubiw,
32073175 &feature_mul,
3208 &feature_avr0,
3209 &feature_lpm,
32103176 &feature_break,
3211 &feature_spm,
3212 &feature_addsubiw,
3177 &feature_lpm,
3178 &feature_avr0,
3179 &feature_movw,
32133180 &feature_avr4,
32143181 },
32153182};
......@@ -3218,16 +3185,16 @@ pub const cpu_atmega8hva = Cpu{
32183185 .name = "atmega8hva",
32193186 .llvm_name = "atmega8hva",
32203187 .subfeatures = &[_]*const Feature {
3188 &feature_spm,
32213189 &feature_lpmx,
32223190 &feature_ijmpcall,
3223 &feature_movw,
32243191 &feature_sram,
3192 &feature_addsubiw,
32253193 &feature_mul,
3226 &feature_avr0,
3227 &feature_lpm,
32283194 &feature_break,
3229 &feature_spm,
3230 &feature_addsubiw,
3195 &feature_lpm,
3196 &feature_avr0,
3197 &feature_movw,
32313198 &feature_avr4,
32323199 },
32333200};
......@@ -3236,16 +3203,16 @@ pub const cpu_atmega8u2 = Cpu{
32363203 .name = "atmega8u2",
32373204 .llvm_name = "atmega8u2",
32383205 .subfeatures = &[_]*const Feature {
3206 &feature_spm,
32393207 &feature_lpmx,
3240 &feature_jmpcall,
32413208 &feature_ijmpcall,
3242 &feature_movw,
3209 &feature_jmpcall,
32433210 &feature_sram,
3244 &feature_avr0,
3245 &feature_lpm,
3246 &feature_break,
3247 &feature_spm,
32483211 &feature_addsubiw,
3212 &feature_break,
3213 &feature_lpm,
3214 &feature_avr0,
3215 &feature_movw,
32493216 &feature_avr35,
32503217 },
32513218};
......@@ -3254,10 +3221,10 @@ pub const cpu_attiny10 = Cpu{
32543221 .name = "attiny10",
32553222 .llvm_name = "attiny10",
32563223 .subfeatures = &[_]*const Feature {
3257 &feature_tinyencoding,
3224 &feature_avr0,
32583225 &feature_sram,
3226 &feature_tinyencoding,
32593227 &feature_break,
3260 &feature_avr0,
32613228 &feature_avrtiny,
32623229 },
32633230};
......@@ -3266,10 +3233,10 @@ pub const cpu_attiny102 = Cpu{
32663233 .name = "attiny102",
32673234 .llvm_name = "attiny102",
32683235 .subfeatures = &[_]*const Feature {
3269 &feature_tinyencoding,
3236 &feature_avr0,
32703237 &feature_sram,
3238 &feature_tinyencoding,
32713239 &feature_break,
3272 &feature_avr0,
32733240 &feature_avrtiny,
32743241 },
32753242};
......@@ -3278,10 +3245,10 @@ pub const cpu_attiny104 = Cpu{
32783245 .name = "attiny104",
32793246 .llvm_name = "attiny104",
32803247 .subfeatures = &[_]*const Feature {
3281 &feature_tinyencoding,
3248 &feature_avr0,
32823249 &feature_sram,
3250 &feature_tinyencoding,
32833251 &feature_break,
3284 &feature_avr0,
32853252 &feature_avrtiny,
32863253 },
32873254};
......@@ -3290,8 +3257,8 @@ pub const cpu_attiny11 = Cpu{
32903257 .name = "attiny11",
32913258 .llvm_name = "attiny11",
32923259 .subfeatures = &[_]*const Feature {
3293 &feature_avr0,
32943260 &feature_lpm,
3261 &feature_avr0,
32953262 &feature_avr1,
32963263 },
32973264};
......@@ -3300,8 +3267,8 @@ pub const cpu_attiny12 = Cpu{
33003267 .name = "attiny12",
33013268 .llvm_name = "attiny12",
33023269 .subfeatures = &[_]*const Feature {
3303 &feature_avr0,
33043270 &feature_lpm,
3271 &feature_avr0,
33053272 &feature_avr1,
33063273 },
33073274};
......@@ -3310,15 +3277,15 @@ pub const cpu_attiny13 = Cpu{
33103277 .name = "attiny13",
33113278 .llvm_name = "attiny13",
33123279 .subfeatures = &[_]*const Feature {
3280 &feature_spm,
33133281 &feature_lpmx,
33143282 &feature_ijmpcall,
3315 &feature_movw,
33163283 &feature_sram,
3317 &feature_avr0,
3318 &feature_lpm,
3319 &feature_break,
3320 &feature_spm,
33213284 &feature_addsubiw,
3285 &feature_break,
3286 &feature_lpm,
3287 &feature_avr0,
3288 &feature_movw,
33223289 &feature_avr25,
33233290 },
33243291};
......@@ -3327,15 +3294,15 @@ pub const cpu_attiny13a = Cpu{
33273294 .name = "attiny13a",
33283295 .llvm_name = "attiny13a",
33293296 .subfeatures = &[_]*const Feature {
3297 &feature_spm,
33303298 &feature_lpmx,
33313299 &feature_ijmpcall,
3332 &feature_movw,
33333300 &feature_sram,
3334 &feature_avr0,
3335 &feature_lpm,
3336 &feature_break,
3337 &feature_spm,
33383301 &feature_addsubiw,
3302 &feature_break,
3303 &feature_lpm,
3304 &feature_avr0,
3305 &feature_movw,
33393306 &feature_avr25,
33403307 },
33413308};
......@@ -3344,8 +3311,8 @@ pub const cpu_attiny15 = Cpu{
33443311 .name = "attiny15",
33453312 .llvm_name = "attiny15",
33463313 .subfeatures = &[_]*const Feature {
3347 &feature_avr0,
33483314 &feature_lpm,
3315 &feature_avr0,
33493316 &feature_avr1,
33503317 },
33513318};
......@@ -3354,16 +3321,16 @@ pub const cpu_attiny1634 = Cpu{
33543321 .name = "attiny1634",
33553322 .llvm_name = "attiny1634",
33563323 .subfeatures = &[_]*const Feature {
3324 &feature_spm,
33573325 &feature_lpmx,
3358 &feature_jmpcall,
33593326 &feature_ijmpcall,
3360 &feature_movw,
3327 &feature_jmpcall,
33613328 &feature_sram,
3362 &feature_avr0,
3363 &feature_lpm,
3364 &feature_break,
3365 &feature_spm,
33663329 &feature_addsubiw,
3330 &feature_break,
3331 &feature_lpm,
3332 &feature_avr0,
3333 &feature_movw,
33673334 &feature_avr35,
33683335 },
33693336};
......@@ -3372,16 +3339,16 @@ pub const cpu_attiny167 = Cpu{
33723339 .name = "attiny167",
33733340 .llvm_name = "attiny167",
33743341 .subfeatures = &[_]*const Feature {
3342 &feature_spm,
33753343 &feature_lpmx,
3376 &feature_jmpcall,
33773344 &feature_ijmpcall,
3378 &feature_movw,
3345 &feature_jmpcall,
33793346 &feature_sram,
3380 &feature_avr0,
3381 &feature_lpm,
3382 &feature_break,
3383 &feature_spm,
33843347 &feature_addsubiw,
3348 &feature_break,
3349 &feature_lpm,
3350 &feature_avr0,
3351 &feature_movw,
33853352 &feature_avr35,
33863353 },
33873354};
......@@ -3390,10 +3357,10 @@ pub const cpu_attiny20 = Cpu{
33903357 .name = "attiny20",
33913358 .llvm_name = "attiny20",
33923359 .subfeatures = &[_]*const Feature {
3393 &feature_tinyencoding,
3360 &feature_avr0,
33943361 &feature_sram,
3362 &feature_tinyencoding,
33953363 &feature_break,
3396 &feature_avr0,
33973364 &feature_avrtiny,
33983365 },
33993366};
......@@ -3404,9 +3371,9 @@ pub const cpu_attiny22 = Cpu{
34043371 .subfeatures = &[_]*const Feature {
34053372 &feature_ijmpcall,
34063373 &feature_sram,
3407 &feature_avr0,
3408 &feature_lpm,
34093374 &feature_addsubiw,
3375 &feature_lpm,
3376 &feature_avr0,
34103377 &feature_avr2,
34113378 },
34123379};
......@@ -3415,15 +3382,15 @@ pub const cpu_attiny2313 = Cpu{
34153382 .name = "attiny2313",
34163383 .llvm_name = "attiny2313",
34173384 .subfeatures = &[_]*const Feature {
3385 &feature_spm,
34183386 &feature_lpmx,
34193387 &feature_ijmpcall,
3420 &feature_movw,
34213388 &feature_sram,
3422 &feature_avr0,
3423 &feature_lpm,
3424 &feature_break,
3425 &feature_spm,
34263389 &feature_addsubiw,
3390 &feature_break,
3391 &feature_lpm,
3392 &feature_avr0,
3393 &feature_movw,
34273394 &feature_avr25,
34283395 },
34293396};
......@@ -3432,15 +3399,15 @@ pub const cpu_attiny2313a = Cpu{
34323399 .name = "attiny2313a",
34333400 .llvm_name = "attiny2313a",
34343401 .subfeatures = &[_]*const Feature {
3402 &feature_spm,
34353403 &feature_lpmx,
34363404 &feature_ijmpcall,
3437 &feature_movw,
34383405 &feature_sram,
3439 &feature_avr0,
3440 &feature_lpm,
3441 &feature_break,
3442 &feature_spm,
34433406 &feature_addsubiw,
3407 &feature_break,
3408 &feature_lpm,
3409 &feature_avr0,
3410 &feature_movw,
34443411 &feature_avr25,
34453412 },
34463413};
......@@ -3449,15 +3416,15 @@ pub const cpu_attiny24 = Cpu{
34493416 .name = "attiny24",
34503417 .llvm_name = "attiny24",
34513418 .subfeatures = &[_]*const Feature {
3419 &feature_spm,
34523420 &feature_lpmx,
34533421 &feature_ijmpcall,
3454 &feature_movw,
34553422 &feature_sram,
3456 &feature_avr0,
3457 &feature_lpm,
3458 &feature_break,
3459 &feature_spm,
34603423 &feature_addsubiw,
3424 &feature_break,
3425 &feature_lpm,
3426 &feature_avr0,
3427 &feature_movw,
34613428 &feature_avr25,
34623429 },
34633430};
......@@ -3466,15 +3433,15 @@ pub const cpu_attiny24a = Cpu{
34663433 .name = "attiny24a",
34673434 .llvm_name = "attiny24a",
34683435 .subfeatures = &[_]*const Feature {
3436 &feature_spm,
34693437 &feature_lpmx,
34703438 &feature_ijmpcall,
3471 &feature_movw,
34723439 &feature_sram,
3473 &feature_avr0,
3474 &feature_lpm,
3475 &feature_break,
3476 &feature_spm,
34773440 &feature_addsubiw,
3441 &feature_break,
3442 &feature_lpm,
3443 &feature_avr0,
3444 &feature_movw,
34783445 &feature_avr25,
34793446 },
34803447};
......@@ -3483,15 +3450,15 @@ pub const cpu_attiny25 = Cpu{
34833450 .name = "attiny25",
34843451 .llvm_name = "attiny25",
34853452 .subfeatures = &[_]*const Feature {
3453 &feature_spm,
34863454 &feature_lpmx,
34873455 &feature_ijmpcall,
3488 &feature_movw,
34893456 &feature_sram,
3490 &feature_avr0,
3491 &feature_lpm,
3492 &feature_break,
3493 &feature_spm,
34943457 &feature_addsubiw,
3458 &feature_break,
3459 &feature_lpm,
3460 &feature_avr0,
3461 &feature_movw,
34953462 &feature_avr25,
34963463 },
34973464};
......@@ -3502,9 +3469,9 @@ pub const cpu_attiny26 = Cpu{
35023469 .subfeatures = &[_]*const Feature {
35033470 &feature_ijmpcall,
35043471 &feature_sram,
3505 &feature_avr0,
3506 &feature_lpm,
35073472 &feature_addsubiw,
3473 &feature_lpm,
3474 &feature_avr0,
35083475 &feature_avr2,
35093476 &feature_lpmx,
35103477 },
......@@ -3514,15 +3481,15 @@ pub const cpu_attiny261 = Cpu{
35143481 .name = "attiny261",
35153482 .llvm_name = "attiny261",
35163483 .subfeatures = &[_]*const Feature {
3484 &feature_spm,
35173485 &feature_lpmx,
35183486 &feature_ijmpcall,
3519 &feature_movw,
35203487 &feature_sram,
3521 &feature_avr0,
3522 &feature_lpm,
3523 &feature_break,
3524 &feature_spm,
35253488 &feature_addsubiw,
3489 &feature_break,
3490 &feature_lpm,
3491 &feature_avr0,
3492 &feature_movw,
35263493 &feature_avr25,
35273494 },
35283495};
......@@ -3531,15 +3498,15 @@ pub const cpu_attiny261a = Cpu{
35313498 .name = "attiny261a",
35323499 .llvm_name = "attiny261a",
35333500 .subfeatures = &[_]*const Feature {
3501 &feature_spm,
35343502 &feature_lpmx,
35353503 &feature_ijmpcall,
3536 &feature_movw,
35373504 &feature_sram,
3538 &feature_avr0,
3539 &feature_lpm,
3540 &feature_break,
3541 &feature_spm,
35423505 &feature_addsubiw,
3506 &feature_break,
3507 &feature_lpm,
3508 &feature_avr0,
3509 &feature_movw,
35433510 &feature_avr25,
35443511 },
35453512};
......@@ -3548,8 +3515,8 @@ pub const cpu_attiny28 = Cpu{
35483515 .name = "attiny28",
35493516 .llvm_name = "attiny28",
35503517 .subfeatures = &[_]*const Feature {
3551 &feature_avr0,
35523518 &feature_lpm,
3519 &feature_avr0,
35533520 &feature_avr1,
35543521 },
35553522};
......@@ -3558,10 +3525,10 @@ pub const cpu_attiny4 = Cpu{
35583525 .name = "attiny4",
35593526 .llvm_name = "attiny4",
35603527 .subfeatures = &[_]*const Feature {
3561 &feature_tinyencoding,
3528 &feature_avr0,
35623529 &feature_sram,
3530 &feature_tinyencoding,
35633531 &feature_break,
3564 &feature_avr0,
35653532 &feature_avrtiny,
35663533 },
35673534};
......@@ -3570,10 +3537,10 @@ pub const cpu_attiny40 = Cpu{
35703537 .name = "attiny40",
35713538 .llvm_name = "attiny40",
35723539 .subfeatures = &[_]*const Feature {
3573 &feature_tinyencoding,
3540 &feature_avr0,
35743541 &feature_sram,
3542 &feature_tinyencoding,
35753543 &feature_break,
3576 &feature_avr0,
35773544 &feature_avrtiny,
35783545 },
35793546};
......@@ -3582,15 +3549,15 @@ pub const cpu_attiny4313 = Cpu{
35823549 .name = "attiny4313",
35833550 .llvm_name = "attiny4313",
35843551 .subfeatures = &[_]*const Feature {
3552 &feature_spm,
35853553 &feature_lpmx,
35863554 &feature_ijmpcall,
3587 &feature_movw,
35883555 &feature_sram,
3589 &feature_avr0,
3590 &feature_lpm,
3591 &feature_break,
3592 &feature_spm,
35933556 &feature_addsubiw,
3557 &feature_break,
3558 &feature_lpm,
3559 &feature_avr0,
3560 &feature_movw,
35943561 &feature_avr25,
35953562 },
35963563};
......@@ -3599,15 +3566,15 @@ pub const cpu_attiny43u = Cpu{
35993566 .name = "attiny43u",
36003567 .llvm_name = "attiny43u",
36013568 .subfeatures = &[_]*const Feature {
3569 &feature_spm,
36023570 &feature_lpmx,
36033571 &feature_ijmpcall,
3604 &feature_movw,
36053572 &feature_sram,
3606 &feature_avr0,
3607 &feature_lpm,
3608 &feature_break,
3609 &feature_spm,
36103573 &feature_addsubiw,
3574 &feature_break,
3575 &feature_lpm,
3576 &feature_avr0,
3577 &feature_movw,
36113578 &feature_avr25,
36123579 },
36133580};
......@@ -3616,15 +3583,15 @@ pub const cpu_attiny44 = Cpu{
36163583 .name = "attiny44",
36173584 .llvm_name = "attiny44",
36183585 .subfeatures = &[_]*const Feature {
3586 &feature_spm,
36193587 &feature_lpmx,
36203588 &feature_ijmpcall,
3621 &feature_movw,
36223589 &feature_sram,
3623 &feature_avr0,
3624 &feature_lpm,
3625 &feature_break,
3626 &feature_spm,
36273590 &feature_addsubiw,
3591 &feature_break,
3592 &feature_lpm,
3593 &feature_avr0,
3594 &feature_movw,
36283595 &feature_avr25,
36293596 },
36303597};
......@@ -3633,15 +3600,15 @@ pub const cpu_attiny44a = Cpu{
36333600 .name = "attiny44a",
36343601 .llvm_name = "attiny44a",
36353602 .subfeatures = &[_]*const Feature {
3603 &feature_spm,
36363604 &feature_lpmx,
36373605 &feature_ijmpcall,
3638 &feature_movw,
36393606 &feature_sram,
3640 &feature_avr0,
3641 &feature_lpm,
3642 &feature_break,
3643 &feature_spm,
36443607 &feature_addsubiw,
3608 &feature_break,
3609 &feature_lpm,
3610 &feature_avr0,
3611 &feature_movw,
36453612 &feature_avr25,
36463613 },
36473614};
......@@ -3650,15 +3617,15 @@ pub const cpu_attiny45 = Cpu{
36503617 .name = "attiny45",
36513618 .llvm_name = "attiny45",
36523619 .subfeatures = &[_]*const Feature {
3620 &feature_spm,
36533621 &feature_lpmx,
36543622 &feature_ijmpcall,
3655 &feature_movw,
36563623 &feature_sram,
3657 &feature_avr0,
3658 &feature_lpm,
3659 &feature_break,
3660 &feature_spm,
36613624 &feature_addsubiw,
3625 &feature_break,
3626 &feature_lpm,
3627 &feature_avr0,
3628 &feature_movw,
36623629 &feature_avr25,
36633630 },
36643631};
......@@ -3667,15 +3634,15 @@ pub const cpu_attiny461 = Cpu{
36673634 .name = "attiny461",
36683635 .llvm_name = "attiny461",
36693636 .subfeatures = &[_]*const Feature {
3637 &feature_spm,
36703638 &feature_lpmx,
36713639 &feature_ijmpcall,
3672 &feature_movw,
36733640 &feature_sram,
3674 &feature_avr0,
3675 &feature_lpm,
3676 &feature_break,
3677 &feature_spm,
36783641 &feature_addsubiw,
3642 &feature_break,
3643 &feature_lpm,
3644 &feature_avr0,
3645 &feature_movw,
36793646 &feature_avr25,
36803647 },
36813648};
......@@ -3684,15 +3651,15 @@ pub const cpu_attiny461a = Cpu{
36843651 .name = "attiny461a",
36853652 .llvm_name = "attiny461a",
36863653 .subfeatures = &[_]*const Feature {
3654 &feature_spm,
36873655 &feature_lpmx,
36883656 &feature_ijmpcall,
3689 &feature_movw,
36903657 &feature_sram,
3691 &feature_avr0,
3692 &feature_lpm,
3693 &feature_break,
3694 &feature_spm,
36953658 &feature_addsubiw,
3659 &feature_break,
3660 &feature_lpm,
3661 &feature_avr0,
3662 &feature_movw,
36963663 &feature_avr25,
36973664 },
36983665};
......@@ -3701,15 +3668,15 @@ pub const cpu_attiny48 = Cpu{
37013668 .name = "attiny48",
37023669 .llvm_name = "attiny48",
37033670 .subfeatures = &[_]*const Feature {
3671 &feature_spm,
37043672 &feature_lpmx,
37053673 &feature_ijmpcall,
3706 &feature_movw,
37073674 &feature_sram,
3708 &feature_avr0,
3709 &feature_lpm,
3710 &feature_break,
3711 &feature_spm,
37123675 &feature_addsubiw,
3676 &feature_break,
3677 &feature_lpm,
3678 &feature_avr0,
3679 &feature_movw,
37133680 &feature_avr25,
37143681 },
37153682};
......@@ -3718,10 +3685,10 @@ pub const cpu_attiny5 = Cpu{
37183685 .name = "attiny5",
37193686 .llvm_name = "attiny5",
37203687 .subfeatures = &[_]*const Feature {
3721 &feature_tinyencoding,
3688 &feature_avr0,
37223689 &feature_sram,
3690 &feature_tinyencoding,
37233691 &feature_break,
3724 &feature_avr0,
37253692 &feature_avrtiny,
37263693 },
37273694};
......@@ -3730,15 +3697,15 @@ pub const cpu_attiny828 = Cpu{
37303697 .name = "attiny828",
37313698 .llvm_name = "attiny828",
37323699 .subfeatures = &[_]*const Feature {
3700 &feature_spm,
37333701 &feature_lpmx,
37343702 &feature_ijmpcall,
3735 &feature_movw,
37363703 &feature_sram,
3737 &feature_avr0,
3738 &feature_lpm,
3739 &feature_break,
3740 &feature_spm,
37413704 &feature_addsubiw,
3705 &feature_break,
3706 &feature_lpm,
3707 &feature_avr0,
3708 &feature_movw,
37423709 &feature_avr25,
37433710 },
37443711};
......@@ -3747,15 +3714,15 @@ pub const cpu_attiny84 = Cpu{
37473714 .name = "attiny84",
37483715 .llvm_name = "attiny84",
37493716 .subfeatures = &[_]*const Feature {
3717 &feature_spm,
37503718 &feature_lpmx,
37513719 &feature_ijmpcall,
3752 &feature_movw,
37533720 &feature_sram,
3754 &feature_avr0,
3755 &feature_lpm,
3756 &feature_break,
3757 &feature_spm,
37583721 &feature_addsubiw,
3722 &feature_break,
3723 &feature_lpm,
3724 &feature_avr0,
3725 &feature_movw,
37593726 &feature_avr25,
37603727 },
37613728};
......@@ -3764,15 +3731,15 @@ pub const cpu_attiny84a = Cpu{
37643731 .name = "attiny84a",
37653732 .llvm_name = "attiny84a",
37663733 .subfeatures = &[_]*const Feature {
3734 &feature_spm,
37673735 &feature_lpmx,
37683736 &feature_ijmpcall,
3769 &feature_movw,
37703737 &feature_sram,
3771 &feature_avr0,
3772 &feature_lpm,
3773 &feature_break,
3774 &feature_spm,
37753738 &feature_addsubiw,
3739 &feature_break,
3740 &feature_lpm,
3741 &feature_avr0,
3742 &feature_movw,
37763743 &feature_avr25,
37773744 },
37783745};
......@@ -3781,15 +3748,15 @@ pub const cpu_attiny85 = Cpu{
37813748 .name = "attiny85",
37823749 .llvm_name = "attiny85",
37833750 .subfeatures = &[_]*const Feature {
3751 &feature_spm,
37843752 &feature_lpmx,
37853753 &feature_ijmpcall,
3786 &feature_movw,
37873754 &feature_sram,
3788 &feature_avr0,
3789 &feature_lpm,
3790 &feature_break,
3791 &feature_spm,
37923755 &feature_addsubiw,
3756 &feature_break,
3757 &feature_lpm,
3758 &feature_avr0,
3759 &feature_movw,
37933760 &feature_avr25,
37943761 },
37953762};
......@@ -3798,15 +3765,15 @@ pub const cpu_attiny861 = Cpu{
37983765 .name = "attiny861",
37993766 .llvm_name = "attiny861",
38003767 .subfeatures = &[_]*const Feature {
3768 &feature_spm,
38013769 &feature_lpmx,
38023770 &feature_ijmpcall,
3803 &feature_movw,
38043771 &feature_sram,
3805 &feature_avr0,
3806 &feature_lpm,
3807 &feature_break,
3808 &feature_spm,
38093772 &feature_addsubiw,
3773 &feature_break,
3774 &feature_lpm,
3775 &feature_avr0,
3776 &feature_movw,
38103777 &feature_avr25,
38113778 },
38123779};
......@@ -3815,15 +3782,15 @@ pub const cpu_attiny861a = Cpu{
38153782 .name = "attiny861a",
38163783 .llvm_name = "attiny861a",
38173784 .subfeatures = &[_]*const Feature {
3785 &feature_spm,
38183786 &feature_lpmx,
38193787 &feature_ijmpcall,
3820 &feature_movw,
38213788 &feature_sram,
3822 &feature_avr0,
3823 &feature_lpm,
3824 &feature_break,
3825 &feature_spm,
38263789 &feature_addsubiw,
3790 &feature_break,
3791 &feature_lpm,
3792 &feature_avr0,
3793 &feature_movw,
38273794 &feature_avr25,
38283795 },
38293796};
......@@ -3832,15 +3799,15 @@ pub const cpu_attiny87 = Cpu{
38323799 .name = "attiny87",
38333800 .llvm_name = "attiny87",
38343801 .subfeatures = &[_]*const Feature {
3802 &feature_spm,
38353803 &feature_lpmx,
38363804 &feature_ijmpcall,
3837 &feature_movw,
38383805 &feature_sram,
3839 &feature_avr0,
3840 &feature_lpm,
3841 &feature_break,
3842 &feature_spm,
38433806 &feature_addsubiw,
3807 &feature_break,
3808 &feature_lpm,
3809 &feature_avr0,
3810 &feature_movw,
38443811 &feature_avr25,
38453812 },
38463813};
......@@ -3849,15 +3816,15 @@ pub const cpu_attiny88 = Cpu{
38493816 .name = "attiny88",
38503817 .llvm_name = "attiny88",
38513818 .subfeatures = &[_]*const Feature {
3819 &feature_spm,
38523820 &feature_lpmx,
38533821 &feature_ijmpcall,
3854 &feature_movw,
38553822 &feature_sram,
3856 &feature_avr0,
3857 &feature_lpm,
3858 &feature_break,
3859 &feature_spm,
38603823 &feature_addsubiw,
3824 &feature_break,
3825 &feature_lpm,
3826 &feature_avr0,
3827 &feature_movw,
38613828 &feature_avr25,
38623829 },
38633830};
......@@ -3866,10 +3833,10 @@ pub const cpu_attiny9 = Cpu{
38663833 .name = "attiny9",
38673834 .llvm_name = "attiny9",
38683835 .subfeatures = &[_]*const Feature {
3869 &feature_tinyencoding,
3836 &feature_avr0,
38703837 &feature_sram,
3838 &feature_tinyencoding,
38713839 &feature_break,
3872 &feature_avr0,
38733840 &feature_avrtiny,
38743841 },
38753842};
......@@ -3878,22 +3845,22 @@ pub const cpu_atxmega128a1 = Cpu{
38783845 .name = "atxmega128a1",
38793846 .llvm_name = "atxmega128a1",
38803847 .subfeatures = &[_]*const Feature {
3848 &feature_spm,
38813849 &feature_lpmx,
3882 &feature_jmpcall,
3850 &feature_des,
38833851 &feature_ijmpcall,
3884 &feature_movw,
3852 &feature_jmpcall,
38853853 &feature_sram,
3886 &feature_mul,
3887 &feature_avr0,
3888 &feature_spmx,
3889 &feature_lpm,
3854 &feature_addsubiw,
3855 &feature_elpm,
38903856 &feature_eijmpcall,
3857 &feature_mul,
38913858 &feature_break,
3892 &feature_spm,
3859 &feature_lpm,
38933860 &feature_elpmx,
3894 &feature_elpm,
3895 &feature_addsubiw,
3896 &feature_des,
3861 &feature_avr0,
3862 &feature_movw,
3863 &feature_spmx,
38973864 &feature_xmega,
38983865 },
38993866};
......@@ -3902,23 +3869,23 @@ pub const cpu_atxmega128a1u = Cpu{
39023869 .name = "atxmega128a1u",
39033870 .llvm_name = "atxmega128a1u",
39043871 .subfeatures = &[_]*const Feature {
3872 &feature_spm,
39053873 &feature_lpmx,
3874 &feature_des,
39063875 &feature_ijmpcall,
39073876 &feature_jmpcall,
3908 &feature_movw,
39093877 &feature_sram,
3910 &feature_mul,
3911 &feature_avr0,
3912 &feature_spmx,
3913 &feature_lpm,
39143878 &feature_rmw,
3879 &feature_addsubiw,
3880 &feature_elpm,
39153881 &feature_eijmpcall,
3882 &feature_mul,
39163883 &feature_break,
3917 &feature_spm,
3884 &feature_lpm,
39183885 &feature_elpmx,
3919 &feature_elpm,
3920 &feature_addsubiw,
3921 &feature_des,
3886 &feature_avr0,
3887 &feature_movw,
3888 &feature_spmx,
39223889 &feature_xmegau,
39233890 },
39243891};
......@@ -3927,22 +3894,22 @@ pub const cpu_atxmega128a3 = Cpu{
39273894 .name = "atxmega128a3",
39283895 .llvm_name = "atxmega128a3",
39293896 .subfeatures = &[_]*const Feature {
3897 &feature_spm,
39303898 &feature_lpmx,
3931 &feature_jmpcall,
3899 &feature_des,
39323900 &feature_ijmpcall,
3933 &feature_movw,
3901 &feature_jmpcall,
39343902 &feature_sram,
3935 &feature_mul,
3936 &feature_avr0,
3937 &feature_spmx,
3938 &feature_lpm,
3903 &feature_addsubiw,
3904 &feature_elpm,
39393905 &feature_eijmpcall,
3906 &feature_mul,
39403907 &feature_break,
3941 &feature_spm,
3908 &feature_lpm,
39423909 &feature_elpmx,
3943 &feature_elpm,
3944 &feature_addsubiw,
3945 &feature_des,
3910 &feature_avr0,
3911 &feature_movw,
3912 &feature_spmx,
39463913 &feature_xmega,
39473914 },
39483915};
......@@ -3951,23 +3918,23 @@ pub const cpu_atxmega128a3u = Cpu{
39513918 .name = "atxmega128a3u",
39523919 .llvm_name = "atxmega128a3u",
39533920 .subfeatures = &[_]*const Feature {
3921 &feature_spm,
39543922 &feature_lpmx,
3923 &feature_des,
39553924 &feature_ijmpcall,
39563925 &feature_jmpcall,
3957 &feature_movw,
39583926 &feature_sram,
3959 &feature_mul,
3960 &feature_avr0,
3961 &feature_spmx,
3962 &feature_lpm,
39633927 &feature_rmw,
3928 &feature_addsubiw,
3929 &feature_elpm,
39643930 &feature_eijmpcall,
3931 &feature_mul,
39653932 &feature_break,
3966 &feature_spm,
3933 &feature_lpm,
39673934 &feature_elpmx,
3968 &feature_elpm,
3969 &feature_addsubiw,
3970 &feature_des,
3935 &feature_avr0,
3936 &feature_movw,
3937 &feature_spmx,
39713938 &feature_xmegau,
39723939 },
39733940};
......@@ -3976,23 +3943,23 @@ pub const cpu_atxmega128a4u = Cpu{
39763943 .name = "atxmega128a4u",
39773944 .llvm_name = "atxmega128a4u",
39783945 .subfeatures = &[_]*const Feature {
3946 &feature_spm,
39793947 &feature_lpmx,
3948 &feature_des,
39803949 &feature_ijmpcall,
39813950 &feature_jmpcall,
3982 &feature_movw,
39833951 &feature_sram,
3984 &feature_mul,
3985 &feature_avr0,
3986 &feature_spmx,
3987 &feature_lpm,
39883952 &feature_rmw,
3953 &feature_addsubiw,
3954 &feature_elpm,
39893955 &feature_eijmpcall,
3956 &feature_mul,
39903957 &feature_break,
3991 &feature_spm,
3958 &feature_lpm,
39923959 &feature_elpmx,
3993 &feature_elpm,
3994 &feature_addsubiw,
3995 &feature_des,
3960 &feature_avr0,
3961 &feature_movw,
3962 &feature_spmx,
39963963 &feature_xmegau,
39973964 },
39983965};
......@@ -4001,23 +3968,23 @@ pub const cpu_atxmega128b1 = Cpu{
40013968 .name = "atxmega128b1",
40023969 .llvm_name = "atxmega128b1",
40033970 .subfeatures = &[_]*const Feature {
3971 &feature_spm,
40043972 &feature_lpmx,
3973 &feature_des,
40053974 &feature_ijmpcall,
40063975 &feature_jmpcall,
4007 &feature_movw,
40083976 &feature_sram,
4009 &feature_mul,
4010 &feature_avr0,
4011 &feature_spmx,
4012 &feature_lpm,
40133977 &feature_rmw,
3978 &feature_addsubiw,
3979 &feature_elpm,
40143980 &feature_eijmpcall,
3981 &feature_mul,
40153982 &feature_break,
4016 &feature_spm,
3983 &feature_lpm,
40173984 &feature_elpmx,
4018 &feature_elpm,
4019 &feature_addsubiw,
4020 &feature_des,
3985 &feature_avr0,
3986 &feature_movw,
3987 &feature_spmx,
40213988 &feature_xmegau,
40223989 },
40233990};
......@@ -4026,23 +3993,23 @@ pub const cpu_atxmega128b3 = Cpu{
40263993 .name = "atxmega128b3",
40273994 .llvm_name = "atxmega128b3",
40283995 .subfeatures = &[_]*const Feature {
3996 &feature_spm,
40293997 &feature_lpmx,
3998 &feature_des,
40303999 &feature_ijmpcall,
40314000 &feature_jmpcall,
4032 &feature_movw,
40334001 &feature_sram,
4034 &feature_mul,
4035 &feature_avr0,
4036 &feature_spmx,
4037 &feature_lpm,
40384002 &feature_rmw,
4003 &feature_addsubiw,
4004 &feature_elpm,
40394005 &feature_eijmpcall,
4006 &feature_mul,
40404007 &feature_break,
4041 &feature_spm,
4008 &feature_lpm,
40424009 &feature_elpmx,
4043 &feature_elpm,
4044 &feature_addsubiw,
4045 &feature_des,
4010 &feature_avr0,
4011 &feature_movw,
4012 &feature_spmx,
40464013 &feature_xmegau,
40474014 },
40484015};
......@@ -4051,23 +4018,23 @@ pub const cpu_atxmega128c3 = Cpu{
40514018 .name = "atxmega128c3",
40524019 .llvm_name = "atxmega128c3",
40534020 .subfeatures = &[_]*const Feature {
4021 &feature_spm,
40544022 &feature_lpmx,
4023 &feature_des,
40554024 &feature_ijmpcall,
40564025 &feature_jmpcall,
4057 &feature_movw,
40584026 &feature_sram,
4059 &feature_mul,
4060 &feature_avr0,
4061 &feature_spmx,
4062 &feature_lpm,
40634027 &feature_rmw,
4028 &feature_addsubiw,
4029 &feature_elpm,
40644030 &feature_eijmpcall,
4031 &feature_mul,
40654032 &feature_break,
4066 &feature_spm,
4033 &feature_lpm,
40674034 &feature_elpmx,
4068 &feature_elpm,
4069 &feature_addsubiw,
4070 &feature_des,
4035 &feature_avr0,
4036 &feature_movw,
4037 &feature_spmx,
40714038 &feature_xmegau,
40724039 },
40734040};
......@@ -4076,22 +4043,22 @@ pub const cpu_atxmega128d3 = Cpu{
40764043 .name = "atxmega128d3",
40774044 .llvm_name = "atxmega128d3",
40784045 .subfeatures = &[_]*const Feature {
4046 &feature_spm,
40794047 &feature_lpmx,
4080 &feature_jmpcall,
4048 &feature_des,
40814049 &feature_ijmpcall,
4082 &feature_movw,
4050 &feature_jmpcall,
40834051 &feature_sram,
4084 &feature_mul,
4085 &feature_avr0,
4086 &feature_spmx,
4087 &feature_lpm,
4052 &feature_addsubiw,
4053 &feature_elpm,
40884054 &feature_eijmpcall,
4055 &feature_mul,
40894056 &feature_break,
4090 &feature_spm,
4057 &feature_lpm,
40914058 &feature_elpmx,
4092 &feature_elpm,
4093 &feature_addsubiw,
4094 &feature_des,
4059 &feature_avr0,
4060 &feature_movw,
4061 &feature_spmx,
40954062 &feature_xmega,
40964063 },
40974064};
......@@ -4100,22 +4067,22 @@ pub const cpu_atxmega128d4 = Cpu{
41004067 .name = "atxmega128d4",
41014068 .llvm_name = "atxmega128d4",
41024069 .subfeatures = &[_]*const Feature {
4070 &feature_spm,
41034071 &feature_lpmx,
4104 &feature_jmpcall,
4072 &feature_des,
41054073 &feature_ijmpcall,
4106 &feature_movw,
4074 &feature_jmpcall,
41074075 &feature_sram,
4108 &feature_mul,
4109 &feature_avr0,
4110 &feature_spmx,
4111 &feature_lpm,
4076 &feature_addsubiw,
4077 &feature_elpm,
41124078 &feature_eijmpcall,
4079 &feature_mul,
41134080 &feature_break,
4114 &feature_spm,
4081 &feature_lpm,
41154082 &feature_elpmx,
4116 &feature_elpm,
4117 &feature_addsubiw,
4118 &feature_des,
4083 &feature_avr0,
4084 &feature_movw,
4085 &feature_spmx,
41194086 &feature_xmega,
41204087 },
41214088};
......@@ -4124,22 +4091,22 @@ pub const cpu_atxmega16a4 = Cpu{
41244091 .name = "atxmega16a4",
41254092 .llvm_name = "atxmega16a4",
41264093 .subfeatures = &[_]*const Feature {
4094 &feature_spm,
41274095 &feature_lpmx,
4128 &feature_jmpcall,
4096 &feature_des,
41294097 &feature_ijmpcall,
4130 &feature_movw,
4098 &feature_jmpcall,
41314099 &feature_sram,
4132 &feature_mul,
4133 &feature_avr0,
4134 &feature_spmx,
4135 &feature_lpm,
4100 &feature_addsubiw,
4101 &feature_elpm,
41364102 &feature_eijmpcall,
4103 &feature_mul,
41374104 &feature_break,
4138 &feature_spm,
4105 &feature_lpm,
41394106 &feature_elpmx,
4140 &feature_elpm,
4141 &feature_addsubiw,
4142 &feature_des,
4107 &feature_avr0,
4108 &feature_movw,
4109 &feature_spmx,
41434110 &feature_xmega,
41444111 },
41454112};
......@@ -4148,23 +4115,23 @@ pub const cpu_atxmega16a4u = Cpu{
41484115 .name = "atxmega16a4u",
41494116 .llvm_name = "atxmega16a4u",
41504117 .subfeatures = &[_]*const Feature {
4118 &feature_spm,
41514119 &feature_lpmx,
4120 &feature_des,
41524121 &feature_ijmpcall,
41534122 &feature_jmpcall,
4154 &feature_movw,
41554123 &feature_sram,
4156 &feature_mul,
4157 &feature_avr0,
4158 &feature_spmx,
4159 &feature_lpm,
41604124 &feature_rmw,
4125 &feature_addsubiw,
4126 &feature_elpm,
41614127 &feature_eijmpcall,
4128 &feature_mul,
41624129 &feature_break,
4163 &feature_spm,
4130 &feature_lpm,
41644131 &feature_elpmx,
4165 &feature_elpm,
4166 &feature_addsubiw,
4167 &feature_des,
4132 &feature_avr0,
4133 &feature_movw,
4134 &feature_spmx,
41684135 &feature_xmegau,
41694136 },
41704137};
......@@ -4173,23 +4140,23 @@ pub const cpu_atxmega16c4 = Cpu{
41734140 .name = "atxmega16c4",
41744141 .llvm_name = "atxmega16c4",
41754142 .subfeatures = &[_]*const Feature {
4143 &feature_spm,
41764144 &feature_lpmx,
4145 &feature_des,
41774146 &feature_ijmpcall,
41784147 &feature_jmpcall,
4179 &feature_movw,
41804148 &feature_sram,
4181 &feature_mul,
4182 &feature_avr0,
4183 &feature_spmx,
4184 &feature_lpm,
41854149 &feature_rmw,
4150 &feature_addsubiw,
4151 &feature_elpm,
41864152 &feature_eijmpcall,
4153 &feature_mul,
41874154 &feature_break,
4188 &feature_spm,
4155 &feature_lpm,
41894156 &feature_elpmx,
4190 &feature_elpm,
4191 &feature_addsubiw,
4192 &feature_des,
4157 &feature_avr0,
4158 &feature_movw,
4159 &feature_spmx,
41934160 &feature_xmegau,
41944161 },
41954162};
......@@ -4198,22 +4165,22 @@ pub const cpu_atxmega16d4 = Cpu{
41984165 .name = "atxmega16d4",
41994166 .llvm_name = "atxmega16d4",
42004167 .subfeatures = &[_]*const Feature {
4168 &feature_spm,
42014169 &feature_lpmx,
4202 &feature_jmpcall,
4170 &feature_des,
42034171 &feature_ijmpcall,
4204 &feature_movw,
4172 &feature_jmpcall,
42054173 &feature_sram,
4206 &feature_mul,
4207 &feature_avr0,
4208 &feature_spmx,
4209 &feature_lpm,
4174 &feature_addsubiw,
4175 &feature_elpm,
42104176 &feature_eijmpcall,
4177 &feature_mul,
42114178 &feature_break,
4212 &feature_spm,
4179 &feature_lpm,
42134180 &feature_elpmx,
4214 &feature_elpm,
4215 &feature_addsubiw,
4216 &feature_des,
4181 &feature_avr0,
4182 &feature_movw,
4183 &feature_spmx,
42174184 &feature_xmega,
42184185 },
42194186};
......@@ -4222,22 +4189,22 @@ pub const cpu_atxmega16e5 = Cpu{
42224189 .name = "atxmega16e5",
42234190 .llvm_name = "atxmega16e5",
42244191 .subfeatures = &[_]*const Feature {
4192 &feature_spm,
42254193 &feature_lpmx,
4226 &feature_jmpcall,
4194 &feature_des,
42274195 &feature_ijmpcall,
4228 &feature_movw,
4196 &feature_jmpcall,
42294197 &feature_sram,
4230 &feature_mul,
4231 &feature_avr0,
4232 &feature_spmx,
4233 &feature_lpm,
4198 &feature_addsubiw,
4199 &feature_elpm,
42344200 &feature_eijmpcall,
4201 &feature_mul,
42354202 &feature_break,
4236 &feature_spm,
4203 &feature_lpm,
42374204 &feature_elpmx,
4238 &feature_elpm,
4239 &feature_addsubiw,
4240 &feature_des,
4205 &feature_avr0,
4206 &feature_movw,
4207 &feature_spmx,
42414208 &feature_xmega,
42424209 },
42434210};
......@@ -4246,22 +4213,22 @@ pub const cpu_atxmega192a3 = Cpu{
42464213 .name = "atxmega192a3",
42474214 .llvm_name = "atxmega192a3",
42484215 .subfeatures = &[_]*const Feature {
4216 &feature_spm,
42494217 &feature_lpmx,
4250 &feature_jmpcall,
4218 &feature_des,
42514219 &feature_ijmpcall,
4252 &feature_movw,
4220 &feature_jmpcall,
42534221 &feature_sram,
4254 &feature_mul,
4255 &feature_avr0,
4256 &feature_spmx,
4257 &feature_lpm,
4222 &feature_addsubiw,
4223 &feature_elpm,
42584224 &feature_eijmpcall,
4225 &feature_mul,
42594226 &feature_break,
4260 &feature_spm,
4227 &feature_lpm,
42614228 &feature_elpmx,
4262 &feature_elpm,
4263 &feature_addsubiw,
4264 &feature_des,
4229 &feature_avr0,
4230 &feature_movw,
4231 &feature_spmx,
42654232 &feature_xmega,
42664233 },
42674234};
......@@ -4270,23 +4237,23 @@ pub const cpu_atxmega192a3u = Cpu{
42704237 .name = "atxmega192a3u",
42714238 .llvm_name = "atxmega192a3u",
42724239 .subfeatures = &[_]*const Feature {
4240 &feature_spm,
42734241 &feature_lpmx,
4242 &feature_des,
42744243 &feature_ijmpcall,
42754244 &feature_jmpcall,
4276 &feature_movw,
42774245 &feature_sram,
4278 &feature_mul,
4279 &feature_avr0,
4280 &feature_spmx,
4281 &feature_lpm,
42824246 &feature_rmw,
4247 &feature_addsubiw,
4248 &feature_elpm,
42834249 &feature_eijmpcall,
4250 &feature_mul,
42844251 &feature_break,
4285 &feature_spm,
4252 &feature_lpm,
42864253 &feature_elpmx,
4287 &feature_elpm,
4288 &feature_addsubiw,
4289 &feature_des,
4254 &feature_avr0,
4255 &feature_movw,
4256 &feature_spmx,
42904257 &feature_xmegau,
42914258 },
42924259};
......@@ -4295,23 +4262,23 @@ pub const cpu_atxmega192c3 = Cpu{
42954262 .name = "atxmega192c3",
42964263 .llvm_name = "atxmega192c3",
42974264 .subfeatures = &[_]*const Feature {
4265 &feature_spm,
42984266 &feature_lpmx,
4267 &feature_des,
42994268 &feature_ijmpcall,
43004269 &feature_jmpcall,
4301 &feature_movw,
43024270 &feature_sram,
4303 &feature_mul,
4304 &feature_avr0,
4305 &feature_spmx,
4306 &feature_lpm,
43074271 &feature_rmw,
4272 &feature_addsubiw,
4273 &feature_elpm,
43084274 &feature_eijmpcall,
4275 &feature_mul,
43094276 &feature_break,
4310 &feature_spm,
4277 &feature_lpm,
43114278 &feature_elpmx,
4312 &feature_elpm,
4313 &feature_addsubiw,
4314 &feature_des,
4279 &feature_avr0,
4280 &feature_movw,
4281 &feature_spmx,
43154282 &feature_xmegau,
43164283 },
43174284};
......@@ -4320,22 +4287,22 @@ pub const cpu_atxmega192d3 = Cpu{
43204287 .name = "atxmega192d3",
43214288 .llvm_name = "atxmega192d3",
43224289 .subfeatures = &[_]*const Feature {
4290 &feature_spm,
43234291 &feature_lpmx,
4324 &feature_jmpcall,
4292 &feature_des,
43254293 &feature_ijmpcall,
4326 &feature_movw,
4294 &feature_jmpcall,
43274295 &feature_sram,
4328 &feature_mul,
4329 &feature_avr0,
4330 &feature_spmx,
4331 &feature_lpm,
4296 &feature_addsubiw,
4297 &feature_elpm,
43324298 &feature_eijmpcall,
4299 &feature_mul,
43334300 &feature_break,
4334 &feature_spm,
4301 &feature_lpm,
43354302 &feature_elpmx,
4336 &feature_elpm,
4337 &feature_addsubiw,
4338 &feature_des,
4303 &feature_avr0,
4304 &feature_movw,
4305 &feature_spmx,
43394306 &feature_xmega,
43404307 },
43414308};
......@@ -4344,22 +4311,22 @@ pub const cpu_atxmega256a3 = Cpu{
43444311 .name = "atxmega256a3",
43454312 .llvm_name = "atxmega256a3",
43464313 .subfeatures = &[_]*const Feature {
4314 &feature_spm,
43474315 &feature_lpmx,
4348 &feature_jmpcall,
4316 &feature_des,
43494317 &feature_ijmpcall,
4350 &feature_movw,
4318 &feature_jmpcall,
43514319 &feature_sram,
4352 &feature_mul,
4353 &feature_avr0,
4354 &feature_spmx,
4355 &feature_lpm,
4320 &feature_addsubiw,
4321 &feature_elpm,
43564322 &feature_eijmpcall,
4323 &feature_mul,
43574324 &feature_break,
4358 &feature_spm,
4325 &feature_lpm,
43594326 &feature_elpmx,
4360 &feature_elpm,
4361 &feature_addsubiw,
4362 &feature_des,
4327 &feature_avr0,
4328 &feature_movw,
4329 &feature_spmx,
43634330 &feature_xmega,
43644331 },
43654332};
......@@ -4368,22 +4335,22 @@ pub const cpu_atxmega256a3b = Cpu{
43684335 .name = "atxmega256a3b",
43694336 .llvm_name = "atxmega256a3b",
43704337 .subfeatures = &[_]*const Feature {
4338 &feature_spm,
43714339 &feature_lpmx,
4372 &feature_jmpcall,
4340 &feature_des,
43734341 &feature_ijmpcall,
4374 &feature_movw,
4342 &feature_jmpcall,
43754343 &feature_sram,
4376 &feature_mul,
4377 &feature_avr0,
4378 &feature_spmx,
4379 &feature_lpm,
4344 &feature_addsubiw,
4345 &feature_elpm,
43804346 &feature_eijmpcall,
4347 &feature_mul,
43814348 &feature_break,
4382 &feature_spm,
4349 &feature_lpm,
43834350 &feature_elpmx,
4384 &feature_elpm,
4385 &feature_addsubiw,
4386 &feature_des,
4351 &feature_avr0,
4352 &feature_movw,
4353 &feature_spmx,
43874354 &feature_xmega,
43884355 },
43894356};
......@@ -4392,23 +4359,23 @@ pub const cpu_atxmega256a3bu = Cpu{
43924359 .name = "atxmega256a3bu",
43934360 .llvm_name = "atxmega256a3bu",
43944361 .subfeatures = &[_]*const Feature {
4362 &feature_spm,
43954363 &feature_lpmx,
4364 &feature_des,
43964365 &feature_ijmpcall,
43974366 &feature_jmpcall,
4398 &feature_movw,
43994367 &feature_sram,
4400 &feature_mul,
4401 &feature_avr0,
4402 &feature_spmx,
4403 &feature_lpm,
44044368 &feature_rmw,
4369 &feature_addsubiw,
4370 &feature_elpm,
44054371 &feature_eijmpcall,
4372 &feature_mul,
44064373 &feature_break,
4407 &feature_spm,
4374 &feature_lpm,
44084375 &feature_elpmx,
4409 &feature_elpm,
4410 &feature_addsubiw,
4411 &feature_des,
4376 &feature_avr0,
4377 &feature_movw,
4378 &feature_spmx,
44124379 &feature_xmegau,
44134380 },
44144381};
......@@ -4417,23 +4384,23 @@ pub const cpu_atxmega256a3u = Cpu{
44174384 .name = "atxmega256a3u",
44184385 .llvm_name = "atxmega256a3u",
44194386 .subfeatures = &[_]*const Feature {
4387 &feature_spm,
44204388 &feature_lpmx,
4389 &feature_des,
44214390 &feature_ijmpcall,
44224391 &feature_jmpcall,
4423 &feature_movw,
44244392 &feature_sram,
4425 &feature_mul,
4426 &feature_avr0,
4427 &feature_spmx,
4428 &feature_lpm,
44294393 &feature_rmw,
4394 &feature_addsubiw,
4395 &feature_elpm,
44304396 &feature_eijmpcall,
4397 &feature_mul,
44314398 &feature_break,
4432 &feature_spm,
4399 &feature_lpm,
44334400 &feature_elpmx,
4434 &feature_elpm,
4435 &feature_addsubiw,
4436 &feature_des,
4401 &feature_avr0,
4402 &feature_movw,
4403 &feature_spmx,
44374404 &feature_xmegau,
44384405 },
44394406};
......@@ -4442,23 +4409,23 @@ pub const cpu_atxmega256c3 = Cpu{
44424409 .name = "atxmega256c3",
44434410 .llvm_name = "atxmega256c3",
44444411 .subfeatures = &[_]*const Feature {
4412 &feature_spm,
44454413 &feature_lpmx,
4414 &feature_des,
44464415 &feature_ijmpcall,
44474416 &feature_jmpcall,
4448 &feature_movw,
44494417 &feature_sram,
4450 &feature_mul,
4451 &feature_avr0,
4452 &feature_spmx,
4453 &feature_lpm,
44544418 &feature_rmw,
4419 &feature_addsubiw,
4420 &feature_elpm,
44554421 &feature_eijmpcall,
4422 &feature_mul,
44564423 &feature_break,
4457 &feature_spm,
4424 &feature_lpm,
44584425 &feature_elpmx,
4459 &feature_elpm,
4460 &feature_addsubiw,
4461 &feature_des,
4426 &feature_avr0,
4427 &feature_movw,
4428 &feature_spmx,
44624429 &feature_xmegau,
44634430 },
44644431};
......@@ -4467,22 +4434,22 @@ pub const cpu_atxmega256d3 = Cpu{
44674434 .name = "atxmega256d3",
44684435 .llvm_name = "atxmega256d3",
44694436 .subfeatures = &[_]*const Feature {
4437 &feature_spm,
44704438 &feature_lpmx,
4471 &feature_jmpcall,
4439 &feature_des,
44724440 &feature_ijmpcall,
4473 &feature_movw,
4441 &feature_jmpcall,
44744442 &feature_sram,
4475 &feature_mul,
4476 &feature_avr0,
4477 &feature_spmx,
4478 &feature_lpm,
4443 &feature_addsubiw,
4444 &feature_elpm,
44794445 &feature_eijmpcall,
4446 &feature_mul,
44804447 &feature_break,
4481 &feature_spm,
4448 &feature_lpm,
44824449 &feature_elpmx,
4483 &feature_elpm,
4484 &feature_addsubiw,
4485 &feature_des,
4450 &feature_avr0,
4451 &feature_movw,
4452 &feature_spmx,
44864453 &feature_xmega,
44874454 },
44884455};
......@@ -4491,22 +4458,22 @@ pub const cpu_atxmega32a4 = Cpu{
44914458 .name = "atxmega32a4",
44924459 .llvm_name = "atxmega32a4",
44934460 .subfeatures = &[_]*const Feature {
4461 &feature_spm,
44944462 &feature_lpmx,
4495 &feature_jmpcall,
4463 &feature_des,
44964464 &feature_ijmpcall,
4497 &feature_movw,
4465 &feature_jmpcall,
44984466 &feature_sram,
4499 &feature_mul,
4500 &feature_avr0,
4501 &feature_spmx,
4502 &feature_lpm,
4467 &feature_addsubiw,
4468 &feature_elpm,
45034469 &feature_eijmpcall,
4470 &feature_mul,
45044471 &feature_break,
4505 &feature_spm,
4472 &feature_lpm,
45064473 &feature_elpmx,
4507 &feature_elpm,
4508 &feature_addsubiw,
4509 &feature_des,
4474 &feature_avr0,
4475 &feature_movw,
4476 &feature_spmx,
45104477 &feature_xmega,
45114478 },
45124479};
......@@ -4515,23 +4482,23 @@ pub const cpu_atxmega32a4u = Cpu{
45154482 .name = "atxmega32a4u",
45164483 .llvm_name = "atxmega32a4u",
45174484 .subfeatures = &[_]*const Feature {
4485 &feature_spm,
45184486 &feature_lpmx,
4487 &feature_des,
45194488 &feature_ijmpcall,
45204489 &feature_jmpcall,
4521 &feature_movw,
45224490 &feature_sram,
4523 &feature_mul,
4524 &feature_avr0,
4525 &feature_spmx,
4526 &feature_lpm,
45274491 &feature_rmw,
4492 &feature_addsubiw,
4493 &feature_elpm,
45284494 &feature_eijmpcall,
4495 &feature_mul,
45294496 &feature_break,
4530 &feature_spm,
4497 &feature_lpm,
45314498 &feature_elpmx,
4532 &feature_elpm,
4533 &feature_addsubiw,
4534 &feature_des,
4499 &feature_avr0,
4500 &feature_movw,
4501 &feature_spmx,
45354502 &feature_xmegau,
45364503 },
45374504};
......@@ -4540,23 +4507,23 @@ pub const cpu_atxmega32c4 = Cpu{
45404507 .name = "atxmega32c4",
45414508 .llvm_name = "atxmega32c4",
45424509 .subfeatures = &[_]*const Feature {
4510 &feature_spm,
45434511 &feature_lpmx,
4512 &feature_des,
45444513 &feature_ijmpcall,
45454514 &feature_jmpcall,
4546 &feature_movw,
45474515 &feature_sram,
4548 &feature_mul,
4549 &feature_avr0,
4550 &feature_spmx,
4551 &feature_lpm,
45524516 &feature_rmw,
4517 &feature_addsubiw,
4518 &feature_elpm,
45534519 &feature_eijmpcall,
4520 &feature_mul,
45544521 &feature_break,
4555 &feature_spm,
4522 &feature_lpm,
45564523 &feature_elpmx,
4557 &feature_elpm,
4558 &feature_addsubiw,
4559 &feature_des,
4524 &feature_avr0,
4525 &feature_movw,
4526 &feature_spmx,
45604527 &feature_xmegau,
45614528 },
45624529};
......@@ -4565,22 +4532,22 @@ pub const cpu_atxmega32d4 = Cpu{
45654532 .name = "atxmega32d4",
45664533 .llvm_name = "atxmega32d4",
45674534 .subfeatures = &[_]*const Feature {
4535 &feature_spm,
45684536 &feature_lpmx,
4569 &feature_jmpcall,
4537 &feature_des,
45704538 &feature_ijmpcall,
4571 &feature_movw,
4539 &feature_jmpcall,
45724540 &feature_sram,
4573 &feature_mul,
4574 &feature_avr0,
4575 &feature_spmx,
4576 &feature_lpm,
4541 &feature_addsubiw,
4542 &feature_elpm,
45774543 &feature_eijmpcall,
4544 &feature_mul,
45784545 &feature_break,
4579 &feature_spm,
4546 &feature_lpm,
45804547 &feature_elpmx,
4581 &feature_elpm,
4582 &feature_addsubiw,
4583 &feature_des,
4548 &feature_avr0,
4549 &feature_movw,
4550 &feature_spmx,
45844551 &feature_xmega,
45854552 },
45864553};
......@@ -4589,22 +4556,22 @@ pub const cpu_atxmega32e5 = Cpu{
45894556 .name = "atxmega32e5",
45904557 .llvm_name = "atxmega32e5",
45914558 .subfeatures = &[_]*const Feature {
4559 &feature_spm,
45924560 &feature_lpmx,
4593 &feature_jmpcall,
4561 &feature_des,
45944562 &feature_ijmpcall,
4595 &feature_movw,
4563 &feature_jmpcall,
45964564 &feature_sram,
4597 &feature_mul,
4598 &feature_avr0,
4599 &feature_spmx,
4600 &feature_lpm,
4565 &feature_addsubiw,
4566 &feature_elpm,
46014567 &feature_eijmpcall,
4568 &feature_mul,
46024569 &feature_break,
4603 &feature_spm,
4570 &feature_lpm,
46044571 &feature_elpmx,
4605 &feature_elpm,
4606 &feature_addsubiw,
4607 &feature_des,
4572 &feature_avr0,
4573 &feature_movw,
4574 &feature_spmx,
46084575 &feature_xmega,
46094576 },
46104577};
......@@ -4613,22 +4580,22 @@ pub const cpu_atxmega32x1 = Cpu{
46134580 .name = "atxmega32x1",
46144581 .llvm_name = "atxmega32x1",
46154582 .subfeatures = &[_]*const Feature {
4583 &feature_spm,
46164584 &feature_lpmx,
4617 &feature_jmpcall,
4585 &feature_des,
46184586 &feature_ijmpcall,
4619 &feature_movw,
4587 &feature_jmpcall,
46204588 &feature_sram,
4621 &feature_mul,
4622 &feature_avr0,
4623 &feature_spmx,
4624 &feature_lpm,
4589 &feature_addsubiw,
4590 &feature_elpm,
46254591 &feature_eijmpcall,
4592 &feature_mul,
46264593 &feature_break,
4627 &feature_spm,
4594 &feature_lpm,
46284595 &feature_elpmx,
4629 &feature_elpm,
4630 &feature_addsubiw,
4631 &feature_des,
4596 &feature_avr0,
4597 &feature_movw,
4598 &feature_spmx,
46324599 &feature_xmega,
46334600 },
46344601};
......@@ -4637,23 +4604,23 @@ pub const cpu_atxmega384c3 = Cpu{
46374604 .name = "atxmega384c3",
46384605 .llvm_name = "atxmega384c3",
46394606 .subfeatures = &[_]*const Feature {
4607 &feature_spm,
46404608 &feature_lpmx,
4609 &feature_des,
46414610 &feature_ijmpcall,
46424611 &feature_jmpcall,
4643 &feature_movw,
46444612 &feature_sram,
4645 &feature_mul,
4646 &feature_avr0,
4647 &feature_spmx,
4648 &feature_lpm,
46494613 &feature_rmw,
4614 &feature_addsubiw,
4615 &feature_elpm,
46504616 &feature_eijmpcall,
4617 &feature_mul,
46514618 &feature_break,
4652 &feature_spm,
4619 &feature_lpm,
46534620 &feature_elpmx,
4654 &feature_elpm,
4655 &feature_addsubiw,
4656 &feature_des,
4621 &feature_avr0,
4622 &feature_movw,
4623 &feature_spmx,
46574624 &feature_xmegau,
46584625 },
46594626};
......@@ -4662,22 +4629,22 @@ pub const cpu_atxmega384d3 = Cpu{
46624629 .name = "atxmega384d3",
46634630 .llvm_name = "atxmega384d3",
46644631 .subfeatures = &[_]*const Feature {
4632 &feature_spm,
46654633 &feature_lpmx,
4666 &feature_jmpcall,
4634 &feature_des,
46674635 &feature_ijmpcall,
4668 &feature_movw,
4636 &feature_jmpcall,
46694637 &feature_sram,
4670 &feature_mul,
4671 &feature_avr0,
4672 &feature_spmx,
4673 &feature_lpm,
4638 &feature_addsubiw,
4639 &feature_elpm,
46744640 &feature_eijmpcall,
4641 &feature_mul,
46754642 &feature_break,
4676 &feature_spm,
4643 &feature_lpm,
46774644 &feature_elpmx,
4678 &feature_elpm,
4679 &feature_addsubiw,
4680 &feature_des,
4645 &feature_avr0,
4646 &feature_movw,
4647 &feature_spmx,
46814648 &feature_xmega,
46824649 },
46834650};
......@@ -4686,22 +4653,22 @@ pub const cpu_atxmega64a1 = Cpu{
46864653 .name = "atxmega64a1",
46874654 .llvm_name = "atxmega64a1",
46884655 .subfeatures = &[_]*const Feature {
4656 &feature_spm,
46894657 &feature_lpmx,
4690 &feature_jmpcall,
4658 &feature_des,
46914659 &feature_ijmpcall,
4692 &feature_movw,
4660 &feature_jmpcall,
46934661 &feature_sram,
4694 &feature_mul,
4695 &feature_avr0,
4696 &feature_spmx,
4697 &feature_lpm,
4662 &feature_addsubiw,
4663 &feature_elpm,
46984664 &feature_eijmpcall,
4665 &feature_mul,
46994666 &feature_break,
4700 &feature_spm,
4667 &feature_lpm,
47014668 &feature_elpmx,
4702 &feature_elpm,
4703 &feature_addsubiw,
4704 &feature_des,
4669 &feature_avr0,
4670 &feature_movw,
4671 &feature_spmx,
47054672 &feature_xmega,
47064673 },
47074674};
......@@ -4710,23 +4677,23 @@ pub const cpu_atxmega64a1u = Cpu{
47104677 .name = "atxmega64a1u",
47114678 .llvm_name = "atxmega64a1u",
47124679 .subfeatures = &[_]*const Feature {
4680 &feature_spm,
47134681 &feature_lpmx,
4682 &feature_des,
47144683 &feature_ijmpcall,
47154684 &feature_jmpcall,
4716 &feature_movw,
47174685 &feature_sram,
4718 &feature_mul,
4719 &feature_avr0,
4720 &feature_spmx,
4721 &feature_lpm,
47224686 &feature_rmw,
4687 &feature_addsubiw,
4688 &feature_elpm,
47234689 &feature_eijmpcall,
4690 &feature_mul,
47244691 &feature_break,
4725 &feature_spm,
4692 &feature_lpm,
47264693 &feature_elpmx,
4727 &feature_elpm,
4728 &feature_addsubiw,
4729 &feature_des,
4694 &feature_avr0,
4695 &feature_movw,
4696 &feature_spmx,
47304697 &feature_xmegau,
47314698 },
47324699};
......@@ -4735,22 +4702,22 @@ pub const cpu_atxmega64a3 = Cpu{
47354702 .name = "atxmega64a3",
47364703 .llvm_name = "atxmega64a3",
47374704 .subfeatures = &[_]*const Feature {
4705 &feature_spm,
47384706 &feature_lpmx,
4739 &feature_jmpcall,
4707 &feature_des,
47404708 &feature_ijmpcall,
4741 &feature_movw,
4709 &feature_jmpcall,
47424710 &feature_sram,
4743 &feature_mul,
4744 &feature_avr0,
4745 &feature_spmx,
4746 &feature_lpm,
4711 &feature_addsubiw,
4712 &feature_elpm,
47474713 &feature_eijmpcall,
4714 &feature_mul,
47484715 &feature_break,
4749 &feature_spm,
4716 &feature_lpm,
47504717 &feature_elpmx,
4751 &feature_elpm,
4752 &feature_addsubiw,
4753 &feature_des,
4718 &feature_avr0,
4719 &feature_movw,
4720 &feature_spmx,
47544721 &feature_xmega,
47554722 },
47564723};
......@@ -4759,23 +4726,23 @@ pub const cpu_atxmega64a3u = Cpu{
47594726 .name = "atxmega64a3u",
47604727 .llvm_name = "atxmega64a3u",
47614728 .subfeatures = &[_]*const Feature {
4729 &feature_spm,
47624730 &feature_lpmx,
4731 &feature_des,
47634732 &feature_ijmpcall,
47644733 &feature_jmpcall,
4765 &feature_movw,
47664734 &feature_sram,
4767 &feature_mul,
4768 &feature_avr0,
4769 &feature_spmx,
4770 &feature_lpm,
47714735 &feature_rmw,
4736 &feature_addsubiw,
4737 &feature_elpm,
47724738 &feature_eijmpcall,
4739 &feature_mul,
47734740 &feature_break,
4774 &feature_spm,
4741 &feature_lpm,
47754742 &feature_elpmx,
4776 &feature_elpm,
4777 &feature_addsubiw,
4778 &feature_des,
4743 &feature_avr0,
4744 &feature_movw,
4745 &feature_spmx,
47794746 &feature_xmegau,
47804747 },
47814748};
......@@ -4784,23 +4751,23 @@ pub const cpu_atxmega64a4u = Cpu{
47844751 .name = "atxmega64a4u",
47854752 .llvm_name = "atxmega64a4u",
47864753 .subfeatures = &[_]*const Feature {
4754 &feature_spm,
47874755 &feature_lpmx,
4756 &feature_des,
47884757 &feature_ijmpcall,
47894758 &feature_jmpcall,
4790 &feature_movw,
47914759 &feature_sram,
4792 &feature_mul,
4793 &feature_avr0,
4794 &feature_spmx,
4795 &feature_lpm,
47964760 &feature_rmw,
4761 &feature_addsubiw,
4762 &feature_elpm,
47974763 &feature_eijmpcall,
4764 &feature_mul,
47984765 &feature_break,
4799 &feature_spm,
4766 &feature_lpm,
48004767 &feature_elpmx,
4801 &feature_elpm,
4802 &feature_addsubiw,
4803 &feature_des,
4768 &feature_avr0,
4769 &feature_movw,
4770 &feature_spmx,
48044771 &feature_xmegau,
48054772 },
48064773};
......@@ -4809,23 +4776,23 @@ pub const cpu_atxmega64b1 = Cpu{
48094776 .name = "atxmega64b1",
48104777 .llvm_name = "atxmega64b1",
48114778 .subfeatures = &[_]*const Feature {
4779 &feature_spm,
48124780 &feature_lpmx,
4781 &feature_des,
48134782 &feature_ijmpcall,
48144783 &feature_jmpcall,
4815 &feature_movw,
48164784 &feature_sram,
4817 &feature_mul,
4818 &feature_avr0,
4819 &feature_spmx,
4820 &feature_lpm,
48214785 &feature_rmw,
4786 &feature_addsubiw,
4787 &feature_elpm,
48224788 &feature_eijmpcall,
4789 &feature_mul,
48234790 &feature_break,
4824 &feature_spm,
4791 &feature_lpm,
48254792 &feature_elpmx,
4826 &feature_elpm,
4827 &feature_addsubiw,
4828 &feature_des,
4793 &feature_avr0,
4794 &feature_movw,
4795 &feature_spmx,
48294796 &feature_xmegau,
48304797 },
48314798};
......@@ -4834,23 +4801,23 @@ pub const cpu_atxmega64b3 = Cpu{
48344801 .name = "atxmega64b3",
48354802 .llvm_name = "atxmega64b3",
48364803 .subfeatures = &[_]*const Feature {
4804 &feature_spm,
48374805 &feature_lpmx,
4806 &feature_des,
48384807 &feature_ijmpcall,
48394808 &feature_jmpcall,
4840 &feature_movw,
48414809 &feature_sram,
4842 &feature_mul,
4843 &feature_avr0,
4844 &feature_spmx,
4845 &feature_lpm,
48464810 &feature_rmw,
4811 &feature_addsubiw,
4812 &feature_elpm,
48474813 &feature_eijmpcall,
4814 &feature_mul,
48484815 &feature_break,
4849 &feature_spm,
4816 &feature_lpm,
48504817 &feature_elpmx,
4851 &feature_elpm,
4852 &feature_addsubiw,
4853 &feature_des,
4818 &feature_avr0,
4819 &feature_movw,
4820 &feature_spmx,
48544821 &feature_xmegau,
48554822 },
48564823};
......@@ -4859,23 +4826,23 @@ pub const cpu_atxmega64c3 = Cpu{
48594826 .name = "atxmega64c3",
48604827 .llvm_name = "atxmega64c3",
48614828 .subfeatures = &[_]*const Feature {
4829 &feature_spm,
48624830 &feature_lpmx,
4831 &feature_des,
48634832 &feature_ijmpcall,
48644833 &feature_jmpcall,
4865 &feature_movw,
48664834 &feature_sram,
4867 &feature_mul,
4868 &feature_avr0,
4869 &feature_spmx,
4870 &feature_lpm,
48714835 &feature_rmw,
4836 &feature_addsubiw,
4837 &feature_elpm,
48724838 &feature_eijmpcall,
4839 &feature_mul,
48734840 &feature_break,
4874 &feature_spm,
4841 &feature_lpm,
48754842 &feature_elpmx,
4876 &feature_elpm,
4877 &feature_addsubiw,
4878 &feature_des,
4843 &feature_avr0,
4844 &feature_movw,
4845 &feature_spmx,
48794846 &feature_xmegau,
48804847 },
48814848};
......@@ -4884,22 +4851,22 @@ pub const cpu_atxmega64d3 = Cpu{
48844851 .name = "atxmega64d3",
48854852 .llvm_name = "atxmega64d3",
48864853 .subfeatures = &[_]*const Feature {
4854 &feature_spm,
48874855 &feature_lpmx,
4888 &feature_jmpcall,
4856 &feature_des,
48894857 &feature_ijmpcall,
4890 &feature_movw,
4858 &feature_jmpcall,
48914859 &feature_sram,
4892 &feature_mul,
4893 &feature_avr0,
4894 &feature_spmx,
4895 &feature_lpm,
4860 &feature_addsubiw,
4861 &feature_elpm,
48964862 &feature_eijmpcall,
4863 &feature_mul,
48974864 &feature_break,
4898 &feature_spm,
4865 &feature_lpm,
48994866 &feature_elpmx,
4900 &feature_elpm,
4901 &feature_addsubiw,
4902 &feature_des,
4867 &feature_avr0,
4868 &feature_movw,
4869 &feature_spmx,
49034870 &feature_xmega,
49044871 },
49054872};
......@@ -4908,22 +4875,22 @@ pub const cpu_atxmega64d4 = Cpu{
49084875 .name = "atxmega64d4",
49094876 .llvm_name = "atxmega64d4",
49104877 .subfeatures = &[_]*const Feature {
4878 &feature_spm,
49114879 &feature_lpmx,
4912 &feature_jmpcall,
4880 &feature_des,
49134881 &feature_ijmpcall,
4914 &feature_movw,
4882 &feature_jmpcall,
49154883 &feature_sram,
4916 &feature_mul,
4917 &feature_avr0,
4918 &feature_spmx,
4919 &feature_lpm,
4884 &feature_addsubiw,
4885 &feature_elpm,
49204886 &feature_eijmpcall,
4887 &feature_mul,
49214888 &feature_break,
4922 &feature_spm,
4889 &feature_lpm,
49234890 &feature_elpmx,
4924 &feature_elpm,
4925 &feature_addsubiw,
4926 &feature_des,
4891 &feature_avr0,
4892 &feature_movw,
4893 &feature_spmx,
49274894 &feature_xmega,
49284895 },
49294896};
......@@ -4932,22 +4899,22 @@ pub const cpu_atxmega8e5 = Cpu{
49324899 .name = "atxmega8e5",
49334900 .llvm_name = "atxmega8e5",
49344901 .subfeatures = &[_]*const Feature {
4902 &feature_spm,
49354903 &feature_lpmx,
4936 &feature_jmpcall,
4904 &feature_des,
49374905 &feature_ijmpcall,
4938 &feature_movw,
4939 &feature_sram,
4940 &feature_mul,
4941 &feature_avr0,
4942 &feature_spmx,
4943 &feature_lpm,
4906 &feature_jmpcall,
4907 &feature_sram,
4908 &feature_addsubiw,
4909 &feature_elpm,
49444910 &feature_eijmpcall,
4911 &feature_mul,
49454912 &feature_break,
4946 &feature_spm,
4913 &feature_lpm,
49474914 &feature_elpmx,
4948 &feature_elpm,
4949 &feature_addsubiw,
4950 &feature_des,
4915 &feature_avr0,
4916 &feature_movw,
4917 &feature_spmx,
49514918 &feature_xmega,
49524919 },
49534920};
......@@ -4956,8 +4923,8 @@ pub const cpu_avr1 = Cpu{
49564923 .name = "avr1",
49574924 .llvm_name = "avr1",
49584925 .subfeatures = &[_]*const Feature {
4959 &feature_avr0,
49604926 &feature_lpm,
4927 &feature_avr0,
49614928 &feature_avr1,
49624929 },
49634930};
......@@ -4968,9 +4935,9 @@ pub const cpu_avr2 = Cpu{
49684935 .subfeatures = &[_]*const Feature {
49694936 &feature_ijmpcall,
49704937 &feature_sram,
4971 &feature_avr0,
4972 &feature_lpm,
49734938 &feature_addsubiw,
4939 &feature_lpm,
4940 &feature_avr0,
49744941 &feature_avr2,
49754942 },
49764943};
......@@ -4979,15 +4946,15 @@ pub const cpu_avr25 = Cpu{
49794946 .name = "avr25",
49804947 .llvm_name = "avr25",
49814948 .subfeatures = &[_]*const Feature {
4949 &feature_spm,
49824950 &feature_lpmx,
49834951 &feature_ijmpcall,
4984 &feature_movw,
49854952 &feature_sram,
4986 &feature_avr0,
4987 &feature_lpm,
4988 &feature_break,
4989 &feature_spm,
49904953 &feature_addsubiw,
4954 &feature_break,
4955 &feature_lpm,
4956 &feature_avr0,
4957 &feature_movw,
49914958 &feature_avr25,
49924959 },
49934960};
......@@ -4999,9 +4966,9 @@ pub const cpu_avr3 = Cpu{
49994966 &feature_ijmpcall,
50004967 &feature_jmpcall,
50014968 &feature_sram,
5002 &feature_avr0,
5003 &feature_lpm,
50044969 &feature_addsubiw,
4970 &feature_lpm,
4971 &feature_avr0,
50054972 &feature_avr3,
50064973 },
50074974};
......@@ -5010,13 +4977,13 @@ pub const cpu_avr31 = Cpu{
50104977 .name = "avr31",
50114978 .llvm_name = "avr31",
50124979 .subfeatures = &[_]*const Feature {
5013 &feature_jmpcall,
50144980 &feature_ijmpcall,
4981 &feature_jmpcall,
50154982 &feature_sram,
5016 &feature_avr0,
5017 &feature_lpm,
5018 &feature_elpm,
50194983 &feature_addsubiw,
4984 &feature_elpm,
4985 &feature_lpm,
4986 &feature_avr0,
50204987 &feature_avr31,
50214988 },
50224989};
......@@ -5025,16 +4992,16 @@ pub const cpu_avr35 = Cpu{
50254992 .name = "avr35",
50264993 .llvm_name = "avr35",
50274994 .subfeatures = &[_]*const Feature {
4995 &feature_spm,
50284996 &feature_lpmx,
5029 &feature_jmpcall,
50304997 &feature_ijmpcall,
5031 &feature_movw,
4998 &feature_jmpcall,
50324999 &feature_sram,
5033 &feature_avr0,
5034 &feature_lpm,
5035 &feature_break,
5036 &feature_spm,
50375000 &feature_addsubiw,
5001 &feature_break,
5002 &feature_lpm,
5003 &feature_avr0,
5004 &feature_movw,
50385005 &feature_avr35,
50395006 },
50405007};
......@@ -5043,16 +5010,16 @@ pub const cpu_avr4 = Cpu{
50435010 .name = "avr4",
50445011 .llvm_name = "avr4",
50455012 .subfeatures = &[_]*const Feature {
5013 &feature_spm,
50465014 &feature_lpmx,
50475015 &feature_ijmpcall,
5048 &feature_movw,
50495016 &feature_sram,
5017 &feature_addsubiw,
50505018 &feature_mul,
5051 &feature_avr0,
5052 &feature_lpm,
50535019 &feature_break,
5054 &feature_spm,
5055 &feature_addsubiw,
5020 &feature_lpm,
5021 &feature_avr0,
5022 &feature_movw,
50565023 &feature_avr4,
50575024 },
50585025};
......@@ -5061,17 +5028,17 @@ pub const cpu_avr5 = Cpu{
50615028 .name = "avr5",
50625029 .llvm_name = "avr5",
50635030 .subfeatures = &[_]*const Feature {
5031 &feature_spm,
50645032 &feature_lpmx,
5065 &feature_jmpcall,
50665033 &feature_ijmpcall,
5067 &feature_movw,
5034 &feature_jmpcall,
50685035 &feature_sram,
5036 &feature_addsubiw,
50695037 &feature_mul,
5070 &feature_avr0,
5071 &feature_lpm,
50725038 &feature_break,
5073 &feature_spm,
5074 &feature_addsubiw,
5039 &feature_lpm,
5040 &feature_avr0,
5041 &feature_movw,
50755042 &feature_avr5,
50765043 },
50775044};
......@@ -5080,19 +5047,19 @@ pub const cpu_avr51 = Cpu{
50805047 .name = "avr51",
50815048 .llvm_name = "avr51",
50825049 .subfeatures = &[_]*const Feature {
5050 &feature_spm,
50835051 &feature_lpmx,
50845052 &feature_ijmpcall,
50855053 &feature_jmpcall,
5086 &feature_movw,
50875054 &feature_sram,
5055 &feature_addsubiw,
5056 &feature_elpm,
50885057 &feature_mul,
5089 &feature_avr0,
5090 &feature_lpm,
50915058 &feature_break,
5092 &feature_spm,
5059 &feature_lpm,
50935060 &feature_elpmx,
5094 &feature_elpm,
5095 &feature_addsubiw,
5061 &feature_avr0,
5062 &feature_movw,
50965063 &feature_avr51,
50975064 },
50985065};
......@@ -5101,19 +5068,19 @@ pub const cpu_avr6 = Cpu{
51015068 .name = "avr6",
51025069 .llvm_name = "avr6",
51035070 .subfeatures = &[_]*const Feature {
5071 &feature_spm,
51045072 &feature_lpmx,
5105 &feature_jmpcall,
51065073 &feature_ijmpcall,
5107 &feature_movw,
5074 &feature_jmpcall,
51085075 &feature_sram,
5076 &feature_addsubiw,
5077 &feature_elpm,
51095078 &feature_mul,
5110 &feature_avr0,
5111 &feature_lpm,
51125079 &feature_break,
5113 &feature_spm,
5080 &feature_lpm,
51145081 &feature_elpmx,
5115 &feature_elpm,
5116 &feature_addsubiw,
5082 &feature_avr0,
5083 &feature_movw,
51175084 &feature_avr6,
51185085 },
51195086};
......@@ -5122,10 +5089,10 @@ pub const cpu_avrtiny = Cpu{
51225089 .name = "avrtiny",
51235090 .llvm_name = "avrtiny",
51245091 .subfeatures = &[_]*const Feature {
5125 &feature_tinyencoding,
5092 &feature_avr0,
51265093 &feature_sram,
5094 &feature_tinyencoding,
51275095 &feature_break,
5128 &feature_avr0,
51295096 &feature_avrtiny,
51305097 },
51315098};
......@@ -5134,22 +5101,22 @@ pub const cpu_avrxmega1 = Cpu{
51345101 .name = "avrxmega1",
51355102 .llvm_name = "avrxmega1",
51365103 .subfeatures = &[_]*const Feature {
5104 &feature_spm,
51375105 &feature_lpmx,
5138 &feature_jmpcall,
5106 &feature_des,
51395107 &feature_ijmpcall,
5140 &feature_movw,
5108 &feature_jmpcall,
51415109 &feature_sram,
5142 &feature_mul,
5143 &feature_avr0,
5144 &feature_spmx,
5145 &feature_lpm,
5110 &feature_addsubiw,
5111 &feature_elpm,
51465112 &feature_eijmpcall,
5113 &feature_mul,
51475114 &feature_break,
5148 &feature_spm,
5115 &feature_lpm,
51495116 &feature_elpmx,
5150 &feature_elpm,
5151 &feature_addsubiw,
5152 &feature_des,
5117 &feature_avr0,
5118 &feature_movw,
5119 &feature_spmx,
51535120 &feature_xmega,
51545121 },
51555122};
......@@ -5158,22 +5125,22 @@ pub const cpu_avrxmega2 = Cpu{
51585125 .name = "avrxmega2",
51595126 .llvm_name = "avrxmega2",
51605127 .subfeatures = &[_]*const Feature {
5128 &feature_spm,
51615129 &feature_lpmx,
5162 &feature_jmpcall,
5130 &feature_des,
51635131 &feature_ijmpcall,
5164 &feature_movw,
5132 &feature_jmpcall,
51655133 &feature_sram,
5166 &feature_mul,
5167 &feature_avr0,
5168 &feature_spmx,
5169 &feature_lpm,
5134 &feature_addsubiw,
5135 &feature_elpm,
51705136 &feature_eijmpcall,
5137 &feature_mul,
51715138 &feature_break,
5172 &feature_spm,
5139 &feature_lpm,
51735140 &feature_elpmx,
5174 &feature_elpm,
5175 &feature_addsubiw,
5176 &feature_des,
5141 &feature_avr0,
5142 &feature_movw,
5143 &feature_spmx,
51775144 &feature_xmega,
51785145 },
51795146};
......@@ -5182,22 +5149,22 @@ pub const cpu_avrxmega3 = Cpu{
51825149 .name = "avrxmega3",
51835150 .llvm_name = "avrxmega3",
51845151 .subfeatures = &[_]*const Feature {
5152 &feature_spm,
51855153 &feature_lpmx,
5186 &feature_jmpcall,
5154 &feature_des,
51875155 &feature_ijmpcall,
5188 &feature_movw,
5156 &feature_jmpcall,
51895157 &feature_sram,
5190 &feature_mul,
5191 &feature_avr0,
5192 &feature_spmx,
5193 &feature_lpm,
5158 &feature_addsubiw,
5159 &feature_elpm,
51945160 &feature_eijmpcall,
5161 &feature_mul,
51955162 &feature_break,
5196 &feature_spm,
5163 &feature_lpm,
51975164 &feature_elpmx,
5198 &feature_elpm,
5199 &feature_addsubiw,
5200 &feature_des,
5165 &feature_avr0,
5166 &feature_movw,
5167 &feature_spmx,
52015168 &feature_xmega,
52025169 },
52035170};
......@@ -5206,22 +5173,22 @@ pub const cpu_avrxmega4 = Cpu{
52065173 .name = "avrxmega4",
52075174 .llvm_name = "avrxmega4",
52085175 .subfeatures = &[_]*const Feature {
5176 &feature_spm,
52095177 &feature_lpmx,
5210 &feature_jmpcall,
5178 &feature_des,
52115179 &feature_ijmpcall,
5212 &feature_movw,
5180 &feature_jmpcall,
52135181 &feature_sram,
5214 &feature_mul,
5215 &feature_avr0,
5216 &feature_spmx,
5217 &feature_lpm,
5182 &feature_addsubiw,
5183 &feature_elpm,
52185184 &feature_eijmpcall,
5185 &feature_mul,
52195186 &feature_break,
5220 &feature_spm,
5187 &feature_lpm,
52215188 &feature_elpmx,
5222 &feature_elpm,
5223 &feature_addsubiw,
5224 &feature_des,
5189 &feature_avr0,
5190 &feature_movw,
5191 &feature_spmx,
52255192 &feature_xmega,
52265193 },
52275194};
......@@ -5230,22 +5197,22 @@ pub const cpu_avrxmega5 = Cpu{
52305197 .name = "avrxmega5",
52315198 .llvm_name = "avrxmega5",
52325199 .subfeatures = &[_]*const Feature {
5200 &feature_spm,
52335201 &feature_lpmx,
5234 &feature_jmpcall,
5202 &feature_des,
52355203 &feature_ijmpcall,
5236 &feature_movw,
5204 &feature_jmpcall,
52375205 &feature_sram,
5238 &feature_mul,
5239 &feature_avr0,
5240 &feature_spmx,
5241 &feature_lpm,
5206 &feature_addsubiw,
5207 &feature_elpm,
52425208 &feature_eijmpcall,
5209 &feature_mul,
52435210 &feature_break,
5244 &feature_spm,
5211 &feature_lpm,
52455212 &feature_elpmx,
5246 &feature_elpm,
5247 &feature_addsubiw,
5248 &feature_des,
5213 &feature_avr0,
5214 &feature_movw,
5215 &feature_spmx,
52495216 &feature_xmega,
52505217 },
52515218};
......@@ -5254,22 +5221,22 @@ pub const cpu_avrxmega6 = Cpu{
52545221 .name = "avrxmega6",
52555222 .llvm_name = "avrxmega6",
52565223 .subfeatures = &[_]*const Feature {
5224 &feature_spm,
52575225 &feature_lpmx,
5258 &feature_jmpcall,
5226 &feature_des,
52595227 &feature_ijmpcall,
5260 &feature_movw,
5228 &feature_jmpcall,
52615229 &feature_sram,
5262 &feature_mul,
5263 &feature_avr0,
5264 &feature_spmx,
5265 &feature_lpm,
5230 &feature_addsubiw,
5231 &feature_elpm,
52665232 &feature_eijmpcall,
5233 &feature_mul,
52675234 &feature_break,
5268 &feature_spm,
5235 &feature_lpm,
52695236 &feature_elpmx,
5270 &feature_elpm,
5271 &feature_addsubiw,
5272 &feature_des,
5237 &feature_avr0,
5238 &feature_movw,
5239 &feature_spmx,
52735240 &feature_xmega,
52745241 },
52755242};
......@@ -5278,22 +5245,22 @@ pub const cpu_avrxmega7 = Cpu{
52785245 .name = "avrxmega7",
52795246 .llvm_name = "avrxmega7",
52805247 .subfeatures = &[_]*const Feature {
5248 &feature_spm,
52815249 &feature_lpmx,
5282 &feature_jmpcall,
5250 &feature_des,
52835251 &feature_ijmpcall,
5284 &feature_movw,
5252 &feature_jmpcall,
52855253 &feature_sram,
5286 &feature_mul,
5287 &feature_avr0,
5288 &feature_spmx,
5289 &feature_lpm,
5254 &feature_addsubiw,
5255 &feature_elpm,
52905256 &feature_eijmpcall,
5257 &feature_mul,
52915258 &feature_break,
5292 &feature_spm,
5259 &feature_lpm,
52935260 &feature_elpmx,
5294 &feature_elpm,
5295 &feature_addsubiw,
5296 &feature_des,
5261 &feature_avr0,
5262 &feature_movw,
5263 &feature_spmx,
52975264 &feature_xmega,
52985265 },
52995266};
......@@ -5302,17 +5269,17 @@ pub const cpu_m3000 = Cpu{
53025269 .name = "m3000",
53035270 .llvm_name = "m3000",
53045271 .subfeatures = &[_]*const Feature {
5272 &feature_spm,
53055273 &feature_lpmx,
5306 &feature_jmpcall,
53075274 &feature_ijmpcall,
5308 &feature_movw,
5275 &feature_jmpcall,
53095276 &feature_sram,
5277 &feature_addsubiw,
53105278 &feature_mul,
5311 &feature_avr0,
5312 &feature_lpm,
53135279 &feature_break,
5314 &feature_spm,
5315 &feature_addsubiw,
5280 &feature_lpm,
5281 &feature_avr0,
5282 &feature_movw,
53165283 &feature_avr5,
53175284 },
53185285};
lib/std/target/bpf.zig-3
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_alu32 = Feature{
55 .name = "alu32",
66 .description = "Enable ALU32 instructions",
7 .llvm_name = "alu32",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_alu32 = Feature{
1211pub const feature_dummy = Feature{
1312 .name = "dummy",
1413 .description = "unused feature",
15 .llvm_name = "dummy",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_dummy = Feature{
2018pub const feature_dwarfris = Feature{
2119 .name = "dwarfris",
2220 .description = "Disable MCAsmInfo DwarfUsesRelocationsAcrossSections",
23 .llvm_name = "dwarfris",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
lib/std/target/hexagon.zig-24
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_v5 = Feature{
55 .name = "v5",
66 .description = "Enable Hexagon V5 architecture",
7 .llvm_name = "v5",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_v5 = Feature{
1211pub const feature_v55 = Feature{
1312 .name = "v55",
1413 .description = "Enable Hexagon V55 architecture",
15 .llvm_name = "v55",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_v55 = Feature{
2018pub const feature_v60 = Feature{
2119 .name = "v60",
2220 .description = "Enable Hexagon V60 architecture",
23 .llvm_name = "v60",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_v60 = Feature{
2825pub const feature_v62 = Feature{
2926 .name = "v62",
3027 .description = "Enable Hexagon V62 architecture",
31 .llvm_name = "v62",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_v62 = Feature{
3632pub const feature_v65 = Feature{
3733 .name = "v65",
3834 .description = "Enable Hexagon V65 architecture",
39 .llvm_name = "v65",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_v65 = Feature{
4439pub const feature_v66 = Feature{
4540 .name = "v66",
4641 .description = "Enable Hexagon V66 architecture",
47 .llvm_name = "v66",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_v66 = Feature{
5246pub const feature_hvx = Feature{
5347 .name = "hvx",
5448 .description = "Hexagon HVX instructions",
55 .llvm_name = "hvx",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_hvx = Feature{
6053pub const feature_hvxLength64b = Feature{
6154 .name = "hvx-length64b",
6255 .description = "Hexagon HVX 64B instructions",
63 .llvm_name = "hvx-length64b",
6456 .subfeatures = &[_]*const Feature {
6557 &feature_hvx,
6658 },
......@@ -69,7 +61,6 @@ pub const feature_hvxLength64b = Feature{
6961pub const feature_hvxLength128b = Feature{
7062 .name = "hvx-length128b",
7163 .description = "Hexagon HVX 128B instructions",
72 .llvm_name = "hvx-length128b",
7364 .subfeatures = &[_]*const Feature {
7465 &feature_hvx,
7566 },
......@@ -78,7 +69,6 @@ pub const feature_hvxLength128b = Feature{
7869pub const feature_hvxv60 = Feature{
7970 .name = "hvxv60",
8071 .description = "Hexagon HVX instructions",
81 .llvm_name = "hvxv60",
8272 .subfeatures = &[_]*const Feature {
8373 &feature_hvx,
8474 },
......@@ -87,7 +77,6 @@ pub const feature_hvxv60 = Feature{
8777pub const feature_hvxv62 = Feature{
8878 .name = "hvxv62",
8979 .description = "Hexagon HVX instructions",
90 .llvm_name = "hvxv62",
9180 .subfeatures = &[_]*const Feature {
9281 &feature_hvx,
9382 },
......@@ -96,7 +85,6 @@ pub const feature_hvxv62 = Feature{
9685pub const feature_hvxv65 = Feature{
9786 .name = "hvxv65",
9887 .description = "Hexagon HVX instructions",
99 .llvm_name = "hvxv65",
10088 .subfeatures = &[_]*const Feature {
10189 &feature_hvx,
10290 },
......@@ -105,7 +93,6 @@ pub const feature_hvxv65 = Feature{
10593pub const feature_hvxv66 = Feature{
10694 .name = "hvxv66",
10795 .description = "Hexagon HVX instructions",
108 .llvm_name = "hvxv66",
10996 .subfeatures = &[_]*const Feature {
11097 &feature_zreg,
11198 &feature_hvx,
......@@ -115,7 +102,6 @@ pub const feature_hvxv66 = Feature{
115102pub const feature_zreg = Feature{
116103 .name = "zreg",
117104 .description = "Hexagon ZReg extension instructions",
118 .llvm_name = "zreg",
119105 .subfeatures = &[_]*const Feature {
120106 },
121107};
......@@ -123,7 +109,6 @@ pub const feature_zreg = Feature{
123109pub const feature_duplex = Feature{
124110 .name = "duplex",
125111 .description = "Enable generation of duplex instruction",
126 .llvm_name = "duplex",
127112 .subfeatures = &[_]*const Feature {
128113 },
129114};
......@@ -131,7 +116,6 @@ pub const feature_duplex = Feature{
131116pub const feature_longCalls = Feature{
132117 .name = "long-calls",
133118 .description = "Use constant-extended calls",
134 .llvm_name = "long-calls",
135119 .subfeatures = &[_]*const Feature {
136120 },
137121};
......@@ -139,7 +123,6 @@ pub const feature_longCalls = Feature{
139123pub const feature_mem_noshuf = Feature{
140124 .name = "mem_noshuf",
141125 .description = "Supports mem_noshuf feature",
142 .llvm_name = "mem_noshuf",
143126 .subfeatures = &[_]*const Feature {
144127 },
145128};
......@@ -147,7 +130,6 @@ pub const feature_mem_noshuf = Feature{
147130pub const feature_memops = Feature{
148131 .name = "memops",
149132 .description = "Use memop instructions",
150 .llvm_name = "memops",
151133 .subfeatures = &[_]*const Feature {
152134 },
153135};
......@@ -155,7 +137,6 @@ pub const feature_memops = Feature{
155137pub const feature_nvj = Feature{
156138 .name = "nvj",
157139 .description = "Support for new-value jumps",
158 .llvm_name = "nvj",
159140 .subfeatures = &[_]*const Feature {
160141 &feature_packets,
161142 },
......@@ -164,7 +145,6 @@ pub const feature_nvj = Feature{
164145pub const feature_nvs = Feature{
165146 .name = "nvs",
166147 .description = "Support for new-value stores",
167 .llvm_name = "nvs",
168148 .subfeatures = &[_]*const Feature {
169149 &feature_packets,
170150 },
......@@ -173,7 +153,6 @@ pub const feature_nvs = Feature{
173153pub const feature_noreturnStackElim = Feature{
174154 .name = "noreturn-stack-elim",
175155 .description = "Eliminate stack allocation in a noreturn function when possible",
176 .llvm_name = "noreturn-stack-elim",
177156 .subfeatures = &[_]*const Feature {
178157 },
179158};
......@@ -181,7 +160,6 @@ pub const feature_noreturnStackElim = Feature{
181160pub const feature_packets = Feature{
182161 .name = "packets",
183162 .description = "Support for instruction packets",
184 .llvm_name = "packets",
185163 .subfeatures = &[_]*const Feature {
186164 },
187165};
......@@ -189,7 +167,6 @@ pub const feature_packets = Feature{
189167pub const feature_reservedR19 = Feature{
190168 .name = "reserved-r19",
191169 .description = "Reserve register R19",
192 .llvm_name = "reserved-r19",
193170 .subfeatures = &[_]*const Feature {
194171 },
195172};
......@@ -197,7 +174,6 @@ pub const feature_reservedR19 = Feature{
197174pub const feature_smallData = Feature{
198175 .name = "small-data",
199176 .description = "Allow GP-relative addressing of global variables",
200 .llvm_name = "small-data",
201177 .subfeatures = &[_]*const Feature {
202178 },
203179};
lib/std/target/mips.zig+120-170
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_abs2008 = Feature{
55 .name = "abs2008",
66 .description = "Disable IEEE 754-2008 abs.fmt mode",
7 .llvm_name = "abs2008",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_abs2008 = Feature{
1211pub const feature_crc = Feature{
1312 .name = "crc",
1413 .description = "Mips R6 CRC ASE",
15 .llvm_name = "crc",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,23 +18,21 @@ pub const feature_crc = Feature{
2018pub const feature_cnmips = Feature{
2119 .name = "cnmips",
2220 .description = "Octeon cnMIPS Support",
23 .llvm_name = "cnmips",
2421 .subfeatures = &[_]*const Feature {
25 &feature_mips4_32,
2622 &feature_mips3_32r2,
27 &feature_mips1,
28 &feature_gp64,
29 &feature_mips4_32r2,
30 &feature_mips5_32r2,
3123 &feature_mips3_32,
24 &feature_mips4_32r2,
25 &feature_mips1,
3226 &feature_fp64,
27 &feature_mips5_32r2,
28 &feature_gp64,
29 &feature_mips4_32,
3330 },
3431};
3532
3633pub const feature_dsp = Feature{
3734 .name = "dsp",
3835 .description = "Mips DSP ASE",
39 .llvm_name = "dsp",
4036 .subfeatures = &[_]*const Feature {
4137 },
4238};
......@@ -44,7 +40,6 @@ pub const feature_dsp = Feature{
4440pub const feature_dspr2 = Feature{
4541 .name = "dspr2",
4642 .description = "Mips DSP-R2 ASE",
47 .llvm_name = "dspr2",
4843 .subfeatures = &[_]*const Feature {
4944 &feature_dsp,
5045 },
......@@ -53,7 +48,6 @@ pub const feature_dspr2 = Feature{
5348pub const feature_dspr3 = Feature{
5449 .name = "dspr3",
5550 .description = "Mips DSP-R3 ASE",
56 .llvm_name = "dspr3",
5751 .subfeatures = &[_]*const Feature {
5852 &feature_dsp,
5953 },
......@@ -62,7 +56,6 @@ pub const feature_dspr3 = Feature{
6256pub const feature_eva = Feature{
6357 .name = "eva",
6458 .description = "Mips EVA ASE",
65 .llvm_name = "eva",
6659 .subfeatures = &[_]*const Feature {
6760 },
6861};
......@@ -70,7 +63,6 @@ pub const feature_eva = Feature{
7063pub const feature_fp64 = Feature{
7164 .name = "fp64",
7265 .description = "Support 64-bit FP registers",
73 .llvm_name = "fp64",
7466 .subfeatures = &[_]*const Feature {
7567 },
7668};
......@@ -78,7 +70,6 @@ pub const feature_fp64 = Feature{
7870pub const feature_fpxx = Feature{
7971 .name = "fpxx",
8072 .description = "Support for FPXX",
81 .llvm_name = "fpxx",
8273 .subfeatures = &[_]*const Feature {
8374 },
8475};
......@@ -86,7 +77,6 @@ pub const feature_fpxx = Feature{
8677pub const feature_ginv = Feature{
8778 .name = "ginv",
8879 .description = "Mips Global Invalidate ASE",
89 .llvm_name = "ginv",
9080 .subfeatures = &[_]*const Feature {
9181 },
9282};
......@@ -94,7 +84,6 @@ pub const feature_ginv = Feature{
9484pub const feature_gp64 = Feature{
9585 .name = "gp64",
9686 .description = "General Purpose Registers are 64-bit wide",
97 .llvm_name = "gp64",
9887 .subfeatures = &[_]*const Feature {
9988 },
10089};
......@@ -102,7 +91,6 @@ pub const feature_gp64 = Feature{
10291pub const feature_longCalls = Feature{
10392 .name = "long-calls",
10493 .description = "Disable use of the jal instruction",
105 .llvm_name = "long-calls",
10694 .subfeatures = &[_]*const Feature {
10795 },
10896};
......@@ -110,7 +98,6 @@ pub const feature_longCalls = Feature{
11098pub const feature_msa = Feature{
11199 .name = "msa",
112100 .description = "Mips MSA ASE",
113 .llvm_name = "msa",
114101 .subfeatures = &[_]*const Feature {
115102 },
116103};
......@@ -118,7 +105,6 @@ pub const feature_msa = Feature{
118105pub const feature_mt = Feature{
119106 .name = "mt",
120107 .description = "Mips MT ASE",
121 .llvm_name = "mt",
122108 .subfeatures = &[_]*const Feature {
123109 },
124110};
......@@ -126,7 +112,6 @@ pub const feature_mt = Feature{
126112pub const feature_nomadd4 = Feature{
127113 .name = "nomadd4",
128114 .description = "Disable 4-operand madd.fmt and related instructions",
129 .llvm_name = "nomadd4",
130115 .subfeatures = &[_]*const Feature {
131116 },
132117};
......@@ -134,7 +119,6 @@ pub const feature_nomadd4 = Feature{
134119pub const feature_micromips = Feature{
135120 .name = "micromips",
136121 .description = "microMips mode",
137 .llvm_name = "micromips",
138122 .subfeatures = &[_]*const Feature {
139123 },
140124};
......@@ -142,7 +126,6 @@ pub const feature_micromips = Feature{
142126pub const feature_mips1 = Feature{
143127 .name = "mips1",
144128 .description = "Mips I ISA Support [highly experimental]",
145 .llvm_name = "mips1",
146129 .subfeatures = &[_]*const Feature {
147130 },
148131};
......@@ -150,7 +133,6 @@ pub const feature_mips1 = Feature{
150133pub const feature_mips2 = Feature{
151134 .name = "mips2",
152135 .description = "Mips II ISA Support [highly experimental]",
153 .llvm_name = "mips2",
154136 .subfeatures = &[_]*const Feature {
155137 &feature_mips1,
156138 },
......@@ -159,20 +141,18 @@ pub const feature_mips2 = Feature{
159141pub const feature_mips3 = Feature{
160142 .name = "mips3",
161143 .description = "MIPS III ISA Support [highly experimental]",
162 .llvm_name = "mips3",
163144 .subfeatures = &[_]*const Feature {
164145 &feature_mips3_32r2,
165 &feature_mips1,
166 &feature_gp64,
167146 &feature_mips3_32,
147 &feature_mips1,
168148 &feature_fp64,
149 &feature_gp64,
169150 },
170151};
171152
172153pub const feature_mips3_32 = Feature{
173154 .name = "mips3_32",
174155 .description = "Subset of MIPS-III that is also in MIPS32 [highly experimental]",
175 .llvm_name = "mips3_32",
176156 .subfeatures = &[_]*const Feature {
177157 },
178158};
......@@ -180,7 +160,6 @@ pub const feature_mips3_32 = Feature{
180160pub const feature_mips3_32r2 = Feature{
181161 .name = "mips3_32r2",
182162 .description = "Subset of MIPS-III that is also in MIPS32r2 [highly experimental]",
183 .llvm_name = "mips3_32r2",
184163 .subfeatures = &[_]*const Feature {
185164 },
186165};
......@@ -188,22 +167,20 @@ pub const feature_mips3_32r2 = Feature{
188167pub const feature_mips4 = Feature{
189168 .name = "mips4",
190169 .description = "MIPS IV ISA Support",
191 .llvm_name = "mips4",
192170 .subfeatures = &[_]*const Feature {
193 &feature_mips4_32,
194171 &feature_mips3_32r2,
195 &feature_mips1,
196 &feature_gp64,
197 &feature_mips4_32r2,
198172 &feature_mips3_32,
173 &feature_mips4_32r2,
174 &feature_mips1,
199175 &feature_fp64,
176 &feature_gp64,
177 &feature_mips4_32,
200178 },
201179};
202180
203181pub const feature_mips4_32 = Feature{
204182 .name = "mips4_32",
205183 .description = "Subset of MIPS-IV that is also in MIPS32 [highly experimental]",
206 .llvm_name = "mips4_32",
207184 .subfeatures = &[_]*const Feature {
208185 },
209186};
......@@ -211,7 +188,6 @@ pub const feature_mips4_32 = Feature{
211188pub const feature_mips4_32r2 = Feature{
212189 .name = "mips4_32r2",
213190 .description = "Subset of MIPS-IV that is also in MIPS32r2 [highly experimental]",
214 .llvm_name = "mips4_32r2",
215191 .subfeatures = &[_]*const Feature {
216192 },
217193};
......@@ -219,23 +195,21 @@ pub const feature_mips4_32r2 = Feature{
219195pub const feature_mips5 = Feature{
220196 .name = "mips5",
221197 .description = "MIPS V ISA Support [highly experimental]",
222 .llvm_name = "mips5",
223198 .subfeatures = &[_]*const Feature {
224 &feature_mips4_32,
225199 &feature_mips3_32r2,
226 &feature_mips1,
227 &feature_gp64,
228 &feature_mips4_32r2,
229 &feature_mips5_32r2,
230200 &feature_mips3_32,
201 &feature_mips4_32r2,
202 &feature_mips1,
231203 &feature_fp64,
204 &feature_mips5_32r2,
205 &feature_gp64,
206 &feature_mips4_32,
232207 },
233208};
234209
235210pub const feature_mips5_32r2 = Feature{
236211 .name = "mips5_32r2",
237212 .description = "Subset of MIPS-V that is also in MIPS32r2 [highly experimental]",
238 .llvm_name = "mips5_32r2",
239213 .subfeatures = &[_]*const Feature {
240214 },
241215};
......@@ -243,7 +217,6 @@ pub const feature_mips5_32r2 = Feature{
243217pub const feature_mips16 = Feature{
244218 .name = "mips16",
245219 .description = "Mips16 mode",
246 .llvm_name = "mips16",
247220 .subfeatures = &[_]*const Feature {
248221 },
249222};
......@@ -251,159 +224,148 @@ pub const feature_mips16 = Feature{
251224pub const feature_mips32 = Feature{
252225 .name = "mips32",
253226 .description = "Mips32 ISA Support",
254 .llvm_name = "mips32",
255227 .subfeatures = &[_]*const Feature {
228 &feature_mips1,
256229 &feature_mips4_32,
257230 &feature_mips3_32,
258 &feature_mips1,
259231 },
260232};
261233
262234pub const feature_mips32r2 = Feature{
263235 .name = "mips32r2",
264236 .description = "Mips32r2 ISA Support",
265 .llvm_name = "mips32r2",
266237 .subfeatures = &[_]*const Feature {
267 &feature_mips4_32,
268238 &feature_mips3_32r2,
269 &feature_mips1,
239 &feature_mips3_32,
270240 &feature_mips4_32r2,
241 &feature_mips1,
271242 &feature_mips5_32r2,
272 &feature_mips3_32,
243 &feature_mips4_32,
273244 },
274245};
275246
276247pub const feature_mips32r3 = Feature{
277248 .name = "mips32r3",
278249 .description = "Mips32r3 ISA Support",
279 .llvm_name = "mips32r3",
280250 .subfeatures = &[_]*const Feature {
281 &feature_mips4_32,
282251 &feature_mips3_32r2,
283 &feature_mips1,
252 &feature_mips3_32,
284253 &feature_mips4_32r2,
254 &feature_mips1,
285255 &feature_mips5_32r2,
286 &feature_mips3_32,
256 &feature_mips4_32,
287257 },
288258};
289259
290260pub const feature_mips32r5 = Feature{
291261 .name = "mips32r5",
292262 .description = "Mips32r5 ISA Support",
293 .llvm_name = "mips32r5",
294263 .subfeatures = &[_]*const Feature {
295 &feature_mips4_32,
296264 &feature_mips3_32r2,
297 &feature_mips1,
265 &feature_mips3_32,
298266 &feature_mips4_32r2,
267 &feature_mips1,
299268 &feature_mips5_32r2,
300 &feature_mips3_32,
269 &feature_mips4_32,
301270 },
302271};
303272
304273pub const feature_mips32r6 = Feature{
305274 .name = "mips32r6",
306275 .description = "Mips32r6 ISA Support [experimental]",
307 .llvm_name = "mips32r6",
308276 .subfeatures = &[_]*const Feature {
309 &feature_mips4_32,
310 &feature_nan2008,
311277 &feature_mips3_32r2,
278 &feature_mips3_32,
279 &feature_nan2008,
280 &feature_mips4_32r2,
312281 &feature_mips1,
313282 &feature_abs2008,
314 &feature_mips4_32r2,
315 &feature_mips5_32r2,
316 &feature_mips3_32,
317283 &feature_fp64,
284 &feature_mips5_32r2,
285 &feature_mips4_32,
318286 },
319287};
320288
321289pub const feature_mips64 = Feature{
322290 .name = "mips64",
323291 .description = "Mips64 ISA Support",
324 .llvm_name = "mips64",
325292 .subfeatures = &[_]*const Feature {
326 &feature_mips4_32,
327293 &feature_mips3_32r2,
328 &feature_mips1,
329 &feature_gp64,
330 &feature_mips4_32r2,
331 &feature_mips5_32r2,
332294 &feature_mips3_32,
295 &feature_mips4_32r2,
296 &feature_mips1,
333297 &feature_fp64,
298 &feature_mips5_32r2,
299 &feature_gp64,
300 &feature_mips4_32,
334301 },
335302};
336303
337304pub const feature_mips64r2 = Feature{
338305 .name = "mips64r2",
339306 .description = "Mips64r2 ISA Support",
340 .llvm_name = "mips64r2",
341307 .subfeatures = &[_]*const Feature {
342 &feature_mips4_32,
343308 &feature_mips3_32r2,
344 &feature_mips1,
345 &feature_gp64,
346 &feature_mips4_32r2,
347 &feature_mips5_32r2,
348309 &feature_mips3_32,
310 &feature_mips4_32r2,
311 &feature_mips1,
349312 &feature_fp64,
313 &feature_mips5_32r2,
314 &feature_gp64,
315 &feature_mips4_32,
350316 },
351317};
352318
353319pub const feature_mips64r3 = Feature{
354320 .name = "mips64r3",
355321 .description = "Mips64r3 ISA Support",
356 .llvm_name = "mips64r3",
357322 .subfeatures = &[_]*const Feature {
358 &feature_mips4_32,
359323 &feature_mips3_32r2,
360 &feature_mips1,
361 &feature_gp64,
362 &feature_mips4_32r2,
363 &feature_mips5_32r2,
364324 &feature_mips3_32,
325 &feature_mips4_32r2,
326 &feature_mips1,
365327 &feature_fp64,
328 &feature_mips5_32r2,
329 &feature_gp64,
330 &feature_mips4_32,
366331 },
367332};
368333
369334pub const feature_mips64r5 = Feature{
370335 .name = "mips64r5",
371336 .description = "Mips64r5 ISA Support",
372 .llvm_name = "mips64r5",
373337 .subfeatures = &[_]*const Feature {
374 &feature_mips4_32,
375338 &feature_mips3_32r2,
376 &feature_mips1,
377 &feature_gp64,
378 &feature_mips4_32r2,
379 &feature_mips5_32r2,
380339 &feature_mips3_32,
340 &feature_mips4_32r2,
341 &feature_mips1,
381342 &feature_fp64,
343 &feature_mips5_32r2,
344 &feature_gp64,
345 &feature_mips4_32,
382346 },
383347};
384348
385349pub const feature_mips64r6 = Feature{
386350 .name = "mips64r6",
387351 .description = "Mips64r6 ISA Support [experimental]",
388 .llvm_name = "mips64r6",
389352 .subfeatures = &[_]*const Feature {
390 &feature_mips4_32,
391 &feature_nan2008,
392353 &feature_mips3_32r2,
354 &feature_mips3_32,
355 &feature_nan2008,
356 &feature_mips4_32r2,
393357 &feature_mips1,
394358 &feature_abs2008,
395 &feature_gp64,
396 &feature_mips4_32r2,
397 &feature_mips5_32r2,
398 &feature_mips3_32,
399359 &feature_fp64,
360 &feature_mips5_32r2,
361 &feature_gp64,
362 &feature_mips4_32,
400363 },
401364};
402365
403366pub const feature_nan2008 = Feature{
404367 .name = "nan2008",
405368 .description = "IEEE 754-2008 NaN encoding",
406 .llvm_name = "nan2008",
407369 .subfeatures = &[_]*const Feature {
408370 },
409371};
......@@ -411,7 +373,6 @@ pub const feature_nan2008 = Feature{
411373pub const feature_noabicalls = Feature{
412374 .name = "noabicalls",
413375 .description = "Disable SVR4-style position-independent code",
414 .llvm_name = "noabicalls",
415376 .subfeatures = &[_]*const Feature {
416377 },
417378};
......@@ -419,7 +380,6 @@ pub const feature_noabicalls = Feature{
419380pub const feature_nooddspreg = Feature{
420381 .name = "nooddspreg",
421382 .description = "Disable odd numbered single-precision registers",
422 .llvm_name = "nooddspreg",
423383 .subfeatures = &[_]*const Feature {
424384 },
425385};
......@@ -427,7 +387,6 @@ pub const feature_nooddspreg = Feature{
427387pub const feature_ptr64 = Feature{
428388 .name = "ptr64",
429389 .description = "Pointers are 64-bit wide",
430 .llvm_name = "ptr64",
431390 .subfeatures = &[_]*const Feature {
432391 },
433392};
......@@ -435,7 +394,6 @@ pub const feature_ptr64 = Feature{
435394pub const feature_singleFloat = Feature{
436395 .name = "single-float",
437396 .description = "Only supports single precision float",
438 .llvm_name = "single-float",
439397 .subfeatures = &[_]*const Feature {
440398 },
441399};
......@@ -443,7 +401,6 @@ pub const feature_singleFloat = Feature{
443401pub const feature_softFloat = Feature{
444402 .name = "soft-float",
445403 .description = "Does not support floating point instructions",
446 .llvm_name = "soft-float",
447404 .subfeatures = &[_]*const Feature {
448405 },
449406};
......@@ -451,7 +408,6 @@ pub const feature_softFloat = Feature{
451408pub const feature_sym32 = Feature{
452409 .name = "sym32",
453410 .description = "Symbols are 32 bit on Mips64",
454 .llvm_name = "sym32",
455411 .subfeatures = &[_]*const Feature {
456412 },
457413};
......@@ -459,7 +415,6 @@ pub const feature_sym32 = Feature{
459415pub const feature_useIndirectJumpHazard = Feature{
460416 .name = "use-indirect-jump-hazard",
461417 .description = "Use indirect jump guards to prevent certain speculation based attacks",
462 .llvm_name = "use-indirect-jump-hazard",
463418 .subfeatures = &[_]*const Feature {
464419 },
465420};
......@@ -467,7 +422,6 @@ pub const feature_useIndirectJumpHazard = Feature{
467422pub const feature_useTccInDiv = Feature{
468423 .name = "use-tcc-in-div",
469424 .description = "Force the assembler to use trapping",
470 .llvm_name = "use-tcc-in-div",
471425 .subfeatures = &[_]*const Feature {
472426 },
473427};
......@@ -475,7 +429,6 @@ pub const feature_useTccInDiv = Feature{
475429pub const feature_vfpu = Feature{
476430 .name = "vfpu",
477431 .description = "Enable vector FPU instructions",
478 .llvm_name = "vfpu",
479432 .subfeatures = &[_]*const Feature {
480433 },
481434};
......@@ -483,7 +436,6 @@ pub const feature_vfpu = Feature{
483436pub const feature_virt = Feature{
484437 .name = "virt",
485438 .description = "Mips Virtualization ASE",
486 .llvm_name = "virt",
487439 .subfeatures = &[_]*const Feature {
488440 },
489441};
......@@ -491,7 +443,6 @@ pub const feature_virt = Feature{
491443pub const feature_xgot = Feature{
492444 .name = "xgot",
493445 .description = "Assume 32-bit GOT",
494 .llvm_name = "xgot",
495446 .subfeatures = &[_]*const Feature {
496447 },
497448};
......@@ -499,14 +450,13 @@ pub const feature_xgot = Feature{
499450pub const feature_p5600 = Feature{
500451 .name = "p5600",
501452 .description = "The P5600 Processor",
502 .llvm_name = "p5600",
503453 .subfeatures = &[_]*const Feature {
504 &feature_mips4_32,
505454 &feature_mips3_32r2,
506 &feature_mips1,
455 &feature_mips3_32,
507456 &feature_mips4_32r2,
457 &feature_mips1,
508458 &feature_mips5_32r2,
509 &feature_mips3_32,
459 &feature_mips4_32,
510460 },
511461};
512462
......@@ -585,10 +535,10 @@ pub const cpu_mips3 = Cpu{
585535 .llvm_name = "mips3",
586536 .subfeatures = &[_]*const Feature {
587537 &feature_mips3_32r2,
588 &feature_mips1,
589 &feature_gp64,
590538 &feature_mips3_32,
539 &feature_mips1,
591540 &feature_fp64,
541 &feature_gp64,
592542 &feature_mips3,
593543 },
594544};
......@@ -597,9 +547,9 @@ pub const cpu_mips32 = Cpu{
597547 .name = "mips32",
598548 .llvm_name = "mips32",
599549 .subfeatures = &[_]*const Feature {
550 &feature_mips1,
600551 &feature_mips4_32,
601552 &feature_mips3_32,
602 &feature_mips1,
603553 &feature_mips32,
604554 },
605555};
......@@ -608,12 +558,12 @@ pub const cpu_mips32r2 = Cpu{
608558 .name = "mips32r2",
609559 .llvm_name = "mips32r2",
610560 .subfeatures = &[_]*const Feature {
611 &feature_mips4_32,
612561 &feature_mips3_32r2,
613 &feature_mips1,
562 &feature_mips3_32,
614563 &feature_mips4_32r2,
564 &feature_mips1,
615565 &feature_mips5_32r2,
616 &feature_mips3_32,
566 &feature_mips4_32,
617567 &feature_mips32r2,
618568 },
619569};
......@@ -622,12 +572,12 @@ pub const cpu_mips32r3 = Cpu{
622572 .name = "mips32r3",
623573 .llvm_name = "mips32r3",
624574 .subfeatures = &[_]*const Feature {
625 &feature_mips4_32,
626575 &feature_mips3_32r2,
627 &feature_mips1,
576 &feature_mips3_32,
628577 &feature_mips4_32r2,
578 &feature_mips1,
629579 &feature_mips5_32r2,
630 &feature_mips3_32,
580 &feature_mips4_32,
631581 &feature_mips32r3,
632582 },
633583};
......@@ -636,12 +586,12 @@ pub const cpu_mips32r5 = Cpu{
636586 .name = "mips32r5",
637587 .llvm_name = "mips32r5",
638588 .subfeatures = &[_]*const Feature {
639 &feature_mips4_32,
640589 &feature_mips3_32r2,
641 &feature_mips1,
590 &feature_mips3_32,
642591 &feature_mips4_32r2,
592 &feature_mips1,
643593 &feature_mips5_32r2,
644 &feature_mips3_32,
594 &feature_mips4_32,
645595 &feature_mips32r5,
646596 },
647597};
......@@ -650,15 +600,15 @@ pub const cpu_mips32r6 = Cpu{
650600 .name = "mips32r6",
651601 .llvm_name = "mips32r6",
652602 .subfeatures = &[_]*const Feature {
653 &feature_mips4_32,
654 &feature_nan2008,
655603 &feature_mips3_32r2,
604 &feature_mips3_32,
605 &feature_nan2008,
606 &feature_mips4_32r2,
656607 &feature_mips1,
657608 &feature_abs2008,
658 &feature_mips4_32r2,
659 &feature_mips5_32r2,
660 &feature_mips3_32,
661609 &feature_fp64,
610 &feature_mips5_32r2,
611 &feature_mips4_32,
662612 &feature_mips32r6,
663613 },
664614};
......@@ -667,13 +617,13 @@ pub const cpu_mips4 = Cpu{
667617 .name = "mips4",
668618 .llvm_name = "mips4",
669619 .subfeatures = &[_]*const Feature {
670 &feature_mips4_32,
671620 &feature_mips3_32r2,
672 &feature_mips1,
673 &feature_gp64,
674 &feature_mips4_32r2,
675621 &feature_mips3_32,
622 &feature_mips4_32r2,
623 &feature_mips1,
676624 &feature_fp64,
625 &feature_gp64,
626 &feature_mips4_32,
677627 &feature_mips4,
678628 },
679629};
......@@ -682,14 +632,14 @@ pub const cpu_mips5 = Cpu{
682632 .name = "mips5",
683633 .llvm_name = "mips5",
684634 .subfeatures = &[_]*const Feature {
685 &feature_mips4_32,
686635 &feature_mips3_32r2,
687 &feature_mips1,
688 &feature_gp64,
689 &feature_mips4_32r2,
690 &feature_mips5_32r2,
691636 &feature_mips3_32,
637 &feature_mips4_32r2,
638 &feature_mips1,
692639 &feature_fp64,
640 &feature_mips5_32r2,
641 &feature_gp64,
642 &feature_mips4_32,
693643 &feature_mips5,
694644 },
695645};
......@@ -698,14 +648,14 @@ pub const cpu_mips64 = Cpu{
698648 .name = "mips64",
699649 .llvm_name = "mips64",
700650 .subfeatures = &[_]*const Feature {
701 &feature_mips4_32,
702651 &feature_mips3_32r2,
703 &feature_mips1,
704 &feature_gp64,
705 &feature_mips4_32r2,
706 &feature_mips5_32r2,
707652 &feature_mips3_32,
653 &feature_mips4_32r2,
654 &feature_mips1,
708655 &feature_fp64,
656 &feature_mips5_32r2,
657 &feature_gp64,
658 &feature_mips4_32,
709659 &feature_mips64,
710660 },
711661};
......@@ -714,14 +664,14 @@ pub const cpu_mips64r2 = Cpu{
714664 .name = "mips64r2",
715665 .llvm_name = "mips64r2",
716666 .subfeatures = &[_]*const Feature {
717 &feature_mips4_32,
718667 &feature_mips3_32r2,
719 &feature_mips1,
720 &feature_gp64,
721 &feature_mips4_32r2,
722 &feature_mips5_32r2,
723668 &feature_mips3_32,
669 &feature_mips4_32r2,
670 &feature_mips1,
724671 &feature_fp64,
672 &feature_mips5_32r2,
673 &feature_gp64,
674 &feature_mips4_32,
725675 &feature_mips64r2,
726676 },
727677};
......@@ -730,14 +680,14 @@ pub const cpu_mips64r3 = Cpu{
730680 .name = "mips64r3",
731681 .llvm_name = "mips64r3",
732682 .subfeatures = &[_]*const Feature {
733 &feature_mips4_32,
734683 &feature_mips3_32r2,
735 &feature_mips1,
736 &feature_gp64,
737 &feature_mips4_32r2,
738 &feature_mips5_32r2,
739684 &feature_mips3_32,
685 &feature_mips4_32r2,
686 &feature_mips1,
740687 &feature_fp64,
688 &feature_mips5_32r2,
689 &feature_gp64,
690 &feature_mips4_32,
741691 &feature_mips64r3,
742692 },
743693};
......@@ -746,14 +696,14 @@ pub const cpu_mips64r5 = Cpu{
746696 .name = "mips64r5",
747697 .llvm_name = "mips64r5",
748698 .subfeatures = &[_]*const Feature {
749 &feature_mips4_32,
750699 &feature_mips3_32r2,
751 &feature_mips1,
752 &feature_gp64,
753 &feature_mips4_32r2,
754 &feature_mips5_32r2,
755700 &feature_mips3_32,
701 &feature_mips4_32r2,
702 &feature_mips1,
756703 &feature_fp64,
704 &feature_mips5_32r2,
705 &feature_gp64,
706 &feature_mips4_32,
757707 &feature_mips64r5,
758708 },
759709};
......@@ -762,16 +712,16 @@ pub const cpu_mips64r6 = Cpu{
762712 .name = "mips64r6",
763713 .llvm_name = "mips64r6",
764714 .subfeatures = &[_]*const Feature {
765 &feature_mips4_32,
766 &feature_nan2008,
767715 &feature_mips3_32r2,
716 &feature_mips3_32,
717 &feature_nan2008,
718 &feature_mips4_32r2,
768719 &feature_mips1,
769720 &feature_abs2008,
770 &feature_gp64,
771 &feature_mips4_32r2,
772 &feature_mips5_32r2,
773 &feature_mips3_32,
774721 &feature_fp64,
722 &feature_mips5_32r2,
723 &feature_gp64,
724 &feature_mips4_32,
775725 &feature_mips64r6,
776726 },
777727};
......@@ -780,14 +730,14 @@ pub const cpu_octeon = Cpu{
780730 .name = "octeon",
781731 .llvm_name = "octeon",
782732 .subfeatures = &[_]*const Feature {
783 &feature_mips4_32,
784733 &feature_mips3_32r2,
785 &feature_mips1,
786 &feature_gp64,
787 &feature_mips4_32r2,
788 &feature_mips5_32r2,
789734 &feature_mips3_32,
735 &feature_mips4_32r2,
736 &feature_mips1,
790737 &feature_fp64,
738 &feature_mips5_32r2,
739 &feature_gp64,
740 &feature_mips4_32,
791741 &feature_cnmips,
792742 &feature_mips64r2,
793743 },
......@@ -797,12 +747,12 @@ pub const cpu_p5600 = Cpu{
797747 .name = "p5600",
798748 .llvm_name = "p5600",
799749 .subfeatures = &[_]*const Feature {
800 &feature_mips4_32,
801750 &feature_mips3_32r2,
802 &feature_mips1,
751 &feature_mips3_32,
803752 &feature_mips4_32r2,
753 &feature_mips1,
804754 &feature_mips5_32r2,
805 &feature_mips3_32,
755 &feature_mips4_32,
806756 &feature_p5600,
807757 },
808758};
lib/std/target/msp430.zig-4
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_hwmult16 = Feature{
55 .name = "hwmult16",
66 .description = "Enable 16-bit hardware multiplier",
7 .llvm_name = "hwmult16",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_hwmult16 = Feature{
1211pub const feature_hwmult32 = Feature{
1312 .name = "hwmult32",
1413 .description = "Enable 32-bit hardware multiplier",
15 .llvm_name = "hwmult32",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_hwmult32 = Feature{
2018pub const feature_hwmultf5 = Feature{
2119 .name = "hwmultf5",
2220 .description = "Enable F5 series hardware multiplier",
23 .llvm_name = "hwmultf5",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_hwmultf5 = Feature{
2825pub const feature_ext = Feature{
2926 .name = "ext",
3027 .description = "Enable MSP430-X extensions",
31 .llvm_name = "ext",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
lib/std/target/nvptx.zig-25
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_ptx32 = Feature{
55 .name = "ptx32",
66 .description = "Use PTX version 3.2",
7 .llvm_name = "ptx32",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_ptx32 = Feature{
1211pub const feature_ptx40 = Feature{
1312 .name = "ptx40",
1413 .description = "Use PTX version 4.0",
15 .llvm_name = "ptx40",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_ptx40 = Feature{
2018pub const feature_ptx41 = Feature{
2119 .name = "ptx41",
2220 .description = "Use PTX version 4.1",
23 .llvm_name = "ptx41",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_ptx41 = Feature{
2825pub const feature_ptx42 = Feature{
2926 .name = "ptx42",
3027 .description = "Use PTX version 4.2",
31 .llvm_name = "ptx42",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_ptx42 = Feature{
3632pub const feature_ptx43 = Feature{
3733 .name = "ptx43",
3834 .description = "Use PTX version 4.3",
39 .llvm_name = "ptx43",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_ptx43 = Feature{
4439pub const feature_ptx50 = Feature{
4540 .name = "ptx50",
4641 .description = "Use PTX version 5.0",
47 .llvm_name = "ptx50",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_ptx50 = Feature{
5246pub const feature_ptx60 = Feature{
5347 .name = "ptx60",
5448 .description = "Use PTX version 6.0",
55 .llvm_name = "ptx60",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_ptx60 = Feature{
6053pub const feature_ptx61 = Feature{
6154 .name = "ptx61",
6255 .description = "Use PTX version 6.1",
63 .llvm_name = "ptx61",
6456 .subfeatures = &[_]*const Feature {
6557 },
6658};
......@@ -68,7 +60,6 @@ pub const feature_ptx61 = Feature{
6860pub const feature_ptx63 = Feature{
6961 .name = "ptx63",
7062 .description = "Use PTX version 6.3",
71 .llvm_name = "ptx63",
7263 .subfeatures = &[_]*const Feature {
7364 },
7465};
......@@ -76,7 +67,6 @@ pub const feature_ptx63 = Feature{
7667pub const feature_ptx64 = Feature{
7768 .name = "ptx64",
7869 .description = "Use PTX version 6.4",
79 .llvm_name = "ptx64",
8070 .subfeatures = &[_]*const Feature {
8171 },
8272};
......@@ -84,7 +74,6 @@ pub const feature_ptx64 = Feature{
8474pub const feature_sm_20 = Feature{
8575 .name = "sm_20",
8676 .description = "Target SM 2.0",
87 .llvm_name = "sm_20",
8877 .subfeatures = &[_]*const Feature {
8978 },
9079};
......@@ -92,7 +81,6 @@ pub const feature_sm_20 = Feature{
9281pub const feature_sm_21 = Feature{
9382 .name = "sm_21",
9483 .description = "Target SM 2.1",
95 .llvm_name = "sm_21",
9684 .subfeatures = &[_]*const Feature {
9785 },
9886};
......@@ -100,7 +88,6 @@ pub const feature_sm_21 = Feature{
10088pub const feature_sm_30 = Feature{
10189 .name = "sm_30",
10290 .description = "Target SM 3.0",
103 .llvm_name = "sm_30",
10491 .subfeatures = &[_]*const Feature {
10592 },
10693};
......@@ -108,7 +95,6 @@ pub const feature_sm_30 = Feature{
10895pub const feature_sm_32 = Feature{
10996 .name = "sm_32",
11097 .description = "Target SM 3.2",
111 .llvm_name = "sm_32",
11298 .subfeatures = &[_]*const Feature {
11399 },
114100};
......@@ -116,7 +102,6 @@ pub const feature_sm_32 = Feature{
116102pub const feature_sm_35 = Feature{
117103 .name = "sm_35",
118104 .description = "Target SM 3.5",
119 .llvm_name = "sm_35",
120105 .subfeatures = &[_]*const Feature {
121106 },
122107};
......@@ -124,7 +109,6 @@ pub const feature_sm_35 = Feature{
124109pub const feature_sm_37 = Feature{
125110 .name = "sm_37",
126111 .description = "Target SM 3.7",
127 .llvm_name = "sm_37",
128112 .subfeatures = &[_]*const Feature {
129113 },
130114};
......@@ -132,7 +116,6 @@ pub const feature_sm_37 = Feature{
132116pub const feature_sm_50 = Feature{
133117 .name = "sm_50",
134118 .description = "Target SM 5.0",
135 .llvm_name = "sm_50",
136119 .subfeatures = &[_]*const Feature {
137120 },
138121};
......@@ -140,7 +123,6 @@ pub const feature_sm_50 = Feature{
140123pub const feature_sm_52 = Feature{
141124 .name = "sm_52",
142125 .description = "Target SM 5.2",
143 .llvm_name = "sm_52",
144126 .subfeatures = &[_]*const Feature {
145127 },
146128};
......@@ -148,7 +130,6 @@ pub const feature_sm_52 = Feature{
148130pub const feature_sm_53 = Feature{
149131 .name = "sm_53",
150132 .description = "Target SM 5.3",
151 .llvm_name = "sm_53",
152133 .subfeatures = &[_]*const Feature {
153134 },
154135};
......@@ -156,7 +137,6 @@ pub const feature_sm_53 = Feature{
156137pub const feature_sm_60 = Feature{
157138 .name = "sm_60",
158139 .description = "Target SM 6.0",
159 .llvm_name = "sm_60",
160140 .subfeatures = &[_]*const Feature {
161141 },
162142};
......@@ -164,7 +144,6 @@ pub const feature_sm_60 = Feature{
164144pub const feature_sm_61 = Feature{
165145 .name = "sm_61",
166146 .description = "Target SM 6.1",
167 .llvm_name = "sm_61",
168147 .subfeatures = &[_]*const Feature {
169148 },
170149};
......@@ -172,7 +151,6 @@ pub const feature_sm_61 = Feature{
172151pub const feature_sm_62 = Feature{
173152 .name = "sm_62",
174153 .description = "Target SM 6.2",
175 .llvm_name = "sm_62",
176154 .subfeatures = &[_]*const Feature {
177155 },
178156};
......@@ -180,7 +158,6 @@ pub const feature_sm_62 = Feature{
180158pub const feature_sm_70 = Feature{
181159 .name = "sm_70",
182160 .description = "Target SM 7.0",
183 .llvm_name = "sm_70",
184161 .subfeatures = &[_]*const Feature {
185162 },
186163};
......@@ -188,7 +165,6 @@ pub const feature_sm_70 = Feature{
188165pub const feature_sm_72 = Feature{
189166 .name = "sm_72",
190167 .description = "Target SM 7.2",
191 .llvm_name = "sm_72",
192168 .subfeatures = &[_]*const Feature {
193169 },
194170};
......@@ -196,7 +172,6 @@ pub const feature_sm_72 = Feature{
196172pub const feature_sm_75 = Feature{
197173 .name = "sm_75",
198174 .description = "Target SM 7.5",
199 .llvm_name = "sm_75",
200175 .subfeatures = &[_]*const Feature {
201176 },
202177};
lib/std/target/powerpc.zig+2-53
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_bit64 = Feature{
55 .name = "64bit",
66 .description = "Enable 64-bit instructions",
7 .llvm_name = "64bit",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{
1211pub const feature_bitregs64 = Feature{
1312 .name = "64bitregs",
1413 .description = "Enable 64-bit registers usage for ppc32 [beta]",
15 .llvm_name = "64bitregs",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_bitregs64 = Feature{
2018pub const feature_altivec = Feature{
2119 .name = "altivec",
2220 .description = "Enable Altivec instructions",
23 .llvm_name = "altivec",
2421 .subfeatures = &[_]*const Feature {
2522 &feature_hardFloat,
2623 },
......@@ -29,7 +26,6 @@ pub const feature_altivec = Feature{
2926pub const feature_bpermd = Feature{
3027 .name = "bpermd",
3128 .description = "Enable the bpermd instruction",
32 .llvm_name = "bpermd",
3329 .subfeatures = &[_]*const Feature {
3430 },
3531};
......@@ -37,7 +33,6 @@ pub const feature_bpermd = Feature{
3733pub const feature_booke = Feature{
3834 .name = "booke",
3935 .description = "Enable Book E instructions",
40 .llvm_name = "booke",
4136 .subfeatures = &[_]*const Feature {
4237 &feature_icbt,
4338 },
......@@ -46,7 +41,6 @@ pub const feature_booke = Feature{
4641pub const feature_cmpb = Feature{
4742 .name = "cmpb",
4843 .description = "Enable the cmpb instruction",
49 .llvm_name = "cmpb",
5044 .subfeatures = &[_]*const Feature {
5145 },
5246};
......@@ -54,7 +48,6 @@ pub const feature_cmpb = Feature{
5448pub const feature_crbits = Feature{
5549 .name = "crbits",
5650 .description = "Use condition-register bits individually",
57 .llvm_name = "crbits",
5851 .subfeatures = &[_]*const Feature {
5952 },
6053};
......@@ -62,7 +55,6 @@ pub const feature_crbits = Feature{
6255pub const feature_directMove = Feature{
6356 .name = "direct-move",
6457 .description = "Enable Power8 direct move instructions",
65 .llvm_name = "direct-move",
6658 .subfeatures = &[_]*const Feature {
6759 &feature_hardFloat,
6860 },
......@@ -71,7 +63,6 @@ pub const feature_directMove = Feature{
7163pub const feature_e500 = Feature{
7264 .name = "e500",
7365 .description = "Enable E500/E500mc instructions",
74 .llvm_name = "e500",
7566 .subfeatures = &[_]*const Feature {
7667 },
7768};
......@@ -79,7 +70,6 @@ pub const feature_e500 = Feature{
7970pub const feature_extdiv = Feature{
8071 .name = "extdiv",
8172 .description = "Enable extended divide instructions",
82 .llvm_name = "extdiv",
8373 .subfeatures = &[_]*const Feature {
8474 },
8575};
......@@ -87,7 +77,6 @@ pub const feature_extdiv = Feature{
8777pub const feature_fcpsgn = Feature{
8878 .name = "fcpsgn",
8979 .description = "Enable the fcpsgn instruction",
90 .llvm_name = "fcpsgn",
9180 .subfeatures = &[_]*const Feature {
9281 &feature_hardFloat,
9382 },
......@@ -96,7 +85,6 @@ pub const feature_fcpsgn = Feature{
9685pub const feature_fpcvt = Feature{
9786 .name = "fpcvt",
9887 .description = "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions",
99 .llvm_name = "fpcvt",
10088 .subfeatures = &[_]*const Feature {
10189 &feature_hardFloat,
10290 },
......@@ -105,7 +93,6 @@ pub const feature_fpcvt = Feature{
10593pub const feature_fprnd = Feature{
10694 .name = "fprnd",
10795 .description = "Enable the fri[mnpz] instructions",
108 .llvm_name = "fprnd",
10996 .subfeatures = &[_]*const Feature {
11097 &feature_hardFloat,
11198 },
......@@ -114,7 +101,6 @@ pub const feature_fprnd = Feature{
114101pub const feature_fpu = Feature{
115102 .name = "fpu",
116103 .description = "Enable classic FPU instructions",
117 .llvm_name = "fpu",
118104 .subfeatures = &[_]*const Feature {
119105 &feature_hardFloat,
120106 },
......@@ -123,7 +109,6 @@ pub const feature_fpu = Feature{
123109pub const feature_fre = Feature{
124110 .name = "fre",
125111 .description = "Enable the fre instruction",
126 .llvm_name = "fre",
127112 .subfeatures = &[_]*const Feature {
128113 &feature_hardFloat,
129114 },
......@@ -132,7 +117,6 @@ pub const feature_fre = Feature{
132117pub const feature_fres = Feature{
133118 .name = "fres",
134119 .description = "Enable the fres instruction",
135 .llvm_name = "fres",
136120 .subfeatures = &[_]*const Feature {
137121 &feature_hardFloat,
138122 },
......@@ -141,7 +125,6 @@ pub const feature_fres = Feature{
141125pub const feature_frsqrte = Feature{
142126 .name = "frsqrte",
143127 .description = "Enable the frsqrte instruction",
144 .llvm_name = "frsqrte",
145128 .subfeatures = &[_]*const Feature {
146129 &feature_hardFloat,
147130 },
......@@ -150,7 +133,6 @@ pub const feature_frsqrte = Feature{
150133pub const feature_frsqrtes = Feature{
151134 .name = "frsqrtes",
152135 .description = "Enable the frsqrtes instruction",
153 .llvm_name = "frsqrtes",
154136 .subfeatures = &[_]*const Feature {
155137 &feature_hardFloat,
156138 },
......@@ -159,7 +141,6 @@ pub const feature_frsqrtes = Feature{
159141pub const feature_fsqrt = Feature{
160142 .name = "fsqrt",
161143 .description = "Enable the fsqrt instruction",
162 .llvm_name = "fsqrt",
163144 .subfeatures = &[_]*const Feature {
164145 &feature_hardFloat,
165146 },
......@@ -168,7 +149,6 @@ pub const feature_fsqrt = Feature{
168149pub const feature_float128 = Feature{
169150 .name = "float128",
170151 .description = "Enable the __float128 data type for IEEE-754R Binary128.",
171 .llvm_name = "float128",
172152 .subfeatures = &[_]*const Feature {
173153 &feature_hardFloat,
174154 },
......@@ -177,7 +157,6 @@ pub const feature_float128 = Feature{
177157pub const feature_htm = Feature{
178158 .name = "htm",
179159 .description = "Enable Hardware Transactional Memory instructions",
180 .llvm_name = "htm",
181160 .subfeatures = &[_]*const Feature {
182161 },
183162};
......@@ -185,7 +164,6 @@ pub const feature_htm = Feature{
185164pub const feature_hardFloat = Feature{
186165 .name = "hard-float",
187166 .description = "Enable floating-point instructions",
188 .llvm_name = "hard-float",
189167 .subfeatures = &[_]*const Feature {
190168 },
191169};
......@@ -193,7 +171,6 @@ pub const feature_hardFloat = Feature{
193171pub const feature_icbt = Feature{
194172 .name = "icbt",
195173 .description = "Enable icbt instruction",
196 .llvm_name = "icbt",
197174 .subfeatures = &[_]*const Feature {
198175 },
199176};
......@@ -201,7 +178,6 @@ pub const feature_icbt = Feature{
201178pub const feature_isaV30Instructions = Feature{
202179 .name = "isa-v30-instructions",
203180 .description = "Enable instructions added in ISA 3.0.",
204 .llvm_name = "isa-v30-instructions",
205181 .subfeatures = &[_]*const Feature {
206182 },
207183};
......@@ -209,7 +185,6 @@ pub const feature_isaV30Instructions = Feature{
209185pub const feature_isel = Feature{
210186 .name = "isel",
211187 .description = "Enable the isel instruction",
212 .llvm_name = "isel",
213188 .subfeatures = &[_]*const Feature {
214189 },
215190};
......@@ -217,7 +192,6 @@ pub const feature_isel = Feature{
217192pub const feature_invariantFunctionDescriptors = Feature{
218193 .name = "invariant-function-descriptors",
219194 .description = "Assume function descriptors are invariant",
220 .llvm_name = "invariant-function-descriptors",
221195 .subfeatures = &[_]*const Feature {
222196 },
223197};
......@@ -225,7 +199,6 @@ pub const feature_invariantFunctionDescriptors = Feature{
225199pub const feature_ldbrx = Feature{
226200 .name = "ldbrx",
227201 .description = "Enable the ldbrx instruction",
228 .llvm_name = "ldbrx",
229202 .subfeatures = &[_]*const Feature {
230203 },
231204};
......@@ -233,7 +206,6 @@ pub const feature_ldbrx = Feature{
233206pub const feature_lfiwax = Feature{
234207 .name = "lfiwax",
235208 .description = "Enable the lfiwax instruction",
236 .llvm_name = "lfiwax",
237209 .subfeatures = &[_]*const Feature {
238210 &feature_hardFloat,
239211 },
......@@ -242,7 +214,6 @@ pub const feature_lfiwax = Feature{
242214pub const feature_longcall = Feature{
243215 .name = "longcall",
244216 .description = "Always use indirect calls",
245 .llvm_name = "longcall",
246217 .subfeatures = &[_]*const Feature {
247218 },
248219};
......@@ -250,7 +221,6 @@ pub const feature_longcall = Feature{
250221pub const feature_mfocrf = Feature{
251222 .name = "mfocrf",
252223 .description = "Enable the MFOCRF instruction",
253 .llvm_name = "mfocrf",
254224 .subfeatures = &[_]*const Feature {
255225 },
256226};
......@@ -258,7 +228,6 @@ pub const feature_mfocrf = Feature{
258228pub const feature_msync = Feature{
259229 .name = "msync",
260230 .description = "Has only the msync instruction instead of sync",
261 .llvm_name = "msync",
262231 .subfeatures = &[_]*const Feature {
263232 &feature_icbt,
264233 },
......@@ -267,7 +236,6 @@ pub const feature_msync = Feature{
267236pub const feature_power8Altivec = Feature{
268237 .name = "power8-altivec",
269238 .description = "Enable POWER8 Altivec instructions",
270 .llvm_name = "power8-altivec",
271239 .subfeatures = &[_]*const Feature {
272240 &feature_hardFloat,
273241 },
......@@ -276,7 +244,6 @@ pub const feature_power8Altivec = Feature{
276244pub const feature_crypto = Feature{
277245 .name = "crypto",
278246 .description = "Enable POWER8 Crypto instructions",
279 .llvm_name = "crypto",
280247 .subfeatures = &[_]*const Feature {
281248 &feature_hardFloat,
282249 },
......@@ -285,7 +252,6 @@ pub const feature_crypto = Feature{
285252pub const feature_power8Vector = Feature{
286253 .name = "power8-vector",
287254 .description = "Enable POWER8 vector instructions",
288 .llvm_name = "power8-vector",
289255 .subfeatures = &[_]*const Feature {
290256 &feature_hardFloat,
291257 },
......@@ -294,27 +260,24 @@ pub const feature_power8Vector = Feature{
294260pub const feature_power9Altivec = Feature{
295261 .name = "power9-altivec",
296262 .description = "Enable POWER9 Altivec instructions",
297 .llvm_name = "power9-altivec",
298263 .subfeatures = &[_]*const Feature {
299 &feature_isaV30Instructions,
300264 &feature_hardFloat,
265 &feature_isaV30Instructions,
301266 },
302267};
303268
304269pub const feature_power9Vector = Feature{
305270 .name = "power9-vector",
306271 .description = "Enable POWER9 vector instructions",
307 .llvm_name = "power9-vector",
308272 .subfeatures = &[_]*const Feature {
309 &feature_isaV30Instructions,
310273 &feature_hardFloat,
274 &feature_isaV30Instructions,
311275 },
312276};
313277
314278pub const feature_popcntd = Feature{
315279 .name = "popcntd",
316280 .description = "Enable the popcnt[dw] instructions",
317 .llvm_name = "popcntd",
318281 .subfeatures = &[_]*const Feature {
319282 },
320283};
......@@ -322,7 +285,6 @@ pub const feature_popcntd = Feature{
322285pub const feature_ppc4xx = Feature{
323286 .name = "ppc4xx",
324287 .description = "Enable PPC 4xx instructions",
325 .llvm_name = "ppc4xx",
326288 .subfeatures = &[_]*const Feature {
327289 },
328290};
......@@ -330,7 +292,6 @@ pub const feature_ppc4xx = Feature{
330292pub const feature_ppc6xx = Feature{
331293 .name = "ppc6xx",
332294 .description = "Enable PPC 6xx instructions",
333 .llvm_name = "ppc6xx",
334295 .subfeatures = &[_]*const Feature {
335296 },
336297};
......@@ -338,7 +299,6 @@ pub const feature_ppc6xx = Feature{
338299pub const feature_ppcPostraSched = Feature{
339300 .name = "ppc-postra-sched",
340301 .description = "Use PowerPC post-RA scheduling strategy",
341 .llvm_name = "ppc-postra-sched",
342302 .subfeatures = &[_]*const Feature {
343303 },
344304};
......@@ -346,7 +306,6 @@ pub const feature_ppcPostraSched = Feature{
346306pub const feature_ppcPreraSched = Feature{
347307 .name = "ppc-prera-sched",
348308 .description = "Use PowerPC pre-RA scheduling strategy",
349 .llvm_name = "ppc-prera-sched",
350309 .subfeatures = &[_]*const Feature {
351310 },
352311};
......@@ -354,7 +313,6 @@ pub const feature_ppcPreraSched = Feature{
354313pub const feature_partwordAtomics = Feature{
355314 .name = "partword-atomics",
356315 .description = "Enable l[bh]arx and st[bh]cx.",
357 .llvm_name = "partword-atomics",
358316 .subfeatures = &[_]*const Feature {
359317 },
360318};
......@@ -362,7 +320,6 @@ pub const feature_partwordAtomics = Feature{
362320pub const feature_qpx = Feature{
363321 .name = "qpx",
364322 .description = "Enable QPX instructions",
365 .llvm_name = "qpx",
366323 .subfeatures = &[_]*const Feature {
367324 &feature_hardFloat,
368325 },
......@@ -371,7 +328,6 @@ pub const feature_qpx = Feature{
371328pub const feature_recipprec = Feature{
372329 .name = "recipprec",
373330 .description = "Assume higher precision reciprocal estimates",
374 .llvm_name = "recipprec",
375331 .subfeatures = &[_]*const Feature {
376332 },
377333};
......@@ -379,7 +335,6 @@ pub const feature_recipprec = Feature{
379335pub const feature_spe = Feature{
380336 .name = "spe",
381337 .description = "Enable SPE instructions",
382 .llvm_name = "spe",
383338 .subfeatures = &[_]*const Feature {
384339 &feature_hardFloat,
385340 },
......@@ -388,7 +343,6 @@ pub const feature_spe = Feature{
388343pub const feature_stfiwx = Feature{
389344 .name = "stfiwx",
390345 .description = "Enable the stfiwx instruction",
391 .llvm_name = "stfiwx",
392346 .subfeatures = &[_]*const Feature {
393347 &feature_hardFloat,
394348 },
......@@ -397,7 +351,6 @@ pub const feature_stfiwx = Feature{
397351pub const feature_securePlt = Feature{
398352 .name = "secure-plt",
399353 .description = "Enable secure plt mode",
400 .llvm_name = "secure-plt",
401354 .subfeatures = &[_]*const Feature {
402355 },
403356};
......@@ -405,7 +358,6 @@ pub const feature_securePlt = Feature{
405358pub const feature_slowPopcntd = Feature{
406359 .name = "slow-popcntd",
407360 .description = "Has slow popcnt[dw] instructions",
408 .llvm_name = "slow-popcntd",
409361 .subfeatures = &[_]*const Feature {
410362 },
411363};
......@@ -413,7 +365,6 @@ pub const feature_slowPopcntd = Feature{
413365pub const feature_twoConstNr = Feature{
414366 .name = "two-const-nr",
415367 .description = "Requires two constant Newton-Raphson computation",
416 .llvm_name = "two-const-nr",
417368 .subfeatures = &[_]*const Feature {
418369 },
419370};
......@@ -421,7 +372,6 @@ pub const feature_twoConstNr = Feature{
421372pub const feature_vsx = Feature{
422373 .name = "vsx",
423374 .description = "Enable VSX instructions",
424 .llvm_name = "vsx",
425375 .subfeatures = &[_]*const Feature {
426376 &feature_hardFloat,
427377 },
......@@ -430,7 +380,6 @@ pub const feature_vsx = Feature{
430380pub const feature_vectorsUseTwoUnits = Feature{
431381 .name = "vectors-use-two-units",
432382 .description = "Vectors use two units",
433 .llvm_name = "vectors-use-two-units",
434383 .subfeatures = &[_]*const Feature {
435384 },
436385};
lib/std/target/riscv.zig-9
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_bit64 = Feature{
55 .name = "64bit",
66 .description = "Implements RV64",
7 .llvm_name = "64bit",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_bit64 = Feature{
1211pub const feature_e = Feature{
1312 .name = "e",
1413 .description = "Implements RV32E (provides 16 rather than 32 GPRs)",
15 .llvm_name = "e",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_e = Feature{
2018pub const feature_rvcHints = Feature{
2119 .name = "rvc-hints",
2220 .description = "Enable RVC Hint Instructions.",
23 .llvm_name = "rvc-hints",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_rvcHints = Feature{
2825pub const feature_relax = Feature{
2926 .name = "relax",
3027 .description = "Enable Linker relaxation.",
31 .llvm_name = "relax",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_relax = Feature{
3632pub const feature_a = Feature{
3733 .name = "a",
3834 .description = "'A' (Atomic Instructions)",
39 .llvm_name = "a",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_a = Feature{
4439pub const feature_c = Feature{
4540 .name = "c",
4641 .description = "'C' (Compressed Instructions)",
47 .llvm_name = "c",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_c = Feature{
5246pub const feature_d = Feature{
5347 .name = "d",
5448 .description = "'D' (Double-Precision Floating-Point)",
55 .llvm_name = "d",
5649 .subfeatures = &[_]*const Feature {
5750 &feature_f,
5851 },
......@@ -61,7 +54,6 @@ pub const feature_d = Feature{
6154pub const feature_f = Feature{
6255 .name = "f",
6356 .description = "'F' (Single-Precision Floating-Point)",
64 .llvm_name = "f",
6557 .subfeatures = &[_]*const Feature {
6658 },
6759};
......@@ -69,7 +61,6 @@ pub const feature_f = Feature{
6961pub const feature_m = Feature{
7062 .name = "m",
7163 .description = "'M' (Integer Multiplication and Division)",
72 .llvm_name = "m",
7364 .subfeatures = &[_]*const Feature {
7465 },
7566};
lib/std/target/sparc.zig-19
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_detectroundchange = Feature{
55 .name = "detectroundchange",
66 .description = "LEON3 erratum detection: Detects any rounding mode change request: use only the round-to-nearest rounding mode",
7 .llvm_name = "detectroundchange",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_detectroundchange = Feature{
1211pub const feature_hardQuadFloat = Feature{
1312 .name = "hard-quad-float",
1413 .description = "Enable quad-word floating point instructions",
15 .llvm_name = "hard-quad-float",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_hardQuadFloat = Feature{
2018pub const feature_leon = Feature{
2119 .name = "leon",
2220 .description = "Enable LEON extensions",
23 .llvm_name = "leon",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_leon = Feature{
2825pub const feature_noFmuls = Feature{
2926 .name = "no-fmuls",
3027 .description = "Disable the fmuls instruction.",
31 .llvm_name = "no-fmuls",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_noFmuls = Feature{
3632pub const feature_noFsmuld = Feature{
3733 .name = "no-fsmuld",
3834 .description = "Disable the fsmuld instruction.",
39 .llvm_name = "no-fsmuld",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_noFsmuld = Feature{
4439pub const feature_leonpwrpsr = Feature{
4540 .name = "leonpwrpsr",
4641 .description = "Enable the PWRPSR instruction",
47 .llvm_name = "leonpwrpsr",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_leonpwrpsr = Feature{
5246pub const feature_softFloat = Feature{
5347 .name = "soft-float",
5448 .description = "Use software emulation for floating point",
55 .llvm_name = "soft-float",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_softFloat = Feature{
6053pub const feature_softMulDiv = Feature{
6154 .name = "soft-mul-div",
6255 .description = "Use software emulation for integer multiply and divide",
63 .llvm_name = "soft-mul-div",
6456 .subfeatures = &[_]*const Feature {
6557 },
6658};
......@@ -68,7 +60,6 @@ pub const feature_softMulDiv = Feature{
6860pub const feature_deprecatedV8 = Feature{
6961 .name = "deprecated-v8",
7062 .description = "Enable deprecated V8 instructions in V9 mode",
71 .llvm_name = "deprecated-v8",
7263 .subfeatures = &[_]*const Feature {
7364 },
7465};
......@@ -76,7 +67,6 @@ pub const feature_deprecatedV8 = Feature{
7667pub const feature_v9 = Feature{
7768 .name = "v9",
7869 .description = "Enable SPARC-V9 instructions",
79 .llvm_name = "v9",
8070 .subfeatures = &[_]*const Feature {
8171 },
8272};
......@@ -84,7 +74,6 @@ pub const feature_v9 = Feature{
8474pub const feature_vis = Feature{
8575 .name = "vis",
8676 .description = "Enable UltraSPARC Visual Instruction Set extensions",
87 .llvm_name = "vis",
8877 .subfeatures = &[_]*const Feature {
8978 },
9079};
......@@ -92,7 +81,6 @@ pub const feature_vis = Feature{
9281pub const feature_vis2 = Feature{
9382 .name = "vis2",
9483 .description = "Enable Visual Instruction Set extensions II",
95 .llvm_name = "vis2",
9684 .subfeatures = &[_]*const Feature {
9785 },
9886};
......@@ -100,7 +88,6 @@ pub const feature_vis2 = Feature{
10088pub const feature_vis3 = Feature{
10189 .name = "vis3",
10290 .description = "Enable Visual Instruction Set extensions III",
103 .llvm_name = "vis3",
10491 .subfeatures = &[_]*const Feature {
10592 },
10693};
......@@ -108,7 +95,6 @@ pub const feature_vis3 = Feature{
10895pub const feature_fixallfdivsqrt = Feature{
10996 .name = "fixallfdivsqrt",
11097 .description = "LEON erratum fix: Fix FDIVS/FDIVD/FSQRTS/FSQRTD instructions with NOPs and floating-point store",
111 .llvm_name = "fixallfdivsqrt",
11298 .subfeatures = &[_]*const Feature {
11399 },
114100};
......@@ -116,7 +102,6 @@ pub const feature_fixallfdivsqrt = Feature{
116102pub const feature_insertnopload = Feature{
117103 .name = "insertnopload",
118104 .description = "LEON3 erratum fix: Insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction",
119 .llvm_name = "insertnopload",
120105 .subfeatures = &[_]*const Feature {
121106 },
122107};
......@@ -124,7 +109,6 @@ pub const feature_insertnopload = Feature{
124109pub const feature_hasleoncasa = Feature{
125110 .name = "hasleoncasa",
126111 .description = "Enable CASA instruction for LEON3 and LEON4 processors",
127 .llvm_name = "hasleoncasa",
128112 .subfeatures = &[_]*const Feature {
129113 },
130114};
......@@ -132,7 +116,6 @@ pub const feature_hasleoncasa = Feature{
132116pub const feature_leoncyclecounter = Feature{
133117 .name = "leoncyclecounter",
134118 .description = "Use the Leon cycle counter register",
135 .llvm_name = "leoncyclecounter",
136119 .subfeatures = &[_]*const Feature {
137120 },
138121};
......@@ -140,7 +123,6 @@ pub const feature_leoncyclecounter = Feature{
140123pub const feature_hasumacsmac = Feature{
141124 .name = "hasumacsmac",
142125 .description = "Enable UMAC and SMAC for LEON3 and LEON4 processors",
143 .llvm_name = "hasumacsmac",
144126 .subfeatures = &[_]*const Feature {
145127 },
146128};
......@@ -148,7 +130,6 @@ pub const feature_hasumacsmac = Feature{
148130pub const feature_popc = Feature{
149131 .name = "popc",
150132 .description = "Use the popc (population count) instruction",
151 .llvm_name = "popc",
152133 .subfeatures = &[_]*const Feature {
153134 },
154135};
lib/std/target/systemz.zig-35
......@@ -4,7 +4,6 @@ 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 .llvm_name = "dfp-packed-conversion",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_dfpPackedConversion = Feature{
1211pub const feature_dfpZonedConversion = Feature{
1312 .name = "dfp-zoned-conversion",
1413 .description = "Assume that the DFP zoned-conversion facility is installed",
15 .llvm_name = "dfp-zoned-conversion",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_dfpZonedConversion = Feature{
2018pub const feature_deflateConversion = Feature{
2119 .name = "deflate-conversion",
2220 .description = "Assume that the deflate-conversion facility is installed",
23 .llvm_name = "deflate-conversion",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_deflateConversion = Feature{
2825pub const feature_distinctOps = Feature{
2926 .name = "distinct-ops",
3027 .description = "Assume that the distinct-operands facility is installed",
31 .llvm_name = "distinct-ops",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_distinctOps = Feature{
3632pub const feature_enhancedDat2 = Feature{
3733 .name = "enhanced-dat-2",
3834 .description = "Assume that the enhanced-DAT facility 2 is installed",
39 .llvm_name = "enhanced-dat-2",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_enhancedDat2 = Feature{
4439pub const feature_enhancedSort = Feature{
4540 .name = "enhanced-sort",
4641 .description = "Assume that the enhanced-sort facility is installed",
47 .llvm_name = "enhanced-sort",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_enhancedSort = Feature{
5246pub const feature_executionHint = Feature{
5347 .name = "execution-hint",
5448 .description = "Assume that the execution-hint facility is installed",
55 .llvm_name = "execution-hint",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_executionHint = Feature{
6053pub const feature_fpExtension = Feature{
6154 .name = "fp-extension",
6255 .description = "Assume that the floating-point extension facility is installed",
63 .llvm_name = "fp-extension",
6456 .subfeatures = &[_]*const Feature {
6557 },
6658};
......@@ -68,7 +60,6 @@ pub const feature_fpExtension = Feature{
6860pub const feature_fastSerialization = Feature{
6961 .name = "fast-serialization",
7062 .description = "Assume that the fast-serialization facility is installed",
71 .llvm_name = "fast-serialization",
7263 .subfeatures = &[_]*const Feature {
7364 },
7465};
......@@ -76,7 +67,6 @@ pub const feature_fastSerialization = Feature{
7667pub const feature_guardedStorage = Feature{
7768 .name = "guarded-storage",
7869 .description = "Assume that the guarded-storage facility is installed",
79 .llvm_name = "guarded-storage",
8070 .subfeatures = &[_]*const Feature {
8171 },
8272};
......@@ -84,7 +74,6 @@ pub const feature_guardedStorage = Feature{
8474pub const feature_highWord = Feature{
8575 .name = "high-word",
8676 .description = "Assume that the high-word facility is installed",
87 .llvm_name = "high-word",
8877 .subfeatures = &[_]*const Feature {
8978 },
9079};
......@@ -92,7 +81,6 @@ pub const feature_highWord = Feature{
9281pub const feature_insertReferenceBitsMultiple = Feature{
9382 .name = "insert-reference-bits-multiple",
9483 .description = "Assume that the insert-reference-bits-multiple facility is installed",
95 .llvm_name = "insert-reference-bits-multiple",
9684 .subfeatures = &[_]*const Feature {
9785 },
9886};
......@@ -100,7 +88,6 @@ pub const feature_insertReferenceBitsMultiple = Feature{
10088pub const feature_interlockedAccess1 = Feature{
10189 .name = "interlocked-access1",
10290 .description = "Assume that interlocked-access facility 1 is installed",
103 .llvm_name = "interlocked-access1",
10491 .subfeatures = &[_]*const Feature {
10592 },
10693};
......@@ -108,7 +95,6 @@ pub const feature_interlockedAccess1 = Feature{
10895pub const feature_loadAndTrap = Feature{
10996 .name = "load-and-trap",
11097 .description = "Assume that the load-and-trap facility is installed",
111 .llvm_name = "load-and-trap",
11298 .subfeatures = &[_]*const Feature {
11399 },
114100};
......@@ -116,7 +102,6 @@ pub const feature_loadAndTrap = Feature{
116102pub const feature_loadAndZeroRightmostByte = Feature{
117103 .name = "load-and-zero-rightmost-byte",
118104 .description = "Assume that the load-and-zero-rightmost-byte facility is installed",
119 .llvm_name = "load-and-zero-rightmost-byte",
120105 .subfeatures = &[_]*const Feature {
121106 },
122107};
......@@ -124,7 +109,6 @@ pub const feature_loadAndZeroRightmostByte = Feature{
124109pub const feature_loadStoreOnCond = Feature{
125110 .name = "load-store-on-cond",
126111 .description = "Assume that the load/store-on-condition facility is installed",
127 .llvm_name = "load-store-on-cond",
128112 .subfeatures = &[_]*const Feature {
129113 },
130114};
......@@ -132,7 +116,6 @@ pub const feature_loadStoreOnCond = Feature{
132116pub const feature_loadStoreOnCond2 = Feature{
133117 .name = "load-store-on-cond-2",
134118 .description = "Assume that the load/store-on-condition facility 2 is installed",
135 .llvm_name = "load-store-on-cond-2",
136119 .subfeatures = &[_]*const Feature {
137120 },
138121};
......@@ -140,7 +123,6 @@ pub const feature_loadStoreOnCond2 = Feature{
140123pub const feature_messageSecurityAssistExtension3 = Feature{
141124 .name = "message-security-assist-extension3",
142125 .description = "Assume that the message-security-assist extension facility 3 is installed",
143 .llvm_name = "message-security-assist-extension3",
144126 .subfeatures = &[_]*const Feature {
145127 },
146128};
......@@ -148,7 +130,6 @@ pub const feature_messageSecurityAssistExtension3 = Feature{
148130pub const feature_messageSecurityAssistExtension4 = Feature{
149131 .name = "message-security-assist-extension4",
150132 .description = "Assume that the message-security-assist extension facility 4 is installed",
151 .llvm_name = "message-security-assist-extension4",
152133 .subfeatures = &[_]*const Feature {
153134 },
154135};
......@@ -156,7 +137,6 @@ pub const feature_messageSecurityAssistExtension4 = Feature{
156137pub const feature_messageSecurityAssistExtension5 = Feature{
157138 .name = "message-security-assist-extension5",
158139 .description = "Assume that the message-security-assist extension facility 5 is installed",
159 .llvm_name = "message-security-assist-extension5",
160140 .subfeatures = &[_]*const Feature {
161141 },
162142};
......@@ -164,7 +144,6 @@ pub const feature_messageSecurityAssistExtension5 = Feature{
164144pub const feature_messageSecurityAssistExtension7 = Feature{
165145 .name = "message-security-assist-extension7",
166146 .description = "Assume that the message-security-assist extension facility 7 is installed",
167 .llvm_name = "message-security-assist-extension7",
168147 .subfeatures = &[_]*const Feature {
169148 },
170149};
......@@ -172,7 +151,6 @@ pub const feature_messageSecurityAssistExtension7 = Feature{
172151pub const feature_messageSecurityAssistExtension8 = Feature{
173152 .name = "message-security-assist-extension8",
174153 .description = "Assume that the message-security-assist extension facility 8 is installed",
175 .llvm_name = "message-security-assist-extension8",
176154 .subfeatures = &[_]*const Feature {
177155 },
178156};
......@@ -180,7 +158,6 @@ pub const feature_messageSecurityAssistExtension8 = Feature{
180158pub const feature_messageSecurityAssistExtension9 = Feature{
181159 .name = "message-security-assist-extension9",
182160 .description = "Assume that the message-security-assist extension facility 9 is installed",
183 .llvm_name = "message-security-assist-extension9",
184161 .subfeatures = &[_]*const Feature {
185162 },
186163};
......@@ -188,7 +165,6 @@ pub const feature_messageSecurityAssistExtension9 = Feature{
188165pub const feature_miscellaneousExtensions = Feature{
189166 .name = "miscellaneous-extensions",
190167 .description = "Assume that the miscellaneous-extensions facility is installed",
191 .llvm_name = "miscellaneous-extensions",
192168 .subfeatures = &[_]*const Feature {
193169 },
194170};
......@@ -196,7 +172,6 @@ pub const feature_miscellaneousExtensions = Feature{
196172pub const feature_miscellaneousExtensions2 = Feature{
197173 .name = "miscellaneous-extensions-2",
198174 .description = "Assume that the miscellaneous-extensions facility 2 is installed",
199 .llvm_name = "miscellaneous-extensions-2",
200175 .subfeatures = &[_]*const Feature {
201176 },
202177};
......@@ -204,7 +179,6 @@ pub const feature_miscellaneousExtensions2 = Feature{
204179pub const feature_miscellaneousExtensions3 = Feature{
205180 .name = "miscellaneous-extensions-3",
206181 .description = "Assume that the miscellaneous-extensions facility 3 is installed",
207 .llvm_name = "miscellaneous-extensions-3",
208182 .subfeatures = &[_]*const Feature {
209183 },
210184};
......@@ -212,7 +186,6 @@ pub const feature_miscellaneousExtensions3 = Feature{
212186pub const feature_populationCount = Feature{
213187 .name = "population-count",
214188 .description = "Assume that the population-count facility is installed",
215 .llvm_name = "population-count",
216189 .subfeatures = &[_]*const Feature {
217190 },
218191};
......@@ -220,7 +193,6 @@ pub const feature_populationCount = Feature{
220193pub const feature_processorAssist = Feature{
221194 .name = "processor-assist",
222195 .description = "Assume that the processor-assist facility is installed",
223 .llvm_name = "processor-assist",
224196 .subfeatures = &[_]*const Feature {
225197 },
226198};
......@@ -228,7 +200,6 @@ pub const feature_processorAssist = Feature{
228200pub const feature_resetReferenceBitsMultiple = Feature{
229201 .name = "reset-reference-bits-multiple",
230202 .description = "Assume that the reset-reference-bits-multiple facility is installed",
231 .llvm_name = "reset-reference-bits-multiple",
232203 .subfeatures = &[_]*const Feature {
233204 },
234205};
......@@ -236,7 +207,6 @@ pub const feature_resetReferenceBitsMultiple = Feature{
236207pub const feature_transactionalExecution = Feature{
237208 .name = "transactional-execution",
238209 .description = "Assume that the transactional-execution facility is installed",
239 .llvm_name = "transactional-execution",
240210 .subfeatures = &[_]*const Feature {
241211 },
242212};
......@@ -244,7 +214,6 @@ pub const feature_transactionalExecution = Feature{
244214pub const feature_vector = Feature{
245215 .name = "vector",
246216 .description = "Assume that the vectory facility is installed",
247 .llvm_name = "vector",
248217 .subfeatures = &[_]*const Feature {
249218 },
250219};
......@@ -252,7 +221,6 @@ pub const feature_vector = Feature{
252221pub const feature_vectorEnhancements1 = Feature{
253222 .name = "vector-enhancements-1",
254223 .description = "Assume that the vector enhancements facility 1 is installed",
255 .llvm_name = "vector-enhancements-1",
256224 .subfeatures = &[_]*const Feature {
257225 },
258226};
......@@ -260,7 +228,6 @@ pub const feature_vectorEnhancements1 = Feature{
260228pub const feature_vectorEnhancements2 = Feature{
261229 .name = "vector-enhancements-2",
262230 .description = "Assume that the vector enhancements facility 2 is installed",
263 .llvm_name = "vector-enhancements-2",
264231 .subfeatures = &[_]*const Feature {
265232 },
266233};
......@@ -268,7 +235,6 @@ pub const feature_vectorEnhancements2 = Feature{
268235pub const feature_vectorPackedDecimal = Feature{
269236 .name = "vector-packed-decimal",
270237 .description = "Assume that the vector packed decimal facility is installed",
271 .llvm_name = "vector-packed-decimal",
272238 .subfeatures = &[_]*const Feature {
273239 },
274240};
......@@ -276,7 +242,6 @@ pub const feature_vectorPackedDecimal = Feature{
276242pub const feature_vectorPackedDecimalEnhancement = Feature{
277243 .name = "vector-packed-decimal-enhancement",
278244 .description = "Assume that the vector packed decimal enhancement facility is installed",
279 .llvm_name = "vector-packed-decimal-enhancement",
280245 .subfeatures = &[_]*const Feature {
281246 },
282247};
lib/std/target/wasm.zig-10
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_atomics = Feature{
55 .name = "atomics",
66 .description = "Enable Atomics",
7 .llvm_name = "atomics",
87 .subfeatures = &[_]*const Feature {
98 },
109};
......@@ -12,7 +11,6 @@ pub const feature_atomics = Feature{
1211pub const feature_bulkMemory = Feature{
1312 .name = "bulk-memory",
1413 .description = "Enable bulk memory operations",
15 .llvm_name = "bulk-memory",
1614 .subfeatures = &[_]*const Feature {
1715 },
1816};
......@@ -20,7 +18,6 @@ pub const feature_bulkMemory = Feature{
2018pub const feature_exceptionHandling = Feature{
2119 .name = "exception-handling",
2220 .description = "Enable Wasm exception handling",
23 .llvm_name = "exception-handling",
2421 .subfeatures = &[_]*const Feature {
2522 },
2623};
......@@ -28,7 +25,6 @@ pub const feature_exceptionHandling = Feature{
2825pub const feature_multivalue = Feature{
2926 .name = "multivalue",
3027 .description = "Enable multivalue blocks, instructions, and functions",
31 .llvm_name = "multivalue",
3228 .subfeatures = &[_]*const Feature {
3329 },
3430};
......@@ -36,7 +32,6 @@ pub const feature_multivalue = Feature{
3632pub const feature_mutableGlobals = Feature{
3733 .name = "mutable-globals",
3834 .description = "Enable mutable globals",
39 .llvm_name = "mutable-globals",
4035 .subfeatures = &[_]*const Feature {
4136 },
4237};
......@@ -44,7 +39,6 @@ pub const feature_mutableGlobals = Feature{
4439pub const feature_nontrappingFptoint = Feature{
4540 .name = "nontrapping-fptoint",
4641 .description = "Enable non-trapping float-to-int conversion operators",
47 .llvm_name = "nontrapping-fptoint",
4842 .subfeatures = &[_]*const Feature {
4943 },
5044};
......@@ -52,7 +46,6 @@ pub const feature_nontrappingFptoint = Feature{
5246pub const feature_simd128 = Feature{
5347 .name = "simd128",
5448 .description = "Enable 128-bit SIMD",
55 .llvm_name = "simd128",
5649 .subfeatures = &[_]*const Feature {
5750 },
5851};
......@@ -60,7 +53,6 @@ pub const feature_simd128 = Feature{
6053pub const feature_signExt = Feature{
6154 .name = "sign-ext",
6255 .description = "Enable sign extension operators",
63 .llvm_name = "sign-ext",
6456 .subfeatures = &[_]*const Feature {
6557 },
6658};
......@@ -68,7 +60,6 @@ pub const feature_signExt = Feature{
6860pub const feature_tailCall = Feature{
6961 .name = "tail-call",
7062 .description = "Enable tail call instructions",
71 .llvm_name = "tail-call",
7263 .subfeatures = &[_]*const Feature {
7364 },
7465};
......@@ -76,7 +67,6 @@ pub const feature_tailCall = Feature{
7667pub const feature_unimplementedSimd128 = Feature{
7768 .name = "unimplemented-simd128",
7869 .description = "Enable 128-bit SIMD not yet implemented in engines",
79 .llvm_name = "unimplemented-simd128",
8070 .subfeatures = &[_]*const Feature {
8171 &feature_simd128,
8272 },
lib/std/target/x86.zig+1-127
......@@ -4,7 +4,6 @@ const Cpu = @import("std").target.Cpu;
44pub const feature_dnow3 = Feature{
55 .name = "3dnow",
66 .description = "Enable 3DNow! instructions",
7 .llvm_name = "3dnow",
87 .subfeatures = &[_]*const Feature {
98 &feature_mmx,
109 },
......@@ -13,7 +12,6 @@ pub const feature_dnow3 = Feature{
1312pub const feature_dnowa3 = Feature{
1413 .name = "3dnowa",
1514 .description = "Enable 3DNow! Athlon instructions",
16 .llvm_name = "3dnowa",
1715 .subfeatures = &[_]*const Feature {
1816 &feature_mmx,
1917 },
......@@ -22,7 +20,6 @@ pub const feature_dnowa3 = Feature{
2220pub const feature_bit64 = Feature{
2321 .name = "64bit",
2422 .description = "Support 64-bit instructions",
25 .llvm_name = "64bit",
2623 .subfeatures = &[_]*const Feature {
2724 },
2825};
......@@ -30,7 +27,6 @@ pub const feature_bit64 = Feature{
3027pub const feature_adx = Feature{
3128 .name = "adx",
3229 .description = "Support ADX instructions",
33 .llvm_name = "adx",
3430 .subfeatures = &[_]*const Feature {
3531 },
3632};
......@@ -38,7 +34,6 @@ pub const feature_adx = Feature{
3834pub const feature_aes = Feature{
3935 .name = "aes",
4036 .description = "Enable AES instructions",
41 .llvm_name = "aes",
4237 .subfeatures = &[_]*const Feature {
4338 &feature_sse,
4439 },
......@@ -47,7 +42,6 @@ pub const feature_aes = Feature{
4742pub const feature_avx = Feature{
4843 .name = "avx",
4944 .description = "Enable AVX instructions",
50 .llvm_name = "avx",
5145 .subfeatures = &[_]*const Feature {
5246 &feature_sse,
5347 },
......@@ -56,7 +50,6 @@ pub const feature_avx = Feature{
5650pub const feature_avx2 = Feature{
5751 .name = "avx2",
5852 .description = "Enable AVX2 instructions",
59 .llvm_name = "avx2",
6053 .subfeatures = &[_]*const Feature {
6154 &feature_sse,
6255 },
......@@ -65,7 +58,6 @@ pub const feature_avx2 = Feature{
6558pub const feature_avx512f = Feature{
6659 .name = "avx512f",
6760 .description = "Enable AVX-512 instructions",
68 .llvm_name = "avx512f",
6961 .subfeatures = &[_]*const Feature {
7062 &feature_sse,
7163 },
......@@ -74,7 +66,6 @@ pub const feature_avx512f = Feature{
7466pub const feature_avx512bf16 = Feature{
7567 .name = "avx512bf16",
7668 .description = "Support bfloat16 floating point",
77 .llvm_name = "avx512bf16",
7869 .subfeatures = &[_]*const Feature {
7970 &feature_sse,
8071 },
......@@ -83,7 +74,6 @@ pub const feature_avx512bf16 = Feature{
8374pub const feature_avx512bitalg = Feature{
8475 .name = "avx512bitalg",
8576 .description = "Enable AVX-512 Bit Algorithms",
86 .llvm_name = "avx512bitalg",
8777 .subfeatures = &[_]*const Feature {
8878 &feature_sse,
8979 },
......@@ -92,7 +82,6 @@ pub const feature_avx512bitalg = Feature{
9282pub const feature_bmi = Feature{
9383 .name = "bmi",
9484 .description = "Support BMI instructions",
95 .llvm_name = "bmi",
9685 .subfeatures = &[_]*const Feature {
9786 },
9887};
......@@ -100,7 +89,6 @@ pub const feature_bmi = Feature{
10089pub const feature_bmi2 = Feature{
10190 .name = "bmi2",
10291 .description = "Support BMI2 instructions",
103 .llvm_name = "bmi2",
10492 .subfeatures = &[_]*const Feature {
10593 },
10694};
......@@ -108,7 +96,6 @@ pub const feature_bmi2 = Feature{
10896pub const feature_avx512bw = Feature{
10997 .name = "avx512bw",
11098 .description = "Enable AVX-512 Byte and Word Instructions",
111 .llvm_name = "avx512bw",
11299 .subfeatures = &[_]*const Feature {
113100 &feature_sse,
114101 },
......@@ -117,7 +104,6 @@ pub const feature_avx512bw = Feature{
117104pub const feature_branchfusion = Feature{
118105 .name = "branchfusion",
119106 .description = "CMP/TEST can be fused with conditional branches",
120 .llvm_name = "branchfusion",
121107 .subfeatures = &[_]*const Feature {
122108 },
123109};
......@@ -125,7 +111,6 @@ pub const feature_branchfusion = Feature{
125111pub const feature_avx512cd = Feature{
126112 .name = "avx512cd",
127113 .description = "Enable AVX-512 Conflict Detection Instructions",
128 .llvm_name = "avx512cd",
129114 .subfeatures = &[_]*const Feature {
130115 &feature_sse,
131116 },
......@@ -134,7 +119,6 @@ pub const feature_avx512cd = Feature{
134119pub const feature_cldemote = Feature{
135120 .name = "cldemote",
136121 .description = "Enable Cache Demote",
137 .llvm_name = "cldemote",
138122 .subfeatures = &[_]*const Feature {
139123 },
140124};
......@@ -142,7 +126,6 @@ pub const feature_cldemote = Feature{
142126pub const feature_clflushopt = Feature{
143127 .name = "clflushopt",
144128 .description = "Flush A Cache Line Optimized",
145 .llvm_name = "clflushopt",
146129 .subfeatures = &[_]*const Feature {
147130 },
148131};
......@@ -150,7 +133,6 @@ pub const feature_clflushopt = Feature{
150133pub const feature_clwb = Feature{
151134 .name = "clwb",
152135 .description = "Cache Line Write Back",
153 .llvm_name = "clwb",
154136 .subfeatures = &[_]*const Feature {
155137 },
156138};
......@@ -158,7 +140,6 @@ pub const feature_clwb = Feature{
158140pub const feature_clzero = Feature{
159141 .name = "clzero",
160142 .description = "Enable Cache Line Zero",
161 .llvm_name = "clzero",
162143 .subfeatures = &[_]*const Feature {
163144 },
164145};
......@@ -166,7 +147,6 @@ pub const feature_clzero = Feature{
166147pub const feature_cmov = Feature{
167148 .name = "cmov",
168149 .description = "Enable conditional move instructions",
169 .llvm_name = "cmov",
170150 .subfeatures = &[_]*const Feature {
171151 },
172152};
......@@ -174,7 +154,6 @@ pub const feature_cmov = Feature{
174154pub const feature_cx8 = Feature{
175155 .name = "cx8",
176156 .description = "Support CMPXCHG8B instructions",
177 .llvm_name = "cx8",
178157 .subfeatures = &[_]*const Feature {
179158 },
180159};
......@@ -182,7 +161,6 @@ pub const feature_cx8 = Feature{
182161pub const feature_cx16 = Feature{
183162 .name = "cx16",
184163 .description = "64-bit with cmpxchg16b",
185 .llvm_name = "cx16",
186164 .subfeatures = &[_]*const Feature {
187165 &feature_cx8,
188166 },
......@@ -191,7 +169,6 @@ pub const feature_cx16 = Feature{
191169pub const feature_avx512dq = Feature{
192170 .name = "avx512dq",
193171 .description = "Enable AVX-512 Doubleword and Quadword Instructions",
194 .llvm_name = "avx512dq",
195172 .subfeatures = &[_]*const Feature {
196173 &feature_sse,
197174 },
......@@ -200,7 +177,6 @@ pub const feature_avx512dq = Feature{
200177pub const feature_mpx = Feature{
201178 .name = "mpx",
202179 .description = "Deprecated. Support MPX instructions",
203 .llvm_name = "mpx",
204180 .subfeatures = &[_]*const Feature {
205181 },
206182};
......@@ -208,7 +184,6 @@ pub const feature_mpx = Feature{
208184pub const feature_enqcmd = Feature{
209185 .name = "enqcmd",
210186 .description = "Has ENQCMD instructions",
211 .llvm_name = "enqcmd",
212187 .subfeatures = &[_]*const Feature {
213188 },
214189};
......@@ -216,7 +191,6 @@ pub const feature_enqcmd = Feature{
216191pub const feature_avx512er = Feature{
217192 .name = "avx512er",
218193 .description = "Enable AVX-512 Exponential and Reciprocal Instructions",
219 .llvm_name = "avx512er",
220194 .subfeatures = &[_]*const Feature {
221195 &feature_sse,
222196 },
......@@ -225,7 +199,6 @@ pub const feature_avx512er = Feature{
225199pub const feature_ermsb = Feature{
226200 .name = "ermsb",
227201 .description = "REP MOVS/STOS are fast",
228 .llvm_name = "ermsb",
229202 .subfeatures = &[_]*const Feature {
230203 },
231204};
......@@ -233,7 +206,6 @@ pub const feature_ermsb = Feature{
233206pub const feature_f16c = Feature{
234207 .name = "f16c",
235208 .description = "Support 16-bit floating point conversion instructions",
236 .llvm_name = "f16c",
237209 .subfeatures = &[_]*const Feature {
238210 &feature_sse,
239211 },
......@@ -242,7 +214,6 @@ pub const feature_f16c = Feature{
242214pub const feature_fma = Feature{
243215 .name = "fma",
244216 .description = "Enable three-operand fused multiple-add",
245 .llvm_name = "fma",
246217 .subfeatures = &[_]*const Feature {
247218 &feature_sse,
248219 },
......@@ -251,7 +222,6 @@ pub const feature_fma = Feature{
251222pub const feature_fma4 = Feature{
252223 .name = "fma4",
253224 .description = "Enable four-operand fused multiple-add",
254 .llvm_name = "fma4",
255225 .subfeatures = &[_]*const Feature {
256226 &feature_sse,
257227 },
......@@ -260,7 +230,6 @@ pub const feature_fma4 = Feature{
260230pub const feature_fsgsbase = Feature{
261231 .name = "fsgsbase",
262232 .description = "Support FS/GS Base instructions",
263 .llvm_name = "fsgsbase",
264233 .subfeatures = &[_]*const Feature {
265234 },
266235};
......@@ -268,7 +237,6 @@ pub const feature_fsgsbase = Feature{
268237pub const feature_fxsr = Feature{
269238 .name = "fxsr",
270239 .description = "Support fxsave/fxrestore instructions",
271 .llvm_name = "fxsr",
272240 .subfeatures = &[_]*const Feature {
273241 },
274242};
......@@ -276,7 +244,6 @@ pub const feature_fxsr = Feature{
276244pub const feature_fast11bytenop = Feature{
277245 .name = "fast-11bytenop",
278246 .description = "Target can quickly decode up to 11 byte NOPs",
279 .llvm_name = "fast-11bytenop",
280247 .subfeatures = &[_]*const Feature {
281248 },
282249};
......@@ -284,7 +251,6 @@ pub const feature_fast11bytenop = Feature{
284251pub const feature_fast15bytenop = Feature{
285252 .name = "fast-15bytenop",
286253 .description = "Target can quickly decode up to 15 byte NOPs",
287 .llvm_name = "fast-15bytenop",
288254 .subfeatures = &[_]*const Feature {
289255 },
290256};
......@@ -292,7 +258,6 @@ pub const feature_fast15bytenop = Feature{
292258pub const feature_fastBextr = Feature{
293259 .name = "fast-bextr",
294260 .description = "Indicates that the BEXTR instruction is implemented as a single uop with good throughput",
295 .llvm_name = "fast-bextr",
296261 .subfeatures = &[_]*const Feature {
297262 },
298263};
......@@ -300,7 +265,6 @@ pub const feature_fastBextr = Feature{
300265pub const feature_fastHops = Feature{
301266 .name = "fast-hops",
302267 .description = "Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles",
303 .llvm_name = "fast-hops",
304268 .subfeatures = &[_]*const Feature {
305269 &feature_sse,
306270 },
......@@ -309,7 +273,6 @@ pub const feature_fastHops = Feature{
309273pub const feature_fastLzcnt = Feature{
310274 .name = "fast-lzcnt",
311275 .description = "LZCNT instructions are as fast as most simple integer ops",
312 .llvm_name = "fast-lzcnt",
313276 .subfeatures = &[_]*const Feature {
314277 },
315278};
......@@ -317,7 +280,6 @@ pub const feature_fastLzcnt = Feature{
317280pub const feature_fastPartialYmmOrZmmWrite = Feature{
318281 .name = "fast-partial-ymm-or-zmm-write",
319282 .description = "Partial writes to YMM/ZMM registers are fast",
320 .llvm_name = "fast-partial-ymm-or-zmm-write",
321283 .subfeatures = &[_]*const Feature {
322284 },
323285};
......@@ -325,7 +287,6 @@ pub const feature_fastPartialYmmOrZmmWrite = Feature{
325287pub const feature_fastShldRotate = Feature{
326288 .name = "fast-shld-rotate",
327289 .description = "SHLD can be used as a faster rotate",
328 .llvm_name = "fast-shld-rotate",
329290 .subfeatures = &[_]*const Feature {
330291 },
331292};
......@@ -333,7 +294,6 @@ pub const feature_fastShldRotate = Feature{
333294pub const feature_fastScalarFsqrt = Feature{
334295 .name = "fast-scalar-fsqrt",
335296 .description = "Scalar SQRT is fast (disable Newton-Raphson)",
336 .llvm_name = "fast-scalar-fsqrt",
337297 .subfeatures = &[_]*const Feature {
338298 },
339299};
......@@ -341,7 +301,6 @@ pub const feature_fastScalarFsqrt = Feature{
341301pub const feature_fastScalarShiftMasks = Feature{
342302 .name = "fast-scalar-shift-masks",
343303 .description = "Prefer a left/right scalar logical shift pair over a shift+and pair",
344 .llvm_name = "fast-scalar-shift-masks",
345304 .subfeatures = &[_]*const Feature {
346305 },
347306};
......@@ -349,7 +308,6 @@ pub const feature_fastScalarShiftMasks = Feature{
349308pub const feature_fastVariableShuffle = Feature{
350309 .name = "fast-variable-shuffle",
351310 .description = "Shuffles with variable masks are fast",
352 .llvm_name = "fast-variable-shuffle",
353311 .subfeatures = &[_]*const Feature {
354312 },
355313};
......@@ -357,7 +315,6 @@ pub const feature_fastVariableShuffle = Feature{
357315pub const feature_fastVectorFsqrt = Feature{
358316 .name = "fast-vector-fsqrt",
359317 .description = "Vector SQRT is fast (disable Newton-Raphson)",
360 .llvm_name = "fast-vector-fsqrt",
361318 .subfeatures = &[_]*const Feature {
362319 },
363320};
......@@ -365,7 +322,6 @@ pub const feature_fastVectorFsqrt = Feature{
365322pub const feature_fastVectorShiftMasks = Feature{
366323 .name = "fast-vector-shift-masks",
367324 .description = "Prefer a left/right vector logical shift pair over a shift+and pair",
368 .llvm_name = "fast-vector-shift-masks",
369325 .subfeatures = &[_]*const Feature {
370326 },
371327};
......@@ -373,7 +329,6 @@ pub const feature_fastVectorShiftMasks = Feature{
373329pub const feature_gfni = Feature{
374330 .name = "gfni",
375331 .description = "Enable Galois Field Arithmetic Instructions",
376 .llvm_name = "gfni",
377332 .subfeatures = &[_]*const Feature {
378333 &feature_sse,
379334 },
......@@ -382,7 +337,6 @@ pub const feature_gfni = Feature{
382337pub const feature_fastGather = Feature{
383338 .name = "fast-gather",
384339 .description = "Indicates if gather is reasonably fast",
385 .llvm_name = "fast-gather",
386340 .subfeatures = &[_]*const Feature {
387341 },
388342};
......@@ -390,7 +344,6 @@ pub const feature_fastGather = Feature{
390344pub const feature_avx512ifma = Feature{
391345 .name = "avx512ifma",
392346 .description = "Enable AVX-512 Integer Fused Multiple-Add",
393 .llvm_name = "avx512ifma",
394347 .subfeatures = &[_]*const Feature {
395348 &feature_sse,
396349 },
......@@ -399,7 +352,6 @@ pub const feature_avx512ifma = Feature{
399352pub const feature_invpcid = Feature{
400353 .name = "invpcid",
401354 .description = "Invalidate Process-Context Identifier",
402 .llvm_name = "invpcid",
403355 .subfeatures = &[_]*const Feature {
404356 },
405357};
......@@ -407,7 +359,6 @@ pub const feature_invpcid = Feature{
407359pub const feature_sahf = Feature{
408360 .name = "sahf",
409361 .description = "Support LAHF and SAHF instructions",
410 .llvm_name = "sahf",
411362 .subfeatures = &[_]*const Feature {
412363 },
413364};
......@@ -415,7 +366,6 @@ pub const feature_sahf = Feature{
415366pub const feature_leaSp = Feature{
416367 .name = "lea-sp",
417368 .description = "Use LEA for adjusting the stack pointer",
418 .llvm_name = "lea-sp",
419369 .subfeatures = &[_]*const Feature {
420370 },
421371};
......@@ -423,7 +373,6 @@ pub const feature_leaSp = Feature{
423373pub const feature_leaUsesAg = Feature{
424374 .name = "lea-uses-ag",
425375 .description = "LEA instruction needs inputs at AG stage",
426 .llvm_name = "lea-uses-ag",
427376 .subfeatures = &[_]*const Feature {
428377 },
429378};
......@@ -431,7 +380,6 @@ pub const feature_leaUsesAg = Feature{
431380pub const feature_lwp = Feature{
432381 .name = "lwp",
433382 .description = "Enable LWP instructions",
434 .llvm_name = "lwp",
435383 .subfeatures = &[_]*const Feature {
436384 },
437385};
......@@ -439,7 +387,6 @@ pub const feature_lwp = Feature{
439387pub const feature_lzcnt = Feature{
440388 .name = "lzcnt",
441389 .description = "Support LZCNT instruction",
442 .llvm_name = "lzcnt",
443390 .subfeatures = &[_]*const Feature {
444391 },
445392};
......@@ -447,7 +394,6 @@ pub const feature_lzcnt = Feature{
447394pub const feature_falseDepsLzcntTzcnt = Feature{
448395 .name = "false-deps-lzcnt-tzcnt",
449396 .description = "LZCNT/TZCNT have a false dependency on dest register",
450 .llvm_name = "false-deps-lzcnt-tzcnt",
451397 .subfeatures = &[_]*const Feature {
452398 },
453399};
......@@ -455,7 +401,6 @@ pub const feature_falseDepsLzcntTzcnt = Feature{
455401pub const feature_mmx = Feature{
456402 .name = "mmx",
457403 .description = "Enable MMX instructions",
458 .llvm_name = "mmx",
459404 .subfeatures = &[_]*const Feature {
460405 },
461406};
......@@ -463,7 +408,6 @@ pub const feature_mmx = Feature{
463408pub const feature_movbe = Feature{
464409 .name = "movbe",
465410 .description = "Support MOVBE instruction",
466 .llvm_name = "movbe",
467411 .subfeatures = &[_]*const Feature {
468412 },
469413};
......@@ -471,7 +415,6 @@ pub const feature_movbe = Feature{
471415pub const feature_movdir64b = Feature{
472416 .name = "movdir64b",
473417 .description = "Support movdir64b instruction",
474 .llvm_name = "movdir64b",
475418 .subfeatures = &[_]*const Feature {
476419 },
477420};
......@@ -479,7 +422,6 @@ pub const feature_movdir64b = Feature{
479422pub const feature_movdiri = Feature{
480423 .name = "movdiri",
481424 .description = "Support movdiri instruction",
482 .llvm_name = "movdiri",
483425 .subfeatures = &[_]*const Feature {
484426 },
485427};
......@@ -487,7 +429,6 @@ pub const feature_movdiri = Feature{
487429pub const feature_mwaitx = Feature{
488430 .name = "mwaitx",
489431 .description = "Enable MONITORX/MWAITX timer functionality",
490 .llvm_name = "mwaitx",
491432 .subfeatures = &[_]*const Feature {
492433 },
493434};
......@@ -495,7 +436,6 @@ pub const feature_mwaitx = Feature{
495436pub const feature_macrofusion = Feature{
496437 .name = "macrofusion",
497438 .description = "Various instructions can be fused with conditional branches",
498 .llvm_name = "macrofusion",
499439 .subfeatures = &[_]*const Feature {
500440 },
501441};
......@@ -503,7 +443,6 @@ pub const feature_macrofusion = Feature{
503443pub const feature_mergeToThreewayBranch = Feature{
504444 .name = "merge-to-threeway-branch",
505445 .description = "Merge branches to a three-way conditional branch",
506 .llvm_name = "merge-to-threeway-branch",
507446 .subfeatures = &[_]*const Feature {
508447 },
509448};
......@@ -511,7 +450,6 @@ pub const feature_mergeToThreewayBranch = Feature{
511450pub const feature_nopl = Feature{
512451 .name = "nopl",
513452 .description = "Enable NOPL instruction",
514 .llvm_name = "nopl",
515453 .subfeatures = &[_]*const Feature {
516454 },
517455};
......@@ -519,7 +457,6 @@ pub const feature_nopl = Feature{
519457pub const feature_pclmul = Feature{
520458 .name = "pclmul",
521459 .description = "Enable packed carry-less multiplication instructions",
522 .llvm_name = "pclmul",
523460 .subfeatures = &[_]*const Feature {
524461 &feature_sse,
525462 },
......@@ -528,7 +465,6 @@ pub const feature_pclmul = Feature{
528465pub const feature_pconfig = Feature{
529466 .name = "pconfig",
530467 .description = "platform configuration instruction",
531 .llvm_name = "pconfig",
532468 .subfeatures = &[_]*const Feature {
533469 },
534470};
......@@ -536,7 +472,6 @@ pub const feature_pconfig = Feature{
536472pub const feature_avx512pf = Feature{
537473 .name = "avx512pf",
538474 .description = "Enable AVX-512 PreFetch Instructions",
539 .llvm_name = "avx512pf",
540475 .subfeatures = &[_]*const Feature {
541476 &feature_sse,
542477 },
......@@ -545,7 +480,6 @@ pub const feature_avx512pf = Feature{
545480pub const feature_pku = Feature{
546481 .name = "pku",
547482 .description = "Enable protection keys",
548 .llvm_name = "pku",
549483 .subfeatures = &[_]*const Feature {
550484 },
551485};
......@@ -553,7 +487,6 @@ pub const feature_pku = Feature{
553487pub const feature_popcnt = Feature{
554488 .name = "popcnt",
555489 .description = "Support POPCNT instruction",
556 .llvm_name = "popcnt",
557490 .subfeatures = &[_]*const Feature {
558491 },
559492};
......@@ -561,7 +494,6 @@ pub const feature_popcnt = Feature{
561494pub const feature_falseDepsPopcnt = Feature{
562495 .name = "false-deps-popcnt",
563496 .description = "POPCNT has a false dependency on dest register",
564 .llvm_name = "false-deps-popcnt",
565497 .subfeatures = &[_]*const Feature {
566498 },
567499};
......@@ -569,7 +501,6 @@ pub const feature_falseDepsPopcnt = Feature{
569501pub const feature_prefetchwt1 = Feature{
570502 .name = "prefetchwt1",
571503 .description = "Prefetch with Intent to Write and T1 Hint",
572 .llvm_name = "prefetchwt1",
573504 .subfeatures = &[_]*const Feature {
574505 },
575506};
......@@ -577,7 +508,6 @@ pub const feature_prefetchwt1 = Feature{
577508pub const feature_prfchw = Feature{
578509 .name = "prfchw",
579510 .description = "Support PRFCHW instructions",
580 .llvm_name = "prfchw",
581511 .subfeatures = &[_]*const Feature {
582512 },
583513};
......@@ -585,7 +515,6 @@ pub const feature_prfchw = Feature{
585515pub const feature_ptwrite = Feature{
586516 .name = "ptwrite",
587517 .description = "Support ptwrite instruction",
588 .llvm_name = "ptwrite",
589518 .subfeatures = &[_]*const Feature {
590519 },
591520};
......@@ -593,7 +522,6 @@ pub const feature_ptwrite = Feature{
593522pub const feature_padShortFunctions = Feature{
594523 .name = "pad-short-functions",
595524 .description = "Pad short functions",
596 .llvm_name = "pad-short-functions",
597525 .subfeatures = &[_]*const Feature {
598526 },
599527};
......@@ -601,7 +529,6 @@ pub const feature_padShortFunctions = Feature{
601529pub const feature_prefer128Bit = Feature{
602530 .name = "prefer-128-bit",
603531 .description = "Prefer 128-bit AVX instructions",
604 .llvm_name = "prefer-128-bit",
605532 .subfeatures = &[_]*const Feature {
606533 },
607534};
......@@ -609,7 +536,6 @@ pub const feature_prefer128Bit = Feature{
609536pub const feature_prefer256Bit = Feature{
610537 .name = "prefer-256-bit",
611538 .description = "Prefer 256-bit AVX instructions",
612 .llvm_name = "prefer-256-bit",
613539 .subfeatures = &[_]*const Feature {
614540 },
615541};
......@@ -617,7 +543,6 @@ pub const feature_prefer256Bit = Feature{
617543pub const feature_rdpid = Feature{
618544 .name = "rdpid",
619545 .description = "Support RDPID instructions",
620 .llvm_name = "rdpid",
621546 .subfeatures = &[_]*const Feature {
622547 },
623548};
......@@ -625,7 +550,6 @@ pub const feature_rdpid = Feature{
625550pub const feature_rdrnd = Feature{
626551 .name = "rdrnd",
627552 .description = "Support RDRAND instruction",
628 .llvm_name = "rdrnd",
629553 .subfeatures = &[_]*const Feature {
630554 },
631555};
......@@ -633,7 +557,6 @@ pub const feature_rdrnd = Feature{
633557pub const feature_rdseed = Feature{
634558 .name = "rdseed",
635559 .description = "Support RDSEED instruction",
636 .llvm_name = "rdseed",
637560 .subfeatures = &[_]*const Feature {
638561 },
639562};
......@@ -641,7 +564,6 @@ pub const feature_rdseed = Feature{
641564pub const feature_rtm = Feature{
642565 .name = "rtm",
643566 .description = "Support RTM instructions",
644 .llvm_name = "rtm",
645567 .subfeatures = &[_]*const Feature {
646568 },
647569};
......@@ -649,17 +571,15 @@ pub const feature_rtm = Feature{
649571pub const feature_retpoline = Feature{
650572 .name = "retpoline",
651573 .description = "Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct",
652 .llvm_name = "retpoline",
653574 .subfeatures = &[_]*const Feature {
654 &feature_retpolineIndirectCalls,
655575 &feature_retpolineIndirectBranches,
576 &feature_retpolineIndirectCalls,
656577 },
657578};
658579
659580pub const feature_retpolineExternalThunk = Feature{
660581 .name = "retpoline-external-thunk",
661582 .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",
662 .llvm_name = "retpoline-external-thunk",
663583 .subfeatures = &[_]*const Feature {
664584 &feature_retpolineIndirectCalls,
665585 },
......@@ -668,7 +588,6 @@ pub const feature_retpolineExternalThunk = Feature{
668588pub const feature_retpolineIndirectBranches = Feature{
669589 .name = "retpoline-indirect-branches",
670590 .description = "Remove speculation of indirect branches from the generated code",
671 .llvm_name = "retpoline-indirect-branches",
672591 .subfeatures = &[_]*const Feature {
673592 },
674593};
......@@ -676,7 +595,6 @@ pub const feature_retpolineIndirectBranches = Feature{
676595pub const feature_retpolineIndirectCalls = Feature{
677596 .name = "retpoline-indirect-calls",
678597 .description = "Remove speculation of indirect calls from the generated code",
679 .llvm_name = "retpoline-indirect-calls",
680598 .subfeatures = &[_]*const Feature {
681599 },
682600};
......@@ -684,7 +602,6 @@ pub const feature_retpolineIndirectCalls = Feature{
684602pub const feature_sgx = Feature{
685603 .name = "sgx",
686604 .description = "Enable Software Guard Extensions",
687 .llvm_name = "sgx",
688605 .subfeatures = &[_]*const Feature {
689606 },
690607};
......@@ -692,7 +609,6 @@ pub const feature_sgx = Feature{
692609pub const feature_sha = Feature{
693610 .name = "sha",
694611 .description = "Enable SHA instructions",
695 .llvm_name = "sha",
696612 .subfeatures = &[_]*const Feature {
697613 &feature_sse,
698614 },
......@@ -701,7 +617,6 @@ pub const feature_sha = Feature{
701617pub const feature_shstk = Feature{
702618 .name = "shstk",
703619 .description = "Support CET Shadow-Stack instructions",
704 .llvm_name = "shstk",
705620 .subfeatures = &[_]*const Feature {
706621 },
707622};
......@@ -709,7 +624,6 @@ pub const feature_shstk = Feature{
709624pub const feature_sse = Feature{
710625 .name = "sse",
711626 .description = "Enable SSE instructions",
712 .llvm_name = "sse",
713627 .subfeatures = &[_]*const Feature {
714628 },
715629};
......@@ -717,7 +631,6 @@ pub const feature_sse = Feature{
717631pub const feature_sse2 = Feature{
718632 .name = "sse2",
719633 .description = "Enable SSE2 instructions",
720 .llvm_name = "sse2",
721634 .subfeatures = &[_]*const Feature {
722635 &feature_sse,
723636 },
......@@ -726,7 +639,6 @@ pub const feature_sse2 = Feature{
726639pub const feature_sse3 = Feature{
727640 .name = "sse3",
728641 .description = "Enable SSE3 instructions",
729 .llvm_name = "sse3",
730642 .subfeatures = &[_]*const Feature {
731643 &feature_sse,
732644 },
......@@ -735,7 +647,6 @@ pub const feature_sse3 = Feature{
735647pub const feature_sse4a = Feature{
736648 .name = "sse4a",
737649 .description = "Support SSE 4a instructions",
738 .llvm_name = "sse4a",
739650 .subfeatures = &[_]*const Feature {
740651 &feature_sse,
741652 },
......@@ -744,7 +655,6 @@ pub const feature_sse4a = Feature{
744655pub const feature_sse41 = Feature{
745656 .name = "sse4.1",
746657 .description = "Enable SSE 4.1 instructions",
747 .llvm_name = "sse4.1",
748658 .subfeatures = &[_]*const Feature {
749659 &feature_sse,
750660 },
......@@ -753,7 +663,6 @@ pub const feature_sse41 = Feature{
753663pub const feature_sse42 = Feature{
754664 .name = "sse4.2",
755665 .description = "Enable SSE 4.2 instructions",
756 .llvm_name = "sse4.2",
757666 .subfeatures = &[_]*const Feature {
758667 &feature_sse,
759668 },
......@@ -762,7 +671,6 @@ pub const feature_sse42 = Feature{
762671pub const feature_sseUnalignedMem = Feature{
763672 .name = "sse-unaligned-mem",
764673 .description = "Allow unaligned memory operands with SSE instructions",
765 .llvm_name = "sse-unaligned-mem",
766674 .subfeatures = &[_]*const Feature {
767675 },
768676};
......@@ -770,7 +678,6 @@ pub const feature_sseUnalignedMem = Feature{
770678pub const feature_ssse3 = Feature{
771679 .name = "ssse3",
772680 .description = "Enable SSSE3 instructions",
773 .llvm_name = "ssse3",
774681 .subfeatures = &[_]*const Feature {
775682 &feature_sse,
776683 },
......@@ -779,7 +686,6 @@ pub const feature_ssse3 = Feature{
779686pub const feature_slow3opsLea = Feature{
780687 .name = "slow-3ops-lea",
781688 .description = "LEA instruction with 3 ops or certain registers is slow",
782 .llvm_name = "slow-3ops-lea",
783689 .subfeatures = &[_]*const Feature {
784690 },
785691};
......@@ -787,7 +693,6 @@ pub const feature_slow3opsLea = Feature{
787693pub const feature_idivlToDivb = Feature{
788694 .name = "idivl-to-divb",
789695 .description = "Use 8-bit divide for positive values less than 256",
790 .llvm_name = "idivl-to-divb",
791696 .subfeatures = &[_]*const Feature {
792697 },
793698};
......@@ -795,7 +700,6 @@ pub const feature_idivlToDivb = Feature{
795700pub const feature_idivqToDivl = Feature{
796701 .name = "idivq-to-divl",
797702 .description = "Use 32-bit divide for positive values less than 2^32",
798 .llvm_name = "idivq-to-divl",
799703 .subfeatures = &[_]*const Feature {
800704 },
801705};
......@@ -803,7 +707,6 @@ pub const feature_idivqToDivl = Feature{
803707pub const feature_slowIncdec = Feature{
804708 .name = "slow-incdec",
805709 .description = "INC and DEC instructions are slower than ADD and SUB",
806 .llvm_name = "slow-incdec",
807710 .subfeatures = &[_]*const Feature {
808711 },
809712};
......@@ -811,7 +714,6 @@ pub const feature_slowIncdec = Feature{
811714pub const feature_slowLea = Feature{
812715 .name = "slow-lea",
813716 .description = "LEA instruction with certain arguments is slow",
814 .llvm_name = "slow-lea",
815717 .subfeatures = &[_]*const Feature {
816718 },
817719};
......@@ -819,7 +721,6 @@ pub const feature_slowLea = Feature{
819721pub const feature_slowPmaddwd = Feature{
820722 .name = "slow-pmaddwd",
821723 .description = "PMADDWD is slower than PMULLD",
822 .llvm_name = "slow-pmaddwd",
823724 .subfeatures = &[_]*const Feature {
824725 },
825726};
......@@ -827,7 +728,6 @@ pub const feature_slowPmaddwd = Feature{
827728pub const feature_slowPmulld = Feature{
828729 .name = "slow-pmulld",
829730 .description = "PMULLD instruction is slow",
830 .llvm_name = "slow-pmulld",
831731 .subfeatures = &[_]*const Feature {
832732 },
833733};
......@@ -835,7 +735,6 @@ pub const feature_slowPmulld = Feature{
835735pub const feature_slowShld = Feature{
836736 .name = "slow-shld",
837737 .description = "SHLD instruction is slow",
838 .llvm_name = "slow-shld",
839738 .subfeatures = &[_]*const Feature {
840739 },
841740};
......@@ -843,7 +742,6 @@ pub const feature_slowShld = Feature{
843742pub const feature_slowTwoMemOps = Feature{
844743 .name = "slow-two-mem-ops",
845744 .description = "Two memory operand instructions are slow",
846 .llvm_name = "slow-two-mem-ops",
847745 .subfeatures = &[_]*const Feature {
848746 },
849747};
......@@ -851,7 +749,6 @@ pub const feature_slowTwoMemOps = Feature{
851749pub const feature_slowUnalignedMem16 = Feature{
852750 .name = "slow-unaligned-mem-16",
853751 .description = "Slow unaligned 16-byte memory access",
854 .llvm_name = "slow-unaligned-mem-16",
855752 .subfeatures = &[_]*const Feature {
856753 },
857754};
......@@ -859,7 +756,6 @@ pub const feature_slowUnalignedMem16 = Feature{
859756pub const feature_slowUnalignedMem32 = Feature{
860757 .name = "slow-unaligned-mem-32",
861758 .description = "Slow unaligned 32-byte memory access",
862 .llvm_name = "slow-unaligned-mem-32",
863759 .subfeatures = &[_]*const Feature {
864760 },
865761};
......@@ -867,7 +763,6 @@ pub const feature_slowUnalignedMem32 = Feature{
867763pub const feature_softFloat = Feature{
868764 .name = "soft-float",
869765 .description = "Use software floating point features",
870 .llvm_name = "soft-float",
871766 .subfeatures = &[_]*const Feature {
872767 },
873768};
......@@ -875,7 +770,6 @@ pub const feature_softFloat = Feature{
875770pub const feature_tbm = Feature{
876771 .name = "tbm",
877772 .description = "Enable TBM instructions",
878 .llvm_name = "tbm",
879773 .subfeatures = &[_]*const Feature {
880774 },
881775};
......@@ -883,7 +777,6 @@ pub const feature_tbm = Feature{
883777pub const feature_useAa = Feature{
884778 .name = "use-aa",
885779 .description = "Use alias analysis during codegen",
886 .llvm_name = "use-aa",
887780 .subfeatures = &[_]*const Feature {
888781 },
889782};
......@@ -891,7 +784,6 @@ pub const feature_useAa = Feature{
891784pub const feature_vaes = Feature{
892785 .name = "vaes",
893786 .description = "Promote selected AES instructions to AVX512/AVX registers",
894 .llvm_name = "vaes",
895787 .subfeatures = &[_]*const Feature {
896788 &feature_sse,
897789 },
......@@ -900,7 +792,6 @@ pub const feature_vaes = Feature{
900792pub const feature_avx512vbmi = Feature{
901793 .name = "avx512vbmi",
902794 .description = "Enable AVX-512 Vector Byte Manipulation Instructions",
903 .llvm_name = "avx512vbmi",
904795 .subfeatures = &[_]*const Feature {
905796 &feature_sse,
906797 },
......@@ -909,7 +800,6 @@ pub const feature_avx512vbmi = Feature{
909800pub const feature_avx512vbmi2 = Feature{
910801 .name = "avx512vbmi2",
911802 .description = "Enable AVX-512 further Vector Byte Manipulation Instructions",
912 .llvm_name = "avx512vbmi2",
913803 .subfeatures = &[_]*const Feature {
914804 &feature_sse,
915805 },
......@@ -918,7 +808,6 @@ pub const feature_avx512vbmi2 = Feature{
918808pub const feature_avx512vl = Feature{
919809 .name = "avx512vl",
920810 .description = "Enable AVX-512 Vector Length eXtensions",
921 .llvm_name = "avx512vl",
922811 .subfeatures = &[_]*const Feature {
923812 &feature_sse,
924813 },
......@@ -927,7 +816,6 @@ pub const feature_avx512vl = Feature{
927816pub const feature_avx512vnni = Feature{
928817 .name = "avx512vnni",
929818 .description = "Enable AVX-512 Vector Neural Network Instructions",
930 .llvm_name = "avx512vnni",
931819 .subfeatures = &[_]*const Feature {
932820 &feature_sse,
933821 },
......@@ -936,7 +824,6 @@ pub const feature_avx512vnni = Feature{
936824pub const feature_avx512vp2intersect = Feature{
937825 .name = "avx512vp2intersect",
938826 .description = "Enable AVX-512 vp2intersect",
939 .llvm_name = "avx512vp2intersect",
940827 .subfeatures = &[_]*const Feature {
941828 &feature_sse,
942829 },
......@@ -945,7 +832,6 @@ pub const feature_avx512vp2intersect = Feature{
945832pub const feature_vpclmulqdq = Feature{
946833 .name = "vpclmulqdq",
947834 .description = "Enable vpclmulqdq instructions",
948 .llvm_name = "vpclmulqdq",
949835 .subfeatures = &[_]*const Feature {
950836 &feature_sse,
951837 },
......@@ -954,7 +840,6 @@ pub const feature_vpclmulqdq = Feature{
954840pub const feature_avx512vpopcntdq = Feature{
955841 .name = "avx512vpopcntdq",
956842 .description = "Enable AVX-512 Population Count Instructions",
957 .llvm_name = "avx512vpopcntdq",
958843 .subfeatures = &[_]*const Feature {
959844 &feature_sse,
960845 },
......@@ -963,7 +848,6 @@ pub const feature_avx512vpopcntdq = Feature{
963848pub const feature_waitpkg = Feature{
964849 .name = "waitpkg",
965850 .description = "Wait and pause enhancements",
966 .llvm_name = "waitpkg",
967851 .subfeatures = &[_]*const Feature {
968852 },
969853};
......@@ -971,7 +855,6 @@ pub const feature_waitpkg = Feature{
971855pub const feature_wbnoinvd = Feature{
972856 .name = "wbnoinvd",
973857 .description = "Write Back No Invalidate",
974 .llvm_name = "wbnoinvd",
975858 .subfeatures = &[_]*const Feature {
976859 },
977860};
......@@ -979,7 +862,6 @@ pub const feature_wbnoinvd = Feature{
979862pub const feature_x87 = Feature{
980863 .name = "x87",
981864 .description = "Enable X87 float instructions",
982 .llvm_name = "x87",
983865 .subfeatures = &[_]*const Feature {
984866 },
985867};
......@@ -987,7 +869,6 @@ pub const feature_x87 = Feature{
987869pub const feature_xop = Feature{
988870 .name = "xop",
989871 .description = "Enable XOP instructions",
990 .llvm_name = "xop",
991872 .subfeatures = &[_]*const Feature {
992873 &feature_sse,
993874 },
......@@ -996,7 +877,6 @@ pub const feature_xop = Feature{
996877pub const feature_xsave = Feature{
997878 .name = "xsave",
998879 .description = "Support xsave instructions",
999 .llvm_name = "xsave",
1000880 .subfeatures = &[_]*const Feature {
1001881 },
1002882};
......@@ -1004,7 +884,6 @@ pub const feature_xsave = Feature{
1004884pub const feature_xsavec = Feature{
1005885 .name = "xsavec",
1006886 .description = "Support xsavec instructions",
1007 .llvm_name = "xsavec",
1008887 .subfeatures = &[_]*const Feature {
1009888 },
1010889};
......@@ -1012,7 +891,6 @@ pub const feature_xsavec = Feature{
1012891pub const feature_xsaveopt = Feature{
1013892 .name = "xsaveopt",
1014893 .description = "Support xsaveopt instructions",
1015 .llvm_name = "xsaveopt",
1016894 .subfeatures = &[_]*const Feature {
1017895 },
1018896};
......@@ -1020,7 +898,6 @@ pub const feature_xsaveopt = Feature{
1020898pub const feature_xsaves = Feature{
1021899 .name = "xsaves",
1022900 .description = "Support xsaves instructions",
1023 .llvm_name = "xsaves",
1024901 .subfeatures = &[_]*const Feature {
1025902 },
1026903};
......@@ -1028,7 +905,6 @@ pub const feature_xsaves = Feature{
1028905pub const feature_bitMode16 = Feature{
1029906 .name = "16bit-mode",
1030907 .description = "16-bit mode (i8086)",
1031 .llvm_name = "16bit-mode",
1032908 .subfeatures = &[_]*const Feature {
1033909 },
1034910};
......@@ -1036,7 +912,6 @@ pub const feature_bitMode16 = Feature{
1036912pub const feature_bitMode32 = Feature{
1037913 .name = "32bit-mode",
1038914 .description = "32-bit mode (80386)",
1039 .llvm_name = "32bit-mode",
1040915 .subfeatures = &[_]*const Feature {
1041916 },
1042917};
......@@ -1044,7 +919,6 @@ pub const feature_bitMode32 = Feature{
1044919pub const feature_bitMode64 = Feature{
1045920 .name = "64bit-mode",
1046921 .description = "64-bit mode (x86_64)",
1047 .llvm_name = "64bit-mode",
1048922 .subfeatures = &[_]*const Feature {
1049923 },
1050924};